home *** CD-ROM | disk | FTP | other *** search
/ Power CD-ROM!! 7 / POWERCD7.ISO / prgmming / inter43 / interrup.lst < prev    next >
File List  |  1994-11-25  |  4MB  |  97,163 lines

  1. Interrupt List        Release 43            Last change 11/6/94
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------!---FILELIST-------------------------
  4. Please redistribute the following files unmodified as a group, in a trio of
  5. archives named INTER43A through INTER43C (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 13      \
  9.     INTERRUP.B    INT 14 through INT 15/7F   \
  10.     INTERRUP.C    INT 15/80 through INT 1F    \  
  11.     INTERRUP.D    INT 20 through INT 21/44     \     total 1620 pages at
  12.     INTERRUP.E    INT 21/45 through INT 21/BF   \     60 lines per page,
  13.     INTERRUP.F    INT 21/C0 through INT 2D       > 1726 with INTPRINT -p
  14.     INTERRUP.G    INT 2E through INT 2F/7F      /     (6565 entries)
  15.     INTERRUP.H    INT 2F/80 through INT 2F/FF  /     (2431 tables)
  16.     INTERRUP.I    INT 30 through INT 60        /
  17.     INTERRUP.J    INT 61 through INT 67       /
  18.     INTERRUP.K    INT 68 through INT 7E      /
  19.     INTERRUP.L    INT 7F through INT FF     /
  20.     INTERRUP.PRI    a brief introduction to interrupts
  21.     INTPRINT.COM    a simple formatter that also generates a list summary
  22.     INTPRINT.DOC    instructions for INTPRINT
  23.     OVERVIEW.LST    brief listing of major uses of each interrupt
  24.     86BUGS.LST    a listing of CPU bugs and undocumented features
  25.     CMOS.LST    a description of the CMOS RAM data bytes
  26.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  27.     MEMORY.LST    format of the BIOS data area
  28.     OPCODES.LST    a listing of recent and undocumented CPU instructions
  29.     PORTS.LST    a listing of I/O ports
  30.     CATEGORY.KEY    descriptions of divider-line category letters
  31.     COMBINE.BAT    combine the pieces of the list into a single file
  32. The following files should be distributed in an archive called INTER43D:
  33.     INT.*        invoke interrupts from commandline
  34.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  35.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  36.     INT2QH.*    program to convert list into QuickHelp database
  37.     INT2WHLP.*    convert list into Windows Help database
  38.     INTERVUE.EXE    indexed interrupt list browser
  39.     INTHELP.*    convert list into TurboPower GUIDE database
  40.     INTLIST.E    Epsilon extension for handling list
  41.     INTLIST.ICO    Windows icon for INTERVUE
  42.     INTPRINT.C    source code for INTPRINT
  43.     RB2NG.*        convert list into Norton Guides database
  44. --------!---CONTACT_INFO---------------------
  45. If you notice any mistakes or omissions, please let me know!  It is only with
  46. YOUR help that the list can continue to grow at the current rate.  Please send
  47. all changes to me rather than distributing a modified version of the list.
  48.  
  49. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  50. that they have already been addressed.
  51.  
  52.      Ralf Brown
  53.  
  54. Internet: ralf@telerama.lm.com
  55. UUCP: {uunet,harvard}!telerama.lm.com!ralf
  56. FIDO: Ralf Brown 1:129/26.1
  57.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  58.     unless you address it to me)
  59. CIS:  >INTERNET:ralf@telerama.lm.com
  60.  
  61. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  62. because of bad return paths.  If you don't get a response from me within a
  63. reasonable period of time, send it again with a better return path (starting at
  64. harvard or ucbvax for UUCP, from the Internet for others).
  65. --------!------------------------------------
  66. See INTERRUP.1ST for the key to system abbreviations and a list of the
  67. trademarks mentioned here.
  68. --------!---DISCLAIMER-----------------------
  69. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  70. contained in this list to the best of my ability, but I cannot be held
  71. responsible for any problems caused by use or misuse of the information,
  72. especially for those functions not officially documented.  If it is marked
  73. "internal" or undocumented, you should check it carefully to make sure it
  74. works the same way in your version of the software (and please let me know
  75. whether or not it works the same way).    Information marked with "???" is
  76. known to be incomplete or guesswork.
  77. --------!---FLAGS----------------------------
  78. The use of -> instead of = signifies that the indicated register or register
  79. pair contains a pointer to the specified item, rather than the item itself.
  80. One or more letters may follow the interrupt number; they have the following
  81. meanings:  U - undocumented function, u - partially documented function,
  82. P - available only in protected mode, R - available only in real or V86 mode,
  83. C - callout or callback (usually hooked rather than called),
  84. O - obsolete (no longer present in current versions)
  85. --------!---CATEGORIES-----------------------
  86. The ninth column of the divider line preceding an entry usually contains a
  87. classification code (the entry has not been classified if that character is
  88. a dash).  The codes currently in use are:
  89.     A - applications, a - access software (screen readers, etc),
  90.     B - BIOS, b - vendor-specific BIOS extensions,
  91.     C - CPU-generated, c - caches/spoolers,
  92.     D - DOS kernel, d - disk I/O enhancements,
  93.     E - DOS extenders, e - electronic mail, F - FAX,
  94.     f - file manipulation, G - debuggers/debugging tools, g - games,
  95.     H - hardware, h - vendor-specific hardware,
  96.     I - IBM workstation/terminal emulators, i - system info/monitoring
  97.     J - Japanese, j - joke programs,
  98.     K - keyboard enhancers, k - file/disk compression,
  99.     l - shells/command interpreters,
  100.     M - mouse/pointing device, m - memory management,
  101.     N - network, n - non-traditional input devices,
  102.     O - other operating systems,
  103.     P - printer enhancements, p - power management,
  104.     Q - DESQview/TopView and Quarterdeck programs,
  105.     R - remote control/file access, r - runtime support,
  106.     S - serial I/O, s - sound/speech,
  107.     T - DOS-based task switchers/multitaskers, t - TSR libraries
  108.     U - resident utilities, u - emulators,
  109.     V - video, v - virus/antivirus,
  110.     W - MS Windows, X - expansion bus BIOSes,
  111.     y - security, * - reserved (and not otherwise classified)
  112. --------C-00---------------------------------
  113. INT 00 - CPU-generated - DIVIDE ERROR
  114. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  115.       quotient overflows the result register; DX and AX will be unchanged.
  116. Notes:    on an 8086/8088, the return address points to the following instruction
  117.     on an 80286+, the return address points to the divide instruction
  118.     an 8086/8088 will generate this interrupt if the result of a division
  119.       is 80h (byte) or 8000h (word)
  120. SeeAlso: INT 04
  121. --------G-00---------------------------------
  122. INT 00 - Zenith - ROM DEBUGGER
  123. Desc:    invokes the ROM Debugger when at the BIOS level; equivalent to
  124.       pressing Ctrl-Alt-Ins on booting.
  125. Note:    since DOS revectors INT 00, it is necessary to restore this vector to
  126.       its original ROM BIOS value in order to invoke the debugger once DOS
  127.       loads
  128. SeeAlso: INT 03"Columbia"
  129. --------C-01---------------------------------
  130. INT 01 - CPU-generated - SINGLE STEP
  131. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  132.       cleared on invoking the single-step interrupt handler
  133. Notes:    interrupts are prioritized such that external interrupts are invoked
  134.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  135.       first instruction of the handler executes
  136.     used by debuggers for single-instruction execution tracing, such as
  137.       MS-DOS DEBUG's T command
  138. SeeAlso: INT 03
  139. --------C-01---------------------------------
  140. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  141. Desc:    generated by the CPU on various occurrences which may be of interest
  142.       to a debugger program
  143. Note:    events which may trigger the interrupt:
  144.       Instruction address breakpoint fault - will return to execute inst
  145.       Data address breakpoint trap - will return to following instruction
  146.       General detect fault, debug registers in use
  147.       Task-switch breakpoint trap
  148.       undocumented 386/486 opcode F1h - will return to following instruc
  149. SeeAlso: INT 03
  150. --------H-02---------------------------------
  151. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  152. Desc:    generated by the CPU when the input to the NMI pin is asserted
  153. Notes:    return address points to start of interrupted instruction on 80286+
  154.     on the 80286+, further NMIs are disabled until the next IRET
  155.       instruction, but one additional NMI is remembered by the hardware
  156.       and will be serviced after the IRET instruction reenables NMIs
  157.     maskable interrupts may interrupt the NMI handler if interrupts are
  158.       enabled
  159.     although the Intel documentation states that this interrupt is
  160.       typically used for power-failure procedures, it has many other uses
  161.       on IBM-compatible machines:
  162.         Memory parity error: all except Jr, CONV, and some machines
  163.                   without memory parity
  164.         Breakout switch on hardware debuggers
  165.         Coprocessor interrupt: all except Jr and CONV
  166.         Keyboard interrupt: Jr, CONV
  167.         I/O channel check: CONV, PS50+
  168.         Disk-controller power-on request: CONV
  169.         System suspend: CONV
  170.         Real-time clock: CONV
  171.         System watch-dog timer, time-out interrupt: PS50+
  172.         DMA timer time-out interrupt: PS50+
  173.         Low battery: HP 95LX
  174.         Module pulled: HP 95LX
  175. --------C-03---------------------------------
  176. INT 03 - CPU-generated - BREAKPOINT
  177. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  178. Notes:    used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
  179.       command
  180.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  181.     return address points to byte following the breakpoint instruction
  182. SeeAlso: INT 01
  183. --------G-03---------------------------------
  184. INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
  185. Desc:    invokes the ROM Debugger if INT 03 has not been revectored; equivalent
  186.       to pressing Esc on booting.
  187. SeeAlso: INT 00"Zenith",INT 03"Realia"
  188. --------G-03---------------------------------
  189. INT 03 - Realia COBOL - DEBUGGER SUPPORT
  190. Note:    Realia COBOL checks for a signature eight bytes prior to the interrupt
  191.       handler when it starts up
  192. BUG:    if the offset of the INT 03 vector is less than 8, the compiler and
  193.       all executables generated by it will crash the system
  194. SeeAlso: INT 03"Columbia"
  195. --------G-030910-----------------------------
  196. INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
  197.     AX = 0910h
  198.     SI = magic value 4647h ('FG')
  199.     DI = magic value 4A4Dh ('JM')
  200.     DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  201. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  202. --------G-030911-----------------------------
  203. INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
  204.     AX = 0911h
  205.     SI = magic value 4647h ('FG')
  206.     DI = magic value 4A4Dh ('JM')
  207.     DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  208. --------G-030912-----------------------------
  209. INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
  210.     AX = 0912h
  211.     SI = magic value 4647h ('FG')
  212.     DI = magic value 4A4Dh ('JM')
  213. Return: BH = entry number of last breakpoint set
  214.     BL = type of last breakpoint set (see #0001)
  215.     DH = entry number of last breakpoint to be triggered
  216.     DL = type of last triggered breakpoint (see #0001)
  217. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  218. SeeAlso: AX=0913h,AX=0914h
  219.  
  220. (Table 0001)
  221. Values for Soft-ICE breakpoint type:
  222.  00h    BPM (breakpoint register types)
  223.  01h    I/O
  224.  02h    INTerrupt
  225.  03h    BPX (INT 03h-style breakpoint)
  226.  04h    reserved
  227.  05h    range
  228. --------G-030913-----------------------------
  229. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
  230.     AX = 0913h
  231.     SI = magic value 4647h ('FG')
  232.     DI = magic value 4A4Dh ('JM')
  233.     DS:DX -> breakpoint structure (see #0002)
  234. Return: AX = status
  235.         00h successful
  236.         BX = breakpoint number
  237.         03h breakpoint table full
  238.         06h memory limit error
  239.         07h I/O limit error
  240.         09h range limit error
  241.         16h duplicate breakpoint
  242. SeeAlso: AX=0912h,AX=0914h
  243.  
  244. Format of Soft-ICE breakpoint structure:
  245. Offset    Size    Description    (Table 0002)
  246.  00h    BYTE    breakpoint type (see #0003)
  247.  01h    DWORD    breakpoint address 1
  248.         (lower range limit for memory BPs,
  249.         interrupt number for interrupt BPs,
  250.         address of BP for execution BPs,
  251.         I/O address (only word)    for I/O BPs)
  252.  05h    DWORD    breakpoint address 2
  253.         (upper range limit for memory BPs,
  254.         optional value to check for for interrupt BPs,
  255.         overlay number (0 = root) for execution BPs)
  256.  09h    DWORD    breakpoint address 3
  257.  0Dh    BYTE    breakpoint mode 1 (see #0004)
  258.         (for interrupt BPs = register to check
  259.             00h     no value checking
  260.             01h     check AL
  261.             02h     check AH
  262.             03h     check AX)
  263.  0Eh    BYTE    breakpoint mode 2 (see #0004)
  264.  0Fh    BYTE    breakpoint size (00h byte, 01h word, 03h dword)
  265.  10h    BYTE    breakpoint pass count before program stop
  266.  11h    BYTE    breakpoint state
  267. Note:    all unused fields should contain zeros
  268.  
  269. (Table 0003)
  270. Values for Soft-ICE breakpoint type:
  271.  00h    memory location
  272.  01h    memory range
  273.  03h    I/O
  274.  04h    interrupt
  275.  05h    execution break
  276.  
  277. (Table 0004)
  278. Values for Soft-ICE breakpoint mode:
  279.  01h    read
  280.  02h    write
  281.  04h    execution
  282. --------G-030914-----------------------------
  283. INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
  284.     AX = 0914h
  285.     SI = magic value 4647h ('FG')
  286.     DI = magic value 4A4Dh ('JM')
  287.     BX = breakpoint number (returned by AX=0913h)
  288. Return: BX = ???
  289. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  290. SeeAlso: AX=0912h,AX=0913h
  291. --------C-04---------------------------------
  292. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  293. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  294.       is set; otherwise, INTO is effectively a NOP
  295. Note:    may be used for convenient overflow testing (to prevent errors from
  296.       propagating) instead of JO or a JNO/JMP combination
  297. SeeAlso: INT 00
  298. --------B-05---------------------------------
  299. INT 05 - PRINT SCREEN
  300. Desc:    dump the current text screen to the first printer
  301. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  302.       may be invoked directly by applications
  303.     byte at 0050h:0000h contains status used by default handler
  304.       00h not active
  305.       01h PrtSc in progress
  306.       FFh last PrtSc encountered error
  307.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  308. SeeAlso: INT 10/AH=12h/BL=20h
  309. --------C-05---------------------------------
  310. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  311. Desc:    generated by BOUND instruction when the value to be tested is less than
  312.       the indicated lower bound or greater than the indicated upper bound.
  313. Note:    returning from this interrupt re-executes the failing BOUND instruction
  314. --------P-05454A-----------------------------
  315. INT 05 U - PSPS v2.01 - EJECT PAGE
  316.     AX = 454Ah ('EJ')
  317. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  318.       Technologies
  319. Note:    sends a ^D to the current printer
  320. SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
  321. --------P-054E57-----------------------------
  322. INT 05 U - PSPS v2.01 - SET PARAMETERS
  323.     AX = 4E57h ('NW')
  324.     ES:SI -> 11-byte buffer containing new settings
  325. Return: buffer filled
  326. SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
  327. --------P-055053-----------------------------
  328. INT 05 U - PSPS v2.01 - GET PARAMETERS
  329.     AX = 5053h ('PS')
  330.     ES:SI -> 11-byte buffer for settings
  331. Return: buffer filled
  332. SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
  333. --------P-05554E-----------------------------
  334. INT 05 U - PSPS v2.01 - UNINSTALL
  335.     AX = 554Eh ('UN')
  336. Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
  337.       Technologies
  338. SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
  339. --------C-06---------------------------------
  340. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  341. Desc:    this interrupt is generated when the CPU attempts to execute an
  342.       invalid opcode (most protected-mode instructions are considered
  343.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  344.       which specifies a register rather than a memory address
  345. Notes:    return address points to beginning of invalid instruction
  346.     with proper programming, this interrupt may be used to emulate
  347.       instructions which do not exist; many 386 BIOSes emulate the 80286
  348.       undocumented LOADALL instruction which was removed from the 80386+
  349.     generated by the 80386+ when the LOCK prefix is used with instructions
  350.       other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
  351.       NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
  352.       not accessing memory.
  353. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  354. --------b-06---------------------------------
  355. INT 06 C - HP 95LX - SLEEP/WAKEUP
  356. Desc:    this interrupt is called just before going into light or deep
  357.       (shutdown) sleep and just after returning from light or deep sleep
  358. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  359. --------C-07---------------------------------
  360. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  361. Desc:    this interrupt is automatically called if a coprocessor instruction is
  362.       encountered when no coprocessor is installed
  363. Note:    can be used to emulate a numeric coprocessor in software
  364. SeeAlso: INT 09"MATH UNIT PROTECTION"
  365. --------H-08---------------------------------
  366. INT 08 - IRQ0 - SYSTEM TIMER
  367. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  368.       this interrupt is used to keep the time-of-day clock updated
  369. Notes:    programs which need to be invoked regularly should use INT 1C unless
  370.       they need to reprogram the timer while still keeping the time-of-day
  371.       clock running at the proper rate
  372.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  373.     may be masked by setting bit 0 on I/O port 21h
  374. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  375. SeeAlso: INT D8"Screen Thief"
  376. --------C-08---------------------------------
  377. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  378. Desc:    called when multiple exceptions occur on one instruction, or an
  379.       exception occurs in an exception handler
  380. Notes:    called in protected mode if an interrupt above the defined limit of
  381.       the interrupt vector table occurs
  382.     return address points at beginning of instruction with errors or the
  383.       beginning of the instruction which was about to execute when the
  384.       external interrupt caused the exception
  385.     if an exception occurs in the double fault handler, the CPU goes into
  386.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  387.       this "triple fault" is a faster way of returning to real mode on
  388.       many 80286 machines than the standard keyboard controller reset
  389. --------H-09---------------------------------
  390. INT 09 - IRQ1 - KEYBOARD DATA READY
  391. Desc:    this interrupt is generated when data is received from the keyboard.
  392.       This is normally a scan code (from either a keypress *or* a key
  393.       release), but may also be an ACK or NAK of a command on AT-class
  394.       keyboards.
  395. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  396.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  397.       INT 15/AH=4Fh after reading the scan code (see #0005) from the
  398.       keyboard and before further processing; all further processing uses
  399.       the scan code returned from INT 15/AH=4Fh
  400.     the default interrupt handler is at F000h:E987h in 100%-compatible
  401.       BIOSes
  402.     the interrupt handler performs the following actions for certain
  403.       special keystrokes:
  404.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  405.              invoke INT 1B, and set flag at 0040h:0071h
  406.         SysReq     invoke INT 15/AH=85h (SysReq is often labeled SysRq)
  407.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  408.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  409.                destination of the jump at that address)
  410.         Shift-PrtSc     invoke INT 05
  411.     DRDOS hooks this interrupt to control the cursor shape (underscore/
  412.       half block) for overwrite/insert mode
  413.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  414.       control whether Ctrl-Alt-Del reboots the current session or the
  415.       entire system
  416. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  417. SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  418.  
  419. (Table 0005)
  420. Values for keyboard scan code:
  421.  01h    Esc         31h    N
  422.  02h    1 !         32h    M
  423.  03h    2 @         33h    , <         63h    F16
  424.  04h    3 #         34h    . >         64h    F17
  425.  05h    4 $         35h    / ?         65h    F18
  426.  06h    5 %         36h    Right Shift     66h    F19
  427.  07h    6 ^         37h    Grey*         67h    F20
  428.  08h    7 &         38h    Alt         68h    F21
  429.  09h    8 *         39h    SpaceBar     69h    F22
  430.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  431.  0Bh    0 )         3Bh    F1         6Bh    F24
  432.  0Ch    - _         3Ch    F2         6Ch    --
  433.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  434.  0Eh    Backspace     3Eh    F4
  435.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  436.  10h    Q         40h    F6
  437.  11h    W         41h    F7
  438.  12h    E         42h    F8         72h    CrSel
  439.  13h    R         43h    F9
  440.  14h    T         44h    F10         74h    ExSel
  441.  15h    Y         45h    NumLock         75h    --
  442.  16h    U         46h    ScrollLock     76h    Clear
  443.  17h    I         47h    Home
  444.  18h    O         48h    UpArrow
  445.  19h    P         49h    PgUp
  446.  1Ah    [ {         4Ah    Grey-
  447.  1Bh    ] }         4Bh    LeftArrow
  448.  1Ch    Enter         4Ch    Keypad 5
  449.  1Dh    Ctrl         4Dh    RightArrow
  450.  1Eh    A         4Eh    Grey+
  451.  1Fh    S         4Fh    End
  452.  20h    D         50h    DownArrow     E0h    prefix code
  453.  21h    F         51h    PgDn         E1h    prefix code
  454.  22h    G         52h    Ins         FAh    ACK
  455.  23h    H         53h    Del         FEh    RESEND
  456.  24h    J         54h    SysReq         FFh    kbd error/buffer full
  457.  25h    K
  458.  26h    L         56h    left \| (102-key)
  459.  27h    ; :         57h    F11
  460.  28h    ' "         58h    F12
  461.  29h    ` ~
  462.  2Ah    Left Shift     5Ah    PA1
  463.  2Bh    \ |         5Bh    F13
  464.  2Ch    Z         5Ch    F14
  465.  2Dh    X         5Dh    F15
  466.  2Eh    C
  467.  2Fh    V
  468.  30h    B
  469. Notes:    scan codes 56h-E1h are only available on the extended (101/102-key)
  470.       keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
  471.       are only available on the 122-key keyboard
  472.     the SysReq key is often labeled SysRq
  473. --------C-09---------------------------------
  474. INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  475. Desc:    called if the coprocessor attempts to access memory outside a segment
  476.       boundary; it may occur at an arbitrary time after the coprocessor
  477.       instruction was issued
  478. Notes:    until the condition is cleared or the coprocessor is reset, the only
  479.       coprocessor instruction which may be used is FNINIT; WAIT or other
  480.       coprocessor instructions will cause a deadlock because the
  481.       coprocessor is still busy waiting for data
  482.     for the 486+, a coprocessor protection error generates an INT 0D
  483. SeeAlso: INT 07"CPU"
  484. --------*-09---------------------------------
  485. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  486. Note:    this exception has been moved to INT 0D
  487. SeeAlso: INT 09"MATH",INT 0D
  488. --------H-0A---------------------------------
  489. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  490. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  491.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  492.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  493.       connects to the slave 8259.  The BIOS redirects the interrupt for
  494.       IRQ9 back here.
  495.     under DESQview, only the INT 15h vector and BASIC segment address (the
  496.       word at 0000h:0510h) may be assumed to be valid for the handler's
  497.       process
  498.     many VGA boards do not implement the vertical retrace interrupt,
  499.       including the IBM VGA Adapter where the traces are either cut or
  500.       removed
  501. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  502. --------H-0A---------------------------------
  503. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  504. Notes:    this interrupt may be masked by setting bit 2 on I/O port 21h
  505.     the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
  506.       1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
  507.       1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
  508.       for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
  509.       DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
  510.       RSX-HD use IRQ14.  Tandy systems which use IRQ2 for the hard disk
  511.       interrupt use IRQ5 for vertical retrace.
  512. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  513. --------H-0A---------------------------------
  514. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  515. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  516.       a jumper-selectable IRQ, but software and hardware generally defaults
  517.       to IRQ2
  518. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  519. --------C-0A---------------------------------
  520. INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  521. Desc:    automatically called during a task switch if the new TSS specified by
  522.       the task gate is invalid for any of the following reasons:
  523.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  524.         LDT selector invalid or segment not present
  525.         null SS selector, or SS selector outside LDT/GDT limit
  526.         stack segment is read-only
  527.         stack segment DPL differs from new CPL, or RPL <> CPL
  528.         CS selector is outside LDT/GDT limit or not code
  529.         non-conforming code segment's DPL differs from CPL
  530.         conforming code segment's DPL > CPL
  531.         DS/ES selectors outside LDT/GDT limit or not readable segments
  532. Note:    the handler must use a task gate in order to have a valid TSS under
  533.       which to execute; it must also reset the busy bit in the new TSS
  534. SeeAlso: INT 0B"CPU"
  535. --------H-0B---------------------------------
  536. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  537. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  538.       UART has been programmed to generate interrupts
  539. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  540.       alternate
  541.     on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
  542.       shares this interrupt
  543.     may be masked by setting bit 3 on I/O port 21h
  544. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  545. --------C-0B---------------------------------
  546. INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
  547. Desc:    generated when loading a segment register if the segment descriptor
  548.       indicates that the segment is not currently in memory, unless the
  549.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  550.       INT 0C"CPU") needed by a task switch
  551. Note:    may be used to implement virtual memory by loading in segments as they
  552.       are accessed, clearing the "not present" bit after loading
  553. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  554. --------h-0B---------------------------------
  555. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  556. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  557. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  558. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  559. --------H-0C---------------------------------
  560. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  561. Desc:    automatically asserted by the UART when COM1 needs attention, if the
  562.       UART has been programmed to generate interrupts
  563. BUG:    this vector is modified but not restored by Direct Access v4.0, and
  564.       may be left dangling by other programs written with the same version
  565.       of compiled BASIC
  566. Notes:    on many PC's, COM3 shares this interrupt
  567.     may be masked by setting bit 4 on I/O port 21h
  568. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  569. --------C-0C---------------------------------
  570. INT 0C - CPU-generated (80286+) - STACK FAULT
  571. Desc:    this interrupt is generated in protected mode on a stack overflow or
  572.       underflow, or if an inter-level transition or task switch references
  573.       a stack segment marked "not present"; it is generated in real mode
  574.       on accessing a word operand at SS:FFFFh
  575. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  576.       PC AT and compatibles, external circuitry generates a reset on
  577.       shutdown.
  578. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  579. --------I-0C---------------------------------
  580. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  581. Desc:    the IBM System 36/38 emulator may be invoked through a private API,
  582.       whose entry point address (see #0006) is offset 100h in the segment
  583.       pointed at by this vector
  584.  
  585. (Table 0006)
  586. Call the System 36/38 emulator API entry point with:
  587.     AH = function
  588.         03h update screen
  589.         05h select next session
  590.         AL = session number (00h-03h)
  591.         Return: AL = session type code
  592.                 00h not active
  593.                 01h display session
  594.                 02h printer session
  595.                 FEh invalid session number
  596.             DS = requested session's data segment (0 if not active)
  597.                 (see #0007)
  598. Return: ???
  599.  
  600. Format of System 36/38 emulator's data area:
  601. Offset    Size    Description    (Table 0007)
  602. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  603.         last zerod
  604. 13Fh    BYTE    bit flags for status line indicators turned off since this
  605.         byte last set to FFh
  606. 140h    WORD    offset of EBCDIC to ASCII translation
  607. 146h    WORD    offset of EBCDIC screen buffer
  608. 148h    WORD    offset of EC (engineering change) level signature
  609. 150h    BYTE    "KEYI"
  610. 151h    BYTE    5250 key scan code to be sent to remote
  611. 15Bh    BYTE    "SYSAV"
  612. 15Dh    BYTE    5250 cursor column
  613. 15Eh    BYTE    5250 cursor row
  614. 167h    BYTE    "DVCTAD"
  615. 178h    BYTE    "FLAGS"
  616. 184h    BYTE    "SESSNOAD"
  617. 193h    BYTE    "STNAD"
  618. 198h    BYTE    "NSDS"
  619. Note:    offsets are from the interrupt handler's segment
  620. --------H-0D---------------------------------
  621. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  622. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  623.       word at 0000h:0510h) may be assumed to be valid for the handler's
  624.       process
  625.     the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
  626.       1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
  627.       1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
  628.       for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
  629.       DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
  630.       RSX-HD use IRQ14.  Tandy systems which use IRQ2 for the hard disk
  631.       interrupt use IRQ5 for vertical retrace.
  632.     may be masked by setting bit 5 on I/O port 21h
  633. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  634. SeeAlso: INT 7D"GO32"
  635. --------H-0D---------------------------------
  636. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  637. Desc:    used to ensure that the dynamic RAM retains its contents in earlier
  638.       1000-series models; later models use normal DMA for RAM refresh
  639.       (some early models have no DMA unless it is added via an expansion
  640.       card)
  641. SeeAlso: INT 55
  642. --------h-0D---------------------------------
  643. INT 0D - HP 95LX - INFRARED INTERRUPT
  644. Desc:    this interrupt is used to perform communications over the infrared
  645.       data link
  646. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  647. --------C-0D---------------------------------
  648. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  649. Desc:    the CPU generates this interrupt when it detects a protection violation
  650.       which does not fit under any other category having a separate
  651.       interrupt
  652. Notes:    called in real mode when
  653.         an instruction accesses a memory operand extending beyond offset
  654.           FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
  655.           CS, DS, ES, FG, or GS
  656.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  657.           in the second byte
  658.         an instruction exceeds the maximum length allowed (10 bytes for
  659.           80286, 15 bytes for 80386/80486)
  660.         an instruction wraps from offset FFFFh to offset 0000h
  661.     called in protected mode on protection violations not covered by INT 06
  662.       through INT 0C, including
  663.         segment limit violations
  664.         write to read-only segments
  665.         accesses using null DS or ES selectors
  666.         accesses to segments with privilege greater than CPL
  667.         wrong descriptor type
  668.     called on 80486 protected-mode floating-point protection fault
  669. SeeAlso: INT 09"80486",INT 0C"STACK"
  670. --------H-0E---------------------------------
  671. INT 0E - IRQ6 - DISKETTE CONTROLLER
  672. Desc:    this interrupt is generated by the floppy disk controller on
  673.       completion of an operation
  674. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  675.     may be masked by setting bit 6 on I/O port 21h
  676. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  677. --------C-0E---------------------------------
  678. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  679. Desc:    this interrupt is generated in protected and virtual-86 modes on
  680.       attempting to access a 4K memory page whose page table entry has
  681.       the "present" bit cleared
  682. Note:    used to implement virtual memory
  683. SeeAlso: INT 0B"hardware"
  684. --------h-0E---------------------------------
  685. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  686. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  687. --------H-0F---------------------------------
  688. INT 0F - IRQ7 - PARALLEL PRINTER
  689. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  690.       printer becomes ready
  691. Notes:    most printer adapters do not reliably generate this interrupt
  692.     the 8259 interrupt controller generates an interrupt corresponding to
  693.       IRQ7 when an error condition occurs
  694. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  695. --------h-0F---------------------------------
  696. INT 0F - HP 95LX - REAL-TIME CLOCK
  697. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
  698. --------C-10---------------------------------
  699. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  700. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  701.       by the coprocessor
  702. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  703.       get it right
  704. SeeAlso: INT 09"hardware",INT 75
  705. --------V-1000-------------------------------
  706. INT 10 - VIDEO - SET VIDEO MODE
  707.     AH = 00h
  708.     AL = mode (see #0009)
  709. Return: AL = video mode flag (Phoenix, AMI BIOS)
  710.         20h mode > 7
  711.         30h modes 0-5 and 7
  712.         3Fh mode 6
  713.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  714. Desc:    specify the display mode for the currently active display adapter
  715. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  716.       (EGA or higher only)
  717.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  718.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  719.       Everex EV-673
  720.     the installation check for Ahead adapters is the signature "AHEAD" at
  721.       C000h:0025h
  722.     the installation check for Paradise adapters is the signature "VGA=" at
  723.       C000h:007Dh
  724.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  725.       signature "OAK VGA" at C000h:0008h
  726.     the installation check for ATI adapters is the signature "761295520" at
  727.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  728.         31h for 18800
  729.         32h for 18800-1
  730.         33h for 18800-2
  731.         34h for 18800-4
  732.         35h for 18800-5
  733.       the two bytes at C000h:0040h indicate the adapter type
  734.         "22" EGA Wonder
  735.         "31" VGA Wonder
  736.         "32" EGA Wonder800+
  737.       the byte at C000h:0042h contains feature flags
  738.         bit 1: mouse port present
  739.         bit 4: programmable video clock
  740.       the byte at C000h:0044h contains additional feature flags if chipset
  741.         byte > 30h (see #0008)
  742.     the installation check for Genoa video adapters is the signature
  743.       77h XXh 99h 66h at C000h:NNNNh, where NNNNh is stored at C000h:0037h
  744.       and XXh is
  745.         00h for Genoa 6200/6300
  746.         11h for Genoa 6400/6600
  747.         22h for Genoa 6100
  748.         33h for Genoa 5100/5200
  749.         55h for Genoa 5300/5400
  750.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  751.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  752.         "EXTMODE", indicating support for extended modes
  753. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  754. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
  755. Index:    installation check;Tseng ET4000|installation check;Ahead video cards
  756. Index:    installation check;Oak Technologies|installation check;ATI video cards
  757. Index:    installation check;Paradise video|installation check;Genoa video cards
  758.  
  759. Bitfields for ATI additional feature flags:
  760. Bit(s)    Description    (Table 0008)
  761.  0    70 Hz non-interlaced display
  762.  1    Korean (double-byte) characters
  763.  2    45 MHz memory clock rather than 40 MHz
  764.  3    zero wait states
  765.  4    paged ROMs
  766.  6    no 8514/A monitor support
  767.  7    HiColor DAC
  768.  
  769. (Table 0009)
  770. Values for video mode:
  771.      text/ text pixel    pixel    colors disply scrn  system
  772.      grph resol     box  resolution       pages  addr
  773.  00h = T  40x25     8x8   320x200    16gray      8   B800 CGA,PCjr,Tandy
  774.      = T  40x25     8x14  320x350    16gray      8   B800 EGA
  775.      = T  40x25     8x16  320x400     16      8   B800 MCGA
  776.      = T  40x25     9x16  360x400     16      8   B800 VGA
  777.  01h = T  40x25     8x8   320x200     16      8   B800 CGA,PCjr,Tandy
  778.      = T  40x25     8x14  320x350     16      8   B800 EGA
  779.      = T  40x25     8x16  320x400     16      8   B800 MCGA
  780.      = T  40x25     9x16  360x400     16      8   B800 VGA
  781.  02h = T  80x25     8x8   640x200    16gray      4   B800 CGA,PCjr,Tandy
  782.      = T  80x25     8x14  640x350    16gray      8   B800 EGA
  783.      = T  80x25     8x16  640x400     16      8   B800 MCGA
  784.      = T  80x25     9x16  720x400     16      8   B800 VGA
  785.  03h = T  80x25     8x8   640x200     16      4   B800 CGA,PCjr,Tandy
  786.      = T  80x25     8x14  640x350     16/64      8   B800 EGA
  787.      = T  80x25     8x16  640x400     16      8   B800 MCGA
  788.      = T  80x25     9x16  720x400     16      8   B800 VGA
  789.  04h = G  40x25     8x8   320x200      4      .   B800 CGA,PCjr,EGA,MCGA,VGA
  790.  05h = G  40x25     8x8   320x200     4gray      .   B800 CGA,PCjr,EGA
  791.      = G  40x25     8x8   320x200      4      .   B800 MCGA,VGA
  792.  06h = G  80x25     8x8   640x200      2      .   B800 CGA,PCjr,EGA,MCGA,VGA
  793.  07h = T  80x25     9x14  720x350    mono     var  B000 MDA,Hercules,EGA
  794.      = T  80x25     9x16  720x400    mono      .   B000 VGA
  795.  08h = T 132x25     8x8  1056x200     16      .   B800 ATI EGA/VGA Wonder [2]
  796.      = T 132x25     8x8  1056x200    mono      .   B000 ATI EGA/VGA Wonder [2]
  797.      = G  20x25     8x8   160x200     16      .    .  PCjr, Tandy 1000
  798.      = G  90x43     8x8   720x352    mono      .   B000 Hercules + MSHERC.COM
  799.      = G  90x45     8x8   720x360    mono      .   B000 Hercules + HERKULES [11]
  800.  09h = G  40x25     8x8   320x200     16      .    .  PCjr, Tandy 1000
  801.  0Ah = G  80x25     8x8   640x200      4      .    .  PCjr, Tandy 1000
  802.  0Bh =     reserved                   (EGA BIOS internal use)
  803.      = G  80x25     8x8   640x200     16      .    .  Tandy 1000 SL/TL [13]
  804.  0Ch =     reserved                   (EGA BIOS internal use)
  805.  0Dh = G  40x25     8x8   320x200     16      8   A000 EGA,VGA
  806.  0Eh = G  80x25     8x8   640x200     16      4   A000 EGA,VGA
  807.  0Fh = G  80x25     8x14  640x350    mono      2   A000 EGA,VGA
  808.  10h = G  80x25     8x14  640x350      4      2   A000 64k EGA
  809.      = G    .      .    640x350     16      .   A000 256k EGA,VGA
  810.  11h = G  80x30     8x16  640x480    mono      .   A000 VGA,MCGA,ATI EGA,ATI VIP
  811.  12h = G  80x30     8x16  640x480     16/256K  .   A000 VGA,ATI VIP
  812.      = G  80x30     8x16  640x480     16/64      .   A000 ATI EGA Wonder
  813.      = G    .      .    640x480     16      .    .  UltraVision+256K EGA
  814.  13h = G  40x25     8x8   320x200    256/256K  .   A000 VGA,MCGA,ATI VIP
  815.  14h = T 132x25     Nx16      .     16      .    .  XGA, IBM Enhanced VGA [3]
  816.      = T 132x25     8x16 1056x400     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  817.      = G  80x25     8x8   640x200      .      .    .  Lava Chrome II EGA
  818.      = G    .      .    640x400     16      .    .  Tecmar VGA/AD
  819.  15h = G  80x25     8x14  640x350      .      .    .  Lava Chrome II EGA
  820.  16h = G  80x25     8x14  640x350      .      .    .  Lava Chrome II EGA
  821.      = G    .      .    800x600     16      .    .  Tecmar VGA/AD
  822.  17h = T 132x25      .      .      .      .    .  Tecmar VGA/AD
  823.      = T  80x43     8x8   640x348     16      4   B800 Tseng ET4000 BIOS [10]
  824.      = G  80x34     8x14  640x480      .      .    .  Lava Chrome II EGA
  825.  18h = T  80x30     9x16  720x480     16      1   A000 Realtek RTVGA [12]
  826.      = T 132x25      .      .    mono      .   B000 Cirrus 5320 chipset
  827.      = T 132x44     8x8  1056x352    mono      .   B000 Tseng Labs EVA
  828.      = T 132x44     9x8  1188x352     4gray      2   B000 Tseng ET3000 chipset
  829.      = T 132x44     8x8  1056x352     16/256      2   B000 Tseng ET4000 chipset
  830.      = G  80x34     8x14  640x480      .      .    .  Lava Chrome II EGA
  831.      = G          1024x768     16      .    .  Tecmar VGA/AD
  832.  19h = T  80x43     9x11  720x473     16      1   A000 Realtek RTVGA [12]
  833.      = T 132x25     8x14 1056x350    mono      .   B000 Tseng Labs EVA
  834.      = T 132x25     9x14 1188x350     4gray      4   B000 Tseng ET3000 chipset
  835.      = T 132x25     8x14 1056x350     16/256      4   B000 Tseng ET4000 chipset
  836.      = T 132x34      .      .    mono      .   B000 Cirrus 5320 chipset
  837.  1Ah = T  80x60     9x8   720x480     16      1   A000 Realtek RTVGA [12]
  838.      = T 132x28     8x13 1056x364    mono      .   B000 Tseng Labs EVA
  839.      = T 132x28     9x13 1188x364     4gray      4   B000 Tseng ET3000 chipset
  840.      = T 132x28     8x13 1056x364     16/256      4   B000 Tseng ET4000 chipset
  841.      = T 132x44      .      .    mono      .   B000 Cirrus 5320 chipset
  842.      = G    .      .    640x350    256      .    .  Tecmar VGA/AD
  843.  1Bh = T 132x25     9x14 1188x350     16      1   A000 Realtek RTVGA [12]
  844.      = G    .      .    640x400    256      .    .  Tecmar VGA/AD
  845.  1Ch = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  846.      = T 132x30     9x16 1188x480     16      1   A000 Realtek RTVGA [12]
  847.      = G    .      .    640x480    256      .    .  Tecmar VGA/AD
  848.  1Dh = T 132x43      .      .      .      .    .  Cirrus 5320 chipset
  849.      = T 132x43     9x11 1188x473     16      1   A000 Realtek RTVGA [12]
  850.      = G    .      .    800x600    256      .    .  Tecmar VGA/AD
  851.  1Eh = T 132x44      .      .      .      .    .  Cirrus 5320 chipset
  852.      = T 132x60     9x8  1188x480     16      1   A000 Realtek RTVGA [12]
  853.  1Fh = G 100x75     8x8   800x600     16      1   A000 Realtek RTVGA
  854.  20h = T 132x25      .      .     16      .    .  Avance Logic AL2101
  855.      = G    .      .    240x128      .      .   B000 HP 95LX
  856.      = G 120x45     8x16  960x720     16      1   A000 Realtek RTVGA
  857.  21h = T 132x30      .      .     16      .    .  Avance Logic AL2101
  858.      = T 132x44     9x9  1188x396     16/256K  .   B800 WD90C
  859.      = T 132x44     9x9  1188x396     16      .   B800 Diamond Speedstar 24X
  860.      = T 132x60      .      .     16      2   B800 Tseng ET4000 chipset [10]
  861.      = G  80x43     8x8   720x348    mono      .   B000 DESQview 2.x+Hercules [4]
  862.      = G 128x48     8x16 1024x768     16      1   A000 Realtek RTVGA [12]
  863.  22h = T 132x43      .      .      .      .    .  Allstar Peacock (VGA)
  864.      = T 132x43      .      .     16      .    .  Avance Logic AL2101
  865.      = T 132x44     8x8  1056x352      .      .   B800 Tseng Labs EVA
  866.      = T 132x44     9x8  1188x352     16/256K  2   B800 Tseng ET3000 chipset
  867.      = T 132x44     8x8  1056x352     16/256K  2   B800 Tseng ET4000 chipset
  868.      = T 132x44     8x8  1056x352      .      .    .  Ahead Systems EGA2001
  869.      = T 132x44     8x8  1056x352     16      2   B800 Ahead B
  870.      = T 132x44     8x9  1056x398     16      .    .  STB Lightspeed ET4000/W32P
  871.      = T 132x44      .      .     16      .    .  Orchid Prodesigner VGA
  872.      = G  80x43     8x8   720x348    mono      .   B800 DESQview 2.x+Hercules [4]
  873.      = G  96x64     8x16  768x1024     16      1   A000 Realtek RTVGA
  874.  23h = T 132x25     6x14  792x350      .      .   B800 Tseng Labs EVA
  875.      = T 132x25     9x14 1188x350     16/256K  4   B800 Tseng ET3000 chipset
  876.      = T 132x25     8x14 1056x350     16/256      4   B800 Tseng ET4000 chipset
  877.      = T 132x25     8x14 1056x350      .      .    .  Ahead Systems EGA2001
  878.      = T 132x25     8x14 1056x350     16      4   B800 Ahead B
  879.      = T 132x25     8x8  1056x200     16      .   B800 ATI EGA Wonder,ATI VIP
  880.      = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  881.      = T 132x28      .      .      .      .    .  Allstar Peacock (VGA)
  882.      = T 132x28      .      .     16      .    .  Orchid Prodesigner VGA
  883.      = T 132x60      .      .     16      .    .  Avance Logic AL2101
  884.      = G 128x48     8x16 1024x768      4      1   A000 Realtek RTVGA
  885.  24h = T  80x30      .      .     16      .    .  Avance Logic AL2101
  886.      = T 132x25      .      .      .      .    .  Allstar Peacock (VGA)
  887.      = T 132x25      .      .     16      .    .  Orchid Prodesigner VGA
  888.      = T 132x28     6x13  792x364      .      .   B800 Tseng Labs EVA
  889.      = T 132x28     9x13 1188x364     16/256K  4   B800 Tseng ET3000 chipset
  890.      = T 132x28     8x12 1056x336     16      1   B800 Ahead B
  891.      = T 132x28     8x13 1056x364     16/256K  4   B800 Tseng ET4000 chipset
  892.      = T 132x28     8x14 1056x392     16      .    .  STB Lightspeed ET4000/W32P
  893.      = T 132x28      .      .      .      .    .  Cirrus 5320 chipset
  894.      = G  64x32     8x16  512x512    256      1   A000 Realtek RTVGA
  895.  25h = T  80x43      .      .     16      .    .  Avance Logic AL2101
  896.      = G  80x60     8x8   640x480      .      .   A000 Tseng Labs EVA
  897.      = G  80x60     8x8   640x480     16/256K  1   A000 Tseng ET3000/4000 chipset
  898.      = G    .      .    640x480     16      .    .  VEGA VGA
  899.      = G  80x60     8x8   640x480     16      .   A000 Orchid Prodesigner VGA
  900.      = G  80x60     8x8   640x480     16      1   A000 Ahead B (same as 26h)
  901.      = G    .      .    640x480     16      .    .  NEC GB-1
  902.      = G    .      .    640x480     16      .    .  Cirrus 5320 chipset
  903.      = G    .      .    640x400    256      .    .  Realtek RTVGA
  904.  26h = T  80x60     8x8   640x480      .      .    .  Tseng Labs EVA
  905.      = T  80x60     8x8   640x480     16/256K  3   B800 Tseng ET3000/4000 chipset
  906.      = T  80x60      .      .      .      .    .  Allstar Peacock (VGA)
  907.      = T  80x60      .      .     16      .    .  Orchid ProDesigner VGA
  908.      = T  80x60      .      .     16      .    .  Avance Logic AL2101
  909.      = G  80x60     8x8   640x480      .      .    .  Ahead Systems EGA2001
  910.      = G  80x60     8x8   640x480     16      1   A000 Ahead B (same as 25h)
  911.      = G    .      .    640x480    256      .    .  Realtek RTVGA
  912.  27h = T 132x25     8x8  1056x200    mono      .   B000 ATI EGA Wonder,ATI VIP
  913.      = G    .      .    720x512     16      .    .  VEGA VGA
  914.      = G    .      .    720x512     16      .    .  Genoa
  915.      = G 100x75     8x8   800x600    256      1   A000 Realtek RTVGA [12]
  916.      = G    .      .    960x720     16      .    .  Avance Logic AL2101
  917.  28h = T ???x???  .      .      .      .    .  VEGA VGA
  918.      = G    .      .    512x512    256      .    .  Avance Logic AL2101
  919.      = G    .      .   1024x768    256      .    .  Realtek RTVGA (1meg)
  920.  29h = G    .      .    640x400    256      .    .  Avance Logic AL2101
  921.      = G    .      .    800x600     16      .    .  VEGA VGA
  922.      = G 100x37     8x16  800x600     16      .   A000 Orchid
  923.      = G    .      .    800x600     16      .   A000 STB,Genoa,Sigma
  924.      = G    .      .    800x600     16      .    .  Allstar Peacock (VGA)
  925.      = G 100x37     8x16  800x600     16/256K  1   A000 Tseng ET3000/4000 chipset
  926.      = G    .      .    800x600    ???      .    .  EIZO MDB10
  927.      = G    .      .    800x600     16      .    .  Cirrus 5320 chipset
  928.      = G   NA      .    800x600     16      .    .  Compaq QVision 1024/1280
  929.      = G    .      .   1024x1024 256      .    .  Realtek RTVGA BIOS v3.C10
  930.  2Ah = T 100x40      .      .      .      .    .  Allstar Peacock (VGA)
  931.      = T 100x40     8x16  800x640     16      .    .  Orchid Prodesigner VGA
  932.      = T 100x40     8x15  800x600     16/256K  4   B800 Tseng ET3000/4000 chipset
  933.      = T 100x40     8x15  800x600     16      .    .  STB Lightspeed ET4000/W32P
  934.      = G    .      .    640x480    256      .    .  Avance Logic AL2101
  935.      = G    .      .   1280x1024     16      .    .  Realtek RTVGA
  936.  2Bh = G    .      .    800x600     16      .    .  Avance Logic AL2101
  937.  2Ch = G    .      .    800x600    256      .    .  Avance Logic AL2101
  938.  2Dh = G    .      .    640x350    256      .    .  VEGA VGA
  939.      = G    .      .    640x350    256/256K  .   A000 Orchid, Genoa, STB
  940.      = G  80x25     8x14  640x350    256/256K  1   A000 Tseng ET3000/4000 chipset
  941.      = G    .      .    640x350    256      .    .  Cirrus 5320 chipset
  942.      = G  80x25     8x14  640x350    256      .    .  STB Lightspeed ET4000/W32P
  943.      = G    .      .    768x1024     16      .    .  Avance Logic AL2101
  944.  2Eh = G    .      .    640x480    256      .    .  VEGA VGA
  945.      = G  80x30     8x16  640x480 256/256K      .   A000 Orchid
  946.      = G    .      .    640x480 256/256K      .   A000 STB,Genoa,Sigma
  947.      = G  80x30     8x16  640x480 256/256K      1   A000 Tseng ET3000/4000 chipset
  948.      = G    .      .    640x480 256/256K      .    .  Compaq QVision 1024/1280
  949.      = G    .      .    768x1024 256      .    .  Avance Logic AL2101
  950.  2Fh = T 160x50     8x8  1280x400     16      4   B800 Ahead B (Wizard/3270)
  951.      = G    .      .    720x512    256      .    .  VEGA VGA
  952.      = G    .      .    720x512    256      .    .  Genoa
  953.      = G  80x25     8x16  640x400 256/256K      1   A000 Tseng ET4000 chipset
  954.      = G    .      .   1024x768      4      .    .  Avance Logic AL2101
  955.  30h = G    .      .    800x600    256      .    .  VEGA VGA
  956.      = G 100x37     8x16  800x600 256/256K      .   A000 Orchid
  957.      = G    .      .    800x600 256/256K      .   A000 STB,Genoa,Sigma
  958.      = G    .      .    720x350      2      .    .  3270 PC
  959.      = G    .      .    800x600    256      .    .  Cardinal
  960.      = G    .      .      .      .      .   B800 AT&T 6300
  961.      = G 100x37     8x16  800x600 256/256K      1   A000 Tseng ET3000/4000 chipset
  962.      = G    .      .   1024x768     16      .    .  Avance Logic AL2101
  963.  31h = G    .      .   1024x768    256      .    .  Avance Logic AL2101
  964.  32h = T  80x34     8x10      .     16      4   B800 Ahead B (Wizard/3270)
  965.      = G    .      .    640x480    256      .    .  Compaq QVision 1024/1280
  966.  33h = T 132x44     8x8      .     16      .   B800 ATI EGA Wonder,ATI VIP
  967.      = T  80x34     8x8      .     16      4   B800 Ahead B (Wizard/3270)
  968.  34h = T  80x66     8x8      .     16      4   B800 Ahead B (Wizard/3270)
  969.      = G    .      .    800x600    256      .    .  Compaq QVision 1024/1280
  970.  36h = G    .      .    960x720     16      .    .  VEGA VGA, STB
  971.      = G    .      .    960x720     16      .   A000 Tseng ET3000 only
  972.      = G    .      .   1280x1024     16      .    .  Avance Logic AL2101
  973.  37h = T 132x44     8x8      .    mono      .   B800 ATI EGA Wonder,ATI VIP
  974.      = G    .      .   1024x768     16      .    .  VEGA VGA
  975.      = G 128x48     8x16 1024x768     16      .   A000 Orchid
  976.      = G    .      .   1024x768     16      .   A000 STB,Genoa,Sigma
  977.      = G    .      .   1024x768     16      .    .  Definicon
  978.      = G 128x48     8x16 1024x768     16      1   A000 Tseng ET3000/4000 chipset
  979.      = G    .      .   1024x768     16      .    .  Compaq QVision 1024/1280
  980.      = G    .      .   1280x1024 256      .    .  Avance Logic AL2101
  981.  38h = G    .      .   1024x768    256      .    .  STB VGA/EM-16 Plus (1MB)
  982.      = G 128x48     8x16 1024x768    256/256K  1   A000 Tseng ET4000 chipset
  983.      = G    .      .   1024x768    256      .    .  Orchid ProDesigner II
  984.      = G    .      .   1024x768    256      .    .  Compaq QVision 1024/1280
  985.  39h = G    .      .   1280x1024     16      .    .  Compaq QVision 1280
  986.  3Ah = G    .      .   1280x1024    256      .    .  Compaq QVision 1280
  987.  3Bh = G    .      .    512x480    256      .    .  Compaq QVision 1024/1280
  988.  3Ch = G    .      .    640x400     64K      .    .  Compaq QVision 1024/1280
  989.  3Dh = G    .      .   1280x1024     16      .    .  Definicon
  990.      = G 128x64     8x16 1280x1024     16      1   A000 Tseng ET4000 v3.00 [1,7]
  991.  3Eh = G    .      .   1280x961     16      .    .  Definicon
  992.      = G    .      .    640x480     64K      .    .  Compaq QVision 1024/1280
  993.  3Fh = G    .      .   1280x1024 256      .    .  Hercules ??? (ET4000W32)
  994.      = G    .      .    800x600     64K      .    .  Compaq QVision 1024/1280
  995.  40h = T  80x43      .      .      .      .    .  VEGA VGA, Tecmar VGA/AD
  996.      = T  80x43      .      .      .      .    .  Video7 V-RAM VGA
  997.      = T  80x43      .      .      .      .    .  Tatung VGA
  998.      = T 100x30      .      .     16      .    .  MORSE VGA
  999.      = T 100x30      .      .      .      .    .  Cirrus 510/520 chipset
  1000.      = T  80x25      .    720x350    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1001.      = G    .      .    320x200     64K      .    .  Avance Logic AL2101
  1002.      = G  80x25     8x16  640x400      2      1   B800 AT&T 6300, AT&T VDC600
  1003.      = G  80x25     8x16  640x400      2      1   B800 Olivetti Quaderno
  1004.      = G  80x25     8x16  640x400      2      1   B800 Compaq Portable
  1005.      = G    .      .   1024x768     64K      .    .  Compaq QVision 1280
  1006.  41h = T 132x25      .      .      .      .    .  VEGA VGA
  1007.      = T 132x25      .      .      .      .    .  Tatung VGA
  1008.      = T 132x25      .      .      .      .    .  Video7 V-RAM VGA
  1009.      = T 100x50      .      .     16      .    .  MORSE VGA
  1010.      = T 100x50      .      .      .      .    .  Cirrus 510/520 chipset
  1011.      = T  80x34     9x14  720x476     16/256K  .   B800 WD90C
  1012.      = T  80x34     9x14      .     16      .   B800 Diamond Speedstar 24X
  1013.      = G    .      .    512x512     64K      .    .  Avance Logic AL2101
  1014.      = G    .      .    640x200     16      1    .  AT&T 6300
  1015.      = G  80x25      .    720x348    mono      .   B000 Genoa SuperEGA BIOS 3.0+
  1016.  42h = T 132x43      .      .      .      .    .  VEGA VGA
  1017.      = T 132x43      .      .      .      .    .  Tatung VGA
  1018.      = T 132x43      .      .      .      .    .  Video7 V-RAM VGA
  1019.      = T  80x34     9x10      .      4      4   B800 Ahead B (Wizard/3270)
  1020.      = T 100x60      .      .     16      .    .  MORSE VGA
  1021.      = T 100x60      .      .      .      .    .  Cirrus 510/520 chipset
  1022.      = G  80x25     8x16  640x400     16      .    .  AT&T 6300, AT&T VDC600
  1023.      = G    .      .    640x400     64K      .    .  Avance Logic AL2101
  1024.      = G  80x25      .    720x348    mono      .   B800 Genoa SuperEGA BIOS 3.0+
  1025.  43h = T  80x60      .      .      .      .    .  VEGA VGA
  1026.      = T  80x60      .      .      .      .    .  Tatung VGA
  1027.      = T  80x60      .      .      .      .    .  Video7 V-RAM VGA
  1028.      = T  80x45     9x8      .      4      4   B800 Ahead B (Wizard/3270)
  1029.      = T 100x75      .      .     16      .    .  MORSE VGA
  1030.      = T  80x29      .    720x348    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1031.      = G    .      . 640x200 of 640x400 viewport       AT&T 6300 (unsupported)
  1032.      = G    .      .    640x480     64K      .    .  Avance Logic AL2101
  1033.  44h =    disable VDC and DEB output        .  AT&T 6300
  1034.      = T 100x60      .      .      .      .    .  VEGA VGA
  1035.      = T 100x60      .      .      .      .    .  Tatung VGA
  1036.      = T 100x60      .      .      .      .    .  Video7 V-RAM VGA
  1037.      = T  80x32      .    720x352    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1038.      = G    .      .    800x600     64K      .    .  Avance Logic AL2101
  1039.  45h = T 132x28      .      .      .      .    .  Tatung VGA
  1040.      = T 132x28      .      .      .      .    .  Video7 V-RAM VGA
  1041.      = T  80x44      .    720x352    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1042.  46h = T 132x25     8x14      .    mono      .    .  Genoa 6400
  1043.      = T 132x25     9x14      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1044.      = G 100x40     8x15  800x600      2      .    .  AT&T VDC600
  1045.  47h = T 132x29     8x12      .    mono      .    .  Genoa 6400
  1046.      = T 132x29     9x12      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1047.      = T 132x28     9x16 1188x448     16/256K  .   B800 WD90C
  1048.      = T 132x28     9x16      .     16      .   B800 Diamond Speedstar 24X
  1049.      = G 100x37     8x16  800x600     16      .    .  AT&T VDC600
  1050.  48h = T 132x32     8x12      .    mono      .    .  Genoa 6400
  1051.      = T 132x32     9x11      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1052.      = G  80x50     8x8   640x400      2      .   B800 AT&T 6300, AT&T VDC600
  1053.      = G  80x50     8x8   640x400      2      .   B800 Olivetti Quaderno
  1054.  49h = T 132x44     8x8      .    mono      .    .  Genoa 6400
  1055.      = T 132x44     9x8      .    mono      .    .  Genoa SuperEGA BIOS 3.0+
  1056.      = G  80x30     8x16  640x480      .      .    .  Lava Chrome II EGA
  1057.  4Dh = T 120x25      .      .      .      .    .  VEGA VGA
  1058.      = G    .      .    512x480     16M      .    .  Compaq QVision 1024/1280
  1059.  4Eh = T 120x43      .      .      .      .    .  VEGA VGA
  1060.      = T  80x60     8x8      .     16/256K  .   B800 Oak OTI-067/OTI-077 [8]
  1061.      = G    .      .    640x400     16M      .    .  Compaq QVision 1024/1280
  1062.  4Fh = T 132x25      .      .      .      .    .  VEGA VGA
  1063.      = T 132x60      .      .      .      .    .  some Oak Tech VGA [8]
  1064.      = G    .      .    640x480     16M      .    .  Compaq QVision 1280
  1065.  50h = T  80x30     8x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1066.      = T  80x34      .      .      .      .    .  Lava Chrome II EGA
  1067.      = T  80x43      .      .    mono      .    .  VEGA VGA
  1068.      = T 132x25     9x14      .    mono      .    .  Ahead Systems EGA2001
  1069.      = T 132x25     9x14      .      4      4   B800 Ahead B
  1070.      = T 132x25     8x14      .     16      8   B800 OAK Technologies VGA-16
  1071.      = T 132x25     8x14      .     16/256K  .   B800 Oak OTI-037/067/077 [8]
  1072.      = T 132x25     8x14 1056x350     16      8   B800 UM587 chipset
  1073.      = T 132x30      .      .     16      .    .  MORSE VGA
  1074.      = T 132x30      .      .      .      .    .  Cirrus 510/520 chipset
  1075.      = G  80x30     8x16  640x480     16      .    .  Paradise EGA-480
  1076.      = G  80x30     8x16  640x480     16      .    .  NEL Electronics BIOS
  1077.      = G    .      .    640x480    mono???      .    .  Taxan 565 EGA
  1078.      = G  40x25     8x8   320x200      .      .    .  Genoa SuperEGA BIOS 3.0+
  1079.  51h = T  80x30     8x16      .      .      .    .  Paradise EGA-480
  1080.      = T  80x30     9x16      .      .      .    .  NEL Electronics BIOS
  1081.      = T  80x30      .      .      .      .    .  Lava Chrome II EGA
  1082.      = T  80x43     8x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1083.      = T 132x25      .      .    mono      .    .  VEGA VGA
  1084.      = T 132x28     9x12      .      4      4   B800 Ahead B
  1085.      = T 132x43     8x8      .     16      5   B800 OAK Technologies VGA-16
  1086.      = T 132x43     8x8      .     16/256K  .   B800 Oak OTI-037/067/077
  1087.      = T 132x43     8x8  1056x344     16      5   B800 UM587 chipset
  1088.      = T 132x50      .      .     16      .    .  MORSE VGA
  1089.      = T 132x50      .      .      .      .    .  Cirrus 510/520 chipset
  1090.      = G  80x34     8x14  640x480     16      .    .  ATI EGA Wonder
  1091.      = G  80x25     8x8   640x200      .      .    .  Genoa SuperEGA BIOS 3.0+
  1092.  52h = T  80x60      .      .      .      .    .  Lava Chrome II EGA
  1093.      = T  80x60     8x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1094.      = T 132x43      .      .    mono      .    .  VEGA VGA
  1095.      = T 132x44     9x8      .    mono      .    .  Ahead Systems EGA2001
  1096.      = T 132x44     9x8      .      4      2   B800 Ahead B
  1097.      = T 132x60      .      .     16      .    .  MORSE VGA
  1098.      = T 132x60      .      .      .      .    .  Cirrus 510/520 chipset
  1099.      = G  80x25     8x19  640x480     16      1   A000 AX VGA (Kanji&superimpose)
  1100.      = G  94x29     8x14  752x410     16      .    .  ATI EGA Wonder
  1101.      = G 100x75     8x8   800x600     16      1   A000 OAK Technologies VGA-16
  1102.      = G 100x75     8x8   800x600     16      .   A000 Oak OTI-037 chipset [8]
  1103.      = G 100x37     8x16  800x600     16      .   A000 Oak OTI-067/077 chips [8]
  1104.      = G 100x75     8x8   800x600     16      .   A000 UM587 chipset
  1105.      = G 128x30     8x16 1024x480     16      .    .  NEL Electronics BIOS
  1106.  53h = T  80x25     8x16      .      .      .    .  NEL Electronics BIOS
  1107.      = T  80x60      .      .     16      .    .  MORSE VGA
  1108.      = T  80x60      .      .      .      .    .  Cirrus 510/520 chipset
  1109.      = T 132x25     8x14      .     16/256K  .   B800 Trident TVGA 8800/8900
  1110.      = T 132x43      .      .      .      .    .  Lava Chrome II EGA
  1111.      = G  80x25     8x19  640x480     16      1   A000 AX VGA (Kanji, no superimp.)
  1112.      = G    .      .    640x480    256      .    .  Oak VGA
  1113.      = G  80x30     8x16  640x480    256      .   A000 Oak OTI-067/OTI-077 [8]
  1114.      = G 100x40     8x14  800x560     16      .    .  ATI EGA Wonder,ATI VIP
  1115.      = G    .      .      .      .      .    .  AX PC
  1116.  54h = T 132x25      .      .      .      .    .  Lava Chrome II EGA
  1117.      = T 132x30     8x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1118.      = T 132x43     8x8      .      .      .    .  Paradise EGA-480
  1119.      = T 132x43     8x8      .      .      .    .  NEL Electronics BIOS
  1120.      = T 132x43     7x9      .     16/256K  .   B800 Paradise VGA
  1121.      = T 132x43     8x9      .     16/256K  .   B800 Paradise VGA on multisync
  1122.      = T 132x43      .      .      .      .    .  Taxan 565 EGA
  1123.      = T 132x43      .      .      .      .    .  AST VGA Plus
  1124.      = T 132x43      .      .      .      .    .  Hewlett-Packard D1180A
  1125.      = T 132x43     7x9      .     16      .    .  AT&T VDC600
  1126.      = T 132x43     9x9  1188x387     16/256K  .   B800 WD90C
  1127.      = T 132x43     9x9  1188x387     16/256K  .   B800 Diamond Speedstar 24X
  1128.      = T 132x43     9x9  1188x387     16/256K  .   B800 Diamond Stealth 24
  1129.      = T 132x43     8x8  1056x350     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  1130.      = T 132x50     8x8      .     16      .   A000 NCR 77C22 [9]
  1131.      = G 100x42     8x14  800x600     16      .   A000 ATI EGA Wonder, VGA Wonder
  1132.      = G 100x42     8x14  800x600     16      .   A000 ATI Ultra 8514A, ATI XL
  1133.      = G    .      .    800x600    256      .   A000 Oak VGA
  1134.      = G 100x37     8x16  800x600    256      .   A000 Oak OTI-067/077 chips [8]
  1135.  55h = T  80x66     8x8      .     16/256K  .   A000 ATI VIP
  1136.      = T 132x25     8x14      .      .      .    .  Paradise EGA-480
  1137.      = T 132x25     8x14      .      .      .    .  NEL Electronics BIOS
  1138.      = T 132x25     7x16      .     16/256K  .   B800 Paradise VGA
  1139.      = T 132x25     8x16      .     16/256K  .   B800 Paradise VGA on multisync
  1140.      = T 132x25      .      .      .      .    .  Taxan 565 EGA
  1141.      = T 132x25      .      .      .      .    .  AST VGA Plus
  1142.      = T 132x25      .      .      .      .    .  Hewlett-Packard D1180A
  1143.      = T 132x25     7x16      .     16      .    .  AT&T VDC600
  1144.      = T 132x25     8x16      .     16      .   A000 NCR 77C22 [9]
  1145.      = T 132x25     9x16 1188x400     16/256K  .   B800 WD90C
  1146.      = T 132x25     9x16 1188x400     16/256K  .   B800 Diamond Speedstar 24X
  1147.      = T 132x25     9x16 1188x400     16/256K  .   B800 Diamond Stealth 24
  1148.      = T 132x25     8x14 1056x350     16/256K  .    .  Cirrus CL-GD5420/5422/5426
  1149.      = T 132x43     8x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1150.      = G  94x29     8x14  752x410      .      .    .  Lava Chrome II EGA
  1151.      = G 128x48     8x16 1024x768     16/256K  .   A000 ATI VGA Wonder v4+  [5]
  1152.      = G    .      .   1024x768     16/256K  .    .  ATI VGA Wonder Plus
  1153.      = G    .      .   1024x768     16/256K  .    .  ATI Ultra 8514A,ATI XL
  1154.      = G 128x48     8x16 1024x768      4      .   A000 Oak OTI-067/077 chips [8]
  1155.  56h = T 132x43     8x8      .      3???      2   B000 NSI Smart EGA+
  1156.      = T 132x43     7x9      .      4      .   B000 Paradise VGA
  1157.      = T 132x43     8x9      .      4      .   B000 Paradise VGA on multisync
  1158.      = T 132x43      .      .    mono      .    .  Taxan 565 EGA
  1159.      = T 132x43     7x9      .      2      .    .  AT&T VDC600
  1160.      = T 132x43     9x8      .      .      .    .  NEL Electronics BIOS
  1161.      = T 132x50     8x8      .      4      .   A000 NCR 77C22 [9]
  1162.      = T 132x60     8x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1163.      = G    .      .   1024x768     16      .   A000 Oak VGA
  1164.      = G 128x48     8x16 1024x768     16      .   A000 Oak OTI-067/077 chips [8]
  1165.  57h = T 132x25     8x14      .      3???      4   B000 NSI Smart EGA+
  1166.      = T 132x25     7x16      .      4      .   B000 Paradise VGA
  1167.      = T 132x25     8x16      .      4      .   B000 Paradise VGA on multisync
  1168.      = T 132x25     9x14      .      .      .    .  NEL Electronics BIOS
  1169.      = T 132x25      .      .    mono      .    .  Taxan 565 EGA
  1170.      = T 132x25     7x16      .      2      .    .  AT&T VDC600
  1171.      = T 132x25     9x14      .     16/256K  .   B800 Trident TVGA 8800/8900
  1172.      = T 132x25     8x16      .      4      .   A000 NCR 77C22 [9]
  1173.      = G  96x48     8x16  768x1024     16      .   A000 Oak OTI-067/077 chips [8]
  1174.  58h = T  80x33     8x14      .     16      .   B800 ATI EGA Wonder,ATI VIP
  1175.      = T  80x32     9x16      .     16      .    .  Genoa 6400
  1176.      = T  80x43     8x8      .      .      .    .  NEL Electronics BIOS
  1177.      = T 132x30     9x16      .     16/256K  .   B800 Trident TVGA 8800/8900
  1178.      = G 100x75     8x8   800x600     16/256K  .   A000 Paradise VGA
  1179.      = G 100x75     8x8   800x600     16      .    .  AT&T VDC600
  1180.      = G 100x75     8x8   800x600     16      .   A000 NCR 77C22 [9]
  1181.      = G 100x75     8x8   800x600     16      .    .  Diamond Speedstar 24X
  1182.      = G 100x75     8x8   800x600     16/256K  .   A000 Paradise VGA, WD90C
  1183.      = G    .      .    800x600     16      .    .  AST VGA Plus, Compaq VGA
  1184.      = G    .      .    800x600     16      .    .  Dell VGA
  1185.      = G    .      .    800x600     16      .    .  Hewlett-Packard D1180A
  1186.      = G    .      .    800x600    ???      .    .  ELT VGA PLUS 16
  1187.      = G 100x37     8x16  800x600     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1188.      = G 160x64     8x16 1280x1024     16      .   A000 Oak OTI-077 chipset [8]
  1189.  59h = T  80x43     9x8      .      .      .    .  NEL Electronics BIOS
  1190.      = T  80x66     8x8      .     16/256K  .   A000 ATI VIP
  1191.      = T 132x43     9x11      .     16/256K  .   B800 Trident TVGA 8800/8900
  1192.      = G 100x75     8x8   800x600      2      .   A000 Paradise VGA
  1193.      = G 100x75     8x8   800x600      2      .    .  AT&T VDC600
  1194.      = G    .      .    800x600      2      .    .  AST VGA Plus, Compaq VGA
  1195.      = G    .      .    800x600      2      .    .  Dell VGA
  1196.      = G    .      .    800x600      2      .    .  Hewlett-Packard D1180A
  1197.      = G 100x75     8x8   800x600      2      .   A000 NCR 77C22 [9]
  1198.      = G 128x48     8x16 1024x768    256      .   A000 Oak OTI-077 chipset [8]
  1199.  5Ah = T  80x60     8x8      .      .      .    .  NEL Electronics BIOS
  1200.      = T 132x60     9x8      .     16/256K  .   B800 Trident TVGA 8800/8900
  1201.      = G 128x48     8x16 1024x768      2      .   A000 NCR 77C22 [9]
  1202.  5Bh = T  80x30     8x16      .      .      .   B800 ATI VGA Wonder (undoc)
  1203.      = G    .      .    640x350    256      .    .  Genoa 6400
  1204.      = G  80x25     8x16  640x400     32K      .   A000 Oak OTI-067/077 chips [8]
  1205.      = G    .      .    800x600     16      .    .  Maxxon, SEFCO TVGA, Imtec
  1206.      = G 100x75     8x8   800x600     16/256K  .   A000 Trident TVGA 8800, 8900
  1207.      = G    .      .    800x600    ???      .    .  Vobis MVGA
  1208.      = G 100x37     8x16  800x600      .      .    .  NEL Electronics BIOS
  1209.      = G 128x48     8x16 1024x768     16      .   A000 NCR 77C22 [1,9]
  1210.  5Ch = T 100x37     8x16      .      .      .    .  NEL Electronics BIOS
  1211.      = G    .      .    640x400    256      .    .  Logix, ATI Prism Elite
  1212.      = G    .      .    640x400    256      .    .  Maxxon, SEFCO TVGA, Imtec
  1213.      = G  80x25     8x16  640x400    256/256K  .   A000 Zymos Poach, Hi Res 512
  1214.      = G  80x25     8x16  640x400    256/256K  .   A000 Trident TVGA 8800/8900
  1215.      = G  80x30     8x16  640x480    256      .    .  Genoa 6400
  1216.      = G  80x30     8x16  640x480     32K      .   A000 Oak OTI-077 chipset [8]
  1217.      = G 100x75     8x8   800x600    256      .   A000 NCR 77C22 [9]
  1218.      = G 100x75     8x8   800x600    256/256K  .   A000 WD90C
  1219.      = G 100x75     8x8   800x600    256/256K  .   A000 Diamond Speedstar 24X
  1220.      = G 100x37     8x16  800x600    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1221.  5Dh = T 100x75     8x8      .      .      .    .  NEL Electronics BIOS
  1222.      = G  80x25     8x14  640x350     64K      .    .  STB Lightspeed ET4000/W32P
  1223.      = G    .      .    640x480    256      .    .  Logix, ATI Prism Elite
  1224.      = G    .      .    640x480    256      .    .  Maxxon, SEFCO TVGA, Imtec
  1225.      = G  80x30     8x16  640x480    256/256K  .   A000 Zymos Poach, Hi Res 512
  1226.      = G  80x30     8x16  640x480    256/256K  .   A000 Trident TVGA 8800 (512K)
  1227.      = G 128x48     8x16 1024x768     16      .   A000 NCR 77C22 [9]
  1228.      = G 128x48     8x16 1024x768     16/256K  .   A000 WD90C
  1229.      = G 128x48     8x16 1024x768     16      .    .  Diamond Speedstar 24X
  1230.      = G 128x48     8x16 1024x768     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1231.  5Eh = G    .      .    640x400    256      .    .  Paradise VGA,VEGA VGA
  1232.      = G    .      .    640x400    256      .    .  AST VGA Plus, NCR 77C22
  1233.      = G    .      .    640x400    256      .    .  Compaq VGA, Dell VGA
  1234.      = G  80x25     8x16  640x400    256      .    .  AT&T VDC600
  1235.      = G  80x25     8x16  640x400    256      .   A000 NCR 77C22 [9]
  1236.      = G  80x25     8x16  640x400    256/256K  .   A000 WD90C
  1237.      = G  80x25     8x16  640x400    256/256K  .   A000 Diamond Speedstar 24X
  1238.      = G    .      .    800x600     16      .    .  Logix, ATI Prism Elite
  1239.      = G 100x37     8x16  800x600     16      .    .  NEL Electronics BIOS
  1240.      = G 100x75     8x8   800x600    256      .    .  Genoa 6400
  1241.      = G 100x75     8x8   800x600    256/256K  .   A000 Zymos Poach, Trident 8900
  1242.      = G 100x75     8x8   800x600    256/256K  .   A000 Hi Res 512
  1243.  5Fh = G  80x25     8x16  640x400     64K      .    .  STB Lightspeed ET4000/W32P
  1244.      = G    .      .    640x480    256      .    .  Paradise VGA
  1245.      = G    .      .    640x480    256      .    .  AST VGA Plus, NCR 77C22
  1246.      = G    .      .    640x480    256      .    .  Compaq VGA, Dell VGA
  1247.      = G    .      .    640x480    256      .    .  Hewlett-Packard D1180A
  1248.      = G  80x30     8x16  640x480    256      .    .  AT&T VDC600 (512K)
  1249.      = G  80x30     8x16  640x480    256      .   A000 NCR 77C22 [9]
  1250.      = G  80x30     8x16  640x480    256/256K  .   A000 WD90C
  1251.      = G  80x30     8x16  640x480    256/256K  .   A000 Diamond Speedstar 24X
  1252.      = G  80x30     8x16  640x480    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1253.      = G    .      .   1024x768     16      .    .  Logix, ATI Prism Elite
  1254.      = G    .      .   1024x768     16      .    .  Maxxon, Imtec
  1255.      = G 128x48     8x16 1024x768     16      .    .  Genoa 6400
  1256.      = G 128x48     8x16 1024x768     16/256K  .   A000 Zymos Poach, Hi Res 512
  1257.      = G 128x48     8x16 1024x768     16/256K  .   A000 Trident TVGA 88/8900 512K
  1258.  60h = T 132x25     8x14      .     16/64      8   B800 Quadram Ultra VGA
  1259.      = T 132x25     8x14      .     16      .    .  Genoa 6400
  1260.      = T 132x25     8x14      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1261.      = T 132x25      .      .      .      .    .  Cirrus 5320 chipset
  1262.      = T 132x25      .      .     16      .    .  Chips&Technologies chipset
  1263.      = G  80x???  .    ???x400      .      .    .  Corona/Cordata BIOS 4.10+
  1264.      = G  80x25     8x16  640x400    256      1   A000 Ahead A, Ahead B
  1265.      = G    .      .    752x410      .      .    .  VEGA VGA
  1266.      = G    .      .    752x410     16      .    .  Tatung VGA
  1267.      = G    .      .    752x410     16      .    .  Video7 V-RAM VGA
  1268.      = G 128x48     8x16 1024x768      4/256K  .   A000 Trident TVGA 8900
  1269.      = G 128x48     8x16 1024x768    256/256K  .   A000 WD90C
  1270.      = G 128x48     8x16 1024x768    256/256K  .   A000 Diamond Speedstar 24X
  1271.      = G 128x48     8x16 1024x768    256/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1272.  61h = T 132x29     8x12      .     16/64      8   B800 Quadram Ultra VGA
  1273.      = T 132x29     8x8      .     16      .    .  Genoa 6400
  1274.      = T 132x29     8x8      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1275.      = T 132x50      .      .      .      .    .  Cirrus 5320 chipset
  1276.      = T 132x50      .      .     16      .    .  Chips&Technologies chipset
  1277.      = G    .      .    ???x400      .      .    .  Corona/Cordata BIOS 4.10+
  1278.      = G  80x25     8x16  640x400    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1279.      = G  80x25     8x16  640x400    256      .   A000 ATI Ultra 8514A,ATI XL
  1280.      = G  80x30     8x16  640x480    256      1   A000 Ahead A, Ahead B (512K)
  1281.      = G    .      .    720x540      .      .    .  VEGA VGA
  1282.      = G    .      .    720x540     16      .    .  Tatung VGA
  1283.      = G    .      .    720x540     16      .    .  Video7 V-RAM VGA
  1284.      = G  96x64     8x16  768x1024     16/256K  .   A000 Trident TVGA 88/8900 512K
  1285.      = G 128x48     8x16 1024x768    256      .   A000 NCR 77C22 [1,9]
  1286.  62h = T 132x32     8x11      .     16/64      6   B800 Quadram Ultra VGA
  1287.      = T 132x32     8x12      .     16      .    .  Genoa 6400
  1288.      = T 132x32     8x11      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1289.      = G    .      .    640x450     16      .    .  Cirrus 510/520 chipset
  1290.      = G  80x30     8x16  640x480    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1291.      = G  80x30     8x16  640x480    256      .   A000 ATI Ultra 8514A,ATI XL
  1292.      = G  80x30     8x16  640x480    32K      .   A000 WD90C
  1293.      = G  80x30     8x16  640x480    32K      .   A000 Diamond Speedstar 24X
  1294.      = G    .      .    800x600      .      .    .  VEGA VGA
  1295.      = G    .      .    800x600     16      .    .  Tatung VGA
  1296.      = G    .      .    800x600     16      .    .  Video7 V-RAM VGA
  1297.      = G 100x75     8x8   800x600    256      1   A000 Ahead A, Ahead B (512K)
  1298.      = G 128x48     8x16 1024x768    256/256K  .   A000 Trident TVGA 8900, Zymos
  1299.      = G 128x48     8x16 1024x768    256      .   A000 NCR 77C22 [9]
  1300.  63h = T 132x44     8x8      .     16/64      5   B800 Quadram Ultra VGA
  1301.      = T 132x44     8x8      .     16      .    .  Genoa 6400
  1302.      = T 132x44     8x8      .     16      .    .  Genoa SuperEGA BIOS 3.0+
  1303.      = G    .      .    720x540     16      .    .  MORSE VGA
  1304.      = G    .      .    720x540     16      .    .  Cirrus 510/520 chipset
  1305.      = G 100x42     8x14  800x600    256      .   A000 ATI VGA Wonder,VGA Wonder+
  1306.      = G 100x42     8x14  800x600    256      .   A000 ATI Ultra 8514A,ATI XL
  1307.      = G    .      .    800x600    32K      .   A000 WD90C
  1308.      = G    .      .    800x600    32K      .   A000 Diamond Speedstar 24X
  1309.      = G 128x48     7x16 1024x768    256      1   A000 Ahead B (1MB)
  1310.      = G    .      .   1024x768      2      .    .  Video7 V-RAM VGA
  1311.  64h = T 132x60     8x8      .     16      .    .  Genoa 6400
  1312.      = G    .      .    640x480    64K      .   A000 Cirrus CL-GD 5422/5426
  1313.      = G    .      .    800x600     16      .    .  MORSE VGA
  1314.      = G    .      .    800x600     16      .    .  Cirrus 510/520 chipset
  1315.      = G    .      .    800x600    ???      .    .  SAMPO-Mira VGA
  1316.      = G    .      .   1024x768      4      .    .  Video7 V-RAM VGA
  1317.      = G 128x48     8x16 1024x768    256      .   A000 ATI VGA Wonder Plus,ATI XL
  1318.      = G 160x64     8x16 1280x1024     16/256K  .   A000 WD90C [1]
  1319.      = G 160x64     8x16 1280x1024     16/256K  .   A000 Diamond Speedstar 24X [1]
  1320.  65h = G    .      .    800x600    64K      .   A000 Cirrus CL-GD 5422/5426
  1321.      = G    .      .   1024x768     16      .    .  Video7 V-RAM VGA
  1322.      = G 128x48     8x16 1024x768     16      .   A000 ATI VGA Wonder
  1323.  66h = T  80x50     8x8   640x400     16/256K  .   B800 WD90C
  1324.      = T  80x50     8x8      .     16      .   B800 Diamond Speedstar 24X
  1325.      = G    .      .    640x400    256      .    .  Tatung VGA
  1326.      = G    .      .    640x400    256      .    .  Video7 V-RAM VGA
  1327.      = G    .      .    640x480    32K      .   A000 Cirrus CL-GD 5422/5426
  1328.  67h = T  80x43     8x8   640x344     16/256K  .   B800 WD90C
  1329.      = T  80x43     8x8      .     16      .   B800 Diamond Speedstar 24X
  1330.      = G    .      .    640x480    256      .    .  Video7 V-RAM VGA
  1331.      = G    .      .    800x600    32K      .   A000 Cirrus CL-GD 5422/5426
  1332.      = G 128x48     8x16 1024x768      4      .   A000 ATI VGA Wonder
  1333.      = G 160x64     8x16 1280x1024     16      .   A000 NCR 77C22 [1,9]
  1334.  69h = T 132x50     8x8  1056x400     16/256K  .   B800 WD90C
  1335.      = T 132x50     8x8      .     16      .   B800 Diamond Speedstar 24X
  1336.      = G    .      .    720x540    256      .    .  Video7 V-RAM VGA
  1337.  6Ah = G    .      .    800x600     16      .   A000 VESA standard interface
  1338.      = G 100x75     8x8   800x600     16      .    .  Genoa 6400
  1339.      = G 100x75     8x8   800x600     16      .    .  Diamond Speedstar 24X
  1340.      = G    .      .    800x600     16      .   A000 Ahead A
  1341.      = G 100x75     8x8   800x600     16      1   A000 Ahead B (VESA) (see 71h)
  1342.      = G    .      .    800x600     16      .    .  Zymos Poach, Hi Res 512
  1343.      = G    .      .    800x600     16      .    .  Epson LT-386SX in CRT Mode
  1344.      = G    .      .    800x600     16      .    .  Compuadd 316SL in CRT Mode
  1345.      = G 100x37     8x16  800x600     16/256K  .   A000 Cirrus CL-GD5420/5422/5426
  1346.      = G 100x42     8x14  800x600      .      .   A000 ATI VGA Wonder (undoc)
  1347.      = G    .      .    800x600     16      .    .  Chips&Technologies chipset
  1348.      = G 160x64     8x16 1280x1024 256      .   A000 NCR 77C22 [1,9]
  1349.  6Bh = T 100x37     8x16      .     16      .    .  Genoa 6400
  1350.      = T 100x37     8x16      .      .      .    .  NEL Electronics BIOS
  1351.  6Ch = G  80x30     8x16  640x480     16M      .   A000 Trident 8900CL/BIOS C04
  1352.      = G 100x75     8x8   800x600    256      .    .  Genoa 6400
  1353.      = G 160x60     8x16 1280x960     16/256K  .   A000 WD90C [1]
  1354.      = G 160x60     8x16 1280x960     16/256K  .   A000 Diamond Speedstar 24X [1]
  1355.      = G 160x64     8x16 1280x1024     16/256K  .   A000 Cirrus CL-GD 5422/5426 [1]
  1356.  6Dh = G  80x25     8x14  640x350     64K      .    .  STB Lightspeed ET4000/W32P
  1357.      = G 160x64     8x16 1280x1024 256/256K  .   A000 Cirrus CL-GD 5422/5426 [1]
  1358.  6Eh = G  40x25     8x8   320x200     64K      .   A000 Cirrus CL-GD 5422/5426
  1359.  6Fh = G  40x25     8x8   320x200     16M      .   A000 Cirrus CL-GD 5422/5426
  1360.  70h =    extended mode set (see AX=0070h)    .  Everex Micro Enhancer EGA
  1361.      = T  40x25     8x8      .     16      8   B800 Quadram (CGA double scan)
  1362.      = T  40x25     8x8   (CGA dblscan)      .    .  Genoa SuperEGA BIOS 3.0+
  1363.      = G    .      .    360x480    256      .    .  Cirrus 510/520/5320 chips
  1364.      = G  90x28     8x14  720x392     16      1   A000 Ahead B
  1365.      = G    .      .    800x600     16      .    .  C&T chipset, Cardinal
  1366.      = G    .      .   1024x480    256      .    .  Trident 8900C BIOS C3.0
  1367.  71h = T  80x25     8x8      .     16      8   B800 Quadram (CGA double scan)
  1368.      = T  80x25     8x8   (CGA dblscan)      .    .  Genoa SuperEGA BIOS 3.0+
  1369.      = G    .      .    528x400    256      .    .  Cirrus 510/520 chipset
  1370.      = G  80x30     8x16  640x480     16M      .   A000 Cirrus CL-GD 5422/5426
  1371.      = G 100x35     8x16  800x600     16/64      .   A000 NSI Smart EGA+
  1372.      = G 100x75     8x8   800x600     16      1   A000 Ahead B (same as 6Ah)
  1373.      = G    .      .    960x720     16      .    .  C&T chipset, Cardinal
  1374.      = G    .      .   1024x480    256      .    .  Trident 8900C BIOS C3.0
  1375.  72h = T  80x60     8x8      .     16      .   B800 Quadram Ultra VGA
  1376.      = T  80x60     8x8      .     16      .   B800 Genoa 6400
  1377.      = T  80x60     8x8      .     16      .   B800 Genoa SuperEGA BIOS 3.0+
  1378.      = G    .      .    528x480    256      .    .  Cirrus 510/520 chipset
  1379.      = G  80x25     8x19  640x480     16      1   A000 DOS/V w/ any VGA
  1380.      = G    .      .    640x480    32K      .   A000 ATI
  1381.      = G    .      .    640x480    16M      .   A000 WD90C
  1382.      = G    .      .    640x480    16M      .   A000 Diamond Speedstar 24X
  1383.      = G    .      .   1024x768     16      .    .  C&T chipset, Cardinal
  1384.  73h = G  80x60     8x8   640x480     16      .   A000 Quadram Ultra VGA
  1385.      = G  80x60     8x8   640x480     16      .    .  Genoa 6400
  1386.      = G  80x60     8x8   640x480     16      .    .  Genoa SuperEGA BIOS 3.0+
  1387.      = T  80x25     8x19  640x475     16      1   none DOS/V, emulated in VGA graph
  1388.  74h = T  80x66     8x8      .     16      .   B800 Quadram Ultra VGA
  1389.      = T  80x66     8x8      .     16      .   B800 Genoa 6400
  1390.      = T  80x66     8x8      .     16      .   B800 Genoa SuperEGA BIOS 3.0+
  1391.      = G    .      .    640x400      2      .   B800 Toshiba 3100 AT&T mode
  1392.      = G  80x30     8x16  640x480     32K      .   A000 Trident 8900C/BIOS C03
  1393.      = G 128x48     8x16 1024x768     16      1   A000 Ahead A, Ahead B (512K)
  1394.      = G    .      .   1024x768     64K      .   A000 Cirrus CL-GD 5422/5426 [1]
  1395.  75h = G  80x30     8x16  640x480     64K      .   A000 Trident 8900C/BIOS C03
  1396.      = G  80x66      .    640x528     16???      .   A000 Quadram Ultra VGA
  1397.      = G  80x66      .    640x528     16      .    .  Genoa SuperEGA BIOS 3.0+
  1398.      = G 128x48     8x16 1024x768      4      1   A000 Ahead B
  1399.  76h = T  94x29     8x14      .     16      .   B800 Quadram Ultra VGA
  1400.      = T  94x29     8x14      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1401.      = G 100x75     8x8   800x600     32K      .   A000 Trident 8900C/BIOS C03
  1402.      = G 128x48     8x16 1024x768      2      1   A000 Ahead B
  1403.  77h = G  94x29      .    752x410     16???      .   A000 Quadram Ultra VGA
  1404.      = G  94x29      .    752x410     16      .    .  Genoa SuperEGA BIOS 3.0+
  1405.      = G 100x75     8x8   800x600     64K      .   A000 Trident 8900C/BIOS C03
  1406.  78h = T 100x37     8x16      .     16      .    .  Genoa 6400
  1407.      = T 100x75     8x8      .     16      .   B800 Quadram Ultra VGA
  1408.      = T 100x75     8x8      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1409.      = G    .      .    640x400    256      .    .  STB VGA/EM-16 Plus
  1410.      = G    .      .    640x400    256      .    .  Cardinal, C&T chipset
  1411.      = G    .      .    640x400    256      .    .  Cirrus 5320 chipset
  1412.  79h = G    .      .    640x480    256      .    .  Cardinal, C&T chipset
  1413.      = G 100x75      .    800x600     16???      .   A000 Quadram Ultra VGA
  1414.      = G 100x75     8x8   800x600     16      .    .  Genoa SuperEGA BIOS 3.0+
  1415.      = G 100x75     8x8   800x600     16      .    .  Genoa 6400
  1416.  7Ah = T 114x60     8x8      .     16      .   B800 Quadram Ultra VGA
  1417.      = T 114x60     8x8      .      .      .    .  Genoa SuperEGA BIOS 3.0+
  1418.      = G    .      .    720x540    256      .    .  C&T chipset, Cardinal
  1419.  7Bh = G    .      .    800x600    256      .    .  C&T chipset, Cardinal
  1420.      = G 114x60      .    912x480     16???      .   A000 Quadram Ultra VGA
  1421.      = G    .      .    912x480     16      .    .  Genoa SuperEGA BIOS 3.0+
  1422.  7Ch = G    .      .    512x512     16      .    .  Genoa
  1423.      = G    .      .    800x600    256      .    .  C&T 82C453 chipset
  1424.  7Dh = G  64x32     8x16  512x512    256      .    .  Genoa
  1425.  7Eh =    special mode set (see AX=007Eh)        .  Paradise VGA, AT&T VDC600
  1426.      = G  80x25     8x16  640x400    256      .    .  Genoa 6400
  1427.      = G    .      .   1024x768    256      .    .  C&T 82C453 chipset
  1428.  7Fh =    special function set (see AX=007Fh)    .  Paradise VGA, AT&T VDC600
  1429.      = G 128x48     8x16 1024x768      4      .    .  Genoa 6400
  1430.  82h = T  80x25      .      .    B&W      .    .  AT&T VDC overlay mode [6]
  1431.  83h = T  80x25      .      .      .      .    .  AT&T VDC overlay mode [6]
  1432.  86h = G    .      .    640x200    B&W      .    .  AT&T VDC overlay mode [6]
  1433.  88h = G  90x43     8x8   720x352    mono      .   B000 Hercules + MSHERC.COM
  1434.  C0h = G    .      .    640x400    2/prog palette    .  AT&T VDC overlay mode [6]
  1435.      = G    .      .    640x400    2/prog palette    .  Olivetti Quaderno overlay
  1436.  C4h =    disable output      .      .      .    .  AT&T VDC overlay mode [6]
  1437.  C8h = G  80x50     8x8   640x400      2      .   B800 Olivetti Quaderno overlay
  1438.  D0h = G    .      .    640x400      2      .   B800 DEC VAXmate AT&T mode
  1439. Notes:
  1440. [1] interlaced only
  1441. [2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1442.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1443.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1444.       color) 132x25 character mode.
  1445.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1446.       resident
  1447. [3] early XGA boards support 132-column text but do not have this BIOS mode
  1448. [4] DESQview intercepts calls to change into these two modes (21h is page 0,
  1449.       22h is page 1) even if there is no Hercules graphics board installed
  1450. [5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1451. [6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1452.       40h, or 44h
  1453. [7] BIOS text support is broken in this undocumented mode; scrolling moves only
  1454.       about 1/3 of the screen (and does even that portion incorrectly), while
  1455.       screen clears only clear about 3/4.
  1456. [8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1457.       may choose to use only partially or not at all; thus, not all Oak boards
  1458.       support all "Oak" modes listed here
  1459. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1460.       precluding the use of a monochrome adapter in the same system
  1461. [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
  1462.       v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
  1463.       09/14/90 version
  1464. [11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the
  1465.       installation check for HERKULES.COM is the signature "Herkules" two bytes
  1466.       beyond the INT 10 handler
  1467. [12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into modes
  1468.       21h or 27h; this version of the BIOS also sets the BIOS data area
  1469.       incorrectly for extended text modes, resulting in scrolling after only
  1470.       24 lines (the VMODE.EXE    utility does set the data area correctly)
  1471. [13] The Tandy 1000SL/TL BIOS does not actually support this mode
  1472. Index:    video modes
  1473. Index:    installation check|HERKULES
  1474. --------V-100070-----------------------------
  1475. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1476.     AX = 0070h
  1477.     BL = mode (see #0010)
  1478. Desc:    specify a proprietary display mode on the Everex Micro Enhancer or
  1479.       Viewpoint video adapters
  1480. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1481.  
  1482. (Table 0010)
  1483. Values for Everex video mode:
  1484.      text/ text pixel    pixel    colors disply scrn monitor    adapter
  1485.      grph resol     box  resolution       pages  addr
  1486.  00h = G    .      .    640x480     16      .    .  multisync  EGA,VGA
  1487.  01h = G    .      .    752x410     16      .    .  multisync  EGA,VGA
  1488.  02h = G    .      .    800x600     16      .    .  multisync  EGA,VGA
  1489.  03h = T  80x34      .      .      .      .    .  multisync  EGA,VGA
  1490.  04h = T  80x60      .      .      .      .    .  multisync  EGA,VGA
  1491.  05h = T  94x29      .      .      .      .    .  multisync  EGA only
  1492.  06h = T  94x51      .      .      .      .    .  multisync  EGA only
  1493.  07h = T 100x43     8x14      .     16      .    .  .          VGA only
  1494.  08h = T 100x75     8x8      .     16      .    .  .          VGA only
  1495.  09h = T  80x44      .      .      .      .    .  EGA          EGA only
  1496.  0Ah = T 132x25      .      .      .      .    .  EGA          EGA,VGA
  1497.  0Bh = T 132x44      .      .      .      .    .  EGA          EGA,VGA
  1498.  0Ch = T 132x25      .      .      .      .    .  CGA          EGA only
  1499.  0Dh = T  80x44      .      .      .      .    .  mono          EGA only
  1500.  0Eh = T 132x25      .      .      .      .    .  mono
  1501.  0Fh = T 132x44      .      .      .      .    .  mono
  1502.  10h =    reserved
  1503.  11h = G    .      .   1280x350      4      .    .  .          EGA only
  1504.  12h = G    .      .   1280x600      4      .    .  .          EGA only
  1505.  13h = G    .      .    640x350    256      .    .  .          EGA,EV673
  1506.  14h = G    .      .    640x400    256      .    .  .
  1507.  15h = G    .      .    512x480    256      .    .  .
  1508.  16h = T  80x30     8x16      .    256      .    .  .          VGA only
  1509.  18h = T 100x27     8x16      .     16      .    .  .          VGA only
  1510.  20h = G    .      .   1024x768     16      .    .  .          Everex 629,678
  1511.         .      .      .      .      .    .  .          Everex EV-673
  1512.  21h = T 160x64     8x16 1280x1024     16      .    .  .          1MB VGA only
  1513.  30h = G    .      .    640x480    256      .    .  .          Everex 629,678
  1514.         .      .      .      .      .    .  .          Everex EV-673
  1515.  31h = G    .      .    800x600    256      .    .  .          Everex 629,678
  1516.         .      .      .      .      .    .  .          Everex EV-673
  1517.  32h = G 128x48     8x16 1024x768    256      .    .  .          1MB VGA only
  1518.  40h = T 132x30     8x16      .     16      .    .  .          VGA only
  1519.  50h = T 132x32     8x16      .    mono      .    .  .          VGA only
  1520.  62h = G  40x25     8x8   320x200    32K      .    .  .          Vwpt TC (EV629)
  1521.  70h = G  64x30     8x16  512x480    32K      .    .  .          Viewpoint TC
  1522.  71h = G  80x30     8x16  640x480    32K      .    .  .          Viewpoint TC
  1523.  76h = G  64x30     8x16  512x480    16M      .    .  .          Viewpoint TC
  1524.  77h = G  80x30     8x16  640x480    16M      .    .  .          Viewpoint TC
  1525. Index:    video modes;Everex
  1526. --------V-10007E-----------------------------
  1527. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1528.     AX = 007Eh
  1529.     BX = horizontal dimension of the mode desired
  1530.     CX = vertical dimension of the mode desired
  1531.         (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1532.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1533. Return: BH = 7Eh if successful (Paradise VGA)
  1534.     AL = 7Eh if successful (AT&T VDC600)
  1535. Desc:    specify a display mode by resolution rather than mode number
  1536. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  1537. Index:    video modes;Paradise|video modes;AT&T
  1538. --------V-10007FBH00-------------------------
  1539. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET VGA OPERATION
  1540.     AX = 007Fh
  1541.     BH = 00h
  1542. Return: AL = 7Fh if successful (AT&T VDC600)
  1543.     BH = status (Paradise/Dell)
  1544.         00h invalid function
  1545.         7Fh successful
  1546. SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h
  1547. --------V-10007FBH01-------------------------
  1548. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET NON-VGA OPERATION
  1549.     AX = 007Fh
  1550.     BH = 01h
  1551. Return: AL = 7Fh if successful (AT&T VDC600)
  1552.     BH = status (Paradise/Dell)
  1553.         00h invalid function
  1554.         7Fh successful
  1555. Note:    color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation, monochrome
  1556.       mode 7 will set non-VGA MDA/Hercules operation
  1557. SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=02h
  1558. --------V-10007FBH02-------------------------
  1559. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - QUERY MODE STATUS
  1560.     AX = 007Fh
  1561.     BH = 02h
  1562. Return: AL = 7Fh if successful (AT&T VDC600)
  1563.     BH = status (Paradise/Dell)
  1564.         00h invalid function
  1565.         7Fh successful
  1566.     ---if successful---
  1567.     BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1568.     CH = total video RAM size in 64k byte units
  1569.     CL = video RAM used by the current mode
  1570. SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h
  1571. --------V-10007F-----------------------------
  1572. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  1573.     AX = 007Fh
  1574.     BH = function
  1575.         03h     lock current mode
  1576.         allows current mode (VGA or non-VGA) to survive re-boot
  1577.         04h     enter MDA mode
  1578.         05h     enter CGA mode
  1579.         06h     enter monochrome VGA mode (also switches to video mode 7)
  1580.         07h     enter color VGA mode (also switches to video mode 3)
  1581.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1582.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1583.         BL = value to set in the paradise register
  1584.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1585.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1586.         Return: BL = value of the paradise register
  1587.             BH = 7Fh if successful
  1588.         29h-2Fh ??? (Paradise VGA for Dell, 7/24/91)
  1589. Return: AL = 7Fh if successful (AT&T VDC600)
  1590.     BH = status (Paradise/Dell)
  1591.         00h invalid function
  1592.         7Fh successful
  1593. Desc:    set emulation mode or access proprietary extended data registers
  1594. SeeAlso: AX=007Eh,AH=FF"Oak"
  1595. --------V-10007FBH60-------------------------
  1596. INT 10 - Paradise VGA - ???
  1597.     AX = 007Fh
  1598.     BH = 60h
  1599.     BL = ??? (00h-13h)
  1600.     ???
  1601. Return: BH = status (00h failed or not supported, 7Fh successful)
  1602.     ???
  1603. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1604. --------V-10007FBH61-------------------------
  1605. INT 10 - Paradise VGA - ???
  1606.     AX = 007Fh
  1607.     BH = 61h
  1608.     ES:DI -> buffer for list of ??? (see #0011)
  1609. Return: BH = status (00h failed or not supported, 7Fh successful)
  1610.     ???
  1611. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1612.  
  1613. Format of Paradise VGA list entry:
  1614. Offset    Size    Description    (Table 0011)
  1615.  00h    BYTE    ??? or 00h if end of list
  1616.  01h    BYTE    ???
  1617.  02h    WORD    ???
  1618.  04h    WORD    ???
  1619.  06h    WORD    ???
  1620. --------V-10007FBXA500-----------------------
  1621. INT 10 - Paradise VGA - ???
  1622.     AX = 007Fh
  1623.     BX = A500h
  1624.     ???
  1625. Return: BH = status (00h failed or not supported, 7Fh successful)
  1626.     ???
  1627. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1628. --------V-10007FBHA5-------------------------
  1629. INT 10 - Paradise VGA - ???
  1630.     AX = 007Fh
  1631.     BH = A5h
  1632.     BL = ???
  1633.         bits 3-0: ??? (0-4)
  1634.         bits 5,4: ???
  1635.     ???
  1636. Return: BH = status (00h failed or not supported, 7Fh successful)
  1637.     ???
  1638. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1639. --------V-10007FBHA6-------------------------
  1640. INT 10 - Paradise VGA - ???
  1641.     AX = 007Fh
  1642.     BH = A6h
  1643.     ???
  1644. Return: BH = status (00h failed or not supported, 7Fh successful)
  1645.     ???
  1646. Note:    this function is supported by the 5/14/93 ROM for the Dell 486D
  1647. --------V-1001-------------------------------
  1648. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1649.     AH = 01h
  1650.     CH = cursor start and options (see #0012)
  1651.     CL = bottom scan line containing cursor (bits 0-4)
  1652. Desc:    specify the starting and ending scan lines to be occupied by the
  1653.       hardware cursor in text modes
  1654. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1655.       returns unmapped cursor shape
  1656.     UltraVision scales size to the current font height by assuming 14-line
  1657.       monochrome and 8-line color fonts; this call is not valid if cursor
  1658.       emulation has been disabled
  1659.     applications which wish to change the cursor by programming the
  1660.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1661.       read 0040h:0085h first to determine the current font height
  1662.     on some adapters, setting the end line greater than the number of lines
  1663.       in the font will result in the cursor extending to the top of the
  1664.       next character cell on the right
  1665. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1666.       is not equal to the current video mode
  1667. SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h,#2288
  1668.  
  1669. Bitfields for cursor start and options:
  1670. Bit(s)    Description    (Table 0012)
  1671.  7    should be zero
  1672.  6,5    cursor blink
  1673.     (00=normal, 01=invisible, 10=erratic, 11=slow)
  1674.     (00=normal, other=invisible on EGA/VGA)
  1675.  4-0    topmost scan line containing cursor
  1676. --------V-1002-------------------------------
  1677. INT 10 - VIDEO - SET CURSOR POSITION
  1678.     AH = 02h
  1679.     BH = page number
  1680.         0-3 in modes 2&3
  1681.         0-7 in modes 0&1
  1682.         0 in graphics modes
  1683.     DH = row (00h is top)
  1684.     DL = column (00h is left)
  1685. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
  1686. --------V-1003-------------------------------
  1687. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1688.     AH = 03h
  1689.     BH = page number
  1690.         0-3 in modes 2&3
  1691.         0-7 in modes 0&1
  1692.         0 in graphics modes
  1693. Return: AX = 0000h (Phoenix BIOS)
  1694.     CH = start scan line
  1695.     CL = end scan line
  1696.     DH = row (00h is top)
  1697.     DL = column (00h is left)
  1698. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1699.     many ROM BIOSes incorrectly return the default size for a color display
  1700.       (start 06h, end 07h) when a monochrome display is attached
  1701. SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h
  1702. --------V-1004-------------------------------
  1703. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1704.     AH = 04h
  1705. Return: AH = light pen trigger flag
  1706.         00h not down/triggered
  1707.         01h down/triggered
  1708.         DH,DL = row,column of character light pen is on
  1709.         CH = pixel row (graphics modes 04h-06h)
  1710.         CX = pixel row (graphics modes with >200 rows)
  1711.         BX = pixel column
  1712. Desc:    determine the current position and status of the light pen (if
  1713.       present)
  1714. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1715.       column modes) or 4 (640-column modes)
  1716.     returned row numbers are only accurate to two lines
  1717. --------V-1004------------------------------------
  1718. INT 10 - HUNTER 16 - GET CURSOR ADDRESS
  1719.     AH = 04h
  1720.     BH = page
  1721. Return: DH = row (0..24)
  1722.     DL = column (0..79)
  1723.     CH = cursor pixel Y-address (0..199)
  1724.     CL = cursor pixel X-address (0..639)
  1725. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  1726.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  1727.     pixel coordinates are for the lower left corner of the character cell
  1728.       containing the cursor
  1729. SeeAlso: AH=60h"HUNTER"
  1730. --------V-1005-------------------------------
  1731. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1732.     AH = 05h
  1733.     AL = new page number (00h to number of pages - 1) (see #0009)
  1734. Desc:    specify which of possibly multiple display pages will be visible
  1735. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1736.       to query the current page after making this call
  1737. SeeAlso: AH=0Fh,AH=43h,AH=45h
  1738. --------V-1005-------------------------------
  1739. INT 10 - VIDEO - PCjr, Tandy 1000 - MANIPULATE CRT/CPU PAGE REGISTERS
  1740.     AH = 05h
  1741.     AL = subfunction
  1742.         80h read CRT and CPU page registers
  1743.         Return: BH = CRT page register
  1744.             BL = CPU page register
  1745.         81h set CPU page register
  1746.         BL = CPU page
  1747.         82h set CRT page register
  1748.         BH = CRT page
  1749.         83h set both CPU and CRT page registers
  1750.         BL = CPU page
  1751.         BH = CRT page
  1752. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1753.       memory will be mapped at B800h by the hardware
  1754.     the CRT page determines the start address of the memory used by the
  1755.       video controller
  1756. --------V-1005-------------------------------
  1757. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
  1758.     AH = 05h
  1759.     AL = function
  1760.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1761.         BX = segment of buffer
  1762.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1763.         Return: DX = segment of graphics bitmap buffer
  1764. --------V-1006-------------------------------
  1765. INT 10 - VIDEO - SCROLL UP WINDOW
  1766.     AH = 06h
  1767.     AL = number of lines by which to scroll up (00h = clear entire window)
  1768.     BH = attribute used to write blank lines at bottom of window
  1769.     CH,CL = row,column of window's upper left corner
  1770.     DH,DL = row,column of window's lower right corner
  1771. Note:    affects only the currently active page (see AH=05h)
  1772. BUGS:    some implementations (including the original IBM PC) have a bug which
  1773.       destroys BP
  1774.     the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
  1775.       scrolling in an SVGA mode (800x600 or higher)
  1776. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  1777. --------V-1007-------------------------------
  1778. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1779.     AH = 07h
  1780.     AL = number of lines by which to scroll down (00h=clear entire window)
  1781.     BH = attribute used to write blank lines at top of window
  1782.     CH,CL = row,column of window's upper left corner
  1783.     DH,DL = row,column of window's lower right corner
  1784. Note:    affects only the currently active page (see AH=05h)
  1785. BUGS:    some implementations (including the original IBM PC) have a bug which
  1786.       destroys BP
  1787.     the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
  1788.       scrolling in an SVGA mode (800x600 or higher)
  1789. SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
  1790. --------V-1008-------------------------------
  1791. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1792.     AH = 08h
  1793.     BH = page number (00h to number of pages - 1) (see #0009)
  1794. Return: AH = charater's attribute (see #0013)
  1795.     AL = character
  1796. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1797.       underlined
  1798.     the blink bit may be reprogrammed to enable intense background colors
  1799.       using AX=1003h or by programming the CRT controller
  1800.     the foreground intensity bit (3) can be programmed to switch between
  1801.       character sets A and B on EGA and VGA cards, thus enabling 512
  1802.       simultaneous characters on screen.  In this case the bit's usual
  1803.       function (intensity) is regularly turned off.
  1804. SeeAlso: AH=09h,AX=1003h,AX=1103h,AH=12h/BL=37h,AX=5001h
  1805.  
  1806. Bitfields for character's display attribute:
  1807. Bit(s)    Description    (Table 0013)
  1808.  7    foreground blink or (alternate) background bright (see also AX=1003h)
  1809.  6-4    background color (see #0014)
  1810.  3    foreground bright or (alternate) alternate character set (see AX=1103h)
  1811.  2-0    foreground color (see #0014)
  1812. SeeAlso: #0025
  1813.  
  1814. (Table 0014)
  1815. Values for character color:
  1816.     Normal        Bright
  1817.  000b    black        dark gray
  1818.  001b    blue        light blue
  1819.  010b    green        light green
  1820.  011b    cyan        light cyan
  1821.  100b    red        light red
  1822.  101b    magenta        light magenta
  1823.  110b    brown        yellow
  1824.  111b    light gray    white
  1825. --------V-1009-------------------------------
  1826. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1827.     AH = 09h
  1828.     AL = character to display
  1829.     BH = page number (00h to number of pages - 1) (see #0009)
  1830.     BL = attribute (text mode) or color (graphics mode)
  1831.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1832.     CX = number of times to write character
  1833. Notes:    all characters are displayed, including CR, LF, and BS
  1834.     replication count in CX may produce an unpredictable result in graphics
  1835.       modes if it is greater than the number of positions remaining in the
  1836.       current row
  1837. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
  1838. --------V-100A-------------------------------
  1839. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1840.     AH = 0Ah
  1841.     AL = character to display
  1842.     BH = page number (00h to number of pages - 1) (see #0009)
  1843.     BL = attribute (PCjr, Tandy 1000 only) or color (graphics mode)
  1844.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1845.     CX = number of times to write character
  1846. Notes:    all characters are displayed, including CR, LF, and BS
  1847.     replication count in CX may produce an unpredictable result in graphics
  1848.       modes if it is greater than the number of positions remaining in the
  1849.       current row
  1850. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1851. --------V-100B--BH00-------------------------
  1852. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1853.     AH = 0Bh
  1854.     BH = 00h
  1855.     BL = background/border color (border only in text modes)
  1856. SeeAlso: AH=0Bh/BH=01h
  1857. --------V-100B--BH01-------------------------
  1858. INT 10 - VIDEO - SET PALETTE
  1859.     AH = 0BH
  1860.     BH = 01h
  1861.     BL = palette ID
  1862.         00h background, green, red, and brown/yellow
  1863.         01h background, cyan, magenta, and white
  1864. SeeAlso: AH=0Bh/BH=00h
  1865. --------V-100C-------------------------------
  1866. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1867.     AH = 0Ch
  1868.     BH = page number
  1869.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1870.     CX = column
  1871.     DX = row
  1872. Desc:    set a single pixel on the display in graphics modes
  1873. Notes:    valid only in graphics modes
  1874.     BH is ignored if the current video mode supports only one page
  1875. SeeAlso: AH=0Dh,AH=46h
  1876. --------V-100D-------------------------------
  1877. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1878.     AH = 0Dh
  1879.     BH = page number
  1880.     CX = column
  1881.     DX = row
  1882. Return: AL = pixel color
  1883. Desc:    determine the current color of the specified pixel in grahics modes
  1884. Notes:    valid only in graphics modes
  1885.     BH is ignored if the current video mode supports only one page
  1886. SeeAlso: AH=0Ch,AH=47h
  1887. --------V-100E-------------------------------
  1888. INT 10 - VIDEO - TELETYPE OUTPUT
  1889.     AH = 0Eh
  1890.     AL = character to write
  1891.     BH = page number
  1892.     BL = foreground color (graphics modes only)
  1893. Desc:    display a character on the screen, advancing the cursor and scrolling
  1894.       the screen as necessary
  1895. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1896.       and do the expected things
  1897.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1898.       the current active page
  1899. SeeAlso: AH=02h,AH=0Ah
  1900. --------V-100F-------------------------------
  1901. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1902.     AH = 0Fh
  1903. Return: AH = number of character columns
  1904.     AL = display mode (see #0009 at AH=00h)
  1905.     BH = active page (see AH=05h)
  1906. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1907.       also have bit 7 set
  1908.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1909.       (monochrome) in all extended-row text modes
  1910. SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
  1911. --------V-100F56BX4756-----------------------
  1912. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1913.     AX = 0F56h
  1914.     BX = 4756h
  1915.     CX = 4944h
  1916.     DL = function
  1917.         01h installation check
  1918.         Return: AX = 5649h
  1919.             BX = 4443h
  1920.             CX = 5647h
  1921.             DH = 01h
  1922.         02h get first video mode's parameters
  1923.         Return: AX = BIOS mode number
  1924.             BX = width in pixels
  1925.             CX = height in pixels
  1926.             DX = number of colors
  1927.         03h get next video mode's parameters
  1928.         Return: as for DL=02h
  1929.         04h display line???
  1930.         ES:DI -> record (see #0015)
  1931.         ???
  1932.         Return: ???
  1933. Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1934. Note:    the use of TSR display drivers was discontinued after v2.20
  1935. Index:    installation check;VUIMAGE display driver
  1936.  
  1937. Format of record for VUIMAGE Function 04h:
  1938. Offset    Size    Description    (Table 0015)
  1939.  00h    WORD    row number
  1940.  02h    WORD    starting column???
  1941.  04h    WORD    ending column???
  1942.     ???
  1943. --------V-100F--SIF123-----------------------
  1944. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  1945.     AH = 0Fh
  1946.     SI = F123h
  1947.     DI = 321Fh
  1948. Return: AH = number of character columns
  1949.     AL = display mode (see #0009 at AH=00h)
  1950.     BH = active page (see AH=05h)
  1951.     SI = DI = F345h if installed
  1952. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1953.       also have bit 7 set
  1954.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1955.       (monochrome) in all extended-row text modes
  1956. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  1957. --------V-1010-------------------------------
  1958. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1959.     AH = 10h
  1960.     CH,CL = row,column of upper left corner of window
  1961.     DH,DL = row,column of lower right corner of window
  1962. Return: AL = status
  1963.         00h successful
  1964.         01h failed
  1965.     AH destroyed
  1966. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1967. Note:    when a window has been set, all output via AH=0Eh is restricted to
  1968.       the specified window
  1969. SeeAlso: AH=11h"Window",AH=12h"Window"
  1970. --------V-1010-------------------------------
  1971. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  1972.     AH = 10h
  1973.     AL = speed
  1974.         00h fast
  1975.         01h slow (scrolling only moves characters during vertical retrace)
  1976. Return: AH = previous speed
  1977. --------V-101000-----------------------------
  1978. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,Tandy,EGA,MCGA,VGA)
  1979.     AX = 1000h
  1980.     BL = palette register number (00h-0Fh)
  1981.        = attribute register number (undocumented) (see #0016)
  1982.     BH = color or attribute register value
  1983. Notes:    on MCGA, only BX = 0712h is supported
  1984.     under UltraVision, the palette locking status (see AX=CD01h)
  1985.       determines the outcome
  1986. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1987.  
  1988. (Table 0016)
  1989. Values for attribute register number:
  1990.  10h    attribute mode control register (should let BIOS control this)
  1991.  11h    overscan color register (see also AX=1001h)
  1992.  12h    color plane enable register (bits 3-0 enable corresponding
  1993.       text attribute bit)
  1994.  13h    horizontal PEL panning register
  1995.  14h    color select register
  1996. --------V-101001-----------------------------
  1997. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,Tandy,EGA,VGA)
  1998.     AX = 1001h
  1999.     BH = border color (00h-3Fh)
  2000. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  2001.       and places the border color at offset 11h of the palette table
  2002.       rather than offset 10h
  2003. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  2004.       determines the outcome
  2005. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  2006. --------V-101002-----------------------------
  2007. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,Tandy,EGA,VGA)
  2008.     AX = 1002h
  2009.     ES:DX -> palette register list
  2010. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  2011.       determines the outcome
  2012. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  2013.  
  2014. Format of palette register list:
  2015. Offset    Size    Description    (Table 0017)
  2016.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  2017.  10h    BYTE    border color
  2018. --------V-101003-----------------------------
  2019. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  2020.     AX = 1003h
  2021.     BL = new state
  2022.         00h background intensity enabled
  2023.         01h blink enabled
  2024.     BH = 00h to avoid problems on some adapters
  2025. Notes:    although there is no function to get the current status on adapters
  2026.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  2027.       VGA, use AH=1Bh and check offset 2Dh of the returned data (see #0037)
  2028.     when configured for a monochrome display, the Boca Research Multi-EGA
  2029.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  2030.     this call is reported to be "Get Cursor Position" on the Tandy
  2031.       1000SL/TL
  2032. SeeAlso: AH=08h,AH=1Bh
  2033. --------V-101007-----------------------------
  2034. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  2035.     AX = 1007h
  2036.     BL = palette or attribute (undoc) register number (see #0016)
  2037. Return: BH = palette or attribute register value
  2038. Note:    UltraVision v2+ supports this function even on color EGA systems in
  2039.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  2040.       registers will cause incorrect results because the EGA registers are
  2041.       write-only.  To guard against older versions or unsupported video
  2042.       modes, programs which expect to use this function on EGA systems
  2043.       should set BH to FFh on entry.
  2044. SeeAlso: AX=1000h,AX=1009h
  2045. --------V-101008-----------------------------
  2046. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  2047.     AX = 1008h
  2048. Return: BH = border color (00h-3Fh)
  2049. Note:    (see AX=1007h)
  2050. SeeAlso: AX=1001h
  2051. --------V-101009-----------------------------
  2052. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  2053.     AX = 1009h
  2054.     ES:DX -> 17-byte buffer for palette register list (see #0017)
  2055. Note:    UltraVision v2+ supports this function even on color EGA systems in
  2056.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  2057.       registers will cause incorrect results because the EGA registers are
  2058.       write-only.  To guard against older versions or unsupported video
  2059.       modes, programs which expect to use this function on EGA systems
  2060.       should set the ES:DX buffer to FFh before calling.
  2061. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  2062. --------V-101010-----------------------------
  2063. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  2064.     AX = 1010h
  2065.     BX = register number
  2066.     CH = new value for green (0-63)
  2067.     CL = new value for blue (0-63)
  2068.     DH = new value for red (0-63)
  2069. SeeAlso: AX=1012h,AX=1015h
  2070. --------V-101012-----------------------------
  2071. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  2072.     AX = 1012h
  2073.     BX = starting color register
  2074.     CX = number of registers to set
  2075.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  2076.          byte each of red, green and blue (0-63)
  2077. SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h
  2078. --------V-101013-----------------------------
  2079. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  2080.     AX = 1013h
  2081.     BL = subfunction
  2082.         00h select paging mode
  2083.         BH = 00h select 4 blocks of 64
  2084.         BH = 01h select 16 blocks of 16
  2085.         01h select page
  2086.         BH = page number (00h to 03h) or (00h to 0Fh)
  2087. Note:    this function is not valid in mode 13h
  2088. SeeAlso: AX=101Ah
  2089. --------V-101015-----------------------------
  2090. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  2091.     AX = 1015h
  2092.     BL = palette register number
  2093. Return: DH = red value
  2094.     CH = green value
  2095.     CL = blue value
  2096. SeeAlso: AX=1010h,AX=1017h
  2097. --------V-101017-----------------------------
  2098. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  2099.     AX = 1017h
  2100.     BX = starting palette register
  2101.     CX = number of palette registers to read
  2102.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  2103. Return: buffer filled with CX red, green and blue triples
  2104. SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h
  2105. --------V-101018-----------------------------
  2106. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  2107.     AX = 1018h
  2108.     BL = new PEL value
  2109. SeeAlso: AX=1019h
  2110. --------V-101019-----------------------------
  2111. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  2112.     AX = 1019h
  2113. Return: BL = value read
  2114. SeeAlso: AX=1018h
  2115. --------V-10101A-----------------------------
  2116. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  2117.     AX = 101Ah
  2118. Return: BL = paging mode
  2119.         00h four pages of 64
  2120.         01h sixteen pages of 16
  2121.     BH = current page
  2122. SeeAlso: AX=1013h
  2123. --------V-10101B-----------------------------
  2124. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  2125.     AX = 101Bh
  2126.     BX = starting palette register
  2127.     CX = number of registers to convert
  2128. Desc:    convert the RGB values of one or more palette registers such that the
  2129.       resulting values are grays with the same intensities as the original
  2130.       colors
  2131. SeeAlso: AH=12h/BL=33h
  2132. --------V-1010E0-----------------------------
  2133. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  2134.     AX = 10E0h
  2135.     BL = video mode (see also #0009 at AH=00h)
  2136.         2Eh = 640x480
  2137. Return: ???
  2138. SeeAlso: AH=00h,AX=10F0h
  2139. --------V-1010F0-----------------------------
  2140. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  2141.     AX = 10F0h
  2142.     BL = video mode (see also #0009 at AH=00h)
  2143.         13h = 320x200x32K
  2144.         2Dh = 640x350x32K
  2145.         2Eh = 640x480x32K
  2146.         2Fh = 640x400x32K
  2147.         30h = 800x600x32K
  2148.         3Eh = 640x480x16M (Genoa 7900)
  2149.         FFh Tseng 24-bit color mode
  2150.         BH = mode
  2151.             2Dh = 640x480
  2152.             2Eh = 640x480x16M
  2153.             2Fh = 640x400
  2154.             30h = 800x600
  2155.             38h = 1024x768??? (Tseng ET4000/W32i)
  2156. Return: AL = 10h if supported
  2157.     AH = status
  2158.         00h if successful
  2159.         other on error
  2160. Desc:    switch the display into a graphics mode with 15 or more bits per pixel
  2161. Note:    the Tseng HiColor BIOS extensions are supported by:
  2162.       Diamond Computer Systems    SpeedStar HiColor VGA
  2163.       Everex Systems        HC VGA
  2164.       Focus Information Systems    2theMax 4000
  2165.       Cardinal Technologies        VGA732
  2166.       Orchid ProDesigner IIs    Genoa 7900
  2167. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  2168. Index:    video modes;Tseng Hi-Color
  2169. --------V-1010F1-----------------------------
  2170. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  2171.     AX = 10F1h
  2172. Return: AL = 10h if supported
  2173.     BL = type of digital/analog converter (see #0018)
  2174. Desc:    determine which type of digital-to-analog converter is installed on the
  2175.       display board
  2176. SeeAlso: AX=10F0h,AX=10F2h
  2177.  
  2178. (Table 0018)
  2179. Values for type of DAC:
  2180.  00h normal VGA DAC
  2181.  01h Sierra SC1148x HiColor DAC
  2182.  ---Diamond SpeedStar 24---
  2183.  02h new Sierra SS24 DAC (24-bit)
  2184.  ---generic Tseng BIOS v8+ ---
  2185.  02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
  2186.  03h ATT20c490/1/2 (15/16/24-bit)
  2187.  04h AcuMos ADAC1 (15/16/24-bit)
  2188.  05h unknown 15/16/24-bit DAC
  2189.  06h Cirrus Internal 15/16/24-bit (CL-GD54xx series adapters)
  2190.  07h Diamond SS2410 (15/24-bit)
  2191.  08h unknown 15/16/24-bit DAC
  2192.  09h unknown 15/16/24-bit DAC
  2193.  else other HiColor DAC
  2194. --------V-1010F2-----------------------------
  2195. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF HiColor MODE/SET HiColor MODE
  2196.     AX = 10F2h
  2197.     BL = function
  2198.         00h get current HiColor mode
  2199.         01h set 15-bit HiColor mode
  2200.         02h set 16-bit HiColor mode
  2201. Return: AX = 0010h if supported
  2202.     BL = video mode type
  2203.         00h not in HiColor mode
  2204.         01h 15-bit RGB mode
  2205.         02h 16-bit RGB mode
  2206.         03h 24-bit RGB mode
  2207. Desc:    determine whether the display is in a graphics mode with 15 or more
  2208.       bits per pixel color resolution
  2209. Note:    set (BL=01h/02h) only works if already in a HiColor mode
  2210. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  2211. --------V-1011-------------------------------
  2212. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  2213.     AH = 11h
  2214. Return: CH,CL = row,column of upper left corner
  2215.     DH,DL = row,column of lower right corner
  2216. Desc:    determine the portion of the display to which output is restricted
  2217. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2218. SeeAlso: AH=10h"Window",AH=12h"Window"
  2219. --------V-1011-------------------------------
  2220. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  2221.     AH = 11h
  2222.     The following functions will cause a mode set, completely resetting
  2223.     the video environment, but without clearing the video buffer
  2224.     AL = 00h, 10h: load user-specified patterns
  2225.         ES:BP -> user table
  2226.         CX      = count of patterns to store
  2227.         DX      = character offset into map 2 block
  2228.         BL      = block to load in map 2
  2229.         BH      = number of bytes per character pattern
  2230.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  2231.         BL      = block to load
  2232.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  2233.         BL      = block to load
  2234.     AL = 03h: set block specifier (allows dual character sets on screen)
  2235.         BL      = block specifier (see #0019)
  2236.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  2237.         BL    = block to load
  2238. Notes:    The routines called with AL=1xh are designed to be called only
  2239.       immediately after a mode set and are similar to the routines called
  2240.       with AL=0xh, except that:
  2241.           Page 0 must be active.
  2242.           Bytes/character is recalculated.
  2243.           Max character rows is recalculated.
  2244.           CRT buffer length is recalculated.
  2245.           CRTC registers are reprogrammed as follows:
  2246.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  2247.              R0A = bytes/char-2 ; cursor start
  2248.              R0B = 0        ; cursor end
  2249.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  2250.              R14 = bytes/char    ; underline loc
  2251.                (*** BUG: should be 1 less ***)
  2252.     the current block specifiers may be determined with INT 10/AH=1Bh,
  2253.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  2254.       (see AH=1Bh,#0037)
  2255. SeeAlso: AH=1Bh,AX=CD10h
  2256.  
  2257. Bitfields for block specifier:
  2258. Bit(s)    Description    (Table 0019)
  2259. ---EGA/MCGA---
  2260.  0,1    block selected by characters with attribute bit 3 clear
  2261.  2,3    block selected by characters with attribute bit 3 set
  2262. ---VGA---
  2263.  0,1,4    block selected by characters with attribute bit 3 clear
  2264.  2,3,5    block selected by characters with attribute bit 3 set
  2265. --------V-1011-------------------------------
  2266. INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS
  2267.     AH = 11h
  2268.     AL = 07h load user-specified paterns and recalculate mode parms
  2269.          parameters are the same as for AL = 10h
  2270.     AL = 08h load monochrome patterns (8x14) and recalculate mode parms
  2271.          parameters are the same as for AL = 11h
  2272.     AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms
  2273.          parameters are the same as for AL = 12h
  2274.     AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms
  2275.          parameters are the same as for AL = 14h
  2276. Note:    these functions should only be called under the same conditions as
  2277.       AL=1xh (see entry above)
  2278. SeeAlso: AH=11h
  2279. --------V-10110F-----------------------------
  2280. INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS
  2281.     AX = 110Fh
  2282.     ES:BP -> user table for INT 1F
  2283. Note:    this function is meant to be called immediately after a mode set;
  2284.       results are unpredictable at other times
  2285. SeeAlso: AX=1110h,AX=1111h,AX=1112h,AX=1120h
  2286. --------V-101110-----------------------------
  2287. INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS
  2288.     AX = 1110h
  2289.     ES:BP -> user table
  2290.     CX = bytes per character
  2291.     BL = row specifier
  2292.         00h user set
  2293.         DL = number of rows
  2294.         01h 14 rows
  2295.         02h 25 rows
  2296.         03h 43 rows
  2297. Note:    this function is meant to be called immediately after a mode set;
  2298.       results are unpredictable at other times
  2299. SeeAlso: AX=110Fh,AX=1112h,AX=1121h
  2300. --------V-101111-----------------------------
  2301. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS
  2302.     AX = 1111h
  2303.     BL = row specifier (see AX=1121h)
  2304. Note:    this function is meant to be called immediately after a mode set;
  2305.       results are unpredictable at other times
  2306. SeeAlso: AX=110Fh,AX=1110h,AX=1122h
  2307. --------V-101112-----------------------------
  2308. INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS
  2309.     AX = 1112h
  2310.     BL = row specifier (see AX=1121h)
  2311. Note:    this function is meant to be called immediately after a mode set;
  2312.       results are unpredictable at other times
  2313. SeeAlso: AX=110Fh,AX=1110h,AX=1111h,AX=1123h
  2314. --------V-101120-----------------------------
  2315. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
  2316.     AX = 1120h
  2317.     ES:BP -> user table for INT 1F
  2318. Note:    this function is meant to be called immediately after a mode set;
  2319.       results are unpredictable at other times
  2320. SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1125h,INT 1F,INT 43
  2321. --------V-101121-----------------------------
  2322. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
  2323.     AX = 1121h
  2324.     ES:BP -> user table
  2325.     CX = bytes per character
  2326.     BL = row specifier
  2327.         00h user set
  2328.         DL = number of rows
  2329.         01h 14 rows
  2330.         02h 25 rows
  2331.         03h 43 rows
  2332. Note:    this function is meant to be called immediately after a mode set;
  2333.       results are unpredictable at other times
  2334. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2335. --------V-101122-----------------------------
  2336. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
  2337.     AX = 1122h
  2338.     BL = row specifier (see AX=1121h)
  2339. Notes:    this function is meant to be called immediately after a mode set;
  2340.       results are unpredictable at other times
  2341.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2342. SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  2343. --------V-101123-----------------------------
  2344. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
  2345.     AX = 1123h
  2346.     BL = row specifier (see AX=1121h)
  2347. Notes:    this function is meant to be called immediately after a mode set;
  2348.       results are unpredictable at other times
  2349.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2350. SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h,INT 1F,INT 43
  2351. --------V-101124-----------------------------
  2352. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
  2353.     AX = 1124h
  2354.     BL = row specifier (see AX=1121h)
  2355. Notes:    this function is meant to be called immediately after a mode set;
  2356.       results are unpredictable at other times
  2357.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2358. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h,INT 1F,INT 43
  2359. --------V-101129-----------------------------
  2360. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
  2361.     AX = 1129h
  2362.     BL = row specifier (see AX=1121h)
  2363. Notes:    this function is meant to be called immediately after a mode set;
  2364.       results are unpredictable at other times
  2365.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  2366. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F, INT 43
  2367. --------V-101130-----------------------------
  2368. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  2369.     AX = 1130h
  2370.     BH = pointer specifier
  2371.         00h INT 1Fh pointer
  2372.         01h INT 43h pointer
  2373.         02h ROM 8x14 character font pointer
  2374.         03h ROM 8x8 double dot font pointer
  2375.         04h ROM 8x8 double dot font (high 128 characters)
  2376.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  2377.         06h ROM 8x16 font (MCGA, VGA)
  2378.         07h ROM alternate 9x16 font (VGA only) (see #0020)
  2379.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  2380.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  2381. Return: ES:BP = specified pointer
  2382.     CX    = bytes/character of on-screen font (not the requested font!)
  2383.     DL    = highest character row on screen
  2384. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  2385.       8xN font at ES:BP+256N
  2386. BUG:    the IBM EGA and some other EGA cards return in DL the number of rows on
  2387.       screen rather than the highest row number (which is one less).
  2388. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  2389.  
  2390. Format of alternate font table [array]:
  2391. Offset    Size    Description    (Table 0020)
  2392.  00h    BYTE    character to be replaced (00h = end of table)
  2393.  01h  N BYTEs    graphics data for character, one byte per scan line
  2394. --------V-101130BX4D4F-----------------------
  2395. INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
  2396.     AX = 1130h
  2397.     BX = 4D4Fh
  2398. Return: CX = 4F4Dh if installed
  2399.         ES:BP -> M10_SCR INT 10 handler
  2400. Program: M10_SCR is a shareware extended text mode and font driver by
  2401.       I.V. Morozov
  2402. SeeAlso: INT 16/AX=4D4Fh
  2403. --------V-1012-------------------------------
  2404. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  2405.     AH = 12h
  2406. Return: BH = attribute to use on blanked lines when scrolling
  2407. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  2408. SeeAlso: AH=11h"Window",AH=12h"Window"
  2409. --------V-1012--BL10-------------------------
  2410. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  2411.     AH = 12h
  2412.     BL = 10h
  2413. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  2414.          01h mono mode in effect (I/O port 3Bxh)
  2415.     BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
  2416.     CH = feature connector bits (see #0021)
  2417.     CL = switch settings (see #0022,#0023)
  2418. Note:    one possible check for the presence of an EGA or later display card
  2419.       is to call this function with BH=FFh; if not present, BH will be
  2420.       unchanged on return
  2421.  
  2422. Bitfields for feature connector bits:
  2423. Bit(s)    Description    (Table 0021)
  2424.  0    FEAT 1 line, state 2
  2425.  1    FEAT 0 line, state 2
  2426.  2    FEAT 1 line, state 1
  2427.  3    FEAT 0 line, state 1
  2428.  4-7    unused (0)
  2429.  
  2430. Bitfields for switch settings:
  2431. Bit(s)    Description    (Table 0022)
  2432.  0    switch 1 OFF
  2433.  1    switch 2 OFF
  2434.  2    switch 3 OFF
  2435.  3    switch 4 OFF
  2436.  4-7    unused
  2437.  
  2438. (Table 0023)
  2439. Values for switch settings on original EGA/VGA:
  2440.  00h        primary MDA/HGC,    secondary EGA+ 40x25
  2441.  01h-03h    primary MDA/HGC,    secondary EGA+ 80x25
  2442.  04h        primary CGA 40x25,    secondary EGA+ 80x25 mono
  2443.  05h        primary CGA 80x25,    secondary EGA+ 80x25 mono
  2444.  06h        primary EGA+ 40x25,    secondary MDA/HGC (optional)
  2445.  07h-09h    primary EGA+ 80x25,    secondary MDA/HGC (optional)
  2446.  0Ah        primary EGA+ 80x25 mono,secondary CGA 40x25 (optional)
  2447.  0Bh        primary EGA+ 80x25 mono,secondary CGA 80x25 (optional)
  2448. --------V-1012--BL11-------------------------
  2449. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO
  2450.     AH = 12h
  2451.     BL = 11h
  2452. Return: AL = 12h if function supported
  2453.         ES:BP -> BIOS info structure (see #0024)
  2454. SeeAlso: AH=12h/BL=12h"TRIDENT"
  2455.  
  2456. Format of Trident BIOS Info structure:
  2457. Offset    Size     Description    (Table 0024)
  2458.  00h    BYTE     ??? (=0)
  2459.  01h    BYTE     OEM Code (00h for original Trident)
  2460.  02h    WORD     ID??? (1073h for 8800BR, 1074 for 8800CS)
  2461.  04h  8 BYTEs     BIOS date ('mm/dd/yy')
  2462.  0Ch    WORD     ???
  2463.  0Eh  8 BYTEs     BIOS Version (' C3-128 ', ' C3-129 ')
  2464. --------V-1012--BL12-------------------------
  2465. INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE
  2466.     AH = 12h
  2467.     BL = 12h
  2468. Return: AL = 12h if function supported
  2469.         AH = number of 256K banks of RAM installed
  2470. SeeAlso: AH=12h/BL=11h"TRIDENT"
  2471. --------V-1012--BL20-------------------------
  2472. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  2473.     AH = 12h
  2474.     BL = 20h  select alternate print screen routine
  2475. Desc:    installs a PrtSc routine from the video card's BIOS to replace the
  2476.       default PrtSc handler from the ROM BIOS, which usually does not
  2477.       understand screen heights other than 25 lines
  2478. Note:    some adapters disable print-screen instead of enhancing it
  2479. SeeAlso: INT 05
  2480. --------V-1012--BL2E-------------------------
  2481. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2482.     AH = 12h
  2483.     BL = 2Eh
  2484. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2485.       crash the system on this function
  2486. --------V-1012--BL30-------------------------
  2487. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  2488.     AH = 12h
  2489.     BL = 30h
  2490.     AL = vertical resolution
  2491.          00h 200 scan lines
  2492.          01h 350 scan lines
  2493.          02h 400 scan lines
  2494. Return: AL = 12h if function supported
  2495. Desc:    specify the number of scan lines used to display text modes
  2496. Note:    the specified resolution will take effect on the next mode set
  2497. SeeAlso: AH=00h
  2498. --------V-1012--BL31-------------------------
  2499. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  2500.     AH = 12h
  2501.     BL = 31h
  2502.     AL = new state
  2503.         00h enable default palette loading
  2504.         01h disable default palette loading
  2505. Return: AL = 12h if function supported
  2506. Desc:    specify whether a default palette should be loaded when the display
  2507.       mode is set
  2508. SeeAlso: AH=00h
  2509. --------V-1012--BL32-------------------------
  2510. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  2511.     AH = 12h
  2512.     BL = 32h
  2513.     AL = new state
  2514.         00h enable video addressing
  2515.         01h disable video addressing
  2516. Return: AL = 12h if function supported
  2517. Desc:    specify whether the CPU should have access to video memory and the
  2518.       display adapters I/O registers
  2519. --------V-1012--BL33-------------------------
  2520. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  2521.     AH = 12h
  2522.     BL = 33h
  2523.     AL = new state
  2524.         00h enable gray scale summing
  2525.         01h disable gray scale summing
  2526. Return: AL = 12h if function supported
  2527. Desc:    specify whether or not colors should be converted to gray scale when
  2528.       palette or color registers are loaded
  2529. SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
  2530. --------V-1012--BL34-------------------------
  2531. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  2532.     AH = 12h
  2533.     BL = 34h
  2534.     AL = new state
  2535.         00h enable alphanumeric cursor emulation
  2536.         01h disable alphanumeric cursor emulation
  2537. Return: AL = 12h if function supported
  2538. Desc:    specify whether the BIOS should automatically remap cursor start/end
  2539.       according to the current character height in text modes
  2540. SeeAlso: AH=01h,AH=03h
  2541. --------V-1012--BL35-------------------------
  2542. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  2543.     AH = 12h
  2544.     BL = 35h
  2545.     AL = subfunction
  2546.         00h initial adapter video off
  2547.         01h initial planar video on
  2548.         02h switch active video off
  2549.         03h switch inactive video on
  2550.         80h *UNDOCUMENTED* set system board video active flag
  2551.     ES:DX -> buffer for 128 byte save area (if AL = 00h-03h)
  2552. Return: AL = 12h if function supported
  2553. Desc:    switch between two video adapters which may otherwise have address
  2554.       conflicts
  2555. --------V-1012--BL36-------------------------
  2556. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  2557.     AH = 12h
  2558.     BL = 36h
  2559.     AL = new state
  2560.         00h enable refresh
  2561.         01h disable refresh
  2562. Return: AL = 12h if function supported
  2563. Desc:    specify whether the contents of video memory should be displayed on
  2564.       the screen; disabling refresh effectively blanks the screen
  2565. SeeAlso: AX=BF05h
  2566. --------V-1012--BL37-------------------------
  2567. INT 10 - VIDEO - XGA - MAINFRAME INTERACTIVE SUPPORT
  2568.     AH = 12h
  2569.     BL = 37h
  2570.     AL = text attribute type (00h normal VGA, 01h mainframe type)
  2571. Return: AL = 12h if supported
  2572. SeeAlso: #0025,AH=08h
  2573.  
  2574. Bitfields for XGA mainframe type character attributes:
  2575. Bit(s)    Description    (Table 0025)
  2576.  7    blink double rate (75% ON time) or use color 8 as background
  2577.     (see AX=1003h)
  2578.  6    reverse video
  2579.  5    underlined
  2580.  4    left-most and right-most dots of underline area inverted
  2581.  3    foreground intensity/character font select
  2582.  2-0    foreground color
  2583. SeeAlso: #0013,#0033
  2584. --------V-1012--BL53-------------------------
  2585. INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
  2586.     AH = 12h
  2587.     BL = 53h
  2588. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2589.       crash the system on this function
  2590. --------V-1012--BL57-------------------------
  2591. INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
  2592.     AH = 12h
  2593.     BL = 57h
  2594. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2595.       crash the system on this function
  2596. --------V-1012--BH55-------------------------
  2597. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  2598.     AH = 12h
  2599.     BH = 55h
  2600.     BL = subfunction
  2601.         00h disable enhanced features
  2602.         01h enable enhanced features
  2603.         02h get status
  2604.         Return: AL = status flags (see #0026)
  2605.         03h disable register trapping (CGA emulation)
  2606.         04h enable register trapping
  2607.         05h program video mode
  2608.         ES:BP -> video mode table (see #0027)
  2609.         06h get mode table
  2610.         AL = video mode
  2611.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  2612.             BP = FFFFh on error
  2613. SeeAlso: AH=FFh"Oak"
  2614.  
  2615. Bitfields for status flags:
  2616. Bit(s)    Description    (Table 0026)
  2617.  3    set if enhanced features enabled
  2618.  7-5    monitor type
  2619.     000 PS/2 mono
  2620.     001 PS/2 color
  2621.     010 multi-sync
  2622.     011 Taxan 650 25kHz
  2623.     100 RGB
  2624.     101 mono
  2625.     110 EGA
  2626.     111 Compaq internal
  2627.  
  2628. Format of ATI VGA Wonder video mode table:
  2629. Offset    Size    Description    (Table 0027)
  2630.  00h    BYTE    number of columns
  2631.  01h    BYTE    maximum row (number of rows - 1)
  2632.  02h    BYTE    scan lines per row
  2633.  03h    WORD    video buffer size in bytes
  2634.  05h  4 BYTEs    values for Sequencer registers 1-4
  2635.  09h    BYTE    value for Miscellaneous Output register
  2636.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  2637.         00h horizontal total size (chars)
  2638.         01h horizontal displayed (chars)
  2639.         02h horizontal sync position (chars)
  2640.         03h horizontal sync width (chars)
  2641.         04h vertical total size (char rows)
  2642.         05h vertical total adjust (scan lines)
  2643.         06h vertical displayed (char rows)
  2644.         07h vertical sync position (char rows)
  2645.         08h interlace mode
  2646.         09h max scan line in row
  2647.         0Ah cursor start scan line
  2648.         0Bh cursor end scan line
  2649.         0Ch screen memory start (high)
  2650.         0Dh screen memory start (low)
  2651.         0Eh cursor address (high)
  2652.         0Fh cursor address (low)
  2653.         10h light pen (high)
  2654.         11h light pen (low)
  2655.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  2656.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  2657. --------V-1012--BL74-------------------------
  2658. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2659.     AH = 12h
  2660.     BL = 74h
  2661. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2662.       crash the system on this function
  2663. --------V-1012--BL80-------------------------
  2664. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2665.     AH = 12h
  2666.     BL = 80h
  2667. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2668.       crash the system on this function
  2669. --------V-1012--BL80-------------------------
  2670. INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE
  2671.     AH = 12h
  2672.     BL = 80h
  2673. Return: AX = controller type in bits 13-0 (see #0028)
  2674.         bit 14: ???
  2675.         bit 15: ???
  2676.     BL = silicon revision number (bit 7 set if not available)
  2677. SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  2678.  
  2679. (Table 0028)
  2680. Values for Cirrus Logic video controller type:
  2681.  0000h    no extended alternate select support
  2682.  0002h    510/520
  2683.  0003h    610/620
  2684.  0004h    5320
  2685.  0005h    6410
  2686.  0006h    5410
  2687.  0007h    6420
  2688.  0008h    6412
  2689.  0010h    5401
  2690.  0011h    5402
  2691.  0012h    5420
  2692.  0013h    5422
  2693.  0014h    5424
  2694.  0015h    5426
  2695.  0016h    5420r1
  2696.  0017h    5402r1
  2697.  0018h    5428
  2698.  0020h    6205/15/25
  2699.  0030h    5432
  2700.  0031h    5434
  2701. --------V-1012--BL81-------------------------
  2702. INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER
  2703.     AH = 12h
  2704.     BL = 81h
  2705. Return: AH = BIOS major version
  2706.     AL = BIOS minor version
  2707. SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h
  2708. --------V-1012--BL82-------------------------
  2709. INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE
  2710.     AH = 12h
  2711.     BL = 82h
  2712. Return: AL = chip revision
  2713.     AH = ??? (AFh for v1.01)
  2714. SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h
  2715. ----------1012--BL84-------------------------
  2716. INT 10 - Cirrus Logic BIOS v3.02 - INQUIRE OPTIONS
  2717.     AH = 12h
  2718.     BL = 84h
  2719. Return: AX = user options word (see #0029)
  2720. SeeAlso: AH=12h/BL=89h,AH=12h/BL=8Ah,AH=12h/BL=8Bh,AH=12h/BL=8Ch,AH=12h/BL=8Fh
  2721. SeeAlso: AH=12h/BL=90h,AH=12h/BL=9Ah
  2722.  
  2723. Bitfields for Cirrus Logic user options word:
  2724. Bit(s)    Description    (Table 0029)
  2725.  1,0    centering
  2726.     00 vertical centered, 01 from bottom, 10 from top, 11 reserved
  2727.  3,2    720-dot fix-up options
  2728.     00 OR every 8th and 9th pixel
  2729.     01 display MGA mode from left
  2730.     10 display MGA mode from right
  2731.     11 skip every 9th pixel
  2732.  4    ???
  2733.  7-5    video mode (001 CGA, 010 MGA, 011 EGA, 100 VGA)
  2734.  8    external monitor enabled instead of LCD panel
  2735.  9    vertical expand mode enabled
  2736.  10    8-bit mode instead of 16-bit mode
  2737.  11    normal video rather than reverse video (for LCD)
  2738.  12    attribute automap rather than attribute emulation
  2739.  13    bold mode disabled (default)
  2740.  14    fast bandwidth
  2741.  15    ???
  2742. --------V-1012--BL85-------------------------
  2743. INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY
  2744.     AH = 12h
  2745.     BL = 85h
  2746. Return: AL = number of 64K banks of video memory
  2747. SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h
  2748. --------V-1012--BL89-------------------------
  2749. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - EN/DISABLE REVERSE VIDEO MODE
  2750.     AH = 12h
  2751.     BL = 89h
  2752.     AL = new state (00h enabled, 01h disabled)
  2753. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=8Bh
  2754. --------V-1012--BL8A-------------------------
  2755. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET FRAME COLOR
  2756.     AH = 12h
  2757.     BL = 8Ah
  2758.     AL = new gray-scale color (00h = black to 0Fh = white)
  2759. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Fh
  2760. --------V-1012--BL8B-------------------------
  2761. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE BOLD MODE
  2762.     AH = 12h
  2763.     BL = 8Bh
  2764.     AL = new state (00h enabled, 01h disabled)
  2765. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Ch,AH=12h/BL=8Fh
  2766. --------V-1012--BL8C-------------------------
  2767. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET AUTOMAP/EMULATE ATTRIBUTES
  2768.     AH = 12h
  2769.     BL = 8Ch
  2770.     AL = new state
  2771.         00h enable automap
  2772.         01h disable automap and emulate attributes
  2773. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Bh
  2774. --------V-1012--BL8F-------------------------
  2775. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE EXPAND MODE
  2776.     AH = 12h
  2777.     BL = 8Fh
  2778.     AL = new state (00h enabled, 01h disabled)
  2779. Note:    when expand mode is enabled, the vertical dimension is enlarged to
  2780.       full screen
  2781. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Bh,AH=12h/BL=90h
  2782. --------V-1012--BL90-------------------------
  2783. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET CENTERING MODE
  2784.     AH = 12h
  2785.     BL = 90h
  2786.     AL = new position
  2787.         00h centered
  2788.         01h from top
  2789.         02h from bottom
  2790.         03h from top
  2791. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Fh
  2792. --------V-1012--BL91-------------------------
  2793. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET 720-DOT FIXUP MODE
  2794.     AH = 12h
  2795.     BL = 91h
  2796.     AL = new mode
  2797.         00h display MGA mode from left of screen (default)
  2798.         01h display MGA from right
  2799.         02h skip every ninth pixel
  2800.         03h OR every 8th and 9th pixel
  2801. SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=90h
  2802. --------V-1012--BL92-------------------------
  2803. INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SWITCH DISPLAY
  2804.     AH = 12h
  2805.     BL = 92h
  2806.     AL = new display (00h LCD, 01h external monitor)
  2807. Note:    the deselected display is disabled
  2808. SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=90h,AH=12h/BL=94h
  2809. --------V-1012--BL93-------------------------
  2810. INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION
  2811.     AH = 12h
  2812.     BL = 93h
  2813.     AL = new I/O width (00h = 16 bits, 01h = 8 bits)
  2814. SeeAlso: AH=12h/BL=9Ah
  2815. --------V-1012--BL94-------------------------
  2816. INT 10 - Cirrus Logic BIOS v3.02 - POWER CONSERVATION
  2817.     AH = 12h
  2818.     BL = 94h
  2819.     AL = new state (00h wake up monitor, 01h shut down display)
  2820. Note:    AL=01h is reported not to work properly on the LCD panel
  2821. SeeAlso: AH=12h/BL=84h,AH=12h/BL=92h
  2822. --------V-1012--BL9A-------------------------
  2823. INT 10 - Cirrus Logic BIOS - GET USER OPTIONS
  2824.     AH = 12h
  2825.     BL = 9Ah
  2826. Return: AX = options word 1 (see #0030)
  2827.     CX = options word 2 (see #0031)
  2828. SeeAlso: AH=12h/BL=80h,AH=12h/BL=84h,AH=12h/BL=93h,AH=12h/BL=A0h
  2829. SeeAlso: AH=12h/BL=A3h,AH=12h/BL=A4h
  2830.  
  2831. Bitfields for Cirrus Logic options word 1:
  2832. Bit(s)    Description    (Table 0030)
  2833.  0,1    reserved
  2834.  2-4    monitor type
  2835.  5-6    maximum vertical resolution
  2836.  7-9    reserved
  2837.  10    force 8-bit operation
  2838.  11-13    reserved
  2839.  14    vertical refresh frequency at 640x480
  2840.  15    reserved
  2841.  
  2842. Bitfields for Cirrus Logic options word 2:
  2843. Bit(s)    Description    (Table 0031)
  2844.  0-3    reserved
  2845.  4-5    vertical refresh frequency at 1280x1024
  2846.  6-10    reserved
  2847.  11-12    vertical refresh frequency at 800x600
  2848.  13-15    vertical refresh frequency at 1024x768
  2849. --------V-1012--BLA0-------------------------
  2850. INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY
  2851.     AH = 12h
  2852.     BL = A0h
  2853.     AL = video mode number (00h-7Fh)
  2854. Return: AH bit 0: video mode supported
  2855.     BX = offset of BIOS subroutine to fixup standard video parameters
  2856.         (call subroutine with DS:SI and ES:DI as returned by this call)
  2857.     DS:SI -> standard video parameters or FFFFh:FFFFh
  2858.     ES:DI -> supplemental video parameters or FFFFh:FFFFh
  2859. SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h
  2860. --------V-1012--BLA1-------------------------
  2861. INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR
  2862.     AH = 12h
  2863.     BL = A1h
  2864. Return: BH = monitor ID (see #0032)
  2865.     BL = monitor type (00h color, 01h grayscale, 02h no display)
  2866. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h
  2867.  
  2868. (Table 0032)
  2869. Values for Cirrus Logic monitor ID:
  2870.  00h-08h reserved
  2871.  09h    IBM 8604/8507 or equivalent
  2872.  0Ah    IBM 8514 or equivalent
  2873.  0Bh    IBM 8515 or equivalent
  2874.  0Dh    IBM 8503 or equivalent
  2875.  0Eh    IBM 8512/8513 or equivalent
  2876.  0Fh    no monitor
  2877. --------V-1012--BLA2-------------------------
  2878. INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY
  2879.     AH = 12h
  2880.     BL = A2h
  2881.     AL = retrace rate
  2882.         00h standard VGA (31.5 kHz)
  2883.         01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced)
  2884.         02h SuperVGA (31.5-35.1 kHz)
  2885.         03h extended SuperVGA (31.5-35.5 kHz)
  2886.         04h multi-frequency (31.5-37.8 kHz)
  2887.         05h extended multi-frequency (31.5-48.0 kHz)
  2888.         06h super multi-frequency (31.5-56.0 kHz)
  2889.         07h extended super multi-frequency (31.5-64.0 kHz)
  2890. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h
  2891. --------V-1012--BLA3-------------------------
  2892. INT 10 - Cirrus Logic BIOS - SET VGA REFRESH
  2893.     AH = 12h
  2894.     BL = A3h
  2895.     AL = refresh rate for 640x480 (00h normal, 01h high)
  2896. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h
  2897. --------V-1012--BLA4-------------------------
  2898. INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE
  2899.     AH = 12h
  2900.     BL = A4h
  2901.     AL bits 3-0 = maximum vertical resolution
  2902.         (0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved)
  2903.     AL bits 7-4 = vertical refresh at 640x480
  2904.         (0 = 60Hz, 1 = 72Hz, other reserved)
  2905.     BH bits 3-0 = vertical refresh at 800x600
  2906.         (0 = 56Hz, 1 = 60Hz, 2 = 72Hz, other reserved)
  2907.     BH bits 7-4 = vertical refresh at 1024x768
  2908.         (0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved)
  2909.     CH bits 4-7 = vertical refresh at 1280x1024
  2910.         (0=87Hz-int, 1=60Hz, 2=70Hz, other reserved)
  2911. SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h
  2912. --------V-1012--BLBE-------------------------
  2913. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2914.     AH = 12h
  2915.     BL = BEh
  2916. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2917.       crash the system on this function
  2918. --------V-1012--BLC6-------------------------
  2919. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2920.     AH = 12h
  2921.     BL = C6h
  2922. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2923.       crash the system on this function
  2924. --------V-1012--BLF0-------------------------
  2925. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  2926.     AH = 12h
  2927.     BL = F0h
  2928. Note:    due to an omitted end-of-list marker, these versions of the BIOS will
  2929.       crash the system on this function
  2930. --------V-1013-------------------------------
  2931. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  2932.     AH = 13h
  2933.     AL = write mode
  2934.        bit 0: update cursor after writing
  2935.        bit 1: string contains alternating characters and attributes
  2936.        bits 2-7: reserved (0)
  2937.     BH = page number
  2938.     BL = attribute if string contains only characters
  2939.     CX = number of characters in string
  2940.     DH,DL = row,column at which to start writing
  2941.     ES:BP -> string to write
  2942. Notes:    recognizes CR, LF, BS, and bell
  2943.     also available PC or XT with EGA or higher
  2944.     HP 95LX only supports write mode 00h
  2945. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  2946.       the active page rather than the requested page
  2947. SeeAlso: AH=09h,AH=0Ah,AH=13h"DOS/V"
  2948. --------J-1013-------------------------------
  2949. INT 10 - DOS/V - READ/WRITE DOUBLE-BYTE CHARACTER SET CHARACTERS/ATTRIBUTES
  2950.     AH = 13h
  2951.     AL = function
  2952.         10h read characters and standard attributes
  2953.         11h read characters and extended attributes
  2954.         12h write characters and standard attributes
  2955.         13h write characters and extended attributes
  2956.     BH = 00h
  2957.     CX = number of characters to transfer
  2958.     DH,DL = row,column at which to start transfer
  2959.     ES:BP -> buffer for/containing characters and attributes (see #0033)
  2960. Return: ES:BP buffer filled if reading
  2961. Program: DOS/V is a Japanese-language version of MS-DOS which can run on
  2962.       standard (non-Japanese) ATs and compatible equipped with a VGA or
  2963.       newer video adapter
  2964. Notes:    subfunctions 11h and 13h are only valid when DOS/V is using video
  2965.       mode 73h
  2966.     the cursor position is not changed by these functions
  2967.     extended attributes consist of three bytes; the first is the standard
  2968.       character attribute byte, the second is as described below, and the
  2969.       third is always zero in current versions
  2970. SeeAlso: AH=00h,AH=13h"VIDEO"
  2971.  
  2972. Bitfields for DOS/V second extended attribute byte:
  2973. Bit(s)    Description    (Table 0033)
  2974.  7    underline using foreground color
  2975.  6    reverse foreground/background specified in standard attribute byte
  2976.  5-4    unused
  2977.  3    vertical white grid line in cell
  2978.  2    horizontal white grid line in cell
  2979.  1-0    unused
  2980. SeeAlso: #0013,#0025
  2981. --------V-101400-----------------------------
  2982. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  2983.     AX = 1400h
  2984.     ES:DI -> character font
  2985.     BH = number of bytes per character
  2986.         08h or 10h (Compaq)
  2987.     BL = 00h load main font (block 0)
  2988.          01h load alternate font (block 1)
  2989.     CX = number of characters to store
  2990.     DX = character offset into RAM font area
  2991. SeeAlso: AH=11h,AX=1401h
  2992. --------V-101401-----------------------------
  2993. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  2994.     AX = 1401h
  2995.     BL = font to load
  2996.         00h main font (block 0)
  2997.         01h alternate font (block 1)
  2998. SeeAlso: AH=11h,AX=1400h
  2999. --------V-101402-----------------------------
  3000. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  3001.     AX = 1402h
  3002.     BL = function
  3003.         00h ignore high intensity attribute
  3004.         01h map high intensity to reverse video
  3005.         02h map high intensity to underscore
  3006.         03h map high intensity to selected alternate font
  3007.         B0h half intensity (Compaq)
  3008.         B1h toggle active intensity bit interpretation (CP386)
  3009. --------V-1015-------------------------------
  3010. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  3011.     AH = 15h
  3012. Return: AX = alternate display adapter type (see #0034)
  3013.     ES:DI -> parameter table (see #0035)
  3014. SeeAlso: AH=1Bh
  3015.  
  3016. (Table 0034)
  3017. Values for PC Convertible alternate display adapter type:
  3018.  0000h    none
  3019.  5140h    LCD
  3020.  5153h    CGA
  3021.  5151h    mono
  3022.  
  3023. Format of PC Convertible display parameter table:
  3024. Offset    Size    Description    (Table 0035)
  3025.  00h    WORD    monitor model number
  3026.  02h    WORD    vertical pixels per meter
  3027.  04h    WORD    horizontal pixels per meter
  3028.  06h    WORD    total vertical pixels
  3029.  08h    WORD    total horizontal pixels
  3030.  0Ah    WORD    horizontal pixel separation in micrometers
  3031.         (width, center-to-center)
  3032.  0Ch    WORD    vertical pixel separation in micrometers
  3033.         (height, center-to-center)
  3034. --------V-1015-------------------------------
  3035. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  3036.     AH = 15h
  3037.     AL = superimpose mode
  3038.         00h show graphics screen
  3039.         01h show text screen
  3040.         02h show text screen superimposed on graphics screen
  3041. --------J-1018-------------------------------
  3042. INT 10 - VIDEO - DOS/V - GET/SET FONT PATTERN
  3043.     AH = 18h
  3044.     AL = function
  3045.         00h get font pattern
  3046.         01h set font pattern
  3047.     BX = 0000h
  3048.     CL = character size in bytes (01h,02h)
  3049.     CH = 00h 
  3050.     DH = character width in pixels
  3051.     DL = character height in pixels
  3052.     ES:DI -> buffer for/containing font image
  3053. Return: AL = status (00h successful, else error)
  3054.     ES:DI buffer filled for function 00h if successful
  3055. Note:    the supported font sizes are 8x16 single-byte, 8x19 single-byte,
  3056.       16x16 double-byte, and 24x24 double-byte
  3057. SeeAlso: AH=19h,INT 16/AH=14h
  3058. --------V-1019-------------------------------
  3059. INT 10 - Japanese VIDEO - DOUBLE-BYTE CHARACTER SET SHIFT INFORMATION
  3060.     AH = 19h
  3061.     ???
  3062. Return: ???
  3063. SeeAlso: AH=18h,INT 16/AH=14h
  3064. --------V-101A00-----------------------------
  3065. INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  3066.     AX = 1A00h
  3067. Return: AL = 1Ah if function was supported
  3068.         BL = active display code (see #0036)
  3069.         BH = alternate display code (see #0036)
  3070. SeeAlso: AH=12h/BL=35h,AX=1A01h,AH=1Bh
  3071.  
  3072. (Table 0036)
  3073. Values for display combination code:
  3074.  00h    no display
  3075.  01h    monochrome adapter w/ monochrome display
  3076.  02h    CGA w/ color display
  3077.  03h    reserved
  3078.  04h    EGA w/ color display
  3079.  05h    EGA w/ monochrome display
  3080.  06h    PGA w/ color display
  3081.  07h    VGA w/ monochrome analog display
  3082.  08h    VGA w/ color analog display
  3083.  09h    reserved
  3084.  0Ah    MCGA w/ digital color display
  3085.  0Bh    MCGA w/ monochrome analog display
  3086.  0Ch    MCGA w/ color analog display
  3087.  FFh    unknown display type
  3088. --------V-101A01-----------------------------
  3089. INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  3090.     AX = 1A01h
  3091.     BL = active display code (see #0036)
  3092.     BH = alternate display code
  3093. Return: AL = 1Ah if function was supported
  3094. SeeAlso: AH=12h/BL=35h,AX=1A00h
  3095. --------V-101B-------------------------------
  3096. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  3097.     AH = 1Bh
  3098.     BX = implementation type
  3099.         0000h return funtionality/state information
  3100.     ES:DI -> 64-byte buffer for state information (see #0037)
  3101. Return: AL = 1Bh if function supported
  3102.         ES:DI buffer filled with state information
  3103. BUG:    Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
  3104.       do not correctly set the fields at offsets 27h and 29h of the
  3105.       state information
  3106. SeeAlso: AH=15h,AX=1A00h,AX=1F01h
  3107.  
  3108. Format of MCGA+ state information:
  3109. Offset    Size    Description    (Table 0037)
  3110.  00h    DWORD    address of static funtionality table (see #0040)
  3111.  04h    BYTE    video mode in effect
  3112.  05h    WORD    number of columns
  3113.  07h    WORD    length of regen buffer in bytes
  3114.  09h    WORD    starting address of regen buffer
  3115.  0Bh    WORD    cursor position for page 0
  3116.  0Dh    WORD    cursor position for page 1
  3117.  0Fh    WORD    cursor position for page 2
  3118.  11h    WORD    cursor position for page 3
  3119.  13h    WORD    cursor position for page 4
  3120.  15h    WORD    cursor position for page 5
  3121.  17h    WORD    cursor position for page 6
  3122.  19h    WORD    cursor position for page 7
  3123.  1Bh    WORD    cursor "type" (start/stop scan lines)
  3124.  1Dh    BYTE    active display page
  3125.  1Eh    WORD    CRTC port address
  3126.  20h    BYTE    current setting of register (3?8)
  3127.  21h    BYTE    current setting of register (3?9)
  3128.  22h    BYTE    number of rows - 1
  3129.  23h    WORD    bytes/character
  3130.  25h    BYTE    display combination code of active display
  3131.  26h    BYTE    DCC of alternate display
  3132.  27h    WORD    number of colors supported in current mode (0000h = mono)
  3133.  29h    BYTE    number of pages supported in current mode
  3134.  2Ah    BYTE    number of scan lines active
  3135.         (0,1,2,3) = (200,350,400,480)
  3136.         Tseng ET3000: (4,5,6 = 512,600,768)
  3137.  2Bh    BYTE    primary character block
  3138.  2Ch    BYTE    secondary character block
  3139.  2Dh    BYTE    miscellaneous flags (see #0038)
  3140.  2Eh  3 BYTEs    reserved (00h)
  3141.  31h    BYTE    video memory available
  3142.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  3143.  32h    BYTE    save pointer state flags (see #0039)
  3144.  33h 13 BYTEs    reserved (00h)
  3145.  
  3146. Bitfields for miscellaneous flags:
  3147. Bit(s)    Description    (Table 0038)
  3148.  0    all modes on all displays on
  3149.  1    gray summing on
  3150.  2    monochrome display attached
  3151.  3    default palette loading disabled
  3152.  4    cursor emulation enabled
  3153.  5    0 = intensity; 1 = blinking
  3154.  6    PS/2 P70 plasma display (without 9-dot wide font) active
  3155.  7    unused (0)
  3156.  
  3157. Bitfields for save pointer state flags:
  3158. Bit(s)    Description    (Table 0039)
  3159.  0    512 character set active
  3160.  1    dynamic save area present
  3161.  2    alpha font override active
  3162.  3    graphics font override active
  3163.  4    palette override active
  3164.  5    DCC override active
  3165.  6-7    unused (0)
  3166.  
  3167. Format of Static Functionality Table:
  3168. Offset    Size    Description    (Table 0040)
  3169.  00h    BYTE    modes supported 1
  3170.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  3171.  01h    BYTE    modes supported 2
  3172.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  3173.  02h    BYTE    modes supported 3
  3174.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  3175.         bit 4 to bit 7 unused (0)
  3176.  03h    BYTE    (IBM) reserved
  3177.         (Tseng ET3000/4000) modes supported 4
  3178.                 bit 0 to bit 7 = modes 18h-1Fh supported
  3179.  04h    BYTE    (IBM) reserved
  3180.         (Tseng ET3000/4000) modes supported 5
  3181.                 bit 0 to bit 7 = modes 20h-27h supported
  3182.  05h    BYTE    (IBM) reserved
  3183.         (Tseng ET3000/4000) modes supported 6
  3184.                 bit 0 to bit 7 = modes 28h-2Fh supported
  3185.  06h    BYTE    (IBM) reserved
  3186.         (Tseng ET3000/4000) modes supported 7
  3187.                 bit 0 to bit 7 = modes 30h-37h supported
  3188.  07h    BYTE    scan lines supported
  3189.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  3190.         bits 3-7 = unused (0)
  3191.  08h    BYTE    total number of character blocks available in text modes
  3192.  09h    BYTE    maximum number of active character blocks in text modes
  3193.  0Ah    WORD    miscellaneous function support flags (see #0041)
  3194.  0Ch    WORD    reserved
  3195.  0Eh    BYTE    save pointer function flags (see #0042)
  3196.  0Fh    BYTE    reserved
  3197.  
  3198. Bitfields for miscellaneous function support flags:
  3199. Bit(s)    Description    (Table 0041)
  3200.  0    all modes on all displays function supported
  3201.  1    gray summing function supported
  3202.  2    character font loading function supported
  3203.  3    default palette loading enable/disable supported
  3204.  4    cursor emulation function supported
  3205.  5    EGA palette present
  3206.  6    color palette present
  3207.  7    color-register paging function supported
  3208.  8    light pen supported (see AH=04h)
  3209.  9    save/restore state function 1Ch supported
  3210.  10    intensity/blinking function supported (see AX=1003h)
  3211.  11    Display Combination Code supported (see #0036)
  3212.  12-15    unused (0)
  3213.  
  3214. Bitfields for save pointer function flags:
  3215. Bit(s)    Description    (Table 0042)
  3216.  0    512 character set supported
  3217.  1    dynamic save area supported
  3218.  2    alpha font override supported
  3219.  3    graphics font override supported
  3220.  4    palette override supported
  3221.  5    DCC extension supported
  3222.  6-7    unused (0)
  3223. --------V-101C-------------------------------
  3224. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  3225.     AH = 1Ch
  3226.     AL = function
  3227.         00h return state buffer size
  3228.         Return: BX = number of 64-byte blocks needed
  3229.         01h save video state
  3230.         ES:BX -> buffer
  3231.         02h restore video state
  3232.         ES:BX -> buffer containing previously saved state
  3233.     CX = requested states (see #0043)
  3234. Return: AL = 1Ch if function supported
  3235. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  3236.       program should restore the state immediately after saving it (the
  3237.       saved data is uncorrupted)
  3238.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  3239.     this function is not supported when DOS/V is running
  3240.  
  3241. Bitfields for requested states:
  3242. Bit(s)    Description    (Table 0043)
  3243.  0    video hardware (see #0044)
  3244.  1    BIOS data areas
  3245.  2    color registers and DAC state (see #0045)
  3246.  3-15    unused (0)
  3247.  
  3248. Format of VGA video hardware state:
  3249. Offset    Size    Description    (Table 0044)
  3250.  00h    BYTE    sequencer index register
  3251.  01h    BYTE    CRTC index register
  3252.  02h    BYTE    graphics controller index register
  3253.  03h    BYTE    attribute controller index register
  3254.  04h    BYTE    feature controller register
  3255.  05h  4 BYTEs    sequencer registers
  3256.  09h    BYTE    sequencer register 0
  3257.  0Ah 25 BYTEs    CRTC registers 0-8
  3258.  23h 16 BYTEs    palette registers 00h-0Fh
  3259.  33h  4 BYTEs    attribute registers 10h-13h
  3260.  37h  9 BYTEs    graphics controller registers 0-8
  3261.  40h    BYTE    CRTC base address (low)
  3262.  41h    BYTE    CRTC base address (high)
  3263.  42h    BYTE    plane 0 latch
  3264.  43h    BYTE    plane 1 latch
  3265.  44h    BYTE    plane 2 latch
  3266.  45h    BYTE    plane 3 latch
  3267.  
  3268. Format of VGA DAC state:
  3269. Offset    Size    Description    (Table 0045)
  3270.  00h    BYTE    read/write mode DAC
  3271.  01h    BYTE    pixel address
  3272.  02h    BYTE    pixel mask
  3273.  03h 768 BYTEs    color data (256 triples)
  3274. 303h    BYTE    color select register
  3275. --------J-101D-------------------------------
  3276. INT 10 - VIDEO - DOS/V - SHIFT STATUS LINE CONTROL
  3277.     AH = 1Dh
  3278.     AL = function
  3279.         00h enable shift status line(s)
  3280.         BX = number of lines to reserve at bottom of screen (usu. 1)
  3281.         01h disable shift status line
  3282.         BX = number of lines reserved at bottom of screen (usually 1)
  3283.         02h get number of status lines
  3284.         Return: BX = number of lines reserved for shift status
  3285. SeeAlso: AH=19h
  3286. --------V-101D-------------------------------
  3287. INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
  3288.     AH = 1Dh
  3289.     AL = video mode
  3290.     ES = caller's segment
  3291. Return: nothing
  3292. Note:    the caller's segment contains at offset 5Ch (FCB field in PSP)
  3293.       or 100h a table with sync parameters (see #0046) (BIOS looks at both
  3294.       offsets)
  3295.  
  3296. Format of SpeedSTAR Plus sync table:
  3297. Offset    Size    Description    (Table 0046)
  3298.  00h  9 BYTEs    ID contains string 'ey5CENTER'
  3299.  09h  5 BYTEs    sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
  3300.  0Bh  5 BYTEs    sync parameters for 800x600 modes 29h,30h,2Ah
  3301.  13h  5 BYTEs    sync parameters for 1024x768 modes 37h,38h
  3302. --------V-101D-------------------------------
  3303. INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
  3304.     AH = 1Dh
  3305. Note:    these versions of the BIOS jump to a random location on this function
  3306.       due to a fencepost error
  3307. --------V-101F00-----------------------------
  3308. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  3309.     AX = 1F00h
  3310. Return: AL = 1Fh if supported
  3311.         BX = number of bytes of DMQS data
  3312. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  3313.       and later models.
  3314. SeeAlso: AX=1F01h
  3315. --------V-101F01-----------------------------
  3316. INT 10 - VIDEO - XGA - READ DMQS DATA
  3317.     AX = 1F01h
  3318.     ES:DI -> user buffer for return data (call AX=1F00h for size)
  3319. Return: AL = 1Fh if function supported
  3320.     user buffer filled with DMQS data (see #0047)
  3321. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  3322.       and later models.
  3323. SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
  3324.  
  3325. Format of XGA DMQS buffer:
  3326. Offset    Size    Description    (Table 0047)
  3327.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  3328.  02h    BYTE    slot number
  3329.  03h    BYTE    XGA implementation function level identifier
  3330.  04h    BYTE    XGA implementation resolution level identifier
  3331.  05h    WORD    vendor identifier - identifies card vendor
  3332.  07h    WORD    vendor defined field
  3333.  09h    WORD    XGA adapter I/O register base address
  3334.  0Bh    WORD    XGA coprocessor register base address
  3335.         (paragraph--multiply by 10h to get physical address)
  3336.  0Dh    WORD    1 Megabyte system video memory aperture
  3337.         0000h if not allocated
  3338.         (Multiply by 100000h to get physical address)
  3339.  0Fh    WORD    4 Megabyte system video memory aperture
  3340.         0000h if not allocated
  3341.         (multiply by 100000h to get physical address)
  3342.  11h    WORD    video memory base address
  3343.         (multiply by 100000h to get physical address)
  3344.  13h    WORD    composite ID of the attached display
  3345.  15h    BYTE    amount of video memory available, in multiples of 256K bytes
  3346.  16h    DWORD    alternate XGA coprocessor register base address.  0 = none.
  3347.  1Ah    var    DMQS Data for further XGA Instances (as above)
  3348. Note:    "Instances" refers to the capability of having up to 8 XGA
  3349.       adapters in one computer.
  3350. --------V-103000CX0000-----------------------
  3351. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  3352.     AX = 3000h
  3353.     CX = 0000h
  3354.     DX = 0000h
  3355. Return: CX:DX -> 3270PC configuration table (see #0048)
  3356.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  3357. SeeAlso: AX=1F01h
  3358.  
  3359. Format of 3270 PC configuration table:
  3360. Offset    Size    Description    (Table 0048)
  3361.  00h    BYTE    aspect ratio X
  3362.  01h    BYTE    aspect ratio Y
  3363.  02h    BYTE    monitor type (see #0049)
  3364.  03h    BYTE    reserved
  3365.  04h    BYTE    adapter ID
  3366.         00h = 5151/5272 adapter
  3367.         04h = 5151/5272 with XGA adapter
  3368.         30h = 3295 or 3270PC G/GX adapter
  3369.  05h    BYTE    reserved
  3370.  06h    BYTE    function flags 1 (see #0050)
  3371.  07h    BYTE    function flags 2
  3372.         bit 6: GPI graphics supported
  3373.  08h    WORD    segment address of Control Program Level table (see #0051)
  3374.  0Ah 10 BYTEs    reserved
  3375.  
  3376. (Table 0049)
  3377. Values for 3270 PC monitor type:
  3378.  00h    5151 (mono) or 5272 (color)
  3379.  01h    3295
  3380.  02h    5151 or 5272 with XGA (???) graphics adapter
  3381.  03h    5279 with 3270PC G adapter
  3382.  04h    5379 model C01 with 3270PC GX adapter
  3383.  05h    5379 model M01 with 3270PC GX adapter
  3384.  07h    non-3270PC with 3270 Workstation Program
  3385.  FFh    3270PC Control Program not loaded
  3386.  
  3387. Bitfields for 3270 PC function flags 1:
  3388. Bit(s)    Description    (Table 0050)
  3389.  7    mono text, 1 page
  3390.  6    color text, 1 page
  3391.  5    color text, 4 pages
  3392.  4    CGA color graphics
  3393.  3    720x350 two-color graphics
  3394.  2    360x350 four-color graphics
  3395.  1    720x350 eight-color graphics
  3396.  
  3397. Format of Control Program Level table:
  3398. Offset    Size    Description    (Table 0051)
  3399.  00h    WORD    program version
  3400.         02xxh = 3270PC Control Program v2.xx
  3401.         03xxh = 3270PC Control Program v3.xx
  3402.         04xxh = 3270 Workstation Program v1.xx
  3403.  02h    BYTE    Control Program ID (00h)
  3404.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  3405. --------a-103800-----------------------------
  3406. INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
  3407.     AX = 3800h
  3408. Return: ES:DI -> configuration info (see #0052)
  3409. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  3410. Notes:    this call is also used as the installation check by verifying that the
  3411.       returned ES:DI points at valid configuration info
  3412.     Tinytalk v1.09f ignores AL and always returns the configuration info;
  3413.       v1.10 adds several subfunctions selected with AL
  3414. SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
  3415. SeeAlso: INT 2F/FB00h"AutoBraille"
  3416. Index:    installation check;Tinytalk Personal
  3417.  
  3418. Format of Tinytalk Personal configuration info:
  3419. Offset    Size    Description    (Table 0052)
  3420.  00h  8 BYTEs    signature "TTCONFIG"
  3421.  08h    WORD    size of configuration data, not counting signature, this WORD,
  3422.           or the following byte
  3423.  0Ah    BYTE    ???
  3424.  0Bh    ???    configuration data
  3425. --------a-103801-----------------------------
  3426. INT 10 - Tinytalk Personal v1.10 - ???
  3427.     AX = 3801h
  3428.     DL = ???
  3429. Return: ???
  3430. SeeAlso: AX=3800h,AX=3802h
  3431. --------a-103802-----------------------------
  3432. INT 10 - Tinytalk Personal v1.10 - ???
  3433.     AX = 3802h
  3434.     DL = ???
  3435. Return: ???
  3436. SeeAlso: AX=3800h,AX=3801h
  3437. --------a-103803-----------------------------
  3438. INT 10 - Tinytalk Personal v1.10 - GET ???
  3439.     AX = 3803h
  3440. Return: AL = ???
  3441. SeeAlso: AX=3800h,AX=3804h,AX=3805h
  3442. --------a-103804-----------------------------
  3443. INT 10 - Tinytalk Personal v1.10 - GET ???
  3444.     AX = 3804h
  3445. Return: AX = ???
  3446. SeeAlso: AX=3800h,AX=3803h,AX=3805h
  3447. --------a-103805-----------------------------
  3448. INT 10 - Tinytalk Personal v1.10 - GET ???
  3449.     AX = 3805h
  3450. Return: AL = ???
  3451. SeeAlso: AX=3800h,AX=3803h,AX=3804h
  3452. --------a-103806-----------------------------
  3453. INT 10 - Tinytalk Personal v1.10 - ???
  3454.     AX = 3806h
  3455.     ES:DX -> ASCIZ ???
  3456. Return: ???
  3457. SeeAlso: AX=3800h
  3458. --------a-1039-------------------------------
  3459. INT 10 - Tinytalk Personal v1.10 - ???
  3460.     AH = 39h
  3461. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  3462. Note:    this function was a NOP in TTDEMO.EXE, but may be implemented in other
  3463.       variants of Tinytalk
  3464. --------V-1040-------------------------------
  3465. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  3466.     AH = 40h
  3467. Desc:    switch the Hercules Graphics Card into graphics mode (720x348)
  3468. SeeAlso: AH=00h,AH=41h
  3469. Index:    video modes;Hercules
  3470. --------V-1041-------------------------------
  3471. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  3472.     AH = 41h
  3473. Desc:    switch the Hercules Graphics Card into text mode
  3474. SeeAlso: AH=00h,AH=40h
  3475. Index:    video modes;Hercules
  3476. --------V-1042-------------------------------
  3477. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  3478.     AH = 42h
  3479. SeeAlso: AH=45h
  3480. --------V-1043-------------------------------
  3481. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  3482.     AH = 43h
  3483.     AL = page number (0,1)
  3484. Desc:    specify which of the two pages of video memory is to be used for
  3485.       output
  3486. SeeAlso: AH=05h,AH=44h,AH=45h
  3487. --------V-1044-------------------------------
  3488. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  3489.     AH = 44h
  3490.     AL = drawing function
  3491.         00h clear pixels
  3492.         01h set pixels
  3493.         02h invert pixels
  3494. Desc:    specify how graphics output will change the display
  3495. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  3496. --------V-1045-------------------------------
  3497. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  3498.     AH = 45h
  3499.     AL = page number (0,1)
  3500. Desc:    specify which of the two pages of video memory is visible on screen
  3501. SeeAlso: AH=05h,AH=42h,AH=43h
  3502. --------V-1046-------------------------------
  3503. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  3504.     AH = 46h
  3505.     DI = x (0-720)
  3506.     BP = y (0-347)
  3507. Note:    function 44h determines operation and function 43h which page to use
  3508. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  3509. --------V-1047-------------------------------
  3510. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  3511.     AH = 47h
  3512.     DI = x (0-720)
  3513.     BP = y (0-347)
  3514. Return: AL = 00h pixel clear
  3515.     AL = 01h pixel set
  3516. Note:    function 43h specifies which page is used
  3517. SeeAlso: AH=0Dh,AH=46h
  3518. --------V-1048-------------------------------
  3519. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  3520.     AH = 48h
  3521.     DI = x (0-720)
  3522.     BP = y (0-347)
  3523. Desc:    specify the location from which to start the next graphics output
  3524. SeeAlso: AH=49h
  3525. --------V-1049-------------------------------
  3526. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  3527.     AH = 49h
  3528.     DI = x (0-720)
  3529.     BP = y (0-347)
  3530. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  3531.       use
  3532. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  3533. --------V-104A-------------------------------
  3534. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  3535.     AH = 4Ah
  3536.     DI = x coordinate of lower left corner
  3537.     BP = y coordinate of lower left corner
  3538.     BX = height in pixels
  3539.     CX = width in pixels
  3540. Desc:    draw a solid rectangle of the specified size at the given location
  3541. SeeAlso: AH=4Eh
  3542. --------V-104B-------------------------------
  3543. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  3544.     AH = 4Bh
  3545.     AL = character to display
  3546.     DI = x (0-720)
  3547.     BP = y (0-347)
  3548. Note:    unlike the other BIOS character functions character position is
  3549.       specified in pixels rather than rows and columns
  3550. SeeAlso: AH=09h,AH=0Ah
  3551. ----------104B-------------------------------
  3552. INT 10 - FRIEZE - API
  3553.     AH = 4Bh
  3554.     CL = function
  3555.         00h (v6.x-) print window
  3556.         AL = mode
  3557.             00h character
  3558.             01h normal
  3559.             02h sideways
  3560.         01h load window
  3561.         ES:BX -> ASCIZ filename from which to read
  3562.         02h save window
  3563.         ES:BX -> ASCIZ filename to which to write
  3564.         03h set print width
  3565.         AL = width in 1/4 inches
  3566.         04h set print height
  3567.         AL = height in 1/4 inches
  3568.         05h reserved
  3569.         06h set left margin
  3570.         AL = printout margin in 1/4 inches
  3571.         07h set window size
  3572.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  3573.         08h reserved
  3574.         09h set patterns
  3575.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  3576.         0Ah get patterns
  3577.         ES:BX -> 16-BYTE buffer for color correspondences
  3578.         0Bh set mode
  3579.         AL = mode
  3580.         0Ch (v7.41) ???
  3581.         AL = ???
  3582.             00h ??? (calls original INT 05)
  3583.             else ???
  3584.         0Dh (v7.41) ???
  3585.         AL = ???
  3586.             00h ??? (calls original INT 05)
  3587.             else ???
  3588.         0Eh (v7.41) ???
  3589.         ???
  3590.         0Fh get window
  3591.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  3592.         10h set print options
  3593.         ES:BX -> printer options in same format as FRIEZE cmdline
  3594.         11h initialize
  3595.         ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
  3596.         12h (v7.41) ???
  3597.         ???
  3598.         13h (v7.41) ???
  3599.         ???
  3600.         14h get version
  3601.         Return: AH = major version (00h if FRIEZE version before 7)
  3602.             AL = minor version
  3603.         15h set parameters
  3604.         ES:BX -> parameter table (see #0054)
  3605.         16h get parameters
  3606.         ES:BX -> buffer for parameter table (see #0054)
  3607.         17h get printer resolution
  3608.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  3609.         18h (v8.0 only) reserved
  3610.         50h (v7.41) get ???
  3611.         Return: AX = ???
  3612.         51h (v7.41) get ???
  3613.         Return: ES = ??? (seen 2348h)
  3614.             AX = ??? (seen 8432h)
  3615. Return: AX = status (see #0053)
  3616. SeeAlso: AH=0Fh/SI=F123h
  3617.  
  3618. (Table 0053)
  3619. Values for FRIEZE function status:
  3620.  00h    successful
  3621.  01h    user aborted printout with ESC
  3622.  02h    reserved
  3623.  03h    file read error
  3624.  04h    file write error or printer error
  3625.  05h    file not found
  3626.  06h    invalid header (not an image or wrong screen mode) or can't create file
  3627.  07h    file close error
  3628.  08h    disk error
  3629.  09h    (v7.0+) printer error
  3630.  0Ah    invalid function
  3631.  0Bh    (v7.0+) can't create file
  3632.  0Ch    (v7.0+) wrong video mode
  3633.  
  3634. Format of FRIEZE parameter table:
  3635. Offset    Size    Description    (Table 0054)
  3636.  00h    WORD    top margin (1/100 inch)
  3637.  02h    WORD    left margin (1/100 inch)
  3638.  04h    WORD    horizontal size (1/100 inch)
  3639.  06h    WORD    vertical size (1/100 inch)
  3640.  08h    WORD    quality/draft mode
  3641.         00h draft mode
  3642.         01h quality mode
  3643.         02h use horizontal/vertical resolution for output resolution
  3644.  0Ah    WORD    printer horizontal resolution (dots per inch)
  3645.  0Ch    WORD    printer vertical resolution (dots per inch)
  3646.  0Eh    WORD    reserved (FFFFh)
  3647. Note:    any field which should remain unchanged may be filled with FFFFh
  3648. --------V-104C-------------------------------
  3649. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  3650.     AH = 4Ch
  3651.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  3652.     DI = x coordinate of center
  3653.     BP = y coordinate of center
  3654.     BX = radius
  3655. SeeAlso: AH=49h,AH=4Dh
  3656. --------V-104D-------------------------------
  3657. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  3658.     AH = 4Dh
  3659.     DI = x of center
  3660.     BP = y of center
  3661.     BX = radius
  3662. SeeAlso: AH=49h,AH=4Ch
  3663. --------V-104E-------------------------------
  3664. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  3665.     AH = 4Eh
  3666.     DI = x coordinate of an interior point
  3667.     BP = y coordinate of an interior point
  3668. Desc:    fill a convex polygonal area bounded by a contiguous line of the
  3669.       opposite color with the border color
  3670. Note:    the first fill makes the figure solid, the second erases it
  3671. SeeAlso: AH=4Ah
  3672. --------V-104E00-----------------------------
  3673. INT 10 - VESA XGA BIOS Extensions - GET XGA ENVIRONMENT INFORMATION
  3674.     AX = 4E00h
  3675.     ES:DI -> 256-byte buffer for XGA information (see #0055)
  3676. Return: AL = 4Eh if function supported
  3677.         AH = status
  3678.         00h successful
  3679.         else error code
  3680. Desc:    determine whether VESA XGA extensions are present and the capabilities
  3681.       supported by the display adapter
  3682. SeeAlso: AX=4E01h,AX=4E02h,AX=4F00h
  3683. Index:    installation check;VESA XGA
  3684.  
  3685. Format of XGA information buffer:
  3686. Offset    Size    Description    (Table 0055)
  3687.  00h  4 BYTEs    signature ("VESA")
  3688.  04h    WORD    VESA version number
  3689.  06h    DWORD    pointer to ASCIZ OEM string
  3690.  0Ah    DWORD    environment flags (see #0056)
  3691.  0Eh    WORD    number of XGA adapters installed (other VESA XGA functions
  3692.           require a handle indicating which adapter to use)
  3693.  10h 240 BYTEs    reserved
  3694.  
  3695. Bitfields for XGA environment flags:
  3696. Bit(s)    Description    (Table 0056)
  3697.  0-1    system bus (00 = MCA, 01 = ISA, 10 = EISA)
  3698.  2    bus mastering available
  3699.  3-31    reserved
  3700. --------V-104E01----------------------------
  3701. INT 10 - VESA XGA BIOS Extensions - RETURN XGA SUBSYSTEM INFORMATION
  3702.     AX = 4E01h
  3703.     DX = XGA handle (0 to number of XGAs-1)
  3704.     ES:DI -> 256-byte buffer for subsystem information (see #0057)
  3705. Return: AL = 4Eh if function supported
  3706.     AH = status
  3707.         00h     function successful
  3708.         else error code
  3709. SeeAlso: AX=4E00h,AX=4E02h
  3710.  
  3711. Format of XGA subsystem information:
  3712. Offset    Size    Description    (Table 0057)
  3713.  00h    DWORD    pointer to null-terminated board OEM string
  3714.  04h    DWORD    capabilities (see #0058)
  3715.  08h    DWORD    pointer to 8KB XGA ROM (or NULL)
  3716.  0Ch    DWORD    pointer to the XGA memory mapped registers
  3717.  10h    WORD    base address of XGA I/O registers (21x0h)
  3718.  12h    DWORD    pointer to start of physical video memory
  3719.         (A000h:0000h or B000h:0000h)
  3720.  16h    DWORD    physical address of 4MB aperture (or NULL if none)
  3721.  1Ah    DWORD    physical address of 1MB aperture (or NULL if none)
  3722.  1Eh    DWORD    physical address of 64KB aperture (or NULL if not enabled)
  3723.  22h    DWORD    physical address of OEM aperture (or NULL if none)
  3724.  26h    WORD    size of OEM aperture in 64KByte units
  3725.  28h    DWORD    pointer to list of video modes
  3726.         The list is a series of WORDs terminated by FFFFh
  3727.  2Ch    WORD    number of 64KB blocks on the board
  3728.  2Eh    DWORD    XGA manufacturer ID
  3729.         byte 0 POS data index 1
  3730.         byte 1 is index 2
  3731.         byte 2 is 21xAh index 75h
  3732.  32h 206 BYTEs    reserved
  3733.  
  3734. Bitfields for XGA capabilities:
  3735. Bit(s)    Description    (Table 0058)
  3736.  0-1    board bus architecture: 0=MCA, 1=ISA, 3=EISA
  3737.  2-3    reserved
  3738.  4-6    DMA Channel assigned for acquiring bus mastership (only for ISA bus)
  3739.  7    DMA Channel Status (ISA only). enabled if set
  3740.  8-31    reserved
  3741. --------V-104E02-----------------------------------
  3742. INT 10 - VESA XGA BIOS Extensions - RETURN XGA MODE INFORMATION
  3743.     AX = 4E02h
  3744.     CX = Video mode
  3745.     DX = XGA handle
  3746.     ES:DI -> 256 byte buffer for mode information (see #0059)
  3747. Return: AL = 4Eh if function supported
  3748.     AH = status
  3749.         00h     function successful
  3750.         else error code
  3751. SeeAlso: AX=4E00h,AX=4E01h
  3752.  
  3753. Format of XGA mode information:
  3754. Offset    Size    Description    (Table 0059)
  3755.  00h    WORD    attributes of the mode (see #0060)
  3756.  02h    WORD    bytes per logical scanline
  3757.  04h    WORD    horizontal resolution in pixels
  3758.  06h    WORD    vertical resolution in scanlines
  3759.  08h    BYTE    character Width in pixels
  3760.  09h    BYTE    character Height in pixels
  3761.  0Ah    BYTE    number of planes
  3762.  0Bh    BYTE    bits per pixels
  3763.  0Ch    BYTE    memory model (see #0061)
  3764.  0Dh    BYTE    number of Image Pages
  3765.  0Eh    BYTE    number of Red bits
  3766.  0Fh    BYTE    bit position of Red bit field
  3767.  10h    BYTE    number of Green bits
  3768.  11h    BYTE    bit position of Green bit field
  3769.  12h    BYTE    number of Blue bits
  3770.  13h    BYTE    bit position of Blue bit field
  3771.  14h    BYTE    number of Reserved bits
  3772.  15h    BYTE    bit position of Reserved bit field
  3773.  16h 235 BYTEs    reserved
  3774.  
  3775. Bitfields for XGA mode attributes:
  3776. Bit(s)    Description    (Table 0060)
  3777.  0    set if mode is supported
  3778.  1    reserved
  3779.  2    output is supported by the BIOS
  3780.  3    reserved
  3781.  4    if set this is a graphics mode (VGA registers inactive, XGA active),
  3782.       if clear this is a text mode (VGA registers active, XGA inactive)
  3783.  
  3784. (Table 0061)
  3785. Values for XGA video memory model:
  3786.  00h    Text Mode
  3787.  01h    CGA graphics
  3788.  02h    Hercules graphics
  3789.  03h    4-planar graphics
  3790.  04h    Packed Pixel
  3791.  05h    Non-chain 4, 256 color
  3792.  06h    Direct Color
  3793.  07h    YUV-24
  3794. --------V-104E03-----------------------------------
  3795. INT 10 - VESA XGA BIOS Extensions - SET XGA VIDEO MODE
  3796.     AX = 4E03h
  3797.     BX = video mode
  3798.     CX = other command flags
  3799.          bit 0  If clear the feature connector is set to the default state
  3800.     DX = XGA handle
  3801.     ES:DI -> 256 byte buffer
  3802. Return: AL = 4Eh if function supported
  3803.     AH = status
  3804.         00h     function successful
  3805.         else error code
  3806. SeeAlso: AH=00h,AX=4E04h,AX=4F02h
  3807. --------V-104E04-----------------------------------
  3808. INT 10 - VESA XGA BIOS Extensions - RETURN CURRENT VIDEO MODE
  3809.     AX = 4E04h
  3810.     DX = XGA handle
  3811. Return: AL = 4Eh if function supported
  3812.     AH = status
  3813.         00h     function successful
  3814.         BX??? = current mode
  3815.         else error code
  3816. SeeAlso: AH=0Fh,AX=4E03h,AX=4F03h
  3817. --------V-104E05-----------------------------------
  3818. INT 10 - VESA XGA BIOS Extensions - SET FEATURE CONNECTOR STATE
  3819.     AX = 4E05h
  3820.     BX = Feature Connector State (see #0062)
  3821.     DX = XGA handle
  3822. Return: AL = 4Eh if function supported
  3823.     AH = status
  3824.         00h     function successful
  3825.         else error code
  3826. SeeAlso: AX=4E00h,AX=4E06h
  3827.  
  3828. Bitfields for XGA Feature Connector State:
  3829. Bit(s)    Description    (Table 0062)
  3830.  0    Feature Connector is enabled
  3831.  1    Feature Connector is in Output Mode rather than Input Mode
  3832.  2-15    reserved (0)
  3833. --------V-104E06-----------------------------------
  3834. INT 10 - VESA XGA BIOS Extensions - RETURN FEATURE CONNECTOR STATE
  3835.     AX = 4E06h
  3836.     DX = XGA handle
  3837. Return: AL = 4Eh if function supported
  3838.     AH = status
  3839.         00h     function successful
  3840.         else error code
  3841.     BX = Feature Connector State (see #0062)
  3842. SeeAlso: AX=4E00h,AX=4E05h
  3843. --------V-104F00-----------------------------
  3844. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  3845.     AX = 4F00h
  3846.     ES:DI -> 256-byte buffer for SuperVGA information (see #0063)
  3847. Return: AL = 4Fh if function supported
  3848.     AH = status
  3849.         00h successful
  3850.         ES:DI buffer filled
  3851.         01h failed
  3852. Desc:    determine whether VESA BIOS extensions are present and the capabilities
  3853.       supported by the display adapter
  3854. SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h,AX=A00Ch
  3855. Index:    installation check;VESA SuperVGA
  3856.  
  3857. Format of SuperVGA information:
  3858. Offset    Size    Description    (Table 0063)
  3859.  00h  4 BYTEs    signature ("VESA")
  3860.  04h    WORD    VESA version number
  3861.  06h    DWORD    pointer to OEM name
  3862.         "761295520" for ATI
  3863.  0Ah  4 BYTEs    capabilities
  3864.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  3865.         (list of words terminated with FFFFh)
  3866.  12h    WORD    total amount of video memory in 64K blocks
  3867.  14h 236 BYTEs    reserved
  3868. Notes:    the list of supported video modes is stored in the reserved portion of
  3869.       the SuperVGA information record by some implementations, and it may
  3870.       thus be necessary to either copy the mode list or use a different
  3871.       buffer for all subsequent VESA calls
  3872.     the 1.1 VESA document specifies 242 reserved bytes at the end, so the
  3873.       buffer should be 262 bytes to ensure that it is not overrun
  3874. --------V-104F01-----------------------------
  3875. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  3876.     AX = 4F01h
  3877.     CX = SuperVGA video mode
  3878.     ES:DI -> 256-byte buffer for mode information (see #0064)
  3879. Return: AL = 4Fh function supported
  3880.     AH = status
  3881.         00h successful
  3882.         ES:DI buffer filled
  3883.         01h failed
  3884. Desc:    determine the attributes of the specified video mode
  3885. SeeAlso: AX=4F00h,AX=4F02h
  3886.  
  3887. Format of VESA SuperVGA mode information:
  3888. Offset    Size    Description    (Table 0064)
  3889.  00h    WORD    mode attributes (see #0065)
  3890.  02h    BYTE    window attributes, window A (see #0066)
  3891.  03h    BYTE    window attributes, window B (see #0066)
  3892.  04h    WORD    window granularity in KB
  3893.  06h    WORD    window size in KB
  3894.  08h    WORD    start segment of window A
  3895.  0Ah    WORD    start segment of window B
  3896.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  3897.  10h    WORD    bytes per scan line
  3898. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  3899.  12h    WORD    width in pixels (graphics) or characters (text)
  3900.  14h    WORD    height in pixels (graphics) or characters (text)
  3901.  16h    BYTE    width of character cell in pixels
  3902.  17h    BYTE    height of character cell in pixels
  3903.  18h    BYTE    number of memory planes
  3904.  19h    BYTE    number of bits per pixel
  3905.  1Ah    BYTE    number of banks
  3906.  1Bh    BYTE    memory model type (see #0067)
  3907.  1Ch    BYTE    size of bank in KB
  3908.  1Dh    BYTE    number of image pages
  3909.  1Eh    BYTE    reserved (0)
  3910. ---VBE v1.2+---
  3911.  1Fh    BYTE    red mask size
  3912.  20h    BYTE    red field position
  3913.  21h    BYTE    green mask size
  3914.  22h    BYTE    green field size
  3915.  23h    BYTE    blue mask size
  3916.  24h    BYTE    blue field size
  3917.  25h    BYTE    reserved mask size
  3918.  26h    BYTE    reserved mask position
  3919.  27h    BYTE    direct color mode info
  3920.  28h 216 BYTEs    reserved (0)
  3921.  
  3922. Bitfields for VESA SuperVGA mode attributes:
  3923. Bit(s)    Description    (Table 0065)
  3924.  0    mode supported
  3925.  1    optional information available
  3926.  2    BIOS output supported
  3927.  3    set if color, clear if monochrome
  3928.  4    set if graphics mode, clear if text mode
  3929.  
  3930. Bitfields for VESA SuperVGA window attributes:
  3931. Bit(s)    Description    (Table 0066)
  3932.  0    exists
  3933.  1    readable
  3934.  2    writable
  3935.  3-7    reserved
  3936.  
  3937. (Table 0067)
  3938. Values for VESA SuperVGA memory model type:
  3939.  00h    text
  3940.  01h    CGA graphics
  3941.  02h    HGC graphics
  3942.  03h    16-color (EGA) graphics
  3943.  04h    packed pixel graphics
  3944.  05h    "sequ 256" (non-chain 4) graphics
  3945.  06h    direct color (HiColor, 24-bit color)
  3946.  07h    YUV (luminance-chrominance, also called YIQ)
  3947.  08h-0Fh reserved for VESA
  3948.  10h-FFh OEM memory models
  3949. --------V-104F02-----------------------------
  3950. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  3951.     AX = 4F02h
  3952.     BX = mode
  3953.         bit 15 set means don't clear video memory
  3954. Return: AL = 4Fh function supported
  3955.     AH = status
  3956.         00h successful
  3957.         01h failed
  3958. SeeAlso: AX=4E03h,AX=4F01h,AX=4F03h
  3959.  
  3960. (Table 0068)
  3961. Values for VESA video mode:
  3962.  00h-FFh OEM video modes (see #0009 at AH=00h)
  3963.  100h    640x400x256
  3964.  101h    640x480x256
  3965.  102h    800x600x16
  3966.  103h    800x600x256
  3967.  104h    1024x768x16
  3968.  105h    1024x768x256
  3969.  106h    1280x1024x16
  3970.  107h    1280x1024x256
  3971.  108h    80x60 text
  3972.  109h    132x25 text
  3973.  10Ah    132x43 text
  3974.  10Bh    132x50 text
  3975.  10Ch    132x60 text
  3976. ---VBE v1.2---
  3977.  10Dh    320x200x32K
  3978.  10Eh    320x200x64K
  3979.  10Fh    320x200x16M
  3980.  110h    640x480x32K
  3981.  111h    640x480x64K
  3982.  112h    640x480x16M
  3983.  113h    800x600x32K
  3984.  114h    800x600x64K
  3985.  115h    800x600x16M
  3986.  116h    1024x768x32K
  3987.  117h    1024x768x64K
  3988.  118h    1024x768x16M
  3989.  119h    1280x1024x32K
  3990.  11Ah    1280x1024x64K
  3991.  11Bh    1280x1024x16M
  3992. Index:    video modes;VESA
  3993.  
  3994. (Table 0069)
  3995. Values for S3 OEM video mode:
  3996.  201h    640x480x256
  3997.  202h    800x600x16
  3998.  203h    800x600x256
  3999.  204h    1024x768x16
  4000.  205h    1024x768x256
  4001.  206h    1280x960x16
  4002.  207h    1152x864x256 (Diamond Stealth 64)
  4003.  208h    1280x1024x16
  4004.  20Ah    1152x864x64K (Diamond Stealth 64)
  4005.  211h    640x480x64K (Diamond Stealth 24)
  4006.  212h    640x480x16M (Diamond Stealth 24)
  4007.  301h    640x480x32K
  4008. Note:    these modes are only available on video cards using S3's VESA driver
  4009. Index:    video modes;S3
  4010. --------V-104F03-----------------------------
  4011. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  4012.     AX = 4F03h
  4013. Return: AL = 4Fh function supported
  4014.     AH = status
  4015.         00h successful
  4016.         BX = video mode (see #0068,#0069)
  4017.         01h failed
  4018. SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h
  4019. --------V-104F04-----------------------------
  4020. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  4021.     AX = 4F04h
  4022.     DL = subfunction
  4023.         00h get state buffer size
  4024.         Return: BX = number of 64-byte blocks needed
  4025.         01h save video states
  4026.         ES:BX -> buffer
  4027.         02h restore video states
  4028.         ES:BX -> buffer
  4029.     CX = states to save/restore (see #0070)
  4030. Return: AL = 4Fh function supported
  4031.     AH = status
  4032.         00h successful
  4033.         01h failed
  4034.  
  4035. Bitfields for VESA SuperVGA states to save/restore:
  4036. Bit(s)    Description    (Table 0070)
  4037.  0    video hardware state
  4038.  1    video BIOS data state
  4039.  2    video DAC state
  4040.  3    SuperVGA state
  4041. --------V-104F05-----------------------------
  4042. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  4043.     AX = 4F05h
  4044.     BH = subfunction
  4045.         00h select video memory window
  4046.         DX = window address in video memory (in granularity units)
  4047.         01h get video memory window
  4048.         Return: DX = window address in video memory (in gran. units)
  4049.     BL = window number
  4050.         00h window A
  4051.         01h window B
  4052. Return: AL = 4Fh function supported
  4053.     AH = status
  4054.         00h successful
  4055.         01h failed
  4056. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  4057. --------V-104F06-----------------------------
  4058. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH
  4059.     AX = 4F06h
  4060.     BL = function
  4061.         00h set scan line length
  4062.         CX = desired width in pixels
  4063.         01h get scan line length
  4064. Return: AL = 4Fh if function supported
  4065.     AH = status
  4066.         00h successful
  4067.         01h failed
  4068.     BX = bytes per scan line
  4069.     CX = number of pixels per scan line
  4070.     DX = maximum number of scan lines
  4071. Notes:    if the desired width is not achievable, the next larger width will be
  4072.       set
  4073.     the scan line may be wider than the visible area of the screen
  4074.     this function is valid in text modes, provided that values are
  4075.       multiplied by the character cell width/height
  4076. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  4077. --------V-104F07BH00-------------------------
  4078. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
  4079.     AX = 4F07h
  4080.     BH = 00h (reserved)
  4081.     BL = function
  4082.         00h set display start
  4083.         CX = leftmost displayed pixel in scan line
  4084.         DX = first displayed scan line
  4085.         01h get display start
  4086.         Return: BH = 00h
  4087.             CX = leftmost displayed pixel in scan line
  4088.             DX = first displayed scan line
  4089. Return: AL = 4Fh if function supported
  4090.     AH = status
  4091.         00h successful
  4092.         01h failed
  4093. Note:    this function is valid in text modes, provided that values are
  4094.       multiplied by the character cell width/height
  4095. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  4096. --------V-104F08-----------------------------
  4097. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  4098.     AX = 4F08h
  4099.     BL = function
  4100.         00h set DAC palette width
  4101.         BH = desired number of bits per primary color
  4102.         01h get DAC palette width
  4103. Return: AL = 4Fh if function supported
  4104.     AH = status
  4105.     BH = current number of bits per primary (06h = standard VGA)
  4106. --------p-104F10BL00-------------------------
  4107. INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET CAPABILITIES
  4108.     AX = 4F10h
  4109.     BL = 00h
  4110.     ES:DI = 0000h:0000h (reserved for future use)
  4111. Return: AL = 4Fh if function supported (installed)
  4112.     AH = call status
  4113.         00h successful
  4114.         else failed
  4115.     ---if successful---
  4116.     BL = VBE/PM version (bits 7-4: major, bits 3-0: minor)
  4117.     BH = supported states (see #0071)
  4118.     ES:DI unchanged
  4119. Index:    installation check;VESA VBE/Power Management
  4120. SeeAlso: AX=4F10h/BL=01h,AX=4F10h/BL=02h
  4121.  
  4122. Bitfields for VESA VBE/PM supported power states:
  4123. Bit(s)    Description    (Table 0071)
  4124.  0    standby
  4125.  1    suspend
  4126.  2    off
  4127.  3    (reduced on???)
  4128. --------p-104F10BL01-------------------------
  4129. INT 10 - VESA VBE/PM (Power Management) v1.0+ - SET DISPLAY POWER STATE
  4130.     AX = 4F10h
  4131.     BL = 01h
  4132.     BH = new state (see #0072)
  4133. Return: AL = 4Fh if function supported
  4134.     AH = call status
  4135.         00h successful
  4136.         else failed
  4137. SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=02h,AX=A00Ch
  4138.  
  4139. (Table 0072)
  4140. Values for VESA VBE/PM power state:
  4141.  00h    On
  4142.  01h    standby
  4143.  02h    suspend
  4144.  04h    Off
  4145.  08h    reduced On
  4146. --------p-104F10BL02-------------------------
  4147. INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET DISPLAY POWER STATE
  4148.     AX = 4F10h
  4149.     BL = 02h
  4150. Return: AL = 4Fh if function supported
  4151.     AH = call status
  4152.         00h successful
  4153.            BH = current power state (see #0072)
  4154.         else failed
  4155. SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=01h
  4156. --------s-104F13-----------------------------
  4157. INT 10 - VESA Audio Interface - API
  4158.     AX = 4F13h
  4159.     ??? details not yet available
  4160. ----------104F4D-----------------------------
  4161. INT 10 - VESA - VIDEO CURSOR INTERFACE REQUEST
  4162.     AX = 4F4Dh
  4163.     BX = number of bytes available for VCI use
  4164.     DS:0000h -> buffer for VCI
  4165.     ES:DI -> VCI driver callback function
  4166. Return: AL = 4Fh if supported
  4167.         AH = status
  4168.         00h successful
  4169.             BX = number of bytes used by VCI
  4170.             ES:DI -> VCI request handler
  4171.         01h failed
  4172. Desc:    allow the VESA BIOS Extensions to cooperate with a pointing-device
  4173.       (typically mouse) driver
  4174. --------V-104FFF-----------------------------
  4175. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  4176.     AX = 4FFFh
  4177.     DL = new state (00h off, 01h on)
  4178. Return: AX = 0000h if successful
  4179. --------V-104FFF-----------------------------
  4180. INT 10 - Diamond Stealth 24 - SET/RESET DUAL DISPLAY MODE
  4181.     AX = 4FFFh
  4182.     BX = dual display mode
  4183.         00h reset
  4184.         01h set dual display, 32KB VGA test
  4185.         02h set dual display, 64KB VGA test
  4186. Return: AX = 4F00h if successful
  4187.         BX = number of scanlines off screen for test mode
  4188. --------U-1050-------------------------------
  4189. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  4190.     AH = 50h
  4191. Return: BX = 1954h if installed
  4192.         AL = 00h if inactive, nonzero if active
  4193. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  4194. SeeAlso: AH=51h
  4195. --------J-105000-----------------------------
  4196. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  4197.     AX = 5000h
  4198.     BX = country code
  4199.         0001h USA (English), 0051h Japan
  4200. Return: AL = status
  4201.         00h successful
  4202.         01h bad country code
  4203.         02h other error
  4204. SeeAlso: AX=5001h,INT 16/AX=5000h
  4205. --------J-105001-----------------------------
  4206. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  4207.     AX = 5001h
  4208. Return: AL = status
  4209.         00h successful
  4210.         BX = country code
  4211.         02h error
  4212. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  4213. --------V-105049-----------------------------
  4214. INT 10 - VIDEO - SCREENR v1.55+ - API
  4215.     AX = 5049h ('PI')
  4216.     BX = function
  4217.         0000h installation check
  4218.         0001h lock mode
  4219.         0002h unlock mode
  4220.         0003h lock palette
  4221.         0004h unlock palette
  4222. Return: AX = 0000h if installed
  4223.         BX = TSR version (BH=major,BL=minor)
  4224.         CL = mode locking status
  4225.         00h mode not locked
  4226.         01h mode locked: INT 10/AH=00h disabled
  4227.         CH = palette locking status
  4228.         00h palette not locked
  4229.         01h palette locked, the following functions are disabled:
  4230.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  4231. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  4232.       utility.
  4233. Index:    installation check;SCREENR
  4234. --------U-1051-------------------------------
  4235. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  4236.     AH = 51h
  4237.     AL = state
  4238.         00h disable
  4239.         nonzero enable
  4240. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  4241. SeeAlso: AH=50h"SCROLOCK"
  4242. --------J-105100-----------------------------
  4243. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  4244.     AX = 5100h
  4245.     BH = character width in bits (10h)
  4246.     BL = character height (10h)
  4247.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  4248.     ES:BP -> character bitmap
  4249. Return: AL = status (00h successful, 01h failed)
  4250. SeeAlso: AX=5101h,INT 1F
  4251. --------J-105101-----------------------------
  4252. INT 10 - VIDEO - AX PC - READ CHARACTER
  4253.     AX = 5101h
  4254.     BH = character width in bits
  4255.     BL = character height
  4256.     DX = character code (DH = 00h if 8-bit character)
  4257.     ES:BP -> buffer for character bitmap
  4258. Return: AL = status (00h successful, 01h failed)
  4259. SeeAlso: AH=09h,AX=5100h
  4260. --------J-105200-----------------------------
  4261. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  4262.     AX = 5200h
  4263.     BX = segment of buffer
  4264. SeeAlso: AX=5201h
  4265. --------J-105201-----------------------------
  4266. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  4267.     AX = 5201h
  4268. Return: BX = segment of buffer or 0000h if failed
  4269. SeeAlso: AX=8300h,AH=FEh
  4270. ----------1053-------------------------------
  4271. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  4272.     AH = 53h
  4273.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  4274.         .PR2)
  4275. Return: ???
  4276. SeeAlso: AH=55h
  4277. ----------1055-------------------------------
  4278. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  4279.     AH = 55h
  4280. Return: FXSHOW.EXE removed from memory
  4281. SeeAlso: AH=53h
  4282. --------V-105555-----------------------------
  4283. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  4284.     AX = 5555h
  4285. Return: AX = AAAAh    if installed
  4286.     BX:CX -> ??? routine in SMS.COM resident portion
  4287.           -> data area (see #0073) in VCONFIG
  4288. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  4289.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  4290. SeeAlso: INT 10/AH=00h,INT 14/AX=AA01h,INT 2F/AX=6400h
  4291. Index:    screen saver;ATI Wonder SMS.COM
  4292.  
  4293. Format of ATI Super Switch data area:
  4294. Offset    Size    Description    (Table 0073)
  4295.  00h    DWORD    original INT 09 vector
  4296.  04h    DWORD    original INT 10 vector
  4297.  08h    DWORD    original INT 1C vector
  4298.  0Ch    WORD    screen saver state, 0=off, 1=on
  4299.  0Eh    WORD    blanking interval in clock ticks
  4300. --------V-105F00-----------------------------
  4301. INT 10 - Chips & Technologies Extended BIOS - RETURN 82C45X CHIP INFORMATION
  4302.     AX = 5F00h
  4303. Return: AL = 5Fh function supported
  4304.         BL = chip type (see #0074)
  4305.         BH = video memory size (00h 256KB, 01h 512KB, 02h 1MB)
  4306.         CX = miscellaneous information (see #0075)
  4307. SeeAlso: AX=5F01h
  4308.  
  4309. Bitfields for Chips&Technologies chip type:
  4310. Bit(s)    Description    (Table 0074)
  4311.  7-4    chip type
  4312.     0000: 82c451
  4313.     0001: 82c452
  4314.     0010: 82c455
  4315.     0011: 82c453
  4316.     0101: 82c456
  4317.     0110: 82c457
  4318.     0111: F65520
  4319.     1000: F65530
  4320.  3-0    revision number
  4321.  
  4322. Bitfields for Chips&Technologies miscellaneous information:
  4323. Bit(s)    Description    (Table 0075)
  4324.  0    DAC size (0=6-bit, 1=8-bit)
  4325.  1    system type (0=PC/AT, 1=PS/2)
  4326.  2    extended text modes supported by BIOS
  4327.  3    reserved
  4328.  4    extended graphics modes supported by BIOS
  4329.  5    reserved
  4330.  6    BIOS supports graphics cursor
  4331.  7    BIOS supports anti-aliased font
  4332.  8    BIOS supports pre-programmed emulation
  4333.  9    BIOS supports auto emulation
  4334.  10    BIOS supports variable mode set at cold boot
  4335.  11    BIOS supports variable mode set on warm boot
  4336.  12    BIOS supports emulation mode set at cold boot
  4337.  13    BIOS supports emulation mode set on warm boot
  4338.  14-15    reserved
  4339. --------V-105F00-----------------------------
  4340. INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION
  4341.     AX = 5F00h
  4342. Return: AH = 00h, if successful
  4343.     AL = chip version (the same value that VTEST.EXE reads)
  4344.         00h RTG3103???
  4345.         01h RTG31030/RTG3105
  4346.         02h RTG3106???
  4347.         3Fh non-Realtek chip
  4348. BUG:    in v3.C10, AX=5F00h on return due to improper stack restoration code
  4349. SeeAlso: AX=5F01h"RTVGA"
  4350. --------V-105F01-----------------------------
  4351. INT 10 - Chips & Technologies Extended BIOS - SET PREPROGRAMMED EMULATION
  4352.     AX = 5F01h
  4353.     BL = emulation type (see #0076)
  4354. Return: AL = 5Fh if function supported
  4355.         AH = status
  4356.         00h unsuccessful
  4357.         01h successful
  4358. SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak"
  4359.  
  4360. (Table 0076)
  4361. Values for Chips&Technologies emulation type:
  4362.  00h,01h reserved
  4363.  02h    CGA
  4364.  03h    MDA
  4365.  04h    Hercules
  4366.  05h    EGA
  4367.  06h    VGA
  4368. --------V-105F01-----------------------------
  4369. INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION
  4370.     AX = 5F01h
  4371.     ES:DI -> zero-filled buffer for BIOS ID string
  4372. Return: AH = 00h if successful
  4373.     ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10"
  4374. BUG:    in v3.C10, AX=5F01h on return due to improper stack restoration code
  4375. SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA"
  4376. --------V-105F02-----------------------------
  4377. INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION CONTROL
  4378.     AX = 5F02h
  4379.     BL = new state of autmatic emulation (00h enabled, 01h disabled)
  4380. Return: AL = 5Fh if function supported
  4381.         AH = status
  4382.         00h unsuccessful
  4383.         01h successful
  4384. SeeAlso: AX=5F01h,AX=5F03h
  4385. --------V-105F02-----------------------------
  4386. INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE
  4387.     AX = 5F02h
  4388. Return: AH = 00h, if successful
  4389.     AL = on-board memory size
  4390.          (00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K)
  4391. BUG:    in v3.C10, AX=5F02h on return due to improper stack restoration code
  4392. SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA"
  4393. --------V-105F03-----------------------------
  4394. INT 10 - VIDEO - Realtek RTVGA - SET ???
  4395.     AX = 5F03h
  4396.     BL = 0-3 (???)
  4397. Return: AH = 00h if successful
  4398. BUG:    in v3.C10, AX=5F03h on return due to improper stack restoration code
  4399. SeeAlso: AX=5F02h"RTVGA"
  4400. --------V-105F03-----------------------------
  4401. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON VIDEO CONDITIONS
  4402.     AX = 5F03h
  4403.     BL = configuration
  4404.         00h power-up display mode
  4405.         CL = display mode
  4406.         CH = mode (see #0077)
  4407.         01h power-up emulation mode
  4408.         CL = emulation mode (see #0076)
  4409.         CH = permanence (00h reset after next boot, 01h until changed)
  4410. Return: AL = 5Fh if function supported
  4411.         AH = status
  4412.         00h unsuccessful
  4413.         01h successful
  4414. SeeAlso: AX=5F02h,AX=5F03h/BL=01h,AX=5F90h
  4415.  
  4416. Bitfields for Chips&Technologies display mode:
  4417. Bit(s)    Description    (Table 0077)
  4418.  1-0    scanlines (00 = 200, 01 = 350, 10 = 400)
  4419.  7    persistence (0 reset on next boot, 1 until changed)
  4420. --------V-105F03BL01-------------------------
  4421. INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE
  4422.     AX = 5F03h
  4423.     BL = 01h
  4424.     CL = emulation mode
  4425.     CH = mode
  4426.         bit 7 persistence (0 reset on next boot, 1 until changed)
  4427. Return: AL = 5Fh if function supported
  4428.         AH = status
  4429.         00h unsuccessful
  4430.         01h successful
  4431. SeeAlso: AX=5F02h,AX=5F03h/BL=00h,AX=5F90h
  4432. --------V-105F-------------------------------
  4433. INT 10 - Chips & Technologies Extended BIOS - SAVE/RESTORE SUPERVGA STATE
  4434.     AH = 5Fh
  4435.     AL = subfunction
  4436.         90h determine size of save buffer
  4437.         91h save state
  4438.         92h restore state
  4439.     CX = state mask (see #0078)
  4440.     ES:BX -> save buffer (subfunctions 91h,92h only)
  4441. Return: AL = 5Fh if function supported
  4442.         ---subfunction 90h---
  4443.         BX = number of 64-byte blocks required
  4444.         ---subfunction 92h---
  4445.         buffer at ES:BX filled
  4446. SeeAlso: AH=1Ch,AX=5F03h
  4447.  
  4448. Bitfields for Chips&Technologies state mask:
  4449. Bit(s)    Description    (Table 0078)
  4450.  0    video hardware
  4451.  1    BIOS data state
  4452.  2    DAC state
  4453.  15    type (0 all state info, 1 SuperVGA state only)
  4454. --------V-1060------------------------------------
  4455. INT 10 - HUNTER 16 - SET GRAPHICS FONT
  4456.     AH = 60h
  4457.     AL = new font
  4458.         bit 7    output characters in reverse video
  4459.         bits 0-6 font number (see #0092 at AH=77h)
  4460. Return: BH = cell width            
  4461.     BL = cell height
  4462. Desc:    select the font to use for output in mode 6; this can be used to mix
  4463.       fonts on the screen
  4464. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4465.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4466. SeeAlso: AH=04h"HUNTER",AH=73h"HUNTER",AH=77h"HUNTER"
  4467. --------V-1061------------------------------------
  4468. INT 10 - HUNTER 16 - MOVE CURSOR TO GRAPHICS CO-ORDINATES
  4469.     AH = 61h
  4470.     CX = column
  4471.     DX = row
  4472. Note:    this function is only valid in graphics modes
  4473. SeeAlso: AH=62h
  4474. --------V-1062------------------------------------
  4475. INT 10 - HUNTER 16 - GET CURSOR POSITION IN GRAPHICS CO-ORDINATES
  4476.     AH = 62h
  4477. Return: CX = column
  4478.     DX = row
  4479. Note:    this function is only valid in graphics modes
  4480. SeeAlso: AH=61h
  4481. --------V-1063------------------------------------
  4482. INT 10 - HUNTER 16 - SET CONTRAST
  4483.     AH = 63h
  4484.     AL = contrast (0..127)
  4485. Desc:    set the LCD screen contrast to improve visibility
  4486. SeeAlso: AH=64h,AH=75h
  4487. --------V-1064------------------------------------
  4488. INT 10 - HUNTER 16 - SET BACKLIGHT LEVEL
  4489.     AH = 64h
  4490.     AL = level (0..15)
  4491. Desc:    set the LCD backlight level to improve visibility in bad lighting
  4492. SeeAlso: AH=63h,AH=65h,AH=74h,AH=78h"HUNTER",INT 15/AH=74h
  4493. --------V-106500----------------------------------
  4494. INT 10 - HUNTER 16 - GET BACKLIGHT TIMEOUT
  4495.     AX = 6500h
  4496. Return: BX = timeout in seconds (0-300)
  4497. Desc:    returns the time after which the backlight will turn off
  4498. SeeAlso: AH=63h,AH=64h,AX=6501h,INT 15/AH=74h
  4499. --------V-106501----------------------------------
  4500. INT 10 - HUNTER 16 - SET BACKLIGHT TIMEOUT
  4501.     AX = 6501h
  4502.     BX = timeout in seconds (0-300)
  4503. Desc:    set the idle time after which the backlight will turn off
  4504. SeeAlso: AH=64h,AX=6500h
  4505. --------V-1066------------------------------------
  4506. INT 10 - HUNTER 16 - SPLIT DISPLAY
  4507.     AH = 66h
  4508.     AL = control bits (see #0079)
  4509.     BH = top row of lower section of LCD (0..7)
  4510.     BL = top row of lower section of the virtual screen (0..24)
  4511. Desc:    split the LCD screen horizontally into two parts; each part may be 
  4512.       individually scrollable or fixed.
  4513. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  4514.       a 640x200 virtual screen
  4515.  
  4516. Bitfields for HUNTER 16 control bits:
  4517. Bit(s)    Description    (Table 0079)
  4518.  0-1    01: no split, 10: allow split
  4519.  2    allow scrolling the upper part
  4520.  3    allow scrolling the lower part 
  4521. --------V-106A00BX0000-----------------------
  4522. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  4523.     AX = 6A00h
  4524.     BX = 0000h
  4525.     CX = 0000h
  4526.     DX = buffer length (may be 0)
  4527.     ES:DI -> buffer
  4528. Return: BX = number of bytes stored in buffer
  4529.     CX = bytes required for all descriptions (0 if no DGIS)
  4530. Note:    buffer contains descriptions and addresses of DGIS-compatible
  4531.       display(s) and printer(s)
  4532. SeeAlso: AX=6A02h
  4533. --------V-106A01CX0000-----------------------
  4534. INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
  4535.     AX = 6A01h
  4536.     CX = 0000h
  4537.     ES:DI = address of device to send INT 10 output to
  4538. Return: CX = 0000h  output could not be redirected
  4539.          else INT 10h output now routed to requested display
  4540. SeeAlso: AX=6A02h
  4541. --------V-106A02-----------------------------
  4542. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  4543.     AX = 6A02h
  4544.     ES:DI = 0000h:0000h
  4545. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  4546.         else address of the current DGIS INT 10 display
  4547. SeeAlso: AX=6A00h,AX=6A01h
  4548. --------V-106E00-----------------------------
  4549. INT 10 - Paradise VGA internal - GET ???
  4550.     AX = 6E00h
  4551. Return: BX = 5744h ('WD') if supported
  4552.         DH:AH:AL = last three ASCII digits of ROM serial number
  4553.         CL = ???
  4554.         CH = ???
  4555. SeeAlso: AX=6E04h,AX=6E05h
  4556. --------V-106E04-----------------------------
  4557. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  4558.     AX = 6E04h
  4559. Return: BX = screen width (columns)
  4560.     CX = screen height (lines)
  4561.     AH = ??? (05h or FFh)
  4562.     AL = ??? (04h or video mode)
  4563. SeeAlso: AX=6E00h,AX=6E05h
  4564. --------V-106E05-----------------------------
  4565. INT 10 - Paradise VGA internal - SET MODE
  4566.     AX = 6E05h
  4567.     BL = mode
  4568. Note:    like AH=00h, AL=BL.
  4569. SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h
  4570. --------V-106F00BX0000-----------------------
  4571. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
  4572.     AX = 6F00h
  4573.     BX = 0000h
  4574. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  4575.     BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  4576. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  4577. --------V-106F01-----------------------------
  4578. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
  4579.     AX = 6F01h
  4580. Return: AL = monitor type code (HP,VEGA VGA only) (see #0080)
  4581.     AH = status register information (see #0081)
  4582.     CL = current value of Extended Control register (HP Ext BIOS, and only
  4583.         if AL=41h)
  4584. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  4585.  
  4586. (Table 0080)
  4587. Values for monitor type code (HP Extended BIOS):
  4588.  00h    non-HP card with ROM and possibly its own INT 10h driver
  4589.  41h    MultiMode video display adapter
  4590.  42h-44h reserved
  4591.  45h    industry standard monochrome display adapter
  4592.  46h    industry standard color display adapter
  4593.  51h    reserved
  4594.  
  4595. Bitfields for status register information:
  4596. Bit(s)    Description    (Table 0081)
  4597.  0    display enable
  4598.     0 = display enabled
  4599.     1 = vertical or horizontal retrace in progress
  4600.  1    light pen flip flop set
  4601.  2    light pen switch activated
  4602.  3    vertical sync
  4603.  4    monitor resolution
  4604.     0 = high resolution (>200 lines)
  4605.     1 = low resolution (<=200 lines)
  4606.  5    display type (0 = color, 1 = monochrome)
  4607.  6,7    diagnostic bits
  4608. --------V-106F02-----------------------------
  4609. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - SET MONITOR INFO
  4610.     AX = 6F02h
  4611.     BL = new value for extended control register (see #0082)
  4612. Return: nothing
  4613. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  4614.       is installed
  4615.     the Extended Control register is at I/O address 3DDh
  4616. SeeAlso: AX=6F01h,AX=6F03h
  4617.  
  4618. Bitfields for HP Vectra extended control register:
  4619. Bit(s)    Description    (Table 0082)
  4620.  0    screen resolution (0 = 200 lines, 1 = 400 lines)
  4621.  1    underline enable (if set, 'blue' of fg color = underl)
  4622.  2    font (0 = Standard-8, 1 = HP-Roman-8)
  4623.  3    memory disabled for CPU access
  4624.  4    allow access to full 32K memory instead of wrapping at 16K
  4625.  5    select second 16K page instead of first
  4626.  6,7    unused
  4627. --------V-106F03-----------------------------
  4628. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
  4629.     AX = 6F03h
  4630.     BH = exclude mask (set bits are not modified)
  4631.     BL = new values for bits indicated by BH (see #0082)
  4632. Return: nothing
  4633. Note:    this function is only valid when an HP MultiMode Video Display Adapter
  4634.       is installed
  4635. SeeAlso: AX=6F01h,AX=6F02h
  4636. --------V-106F04-----------------------------
  4637. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  4638.     AX = 6F04h
  4639. Return: AL = current video mode (see #0083)
  4640.     BX = horizontal columns (text) or pixels (graphics)
  4641.     CX = vertical columns (text) or pixels (graphics)
  4642. SeeAlso: AX=6F05h
  4643. --------V-106F05-----------------------------
  4644. INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
  4645.     AX = 6F05h
  4646.     BL = mode (see #0083)
  4647. Notes:    also supported by the HP Vectra Extended BIOS
  4648.     on the HP Vectra, this function rather than AH=00h must be used to
  4649.       return to an IBM-standard mode after setting an HP-specified mode
  4650.       from 08h to 0Fh.
  4651. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  4652.  
  4653. (Table 0083)
  4654. Values for Video7/VEGA video mode:
  4655.      text/ text pixel    pixel    colors disply scrn  system
  4656.      grph resol     box  resolution       pages  addr
  4657.  00h-13h = standard IBM modes (see #0009 at AH=00h)
  4658.  08h = T  80x27      .      .    mono      .    .  HP MultiMode Video
  4659.  09h = T  80x27      .      .      .      .    .  HP MultiMode Video
  4660.  0Ah = T  40x27      .      .    mono      .    .  HP MultiMode Video
  4661.  0Bh = T  40x27      .      .      .      .    .  HP MultiMode Video
  4662.  0Ch = reserved                       HP MultiMode Video
  4663.  0Dh = G    .      .    640x400      .      .    .  HP MultiMode Video
  4664.  0Eh = G    .      .    320x400      .      .    .  HP MultiMode Video
  4665.  0Fh = G    .      .    320x400      .      .    .  HP MultiMode Video
  4666.  40h = T  80x43     8x8      .      .      .    .  Video7/VEGA VGA
  4667.  41h = T 132x25     8x14      .      .      .    .  Video7/VEGA VGA
  4668.  42h = T 132x43     8x8      .      .      .    .  Video7/VEGA VGA
  4669.  43h = T  80x60     8x8      .      .      .    .  Video7/VEGA VGA
  4670.  44h = T 100x60     8x8      .      .      .    .  Video7/VEGA VGA
  4671.  45h = T 132x28     8x8      .      .      .    .  Video7/VEGA VGA
  4672.  60h = G    .      .    752x410     16      .    .  Video7 VGA, VEGA VGA
  4673.  61h = G    .      .    720x540     16      .    .  Video7 VGA, VEGA VGA
  4674.      = G    .      .    720x540     16      .    .  Northgate, Headland 1024i
  4675.  62h = G    .      .    800x600     16      .    .  Video7 VGA, VEGA Ext EGA
  4676.      = G    .      .    800x600     16      .    .  Headland 1024i
  4677.  63h = G    .      .   1024x768      2      .    .  Video7 VGA
  4678.  64h = G    .      .   1024x768      4      .    .  Video7 VGA
  4679.  65h = G    .      .   1024x768     16      .    .  Video7 VGA, VEGA Ext EGA
  4680.      = G    .      .   1024x768     16      .    .  Headland 1024i
  4681.  66h = G    .      .    640x400    256      .    .  Video7 VGA, VEGA Ext VGA
  4682.      = G    .      .    640x400    256      .    .  Northgate, Headland 1024i
  4683.  67h = G    .      .    640x480    256      .    .  Video7 VGA, VEGA Ext VGA
  4684.      = G    .      .    640x480    256      .    .  Headland 1024i
  4685.  68h = G    .      .    720x540    256      .    .  Video7 VGA, VEGA Ext VGA
  4686.      = G    .      .    720x540    256      .    .  Headland 1024i
  4687.  69h = G    .      .    800x600    256      .    .  Video7 VGA, VEGA Ext VGA
  4688.      = G    .      .    800x600    256      .    .  Headland 1024i
  4689.  70h = G    .      .    752x410     16gray      .    .  Video7 VGA, VEGA VGA
  4690.  71h = G    .      .    720x540     16gray      .    .  Video7 VGA, VEGA VGA
  4691.  72h = G    .      .    800x600     16gray      .    .  Video7 VGA
  4692.  73h = G    .      .   1024x768      2gray      .    .  Video7 VGA
  4693.  74h = G    .      .   1024x768      4gray      .    .  Video7 VGA
  4694.  75h = G    .      .   1024x768     16gray      .    .  Video7 VGA
  4695.  76h = G    .      .    640x400    256gray      .    .  Video7 VGA
  4696.  77h = G    .      .    640x480    256gray      .    .  Video7 VGA
  4697.  78h = G    .      .    720x540    256gray      .    .  Video7 VGA
  4698.  79h = G    .      .    800x600    256gray      .    .  (future)
  4699. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  4700. Index:    video modes;Video 7|video modes;VEGA|video modes;Headland
  4701. --------V-106F06-----------------------------
  4702. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  4703.     AX = 6F06h
  4704.     BL = Autoswitch mode select
  4705.          00h select EGA/VGA-only modes
  4706.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  4707.          02h select 'bootup' CGA/MGA modes
  4708.     BH = enable/disable (00h enable, 01h = disable selection)
  4709. --------V-106F07-----------------------------
  4710. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  4711.     AX = 6F07h
  4712. Return: AL = 6Fh
  4713.     AH = memory configuration
  4714.         bits 0-6 = number of 256K blocks of video memory
  4715.         bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  4716.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  4717.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  4718.     CX = 0000h
  4719. SeeAlso: AH=12h/BL=10h
  4720. --------V-1070-------------------------------
  4721. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  4722.     AH = 70h
  4723. Return: AX:BX -> WORD containing green plane's offset
  4724.     AX:CX -> WORD containing green plane's segment
  4725.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  4726.             4000) planes
  4727. SeeAlso: AH=71h
  4728. --------V-1070------------------------------------
  4729. INT 10 - HUNTER 16 - DRAW ELLIPSE/CIRCLE
  4730.     AH = 70h
  4731.     DS:BX -> control block (see #0084)
  4732. Desc:    Draws a circle or ellipse. Only valid in graphics modes.
  4733. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4734.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4735. SeeAlso: AH=71h"HUNTER"
  4736.  
  4737. Format of HUNTER 16 control block:
  4738. Offset    Size    Description    (Table 0084)
  4739.  00h    WORD    center X co-ordinate
  4740.  02h    BYTE    center Y co-ordinate
  4741.  03h    WORD    radius in pixels
  4742.  05h    BYTE    color (00h white, 01h black, FFh invert)
  4743.  06h    BYTE    aspect ratio x:x (1-127)
  4744.  07h    BYTE    aspect ratio y:y (1-127)
  4745. --------V-107000BX0000-----------------------
  4746. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  4747.     AX = 7000h
  4748.     BX = 0000h
  4749. Return: AL = 70h if Trident-based Everex card
  4750.     CL = monitor type (see #0085)
  4751.     CH = feature bits (see #0086)
  4752.     DX = video board info
  4753.         bits 4-15: board ID model (see #0087)
  4754.         bits 0-3:  board ID revision
  4755.     DI = BCD BIOS version number
  4756. SeeAlso: AX=5F01h,AH=FF"Oak"
  4757.  
  4758. (Table 0085)
  4759. Values for Everex monitor type:
  4760.  00h    mono
  4761.  01h    CGA
  4762.  02h    EGA
  4763.  03h    digital multifrequency
  4764.  04h    IBM PS/2
  4765.  05h    IBM 8514
  4766.  06h    SuperVGA
  4767.  07h    analog multifrequency
  4768.  08h    super multifrequency
  4769.  
  4770. Bitfields for Everex feature bits:
  4771. Bit(s)    Description    (Table 0086)
  4772.  7-6    memory size
  4773.     00 = 256K
  4774.     01 = 512K
  4775.     10 = 1024K
  4776.     11 = 2048K
  4777.  5    special oscillator present
  4778.  4    VGA protect enabled
  4779.  0    6845 emulation
  4780.  
  4781. (Table 0087)
  4782. Values for board model for Trident-based Everex cards:
  4783.  0236h    Ultragraphics II
  4784.  0620h    Vision VGA
  4785.  0673h    EVGA
  4786.  0678h    Viewpoint
  4787. --------V-107000BX0004-----------------------
  4788. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  4789.     AX = 7000h
  4790.     BX = 0004h
  4791. Return: ES:DI -> FAR paging function (call with DL = page to set)
  4792. Note:    the word preceding ES:DI is the length of the function in bytes, and
  4793.       the last byte of the function is a FAR return instruction.
  4794. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  4795. --------V-107000BX0005-----------------------
  4796. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  4797.     AX = 7000h
  4798.     BX = 0005h
  4799.     CL = maximum number of modes to get info for
  4800.     CH = mode type to get info for (see #0088)
  4801.     DL = monitor type to get info for
  4802.     ES:DI -> buffer for mode info (see #0089)
  4803. Return: CL = total number of modes fitting criteria
  4804.     CH = size of each info record
  4805. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  4806.  
  4807. (Table 0088)
  4808. Values for Everex mode type:
  4809.  00h    all modes
  4810.  01h    monochrome text modes
  4811.  02h    color text modes
  4812.  03h    four-color CGA graphics modes
  4813.  04h    two-color CGA graphics modes
  4814.  05h    16-color graphics modes
  4815.  06h    256-color graphics modes
  4816.  
  4817. Format of Everex mode information record:
  4818. Offset    Size    Description    (Table 0089)
  4819.  00h    BYTE    mode number (bit 7 set if extended mode)
  4820.  01h    BYTE    mode type (see #0088)
  4821.  02h    BYTE    info bits (see #0090)
  4822.  03h    BYTE    font height
  4823.  04h    BYTE    text columns on screen
  4824.  05h    BYTE    text rows on screen
  4825.  06h    WORD    number of scan lines
  4826.  08h    BYTE    color information
  4827.         bits 7-4 reserved
  4828.              3-0 bits per pixel
  4829.  
  4830. Bitfields for Everex info bits:
  4831. Bit(s)    Description    (Table 0090)
  4832.  7,6    reserved
  4833.  5    monochrome mode
  4834.  4    interlaced display
  4835.  3    requires special oscillator
  4836.  2,1    memory required (00 = 256K, 01 = 512K, 10 = 1024K, 11 = 2048K)
  4837.  0    reserved
  4838. --------V-1071-------------------------------
  4839. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  4840.     AH = 71h
  4841. Return: AX:BX -> WORD containing segment address of INCRAM
  4842.     AX:CX -> WORD containing offset of INCRAM
  4843. SeeAlso: AH=70h"TANDY"
  4844. --------V-1071------------------------------------
  4845. INT 10 - HUNTER 16 - DRAW LINE/BOX
  4846.     AH = 71h
  4847.     DS:BX -> control block (see #0091)
  4848. Desc:    Draws a line or box. Only valid in graphics modes.
  4849. SeeAlso: AH=70h"HUNTER"
  4850.  
  4851. Format of HUNTER 16 control block:
  4852. Offset    Size    Description    (Table 0091)
  4853.  00h    WORD    left edge X co-ordinate
  4854.  02h    BYTE    lower edge Y co-ordinate
  4855.  03h    WORD    right edge X co-ordinate
  4856.  05h    BYTE    upper edge Y co-ordinate
  4857.  06h    BYTE    color (00h white, 01h black, FFh invert)
  4858.  07h    BYTE    type (00h line, 01h box)
  4859.  08h    BYTE    if non-zero (and type is BOX) fill with color
  4860. --------V-1072-------------------------------
  4861. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  4862.     AH = 72h
  4863.     AL = number of columns to shift scroll area, 00h to clear entire area
  4864.     BH = new attributes for blanked columns at left
  4865.     CH,CL = row, column of upper left corner of scroll area
  4866.     DH,DL = row, column of lower right corner of scroll area
  4867. SeeAlso: AH=06h,AH=07h,AH=73h"TANDY",INT 15/AH=12h/BH=05h
  4868. --------V-1072------------------------------------
  4869. INT 10 - HUNTER 16 - SELECT TEXT-MODE INVERSE VIDEO MECHANISM
  4870.     AH = 72h
  4871.     AL = mechanism to use
  4872.         00h do not use inverse video
  4873.         01h emulate MDA. Display attribute 07h is normal video and 70h is
  4874.         inverse video.
  4875.         02h use inverse video if background is non-black.
  4876.         03h use inverse video for high intensity text.
  4877.         04h use inverse video for text with background intensity greater
  4878.         than foreground intensity.
  4879.         05h use inverse video for text with background color other than
  4880.         black or high intensity foreground.
  4881. SeeAlso: AH=70h"HUNTER",AH=71h"HUNTER"
  4882. --------V-1073-------------------------------
  4883. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  4884.     AH = 73h
  4885.     AL = number of columns to shift scroll area, 00h to clear entire area
  4886.     BH = new attributes for blanked columns at right
  4887.     CH,CL = row, column of upper left corner of scroll area
  4888.     DH,DL = row, column of lower right corner of scroll area
  4889. SeeAlso: AH=06h,AH=07h,AH=72h"TANDY",INT 15/AH=12h/BH=05h
  4890. --------V-1073------------------------------------
  4891. INT 10 - HUNTER 16 - SELECT TEXT FONT
  4892.     AH = 73h
  4893.     AL = new font
  4894.           00h  7x7 in a 8x8 cell
  4895.           01h  5x7 in a 6x8 cell
  4896.           06h  3x5 in a 4x6 cell
  4897. Retuen: BH = cell width
  4898.     BL = cell height
  4899. SeeAlso: AH=60h"HUNTER",AH=77h"HUNTER"
  4900. --------V-1074------------------------------------
  4901. INT 10 - HUNTER 16 - SET LCD WINDOWS POSITION
  4902.     AH = 74h
  4903.     DH = row (0..24)
  4904.     DL = column (0..79)
  4905. Desc:    set the position in the virtual screen being displayed in the LCD
  4906.       screen. If Split Screen (INT 10/AH=66h) is used, this call sets the
  4907.       position for the window which has the cursor.
  4908. SeeAlso: AH=66h"HUNTER",AH=75h,AH=76h
  4909. --------V-1075------------------------------------
  4910. INT 10 - HUNTER 16 - SET ZOOM
  4911.     AH = 75h
  4912.     AL = new Zoom state (00h off, nonzero on)
  4913. SeeAlso: AH=74h,AH=76h
  4914. --------V-1076------------------------------------
  4915. INT 10 - HUNTER 16 - LOOKING KEYS
  4916.     AH = 76h
  4917.     AL = Action
  4918.          00h home the window
  4919.          01h move up one line
  4920.          02h move down one line
  4921.          03h move left one character
  4922.          04h move right one character
  4923.          05h flip window to other side of virtual screen
  4924. Desc:    moves the displayed screen around the virtual screen
  4925. SeeAlso: AH=74h,AH=75h
  4926. --------V-1077------------------------------------
  4927. INT 10 - HUNTER 16 - GET GRAPHICS FONT
  4928.     AH = 77h
  4929. Return: AL = font number (see #0092)
  4930. SeeAlso: AH=60h"HUNTER",AH=73h"HUNTER"
  4931.  
  4932. (Table 0092)
  4933. Values for HUNTER 16 graphics font number:
  4934.  00h     7x7  in a  8x8     cell 
  4935.  01h     5x7  in a  6x8     cell
  4936.  02h     7x9  in a  8x10 cell
  4937.  03h    14x9  in a 16x10 cell
  4938.  04h     7x18 in a  8x20 cell
  4939.  05h    14x18 in a 16x20 cell
  4940.  06h     3x5  in a  4x6     cell
  4941. Note:    size is X * Y
  4942. --------V-1078------------------------------------
  4943. INT 10 - HUNTER 16 - TURN BACKLIGHT ON/OFF
  4944.     AH = 78h 
  4945.     AL = new state of backlight (00h on, 01h off)
  4946. SeeAlso: AH=64h,INT 15/AH=74h
  4947. --------V-107F00-----------------------------
  4948. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  4949.     AX = 7F00h
  4950. Return: AL <> 7Fh if not supported
  4951.     AL = 7Fh if supported
  4952.         AH = status
  4953.         00h successful
  4954.             ES:DI -> info structure (see #0093)
  4955.         01h failed
  4956. Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are
  4957.       an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by
  4958.       Seiko Epson Corporation intended to provided a standardized interface
  4959.       to SuperVGA functionality not addressed by the VESA standard
  4960. SeeAlso: AX=4F00h
  4961.  
  4962. Format of SOLLEX SuperVGA info structure:
  4963. Offset    Size    Description    (Table 0093)
  4964.  00h    DWORD    pointer to VESA function dispatch table
  4965.  04h    DWORD    pointer to SOLLEX function dispatch table
  4966.  08h    DWORD    pointer to VESA SuperVGA info (see #0063 at AX=4F00h)
  4967.  0Ch    DWORD    pointer to mode info structure table, consisting of
  4968.           alternating ResInfo (see #0094) and VESA mode information
  4969.           (see #0064 at AX=4F01h) blocks, terminated with an FFFFh word
  4970.  10h    DWORD    pointer to font info structure table (see #0095)
  4971.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  4972.  16h    DWORD    pointer to ASCIZ ID string
  4973.  1Ah    DWORD    pointer to timeout reset table
  4974.         array of bytes, each a multiple of the minimum time increment
  4975.  1Eh    WORD    minimum time increment in timer ticks
  4976.  20h    BYTE    inverse options supported
  4977.         bit 0: inverse supported
  4978.         bits 1-7: reserved
  4979.  21h    BYTE    normal color value
  4980.  22h    BYTE    inverse color value
  4981.  23h    WORD    port to be accessed for normal/inverse settings
  4982.  25h    WORD    type of interface chip (currently undefined)
  4983.  27h    WORD    program operational mode
  4984.         bits 1-0: 00 no preference
  4985.               01 terse (minimum detail in program messages)
  4986.               10 verbose
  4987.               11 use menus if supported, verbose mode otherwise
  4988.         bits 7-2: reserved
  4989.  29h    WORD    SOLLEX specification version
  4990.  2Bh    WORD    version of VESA/SOLLEX implementation
  4991.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  4992.  2Eh    DWORD    offset to unused section of the extensions ROM
  4993.  31h 16 BYTEs    reserved
  4994. Note:    all DWORD pointers initially require segment fixups; if the segment
  4995.       is 0000h, it should be changed to the returned ES, otherwise it
  4996.       may be assumed to be correct
  4997.  
  4998. Format of SOLLEX SuperVGA ResInfo:
  4999. Offset    Size    Description    (Table 0094)
  5000.  00h    WORD    16-bit mode number
  5001.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  5002.  04h    WORD    display info (see #0098)
  5003.  06h    DWORD    pointer to video parameter table
  5004.  0Ah    BYTE    replacement entry in master Video Parameter
  5005.  0Bh    BYTE    mode requested for mode set by BIOS
  5006.  0Ch    DWORD    pointer to LoadReg table
  5007.  10h    BYTE    index into table of clock values (see #0096)
  5008.  
  5009. Format of SOLLEX SuperVGA font info table [array] entry:
  5010. Offset    Size    Description    (Table 0095)
  5011.  00h    BYTE    required font height
  5012.  01h    BYTE    parameter to load text mode font
  5013.  02h    BYTE    parameter to load graphics mode font
  5014.  
  5015. (Table 0096)
  5016. Values for SOLLEX SuperVGA clock value index:
  5017.  00h    25 MHz
  5018.  01h    28 MHz
  5019.  02h    PCLK
  5020.  03h    31.5 MHz (VESA 640x480)
  5021.  04h    reserved
  5022.  05h    16 MHz (EGA)
  5023.  06h    PCLK
  5024.  07h    24 MHz (EGA)
  5025.  08h    25 MHz
  5026.  09h    28 MHz
  5027.  0Ah    36 MHz
  5028.  0Bh    45 MHz (for 1024x768)
  5029.  0Ch    80 MHz
  5030.  0Dh    40 MHz
  5031.  0Eh    65 MHz
  5032.  0Fh     1 MHz (for powerdown)
  5033. --------V-107F00BX4000-----------------------
  5034. INT 10 - Diamond Stealth 24 - GET S3 INFORMATION BLOCK
  5035.     AX = 7F00h
  5036.     BX = 4000h
  5037. Return: AX = 007Fh if supported
  5038.         DX:BX -> DAC set mode routine
  5039. SeeAlso: AX=7F00h/BX=4001h,AX=7F00h/BX=4002h
  5040. --------V-107F00BX4001-----------------------
  5041. INT 10 - Diamond Stealth 24 - GET LINEAR ADDRESS
  5042.     AX = 7F00h
  5043.     BX = 4001h
  5044. Return: AX = 007Fh if supported
  5045.         CX = current linear address base (high word)
  5046. SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4002h
  5047. --------V-107F00BX4002-----------------------
  5048. INT 10 - Diamond Stealth 24 - SET LINEAR ADDRESS
  5049.     AX = 7F00h
  5050.     BX = 4002h
  5051.     CX = new linear address base (high word)
  5052. Return: AX = 007Fh if supported
  5053. SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4001h
  5054. --------V-107F01BL00-------------------------
  5055. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  5056.     AX = 7F01h
  5057.     BL = 00h
  5058.     CX = adapter request (see #0097)
  5059. Return:    AL <> 7Fh if not supported
  5060.     AL = 7Fh if supported
  5061.         AH = status
  5062.         00h successful
  5063.         01h failed
  5064. Note:    initializes video hardware to a particular standard
  5065. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  5066.  
  5067. Bitfields for SOLLEX SuperVGA adapter request:
  5068. Bit(s)    Description    (Table 0097)
  5069.  1-0    adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  5070.  2    reserved
  5071.  4-3    change displays (00 none, 01 analog 10 digital 11 panel)
  5072.  6-5    desired monitor sense (01 color, 10 mono, 11=8514)
  5073.  7    lock override
  5074.  8    alternate adapter mode
  5075.  15-9    reserved
  5076. --------V-107F01BL01-------------------------
  5077. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  5078.     AX = 7F01h
  5079.     BL = 01h
  5080. Return: AL <> 7Fh if not supported
  5081.     AL = 7Fh if supported
  5082.         AH = status
  5083.         00h successful
  5084.         01h failed
  5085.         BX = adapter type (see #0097)
  5086.         DX = display type (see #0098)
  5087. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  5088.  
  5089. Bitfields for SOLLEX SuperVGA display type:
  5090. Bit(s)    Description    (Table 0098)
  5091.  15-9    reserved
  5092.  8    alternate display active
  5093.  7    Enhanced Color Display monitor active
  5094.  6    multi-frequency digital monitor active
  5095.  5    PS/2-type monitor active
  5096.  4    plasma/electroluminescent panel active
  5097.  3    LCD panel active
  5098.  2    multi-frequency analog monitor active
  5099.  1-0    monitor sense (00 none, 01 color, 10 mono, 11=8514)
  5100. --------V-107F01BL02-------------------------
  5101. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  5102.     AX = 7F01h
  5103.     BL = 02h
  5104.     CX = adapter request (see #0097)
  5105. Return: AL <> 7Fh if not supported
  5106.     AL = 7Fh if supported
  5107.         AH = status
  5108.         00h requested setting can successfully be made
  5109.         01h requested setting not available in this configuration
  5110. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  5111. --------V-107F02BL00-------------------------
  5112. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  5113.     AX = 7F02h
  5114.     BL = 00h
  5115.     CX = display output setting (see #0099)
  5116. Return: AL <> 7Fh if not supported
  5117.     AL = 7Fh if supported
  5118.         AH = status
  5119.         00h successful
  5120.         01h failed
  5121. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  5122.  
  5123. Bitfields for SOLLEX SuperVGA display output setting:
  5124. Bit(s)    Description    (Table 0099)
  5125.  0    CRTC control in 2,1 valid
  5126.  1    enable digital output
  5127.  2    enable analog output
  5128.  3    panel control in 5,4 valid
  5129.  4    enable LCD output
  5130.  5    enable plasma/EL output
  5131.  6    inverse control in 7 valid
  5132.  7    0=normal, 1=inverse
  5133.  15-8    reserved
  5134. --------V-107F02BL01-------------------------
  5135. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  5136.     AX = 7F02h
  5137.     BL = 01h
  5138. Return: AL <> 7Fh if not supported
  5139.     AL = 7Fh if supported
  5140.         AH = status
  5141.         00h successful
  5142.             BX = display output setting (see #0099)
  5143.             CX = displays attached (see #0100)
  5144.         01h failed
  5145. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  5146.  
  5147. Bitfields for SOLLEX SuperVGA displays attached:
  5148. Bit(s)    Description    (Table 0100)
  5149.  0    PS/2 display on analog output
  5150.  1    multi-frequency monitor on analog output
  5151.  2    LCD panel attached
  5152.  3    plasma/electroluminescent panel attached
  5153.  4    multi-frequency monitor on digital output
  5154.  5    Enhanced Color Display attached to digital outpt
  5155.  6    alternate display
  5156.  15-7    reserved
  5157. --------V-107F03BL00-------------------------
  5158. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  5159.     AX = 7F03h
  5160.     BL = 00h
  5161.     CX = support type
  5162.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  5163.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  5164.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  5165. Return: AL <> 7Fh if not supported
  5166.     AL = 7Fh if supported
  5167.         AH = status
  5168.         00h successful
  5169.             CX = size of video support code
  5170.             DX = segment of physical video support (0000h if no ROM)
  5171.             ES = segment of active video support
  5172.             ES:DI -> information block (DI = 0000h if none available)
  5173.         01h failed
  5174. SeeAlso: AX=7F03h/BL=01h
  5175. --------V-107F03BL01-------------------------
  5176. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  5177.     AX = 7F03h
  5178.     BL = 01h
  5179.     CX = support request
  5180.     ES = segment of support code
  5181. Return: AL <> 7Fh if not supported
  5182.     AL = 7Fh if supported
  5183.         AH = status
  5184.         00h successful
  5185.         01h failed
  5186. Note:    initializes the indicated video support by calling ES:0003h; this
  5187.       function may be used to switch the active video support back to
  5188.       ROM after AX=7F03h/BL=02h
  5189. SeeAlso: AX=7F03h/BL=00h
  5190. --------V-107F03BL02-------------------------
  5191. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  5192.     AX = 7F03h
  5193.     BL = 02h
  5194.     CX = support request
  5195.     ES = destination segment
  5196. Return: AL <> 7Fh if not supported
  5197.     AL = 7Fh if supported
  5198.         AH = status
  5199.         00h successful
  5200.         01h failed
  5201. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  5202. --------V-107F04BL00-------------------------
  5203. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  5204.     AX = 7F04h
  5205.     BL = 00h
  5206.     CX = new power state
  5207. Return: AL <> 7Fh if not supported
  5208.     AL = 7Fh if supported
  5209.         AH = status
  5210.         00h successful
  5211.         01h failed
  5212. Note:    higher values progressively reduce the operations available on the
  5213.       video adapter while yielding increasing power savings
  5214. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  5215. --------V-107F04BL01-------------------------
  5216. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  5217.     AX = 7F04h
  5218.     BL = 01h
  5219. Return: AL <> 7Fh if not supported
  5220.     AL = 7Fh if supported
  5221.         AH = status
  5222.         00h successful
  5223.             CX = current power state
  5224.             DX = maximum state
  5225.         01h failed
  5226. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  5227. --------V-107F04BL02-------------------------
  5228. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  5229.     AX = 7F04h
  5230.     BL = 02h
  5231.     CX = timeout reset
  5232. Return: AL <> 7Fh if not supported
  5233.     AL = 7Fh if supported
  5234.         AH = status
  5235.         00h successful
  5236.         01h failed
  5237. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  5238. --------V-107F04BL03-------------------------
  5239. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  5240.     AX = 7F04h
  5241.     BL = 03h
  5242. Return: AL <> 7Fh if not supported
  5243.     AL = 7Fh if supported
  5244.         AH = status
  5245.         00h successful
  5246.             BX = time increment
  5247.             CX = current timeout reset
  5248.             DX = maximum timeout reset
  5249.             ES:DI -> timeout reset table (array of bytes)
  5250.         01h failed
  5251. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  5252. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  5253. --------V-107F05-----------------------------
  5254. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  5255.     AX = 7F05h
  5256.     ES:DI -> register value table (see #0101)
  5257. Return: AL <> 7Fh if not supported
  5258.     AL = 7Fh if supported
  5259.         AH = status
  5260.         00h successful
  5261.         01h failed
  5262. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  5263.  
  5264. Format of SOLLEX SuperVGA register value table:
  5265. Offset    Size    Description    (Table 0101)
  5266.  00h    WORD    base I/O register (FFFFh = end of list)
  5267.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  5268.           index value and the following register as a data byte
  5269.  2N+2    WORD    FFFFh (end of data list)
  5270.     ... (repeats until FFFFh base address)
  5271. --------V-107F06-----------------------------
  5272. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  5273.     AX = 7F06h
  5274.     BL = subfunction
  5275.         00h set multiple font state
  5276.         CX = new state (00h off, 01h on)
  5277.         01h get multiple font state
  5278.         Return: BL = current state (00h off, 01h on)
  5279. Return: AL <> 7Fh if not supported
  5280.     AL = 7Fh if supported
  5281.         AH = status
  5282.         00h successful
  5283.         01h failed
  5284. SeeAlso: AH=11h
  5285. --------V-107F07-----------------------------
  5286. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  5287.     AX = 7F07h
  5288.     BL = how much to fill
  5289.        00h regen size
  5290.        01h all video memory
  5291.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  5292. Return: AL <> 7Fh if not supported
  5293.     AL = 7Fh if supported
  5294.         AH = status
  5295.         00h successful
  5296.         01h failed
  5297. SeeAlso: AH=06h
  5298. --------A-1080-------------------------------
  5299. INT 10 - CU Writer v1.4 - GET OPTION
  5300.     AH = 80h
  5301.     AL = desired option
  5302. Return: ???
  5303. Program: CU Writer is a public-domain Thai-English word processor from
  5304.       Chulalongkorn University, Bangkok
  5305. SeeAlso: AH=81h"CU Writer"
  5306. --------Q-1080--DX4456-----------------------
  5307. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  5308.     AH = 80h
  5309.     DX = 4456h ('DV')
  5310.     ES:DI -> FAR subroutine to be called on ???
  5311. Return: DS = segment of DESQview data structure for video buffer
  5312. Note:    this function is probably meant for internal use only, due to the magic
  5313.       value required in DX
  5314.     the subroutine seems to be called when the DESQview menu is accessed;
  5315.       on entry, AL = 03h or 04h
  5316. --------A-1081-------------------------------
  5317. INT 10 - CU Writer v1.4 - SET OPTION
  5318.     AH = 81h
  5319.     ???
  5320. Return: ???
  5321. SeeAlso: AH=80h"CU Writer"
  5322. --------Q-1081--DX4456-----------------------
  5323. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  5324.     AH = 81h
  5325.     DX = 4456h ('DV')
  5326. Return: ES = segment of DESQview data structure for video buffer
  5327.         BYTE ES:[0] = current window number in DV 2.0x
  5328. Note:    this function is probably meant for internal use only, due to the magic
  5329.       value required in DX
  5330. SeeAlso: AH=82h"DESQview"
  5331. --------Q-1082--DX4456-----------------------
  5332. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  5333.     AH = 82h
  5334.     DX = 4456h ('DV')
  5335. Return: DS = segment in DESQview for data structure
  5336.          in DV 2.00,
  5337.           BYTE DS:[0] = window number
  5338.           WORD DS:[1] = segment of other data structure
  5339.           WORD DS:[3] = segment of window's object handle
  5340.     ES = segment of DESQview data structure for video buffer
  5341.     AL = current window number
  5342.     AH = ???
  5343.     BL = direct screen writes
  5344.         00h program does not do direct writes
  5345.         01h program does direct writes, so shadow buffer not usable
  5346.     BH = ???
  5347.     CL = current video mode
  5348.     CH = ???
  5349. Note:    this function is probably meant for internal use only, due to the magic
  5350.       value required in DX
  5351. SeeAlso: AH=81h"DESQview"
  5352. --------J-108200-----------------------------
  5353. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  5354.     AX = 8200h
  5355.     BL = new scroll mode or FFh to get current mode
  5356.         00h dynamic, 01h software
  5357. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  5358. SeeAlso: AH=06h,AH=07h
  5359. --------J-108300-----------------------------
  5360. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  5361.     AX = 8300h
  5362. Return: AX = offset of video RAM
  5363.     ES:BX -> virtual text RAM buffer
  5364. SeeAlso: AX=5201h
  5365. --------N-108B-------------------------------
  5366. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  5367.     AH = 8Bh
  5368. SeeAlso: AH=92h,AH=93h
  5369. --------N-1090-------------------------------
  5370. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  5371.     AH = 90h
  5372. Return: AL = current video mode (see #0009 at AH=00h)
  5373. SeeAlso: AH=91h
  5374. --------N-1091-------------------------------
  5375. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  5376.     AH = 91h
  5377. Return: AL = video adapter type (see #0102)
  5378. Note:    types less than 80h do not imply that the current user is on the host
  5379. SeeAlso: AH=90h
  5380.  
  5381. (Table 0102)
  5382. Values for Alloy MW386 video adapter type:
  5383.  00h    monochrome
  5384.  01h    Hercules monochrome graphics
  5385.  02h    CGA
  5386.  03h    EGA
  5387.  04h    VGA
  5388.  80h    monochrome text terminal
  5389.  81h    Hercules graphics terminal
  5390.  82h    color graphics terminal
  5391. --------N-1092-------------------------------
  5392. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  5393.     AH = 92h
  5394. Note:    the terminal will be updated even when screen updates are inhibited if
  5395.       TTY output is used
  5396. SeeAlso: AH=8Bh
  5397. --------N-1093-------------------------------
  5398. INT 10 - Alloy MW386 - REDRAW SCREEN
  5399.     AH = 93h
  5400. SeeAlso: AH=8Bh,AH=FFh
  5401. --------A-10A0-------------------------------
  5402. INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE
  5403.     AH = A0h
  5404.     ???
  5405. Return: ???
  5406. Program: CU Writer is a public-domain Thai-English word processor from
  5407.       Chulalongkorn University, Bangkok
  5408. SeeAlso: AH=80h"CU Writer",AH=B0h
  5409. --------p-10A0-------------------------------
  5410. INT 10 - ATI Mach64 BIOS - Display Power Management Signalling API???
  5411.     AH = A0h
  5412.     AL = function (00h-13h)
  5413.     ???
  5414. Return: AH = status
  5415.         00h successful
  5416.         01h failed
  5417.     ???
  5418. SeeAlso: AX=4F10h/BL=00h
  5419. --------p-10A00C-----------------------------
  5420. INT 10 - ATI Mach64 BIOS - SET SLEEP MODE
  5421.     AX = A00Ch
  5422.     CL = new state
  5423.         01h standby
  5424.         02h suspend
  5425.         03h off
  5426. Return: AH = status
  5427.         00h successful
  5428.         01h failed
  5429. SeeAlso: AX=4F00h,AX=4F10h/BL=01h
  5430. --------A-10B0-------------------------------
  5431. INT 10 - CU Writer v1.4 - PUT PIXEL
  5432.     AH = B0h
  5433.     ???
  5434. Return: ???
  5435. SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h
  5436. --------A-10B1-------------------------------
  5437. INT 10 - CU Writer v1.4 - MOVE TO
  5438.     AH = B1h
  5439.     ???
  5440. Return: ???
  5441. SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer"
  5442. --------A-10B2-------------------------------
  5443. INT 10 - CU Writer v1.4 - DRAW LINE TO
  5444.     AH = B2h
  5445.     ???
  5446. Return: ???
  5447. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h
  5448. --------A-10B3-------------------------------
  5449. INT 10 - CU Writer v1.4 - FLOOD FILL
  5450.     AH = B3h
  5451.     ???
  5452. Return: ???
  5453. SeeAlso: AH=B2h,AH=B5h
  5454. --------A-10B4-------------------------------
  5455. INT 10 - CU Writer v1.4 - DRAW RECTANGLE
  5456.     AH = B4h
  5457.     ???
  5458. Return: ???
  5459. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h
  5460. --------A-10B5-------------------------------
  5461. INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE
  5462.     AH = B5h
  5463.     ???
  5464. Return: ???
  5465. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  5466. --------b-10BF00-----------------------------
  5467. INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR
  5468.     AX = BF00h
  5469. Desc:    specify that the external monitor become the active monitor
  5470. Note:    all registers preserved and the internal monitor is blanked
  5471. SeeAlso: AX=BF01h,AX=BF12h
  5472. --------b-10BF01-----------------------------
  5473. INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR
  5474.     AX = BF01h
  5475. Desc:    specify that the internal monitor become the active monitor
  5476. Note:    all registers preserved and the external monitor is blanked
  5477. SeeAlso: AX=BF00h,AX=BF12h
  5478. --------b-10BF02-----------------------------
  5479. INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER
  5480.     AX = BF02h
  5481.     BH = master mode
  5482.         04h CGA
  5483.         05h EGA
  5484.         07h MDA
  5485. SeeAlso: AX=BF03h
  5486. --------b-10BF03BX0000-----------------------
  5487. INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT
  5488.     AX = BF03h
  5489.     BX = 0000h
  5490. Return: BH = active monitor
  5491.         (00h = external, 01h = internal, 03h both, 04h neither)
  5492.     BL = master mode (see #0103)
  5493.     CH = ASIC type and version
  5494.         00h (reserved, very early Compaq VGCs)
  5495.         31h if QVision VGA
  5496.     CL = switchable VDU modes supported (see #0104)
  5497.     DH = internal monitor type (see #0105)
  5498.     DL = external monitor type (see #0105)
  5499. SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h
  5500.  
  5501. (Table 0103)
  5502. Values for Compaq video master mode:
  5503.  00h    switchable VDU not present
  5504.  04h    CGA
  5505.  05h    EGA
  5506.  07h    MDA
  5507.  08h    switchable LCD controller present
  5508.  09h    plasma VGA
  5509.  0Ah    TFT (active-matrix) VGA
  5510.  
  5511. Bitfields for Compaq switchable VDU modes support:
  5512. Bit(s)    Description    (Table 0104)
  5513.  0    CGA supported
  5514.  1,2    reserved (1)
  5515.  3    MDA supported
  5516.  4    BitBLT engine available
  5517.  5    132-column support availble
  5518.  6    640x480x256 mode available
  5519.  7    8-bit DAC mode available
  5520.  
  5521. (Table 0105)
  5522. Values for Compaq monitor type:
  5523.  00h    none
  5524.  01h    dual-mode monitor
  5525.  02h    5153 RGB monitor (RGBI 16-color)
  5526.  03h    Compaq Color monitor
  5527.  04h    640x400 flat panel (Plasma CGA)
  5528.  05h    VGC monochrome
  5529.  06h    VGC color
  5530.  07h    8-level mono LCD VGA (internal)
  5531.     1024x768 mono VGA (external)
  5532.  08h    16-level mono plasma VGA (internal)
  5533.     1024x768 color VGA (external)
  5534.  09h    4-level mono LCD CGA
  5535.  0Ah    16-level mono LCD VGA
  5536.  0Bh    active-matrix color VGA
  5537.  0Ch    active-matrix mono VGA
  5538.  0Dh    STN color VGA
  5539. --------b-10BF04-----------------------------
  5540. INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY
  5541.     AX = BF04h
  5542.     BH = new state of delay (00h enabled, 01h disabled)
  5543. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  5544.       version of the list will provide more definite information
  5545. SeeAlso: AX=BF05h
  5546. --------b-10BF05-----------------------------
  5547. INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY
  5548.     AX = BF05h
  5549.     BH = new state of video
  5550.         00h off
  5551.         01h on
  5552. Note:    the 04/08/93 sytem ROM appears to use BL instead of BH; a future
  5553.       version of the list will provide more definite information
  5554. SeeAlso: AH=12h/BL=36h,AX=BF04h
  5555. --------b-10BF06-----------------------------
  5556. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  5557.     AX = BF06h
  5558.     CL = address to be read from gray scale table
  5559. Return: AL = bit 3-0 - Value read from gray scale table
  5560.     CL = address to be read from gray scale table
  5561. SeeAlso: AH=12h/BL=33h,AX=BF07h
  5562. --------b-10BF07-----------------------------
  5563. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  5564.     AX = BF07h
  5565.     CH = value to write to gray scale table
  5566.     CL = address to be written to gray scale table
  5567. SeeAlso: AX=BF06h,AX=BF08h
  5568. --------b-10BF08-----------------------------
  5569. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  5570.     AX = BF08h
  5571.     CH = bits 7-4 green weight
  5572.          bits 3-0 blue weight
  5573.     CL = bits 7-4 unused
  5574.          bits 3-0 red weight
  5575. SeeAlso: AH=12h/BH=33h,AX=BF07h
  5576. --------b-10BF09-----------------------------
  5577. INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO
  5578.     AX = BF09h
  5579. Return: CF clear
  5580. Notes:    sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  5581.       to 6Fh and index 83h to 04h
  5582.     supported by at least the QVision board and the LTE Lite ROM BIOS
  5583. SeeAlso: AX=BF0Ah,AX=BF0Bh
  5584. --------b-10BF0A-----------------------------
  5585. INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO
  5586.     AX = BF0Ah
  5587. Return: CF clear
  5588. Notes:    clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h
  5589.       to 80h and index 83h to FBh
  5590.     supported by at least the QVision board and the LTE Lite ROM BIOS
  5591. SeeAlso: AX=BF09h,AX=BF0Bh
  5592. --------b-10BF0B-----------------------------
  5593. INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED
  5594.     AX = BF0Bh
  5595. Return: CF clear
  5596.     AX = state (0000h normal video, 0001h reverse video)
  5597. Note:    supported by at least the QVision board and the LTE Lite ROM BIOS
  5598. SeeAlso: AX=BF09h,AX=BF0Ah
  5599. --------b-10BF0C-----------------------------
  5600. INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE
  5601.     AX = BF0Ch
  5602. Return: CF clear
  5603. Desc:    specify that video DAC registers use only six bits of color info
  5604. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  5605. SeeAlso: AX=BF0Dh,AX=BF0Eh
  5606. --------b-10BF0D-----------------------------
  5607. INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE
  5608.     AX = BF0Dh
  5609. Return: CF clear
  5610. Desc:    specify that video DAC registers use all eight bits of color info
  5611. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  5612. SeeAlso: AX=BF0Ch,AX=BF0Eh
  5613. --------b-10BF0E-----------------------------
  5614. INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode
  5615.     AX = BF0Eh
  5616. Return: CF clear
  5617.     AL = DAC mode
  5618.         00h in 6-bit mode
  5619.         01h in 8-bit mode
  5620. Note:    supported by at least the QVision board and the SystemPro XL ROM BIOS
  5621. SeeAlso: AX=BF0Ch,AX=BF0Dh
  5622. --------b-10BF0F-----------------------------
  5623. INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER
  5624.     AX = BF0Fh
  5625.     BX = high address map location in megabytes, or
  5626.         0000h to disable high address map, or
  5627.         FFFFh to let ROM configure high address map
  5628. Return: CF clear
  5629.     AX = previous value of high address map register
  5630. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  5631.       Lite ROM BIOSes
  5632. SeeAlso: AX=BF10h
  5633. --------b-10BF10-----------------------------
  5634. INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER
  5635.     AX = BF10h
  5636. Return: CF clear
  5637.     AX = current value of high address map register
  5638. Notes:    supported by at least the QVision board and the SystemPro XL and LTE
  5639.       Lite ROM BIOSes
  5640.     the Compaq QVision documentation (October 1993) says the value is
  5641.       returned in BX, but this appears to be one of many typos
  5642. SeeAlso: AX=BF0Fh
  5643. --------b-10BF11-----------------------------
  5644. INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT
  5645.     AX = BF11h
  5646. Return: AL = BFh if supported
  5647.         CF clear
  5648.         ES:BX -> ASCII signature "COMPAQ"
  5649.         ES:DI -> advanced functionality table (see #0106)
  5650. Notes:    supported by at least the QVision board and the LTE Lite and ProSignia
  5651.       ROM BIOSes
  5652.     the QVision documentation (October 1993) states that the signature
  5653.       pointer is in ES:DI and the table pointer in ES:SI -- can someone
  5654.       check on this?
  5655. SeeAlso: AX=1A00h,AX=BF03h
  5656.  
  5657. Bitfields for Compaq advanced video functionality:
  5658. Bit(s)    Description    (Table 0106)
  5659.  31    future graphics extensions (reserved, set to 0)
  5660.  30-16    reserved
  5661.  15-12    available video memory in 256K blocks, less one (0000 = 256K, etc.)
  5662.  11-8    reserved
  5663.  7    QVision modes supported
  5664.  6    Advanced VGA modes supported
  5665.  5    Accelerated VGA modes supported
  5666.  4    standard VGA modes supported
  5667.  3-2    reserved
  5668.  1    132-column modes supported
  5669.  0    reserved
  5670. --------b-10BF12-----------------------------
  5671. INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR
  5672.     AX = BF12h
  5673.     BH reserved
  5674.     BL = function mask (see #0107)
  5675. Return: CF clear
  5676. Notes:    this function is a NOP if the VGA subsystem is inactive or the current
  5677.       Display Combination Code is 10h or higher
  5678.     supported by at least the QVision board and the LTE Lite and ProSignia
  5679.       ROM BIOSes
  5680. SeeAlso: AX=BF01h,AX=BF02h
  5681.  
  5682. Bitfields for function mask:
  5683. Bit(s)    Description    (Table 0107)
  5684.  7    command mode
  5685.     if set, bits 1 and 0 make the monitor active when set
  5686.     if clear, bits 1 and 0 toggle the monitor's state when set
  5687.  6-2    reserved
  5688.  1    internal monitor
  5689.  0    external monitor
  5690. --------b-10BF13-----------------------------
  5691. INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION
  5692.     AX = BF13h
  5693.     BL = subfunction
  5694.         00h load gamma correction table for true-color mode
  5695.         DS = BIOS data segment
  5696.         01h set palette RAM bypass
  5697.     BH = 00h
  5698. Return:    nothing
  5699. Note:    these functions must be called after a video mode set, and are in
  5700.       effect only for the current video mode
  5701. --------V-10BFA0BXADAD-----------------------
  5702. INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
  5703.     AX = BFA0h
  5704.     BX = ADADh
  5705. Return: AX = BDBDh if newer ADAPT.COM installed
  5706.         BX = BCD version (BH = major, BL = minor)
  5707.         CL = ???
  5708.         CH = ???
  5709.         DL = ???
  5710.     AX = ADADh if older version of ADAPT.COM installed
  5711. Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
  5712.       optionally-resident utility for setting display colors and cursor
  5713.       size; when resident, it also includes a screen blanker
  5714. SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
  5715. Index:    screen saver;ADAPT
  5716. --------V-10BFA1-----------------------------
  5717. INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
  5718.     AX = BFA1h
  5719. Return: AX = BDBEh if supported
  5720.         CH = current value of ???
  5721.         DL = current value of ???
  5722. SeeAlso: AX=BFA0h,AX=BFA2h
  5723. --------V-10BFA2-----------------------------
  5724. INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
  5725.     AX = BFA2h
  5726.     CH = new value for ???
  5727.     DL = new value for ???
  5728. Return: AX = BDBEh if supported
  5729. SeeAlso: AX=BFA0h,AX=BFA1h
  5730. --------A-10C0-------------------------------
  5731. INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
  5732.     AH = C0h
  5733.     ???
  5734. Return: ???
  5735. SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
  5736. --------A-10C1-------------------------------
  5737. INT 10 - CU Writer v1.4 - OUTPUT TEXT
  5738.     AH = C1h
  5739.     ???
  5740. Return: ???
  5741. SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
  5742. --------A-10C2-------------------------------
  5743. INT 10 - CU Writer v1.4 - REVERSE TEXT
  5744.     AH = C2h
  5745.     ???
  5746. Return: ???
  5747. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
  5748. --------A-10C3-------------------------------
  5749. INT 10 - CU Writer v1.4 - TEXT BAR
  5750.     AH = C3h
  5751.     ???
  5752. Return: ???
  5753. SeeAlso: AH=C0h,AH=C1h,AH=C4h
  5754. --------A-10C4-------------------------------
  5755. INT 10 - CU Writer v1.4 - TEXT MENU
  5756.     AH = C4h
  5757.     ???
  5758. Return: ???
  5759. SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
  5760. ----------10CB00-----------------------------
  5761. INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS
  5762.     AX = CB00h
  5763. Note:    combined with AX=CB06h, this function permits the use of video mode
  5764.       13h together with the VGA's unchained mode
  5765. SeeAlso: AX=CB06h,AX=CBFFh
  5766. ----------10CB01-----------------------------
  5767. INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET
  5768.     AX = CB01h
  5769.     BX = offset of page 1
  5770. Desc:    inform UNCHAIN of the location of video page 1 in video memory; the
  5771.       default is 0000h
  5772. SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh
  5773. ----------10CB02-----------------------------
  5774. INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET
  5775.     AX = CB02h
  5776.     BX = offset of page 2
  5777. Desc:    inform UNCHAIN of the location of video page 2 in video memory; the
  5778.       default is 3E80h (16000, for 320x200)
  5779. SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h
  5780. ----------10CB03-----------------------------
  5781. INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET
  5782.     AX = CB03h
  5783.     BX = offset of page 3
  5784. Desc:    inform UNCHAIN of the location of video page 3 in video memory; the
  5785.       default is 7D00h (32000, for 320x200)
  5786. SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h
  5787. ----------10CB04-----------------------------
  5788. INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET
  5789.     AX = CB04h
  5790.     BX = offset of page 4
  5791. Desc:    inform UNCHAIN of the location of video page 4 in video memory; the
  5792.       default is BB80h (48000, for 320x200)
  5793. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h
  5794. ----------10CB05-----------------------------
  5795. INT 10 - UNCHAIN - SAVE PALETTE
  5796.     AX = CB05h
  5797. SeeAlso: AX=CB00h,AX=CB06h
  5798. ----------10CB06-----------------------------
  5799. INT 10 - UNCHAIN - RESTORE VGA REGISTERS
  5800.     AX = CB06h
  5801. SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh
  5802. ----------10CBFF-----------------------------
  5803. INT 10 - UNCHAIN - INSTALLATION CHECK
  5804.     AX = CBFFh
  5805. Return: AX = CCBBh if installed
  5806. Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland
  5807.       development tools with Mode X video in the absence of a second
  5808.       monitor
  5809. SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h
  5810. --------V-10CC00SI0000-----------------------
  5811. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  5812.     AX = CC00h
  5813.     SI = 0000h (if checking version)
  5814. Return: CX = ABCDh
  5815.     AL = Ultravision extensions
  5816.         00h enabled
  5817.         FFh disabled
  5818.     AH = card designator
  5819.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  5820.     DX = support for high resolution modes
  5821.         00h not active
  5822.         01h active
  5823.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  5824.         unchanged for versions <1.2
  5825. SeeAlso: AX=CC01h,AX=CC02h
  5826. --------V-10CC01-----------------------------
  5827. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  5828.     AX = CC01h
  5829. Notes:    subsequent BIOS calls will be passed through to previous handler
  5830.     should be followed immediately by mode set to restore normal EGA/VGA
  5831.       state
  5832. SeeAlso: AX=CC02h
  5833. --------V-10CC02-----------------------------
  5834. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  5835.     AX = CC02h
  5836. Note:    should be followed immediately by mode set to restore previous
  5837.       UltraVision state
  5838. SeeAlso: AX=CC01h
  5839. --------V-10CD00-----------------------------
  5840. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  5841.     AX = CD00h
  5842.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  5843.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  5844. Notes:    if palette locking is in effect for the current mode, the new colors
  5845.       will be displayed immediately; otherwise, the system reverts to the
  5846.       default palette
  5847.     palette table 0 is reserved for the default palette and cannot be set
  5848.     UltraVision always sets the border color to black
  5849. SeeAlso: AX=CD01h,AX=CD02h
  5850. --------V-10CD01-----------------------------
  5851. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  5852.     AX = CD01h
  5853.     CL = palette locking value
  5854.         00h none
  5855.         01h text modes only (02h,03h)
  5856.         FFh all modes (all standard color text and graphics modes)
  5857. Notes:    intended for video modes with 16 or fewer colors
  5858. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  5859. --------V-10CD02-----------------------------
  5860. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  5861.     AX = CD02h
  5862. Return: CL = palette table number
  5863.     DS:DX -> 17-byte palette register list (see #0108)
  5864.     DS:SI -> current font names table (see #0109,#0110)
  5865. Note:    only the font names are valid on monochrome EGA systems
  5866. SeeAlso: AX=1009h,AX=CD00h
  5867.  
  5868. Format of UltraVision palette register list:
  5869. Offset    Size    Description    (Table 0108)
  5870.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  5871.  10h    BYTE    border color
  5872.  
  5873. Format of UltraVision v2+ current font names table:
  5874. Offset    Size    standard EGA    HiRes EGA    VGA    (Table 0109)
  5875.  00h  8 BYTEs    N/A        F19 font    F20 font
  5876.  08h  8 BYTEs    F14 font    F14 font    F14 font
  5877.  10h  8 BYTEs    N/A        F11 font    F10 font
  5878.  18h  8 BYTEs    F8 font        F8 font        F8 font
  5879.  
  5880. Format of UltraVision v1.x current font names table:
  5881. Offset    Size    HiRes EGA    (Table 0110)
  5882.  00h  8 BYTEs    F19/F14 font
  5883.  08h  8 BYTEs    F11/F8 font
  5884. --------V-10CD03-----------------------------
  5885. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  5886.     AX = CD03h
  5887. Return: CL = palette locking value
  5888.         00h none
  5889.         01h text modes only
  5890.         FFh all modes
  5891. SeeAlso: AX=CD01h
  5892. --------V-10CD04-----------------------------
  5893. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  5894.     AX = CD04h
  5895. Return: AL = mode number (see #0111)
  5896. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  5897.  
  5898. (Table 0111)
  5899. Values for UltraVision video mode number:
  5900.  11h    80x25
  5901.  12h    80x43, 80x50
  5902.  13h    80x34, 80x36
  5903.  14h    80x60, 80x63
  5904.  19h    94x25
  5905.  1Ah    94x43, 94x50
  5906.  1Bh    94x36
  5907.  1Ch    94x63
  5908.  21h    108x25
  5909.  22h    108x43, 108x50
  5910.  23h    107x34, 108x36
  5911.  24h    108x60, 108x63
  5912.  31h    120x25
  5913.  32h    120x43, 120x50
  5914.  33h    132x25
  5915.  34h    132x44, 132x50
  5916.  39h    120x36
  5917.  3Ah    120x63
  5918.  3Bh    132x36
  5919.  3Ch    132x60
  5920. Index:    video modes;UltraVision
  5921. --------V-10CD05-----------------------------
  5922. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  5923.     AX = CD05h
  5924.     CL = type
  5925.         00h line cursor
  5926.         FFh box cursor
  5927. Note:    sets default cursor type for text-based programs
  5928. SeeAlso: AH=01h,AX=CD06h
  5929. --------V-10CD06-----------------------------
  5930. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  5931.     AX = CD06h
  5932. Return: CL = type
  5933.         00h line cursor
  5934.         FFh box cursor
  5935. SeeAlso: AH=03h,AX=CD05h
  5936. --------V-10CD07-----------------------------
  5937. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  5938.     AX = CD07h
  5939.     CL = hardware underline status (see #0112)
  5940.     BL = foreground color for normal text (FFh = current)
  5941.     BH = foreground color for bright text (FFh = current)
  5942. Return: CL = hardware underline status
  5943.     BL = current foreground color for normal text
  5944.     BH = current foreground color for bright text
  5945. Notes:    when underline or strikeout is enabled in color text modes, the
  5946.       specified colors will be assigned temporarily to colors 01h and 09h,
  5947.       allowing affected text to match non-underlined text.    The color
  5948.       remapping uses values from the current onscreen palette regardless
  5949.       of the palette locking status (see AX=CD01h)
  5950.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  5951.       strikeout without color remapping
  5952. SeeAlso: AX=CD08h
  5953.  
  5954. (Table 0112)
  5955. Values for hardware underline status:
  5956.  00h    off (color systems only)
  5957.  01h    underline below characters
  5958.  02h    strike through characters
  5959. --------V-10CD08-----------------------------
  5960. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  5961.     AX = CD08h
  5962. Return: CL = hardware underline status (see #0112)
  5963.     BL = foreground color for normal text
  5964.     BH = foreground color for bright text
  5965. Note:    only CL is valid on monochrome EGA systems
  5966. SeeAlso: AX=CD07h
  5967. --------V-10CD10-----------------------------
  5968. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  5969.     AX = CD10h
  5970.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  5971.     CX = ABCDh load 9xN alternate font (v2+)
  5972.        else number of characters to load
  5973.         DX = character offset into font table
  5974.         DS:SI -> 8-byte ASCII font name
  5975.     ES:BP -> font definitions
  5976. Return: AX = FFFFh if invalid font parameters
  5977. Notes:    loads the designated characters into UltraVision's resident font area
  5978.     should be followed by a video mode set to reload character generator
  5979. SeeAlso: AX=1100h
  5980. --------V-10CD-------------------------------
  5981. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  5982.     AH = CDh
  5983.     AL = text mode number (see #0111)
  5984. Return: AX = CDCDh if invalid mode
  5985. SeeAlso: AX=CD04h
  5986. --------A-10D0-------------------------------
  5987. INT 10 - CU Writer v1.4 - LOAD PICTURE
  5988.     AH = D0h
  5989.     ???
  5990. Return: ???
  5991. SeeAlso: AH=B0h"CU Writer",AH=C4h
  5992. --------V-10D5-------------------------------
  5993. INT 10 - Netroom SCRNCLK - ???
  5994.     AH = D5h
  5995.     ???
  5996. Return: ???
  5997. Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
  5998. --------V-10DFA5-----------------------------
  5999. INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
  6000.     AX = DFA5h
  6001. Return: AX = BDBFh if supported
  6002.         ES:DI -> ??? data area
  6003.         BX = ES
  6004. SeeAlso: AX=BFA0h
  6005. --------V-10EF-------------------------------
  6006. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  6007.     AH = EFh
  6008. Return: DL = video adapter type
  6009.         00h original Hercules
  6010.         01h Hercules Plus
  6011.         02h Hercules InColor???
  6012.     DH = memory mode byte
  6013.         01h "half" mode
  6014.         03h "full" mode
  6015. Program: MSHERC.COM is a support program for the Microsoft Quick languages
  6016.       which makes their graphics libraries compatible with a Hercules card
  6017.       by adding video modes 08h and 88h, and supporting text in the new
  6018.       graphics modes.
  6019. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  6020.       a CGA.
  6021.     MSHERC performs an installation check by setting DL=FFh and testing
  6022.       whether it has been changed on return
  6023. Index:    installation check;MSHERC
  6024. --------V-10F0-------------------------------
  6025. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  6026.     AH = F0h
  6027.     BL = register number
  6028.     BH = 00h
  6029.     DX = group index (see #0113)
  6030. Return: BL = data
  6031. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6032.       compatibility box, and others
  6033. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  6034.  
  6035. (Table 0113)
  6036. Values for group index:
  6037.  Pointer/data chips
  6038.  00h    CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  6039.  08h    Sequencer (5 registers) 3C4h
  6040.  10h    Graphics Controller (9 registers) 3CEh
  6041.  18h    Attribute Controller (20 registers) 3C0h
  6042.  Single registers
  6043.  20h    Miscellaneous Output register 3C2h
  6044.  28h    Feature Control register (3BAh mono modes, 3DAh color modes)
  6045.  30h    Graphics 1 Position register 3CCh
  6046.  38h    Graphics 2 Position register 3CAh
  6047. --------V-10F1-------------------------------
  6048. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  6049.     AH = F1h
  6050.     DX = group index (see #0113)
  6051.         if single register:
  6052.         BL = value to write
  6053.         otherwise
  6054.         BL = register number
  6055.         BH = value to write
  6056. Return: BL = data
  6057. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6058.       compatibility box, and others
  6059. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  6060. --------V-10F2-------------------------------
  6061. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  6062.     AH = F2h
  6063.     CH = starting register number
  6064.     CL = number of registers (>1)
  6065.     DX = group index (00h,08h,10h,18h) (see #0113)
  6066.     ES:BX -> buffer, CL bytes
  6067. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6068.       compatibility box, and others
  6069. SeeAlso: AH=F0h,AH=F3h
  6070. --------V-10F3-------------------------------
  6071. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  6072.     AH = F3h
  6073.     CH = starting register
  6074.     CL = number of registers (>1)
  6075.     DX = group index (00h,08h,10h,18h) (see #0113)
  6076.     ES:BX -> buffer, CL bytes
  6077. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6078.       compatibility box, and others
  6079. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  6080. --------V-10F4-------------------------------
  6081. INT 10 - EGA Register Interface Library - READ REGISTER SET
  6082.     AH = F4h
  6083.     CX = number of registers to read (>1)
  6084.     ES:BX -> table of register records (see #0114)
  6085. Return: register values in table filled in
  6086. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6087.       compatibility box, and others
  6088. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  6089.  
  6090. Format of EGA RIL entries in table of register records:
  6091. Offset    Size    Description    (Table 0114)
  6092.  00h    WORD    group index
  6093.         Pointer/data chips
  6094.            00h CRTC (3B4h mono modes, 3D4h color modes)
  6095.            08h Sequencer 3C4h
  6096.            10h Graphics Controller 3CEh
  6097.            18h Attribute Controller 3C0h
  6098.         Single registers
  6099.            20h Miscellaneous Output register 3C2h
  6100.            28h Feature Control register (3BAh mono modes, 3DAh color)
  6101.            30h Graphics 1 Position register 3CCh
  6102.            38h Graphics 2 Position register 3CAh
  6103.  02h    BYTE    register number (0 for single registers)
  6104.  03h    BYTE    register value
  6105. --------V-10F5-------------------------------
  6106. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  6107.     AH = F5h
  6108.     CX = number of registers to write (>1)
  6109.     ES:BX -> table of records (see #0114)
  6110. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6111.       compatibility box, and others
  6112. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  6113. --------V-10F6-------------------------------
  6114. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  6115.     AH = F6h
  6116. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  6117.       others
  6118. SeeAlso: AH=F7h
  6119. --------V-10F7-------------------------------
  6120. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  6121.     AH = F7h
  6122.     DX = port number
  6123.        Pointer/data chips
  6124.           00h CRTC (3B4h mono modes, 3D4h color modes)
  6125.           08h Sequencer 3C4h
  6126.           10h Graphics Controller 3CEh
  6127.           18h Attribute Controller 3C0h
  6128.        Single registers
  6129.           20h Miscellaneous Output register 3C2h
  6130.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  6131.           30h Graphics 1 Position register 3CCh
  6132.           38h Graphics 2 Position register 3CAh
  6133.     ES:BX -> table of one-byte entries, one byte to be written to each
  6134.          register
  6135. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6136.       compatibility box, and others
  6137. SeeAlso: AH=F6h
  6138. --------V-10FA--BX0000-----------------------
  6139. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  6140.     AH = FAh
  6141.     BX = 0000h
  6142. Return: BX = 0000h if RIL driver not present
  6143.     ES:BX -> EGA Register Interface version number, if present:
  6144.         byte 0 = major release number
  6145.         byte 1 = minor release number
  6146. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  6147.       compatibility box, and others
  6148. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  6149. --------K-10FA-------------------------------
  6150. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  6151.     AH = FAh
  6152. Return: AX = 00FAh if installed
  6153.         ES = segment of resident code
  6154. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  6155.       Steiner
  6156. Index:    screen saver;FASTBUFF
  6157. --------V-10FE-------------------------------
  6158. INT 10 - TopView - GET SHADOW BUFFER
  6159.     AH = FEh
  6160.     ES:DI -> assumed video buffer
  6161.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  6162.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  6163. Return: ES:DI -> actual video buffer for calling process
  6164. Desc:    Determine the address of the virtual screen to which the program
  6165.       should write instead of the actual video memory; this permits
  6166.       programs to be multitasked without interfering with each other's
  6167.       output, and allows memory managers to move the video memory to
  6168.       permit larger programs to be loaded.
  6169. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  6170.       returned unchanged; RSIS is the Relocated Screen Interface
  6171.       Specification
  6172.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  6173.       whether a particular page exists
  6174.     TopView requires a call to AH=FFh to notify it that the screen has
  6175.       changed; DESQview will check for changes itself until the first call
  6176.       to AH=FFh
  6177. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  6178. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  6179. --------V-10FF-------------------------------
  6180. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  6181.     AH = FFh
  6182.     CX = number of consecutive changed characters
  6183.     ES:DI -> first changed character in shadow buffer
  6184. Notes:    avoid CX=0000h
  6185.     DESQview will discontinue the automatic screen updating initiated by
  6186.       AH=FEh after this call
  6187.     not supported (ignored) by DESQview/X 1.0x
  6188. SeeAlso: AH=93h,AH=FEh
  6189. --------E-10FF-------------------------------
  6190. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  6191.     AH = FFh
  6192.     AL = video mode (see #0115)
  6193. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  6194.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  6195. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  6196.  
  6197. (Table 0115)
  6198. Values for GO32 video mode number:
  6199.  00h    80x25 text
  6200.  01h    default text
  6201.  02h    CXxDX text
  6202.  03h    biggest text
  6203.  04h    320x200 graphics
  6204.  05h    default graphics
  6205.  06h    CXxDX graphics
  6206.  07h    biggest non-interlaced graphics
  6207.  08h    biggest graphics
  6208. Index:    video modes;GO32
  6209. --------V-10FF-------------------------------
  6210. INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
  6211.     AH = FFh
  6212.     AL = emulation
  6213.         43h ('C') CGA emulation
  6214.         45h ('E') EGA emulation
  6215.         4Dh ('M') Hercules emulation
  6216.         56h ('V') VGA emulation
  6217.     ES:DI -> signature string "Calamity"
  6218. Return: VGA switched to suggested mode
  6219. SeeAlso: AH=00h,AX=007Fh,AX=5F01h
  6220. --------R-10FF00-----------------------------
  6221. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  6222.     AX = FF00h
  6223. Return: BL = state
  6224.         00h not connected
  6225.         01h connected
  6226. SeeAlso: AX=FF01h,AX=FF02h
  6227. --------R-10FF01-----------------------------
  6228. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  6229.     AX = FF01h
  6230. SeeAlso: AX=FF00h,AX=FF02h
  6231. --------R-10FF02-----------------------------
  6232. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  6233.     AX = FF02h
  6234. Return: ES:DI -> ASCIZ phone number
  6235. SeeAlso: AX=FF00h,AX=FF01h
  6236. --------C-11---------------------------------
  6237. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  6238. Desc:    automatically generated by the CPU when the AC flag is set, the current
  6239.       privilege level is 3, and a misaligned memory access (WORD not on an
  6240.       even address or DWORD not on a multiple of 4) is made
  6241. Note:    not all V86 monitors allow the AC flag to be set, such as Turbo
  6242.       Debugger 386
  6243. --------B-11---------------------------------
  6244. INT 11 - BIOS - GET EQUIPMENT LIST
  6245. Return: (E)AX = BIOS equipment list word (see #0116)
  6246. Note:    since older BIOSes do not know of the existence of EAX, the high word
  6247.       of EAX should be cleared before this call if any of the high bits
  6248.       will be tested
  6249.  
  6250. Bitfields for BIOS equipment list:
  6251. Bit(s)    Description    (Table 0116)
  6252.  0    floppy disk(s) installed (see 6-7)
  6253.  1    80x87 coprocessor installed
  6254.  3-2    number of 16K banks of RAM on motherboard (PC only)
  6255.     number of 64K banks of RAM on motherboard (XT only)
  6256.  2    pointing device installed (PS)
  6257.  3    unused (PS)
  6258.  5-4    initial video mode
  6259.     00 EGA, VGA, or PGA
  6260.     01 40x25 color
  6261.     10 80x25 color
  6262.     11 80x25 monochrome
  6263.  7-6    number of floppies installed less 1 (if 0 set)
  6264.  8    DMA support installed (PCjr, Tandy 1400LT)
  6265.     DMA support *not* installed (Tandy 1000's)
  6266.  11-9    number of serial ports installed
  6267.  12    game port installed
  6268.  13    serial printer attached (PCjr)
  6269.     internal modem installed (PC/Convertible)
  6270.  15-14    number of parallel ports installed
  6271. ---Compaq, Dell, and many other 386/486 machines--
  6272.  23    page tables set so that Weitek coprocessor addressable in real mode
  6273.  24    Weitek math coprocessor present
  6274. ---Compaq Systempro---
  6275.  25    internal DMA parallel port available
  6276.  26    IRQ for internal DMA parallel port (if bit 25 set)
  6277.     0 = IRQ5
  6278.     1 = IRQ7
  6279.  28-27    parallel port DMA channel
  6280.     00 DMA channel 0
  6281.     01 DMA channel 0 ???
  6282.     10 reserved
  6283.     11 DMA channel 3
  6284. SeeAlso: INT 12
  6285. --------d-11----SI6A6A-----------------------
  6286. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  6287.     SI = 6A6Ah
  6288.     AH = command (see #0117)
  6289.     AL = SCSI Addressing (see #0118)
  6290. Return: CF clear if successful
  6291.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  6292.         AH = ??? for command 01h
  6293.     CF set on error
  6294.         AL = error code
  6295. SeeAlso: INT 21/AX=4402h"ASPI"
  6296.  
  6297. (Table 0117)
  6298. Values for SDLP command:
  6299.  00h    SDLP initialization
  6300.  01h    SDLP System Identify
  6301.  02h    simple read sectors
  6302.  03h    simple write sectors
  6303.  04h    simple verify sectors/seek to sector
  6304.  05h    get device size/type
  6305.  06h    ready unit
  6306.  07h    format unit
  6307.  08h    diagnostics
  6308.  09h    rewind
  6309.  0Ah    erase
  6310.  0Bh    write filemarks
  6311.  0Ch    space
  6312.  0Dh    prevent/allow media removal
  6313.  0Eh    load/unload media
  6314.  0Fh    reserved - returns good status
  6315.  10h    set block size
  6316.  11h    write setmark
  6317.  12h    set error level
  6318.  13h    get address of Request Sense Buffer
  6319.  14h    get SDLP error via Request Sense
  6320.  F0h    Vendor Unique Function (WD7000-FASST2 only)
  6321.  FDh    reset current SCSI HAC
  6322.  FEh    get/set current SCSI HAC
  6323.  FFh    execute SCSI command
  6324.  
  6325. Bitfields for SDLP SCSI addressing:
  6326. Bit(s)    Description    (Table 0118)
  6327.  7-6    Host Adapter
  6328.  5-3    SCSI Target ID
  6329.  2-0    SCSI Target LUN (logical unit number)
  6330. --------V-110225BX6900-----------------------
  6331. INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
  6332.     AX = 0225h
  6333.     BX = 6900h
  6334. Return: BL = 23h
  6335.     ES:DI -> ASCIZ "BLNKIT"
  6336. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  6337.       Inc.
  6338. SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
  6339. Index:    screen saver;Blank-It
  6340. --------V-110225BX6901-----------------------
  6341. INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
  6342.     AX = 0225h
  6343.     BX = 6901h
  6344.     CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
  6345.          largest value is 59 minutes (FBACh or 64428)
  6346. Return: CF clear if successful
  6347.         DI = 6A6Ah (possibly also 6A6Ah for all following functions)
  6348.         AH = ???
  6349.     CF set on error
  6350.         AL = error code
  6351. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
  6352. Index:    screen saver;Blank-It
  6353. --------V-110225BX6902-----------------------
  6354. INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
  6355.     AX = 0225h
  6356.     BX = 6902h
  6357. Return: CF clear if successful
  6358.     CF set on error
  6359.         AL = error code
  6360. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
  6361. Index:    screen saver;Blank-It
  6362. --------V-110225BX6903-----------------------
  6363. INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
  6364.     AX = 0225h
  6365.     BX = 6903h
  6366. Return: CF clear if successful
  6367.     CF set on error
  6368.         AL = error code
  6369. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
  6370. Index:    screen saver;Blank-It
  6371. --------V-110225BX6904-----------------------
  6372. INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
  6373.     AX = 0225h
  6374.     BX = 6904h
  6375. Return: CF clear if successful
  6376.         BX = timeout (see BX=6901h)
  6377.     CF set on error
  6378.         AL = error code
  6379. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
  6380. Index:    screen saver;Blank-It
  6381. --------V-110225BX6905-----------------------
  6382. INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
  6383.     AX = 0225h
  6384.     BX = 6905h
  6385. Return: CF clear if successful
  6386.     CF set on error
  6387.         AL = error code
  6388. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
  6389. Index:    screen saver;Blank-It
  6390. --------V-110225BX6906-----------------------
  6391. INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
  6392.     AX = 0225h
  6393.     BX = 6906h
  6394. Return: CF clear if successful
  6395.     CF set on error
  6396.         AL = error code
  6397. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  6398.       Inc.
  6399. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
  6400. Index:    screen saver;Blank-It
  6401. --------V-110225BX6907-----------------------
  6402. INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
  6403.     AX = 0225h
  6404.     BX = 6907h
  6405. Return: CF clear if successful
  6406.     CF set on error
  6407.         AL = error code
  6408. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
  6409. Index:    screen saver;Blank-It
  6410. --------V-110225BX6908-----------------------
  6411. INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
  6412.     AX = 0225h
  6413.     BX = 6908h
  6414. Return: CF clear if successful
  6415.     CF set on error
  6416.         AL = error code
  6417. SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
  6418. Index:    screen saver;Blank-It
  6419. --------V-110225BX6909-----------------------
  6420. INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
  6421.     AX = 0225h
  6422.     BX = 6909h
  6423.     CL = key scan code (see #0119)
  6424. Return: CF clear if successful
  6425.     CF set on error
  6426.         AL = error code
  6427. Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
  6428.       Inc.
  6429. SeeAlso: AX=0225h/BX=6900h
  6430. Index:    screen saver;Blank-It|hotkeys;Blank-It
  6431.  
  6432. (Table 0119)
  6433. Values for Blank-It hotkey scan code:
  6434.  00h    No hot key
  6435.  1Dh    Left CTRL
  6436.  2Ah    Left Shift
  6437.  36h    Right Shift
  6438.  57h    F11
  6439.  58h    F12
  6440. ----------1105D7-----------------------------
  6441. INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
  6442.     AX = 05D7h
  6443.     BX = product ID (0088h)
  6444. Note:    called by the BC++ IDE when an application calls
  6445.       INT 12/AX=05D7h/BX=05D7h
  6446. SeeAlso: INT 12/AX=05D7h/BX=05D7h
  6447. Index:    installation check;Borland C++ IDE
  6448. --------F-1177-------------------------------
  6449. INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
  6450.     AH = 77h
  6451.     AL = subfunction
  6452.         01h request SFENGINE start
  6453.         Return: AX = 0001h
  6454.         02h check if SFENGINE started
  6455.         Return: AX = 0000h or 0001h
  6456.         03h request SFENGINE stop
  6457.         Return: AX = 0001h
  6458.         04h check if SFENGINE stopped
  6459.         Return: AX = 0000h or 0001h
  6460.         05h installation check
  6461.         Return: AX = 0001h
  6462.         06h uninstall???
  6463.         BX:DX -> return address for successful uninstall???
  6464.         Return: (at caller's address)
  6465.             AX = 0000h
  6466.         else
  6467.         Return: AX = FFFFh
  6468. Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
  6469.         followed by internal data area???
  6470. SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
  6471. Index:    installation check;RainbowFAX|installation check;SFENGINE
  6472. Index:    uninstall;RainbowFAX|uninstall;SFENGINE
  6473. --------F-1178-------------------------------
  6474. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  6475.     AH = 78h
  6476.     AL = subfunction
  6477.         7801h set ???
  6478.         BX = new state for ???
  6479.             0000h ???
  6480.             else ???
  6481.         Return: AX = 0001h
  6482.         7802h set ???
  6483.         BX = ???
  6484.         CX = ???
  6485.         Return: AX = 0001h
  6486.         7803h set ???
  6487.         BX = new state for ???
  6488.             0000h ???
  6489.             else ???
  6490.         Return: AX = 0001h
  6491.         78XXh invalid subfunction
  6492.         Return: AX = FFFFh
  6493. SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
  6494. --------F-1179-------------------------------
  6495. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  6496.     AH = 79h
  6497.     AL = subfunction
  6498.         01h set ??? flag
  6499.         Return: AX = previous state (0000h already set, 0001h clear)
  6500.         02h clear ??? flag (see subfunc 01h)
  6501.         Return: AX = 0001h
  6502.         03h set ??? flag (different from subfn 02h or 04h)
  6503.         Return: AX = 0001h
  6504.         04h clear ??? flag (different from subfn 02h or 03h)
  6505.         Return: AX = 0001h
  6506.         else
  6507.         Return: AX = FFFFh
  6508. SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
  6509. --------F-117A-------------------------------
  6510. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  6511.     AH = 7Ah
  6512.     AL = subfunction
  6513.         01h set ??? flag
  6514.         Return: AX = previous state (0000h already set, 0001h clear)
  6515.         02h clear ??? flag
  6516.         Return: AX = 0001h
  6517.         03h set ??? flag (different from subfn 02h)
  6518.         Return: AX = 0001h
  6519.         else
  6520.         Return: AX = FFFFh
  6521. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
  6522. --------F-117C-------------------------------
  6523. INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
  6524.     AH = 7Ch
  6525.     AL = subfunction
  6526.         01h set ??? flag (see also subfn 02h)
  6527.         Return: AX = 0001h
  6528.         02h clear ??? flag (see also subfn 01h)
  6529.         Return: AX = 0001h
  6530.         else
  6531.         Return: AX = FFFFh
  6532. SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah
  6533. --------S-11BC--DX1954-----------------------
  6534. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  6535.     AH = BCh
  6536.     DX = 1954h
  6537. Return: AX = 1954h
  6538.     ES:DX -> entry point of driver (instead of INT 14)
  6539. SeeAlso: INT 14/AH=04h"FOSSIL"
  6540. --------d-11FF--SI6A6A-----------------------
  6541. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  6542.     AH = FFh
  6543.     SI = 6A6Ah
  6544.     AL = SCSI Addressing (see #0120)
  6545.     CX = bytes of data to be transmitted (max FFF0h)
  6546.     DH = 00h
  6547.     DL = length of SCSI Command Descriptor Block
  6548.     DS:DI -> SCSI Command Descriptor Block
  6549.     ES:BX -> data buffer
  6550. Return: CF set on error
  6551.         AL = error code
  6552.     CF clear if successful
  6553. Note:    because of busmaster operations with WD7000FASST avoid accessing
  6554.       video memory directly; check 386 memory manager for VDS support.
  6555.       The WD7000XTAT works with programmed IO and does not have this
  6556.       limitation.
  6557. SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
  6558.  
  6559. Bitfields for SDLP SCSI addressing:
  6560. Bit(s)    Description    (Table 0120)
  6561.  2-0    SCSI Target LUN (logical unit number)
  6562.  5-3    SCSI Target ID
  6563.  7    write flag, set for write operations, clear otherwise
  6564. --------T-11FFFECXFFFE-----------------------
  6565. INT 11 - BACK&FORTH (before v1.62) API
  6566.     AX = FFFEh
  6567.     CX = FFFEh
  6568.     BX = function
  6569.         00h installation check
  6570.         Return: AX = installation state
  6571.                 0001h BNFHIGH and BNFLOW both loaded
  6572.                 0003h only BNFHIGH loaded
  6573.                 else neither loaded
  6574.         01h ???
  6575.         Return: DX:AX -> ???
  6576.         02h ???
  6577.         03h ???
  6578.         04h ???
  6579.         05h ??? switches current PSP segment and stack if BNFLOW has not
  6580.             yet announced itself installed
  6581.         06h ???
  6582.         Return: AX = ???
  6583. SeeAlso: INT 12/AX=FFFEh
  6584. Index:    installation check;BACK&FORTH
  6585. --------B-12---------------------------------
  6586. INT 12 - BIOS - GET MEMORY SIZE
  6587. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  6588. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  6589.       XT, this value is set from the switches on the motherboard
  6590. SeeAlso: INT 11,INT 2F/AX=4A06h
  6591. --------K-12----CX1806-----------------------
  6592. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  6593.     CX = 1806h
  6594. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  6595.     CX = 1960h if installed
  6596. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  6597.       accented characters and box drawing on standard QWERTY keyboards; it
  6598.       also provides break-to-DOS and screen blanking capabilities
  6599. SeeAlso: INT 14/AX=AA01h
  6600. Index:    screen saver;KEYBUI
  6601. --------d-12----CX1807-----------------------
  6602. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  6603.     CX = 1807h
  6604. Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
  6605.     CX = 1961h if installed
  6606. Program: PARKER is an optionally-resident hard disk parking program by Johan
  6607.       Zwiekhorst
  6608. ----------1205D7BX05D7-----------------------
  6609. INT 12 U - Borland C++ IDE - INSTALLATION CHECK
  6610.     AX = 05D7h (1495d)
  6611.     BX = 05D7h
  6612. Note:    the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
  6613. SeeAlso: INT 11/AX=05D7h/BX=0088h
  6614. ----------124350BX4920-----------------------
  6615. INT 12 C - CPI-standard virus - "FRIEND" CHECK
  6616.     AX = 4350h
  6617.     BX = 4920h
  6618.     CX = AB46h
  6619.     DX = 554Eh
  6620. Return: if friendly (not to be infected)
  6621.         CX:DX -> ASCIZ identity code (changes yearly)
  6622. SeeAlso: INT 21/AX=0B56h
  6623. --------T-12FFFECXFFFE-----------------------
  6624. INT 12 - Back&Forth v1.62+ - API
  6625.     AX = FFFEh
  6626.     CX = FFFEh
  6627.     BX = function
  6628.         00h installation check
  6629.         Return: AX = 0001h installed
  6630.                  else  not loaded
  6631.         02h build program ID list
  6632.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  6633.         Return: AX = number of programs defined
  6634.             ES:DI buffer filled with AX words
  6635.         03h switch to specified task (task need not be open yet)
  6636.         DX = two-letter program ID
  6637.         Return: AX = 0000h if task undefined
  6638.         04h ???
  6639.         05h ???
  6640.         06h get version (undoc)
  6641.         Return: AX = version * 100 (v1.71 = 00ABh)
  6642.         07h ???
  6643.         08h get open tasks (undoc)
  6644.         ES:DI -> task info buffer (see #0121)
  6645.         Return: AX = number of open tasks (max 20)
  6646.         09h ???
  6647. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  6648. SeeAlso: INT 11/AX=FFFEh
  6649. Index:    installation check;BACK&FORTH
  6650.  
  6651. Format of Back&Forth task info buffer:
  6652. Offset    Size    Description    (Table 0121)
  6653.  00h 21 BYTEs    ASCIZ task name
  6654.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  6655.  16h    WORD    hotkey scan code
  6656.  18h    WORD    program ID
  6657. Index:    hotkeys;Back&Forth
  6658. --------B-1300-------------------------------
  6659. INT 13 - DISK - RESET DISK SYSTEM
  6660.     AH = 00h
  6661.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  6662. Return: AH = status (see #0122)
  6663.     CF clear if successful (returned AH=00h)
  6664.     CF set on error
  6665. Note:    forces controller to recalibrate drive heads (seek to track 0)
  6666.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  6667.       both the master drive and the slave drive respond to the Reset
  6668.       function that is issued to either drive
  6669. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  6670. --------B-1301-------------------------------
  6671. INT 13 - DISK - GET STATUS OF LAST OPERATION
  6672.     AH = 01h
  6673.     DL = drive (bit 7 set for hard disk)
  6674. Return: CF clear if successful (returned status 00h)
  6675.     CF set on error
  6676.     AH = status of previous operation (see #0122)
  6677. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  6678.       status in both AH and AL
  6679.  
  6680. (Table 0122)
  6681. Values for disk operation status:
  6682.  00h    successful completion
  6683.  01h    invalid function in AH or invalid parameter
  6684.  02h    address mark not found
  6685.  03h    disk write-protected
  6686.  04h    sector not found/read error
  6687.  05h    reset failed (hard disk)
  6688.  06h    disk changed (floppy)
  6689.  07h    drive parameter activity failed (hard disk)
  6690.  08h    DMA overrun
  6691.  09h    data boundary error (attempted DMA across 64K boundary or >80h sectors)
  6692.  0Ah    bad sector detected (hard disk)
  6693.  0Bh    bad track detected (hard disk)
  6694.  0Ch    unsupported track or invalid media
  6695.  0Dh    invalid number of sectors on format (PS/2 hard disk)
  6696.  0Eh    control data address mark detected (hard disk)
  6697.  0Fh    DMA arbitration level out of range (hard disk)
  6698.  10h    uncorrectable CRC or ECC error on read
  6699.  11h    data ECC corrected (hard disk)
  6700.  20h    controller failure
  6701.  31h    no such drive (Compaq)
  6702.  32h    incorrect drive type stored in CMOS (Compaq)
  6703.  40h    seek failed
  6704.  80h    timeout (not ready)
  6705.  AAh    drive not ready (hard disk)
  6706.  BBh    undefined error (hard disk)
  6707.  CCh    write fault (hard disk)
  6708.  E0h    status register error (hard disk)
  6709.  FFh    sense operation failed (hard disk)
  6710. --------B-1302-------------------------------
  6711. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  6712.     AH = 02h
  6713.     AL = number of sectors to read (must be nonzero)
  6714.     CH = low eight bits of cylinder number
  6715.     CL = sector number 1-63 (bits 0-5)
  6716.          high two bits of cylinder (bits 6-7, hard disk only)
  6717.     DH = head number
  6718.     DL = drive number (bit 7 set for hard disk)
  6719.     ES:BX -> data buffer
  6720. Return: CF set on error
  6721.         if AH = 11h (corrected ECC error), AL = burst length
  6722.     CF clear if successful
  6723.     AH = status (see #0122)
  6724.     AL = number of sectors transferred
  6725. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  6726.       enough; the read should be retried at least three times, resetting
  6727.       the disk with AH=00h between attempts
  6728.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  6729.       DH (head number) since the WD-1003 controller which is the standard
  6730.       AT controller (and the controller that IDE emulates) only supports
  6731.       16 heads
  6732.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6733.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  6734.       into bits 6 and 7 of DH
  6735. SeeAlso: AH=03h,AH=0Ah,AH=21h"PS/1"
  6736. --------B-1303-------------------------------
  6737. INT 13 - DISK - WRITE DISK SECTOR(S)
  6738.     AH = 03h
  6739.     AL = number of sectors to write (must be nonzero)
  6740.     CH = low eight bits of cylinder number
  6741.     CL = sector number 1-63 (bits 0-5)
  6742.          high two bits of cylinder (bits 6-7, hard disk only)
  6743.     DH = head number
  6744.     DL = drive number (bit 7 set for hard disk)
  6745.     ES:BX -> data buffer
  6746. Return: CF set on error
  6747.     CF clear if successful
  6748.     AH = status (see #0122)
  6749.     AL = number of sectors transferred
  6750. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  6751.       enough; the write should be retried at least three times, resetting
  6752.       the disk with AH=00h between attempts
  6753.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  6754.       DH (head number) since the WD-1003 controller which is the standard
  6755.       AT controller (and the controller that IDE emulates) only supports
  6756.       16 heads
  6757.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6758.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  6759.       into bits 6 and 7 of DH
  6760. SeeAlso: AH=02h,AH=0Bh,AH=22h"PS/1"
  6761. --------B-1304-------------------------------
  6762. INT 13 - DISK - VERIFY DISK SECTOR(S)
  6763.     AH = 04h
  6764.     AL = number of sectors to verify (must be nonzero)
  6765.     CH = low eight bits of cylinder number
  6766.     CL = sector number 1-63 (bits 0-5)
  6767.          high two bits of cylinder (bits 6-7, hard disk only)
  6768.     DH = head number
  6769.     DL = drive number (bit 7 set for hard disk)
  6770.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  6771. Return: CF set on error
  6772.     CF clear if successful
  6773.     AH = status (see #0122)
  6774.     AL = number of sectors verified
  6775. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  6776.       enough; the write should be retried at least three times, resetting
  6777.       the disk with AH=00h between attempts
  6778.     this function does not compare the disk with memory, it merely
  6779.       checks whether the sector's stored CRC matches the data's actual CRC
  6780.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  6781.       DH (head number) since the WD-1003 controller which is the standard
  6782.       AT controller (and the controller that IDE emulates) only supports
  6783.       16 heads
  6784.     AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6785.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  6786.       into bits 6 and 7 of DH
  6787. SeeAlso: AH=02h
  6788. --------B-1305-------------------------------
  6789. INT 13 - FLOPPY - FORMAT TRACK
  6790.     AH = 05h
  6791.     AL = number of sectors to format
  6792.     CH = track number
  6793.     DH = head number
  6794.     DL = drive number
  6795.     ES:BX -> address field buffer (see #0123)
  6796. Return: CF set on error
  6797.     CF clear if successful
  6798.     AH = status (see #0122)
  6799. Notes:    on AT or higher, call AH=17h first
  6800.     the number of sectors per track is read from the diskette parameter
  6801.       table pointed at by INT 1E
  6802. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  6803.  
  6804. Format of floppy format address field buffer entry (one per sector in track):
  6805. Offset    Size    Description    (Table 0123)
  6806.  00h    BYTE    track number
  6807.  01h    BYTE    head number (0-based)
  6808.  02h    BYTE    sector number
  6809.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  6810. --------B-1305-------------------------------
  6811. INT 13 - FIXED DISK - FORMAT TRACK
  6812.     AH = 05h
  6813.     AL = interleave value (XT-type controllers only)
  6814.     ES:BX -> 512-byte format buffer
  6815.         the first 2*(sectors/track) bytes contain F,N for each sector
  6816.            F = sector type
  6817.             00h for good sector
  6818.             20h to unassign from alternate location
  6819.             40h to assign to alternate location
  6820.             80h for bad sector
  6821.            N = sector number
  6822.     CH = cylinder number (bits 8,9 in high bits of CL)
  6823.     CL = high bits of cylinder number (bits 7,6)
  6824.     DH = head
  6825.     DL = drive
  6826. Return: CF set on error
  6827.     CF clear if successful
  6828.     AH = status code (see #0122)
  6829. Notes:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6830.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  6831.       into bits 6 and 7 of DH
  6832.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  6833.       first
  6834.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  6835.       DH (head number) since the WD-1003 controller which is the standard
  6836.       AT controller (and the controller that IDE emulates) only supports
  6837.       16 heads
  6838.     not all controller support sector types 20h and 40h
  6839. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  6840. --------d-1305-------------------------------
  6841. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  6842.     AH = 05h
  6843.     DL = hard drive ID
  6844.     ES:BX -> mode select data (see #0124)
  6845. Return: CF set on error
  6846.     CF clear if successful
  6847.     AH = status code (see #0122)
  6848. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
  6849.       format a SCSI disk with the desired parameters
  6850.     the mode select data below is from the SCSI-1 specification
  6851.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6852.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6853. SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
  6854.  
  6855. Format of Future Domain SCSI mode select data:
  6856. Offset    Size    Description    (Table 0124)
  6857.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  6858.  01h    BYTE    reserved (0)
  6859.  02h    BYTE    medium type (0 for hard disk)
  6860.  03h    BYTE    reserved (0)
  6861.  04h    BYTE    block descriptor length (8)
  6862.  05h    BYTE    density code (0 for hard disk)
  6863.  06h  3 BYTEs    (big-endian) number of blocks (000000h for entire disk)
  6864.  09h    BYTE    reserved (0)
  6865.  0Ah  3 BYTEs    (big-endian) block length (512 standard, or 256)
  6866.  0Dh    ???    vendor-specific parameter bytes (optional)
  6867. --------B-13057FSI324D-----------------------
  6868. INT 13 - 2M - FORMAT TRACK
  6869.     AX = 057Fh
  6870.     SI = 324Dh ("2M")
  6871.     CH = track number
  6872.     DH = head number
  6873.     DL = drive number
  6874.     ES:BX -> boot sector of future 2M diskette
  6875. Return:    CF set on error
  6876.     CF clear if successful
  6877.     AH = status (see #0122)
  6878. Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
  6879.       non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
  6880.       and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
  6881. Notes:    it is not necessary to call AH=17h/AH=18h first (will be ignored)
  6882.     the diskette format must always begin on cylinder 0 head 0
  6883.     the boot sector can be obtained from an already-formatted 2M diskette
  6884.       (by calling AH=02h with head number 00h in 2M v1.x and with head
  6885.       number 80h for 2M v2+)
  6886.     the installation check for 2M must search for a "CiriSOFT:2M:1.3" or
  6887.       "CiriSOFT:2MX:3.0" or similar (recomended ":2M:" or ":2MX:"
  6888.       substrings) in CiriSOFT TSR interface
  6889.     since 2M v2.0, the BOOT sector is emulated using the first physical
  6890.       sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
  6891.       diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
  6892.       FAT1) of 2M, in order to read the SuperBOOT code, head number must be
  6893.       80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
  6894.       This lets diskcopy programs format 2M target diskettes copying
  6895.       SuperBOOT code. If the target diskette is already 2MF formatted
  6896.       (containing boot code) this trick it is not necessary.
  6897.     when using STV technology (offset 65 of boot sector equal to 1) it is
  6898.       necessary to write the full track before formatting (except track 0
  6899.       side 0) to complete the format and skip future CRC errors on read; in
  6900.       track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
  6901.       may do a format-write-verify sequential phases to improve performance
  6902. SeeAlso: AH=05h"FLOPPY",INT 2F"CiriSOFT TSR interface"
  6903. --------B-1306-------------------------------
  6904. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  6905.     AH = 06h
  6906.     AL = interleave value
  6907.     CH = cylinder number (bits 8,9 in high bits of CL)
  6908.     CL = sector number
  6909.     DH = head
  6910.     DL = drive
  6911. Return: AH = status code (see #0122)
  6912. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6913.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  6914.       into bits 6 and 7 of DH
  6915. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  6916. --------d-1306-------------------------------
  6917. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  6918.     AH = 06h
  6919.     AL = interleave
  6920.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  6921.     DL = hard drive ID
  6922.     DH = defect list info (see #0125)
  6923.     ES:BX -> defect table A, B or C (see #0126,#0127,#0128)
  6924. Return: CF set on error
  6925.     CF clear if successful
  6926.     AH = status code (see #0122)
  6927. Notes:    block addresses must be in ascending order (for table B, cylinder is
  6928.       most significant, byte from index least significant; for table C,
  6929.       cylinder is most significant, sector number least significant)
  6930.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  6931.       track shall be reassigned
  6932.     table C defect sector number of FFFFFFFFh indicates that the entire
  6933.       track shall be reassigned
  6934.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  6935.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  6936. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  6937.  
  6938. Bitfields for Future Domain SCSI defect list info:
  6939. Bit(s)    Description    (Table 0125)
  6940.  7-5    drive LUN
  6941.  4    defect list is available
  6942.  3    defect list is complete (erase drive's defect list)
  6943.  2-0    defect table format
  6944.     (000=use defect table A, 100=use defect table B,
  6945.      101=use defect table C)
  6946.  
  6947. Format of Future Domain SCSI defect table A:
  6948. Offset    Size    Description    (Table 0126)
  6949.  00h    WORD    number of bytes remaining in table
  6950.  02h    BYTE    reserved (0)
  6951.  03h    BYTE    reserved (0)
  6952.  04h    WORD    (big-endian) defect list length (4*number of defects)
  6953.  06h  4 DWORDs    (big-endian) defect block addresses
  6954.  
  6955. Format of Future Domain SCSI defect table B:
  6956. Offset    Size    Description    (Table 0127)
  6957.  00h    WORD    number of bytes remaining in table
  6958.  02h    BYTE    reserved (0)
  6959.  03h    BYTE    reserved (0)
  6960.  04h    WORD    (big-endian) defect list length (8*number of defects)
  6961.  06h 8N BYTEs    defect list [array] (see #0129)
  6962.  
  6963. Format of Future Domain SCSI defect table C:
  6964. Offset    Size    Description    (Table 0128)
  6965.  00h    WORD    number of bytes remaining in table
  6966.  02h    BYTE    reserved (0)
  6967.  03h    BYTE    reserved (0)
  6968.  04h    WORD    (big-endian) defect list length (8*number of defects)
  6969.  06h 8N BYTEs    defect list [array] (see #0129)
  6970.  
  6971. Format of Future Domain SCSI defect list entry:
  6972. Offset    Size    Description    (Table 0129)
  6973.  00h  3 BYTEs    (big-endian) cylinder number of defect
  6974.  03h    BYTE    head number of defect
  6975.  04h    DWORD    (big-endian) defect bytes from index
  6976. --------d-1306-------------------------------
  6977. INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
  6978.     AH = 06h
  6979. Return: AH = status code (see #0122)
  6980.     CF clear if successful
  6981.         AL = first drive supported
  6982.         (80h nonconcurrent operation, 81h concurrent operation)
  6983.     CF set on error
  6984. Desc:    determine the number of the first supported SCSI drive
  6985. Note:    the return value is 80h when two SCSI drives are supported, 81h if
  6986.       only one SCSI drive is installed
  6987. SeeAlso: AH=08h
  6988. --------B-1307-------------------------------
  6989. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  6990.     AH = 07h
  6991.     AL = interleave value (XT only)
  6992.     ES:BX = 512-byte format buffer (see AH=05h)
  6993.     CH = cylinder number (bits 8,9 in high bits of CL)
  6994.     CL = sector number
  6995.     DH = head
  6996.     DL = drive
  6997. Return: AH = status code (see #0122)
  6998. Note:    AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
  6999.       than 1024 cylinders by placing bits 10 and 11 of the cylinder number
  7000.       into bits 6 and 7 of DH
  7001. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  7002. --------d-1307-------------------------------
  7003. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  7004.     AH = 07h
  7005.     AL = interleave (0 = default, 1 = consecutive sectors,
  7006.            2 - 255 = vendor unique)
  7007.     DL = hard drive ID
  7008. Return: CF set on error
  7009.     CF clear if successful
  7010.     AH = status code (see #0122)
  7011. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  7012. --------B-1308-------------------------------
  7013. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  7014.     AH = 08h
  7015.     DL = drive (bit 7 set for hard disk)
  7016. Return: CF set on error
  7017.         AH = status (07h) (see #0122)
  7018.     CF clear if successful
  7019.         AH = 00h
  7020.         BL = drive type (AT/PS2 floppies only) (see #0130)
  7021.         CH = low eight bits of maximum cylinder number
  7022.         CL = maximum sector number (bits 5-0)
  7023.          high two bits of maximum cylinder number (bits 7-6)
  7024.         DH = maximum head number
  7025.         DL = number of drives
  7026.         ES:DI -> drive parameter table (floppies only)
  7027. Notes:    may return successful even though specified drive is greater than the
  7028.       number of attached drives of that type (floppy/hard); check DL to
  7029.       ensure validity
  7030.     for systems predating the IBM AT, this call is only valid for hard
  7031.       disks, as it is implemented by the hard disk BIOS rather than the
  7032.       ROM BIOS
  7033.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  7034.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  7035.     may indicate only two drives present even if more are attached; to
  7036.       ensure the correct count, one can use AH=15h to scan through possible
  7037.       drives
  7038. SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=15h,INT 1E,INT 41
  7039.  
  7040. (Table 0130)
  7041. Values for diskette drive type:
  7042.  01h    360K
  7043.  02h    1.2M
  7044.  03h    720K
  7045.  04h    1.44M
  7046.  05h    ??? (reportedly an obscure drive type shipped on some IBM machines)
  7047.     2.88M on some machines (at least AMI 486 BIOS)
  7048.  06h    2.88M
  7049. --------B-1309-------------------------------
  7050. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  7051.     AH = 09h
  7052.     DL = drive (80h for first, 81h for second)
  7053. Return: CF clear if successful
  7054.     CF set on error
  7055.     AH = status (see #0122)
  7056. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  7057.       INT 41
  7058.     on the AT and later, this function uses the parameter table pointed at
  7059.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  7060.       DL=81h
  7061. SeeAlso: INT 41,INT 46
  7062. --------B-130A-------------------------------
  7063. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  7064.     AH = 0Ah
  7065.     AL = number of sectors
  7066.     CH = low eight bits of cylinder number
  7067.     CL = sector number (bits 5-0)
  7068.          high two bits of cylinder number (bits 7-6)
  7069.     DH = head number
  7070.     DL = drive number (80h = first, 81h = second)
  7071.     ES:BX -> data buffer
  7072. Return: CF clear if successful
  7073.     CF set on error
  7074.     AH = status (see #0122)
  7075.     AL = number of sectors transferred
  7076. Notes:    this function reads in four to seven bytes of error-correcting code
  7077.       along with each sector's worth of information
  7078.     data errors are not automatically corrected, and the read is aborted
  7079.       after the first sector with an ECC error
  7080.     used for diagnostics only on PS/2 systems
  7081. SeeAlso: AH=02h,AH=0Bh
  7082. --------B-130B-------------------------------
  7083. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  7084.     AH = 0Bh
  7085.     AL = number of sectors
  7086.     CH = low eight bits of cylinder number
  7087.     CL = sector number (bits 5-0)
  7088.          high two bits of cylinder number (bits 7-6)
  7089.     DH = head number
  7090.     DL = drive number (80h = first, 81h = second)
  7091.     ES:BX -> data buffer
  7092. Return: CF clear if successful
  7093.     CF set on error
  7094.     AH = status (see #0122)
  7095.     AL = number of sectors transferred
  7096. Notes:    each sector's worth of data must be followed by four to seven bytes of
  7097.       error-correction information
  7098.     used for diagnostics only on PS/2 systems
  7099. SeeAlso: AH=03h,AH=0Ah
  7100. --------B-130C-------------------------------
  7101. INT 13 - HARD DISK - SEEK TO CYLINDER
  7102.     AH = 0Ch
  7103.     CH = low eight bits of cylinder number
  7104.     CL = sector number (bits 5-0)
  7105.         high two bits of cylinder number (bits 7-6)
  7106.     DH = head number
  7107.     DL = drive number (80h = first, 81h = second hard disk)
  7108. Return: CF set on error
  7109.     CF clear if successful
  7110.     AH = status (see #0122)
  7111. SeeAlso: AH=00h,AH=02h,AH=0Ah
  7112. --------d-130D-------------------------------
  7113. INT 13 - HARD DISK - RESET HARD DISKS
  7114.     AH = 0Dh
  7115.     DL = drive number (80h = first, 81h = second hard disk)
  7116. Return: CF set on error
  7117.     CF clear if successful
  7118.     AH = status (see #0122)
  7119. Notes:    reinitializes the hard disk controller, resets the specified drive's
  7120.       parameters, and recalibrates the drive's heads (seek to track 0)
  7121.     for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
  7122.       both the master drive and the slave drive respond to the Reset
  7123.       function that is issued to either drive
  7124.     not for PS/2 ESDI drives
  7125. SeeAlso: AH=00h,INT 21/AH=0Dh
  7126. --------B-130E-------------------------------
  7127. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  7128.     AH = 0Eh
  7129.     DL = drive number (80h = first, 81h = second hard disk)
  7130.     ES:BX -> buffer
  7131. Return: CF set on error
  7132.     CF clear if successful
  7133.     AH = status code (see #0122)
  7134. Notes:    transfers controller's sector buffer.  No data is read from the drive
  7135.     used for diagnostics only on PS/2 systems
  7136. SeeAlso: AH=0Ah
  7137. --------B-130F-------------------------------
  7138. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  7139.     AH = 0Fh
  7140.     DL = drive number (80h = first, 81h = second hard disk)
  7141.     ES:BX -> buffer
  7142. Return: CF set on error
  7143.     CF clear if successful
  7144.     AH = status code (see #0122)
  7145. Notes:    does not write data to the drive
  7146.     should be called before formatting to initialize an XT-type
  7147.       controller's sector buffer
  7148.     used for diagnostics only on PS/2 systems
  7149. SeeAlso: AH=0Bh
  7150. --------B-1310-------------------------------
  7151. INT 13 - HARD DISK - CHECK IF DRIVE READY
  7152.     AH = 10h
  7153.     DL = drive number (80h = first, 81h = second hard disk)
  7154. Return: CF set on error
  7155.     CF clear if successful
  7156.     AH = status (see #0122 at AH=01h)
  7157. --------B-1311-------------------------------
  7158. INT 13 - HARD DISK - RECALIBRATE DRIVE
  7159.     AH = 11h
  7160.     DL = drive number (80h = first, 81h = second hard disk)
  7161. Return: CF set on error
  7162.     CF clear if successful
  7163.     AH = status (see #0122 at AH=01h)
  7164. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  7165. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  7166. --------B-1312-------------------------------
  7167. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  7168.     AH = 12h
  7169.     DL = drive number (80h = first, 81h = second hard disk)
  7170. Return: CF set on error
  7171.     CF clear if successful
  7172.     AH = status code (see #0122 at AH=01h)
  7173.     AL = 00h
  7174. SeeAlso: AH=13h,AH=14h
  7175. --------d-1312-------------------------------
  7176. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  7177.     AH = 12h
  7178.     DL = hard drive ID
  7179. Return: CF set on error
  7180.     CF clear if successful
  7181.     AH = status code (see #0122 at AH=01h)
  7182. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  7183.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  7184.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  7185.       is displayed
  7186.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7187.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7188. --------d-1312-------------------------------
  7189. INT 13 - SyQuest - START/STOP SCSI DISK
  7190.     AH = 12h
  7191.     AL = subfunction
  7192.         00h start disk
  7193.         01h stop disk
  7194.     CX = wait flag
  7195.         00h wait for ready
  7196.         01h don't wait for ready
  7197.     DL = hard drive ID (bit 7 for hard disks must be set)
  7198. Return: CF set on error
  7199.     CF clear if successful
  7200.     AH = status
  7201.         00h successful
  7202.         01h invalid function request
  7203.         80h timeout
  7204. SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
  7205. --------B-1313-------------------------------
  7206. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  7207.     AH = 13h
  7208.     DL = drive number (80h = first, 81h = second hard disk)
  7209. Return: CF set on error
  7210.     CF clear if successful
  7211.     AH = status code (see #0122 at AH=01h)
  7212.     AL = 00h
  7213. SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
  7214. --------d-1313-------------------------------
  7215. INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
  7216.     AH = 13h
  7217.     DL = drive ID (bit 7 set for hard disks)
  7218. Return: CF set on error
  7219.         AH = status (07h) (see #0122 at AH=01h)
  7220.     CF clear if successful
  7221.         AH = 00h
  7222.         BL = drive type (AT/PS2 floppies only) (see #0130)
  7223.         CH = low eight bits of maximum cylinder number
  7224.         CL = maximum sector number (bits 5-0)
  7225.          high two bits of maximum cylinder number (bits 7-6)
  7226.         DH = maximum head number
  7227.         DL = number of drives
  7228.         ES:DI -> drive parameter table (floppies only)
  7229. Notes:    the return values are identical to the standard INT 13/AH=08h, but the
  7230.       number of drives is not limited to 2, so 
  7231.     scanning all possible drive numbers with the Read DASD Type call
  7232.       (AH=15h) should generally be preferred to determine the number of
  7233.       drives attached to the system.
  7234. SeeAlso: AH=08h,AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
  7235. --------B-1314-------------------------------
  7236. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  7237.     AH = 14h
  7238. Return: CF set on error
  7239.     CF clear if successful
  7240.     AH = status code (see #0122 at AH=01h)
  7241.     AL = 00h
  7242. SeeAlso: AH=12h,AH=13h
  7243. --------B-1315-------------------------------
  7244. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  7245.     AH = 15h
  7246.     DL = drive number (bit 7 set for hard disk)
  7247. Return: CF clear if successful
  7248.         AH = type code
  7249.         00h no such drive
  7250.         01h floppy without change-line support
  7251.         02h floppy with change-line support
  7252.         03h hard disk
  7253.             CX:DX = number of 512-byte sectors
  7254.     CF set on error
  7255.         AH = status (see #0122 at AH=01h)
  7256. Note:    SyQuest can report type 01h or 02h for 'hard disks', since its media
  7257.       is removable
  7258. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  7259. --------B-1316-------------------------------
  7260. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  7261.     AH = 16h
  7262.     DL = drive number
  7263. Return: CF clear if change line inactive
  7264.         AH = 00h (disk not changed)
  7265.     CF set if change line active
  7266.         AH = status
  7267.         01h invalid command (SyQuest)
  7268.         06h change line active or not supported
  7269.         80h drive not ready or not present
  7270. Notes:    call AH=15h first to determine whether the drive supports a change
  7271.       line
  7272.     this call also clears the media-change status, so that a disk change
  7273.       is only reported once
  7274. SeeAlso: AH=15h
  7275. --------B-1317-------------------------------
  7276. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  7277.     AH = 17h
  7278.     AL = format type
  7279.         01h = 320/360K disk in 360K drive
  7280.         02h = 320/360K disk in 1.2M drive
  7281.         03h = 1.2M disk in 1.2M drive
  7282.         04h = 720K disk in 720K or 1.44M drive
  7283.     DL = drive number
  7284. Return: CF set on error
  7285.     CF clear if successful
  7286.     AH = status (see #0122 at AH=01h)
  7287. Note:    this function does not handle 1.44M drives; use AH=18h instead
  7288. SeeAlso: AH=15h,AH=18h
  7289. --------d-131700-----------------------------
  7290. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  7291.     AX = 1700h
  7292.     CL = length of buffer
  7293.     DL = hard drive ID
  7294.     ES:BX -> buffer for info (see #0131)
  7295. Return: CF clear if successful
  7296.         CH = number of bytes returned in buffer???
  7297.     CF set on error
  7298.         AH = status code (see #0122 at AH=01h)
  7299. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  7300.     information block bytes 5-n are vendor-specific in older SCSI devices
  7301.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7302.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7303. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  7304.  
  7305. Format of Future Domain SCSI inquiry information block:
  7306. Offset    Size    Description    (Table 0131)
  7307.  00h    BYTE    device type
  7308.         bits 0-4: peripheral device type (see #0132)
  7309.         bits 5-7: peripheral qualifier (see #0133)
  7310.  01h    BYTE    device type modifier
  7311.         bits 0-6: device type modifier
  7312.         bit 7: removable medium
  7313.  02h    BYTE    SCSI version (see #0134)
  7314.  03h    BYTE    data format/capabilities (see #0135)
  7315.  04h    BYTE    additional data length (total remaining bytes)
  7316.  05h  2 BYTEs    reserved
  7317.  07h    BYTE    device capabilities (see #0136)
  7318.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  7319.  10h  8 BYTEs    product identification (space-padded ASCII)
  7320.  20h  4 BYTEs    product revision level (space-padded ASCII)
  7321.  24h 20 BYTEs    vendor specific
  7322.  38h 40 BYTEs    reserved
  7323.  60h    var    vendor specific parameters
  7324.  
  7325. (Table 0132)
  7326. Values for Future Domain SCSI peripheral device type:
  7327.  00h    direct-access device (e.g., magnetic disk)
  7328.  01h    sequential-access device (e.g., magnetic tape)
  7329.  02h    printer device
  7330.  03h    processor device
  7331.  04h    write-once device (e.g., some optical disks)
  7332.  05h    CD-ROM device
  7333.  06h    scanner device
  7334.  07h    optical memory device (e.g., some optical disks)
  7335.  08h    medium changer device (e.g., jukeboxes)
  7336.  09h    communications device
  7337.  0Ah    (defined by ASC IT8)
  7338.  0Bh    (defined by ASC IT8)
  7339.  0Ch-1Eh reserved
  7340.  1Fh    unknown or no device type
  7341.  
  7342. (Table 0133)
  7343. Values for Future Domain SCSI peripheral qualifier:
  7344.  000b    device is currently connected to this logical unit and available
  7345.  001b    target is capable of supporting the specified peripheral, but the
  7346.       physical device is not currently connected to this logical unit
  7347.  010b    reserved
  7348.  011b    target can't support a physical device on this logical unit
  7349.  1xxb    vendor specific
  7350.  
  7351. Bitfields for Future Domain SCSI version:
  7352. Bit(s)    Description    (Table 0134)
  7353.  0-2    ANSI-approved version
  7354.     000 device might or might not comply to ANSI standard
  7355.     001 device complies to ANSI SCSI-1
  7356.     010 device complies to ANSI SCSI-2
  7357.     other reserved
  7358.  3-5    ECMA version
  7359.  6-7    ISO version
  7360.  
  7361. Bitfields for Future Domain SCSI data format/capabilities:
  7362. Bit(s)    Description    (Table 0135)
  7363.  0-2    response data format
  7364.     000 information block is as specified in SCSI-1
  7365.     001 information block is as specified in CCS
  7366.     010 information block is as specified in SCSI-2
  7367.     other reserved
  7368.  4-5    reserved
  7369.  6    terminate I/O process supported
  7370.  7    asynchronous event notification supported
  7371.  
  7372. Bitfields for Future Domain SCSI device capabilities:
  7373. Bit(s)    Description    (Table 0136)
  7374.  0    device responds to RESET with a hard RESET
  7375.  1    tagged command queuing supported
  7376.  2    reserved
  7377.  3    linked commands supported
  7378.  4    synchronous data transfer supported
  7379.  5    16-transfers supported
  7380.  6    32-transfers supported
  7381.  7    relative addressing supported
  7382. --------B-1318-------------------------------
  7383. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  7384.     AH = 18h
  7385.     DL = drive number
  7386.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  7387.     CL = sectors per track (bits 0-5)
  7388.          top 2 bits of highest cylinder number (bits 6,7)
  7389. Return: AH = status
  7390.         00h requested combination supported
  7391.         01h function not available
  7392.         0Ch not supported or drive type unknown
  7393.         80h there is no disk in the drive
  7394.     ES:DI -> 11-byte parameter table (see INT 1E)
  7395. SeeAlso: AH=05h,AH=07h,AH=17h
  7396. --------d-1318-------------------------------
  7397. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  7398.     AH = 18h
  7399.     DL = hard drive ID
  7400. Return: CF set on error
  7401.         AH = status code (see #0122 at AH=01h)
  7402.     CF clear if successful
  7403.         AX = 4321h (magic number)
  7404.         CX = controller family code (see #0137)
  7405.         ---if family code=0200h
  7406.         DH = number of exclusively ROM-controlled SCSI devices
  7407.         DL = canonical SCSI device number for specified drive
  7408.         ---if family code <> 0200h
  7409.         BH = number of exclusively ROM-controlled SCSI devices
  7410.         BL = canonical SCSI device number for specified drive
  7411. Notes:    also sets an internal flag (non-resettable) which prevents some
  7412.       controller messages from being displayed, allows writes to
  7413.       removable devices (use caution!), and enables the INT 13 interface
  7414.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  7415.       versions
  7416.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7417.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7418. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  7419.  
  7420. (Table 0137)
  7421. Values for Future Domain SCSI controller family code:
  7422.  0200h    TMC-1680/? (ROM 3.0)
  7423.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  7424.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  7425.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  7426.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  7427. --------B-1319-------------------------------
  7428. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  7429.     AH = 19h
  7430.     DL = drive
  7431. Return: CF set on error
  7432.     CF clear if successful
  7433.     AH = status (see #0122 at AH=01h)
  7434. SeeAlso: AH=11h
  7435. --------d-1319-------------------------------
  7436. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  7437.     AH = 19h
  7438.     DL = hard drive ID
  7439. Return: CF set on error
  7440.         AH = status code (see #0122 at AH=01h)
  7441.     CF clear if successful
  7442.         AH = disk type (03h = fixed disk)
  7443.         CX:DX = number of 512-byte sectors
  7444. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  7445.       adjusts the result for 512-byte sectors
  7446.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  7447.       sector" (nnn=256 or 512, the only sizes supported in the translation
  7448.       code)
  7449.     should probably be called when a removable device has its media changed
  7450.     returns the same values as AH=15h
  7451.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7452.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7453. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  7454. --------d-131A-------------------------------
  7455. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  7456.     AH = 1Ah
  7457.     AL = defect table entry count
  7458.     CL = format modifiers (see #0138)
  7459.     DL = drive (80h,81h)
  7460.     ES:BX -> defect table (see #0139), ignored if AL=00h
  7461. Return: CF set on error
  7462.     CF clear if successful
  7463.     AH = status (see #0122 at AH=01h)
  7464. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  7465.       cylinder is formatted
  7466. SeeAlso: AH=07h,INT 15/AH=0Fh
  7467.  
  7468. Bitfields for ESDI format modifiers:
  7469. Bit(s)    Description    (Table 0138)
  7470.  4    generate periodic interrupt
  7471.  3    perform surface analysis
  7472.  2    update secondary defect map
  7473.  1    ignore secondary defect map
  7474.  0    ignore primary defect map
  7475.  
  7476. Format of defect table entry [array]:
  7477. Offset    Size    Description    (Table 0139)
  7478.  00h  3 BYTEs    relative sector address (little-endian)
  7479.  03h    BYTE    flags and defect count
  7480.         bit 7: last logical sector on track
  7481.         bit 6: first logical sector on track
  7482.         bit 5: last logical sector on cylinder
  7483.         bit 4: logical sectors are pushed onto next track
  7484.         bits 3-0: number of defects pushed from previous cylinder
  7485. --------d-131A-------------------------------
  7486. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  7487.     AH = 1Ah
  7488.     CH = track (bits 8,9 in high bits of CL)
  7489.     CL = sector (01h to number of sectors/track for drive)
  7490.     DH = head
  7491.     DL = hard drive ID
  7492. Return: CF set on error
  7493.     AH = status code (see #0122 at AH=01h)
  7494.     CX:DX = logical block number of last quickly-accessible block after
  7495.         given block
  7496. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  7497.       logical block address of the last block after which a substantial
  7498.       delay in data transfer will be encountered (usually the last block
  7499.       on the current cylinder).  No translation to 512 byte sectors is
  7500.       performed on the result if data is stored on the disk in other than
  7501.       512 byte sectors.
  7502.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7503.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7504. SeeAlso: AH=15h,AH=19h"SCSI"
  7505. --------d-131B-------------------------------
  7506. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  7507.     AH = 1Bh
  7508.     AL = number of sectors to read
  7509.     DL = drive
  7510.     ES:BX -> buffer for manufacturing header (defect list)
  7511. Return: CF set on error
  7512.     CF clear if successful
  7513.     AH = status
  7514. Note:    manufacturing header format (Defect Map Record format) can be found
  7515.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  7516.     the first sector read contains the manufacturing header with the number
  7517.       of defect entries and the beginning of the defect map; the remaining
  7518.       sectors contain the remainder of the defect map
  7519. --------d-131B-------------------------------
  7520. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  7521.     AH = 1Bh
  7522.     DL = hard drive ID
  7523. Return: CF set on error
  7524.         AH = status code (see #0122 at AH=01h)
  7525.     CF clear if successful
  7526.         ES:BX -> SCSI disk information block (see #0140)
  7527. Notes:    also sets a non-resettable flag which prevents some controller messages
  7528.       from being displayed
  7529.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  7530.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  7531. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  7532.  
  7533. Format of Future Domain SCSI disk information block:
  7534. Offset    Size    Description    (Table 0140)
  7535.  00h    BYTE    drive physical information (see #0141)
  7536.  01h    WORD    translated number of cylinders
  7537.  03h    BYTE    translated number of heads
  7538.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  7539.  05h    BYTE    drive address
  7540.         bits 0-2: logical unit number
  7541.         bits 3-5: device number
  7542.  06h    BYTE    01h at initialization
  7543.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  7544.  08h    BYTE    00h
  7545.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  7546.  0Ah    BYTE    00h
  7547.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  7548.  15h    DWORD    translated number of sectors on device
  7549.  
  7550. Bitfields for Future Domain SCSI device physical information:
  7551. Bit(s)    Description    (Table 0141)
  7552.  0    ???
  7553.  1    device uses parity
  7554.  2    256 bytes per sector instead of 512
  7555.  3    don't have capacity yet???
  7556.  4    disk is removable
  7557.  5    logical unit number is not present
  7558. --------d-131C-------------------------------
  7559. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  7560.     AH = 1Ch
  7561.     DL = hard drive ID (any valid SCSI hard disk)
  7562. Return: CF set on error
  7563.         AH = status code (see #0122 at AH=01h)
  7564.     CF clear if successful
  7565.         ES:BX -> first byte of free RAM on controller
  7566. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  7567.       to 1BFFh on-board the controller for storing drive information and
  7568.       controller status; ES:BX points to the first byte available for other
  7569.       uses
  7570.     ES contains the segment at which the controller resides; the
  7571.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  7572. SeeAlso: AH=1Bh"SCSI"
  7573. --------d-131C-------------------------------
  7574. INT 13 U - ESDI FIXED DISK - ???
  7575.     AH = 1Ch
  7576.     AL = subfunction (01h-06h)
  7577.     DL = drive (80h,81h)
  7578.     ???
  7579. Return: ???
  7580. Note:    these functions perform a controller command 0612h without DMA
  7581. --------d-131C08-----------------------------
  7582. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  7583.     AX = 1C08h
  7584.     DL = drive (80h,81h)
  7585.     ES:BX -> buffer for Command Complete Status Block (see #0142)
  7586. Return: CF set on error
  7587.     CF clear if successful
  7588.     AH = status (see #0122 at AH=01h)
  7589. SeeAlso: AX=1C09h,AX=1C0Ah
  7590.  
  7591. Format of ESDI Command Complete Status Block:
  7592. Offset    Size    Description    (Table 0142)
  7593.  00h    BYTE    07h
  7594.  01h    BYTE    size of block in words (07h)
  7595.  02h    BYTE    command error code (see #0143)
  7596.  03h    BYTE    command status code (see #0144)
  7597.  04h    BYTE    device error code, group 1 (see #0145)
  7598.  05h    BYTE    device error flags, group 2 (see #0146)
  7599.  06h    WORD    number of unprocessed sectors due to abnormal termination
  7600.  08h    DWORD    last Relative Sector Address processed by command
  7601.  0Ch    WORD    number of sectors corrected by ECC codes
  7602.  
  7603. (Table 0143)
  7604. Values for ESDI command error code:
  7605.  00h    successful
  7606.  01h    parameter invalid
  7607.  02h    unknown function
  7608.  03h    unsupported command
  7609.  04h    command cancelled
  7610.  05h    unknown function
  7611.  06h    controller diagnostics failed
  7612.  07h    formatting failed
  7613.  08h    format error in primary map
  7614.  09h    format error in secondary map
  7615.  0Ah    diagnostic failure during formatting
  7616.  0Bh    warning: secondary map too large during formatting
  7617.  0Ch    warning: non-zero defect
  7618.  0Dh    system checksum error during formatting
  7619.  0Eh    warning: incompatible device
  7620.  0Fh    warning: push table overflowed
  7621.  10h    warning: more than 15 sectors pushed to next cylinder
  7622.  11h    internal hardware error
  7623.  12h    warning: errors found while verifying sectors
  7624.  13h    invalid device
  7625.  FFh    device error
  7626.  
  7627. (Table 0144)
  7628. Values for ESDI command status code:
  7629.  01h    successful
  7630.  03h    successful after ECC
  7631.  05h    successful after retries
  7632.  06h    format partially completed
  7633.  07h    successful after ECC and retries
  7634.  08h    command completed with warning (see #0143)
  7635.  09h    abort complete
  7636.  0Ah    reset complete
  7637.  0Bh    data transfer ready (no status block)
  7638.  0Ch    command completed with failure (see #0145,#0146)
  7639.  0Dh    DMA error
  7640.  0Eh    command block error (see #0143)
  7641.  0Fh    bad attention code
  7642.  
  7643. (Table 0145)
  7644. Values for ESDI device error code, group 1:
  7645.  00h    successful
  7646.  01h    seek fault detected by device
  7647.  02h    interface fault
  7648.  03h    sector ID not found
  7649.  04h    disk not formatted
  7650.  05h    unrecoverable ECC error
  7651.  06h    ECC error in sector ID
  7652.  07h    invalid relative sector address
  7653.  08h    timeout
  7654.  09h    sector defective
  7655.  0Ah    disk changed (removable media)
  7656.  0Bh    selection error
  7657.  0Ch    write protected (removable media)
  7658.  0Dh    write fault
  7659.  0Eh    read fault
  7660.  0Fh    no index or sector pulse
  7661.  10h    device not ready
  7662.  11h    seek error detected by adapter
  7663.  12h    bad format
  7664.  13h    volume overflow
  7665.  14h    data address mark not found
  7666.  15h    sector ID not found
  7667.  16h    missing device configuration data
  7668.  17h    first/last relative sector flags missing
  7669.  18h    track empty
  7670.  81h    timeout while waiting for stop
  7671.  82h    timeout while waiting for end of data transfer
  7672.  84h    stopped awaiting data transfer during formatting
  7673.  85h    timeout while waiting for head switch
  7674.  86h    timeout while awaiting DMA completion
  7675.  
  7676. Bitfields for ESDI device error flags, group 2:
  7677. Bit(s)    Description    (Table 0146)
  7678.  7-5    unused
  7679.  4    ready
  7680.  3    selected
  7681.  2    write fault
  7682.  1    on track 0
  7683.  0    seek/command complete
  7684. --------d-131C09-----------------------------
  7685. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  7686.     AX = 1C09h
  7687.     DL = drive (80h,81h)
  7688.     ES:BX -> buffer for Device Status Block (see #0147)
  7689. Return: CF set on error
  7690.     CF clear if successful
  7691.     AH = status (see #0122 at AH=01h)
  7692. SeeAlso: AX=1C08h,AX=1C0Ah
  7693.  
  7694. Format of ESDI Device Status Block:
  7695. Offset    Size    Description    (Table 0147)
  7696.  00h    BYTE    08h
  7697.  01h    BYTE    number of words in block (09h)
  7698.  02h    BYTE    error flags
  7699.  03h    BYTE    unused
  7700.  04h    BYTE    command error code (see #0143)
  7701.  05h    BYTE    command status code (see #0144)
  7702.  06h    WORD    ESDI standard status
  7703.  08h  5 WORDs    ESDI vendor-specific status codes
  7704. --------d-131C0A-----------------------------
  7705. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  7706.     AX = 1C0Ah
  7707.     DL = drive (80h,81h)
  7708.     ES:BX -> buffer for Drive Configuration Status Block (see #0148)
  7709. Return: CF set on error
  7710.     CF clear if successful
  7711.     AH = status (see #0122 at AH=01h)
  7712. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  7713.       Adapter/A Technical Reference
  7714. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  7715.  
  7716. Format of ESDI Drive Configuration Status Block:
  7717. Offset    Size    Description    (Table 0148)
  7718.  00h    BYTE    09h
  7719.  01h    BYTE    number of words in block (06h)
  7720.  02h    BYTE    flags
  7721.  03h    BYTE    number of spare sectors per cylinder
  7722.  04h    DWORD    total number of usable sectors
  7723.  08h    WORD    total number of cylinders
  7724.  0Ah    BYTE    tracks per cylinder
  7725.  0Bh    BYTE    sectors per track
  7726. --------d-131C0B-----------------------------
  7727. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  7728.     AX = 1C0Bh
  7729.     ES:BX -> buffer for Controller Configuration Status Block (see #0149)
  7730. Return: CF set on error
  7731.     CF clear if successful
  7732.     AH = status (see #0122 at AH=01h)
  7733. SeeAlso: AX=1C0Ch
  7734.  
  7735. Format of ESDI Controller Configuration Status Block:
  7736. Offset    Size    Description    (Table 0149)
  7737.  00h    BYTE    E9h
  7738.  01h    BYTE    number of words in block (06h)
  7739.  02h    WORD    unused (0000h)
  7740.  04h    DWORD    controller microcode revision level
  7741.  08h  2 WORDs    unused (0000h)
  7742. --------d-131C0C-----------------------------
  7743. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  7744.     AX = 1C0Ch
  7745.     ES:BX -> buffer for POS Information Status Block (see #0150)
  7746. Return: CF set on error
  7747.     CF clear if successful
  7748.     AH = status (see #0122 at AH=01h)
  7749. SeeAlso: AX=1C0Bh
  7750.  
  7751. Format of ESDI POS Information Status Block:
  7752. Offset    Size    Description    (Table 0150)
  7753.  00h    BYTE    EAh
  7754.  01h    BYTE    number of words in block (05h)
  7755.  02h    WORD    magic value FFDDh
  7756.  04h    BYTE    POS register 3
  7757.  05h    BYTE    POS register 2
  7758.  06h    BYTE    POS register 5 (unused, FFh)
  7759.  07h    BYTE    POS register 4 (unused, FFh)
  7760.  08h    BYTE    POS register 7 (unused, FFh)
  7761.  09h    BYTE    POS register 6 (unused, FFh)
  7762. --------d-131C0D-----------------------------
  7763. INT 13 U - ESDI FIXED DISK - ???
  7764.     AX = 1C0Dh
  7765.     DL = drive (80h,81h)
  7766.     ???
  7767. Return: ???
  7768. Note:    invokes controller command 0614h without DMA
  7769. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh
  7770. --------d-131C0E-----------------------------
  7771. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  7772.     AX = 1C0Eh
  7773.     CH = low 8 bits of cylinder number
  7774.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  7775.     DH = head number
  7776.     DL = drive number (80h,81h)
  7777.     ES:BX -> ABA number
  7778. Return: CF set on error
  7779.     CF clear if successful
  7780.     AH = status (see #0122 at AH=01h)
  7781. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  7782.       Technical Reference by using its Device Configuration Status Block
  7783. --------d-131C0F-----------------------------
  7784. INT 13 U - ESDI FIXED DISK - ???
  7785.     AX = 1C0Fh
  7786.     DL = drive (80h,81h)
  7787.     ???
  7788. Return: ???
  7789. Note:    invokes controller command 0614h without DMA
  7790. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h
  7791. --------d-131C12-----------------------------
  7792. INT 13 U - ESDI FIXED DISK - ???
  7793.     AX = 1C12h
  7794.     DL = drive (80h,81h)
  7795.     ???
  7796. Return: ???
  7797. Note:    invokes controller command 0612h without DMA
  7798. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh
  7799. --------c-131D-------------------------------
  7800. INT 13 - IBMCACHE.SYS - CACHE STATUS
  7801.     AH = 1Dh
  7802.     AL = subfunction
  7803.         01h get status record
  7804.         DL = drive???
  7805.         Return: ES:BX -> status record (see #0151)
  7806.             CF set on error
  7807.                 AH = error code
  7808.         02h set cache status
  7809.         ES:BX -> status record (see #0151)
  7810.         DL = drive???
  7811.         Return: CF set on error
  7812.  
  7813. Format of IBMCACHE.SYS status record:
  7814. Offset    Size    Description    (Table 0151)
  7815.  00h    DWORD    total number of read requests
  7816.  04h    DWORD    total number of hits
  7817.  08h    DWORD    number of physical disk reads
  7818.  0Ch    DWORD    total number of sectors requested by physical disk reads
  7819.  10h  6 BYTEs    ???
  7820.  16h    DWORD    pointer to start of error list (see #0152)
  7821.  1Ah    DWORD    pointer to end of error list
  7822.  1Eh    WORD    ???
  7823.  20h    BYTE    using extended memory if nonzero
  7824.  21h    BYTE    ???
  7825.  22h  4 BYTEs    ASCII version number
  7826.  26h    WORD    cache size in KB
  7827.  28h    WORD    sectors per page
  7828.  
  7829. Format of IBMCACHE.SYS error list:
  7830. Offset    Size    Description    (Table 0152)
  7831.  00h    DWORD    relative block address of bad page
  7832.  04h    BYTE    drive
  7833.  05h    BYTE    sector bit-map
  7834.  06h    WORD    next error
  7835. --------d-131F-------------------------------
  7836. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  7837.     AH = 1Fh
  7838.     AL = subfunction
  7839.         00h allow media removal
  7840.         01h prevent media removal (lock door)
  7841.     DL = drive ID (bit 7 set for hard disks)
  7842. Return:    CF clear if successful
  7843.         AH = 00h
  7844.     CF set on error
  7845.         AH = error code
  7846.         00h successful
  7847.         01h invalid function request
  7848.         80h timeout
  7849.         DDh media change requested
  7850. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  7851. --------d-1320-------------------------------
  7852. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  7853.     AH = 20h
  7854.     ???
  7855. Return: ???
  7856. Notes:    returns some kind of status related to whether the drive contains its
  7857.       default media type
  7858.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  7859. --------b-1320-------------------------------
  7860. INT 13 U - Compaq DESKPRO/i - GET CURRENT MEDIA FORMAT
  7861.     AH = 20h
  7862.     DL = drive number (00h,01h)
  7863. Return: CF clear if successful
  7864.         AL = media type (see #0153)
  7865.     CF set on error
  7866.         AH = error code
  7867.         31h no such drive
  7868.         32h incorrect drive type stored in CMOS
  7869. Note:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  7870.       (AL is always 00h when successful) by the 8/3/93 version
  7871.  
  7872. (Table 0153)
  7873. Values for Compaq diskette media type:
  7874.  03h    720K
  7875.  04h    1.44M
  7876.  06h    2.88M
  7877.  0Ch    360K
  7878.  0Dh    1.2M
  7879.  0Eh    ???
  7880.  0Fh    ??? (1024-byte sectors)
  7881. --------c-1320-------------------------------
  7882. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  7883.     AH = 20h
  7884.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  7885.                    or FFh for all drives)
  7886. Return: AX = status (0000h successful)
  7887. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  7888.       Associates, Inc.
  7889. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  7890.       those sector buffers
  7891. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  7892. --------d-1321-------------------------------
  7893. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  7894.     AH = 21h
  7895.     AL = number of sectors to write
  7896.     CH = low byte of 12-bit cylinder number
  7897.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  7898.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  7899.     DL = drive number (80h,81h)
  7900.     ES:BX -> buffer for data to be read
  7901. Return: CF clear if successful
  7902.         ES:BX buffer filled
  7903.     CF set on error
  7904.     AH = status (see #0122 at AH=01h)
  7905. Desc:    read from the disk using the Multiple Block mode available on newer
  7906.       IDE drives and some hard disk controllers, which generates an
  7907.       interrupt only after the end of transferring a group of sectors
  7908.       rather than after each sector
  7909. Notes:    must call AH=24h"PS/1" before using this function
  7910.     input values in CL and DH are not range-checked
  7911.     the byte at address 0040h:0074h is set to the status of the operation
  7912. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  7913. --------c-1321-------------------------------
  7914. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  7915.     AH = 21h
  7916. Return: AX = status (0000h successful)
  7917. Desc:    immediately write all dirty sectors back to disk
  7918. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  7919. --------d-1322-------------------------------
  7920. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  7921.     AH = 22h
  7922.     AL = number of sectors to write
  7923.     CH = low byte of 12-bit cylinder number
  7924.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  7925.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  7926.     DL = drive number (80h,81h)
  7927.     ES:BX -> buffer containing data to be written
  7928. Return: CF clear if successful
  7929.     CF set on error
  7930.     AH = status (see #0122 at AH=01h)
  7931. Desc:    write to the disk using the Multiple Block mode available on newer
  7932.       IDE drives and some hard disk controllers, which generates an
  7933.       interrupt only after the end of transferring a group of sectors
  7934.       rather than after each sector
  7935. Notes:    must call AH=24h"PS/1" before using this function
  7936.     input values in CL and DH are not range-checked
  7937.     the byte at address 0040h:0074h is set to the status of the operation
  7938. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  7939. --------c-1322-------------------------------
  7940. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  7941.     AH = 22h
  7942.     AL = new state (00h disabled, 01h enabled)
  7943. Return: AX = status (0000h successful)
  7944. Note:    enables/disables caching of all drives
  7945. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  7946. --------d-1323-------------------------------
  7947. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  7948.     AH = 23h
  7949.     AL = feature number (see #0154)
  7950.     DL = drive number (80h,81h)
  7951.     ???
  7952. Return: CF clear if successful
  7953.     CF set on error
  7954.     AH = status (see #0122 at AH=01h)
  7955. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  7956.  
  7957. (Table 0154)
  7958. Values for PS/1 hard disk feature number:
  7959.  01h    select 8-bit data transfers instead of 16-bit
  7960.  02h    enable write cache
  7961.  22h    Write Same, user-specified area
  7962.  33h    disable retries
  7963.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  7964.  54h    set cache segments
  7965.  55h    disable lookahead
  7966.  66h    disable reverting to power-on defaults
  7967.  77h    disable error correctioni
  7968.  81h    select 16-bit data transfers (default)
  7969.  82h    disable write cache
  7970.  88h    enable error correction (default)
  7971.  99h    enable retries (default)
  7972.  AAh    enable lookahead
  7973.  BBh    set ECC length for read long/write long to four bytes
  7974.  CCh    enable reverting to power-on defaults
  7975.  DDh    Write Same, entire disk
  7976. --------c-1323-------------------------------
  7977. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  7978.     AH = 23h
  7979. Return: AX = status (0000h successful)
  7980.     ES = segment of ??? data
  7981. --------d-1324-------------------------------
  7982. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  7983.     AH = 24h
  7984.     AL = number of sectors per block (2,4,8,16)
  7985.     DL = drive number (80h,81h)
  7986. Return: CF clear if successful
  7987.     CF set onerror
  7988.     AH = status (see #0122 at AH=01h)
  7989. Desc:    specify how many sectors the controller should transfer as a group
  7990.       between operation-complete interrupts when using the Read Multiple
  7991.       and Write Multiple functions (AH=21h,AH=22h)
  7992. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  7993.     the maximum value for the block size depends on the fixed disk
  7994.       drive type.  The value is stored in byte 15h of the fixed disk
  7995.       drive parameter table that is created by POST.
  7996.     the byte at address 0040h:0074h is set to status of operation.
  7997. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  7998. --------c-1324-------------------------------
  7999. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  8000.     AH = 24h
  8001.     BX = new number of sector buffers in cache
  8002. Return: AX = status
  8003.         0000h successful
  8004.         0001h failed--size adjusted
  8005.         8000h cache cannot be resized while enabled
  8006. SeeAlso: AH=36h
  8007. --------d-1325-------------------------------
  8008. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  8009.     AH = 25h
  8010.     DL = drive number (80h,81h)
  8011.     ES:BX-> 512 byte buffer for reply packet
  8012. Return:    CF clear if successful
  8013.     CF set on error
  8014.     AH = status (see #0122 at AH=01h)
  8015.     buffer filled with ATA/IDE-style drive information block
  8016. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  8017. Note:    the byte at address 0040h:0074h is set to the status of the operation
  8018. SeeAlso: AH=23h"PS/1"
  8019.  
  8020. Format of drive information block:
  8021. Offset    Size    Description    (Table 0155)
  8022.  00h    WORD    general drive configuration (see #0156)
  8023.  02h    WORD    number of cylinders
  8024.  04h    WORD    reserved
  8025.  06h    WORD    number of heads
  8026.  08h    WORD    number of unformatted bytes per track
  8027.  0Ah    WORD    number of unformatted bytes per sector
  8028.  0Ch    WORD    number of sectors per track
  8029.  0Eh  6 BYTEs    vendor unique
  8030.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  8031.  28h    WORD    buffer type
  8032.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  8033.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  8034.         0000h = not specified
  8035.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  8036.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  8037.  5Eh    WORD    bits 15-8  Vendor Unique
  8038.         bits 7-0  00h = Read/Write Multiple commands not implemented
  8039.               xxh = Maximum number of sectors that can be
  8040.               transferred per interrupt on Read and Write
  8041.               Multiple commands
  8042.  60h    WORD    0000h = cannot perform doubleword I/O
  8043.         0001h = can perform doubleword I/O
  8044.  62h    WORD    capabilities
  8045.         bit 15-9  0=reserved
  8046.         bit 8  1=DMA Supported
  8047.         bit 7-0     Vendor Unique
  8048.  64h    WORD    reserved
  8049.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  8050.         bits 7-0  Vendor Unique
  8051.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  8052.         bits 7-0  Vendor Unique
  8053.  6Ah    WORD    bits 15-1 reserved
  8054.         bit 0    1=the fields reported in tranlation mode are valid
  8055.             0=the fields reported in translation mode may be valid
  8056.  6Ch    WORD    number of current cylinders
  8057.  6Eh    WORD    number of current heads
  8058.  70h    WORD    number of current sectors per track
  8059.  72h    DWORD    current capacity in sectors
  8060.  76h    WORD    reserved
  8061.  78h 136 BYTEs    not defined by ATA spec 2.6
  8062. 100h 64 BYTEs    vendor unique
  8063. 140h 96 BYTEs    reserved
  8064. Note:    the above description is as in the ATA (AT Attachment) Specification.
  8065.  
  8066. Bitfields for general drive configuration:
  8067. Bit(s)    Description    (Table 0156)
  8068.  15    0   reserved for non-magnetic drives
  8069.  14    format speed tolerance gap required
  8070.  13    track offset option available
  8071.  12    data strobe offset option available
  8072.  11    rotational speed tolerance is > 0.5%
  8073.  10    disk transfer rate > 10 Mbs
  8074.  9    disk transfer rate > 5Mbs but <= 10Mbs
  8075.  8    disk transfer rate <= 5Mbs
  8076.  7    removable cartridge drive
  8077.  6    fixed drive
  8078.  5    spindle motor control option implemented
  8079.  4    head switch time > 15 usec
  8080.  3    not MFM encoded
  8081.  2    soft sectored
  8082.  1    hard sectored
  8083.  0    reserved (0)
  8084. --------c-1325-------------------------------
  8085. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  8086.     AH = 25h
  8087.     BX = interval
  8088. Return: AX = status (0000h successful)
  8089. Desc:    specify how often the cache should write dirty buffers to disk when
  8090.       buffered writes are enabled
  8091. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  8092. --------c-1326-------------------------------
  8093. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  8094.     AH = 26h
  8095. Return: AX = status
  8096.         0000h successful
  8097.         0001h-00FFh interrupt vector which was hooked by another TSR
  8098. SeeAlso: AH=27h
  8099. --------c-1327--BX0000-----------------------
  8100. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  8101.     AH = 27h
  8102.     BX = 0000h
  8103. Return: AX = 0000h if installed
  8104.     BX nonzero if installed
  8105.         BH = major version
  8106.         BL = binary minor version
  8107. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  8108.       Associates, Inc.
  8109. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  8110. --------c-1328-------------------------------
  8111. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  8112.     AH = 28h
  8113.     AL = new state (00h disabled, 01h enabled)
  8114. Return: AX = status (0000h successful)
  8115. SeeAlso: AH=20h"QUICKCACHE"
  8116. --------c-1329-------------------------------
  8117. INT 13 U - QUICKCACHE II v4.20 - NOP
  8118.     AH = 29h
  8119. Return: AX = 0000h
  8120. --------c-132A-------------------------------
  8121. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  8122.     AH = 2Ah
  8123.     AL = buffer size (1-30)
  8124. Return: AX = status (0000h successful)
  8125. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  8126.       and write operations
  8127. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  8128. --------c-132B-------------------------------
  8129. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  8130.     AH = 2Bh
  8131.     AL = new state (00h disabled, 01h enabled)
  8132. Return: AX = status (0000h successful)
  8133. --------c-132C-------------------------------
  8134. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  8135.     AH = 2Ch
  8136.     AL = new state (00h disabled, 01h enabled)
  8137. Return: AX = status (0000h successful)
  8138. Desc:    specify whether the cache should delay disk writes
  8139. Note:    this function enables or disables delayed writes for all drives; use
  8140.       AH=38h to change a single drive
  8141. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  8142. --------c-132D-------------------------------
  8143. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  8144.     AH = 2Dh
  8145.     AL = new state (00h disabled, 01h enabled)
  8146. Return: AX = status (0000h successful)
  8147. Desc:    specify whether the cache should attempt to read ahead of actual
  8148.       requests
  8149. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  8150.       to change a single drive
  8151. SeeAlso: AH=2Ch,AH=37h
  8152. --------c-132E-------------------------------
  8153. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  8154.     AH = 2Eh
  8155.     BX = flush count
  8156. Return: AX = status (0000h successful)
  8157. Desc:    specify how many dirty sectors the cache should write after each flush
  8158.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  8159. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  8160. --------c-132F-------------------------------
  8161. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  8162.     AH = 2Fh
  8163. Return: AX = status (0000h successful)
  8164. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  8165.       flush interval had expired
  8166. SeeAlso: AH=21h"QUICKCACHE"
  8167. --------c-1330-------------------------------
  8168. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  8169.     AH = 30h
  8170.     AL = what to get
  8171.         00h system info (see #0157)
  8172.         01h drive info (see #0158)
  8173.         02h access frequency (array of 30 words)
  8174.         03h drive index
  8175.         (array of 32 bytes indicating BIOS drive for DOS drive)
  8176.     DS:DX -> buffer for info
  8177. Return: AX = status (0000h successful, 8000h invalid info specifier)
  8178. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  8179.       Associates, Inc.
  8180.  
  8181. Format of QUICKCACHE II system info:
  8182. Offset    Size    Description    (Table 0157)
  8183.  00h    BYTE    flag: cache enabled
  8184.  01h    BYTE    flag: buffered writes enabled
  8185.  02h    BYTE    flag: buffered reads enabled
  8186.  03h    BYTE    flag: sounds enabled
  8187.  04h    BYTE    flag: autodismount enabled
  8188.  05h    BYTE    ???
  8189.  06h    BYTE    flag: ???
  8190.  07h    BYTE    flag: ???
  8191.  08h    BYTE    flag: "em_assigned"
  8192.  09h    BYTE    flag: emulated EMS
  8193.  0Ah    BYTE    single sector bonus
  8194.  0Bh    BYTE    "sticky_max"
  8195.  0Ch    BYTE    write sector bonus
  8196.  0Dh    BYTE    bonus threshold
  8197.  0Eh    WORD    flush interval
  8198.  10h    WORD    flush count
  8199.  12h    WORD    reserve pool size
  8200.  14h    WORD    remaining space in reserve pool
  8201.  16h    WORD    required free memory
  8202.  18h    WORD    total cache sectors
  8203.  1Ah    WORD    dirty cache sectors
  8204.  1Ch    BYTE    trace buffer size
  8205.  1Dh    BYTE    reserved (padding)
  8206.  
  8207. Format of QUICKCACHE II drive info [16-element array, one element]:
  8208. Offset    Size    Description    (Table 0158)
  8209.  00h    BYTE    DOS drive number
  8210.  01h    BYTE    BIOS drive number
  8211.  02h    BYTE    maximum sector number
  8212.  03h    BYTE    maximum head number
  8213.  04h    BYTE    read buffer size
  8214.  05h    BYTE    write buffer size
  8215.  06h    BYTE    last status
  8216.  07h    BYTE    flag: enabled
  8217.  08h    BYTE    flag: buffered write enabled
  8218.  09h    BYTE    flag: buffered read enabled
  8219.  0Ah    BYTE    flag: in use (drive info is valid)
  8220.  0Bh    BYTE    flag: cylinder flush
  8221.  0Ch    BYTE    reserved (padding)
  8222.  0Dh    BYTE    sectors per track
  8223.  0Eh    WORD    sector size
  8224.  10h    WORD    sectors assigned
  8225.  12h    WORD    dirty sectors
  8226.  14h    WORD    reserved sectors
  8227.  16h    WORD    number of read errors
  8228.  18h    WORD    number of write errors
  8229.  1Ah    DWORD    "rio_count"
  8230.  1Eh    DWORD    number of cache misses
  8231.  22h    DWORD    "wio_count"
  8232.  26h    DWORD    "dio_count"
  8233. --------c-1331-------------------------------
  8234. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  8235.     AH = 31h
  8236.     BX = number of paragraphs of conventional memory to reserve for apps
  8237. Return: AX = status (0000h successful)
  8238. --------c-1332-------------------------------
  8239. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  8240.     AH = 32h
  8241.     AL = drive number (00h=A:)
  8242. Return: AX = status (0000h successful)
  8243. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  8244. --------c-1333-------------------------------
  8245. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  8246.     AH = 33h
  8247.     AL = drive number (00h=A:)
  8248. Return: AX = status (0000h successful)
  8249. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  8250. --------c-1334-------------------------------
  8251. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  8252.     AH = 34h
  8253.     AL = function
  8254.         00h end sector locking/unlocking
  8255.         01h lock all accessed sectors into cache
  8256.         02h unlock all accessed sectors and discard from cache
  8257. Return: AX = status (0000h successful)
  8258. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  8259. --------c-1335-------------------------------
  8260. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  8261.     AH = 35h
  8262.     BX = number of sectors in lock pool
  8263. Return: AX = status (0000h successful)
  8264. Desc:    specify the number of cache sector buffers which may be dedicated to
  8265.       data locked into the cache
  8266. SeeAlso: AH=34h
  8267. --------c-1336-------------------------------
  8268. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  8269.     AH = 36h
  8270.     AL = new size of trace buffer
  8271. Return: AX = status (0000h successful)
  8272. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  8273. SeeAlso: AH=24h"QUICKCACHE"
  8274. --------c-1337-------------------------------
  8275. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  8276.     AH = 37h
  8277.     AL = new state (00h disabled, else enabled)
  8278.     DL = drive number (00h = A:)
  8279. Return: AX = status (0000h successful)
  8280. SeeAlso: AH=2Dh,AH=38h
  8281. --------c-1338-------------------------------
  8282. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  8283.     AH = 38h
  8284.     AL = new state (00h disabled, else enabled)
  8285.     DL = drive number (00h = A:)
  8286. Return: AX = status (0000h successful)
  8287. SeeAlso: AH=2Ch,AH=37h
  8288. --------c-1339-------------------------------
  8289. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  8290.     AH = 39h
  8291.     AL = new size of read buffer
  8292.     DL = drive number (00h = A:)
  8293. Return: AX = status (0000h successful)
  8294. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  8295.       Associates, Inc.
  8296. SeeAlso: AH=2Ah,AH=3Ah
  8297. --------c-133A-------------------------------
  8298. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  8299.     AH = 3Ah
  8300.     AL = new size of write buffer
  8301.     DL = drive number (00h = A:)
  8302. Return: AX = status (0000h successful)
  8303. SeeAlso: AH=2Ah,AH=39h
  8304. --------c-133B-------------------------------
  8305. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  8306.     AH = 3Bh
  8307.     AL = new state of ??? (01h enabled, else disabled)
  8308. Return: AX = status (0000h successful)
  8309. Note:    is affected by the flag reported at offset 05h of the system info
  8310.       returned by AH=30h, and sets the flag at offset 06h
  8311. SeeAlso: AH=3Ch
  8312. --------c-133C-------------------------------
  8313. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  8314.     AH = 3Ch
  8315.     AL = new state of ??? (01h enabled, else disabled)
  8316. Return: AX = status (0000h successful)
  8317. Note:    is affected by the flag reported at offset 05h of the system info
  8318.       returned by AH=30h, and sets the flag at offset 07h
  8319. SeeAlso: AH=3Bh
  8320. --------c-133D-------------------------------
  8321. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  8322.     AH = 3Dh
  8323.     AL = new state (01h enabled, else disabled)
  8324.     DL = drive number (00h = A:)
  8325. Return: AX = status (0000h successful)
  8326. --------c-133E-------------------------------
  8327. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  8328.     AH = 3Eh
  8329.     AL = new value for bonus
  8330. Return: AX = status (0000h successful)
  8331. Desc:    specify the bonus score to give to single-sector transfers in order to
  8332.       keep those sectors in the cache longer
  8333. --------c-133F-------------------------------
  8334. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  8335.     AH = 3Fh
  8336.     AL = new value for bonus threshold
  8337. Return: AX = status (0000h successful)
  8338. --------c-1340-------------------------------
  8339. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  8340.     AH = 40h
  8341.     AL = new value for "sticky_max"
  8342. Return: AX = status (0000h successful)
  8343. SeeAlso: AH=41h"QUICKCACHE"
  8344. --------d-1341--BX55AA-----------------------
  8345. INT 13 - Phoenix Enhanced Disk Drive Specification - INSTALLATION CHECK
  8346.     AH = 41h
  8347.     BX = 55AAh
  8348.     DL = drive (80h-FFh)
  8349. Return: CF clear if successful
  8350.     CF set on error
  8351.     BX = AA55h if installed
  8352.        AH = major version of extensions (20h = 2.0)
  8353.        AL = internal use
  8354.        CX = API support bitmap (see #0159)
  8355.        DH = extension version
  8356. SeeAlso: AH=48h
  8357.  
  8358. Bitfields for Enhanced Disk Drive Spec API support bitmap:
  8359. Bit(s)    Description    (Table 0159)
  8360.  2    extended drive parameter table is valid (see #0160,#0162)
  8361.  3-15    reserved (0)
  8362. --------c-1341-------------------------------
  8363. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  8364.     AH = 41h
  8365.     AL = direction
  8366.         01h save to file
  8367.         else restore from file
  8368.     ES:DI -> 1024-byte buffer for ???
  8369. Return: AX = status (0000h successful, 8000h failed)
  8370. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  8371.       Associates, Inc.
  8372. SeeAlso: AH=40h"QUICKCACHE"
  8373. --------N-134257DX1234-----------------------
  8374. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  8375.     AX = 4257h ("BW")
  8376.     DX = 1234h
  8377. Return: BX = 414Ch if installed
  8378. Program: BWLPD is the printer daemon from the BW-NFS package
  8379. SeeAlso: INT 62/AH=00h"ETHDEV"
  8380. --------d-1348-------------------------------
  8381. INT 13 - Phoenix Enhanced Disk Drive Specification - GET DRIVE PARAMETERS
  8382.     AH = 48h
  8383.     DL = drive (80h-FFh)
  8384.     DS:SI -> buffer for drive parameters (see #0160)
  8385. Return: CF clear if successful
  8386.         DS:SI buffer filled
  8387.     CF set on error
  8388. SeeAlso: AH=41h
  8389.  
  8390. Format of Enhanced Disk Drive Spec drive parameters:
  8391. Offset    Size    Description    (Table 0160)
  8392.  00h    WORD    001Eh (size of buffer)
  8393.  02h    WORD    information flags
  8394.  04h    DWORD    number of cylinders on drive
  8395.  08h    DWORD    number of heads on drive
  8396.  0Ch    DWORD    number of sectors per track
  8397.  10h    QWORD    total number of sectors on drive
  8398.  18h    WORD    bytes per sector
  8399.  1Ah    DWORD    -> configuration parameters (see #0162)
  8400.         FFFFh:FFFFh if not available
  8401. SeeAlso: #1725
  8402.  
  8403. Format of Enhanced Disk Drive Spec translated drive parameter table:
  8404. Offset    Size    Description    (Table 0161)
  8405.  00h    WORD    number of cylinders
  8406.  02h    BYTE    number of heads
  8407.  03h    BYTE    A0h (signature indicating translated table)
  8408.  04h    BYTE    number of physical sectors per track
  8409.  05h    WORD    starting write precompensation cylinder number
  8410.  07h    BYTE    reserved
  8411.  08h    BYTE    control byte (see #1727 at INT 41)
  8412.  09h    WORD    number of physical cylinders
  8413.  0Bh    BYTE    number of physical heads
  8414.  0Ch    WORD    cylinder number of landing zone
  8415.  0Eh    BYTE    number of logical sectors per track
  8416.  0Fh    BYTE    checksum
  8417. SeeAlso: #0162,#1725
  8418.  
  8419. Format of Enhanced Disk Drive Spec fixed disk parameter table extension:
  8420. Offset    Size    Description    (Table 0162)
  8421.  00h    WORD    physical I/O port base address
  8422.  02h    WORD    disk-drive control port address
  8423.  04h    BYTE    flags
  8424.         bit 7: reserved (1)
  8425.         bit 6: LBA enabled
  8426.         bit 5: reserved (1)
  8427.         bit 4: drive is slave
  8428.         bit 3-0 reserved (0)
  8429.  05h    BYTE    proprietary information
  8430.         bits 7-4 reserved (0)
  8431.         bits 3-0: Phoenix proprietary (used by BIOS)
  8432.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  8433.  07h    BYTE    sector count for multi-sector transfers
  8434.  08h    BYTE    DMA control
  8435.         bits 7-4: DMA type
  8436.         bits 3-0: DMA channel
  8437.  09h    BYTE    programmed I/O control
  8438.         bits 7-4: reserved (0)
  8439.         bits 3-0: PIO type (1,2, or 3)
  8440.  0Ah    WORD    drive options (see #0163)
  8441.  0Ch  2 BYTEs    reserved (0)
  8442.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  8443.         (currently 10h)
  8444.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  8445.  
  8446. Bitfields for drive options:
  8447. Bit(s)    Description    (Table 0163)
  8448.  0    fast PIO enabled
  8449.  1    fast DMA access enabled
  8450.  2    block PIO (multi-sector transfers) enabled
  8451.  3    CHS translation enabled
  8452.  4    LBA translation enabled
  8453.  5    removable media
  8454.  6    CD-ROM
  8455.  7    32-bit transfer mode
  8456.  15-8    reserved
  8457. --------v-135342CX0001-----------------------
  8458. INT 13 - ScanBoot - INSTALLATION CHECK
  8459.     AX = 5342h ("SB")
  8460.     CX = 0001h
  8461.     DX = 0000h
  8462. Return: CF clear if ScanBoot installed
  8463.        AX = 0000h
  8464.        CX = serial number ("SW" if shareware release)
  8465.        DX = version
  8466.        BX,SI,ES destroyed
  8467. Program: ScanBoot is a virus-detection TSR by PanSoft
  8468. --------d-135501-----------------------------
  8469. INT 13 - Seagate ST01/ST02 - Inquiry
  8470.     AX = 5501h
  8471.     DH = number of bytes to transfer
  8472.     DL = drive ID (80h, 81h, ...)
  8473.     ES:BX -> buffer for results
  8474. Return:    ES:BX buffer filled with the Inquiry results
  8475. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  8476.       so all commands must be assumed to have been successful
  8477.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  8478.       drives without changing the BIOS drive count at 0040h:0075h
  8479.     this command is identical to the SCSI Inquiry command
  8480. --------d-135502-----------------------------
  8481. INT 13 - Seagate ST01/ST02 - RESERVED
  8482.     AX = 5502h
  8483. --------d-135503-----------------------------
  8484. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  8485.     AX = 5503h
  8486.     DH = DTQ byte (see #0164)
  8487.     DL = drive ID (80h, 81h, ...)
  8488. Return:    nothing
  8489.  
  8490. Bitfields for DTQ byte:
  8491. Bit(s)    Description    (Table 0164)
  8492.  7    reserved
  8493.  6    SCSI drive attached
  8494.  5    reserved
  8495.  4    selected drive is ST225N/NP (Paired)
  8496.  3    selected drive is ST225N
  8497.  2    Host Adapter checks parity on the selected drive 
  8498.  1    selected drive has been installed
  8499.  0    Seagate installation software present
  8500. --------d-135504-----------------------------
  8501. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  8502.     AX = 5504h
  8503.     DX = drive (bit 7 set for hard disk)
  8504. Return: CF clear if successful
  8505.         AX = 4321h if ST01/ST02h
  8506.         AX = 4322h if ??? Seagate controller
  8507.     CF set on error
  8508. SeeAlso: AX=5505h,AX=5514h
  8509. --------d-135504-----------------------------
  8510. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  8511.     AX = 5504h
  8512.     DL = drive ID (80h, 81h, ...)
  8513. Return:    AX = 4321h
  8514.     BL = selected drive number (00h, 01h)
  8515.     BH = number of drives attached to Host Adapter (max. 2)
  8516. --------d-135505-----------------------------
  8517. INT 13 - Seagate - ??? - PARK HEADS
  8518.     AX = 5505h
  8519.     DX = drive (bit 7 set for hard disk)
  8520. Return: CF clear if successful
  8521.     CF set on error
  8522. SeeAlso: AX=5504h,AX=5515h
  8523. --------d-135505-----------------------------
  8524. INT 13 - Seagate ST01/ST02 - PARK HEADS
  8525.     AX = 5505h
  8526.     DL = drive ID (80h, 81h, ...)
  8527.     DH = subfunction
  8528.         00h park heads (SCSI Stop command)
  8529.         01h un-park heads (SCSI Start command)      
  8530. Return:    nothing
  8531. --------d-135506-----------------------------
  8532. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  8533.     AX = 5506h
  8534.     DL = drive ID (80h, 81h, ...)
  8535.     DH = subfunction
  8536.         00h disable parity check
  8537.         01h enable parity check
  8538.         02h return current parity setting
  8539. Return:    AL = status
  8540.         00h parity checking disabled
  8541.         01h parity checking enabled
  8542. --------d-135507-----------------------------
  8543. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  8544.     AX = 5507h to 550Dh
  8545. Note:    officially listed as "reserved"
  8546. --------d-135514-----------------------------
  8547. INT 13 U - Seagate - ???
  8548.     AX = 5514h
  8549.     DX = drive (bit 7 set for hard disk)
  8550. Return: CF clear if successful
  8551.     CF set on error
  8552.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  8553. SeeAlso: AX=5504h,AX=5515h
  8554. --------d-135515-----------------------------
  8555. INT 13 U - Seagate - PARK HEADS???
  8556.     AX = 5515h
  8557.     DX = drive (bit 7 set for hard disk)
  8558. Return: CF clear if successful
  8559.     CF set on error
  8560. Note:    appears to be identical to AX=5505h
  8561. SeeAlso: AX=5504h,AX=5505h
  8562. --------d-1359-------------------------------
  8563. INT 13 - SyQuest - Generic SCSI pass through
  8564.     AH = 59h
  8565.     CX = HOST_ID, 0-based
  8566.     DX = 80h
  8567.     ES:BX pointer to SCSI structure (see #0165)
  8568. Return: CF clear
  8569.     AH = 95h
  8570. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  8571.  
  8572. Format of SyQuest SCSI structure:
  8573. Offset    Size    Description    (Table 0165)
  8574.  00h    WORD    opcode (see #0166)
  8575.  02h    BYTE    target's SCSI ID
  8576.  03h    BYTE    target's logical unit number
  8577.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  8578.  05h    BYTE    host status
  8579.         00h successful
  8580.         01h selection time out
  8581.         02h data over-run or under-run
  8582.  06h    BYTE    target status at command completion
  8583.         00h successful
  8584.         02h check status
  8585.         08h busy
  8586.  07h    BYTE    command data block length
  8587.  08h    DWORD    request data length
  8588.  0Ch    DWORD    result data length (actual length of data transferred)
  8589.  10h    DWORD    -> CDB
  8590.  14h    DWORD    -> data buffer
  8591. Note:    The handler does not perform a 'Request Sense' command if there was an error
  8592.  
  8593. (Table 0166)
  8594. Values for SCSI opcode:
  8595.  00h    verify interface
  8596.     clears carry flag and returns if function is available
  8597.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of 
  8598.     length less than 40 byte including the terminator.
  8599.     The string is stored in the buffer pointed by p_buf.
  8600.  02h    device mapping info. The caller provides a one byte buffer.
  8601.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  8602.     It stores 0 if that target does not exists.
  8603.  03h    execute SCSI command
  8604.  04h    device reset
  8605.  05h    SCSI bus reset
  8606. --------d-1370-------------------------------
  8607. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  8608.     AH = 70h
  8609.     ???
  8610. Return: ???
  8611. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  8612.       formatting program) make this call, presumably to EDVR.SYS (the
  8613.       partitioning driver)
  8614. SeeAlso: AH=ADh
  8615. ----------1375-------------------------------
  8616. INT 13 - ???
  8617.     AH = 75h
  8618.     ???
  8619. Return: AH = ???
  8620.     ???
  8621. Note:    intercepted by PC-Cache (v5.1 only)
  8622. ----------1376-------------------------------
  8623. INT 13 - ???
  8624.     AH = 76h
  8625.     ???
  8626. Return: AH = ???
  8627.     ???
  8628. Note:    intercepted by PC-Cache (v5.1 only)
  8629. --------c-137B00-----------------------------
  8630. INT 13 - NOW! v3.05 - GET INFORMATION
  8631.     AX = 7B00h
  8632.     CX:DX -> 1F8h-byte buffer for information record (see #0167)
  8633. Return: AX = 0000h
  8634.     BX = segment of main resident code
  8635.     ES = ???
  8636. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  8637. SeeAlso: AX=7B02h,AH=EFh
  8638.  
  8639. Format of NOW! information record:
  8640. Offset    Size    Description    (Table 0167)
  8641.  00h 80 BYTEs    name of directory from which NOW! was started
  8642.  50h 424 BYTEs    ???
  8643.  81h  ? BYTEs    array of bytes for ???
  8644.  F7h 250 BYTEs    array of 25 entries, one per drive???
  8645.     Offset    Size    Description
  8646.      00h  2 BYTEs    ???
  8647.      02h    WORD    ???
  8648.      04h    WORD    ???
  8649.      06h  4 BYTEs    ???
  8650. 1F1h  7 BYTEs    ???
  8651. --------c-137B01-----------------------------
  8652. INT 13 - NOW! v3.05 - ???
  8653.     AX = 7B01h
  8654. Return: DX = segment of ???
  8655. SeeAlso: AX=7B00h
  8656. --------c-137B02-----------------------------
  8657. INT 13 - NOW! v3.05 - SET INFORMATION
  8658.     AX = 7B02h
  8659.     BX = segment of ??? (10h above a PSP)
  8660.     CX:DX -> 1F8h-byte information record (see #0167)
  8661. Return: ???
  8662. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  8663. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  8664.       BX
  8665. SeeAlso: AX=7B00h
  8666. --------c-137B03-----------------------------
  8667. INT 13 - NOW! v3.05 - ???
  8668.     AX = 7B03h
  8669.     ???
  8670. Return: ???
  8671. SeeAlso: AX=7B00h,AX=7B04h
  8672. --------c-137B04-----------------------------
  8673. INT 13 - NOW! v3.05 - ???
  8674.     AX = 7B04h
  8675.     ???
  8676. Return: ???
  8677. SeeAlso: AX=7B03h
  8678. --------c-137B05-----------------------------
  8679. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  8680.     AX = 7B05h
  8681. Return: BX:AX = number of physical accesses???
  8682.     DX:CX = total disk accesses???
  8683. SeeAlso: AX=7B00h,AX=7B06h
  8684. --------c-137B06-----------------------------
  8685. INT 13 - NOW! v3.05 - GET ???
  8686.     AX = 7B06h
  8687.     BX = ???
  8688. Return: AX = 0000h
  8689.     BX = ???
  8690. SeeAlso: AX=7B05h,AX=7B07h
  8691. --------c-137B07-----------------------------
  8692. INT 13 - NOW! v3.05 - GET ???
  8693.     AX = 7B07h
  8694. Return: AX = ???
  8695.     BX = ???
  8696.     CX = ???
  8697.     DX = ???
  8698. SeeAlso: AX=7B06h
  8699. --------c-137B08-----------------------------
  8700. INT 13 - NOW! v3.05 - ???
  8701.     AX = 7B08h
  8702.     CX = ??? (default 00h)
  8703. Return: ???
  8704. SeeAlso: AX=7B00h
  8705. --------c-1380--CX6572-----------------------
  8706. INT 13 - FAST! v4.02+ - API
  8707.     AH = 80h
  8708.     CX = 6572h
  8709.     DX = 1970h
  8710.     ES:BX -> request packet (see #0169)
  8711.     AL = function number (see #0168)
  8712. Return: AH = status (except function 06h)
  8713.         00h if successful
  8714.         01h invalid function
  8715.         05h not supported by the installed variant
  8716.     CF clear if successful
  8717.     CF set on error
  8718.     AL may be destroyed
  8719. Program: FAST! is a disk cache by Future Computing Systems and marketed by BLOC
  8720.       Publishing Corp.
  8721. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  8722. Index:    hotkeys;FAST!
  8723.  
  8724. (Table 0168)
  8725. Values for FAST! function:
  8726.  01h    get cache information (see separate entry)
  8727.  04h    disable cache
  8728.  05h    enable cache and reset statistics
  8729.  06h    installation check (see separate entry)
  8730.  07h    unhook interrupts (see separate entry)
  8731.  09h    flush cache
  8732.  0Ah    (v4.02+) enable staged writes
  8733.  0Bh    (v4.02+) disable staged writes
  8734.  0Ch    (v4.02+) enable beep on flush
  8735.  0Dh    (v4.02+) disable beep on flush
  8736.  0Eh    ???
  8737.  0Fh    ???
  8738.  10h    (v4.12+) enable hotkeys
  8739.  11h    (v4.12+) disable hotkeys
  8740.  12h    (v4.13+) set idle delay
  8741.  13h    (v4.13+) set flush dirty percentage
  8742.  14h    (v5.00+) enable mouse checks
  8743.  15h    (v5.00+) disable mouse checks
  8744.  16h    (v5.00d+) reduce cache size to minimum
  8745.  17h    (v5.00d+) increase cache size to maximum
  8746.  
  8747. Format of FAST! request packet:
  8748. Offset    Size    Description    (Table 0169)
  8749.  00h    DWORD    pointer to 19-byte signature string (see #0170)
  8750.  04h    DWORD    pointer to buffer for data (if needed by function)
  8751.  
  8752. (Table 0170)
  8753. Values for FAST! v4.04-v5.03 signature string:
  8754.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  8755. --------c-138001CX6572-----------------------
  8756. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  8757.     AX = 8001h
  8758.     CX = 6572h
  8759.     DX = 1970h
  8760.     ES:BX -> request packet (see #0171)
  8761. Return: AH = 00h if successful
  8762. SeeAlso: AH=80h,AX=8006h
  8763.  
  8764. Format of FAST! request packet:
  8765. Offset    Size    Description    (Table 0171)
  8766.  00h    DWORD    -> 19-byte signature string (see #0170)
  8767.  04h    DWORD    -> buffer for cache information (see #0172)
  8768.  
  8769. Format of FAST! cache information (v5.00-5.03):
  8770. Offset    Size    Description    (Table 0172)
  8771.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  8772.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  8773.  03h    BYTE    FAST! variant
  8774.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  8775.  04h    DWORD    total number of read requests
  8776.  08h    DWORD    number of physical disk reads
  8777.  0Ch    DWORD    grabbed hash buckets
  8778.  10h    DWORD    "st_386mem"
  8779.  14h    DWORD    total number of writes (only counted when staging enabled)
  8780.  18h    DWORD    number of physical disk writes (only when staging enabled)
  8781.  1Ch    DWORD    number of write errors while flushing cache
  8782.  20h    WORD    flags1 (see #0173)
  8783.  22h    WORD    flags
  8784.         bit 0: ???
  8785.         bit 1: staged writes enabled
  8786.  24h    WORD    ???
  8787.  26h    WORD    maximum cache size in KB
  8788.  28h    WORD    minimum cache size in KB
  8789.  2Ah    WORD    segment of first cache buffer (FASTC)
  8790.         segment of EMS page frame (FASTE)
  8791.         XMS handle (FASTX XMS)
  8792.  2Ch    WORD    number of hash buckets containing no entries
  8793.  2Eh    WORD    number of hash buckets containing one entry
  8794.  30h    WORD    number of hash buckets containing two entries
  8795.  32h    WORD    number of hash buckets containing three entries
  8796.  34h    WORD    number of hash buckets containing four entries
  8797.  36h    WORD    number of hash buckets containing five entries
  8798.  38h    WORD    maximum contiguous sectors
  8799.  3Ah    WORD    hash factor
  8800.  3Ch    WORD    number of paragraphs of memory used below 1M
  8801.  3Eh    WORD    entries per hash bucket
  8802.  40h    WORD    idle delay in seconds
  8803.  42h  2 BYTEs    ???
  8804.  44h    WORD    staged write threshold percentage
  8805.  46h  2 BYTEs    ???
  8806.  48h    WORD    number of dirty sectors
  8807.  4Ah    WORD    number of staged write buffers
  8808.  4Ch    WORD    current cache size in KB
  8809.  4Eh    WORD    beep frequency in Hz
  8810.  50h    WORD    ???
  8811.  52h    WORD    ???
  8812.  
  8813. Bitfields for FAST! flags1:
  8814. Bit(s)    Description    (Table 0173)
  8815.  0    beep on flush
  8816.  3    hotkeys enabled
  8817.  4    mouse idle check enabled
  8818.  8    caching enabled
  8819.  13    ???
  8820. --------c-138006CX6572-----------------------
  8821. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  8822.     AX = 8006h
  8823.     CX = 6572h
  8824.     DX = 1970h
  8825.     ES:BX -> request packet (see #0174)
  8826. Return: AX = 1965h if installed
  8827. SeeAlso: AH=80h,AX=8001h,AX=8007h
  8828.  
  8829. Format of FAST! request packet:
  8830. Offset    Size    Description    (Table 0174)
  8831.  00h    DWORD    -> 19-byte signature string (see #0170)
  8832. --------c-138007CX6572-----------------------
  8833. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  8834.     AX = 8007h
  8835.     CX = 6572h
  8836.     DX = 1970h
  8837.     ES:BX -> request packet (see #0175)
  8838. Return: AX = 1965h if installed
  8839. SeeAlso: AH=80h,AX=8006h
  8840. Index:    uninstall;FAST!
  8841.  
  8842. Format of FAST! request packet:
  8843. Offset    Size    Description    (Table 0175)
  8844.  00h    DWORD    -> 19-byte signature string (see #0170)
  8845. --------c-1381--SI4358-----------------------
  8846. INT 13 - Super PC-Kwik v3.20+ - ???
  8847.     AH = 81h
  8848.     SI = 4358h
  8849.     ???
  8850. Return: ???
  8851. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  8852.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  8853.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  8854.     returns immediately in PC-Cache v5.x
  8855. Index:    PC-Cache|Qualitas Qcache
  8856. --------c-1382--SI4358-----------------------
  8857. INT 13 - Super PC-Kwik v3.20+ - ???
  8858.     AH = 82h
  8859.     SI = 4358h
  8860.     ???
  8861. Return: AL = ???
  8862. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  8863.       Super PC-Kwik, and thus support this call
  8864. SeeAlso: AH=84h
  8865. Index:    PC-Cache|Qualitas Qcache
  8866. --------c-1383--SI4358-----------------------
  8867. INT 13 - Super PC-Kwik v3.20+ - ???
  8868.     AH = 83h
  8869.     SI = 4358h
  8870.     AL = ???
  8871.     ES:BX -> ???
  8872.     ???
  8873. Return: ???
  8874. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  8875.       Super PC-Kwik, and thus support this call
  8876. SeeAlso: AH=85h
  8877. Index:    PC-Cache|Qualitas Qcache
  8878. --------c-1384--SI4358-----------------------
  8879. INT 13 - Super PC-Kwik v3.20+ - ???
  8880.     AH = 84h
  8881.     SI = 4358h
  8882.     AL = ???
  8883.     ???
  8884. Return: AL = ???
  8885. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  8886.       Super PC-Kwik, and thus support this call
  8887. SeeAlso: AH=82h
  8888. Index:    PC-Cache|Qualitas Qcache
  8889. --------c-1385--SI4358-----------------------
  8890. INT 13 - Super PC-Kwik v3.20+ - ???
  8891.     AH = 85h
  8892.     SI = 4358h
  8893.     AL = ???
  8894.     DL = ???
  8895.     ???
  8896. Return: ???
  8897. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  8898.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  8899.       to PC-Kwik v3.20)
  8900. SeeAlso: AH=83h
  8901. Index:    PC-Cache|Qualitas Qcache
  8902. --------c-1386--SI4358-----------------------
  8903. INT 13 - Super PC-Kwik v4.00+ - ???
  8904.     AH = 86h
  8905.     SI = 4358h
  8906.     ???
  8907. Return: ???
  8908. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  8909.       thus supports this call
  8910. Index:    Qualitas Qcache
  8911. --------c-1387--SI4358-----------------------
  8912. INT 13 - Super PC-Kwik v4.00+ - ???
  8913.     AH = 87h
  8914.     SI = 4358h
  8915.     ???
  8916. Return: AH = status??? (00h)
  8917.     CX = ???
  8918.     DX = ??? (0000h)
  8919. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  8920.       thus supports this call
  8921. Index:    Qualitas Qcache
  8922. --------c-1388--SI4358-----------------------
  8923. INT 13 - Super PC-Kwik v4.00+ - ???
  8924.     AH = 88h
  8925.     SI = 4358h
  8926.     ???
  8927. Return: AH = status??? (00h)
  8928.     CX = ???
  8929.     DX = ??? (0000h)
  8930. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  8931.       thus supports this call
  8932. Index:    Qualitas Qcache
  8933. --------c-1389--SI4358-----------------------
  8934. INT 13 - Super PC-Kwik v5.10+ - ???
  8935.     AH = 89h
  8936.     SI = 4358h
  8937.     ???
  8938. Return: ???
  8939. --------c-138A--SI4358-----------------------
  8940. INT 13 - Super PC-Kwik v5.10+ - ???
  8941.     AH = 8Ah
  8942.     SI = 4358h
  8943.     ???
  8944. Return: ???
  8945. --------c-138EED-----------------------------
  8946. INT 13 - HyperDisk v4.01+ - ???
  8947.     AX = 8EEDh
  8948.     ???
  8949. Return: ???
  8950. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  8951. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  8952. --------c-138EEE-----------------------------
  8953. INT 13 - HyperDisk v4.01+ - ???
  8954.     AX = 8EEEh
  8955. Return: CF set
  8956.     AX = CS of HyperDisk resident code
  8957.     ???
  8958. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  8959. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  8960. --------c-138EEF-----------------------------
  8961. INT 13 - HyperDisk v4.01+ - ???
  8962.     AX = 8EEFh
  8963. Return: CF set
  8964.     AX = CS of HyperDisk resident code
  8965.     ???
  8966. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  8967. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  8968. --------c-1392--SI4358-----------------------
  8969. INT 13 - Super PC-Kwik v5.10+ - ???
  8970.     AH = 92h
  8971.     SI = 4358h
  8972.     ???
  8973. Return: AH = status??? (00h)
  8974.     DL = ???
  8975. SeeAlso: AH=93h
  8976. --------c-1393--SI4358-----------------------
  8977. INT 13 - Super PC-Kwik v5.10+ - ???
  8978.     AH = 93h
  8979.     SI = 4358h
  8980.     ???
  8981. Return: AH = status??? (00h)
  8982.     AL = ???
  8983. SeeAlso: AH=92h
  8984. --------c-1394--SI4358-----------------------
  8985. INT 13 - Super PC-Kwik v5.10+ - ???
  8986.     AH = 94h
  8987.     SI = 4358h
  8988.     ???
  8989. Return: ???
  8990. --------c-1395--SI4358-----------------------
  8991. INT 13 - Super PC-Kwik v5.10+ - ???
  8992.     AH = 95h
  8993.     SI = 4358h
  8994.     ???
  8995. Return: AH = status??? (00h)
  8996.     DX = ???
  8997. --------c-1396--SI4358-----------------------
  8998. INT 13 - Super PC-Kwik v5.10+ - ???
  8999.     AH = 96h
  9000.     SI = 4358h
  9001.     AL = ??? (01h)
  9002.     BX = ??? (0790h)
  9003.     DL = ???
  9004. Return: AH = status??? (00h)
  9005.     DX = ???
  9006. --------c-1397--SI4358-----------------------
  9007. INT 13 - Super PC-Kwik v5.10+ - ???
  9008.     AH = 97h
  9009.     SI = 4358h
  9010.     ???
  9011. Return: ???
  9012. --------c-1398--SI4358-----------------------
  9013. INT 13 - Super PC-Kwik v5.10+ - ???
  9014.     AH = 98h
  9015.     SI = 4358h
  9016.     ???
  9017. Return: ???
  9018. --------c-1399--SI4358-----------------------
  9019. INT 13 - Super PC-Kwik v5.10+ - ???
  9020.     AH = 99h
  9021.     SI = 4358h
  9022.     ???
  9023. Return: ???
  9024. --------c-139A--SI4358-----------------------
  9025. INT 13 - Super PC-Kwik v5.10+ - ???
  9026.     AH = 9Ah
  9027.     SI = 4358h
  9028.     ???
  9029. Return: ???
  9030. --------c-139B--SI4358-----------------------
  9031. INT 13 - Super PC-Kwik v5.10+ - ???
  9032.     AH = 9Bh
  9033.     SI = 4358h
  9034.     ???
  9035. Return: ???
  9036. --------c-139C--SI4358-----------------------
  9037. INT 13 - Super PC-Kwik v5.10+ - ???
  9038.     AH = 9Ch
  9039.     SI = 4358h
  9040.     ???
  9041. Return: ???
  9042. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  9043.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  9044.       if a previous call is still in progress
  9045. --------c-139D--SI4358-----------------------
  9046. INT 13 - Super PC-Kwik v5.10+ - ???
  9047.     AH = 9Dh
  9048.     SI = 4358h
  9049.     ???
  9050. Return: ???
  9051. --------c-13A0--SI4358-----------------------
  9052. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  9053.     AH = A0h
  9054.     SI = 4358h
  9055. Return: AX = segment of resident code
  9056. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  9057.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  9058.       corresponds to PC-Kwik v3.27)
  9059. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  9060. Index:    PC-Cache|Qualitas Qcache
  9061. --------c-13A1--SI4358-----------------------
  9062. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  9063.     AH = A1h
  9064.     SI = 4358h
  9065. Return: CF clear
  9066.     AH = 00h (v5.10)
  9067. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  9068.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  9069.       corresponds to PC-Kwik v3.20)
  9070. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  9071. Index:    PC-Cache|Qualitas Qcache
  9072. --------c-13A2--SI4358-----------------------
  9073. INT 13 - Super PC-Kwik v3.20+ - ???
  9074.     AH = A2h
  9075.     SI = 4358h
  9076.     ???
  9077. Return: ???
  9078. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  9079.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  9080.       corresponds to PC-Kwik v3.20)
  9081. Index:    PC-Cache|Qualitas Qcache
  9082. --------c-13A3--SI4358-----------------------
  9083. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  9084.     AH = A3h
  9085.     SI = 4358h
  9086. Return: CF clear
  9087. SeeAlso: AH=A4h
  9088. --------c-13A4--SI4358-----------------------
  9089. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  9090.     AH = A4h
  9091.     SI = 4358h
  9092. Return: CF clear
  9093. SeeAlso: AH=A3h
  9094. --------c-13A5--SI4358-----------------------
  9095. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  9096.     AH = A5h
  9097.     SI = 4358h
  9098. Return: AX = ???
  9099.     SI = ???
  9100. Notes:    called and used internally by Super PC-Kwik when a program terminates
  9101.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  9102.     this call is not supported by Qualitas Qcache 4.00
  9103. Index:    PC-Cache
  9104. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  9105. --------c-13A6--SI4358-----------------------
  9106. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  9107.     AH = A6h
  9108.     SI = 4358h
  9109.     DS:DX -> ASCIZ program name
  9110.     ES:BX -> EXEC data block (see #0728 at INT 21/AH=4Bh)
  9111. Return: ???
  9112. Note:    called and used internally by Super PC-Kwik when a program is loaded
  9113.       with INT 21/AX=4B00h
  9114. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  9115. --------c-13A7--SI4358-----------------------
  9116. INT 13 CU - Super PC-Kwik 5.1 - ???
  9117.     AH = A7h
  9118.     SI = 4358h
  9119. Return: ???
  9120. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  9121. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  9122. --------v-13A759-----------------------------
  9123. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  9124.     AX = A759h
  9125. Return: AX = 59A7h if installed
  9126.         DX:BX -> ??? data
  9127. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  9128.       Fifth Generation Systems, as bundled with Novell DOS 7
  9129. SeeAlso: INT 21/AH=0Eh/DL=ADh
  9130. --------c-13A8--SI4358-----------------------
  9131. INT 13 CU - Super PC-Kwik 5.1 - ???
  9132.     AH = A8h
  9133.     SI = 4358h
  9134. Return: ???
  9135. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  9136. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  9137. --------c-13A9--SI4358-----------------------
  9138. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  9139.     AH = A9h
  9140.     SI = 4358h
  9141. Return: ???
  9142. Note:    called and used internally by Super PC-Kwik when an application issues
  9143.       INT 21/AH=4Dh
  9144. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  9145. --------c-13AA--SI4358-----------------------
  9146. INT 13 - Super PC-Kwik v4+ - ???
  9147.     AH = AAh
  9148.     SI = 4358h
  9149.     ???
  9150. Return: ???
  9151. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  9152.       this call
  9153. --------c-13AB--SI4358-----------------------
  9154. INT 13 - Super PC-Kwik v4+ - ???
  9155.     AH = ABh
  9156.     SI = 4358h
  9157.     ???
  9158. Return: ???
  9159. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  9160.       this call
  9161. --------c-13AC--SI4358-----------------------
  9162. INT 13 - Super PC-Kwik v4+ - ???
  9163.     AH = ACh
  9164.     SI = 4358h
  9165.     ???
  9166. Return: ???
  9167. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  9168.       this call
  9169. --------d-13AD-------------------------------
  9170. INT 13 - Priam HARD DISK CONTROLLER???
  9171.     AH = ADh
  9172.     ???
  9173. Return: ???
  9174. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  9175.       to check the ROM type on the controller for their hard disk kits
  9176. SeeAlso: AH=70h
  9177. --------c-13AD--SI4358-----------------------
  9178. INT 13 - Super PC-Kwik v4+ - ???
  9179.     AH = ADh
  9180.     SI = 4358h
  9181.     ???
  9182. Return: ???
  9183. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  9184.       this call
  9185. --------c-13AE--SI4358-----------------------
  9186. INT 13 - Super PC-Kwik v5.10+ - ???
  9187.     AH = AEh
  9188.     SI = 4358h
  9189.     ???
  9190. Return: ???
  9191. --------c-13B0--SI4358-----------------------
  9192. INT 13 - Super PC-Kwik v3.20+ - ???
  9193.     AH = B0h
  9194.     SI = 4358h
  9195.     ???
  9196. Return: ???
  9197. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  9198.       supports this call; Qualitas Qcache does not support it
  9199. Index:    PC-Cache
  9200. --------d-13EE-------------------------------
  9201. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  9202.     AH = EEh
  9203.     DL = drive number (80h, 81h)
  9204. Return: CF clear
  9205.        AH = 00h
  9206. Program: SWBIOS is a TSR by Ontrack Computer Systems
  9207. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  9208.       number to get the actual cylinder number desired
  9209. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  9210.     Disk Manager also supports these calls
  9211.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  9212.       in order to allow caching of drives using SWBIOS to access more than
  9213.       1024 cylinders
  9214.     for software which supports that call, this function is equivalent to
  9215.       calling AH=EFh with CX=0400h
  9216. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  9217. Index:    PC-Cache;huge disks|Disk Manager
  9218. --------c-13EF-------------------------------
  9219. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  9220.     AH = EFh
  9221.     CX = cylinder offset for next INT 13 call
  9222.     DL = drive number (80h, 81h)
  9223. Return: CF clear
  9224.         AH = 00h
  9225. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  9226.       IDE drives supporting the read multiple and write multiple commands
  9227. Desc:    the following INT 13 call will add the number given by this call to
  9228.       the specified cylinder to get the actual cylinder number, then reset
  9229.       the offset to zero
  9230. Note:    this function is also supported by the NOW! disk cache, and presumably
  9231.       newer versions of SWBIOS and Disk Manager
  9232.     for software which supports this call, AH=EEh is equivalent to calling
  9233.       this function with CX=0400h
  9234.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  9235.       and AH=EFh
  9236. SeeAlso: AX=7B00h
  9237. --------d-13F9-------------------------------
  9238. INT 13 - SWBIOS - INSTALLATION CHECK
  9239.     AH = F9h
  9240.     DL = drive number (80h,81h)
  9241. Return: CF clear
  9242.         DX = configuration word
  9243.         bit 15 set if other SWBIOS extensions available
  9244.     CF set on error
  9245. Program: SWBIOS is a TSR by Ontrack Computer Systems
  9246. Note:    Disk Manager also supports these calls
  9247. SeeAlso: AH=EEh
  9248. Index:    Disk Manager
  9249. --------v-13FA--DX5945-----------------------
  9250. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  9251.     AH = FAh
  9252.     DX = 5945h
  9253.     AL = function (00h-07h)
  9254. Return: varies by function
  9255.     if not installed:
  9256.         CF set
  9257.         AH = 01h
  9258. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  9259.       so it is listed in its entirety under INT 16/AX=FA00h and following
  9260. SeeAlso: INT 16/AX=FA00h
  9261. --------d-13FE-------------------------------
  9262. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  9263.     AH = FEh
  9264.     DL = drive number (80h, 81h)
  9265. Return: CF clear
  9266.     DX = number of cylinders beyond 1024 on drive
  9267. Program: SWBIOS is a TSR by Ontrack Computer Systems
  9268. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  9269.     BIOS without this extension would return count modulo 1024
  9270.     Disk Manager also supports these calls
  9271. SeeAlso: AH=EEh
  9272. --------U-13FFFFBHAA-------------------------
  9273. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  9274.     AX = FFFFh
  9275.     BH = AAh
  9276.     BL = subfunction
  9277.         00h installation check
  9278.         Return: AX = 1234h if installed
  9279.         01h turn on Turbo mode
  9280.         02h turn off Turbo mode
  9281.         03h set Turbo mode according to hardware switch
  9282.         04h set disk access to Turbo mode
  9283.         05h set disk access to Normal mode
  9284. SeeAlso: INT 15/AH=DFh
  9285. Index:    installation check;UNIQUE UX Turbo Utility
  9286. --------!---Section--------------------------
  9287. Interrupt List, part 2 of 12
  9288. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  9289. --------S-14---------------------------------
  9290. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  9291. Note:    the installation check for this driver is to determine whether the
  9292.       "~DOSXAM~" character device exists
  9293. Index:    installation check;Digiboard DigiCHANNEL
  9294. --------S-1400-------------------------------
  9295. INT 14 - SERIAL - INITIALIZE PORT
  9296.     AH = 00h
  9297.     AL = port parameters (see #0176)
  9298.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  9299. Return: AH = line status (see #0180)
  9300.         FFh if error on Digiboard XAPCM232.SYS
  9301.     AL = modem status (see #0181)
  9302. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  9303.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  9304.       bps will result in 4800 bps
  9305.     various network and serial-port drivers support the standard BIOS
  9306.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  9307.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  9308. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  9309. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  9310.  
  9311. Bitfields for serial port parameters:
  9312. Bit(s)    Description    (Table 0176)
  9313.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  9314.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  9315.  2    stop bits (set = 2, clear = 1)
  9316.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  9317. --------S-1400-------------------------------
  9318. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  9319.     AH = 00h
  9320.     AL = initializing parameters
  9321.         7 - 6 - 5       4 - 3     2      1 - 0
  9322.         -BAUD RATE-       PARITY   STOP   WORD
  9323.                     BITS  LENGTH
  9324.         000 19200 bd   00 none  0: 1  00: 5
  9325.         001 38400 bd   01 odd   1: 2  01: 6
  9326.         010      300 bd   11 even      10: 7
  9327.         011      600 bd          11: 8
  9328.         100     1200 bd
  9329.         101     2400 bd
  9330.         110     4800 bd
  9331.         111     9600 bd (4800 on PCjr)
  9332.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  9333. Return: AH = RS-232 status code bits (see #0177)
  9334.     AL = modem status bits
  9335.         bit 3: always 1
  9336.         bit 7: DCD - carrier detect
  9337. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  9338.  
  9339. Bitfields for FOSSIL RS-232 status:
  9340. Bit(s)    Description    (Table 0177)
  9341.  0    RDA - input data is available in buffer
  9342.  1    OVRN - data has been lost
  9343.  5    THRE - room is available in output buffer
  9344.  6    TSRE - output buffer empty
  9345. --------S-1400-------------------------------
  9346. INT 14 - MBBIOS - INITIALIZE PORT
  9347.     AH = 00h
  9348.     AL = port parameters (see #0178)
  9349.     DX = port number
  9350. Return: AH = line status (see #0180)
  9351.     AL = modem status (see #0181)
  9352. Note:    MBBIOS was written by H. Roy Engehausen
  9353. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  9354.  
  9355. Bitfields for MBBIOS port parameters:
  9356. Bit(s)    Description    (Table 0178)
  9357.  7-5    data rate
  9358.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  9359.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  9360.     if the high-speed option is set)
  9361.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  9362.  2    stop bits (set = 2, clear = 1)
  9363.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  9364. --------N-1400--DXFFFF-----------------------
  9365. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  9366.     AH = 00h
  9367.     DX = FFFFh
  9368.     ES:DI -> vector string specifying new parameters
  9369. Return: AH = return code (00h,03h) (see #0179)
  9370. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  9371.       serial ports over an IPX or NetBIOS-based network
  9372. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9373.       function, but redirects the port over the network; if DX is any other
  9374.       value, the call is chained
  9375. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  9376.  
  9377. (Table 0179)
  9378. Values for Connection Manager return code:
  9379.  00h    successful
  9380.  01h    no such connection
  9381.  02h    invalid connection ID
  9382.  03h    invalid subvector found
  9383.  04h    communication error (check BH)
  9384.  06h    insufficient resources, retry later
  9385.  FFh    no data available
  9386. --------S-1401-------------------------------
  9387. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  9388.     AH = 01h
  9389.     AL = character to write
  9390.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  9391. Return: AH bit 7 clear if successful
  9392.     AH bit 7 set on error
  9393.     AH bits 6-0 = port status (see #0180)
  9394. Notes:    various network and serial-port drivers support the standard BIOS
  9395.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  9396.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  9397. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  9398. --------N-1401--DXFFFF-----------------------
  9399. INT 14 - Connection Manager - SEND CHARACTER
  9400.     AH = 01h
  9401.     DX = FFFFh
  9402.     BH = character to send
  9403. Return: AH = return code (00h-02h,06h) (see #0179)
  9404. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9405.       function, but redirects the port over the network; if DX is any other
  9406.       value, the call is chained
  9407.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  9408.       is the preferred function because it provides better performance
  9409. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  9410. --------S-1402-------------------------------
  9411. INT 14 - SERIAL - READ CHARACTER FROM PORT
  9412.     AH = 02h
  9413.     AL = 00h (ArtiCom)
  9414.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  9415. Return: AH = line status (see #0180)
  9416.     AL = received character if AH bit 7 clear
  9417. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  9418.       data ready
  9419.     various network and serial-port drivers support the standard BIOS
  9420.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  9421.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  9422. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  9423. --------S-1402-------------------------------
  9424. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  9425.     AH = 02h
  9426.     DX = port number (0-3)
  9427. Return: AL = character received
  9428.     AH = 00h
  9429. SeeAlso: AH=01h,AH=02h"SERIAL"
  9430. --------N-1402--DXFFFF-----------------------
  9431. INT 14 - Connection Manager - RECEIVE CHARACTER
  9432.     AH = 02h
  9433.     DX = FFFFh
  9434.     BH = character to send
  9435. Return: AH = return code (00h-02h,04h,FFh) (see #0179)
  9436.     BH = line status (see #0180)
  9437.     AL = received character (if any)
  9438. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9439.       function, but redirects the port over the network; if DX is any other
  9440.       value, the call is chained
  9441.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  9442.       is the preferred function because it provides better performance
  9443. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  9444. --------S-1403-------------------------------
  9445. INT 14 - SERIAL - GET PORT STATUS
  9446.     AH = 03h
  9447.     AL = 00h (ArtiCom)
  9448.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  9449. Return: AH = line status (see #0180)
  9450.     AL = modem status (see #0181)
  9451.     AX = 9E00h if disconnected (ArtiCom)
  9452. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  9453. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  9454.  
  9455. Bitfields for serial line status:
  9456. Bit(s)    Description    (Table 0180)
  9457.  7    timeout
  9458.  6    transmit shift register empty
  9459.  5    transmit holding register empty
  9460.  4    break detected
  9461.  3    framing error
  9462.  2    parity error
  9463.  1    overrun error
  9464.  0    receive data ready
  9465. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  9466.       through a separate call (see AX=8000h"COMM-DRV")
  9467.  
  9468. Bitfields for modem status:
  9469. Bit(s)    Description    (Table 0181)
  9470.  7    carrier detect
  9471.  6    ring indicator
  9472.  5    data set ready
  9473.  4    clear to send
  9474.  3    delta carrier detect
  9475.  2    trailing edge of ring indicator
  9476.  1    delta data set ready
  9477.  0    delta clear to send
  9478. --------N-1403--DXFFFF-----------------------
  9479. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  9480.     AH = 03h
  9481.     DX = FFFFh
  9482.     AL = connection ID
  9483. Return: AH = return code (00h-02h) (see #0179)
  9484.     BH = line status (see #0182)
  9485.     BL = modem status (see #0181) (only bits 4,5,7; all others zero)
  9486. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9487.       function, but redirects the port over the network; if DX is any other
  9488.       value, the call is chained
  9489. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  9490.  
  9491. Bitfields for Connection Manager line status:
  9492. Bit(s)    Description    (Table 0182)
  9493.  7    CTS changed
  9494.  6    current CTS state
  9495.  5    timeout
  9496.  4    break
  9497.  3    framing error
  9498.  2    parity error
  9499.  1    overrun
  9500.  0    current carrier state (0 active, 1 no carrier)
  9501. --------S-1404-------------------------------
  9502. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  9503.     AH = 04h
  9504.     AL = break status
  9505.         00h if break
  9506.         01h if no break
  9507.     BH = parity (see #0183)
  9508.     BL = number of stop bits
  9509.         00h one stop bit
  9510.         01h two stop bits (1.5 if 5 bit word length)
  9511.     CH = word length (see #0184)
  9512.     CL = bps rate (see #0185)
  9513.     DX = port number
  9514. Return: AX = port status code (see #0180,#0181)
  9515. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  9516.  
  9517. (Table 0183)
  9518. Values for serial port parity:
  9519.  00h    no parity
  9520.  01h    odd parity
  9521.  02h    even parity
  9522.  03h    stick parity odd
  9523.  04h    stick parity even
  9524.  
  9525. (Table 0184)
  9526. Values for serial port word length:
  9527.  00h    5 bits
  9528.  01h    6 bits
  9529.  02h    7 bits
  9530.  03h    8 bits
  9531.  
  9532. (Table 0185)
  9533. Values for serial port bps rate:
  9534.  00h    110
  9535.  01h    150
  9536.  02h    300
  9537.  03h    600
  9538.  04h    1200
  9539.  05h    2400
  9540.  06h    4800
  9541.  07h    9600
  9542.  08h    19200
  9543. --------S-1404-------------------------------
  9544. INT 14 - FOSSIL - INITIALIZE DRIVER
  9545.     AH = 04h
  9546.     DX = port number
  9547.     optionally BX=4F50h
  9548.            ES:CX -> byte to be set upon ^C
  9549. Return: AX = 1954h (if successful)
  9550.     BL = maximum function number supported (excluding 7Eh and above)
  9551.     BH = revision of FOSSIL specification supported
  9552.     DTR is raised
  9553. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  9554.       following byte contains the maximum function number supported; this
  9555.       can serve as an installation check
  9556. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  9557. Index:    installation check;FOSSIL
  9558. --------S-1404-------------------------------
  9559. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  9560.     AH = 04h
  9561. Return: port initialized; if Hayes-compatible modem, a connection has been
  9562.       established
  9563. Note:    the port number is stored at offset BEh in the Task Control Block
  9564.       (see #0320 at INT 15/AH=13h"MultiDOS")
  9565. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  9566. --------S-1404-------------------------------
  9567. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  9568.     AH = 04h
  9569.     AL = initializing parameters (see #0186)
  9570.     BX = baud rate
  9571.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  9572. Return: AH = status
  9573.         00h successful
  9574.         FFh error
  9575. SeeAlso: AH=05h"Digiboard"
  9576.  
  9577. Bitfields for Digiboard initializing parameters:
  9578. Bit(s)    Description    (Table 0186)
  9579.  7-5    unused
  9580.  4-3    parity (00 none, 01 odd, 11 even)
  9581.  2    stop bits (0 = one, 1 = two)
  9582.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  9583. --------S-1404-------------------------------
  9584. INT 14 - MBBIOS - INSTALLATION CHECK
  9585.     AH = 04h
  9586.     DX = port number
  9587. Return: AX = AA55h if installed on specified port
  9588. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  9589. --------N-1404--DXFFFF-----------------------
  9590. INT 14 - Connection Manager - OPEN COMMUNICATION
  9591.     AH = 04h
  9592.     DX = FFFFh
  9593.     ES:DI -> Connection Request protocol vector (see #0187)
  9594. Return: AH = return code
  9595.         00h successful
  9596.         AL = connection ID
  9597.         BH = connection type
  9598.             00h direct connection or no dialing
  9599.             01h Connection Server dialed phone
  9600.         01h no response from Connection Server
  9601.         03h invalid request
  9602. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  9603.       serial ports over an IPX or NetBIOS-based network
  9604. Desc:    initiate a connection to the Connection Server listed in the current
  9605.       Client parameter set
  9606. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9607.       function, but redirects the port over the network; if DX is any other
  9608.       value, the call is chained
  9609.     all subvectors of the Connection Request vector are optional; if
  9610.       missing, default values are provided by the default connection
  9611.       parameter set
  9612. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  9613. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  9614.  
  9615. Format of Connection Manager protocol command vector:
  9616. Offset    Size    Description    (Table 0187)
  9617.  00h    WORD    (big-endian) total length of command (including this word)
  9618.  02h    WORD    (big-endian) command code
  9619.         EF01h Connection Request
  9620.         EF06h Modify Connection Parameters
  9621.  04h  N BYTEs    list of subvectors (see #0189)
  9622.         allowable subvector types are 01h-04h,17h,18h for command code
  9623.           EF01h; 03h,04h for command code EF06h
  9624.  
  9625. (Table 0188)
  9626. Values for Connection Manager subvector type code:
  9627.  01h    Connection ID
  9628.  02h    Destination ID
  9629.  03h    Asynchronous line parameters
  9630.  04h    Data transfer parameters
  9631.  09h    Line speed
  9632.  0Ah    Serial coding
  9633.  0Bh    Packet size
  9634.  0Ch    Timers
  9635.  0Dh    Special characters
  9636.  0Eh    Target ID
  9637.  0Fh    Telephone number
  9638.  10h    ASCII destination ID
  9639.  11h    Parity
  9640.  12h    Bits per character
  9641.  13h    Number of stop bits
  9642.  14h    Packet timer
  9643.  15h    Intercharacter timer
  9644.  17h    Flags
  9645.  18h    Parameter ranges
  9646.  19h    Flow control
  9647.  
  9648. Format of Connection Manager subvector:
  9649. Offset    Size    Description    (Table 0189)
  9650.  00h    BYTE    length of subvector
  9651.  01h    BYTE    type code (see #0188)
  9652.  02h N-2 BYTEs    data, which may include subvectors
  9653. SeeAlso: #0190,#0191,#0192,#0193,#0194,#0195,#0196,#0197,#0198,#0199,#0200
  9654. SeeAlso: #0201,#0202,#0204,#0205,#0206,#0207,#0208,#0209
  9655.  
  9656. Format of Connection ID subvector:
  9657. Offset    Size    Description    (Table 0190)
  9658.  00h    BYTE    03h (length)
  9659.  01h    BYTE    01h (subvector "Connection ID")
  9660.  02h    BYTE    connection ID
  9661.  
  9662. Format of Destination ID subvector:
  9663. Offset    Size    Description    (Table 0191)
  9664.  00h    BYTE    length
  9665.  01h    BYTE    02h (subvector "Destination ID")
  9666.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  9667.  
  9668. Format of Asynchronous line parameters subvector:
  9669. Offset    Size    Description    (Table 0192)
  9670.  00h    BYTE    length
  9671.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  9672.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  9673.  
  9674. Format of Data transfer parameters subvector:
  9675. Offset    Size    Description    (Table 0193)
  9676.  00h    BYTE    length
  9677.  01h    BYTE    04h (subvector "Data transfer parameters")
  9678.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  9679.  
  9680. Format of Line speed subvector:
  9681. Offset    Size    Description    (Table 0194)
  9682.  00h    BYTE    04h (length)
  9683.  01h    BYTE    09h (subvector "Line speed")
  9684.  02h    WORD    bit map, highest set bit selects speed
  9685.         bit 0: 2400
  9686.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  9687.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  9688.  
  9689. Format of Serial coding subvector:
  9690. Offset    Size    Description    (Table 0195)
  9691.  00h    BYTE    length
  9692.  01h    BYTE    0Ah (subvector "Serial coding")
  9693.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  9694.  
  9695. Format of Packet size subvector:
  9696. Offset    Size    Description    (Table 0196)
  9697.  00h    BYTE    04h (length)
  9698.  01h    BYTE    0Bh (subvector "Packet size")
  9699.  02h    WORD    (big-endian) packet size, 1 to 1024
  9700.  
  9701. Format of Timers subvector:
  9702. Offset    Size    Description    (Table 0197)
  9703.  00h    BYTE    length
  9704.  01h    BYTE    0Ch (subvector "Timers")
  9705.  02h  8 BYTEs    subvector of type 14h or 15h
  9706.  
  9707. Format of Special characters subvector:
  9708. Offset    Size    Description    (Table 0198)
  9709.  00h    BYTE    length
  9710.  01h    BYTE    0Dh (subvector "Special characters")
  9711.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  9712.  
  9713. Format of Target ID:
  9714. Offset    Size    Description    (Table 0199)
  9715.  00h    BYTE    length
  9716.  01h    BYTE    0Eh (subvector "Target ID")
  9717.  02h  N BYTEs    target ID, 1-16 bytes
  9718.  
  9719. Format of Telephone number subvector:
  9720. Offset    Size    Description    (Table 0200)
  9721.  00h    BYTE    length
  9722.  01h    BYTE    0Fh (subvector "Telephone number")
  9723.  02h  N BYTEs    telephone number
  9724.  
  9725. Format of ASCII destination ID subvector:
  9726. Offset    Size    Description    (Table 0201)
  9727.  00h    BYTE    length
  9728.  01h    BYTE    10h (subvector "ASCII destination ID")
  9729.  02h  N BYTEs    destination ID
  9730.  
  9731. Format of Parity subvector:
  9732. Offset    Size    Description    (Table 0202)
  9733.  00h    BYTE    03h (length)
  9734.  01h    BYTE    11h (subvector "Parity")
  9735.  02h    BYTE    parity type (see #0203)
  9736.  
  9737. Bitfields for Connection Manager parity type:
  9738. Bit(s)    Description    (Table 0203)
  9739.  7    odd
  9740.  6    even
  9741.  5    mark
  9742.  4    space
  9743.  3    none
  9744.  
  9745. Format of Bits per character subvector:
  9746. Offset    Size    Description    (Table 0204)
  9747.  00h    BYTE    03h (length)
  9748.  01h    BYTE    12h (subvector "Bits per character")
  9749.  02h    BYTE    bits per character
  9750.         bit 7: seven
  9751.         bit 6: eight
  9752.  
  9753. Format of Number of stop bits subvector:
  9754. Offset    Size    Description    (Table 0205)
  9755.  00h    BYTE    03h (length)
  9756.  01h    BYTE    13h (subvector "Number of stop bits")
  9757.  02h    BYTE    stop bits
  9758.         bit 7: one
  9759.         bit 6: 1.5
  9760.         bit 5: two
  9761.  
  9762. Format of Packet timer and Intercharacter timer subvectors:
  9763. Offset    Size    Description    (Table 0206)
  9764.  00h    BYTE    04h (length)
  9765.  01h    BYTE    subvector type
  9766.         14h Packet timer
  9767.         15h Intercharacter timer
  9768.  02h    WORD    (big-endian) unit of value representing 20ms
  9769.  
  9770. Format of Flags subvector:
  9771. Offset    Size    Description    (Table 0207)
  9772.  00h    BYTE    03h (length)
  9773.  01h    BYTE    17h (subvector "Flags")
  9774.  02h    BYTE    flags
  9775.         bit 7: queueing requested
  9776.  
  9777. Format of Parameter ranges subvector:
  9778. Offset    Size    Description    (Table 0208)
  9779.  00h    BYTE    length
  9780.  01h    BYTE    18h (subvector "Parameter ranges")
  9781.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  9782.  
  9783. Format of Flow control subvector:
  9784. Offset    Size    Description    (Table 0209)
  9785.  00h    BYTE    length (02h-04h)
  9786.  01h    BYTE    19h (subvector "Flow control")
  9787.  02h    BYTE    XOFF character
  9788.  03h    BYTE    XON character
  9789. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  9790.       character will be accepted as XON after an XOFF
  9791. --------S-140400-----------------------------
  9792. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  9793.     AX = 0400h
  9794. Return: AX = 0FF0h
  9795. SeeAlso: AX=0401h,AX=0408h
  9796. --------S-140401-----------------------------
  9797. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  9798.     AX = 0401h
  9799.     CX = mode
  9800. SeeAlso: AX=0400h,AX=0402h
  9801. --------S-140402-----------------------------
  9802. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  9803.     AX = 0402h
  9804.     CL = parameters
  9805. SeeAlso: AX=0400h,AX=0401h
  9806. --------S-140403-----------------------------
  9807. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  9808.     AX = 0403h
  9809.     CX = timeout
  9810. SeeAlso: AX=0400h
  9811. --------S-140404-----------------------------
  9812. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  9813.     AX = 0404h
  9814. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  9815. --------S-140405-----------------------------
  9816. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  9817.     AX = 0405h
  9818. Return: AX = number of characters in buffer
  9819. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  9820. --------S-140406-----------------------------
  9821. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  9822.     AX = 0406h
  9823. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  9824. --------S-140407-----------------------------
  9825. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  9826.     AX = 0407h
  9827. Return: AX = number of characters in the buffer
  9828. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  9829. --------S-140408-----------------------------
  9830. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  9831.     AX = 0408h
  9832. SeeAlso: AX=0400h
  9833. --------S-1405-------------------------------
  9834. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  9835.     AH = 05h
  9836.     AL = function
  9837.         00h read modem control register
  9838.           Return: BL = modem control register (see #0210)
  9839.               AH = status
  9840.         01h write modem control register
  9841.           BL = modem control register (see #0210)
  9842.           Return: AX = status
  9843.     DX = port number
  9844. Note:    also supported by ArtiCom
  9845. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  9846.  
  9847. Bitfields for modem control register:
  9848. Bit(s)    Description    (Table 0210)
  9849.  0    data terminal ready
  9850.  1    request to send
  9851.  2    OUT1
  9852.  3    OUT2
  9853.  4    LOOP
  9854.  5-7    reserved
  9855. --------S-1405-------------------------------
  9856. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  9857.     AH = 05h
  9858.     DX = port number
  9859. Return: none
  9860.     DTR is not affected
  9861. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  9862. --------S-1405-------------------------------
  9863. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  9864.     AH = 05h
  9865.     AL = timeout in seconds (00h = never)
  9866. Return: AL = status
  9867.         00h successful
  9868.         AH = character read
  9869.         01h read error
  9870.         02h timed out
  9871.         other modem status (CTS, DSR) changed
  9872. Note:    the port number is stored at offset BEh in the Task Control Block
  9873. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  9874. SeeAlso: INT 15/AH=13h"MultiDOS"
  9875. --------S-1405-------------------------------
  9876. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  9877.     AH = 05h
  9878.     AL = protocol (see #0211)
  9879.     BH = new XOFF character (00h = current)
  9880.     BL = new XON character (00h = current)
  9881.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  9882. Return: AH = status
  9883.         00h successful
  9884.         FFh error
  9885. SeeAlso: AH=04h"Digiboard"
  9886.  
  9887. Bitfields for Digiboard protocol:
  9888. Bit(s)    Description    (Table 0211)
  9889.  7-4    unused
  9890.  3    RTS/CTS
  9891.  2    DSR
  9892.  1,0    XON/XOFF
  9893. --------S-1405-------------------------------
  9894. INT 14 - MBBIOS - DROP DTR AND RTS
  9895.     AH = 05h
  9896.     DX = port number
  9897. Return: none
  9898. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  9899. --------S-1405-------------------------------
  9900. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  9901.     AH = 05h
  9902.     AL = new port protocol (see #0212)
  9903.     BH = new XOFF character
  9904.     BL = new XON character
  9905.     DX = port number
  9906. Return: AH = FFh if invalid protocol
  9907. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  9908.  
  9909. Bitfields for PC-MOS/386 serial port protocol:
  9910. Bit(s)    Description    (Table 0212)
  9911.  7    set to enable/disable CD monitoring, clear to set protocol
  9912. ---bit 7 set---
  9913.  4    CD monitoring enabled
  9914.  5    automatic restart enabled
  9915. ---bit 7 clear---
  9916.  0    receive XON/XOFF
  9917.  1    transmit XON/XOFF
  9918.  2    DTR/DSR
  9919.  3    RTS/CTS
  9920. --------N-1405--DXFFFF-----------------------
  9921. INT 14 - Connection Manager - CLOSE COMMUNICATION
  9922.     AH = 05h
  9923.     DX = FFFFh
  9924.     AL = connection ID
  9925. Return: AH = return code
  9926.         00h successful
  9927.         01h no such connection
  9928.         02h invalid connection ID
  9929.         AL = correct connection ID
  9930. Desc:    terminate existing connection to allow another one to be established
  9931. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  9932.       function, but redirects the port over the network; if DX is any other
  9933.       value, the call is chained
  9934. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  9935. --------S-1406-------------------------------
  9936. INT 14 - FOSSIL - RAISE/LOWER DTR
  9937.     AH = 06h
  9938.     DX = port
  9939.     AL = DTR state to be set
  9940.         00h = lower
  9941.         01h = raise
  9942. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  9943. --------S-1406-------------------------------
  9944. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  9945.     AH = 06h
  9946.     AL = character
  9947. Return: AL = status
  9948.         00h successful
  9949. Notes:    the port number is stored at offset BEh in the Task Control Block
  9950.     if output queue is full, the calling task is blocked until the
  9951.       character can be stored
  9952. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  9953. SeeAlso: INT 15/AH=13h"MultiDOS"
  9954. --------S-1406-------------------------------
  9955. INT 14 - MBBIOS - RAISE DTR AND RTS
  9956.     AH = 06h
  9957.     DX = port number
  9958. Return: none
  9959. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  9960. --------S-1406-------------------------------
  9961. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  9962.     AH = 06h
  9963.     DX = port number
  9964. Return: AH bit 7 set
  9965.     AL = number of highest function supported by driver
  9966. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  9967.       operating system by The Software Link, Inc.
  9968. SeeAlso: AH=18h"PC-MOS"
  9969. --------N-1406-------------------------------
  9970. INT 14 - TelAPI - WRITE???
  9971.     AH = 06h
  9972.     CX = number of characters to write???
  9973.     DX = port number
  9974.     ES:DI -> buffer containing data???
  9975. Return: AX = number of characters actually sent??? (negative on error)
  9976.     CX = ???
  9977. Note:    under Novell TELAPI.EXE v4.01, this function and AH=07h are implemented
  9978.       with identical code
  9979. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI"
  9980. --------N-1406--DXFFFF-----------------------
  9981. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  9982.     AH = 06h
  9983.     DX = FFFFh
  9984.     AL = connection ID
  9985.     CX = number of characters to send
  9986.     ES:DI -> buffer containing data to be sent
  9987. Return: AH = return code (see #0179)
  9988. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  9989.       serial ports over an IPX or NetBIOS-based network
  9990. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  9991. --------S-1407-------------------------------
  9992. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  9993.     AH = 07h
  9994. Return: AL = timer tick interrupt number
  9995.     AH = ticks per second on interrupt number in AL
  9996.     DX = approximate number of milliseconds per tick
  9997. SeeAlso: AH=16h
  9998. --------S-1407-------------------------------
  9999. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  10000.     AH = 07h
  10001. Return: CL = modem status (see #0181)
  10002.     CH = character at head of input queue (if any)
  10003.     DX = number of characters in input queue
  10004. Note:    the port number is stored at offset BEh in the Task Control Block
  10005. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  10006. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  10007. --------S-1407-------------------------------
  10008. INT 14 - MBBIOS - SEND BREAK
  10009.     AH = 07h
  10010.     DX = port number
  10011. Return: none
  10012. SeeAlso: AH=06h"MBBIOS"
  10013. --------S-1407-------------------------------
  10014. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  10015.     AH = 07h
  10016.     BX = duration of break in clock ticks
  10017.     DX = port number
  10018. Return: nothing
  10019. --------N-1407-------------------------------
  10020. INT 14 - TelAPI - WRITE???
  10021.     AH = 07h
  10022.     CX = number of characters to write???
  10023.     DX = port number
  10024.     ES:DI -> buffer containing data???
  10025. Return: AX = number of characters actually sent??? (negative on error)
  10026.     CX = ???
  10027. Note:    under Novell TELAPI.EXE v4.01, this function and AH=06h are implemented
  10028.       with identical code
  10029. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI"
  10030. --------N-1407--DXFFFF-----------------------
  10031. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  10032.     AH = 07h
  10033.     DX = FFFFh
  10034.     AL = connection ID
  10035.     BL = flag
  10036.         00h wait for data
  10037.         nonzero do not wait if no data avaiable
  10038.     CX = size of receive buffer
  10039.     ES:DI -> buffer for received characters
  10040. Return: AH = return code (00h-02h,04h,FFh) (see #0179)
  10041.     BH = line status (see #0182)
  10042.     CX = number of characters received
  10043. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10044.       serial ports over an IPX or NetBIOS-based network
  10045. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  10046. --------S-1408-------------------------------
  10047. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  10048.     AH = 08h
  10049.     DX = port number
  10050. SeeAlso: AH=09h"FOSSIL"
  10051. --------S-1408-------------------------------
  10052. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  10053.     AH = 08h
  10054. Return: AL = line status (see #0180)
  10055.     AH destroyed
  10056. Notes:    the port number is stored at offset BEh in the Task Control Block
  10057.     on every line status change, the line status is ORed with the line
  10058.       status accumulator; this function returns the accumulator and clears
  10059.       it
  10060. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  10061. --------S-1408-------------------------------
  10062. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  10063.     AH = 08h
  10064.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10065. Return: AH = RS232 status bits (see #0180 at AH=03h)
  10066.     ZF set if no characters queued
  10067.     ZF clear if character available
  10068.         AL = next character
  10069. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  10070. --------S-1408-------------------------------
  10071. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  10072.     AH = 08h
  10073.     DX = port number
  10074. Return: AL = character (if AH bit 0 set)
  10075.     AH = status (see #0180)
  10076. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  10077. --------S-1408-------------------------------
  10078. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  10079.     AH = 08h
  10080.     DX = port number
  10081. Return: CF set if carrier loss detected
  10082.     ZF set if input buffer empty
  10083.     ZF clear if characters available
  10084.         AL = next character dequeued
  10085. --------N-1408--DXFFFF-----------------------
  10086. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  10087.     AH = 08h
  10088.     DX = FFFFh
  10089.     CX = size of buffer for parameters or 0000h to get length
  10090.     ES:DI -> buffer for parameter vector (see #0187)
  10091. Return: AH = return code
  10092.         00h successful
  10093.         CX = number of bytes required (if CX=0000h on entry)
  10094.         CX = number of bytes omitted for lack of space (if CX nonzero)
  10095.         nonzero invalid request
  10096. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10097.       serial ports over an IPX or NetBIOS-based network
  10098. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  10099. --------S-1409-------------------------------
  10100. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  10101.     AH = 09h
  10102.     DX = port number
  10103. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  10104. --------S-1409-------------------------------
  10105. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  10106.     AH = 09h
  10107. Return: modem status byte cleared
  10108. Note:    the port number is stored at offset BEh in the Task Control Block
  10109. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  10110. --------S-1409-------------------------------
  10111. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  10112.     AH = 09h
  10113.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10114. Return: AH = status
  10115.         00h successful
  10116.         FFh error
  10117. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  10118. --------S-1409-------------------------------
  10119. INT 14 - MBBIOS - GET/SET OPTIONS
  10120.     AH = 09h
  10121.     AL = option byte (see #0213)
  10122.     DX = port number???
  10123. Return: AL = old option byte
  10124. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  10125.  
  10126. Bitfields for MBBIOS option byte:
  10127. Bit(s)    Description    (Table 0213)
  10128.  0    transmit buffering enabled
  10129.  2    hardware handshaking enabled
  10130.  5    high-speed option enabled (see AH=00h"MBBIOS",#0178)
  10131.  other    reserved
  10132. --------S-1409-------------------------------
  10133. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  10134.     AH = 09h
  10135.     DX = port number
  10136. Return: nothing
  10137. SeeAlso: AH=13h"PC-MOS"
  10138. --------N-1409--DXFFFF-----------------------
  10139. INT 14 - Connection Manager - SEND BREAK
  10140.     AH = 09h
  10141.     DX = FFFFh
  10142.     AL = connection ID
  10143. Return: AH = return code (00h-02h) (see #0179 at AH=00h/DX=FFFFh)
  10144. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10145.       serial ports over an IPX or NetBIOS-based network
  10146. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  10147. --------S-140A-------------------------------
  10148. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  10149.     AH = 0Ah
  10150.     DX = port number
  10151. SeeAlso: AH=09h"FOSSIL",AH=85h
  10152. --------S-140A-------------------------------
  10153. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  10154.     AH = 0Ah
  10155.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10156. Return: AX = number of characters available in buffer
  10157. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  10158. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  10159. --------S-140A-------------------------------
  10160. INT 14 - MBBIOS - WRITE BUFFER
  10161.     AH = 0Ah
  10162.     CX = count
  10163.     ES:DI -> buffer (see #0214)
  10164. Return: AX = status (see #0180,#0181)
  10165.     CX = unsent character count
  10166.     DI updated
  10167. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  10168.       contains the segment of a buffer containing the packet to be sent,
  10169.       which by default will be freed once the packet has been sent.     Use
  10170.       AH=0Ch"MBBIOS" to allocate the buffer.
  10171. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  10172.  
  10173. Format of MBBIOS PACCOM buffer:
  10174. Offset    Size    Description    (Table 0214)
  10175.  00h 504 BYTEs    data area
  10176. 1F8h    WORD    length of data in data area
  10177. 1FAh    BYTE    flags/status
  10178.         bit 7: don't discard buffer after transmitting data
  10179.         bit 6: buffer has been transmitted
  10180. 1FBh    BYTE    reserved (0) for additional flags/status
  10181. 1FCh    WORD    user data
  10182. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  10183. --------N-140A--DXFFFF-----------------------
  10184. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  10185.     AH = 0Ah
  10186.     DX = FFFFh
  10187.     ES:DI -> vector string containing new parameters (see #0187)
  10188. Return: AH = return code (00h-03h,06h) (see #0179)
  10189. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10190.       serial ports over an IPX or NetBIOS-based network
  10191. Note:    any subvectors valid for the Change Parameters command replace the
  10192.       existing values in the current set
  10193. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  10194. --------S-140B-------------------------------
  10195. INT 14 - FOSSIL - TRANSMIT NO WAIT
  10196.     AH = 0Bh
  10197.     AL = character
  10198.     DX = port number
  10199. Return: AX = result
  10200.         0000h character not accepted
  10201.         0001h character accepted
  10202. SeeAlso: AH=01h
  10203. --------S-140B-------------------------------
  10204. INT 14 - MBBIOS - READ BUFFER
  10205.     AH = 0Bh
  10206.     CX = size of buffer
  10207.     ES:DI -> buffer
  10208. Return: AH = composite line status (see #0180) formed by ORing all statuses
  10209.           on receive interrupts; bit 0 set if additional characters
  10210.           available
  10211.     AL = composite modem status (see #0181) formed by ORing all statuses
  10212.     CX = number of characters actually read
  10213.     DI updated
  10214. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  10215.       instead returning ES set to the segment of the buffer containing a
  10216.       received packet, or 0000h if no packets available; the buffer may
  10217.       be freed with AH=0Ch"MBBIOS"
  10218. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  10219. --------N-140B--DXFFFF-----------------------
  10220. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  10221.     AH = 0Bh
  10222.     DX = FFFFh
  10223.     AL = service name
  10224.         00h use parameter file or default
  10225.         01h use specified name
  10226.         ES:DI -> 16-byte blank-padded name
  10227.     BH = connection notification
  10228.         00h program awaiting connection, don't notify user
  10229.         01h notify user on connecting
  10230.     BL = connection type
  10231.         00h connection will use Connection Manager API
  10232. Return: AH = return code (00h-02h) (see #0179 at AH=00h/DX=FFFFh)
  10233.     AL = connection ID if AH=00h
  10234. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10235.       serial ports over an IPX or NetBIOS-based network
  10236. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  10237. --------S-140C-------------------------------
  10238. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  10239.     AH = 0Ch
  10240.     DX = port number
  10241. Return: AX = FFFFh character not available
  10242.     AX = 00xxh character xx available
  10243. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  10244. --------S-140C-------------------------------
  10245. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  10246.     AH = 0Ch
  10247.     ES = segment of buffer to free, or 0000h to allocate new buffer
  10248. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  10249. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  10250.       AH=0Ah and AH=0Bh
  10251. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  10252. --------N-140C--DXFFFF-----------------------
  10253. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  10254.     AH = 0Ch
  10255.     DX = FFFFh
  10256.     AL = connection ID from AH=0Bh/DX=FFFFh
  10257. Return: AH = return code (00h-03h) (see also #0179 at AH=00h/DX=FFFFh)
  10258.         03h not prepared for inbound connection
  10259.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  10260. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10261.       serial ports over an IPX or NetBIOS-based network
  10262. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  10263. --------S-140D-------------------------------
  10264. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  10265.     AH = 0Dh
  10266. Return: AX = result
  10267.         FFFFh character not available
  10268.         xxyyh standard IBM-style scan code
  10269. SeeAlso: AH=0Eh
  10270. --------S-140D-------------------------------
  10271. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  10272.     AH = 0Dh
  10273.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10274. Return: ES:BX -> CH_KEY_RDY flag (see #0215)
  10275. SeeAlso: AH=0Ah"Digiboard"
  10276.  
  10277. (Table 0215)
  10278. Values for Digiboard CH_KEY_RDY flag:
  10279.  00h    receive buffer empty
  10280.  FFh    characters available
  10281. --------S-140D-------------------------------
  10282. INT 14 - MBBIOS PACCOM support - SET TXD
  10283.     AH = 0Dh
  10284.     AL = new setting (FFh = 1.0)
  10285. Desc:    specify the time from RTS to start or packet
  10286. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  10287. --------N-140D--DXFFFF-----------------------
  10288. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  10289.     AH = 0Dh
  10290.     DX = FFFFh
  10291. Return: AH = return code
  10292.         00h successful
  10293.         nonzero operation not terminated
  10294. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10295.       serial ports over an IPX or NetBIOS-based network
  10296. Desc:    end all Connection Client TSR activity to allow it to be removed from
  10297.       memory
  10298. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  10299. --------S-140D00-----------------------------
  10300. INT 14 - MBBIOS - GET AVAILABLE BYTES
  10301.     AX = 0D00h
  10302. Return: AX = bytes in transmit buffer
  10303.     CX = bytes in receive buffer
  10304. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  10305. --------S-140D01-----------------------------
  10306. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  10307.     AX = 0D01h
  10308. Note:    this function lowers DTR, RTS, etc.
  10309. SeeAlso: AX=0D02h
  10310. --------S-140D02-----------------------------
  10311. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  10312.     AX = 0D02h
  10313. Note:    this function raises DTR, RTS, etc.
  10314. SeeAlso: AX=0D01h
  10315. --------S-140D03-----------------------------
  10316. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  10317.     AX = 0D03h
  10318.     CL = new handshake byte
  10319. Return: CL = previous handshake byte
  10320. Note:    this function lowers DTR, RTS, etc.
  10321. --------S-140E-------------------------------
  10322. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  10323.     AH = 0Eh
  10324. Return: AX = xxyyh standard IBM-style scan code
  10325. SeeAlso: AH=0Dh"FOSSIL"
  10326. --------S-140E-------------------------------
  10327. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  10328.     AH = 0Eh
  10329.     CX = number of characters to write
  10330.     ES:BX -> string
  10331.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10332. Return: AX = number of characters actually written
  10333.     ZF clear if successful
  10334.     ZF set on error
  10335. SeeAlso: AH=0Fh"Digiboard"
  10336. --------S-140E-------------------------------
  10337. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  10338.     AH = 0Eh
  10339.     AL = new setting (FFh = 1.0)
  10340. Desc:    specify the time from end of DCD to RTS
  10341. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  10342. --------N-140E--DXFFFF-----------------------
  10343. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  10344.     AH = 0Eh
  10345.     DX = FFFFh
  10346.     AL = connection ID from AH=04h/DX=FFFFh
  10347.     BL = RTS state (00h off, 01h on)
  10348. Return: AH = return code (00h-03h) (see also #0179 at AH=00h/DX=FFFFh)
  10349.         03h invalid request (BL not 00h or 01h)
  10350. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10351.       serial ports over an IPX or NetBIOS-based network
  10352. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  10353. --------S-140F-------------------------------
  10354. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  10355.     AH = 0Fh
  10356.     AL = bit mask describing requested flow control (see #0216)
  10357.     DX = port number
  10358. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  10359.  
  10360. Bitfields for FOSSIL requested flow control:
  10361. Bit(s)    Description    (Table 0216)
  10362.  0    XON/XOFF on transmit (watch for XOFF while sending)
  10363.  1    CTS/RTS (CTS on transmit/RTS on receive)
  10364.  2    reserved
  10365.  3    XON/XOFF on receive (send XOFF when buffer near full)
  10366.  4-7    all 1
  10367. --------S-140F-------------------------------
  10368. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  10369.     AH = 0Fh
  10370.     CX = number of characters to read
  10371.     ES:BX -> buffer
  10372.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10373. Return: AX = number of characters read
  10374.     ZF clear if successful
  10375.     ZF set on error (line status or wrong number of characters)
  10376. SeeAlso: AH=0Eh"Digiboard"
  10377. --------S-140F-------------------------------
  10378. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  10379.     AH = 0Fh
  10380.     AL = new setting in clock ticks
  10381. Desc:    specify the time from end of DCD to RTS
  10382. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  10383. --------N-140F--DXFFFF-----------------------
  10384. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  10385.     AH = 0Fh
  10386.     DX = FFFFh
  10387.     AL = connection ID
  10388.     CX = size of buffer or 0000h to get length of returned vector
  10389.     ES:DI -> buffer for connection parameter vector (see #0187)
  10390. Return: AH = return code (00h-02h,06h) (see #0179 at AH=00h/DX=FFFFh)
  10391.     CX = number of bytes which could not be returned because the given
  10392.           buffer was too small
  10393. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10394.       serial ports over an IPX or NetBIOS-based network
  10395. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  10396. --------S-1410-------------------------------
  10397. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  10398.     AH = 10h
  10399.     AL = bit mask
  10400.         bit 0: enable/disable ^C/^K checking
  10401.         bit 1: enable/disable the transmitter
  10402.     DX = port number
  10403. SeeAlso: AH=0Fh"FOSSIL"
  10404. --------S-1410-------------------------------
  10405. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  10406.     AH = 10h
  10407.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10408. Return: AH = status
  10409.         00h successful
  10410.         FFh error
  10411. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  10412. --------S-1410-------------------------------
  10413. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  10414.     AH = 10h
  10415.     AL = new setting in clock ticks (should be at least 5 character times)
  10416. Desc:    specify the time from start of last character to dropping RTS
  10417. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  10418. --------N-1410--DXFFFF-----------------------
  10419. INT 14 - Connection Manager - QUERY SERVICE NAMES
  10420.     AH = 10h
  10421.     DX = FFFFh
  10422.     CL = subfunction
  10423.         00h search first
  10424.         01h search next
  10425.     ES:DI -> pattern buffer (see #0217)
  10426. Return: AH = return code (00h,01h,03h,06h) (see also #0179 at AH=00h/DX=FFFFh)
  10427.         01h no (more) matching names
  10428.         03h invalid request
  10429.     ES:DI buffer filled with reply buffer (see #0217) containing matched
  10430.           name if AH=00h
  10431. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  10432.       serial ports over an IPX or NetBIOS-based network
  10433. Desc:    obtain the names of groups and lines available for connection requests,
  10434.       and the names of active Connection Servers
  10435. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  10436.  
  10437. Format of Connection Manager pattern/reply buffer:
  10438. Offset    Size    Description    (Table 0217)
  10439.  00h    WORD    length of pattern (30h or 32h)
  10440.  02h 16 BYTEs    server pattern or name
  10441.  12h 16 BYTEs    group pattern or name
  10442.  22h 16 BYTEs    line pattern or name
  10443.  23h    BYTE    (optional) ???
  10444.  24h    BYTE    (optional, returned) current line status
  10445.         00h available
  10446.         01h out of service
  10447.         02h currently allocated to a connection
  10448. Note:    pattern may include '?' wildcard to match any character
  10449. --------S-1411-------------------------------
  10450. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  10451.     AH = 11h
  10452.     DH = row
  10453.     DL = column
  10454. Note:    this is the same as INT 10/AH=02h
  10455. SeeAlso: AH=12h"FOSSIL"
  10456. --------S-1411-------------------------------
  10457. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  10458.     AH = 11h
  10459.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10460. Return: AH = status
  10461.         00h successful
  10462.         FFh error
  10463. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  10464. --------S-1411-------------------------------
  10465. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  10466.     AH = 11h
  10467.     DX = port number
  10468. Return: AL = status
  10469.         00h successful
  10470.         01h IRQ for port is shared
  10471.         02h IRQ was reserved
  10472. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  10473. --------S-1412-------------------------------
  10474. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  10475.     AH = 12h
  10476. Return: DH = row
  10477.     DL = column
  10478. Note:    this is the same as INT 10/AH=03h
  10479. SeeAlso: AH=11h"FOSSIL"
  10480. --------S-1412-------------------------------
  10481. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  10482.     AH = 12h
  10483.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10484. Return: AX = number of bytes free
  10485. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  10486. --------S-1412-------------------------------
  10487. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  10488.     AH = 12h
  10489.     DX = port number
  10490. Return: AH = status
  10491.         FFh port number invalid
  10492.     AL = line parameters (see #0180)
  10493.     AH = flow control configuration (see #0212 at AH=05h"PC-MOS")
  10494.     CX:BX = bps rate
  10495.     DL = XOFF character or 00h for none
  10496.     DH = XON character or 00h for none
  10497. --------S-1413-------------------------------
  10498. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  10499.     AH = 13h
  10500.     AL = character
  10501. Note:    should not be called if it is unsafe to call DOS
  10502. SeeAlso: AH=15h
  10503. --------S-1413-------------------------------
  10504. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  10505.     AH = 13h
  10506.     DX = port number
  10507. Return: AH = status
  10508.         FFh port number invalid
  10509.         else
  10510.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  10511. SeeAlso: AH=17h"PC-MOS"
  10512. --------S-1414-------------------------------
  10513. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  10514.     AH = 14h
  10515.     AL = 01h enable watchdog
  10516.          00h disable watchdog
  10517.     DX = port number
  10518. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  10519. --------S-1414-------------------------------
  10520. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  10521.     AH = 14h
  10522.     CX = number of characters in string
  10523.     DX = port number
  10524.     ES:BX -> string to be sent
  10525.     SI = timeout in timer ticks or 0000h for default
  10526. Return: AX = number of bytes actually sent
  10527.     ZF clear if successful
  10528.     ZF set on timeout
  10529. SeeAlso: AH=01h,AH=15h"PC-MOS"
  10530. --------S-1414-------------------------------
  10531. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  10532.     AH = 14h
  10533. Return: AX = number of boards installed
  10534. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  10535. --------S-1415-------------------------------
  10536. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  10537.     AH = 15h
  10538.     AL = character
  10539. SeeAlso: AH=13h"FOSSIL"
  10540. --------S-1415-------------------------------
  10541. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  10542.     AH = 15h
  10543.     CX = size of buffer
  10544.     DX = port number
  10545.     ES:BX -> buffer for received characters
  10546.     SI = timeout in clock ticks or 0000h for default
  10547. Return: AX = number of characters actually read
  10548.     ZF set on timeout (no data available)
  10549. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  10550. --------S-1415-------------------------------
  10551. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  10552.     AH = 15h
  10553.     AL = new state (00h disabled, 01h enabled)
  10554. Return: AH = status
  10555.         00h successful
  10556.         80h error
  10557.         FFh error
  10558. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  10559. --------S-1416-------------------------------
  10560. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  10561.     AH = 16h
  10562.     AL = function
  10563.         00h = delete
  10564.         01h = add
  10565.     ES:DX -> routine to call
  10566. Return: AX = status
  10567.         0000h successful
  10568.         0001h unsuccessful
  10569. SeeAlso: AH=07h"FOSSIL"
  10570. --------S-1416-------------------------------
  10571. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  10572.     AH = 16h
  10573.     ES:BX -> calling driver's INT 14 entry point
  10574. Return: nothing
  10575. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  10576.       operating system by The Software Link, Inc.
  10577. --------S-1416-------------------------------
  10578. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  10579.     AH = 16h
  10580.     AL = CCB command number (see #0218) (see also following entries)
  10581.     BL = byte 2
  10582.     BH = byte 3
  10583.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  10584.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10585. Return: AH = status
  10586.         00h successful
  10587.         80h error
  10588.         FFh error
  10589. SeeAlso: AX=1646h,AH=18h"Digiboard"
  10590.  
  10591. (Table 0218)
  10592. Values for Digiboard CCB command number:
  10593.  40h    Set Receive Mid Water Mark
  10594.  41h    Set Receive High Water Mark
  10595.  42h    Flush Receive Buffer
  10596.  43h    Flush Transmit Buffer
  10597.  44h    Transmit Pause
  10598.  45h    Transmit Resume
  10599.  46h    Set Interrupt to Host Mask
  10600.  47h    Set Baud, Data, Stop and Parity
  10601.  48h    Send Break
  10602.  49h    Set Modem Lines
  10603.  4Ah    Set Break Count
  10604.  4Bh    Set Handshake
  10605.  4Ch    Set Xon/Xoff Characters
  10606.  4Dh    Set Transmit Mid Water Mark
  10607.  4Eh    IRQ Polling Timer to Host
  10608.  4Fh    Buffer Set All
  10609.  50h    Port On
  10610.  51h    Port Off
  10611.  52h    Receive Pause
  10612.  53h    Special Character Interrupt
  10613.  54h    RS-422 Enable
  10614. --------S-141646-----------------------------
  10615. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  10616.     AX = 1646h
  10617.     BL = bits to set
  10618.     BH = bits to clear
  10619.     CL = byte 1
  10620.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10621. Return: AH = status
  10622.         00h successful
  10623.         80h error
  10624.         FFh error
  10625. SeeAlso: AH=16h"Digiboard",AX=1647h
  10626. --------S-141647-----------------------------
  10627. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  10628.     AX = 1647h
  10629.     BL = baud
  10630.     BH = datatype
  10631.     CL = byte 1
  10632.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10633. Return: AH = status
  10634.         00h successful
  10635.         80h error
  10636.         FFh error
  10637. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  10638. --------S-141649-----------------------------
  10639. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  10640.     AX = 1649h
  10641.     BL = bits to set
  10642.     BH = bits to clear
  10643.     CL = byte 1
  10644.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10645. Return: AH = status
  10646.         00h successful
  10647.         80h error
  10648.         FFh error
  10649. SeeAlso: AH=16h"Digiboard",AX=1647h
  10650. --------S-14164A-----------------------------
  10651. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  10652.     AX = 164Ah
  10653.     BL = break count
  10654.     CL = byte 1
  10655.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10656. Return: AH = status
  10657.         00h successful
  10658.         80h error
  10659.         FFh error
  10660. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  10661. --------S-14164B-----------------------------
  10662. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  10663.     AX = 164Bh
  10664.     BL = bits to set
  10665.     BH = bits to clear
  10666.     CL = byte 1
  10667.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10668. Return: AH = status
  10669.         00h successful
  10670.         80h error
  10671.         FFh error
  10672. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  10673. --------S-14164C-----------------------------
  10674. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  10675.     AX = 164Ch
  10676.     BL = XON character
  10677.     BH = XOFF character
  10678.     CL = byte 1
  10679.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10680. Return: AH = status
  10681.         00h successful
  10682.         80h error
  10683.         FFh error
  10684. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  10685. --------S-14164D-----------------------------
  10686. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  10687.     AX = 164Dh
  10688.     BX = new mid-water mark
  10689.     CL = byte 1
  10690.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10691. Return: AH = status
  10692.         00h successful
  10693.         80h error
  10694.         FFh error
  10695. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  10696. --------S-14164E-----------------------------
  10697. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  10698.     AX = 164Eh
  10699.     BL = ticks
  10700.     BH = ???
  10701.     CL = mode
  10702.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10703. Return: AH = status
  10704.         00h successful
  10705.         80h error
  10706.         FFh error
  10707. SeeAlso: AH=16h"Digiboard",AX=164Dh
  10708. --------S-14164F-----------------------------
  10709. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  10710.     AX = 164Fh
  10711.     BL = size
  10712.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10713. Return: AH = status
  10714.         00h successful
  10715.         80h error
  10716.         FFh error
  10717. SeeAlso: AH=16h"Digiboard",AX=164Dh
  10718. --------S-141653-----------------------------
  10719. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  10720.     AX = 1653h
  10721.     BL = enable/disable
  10722.     BH = special character
  10723.     CL = byte 1
  10724.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10725. Return: AH = status
  10726.         00h successful
  10727.         80h error
  10728.         FFh error
  10729. SeeAlso: AH=16h"Digiboard",AX=1646h
  10730. --------S-1417-------------------------------
  10731. INT 14 - FOSSIL - REBOOT SYSTEM
  10732.     AH = 17h
  10733.     AL = method
  10734.         00h = cold boot
  10735.         01h = warm boot
  10736. SeeAlso: INT 19,INT 60/DI=0606h
  10737. --------S-1417-------------------------------
  10738. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  10739.     AH = 17h
  10740.     AL = new value for UART's modem control register
  10741.     DX = port number
  10742. Return: nothing
  10743. --------S-1418-------------------------------
  10744. INT 14 - FOSSIL - READ BLOCK
  10745.     AH = 18h
  10746.     CX = maximum number of characters to transfer
  10747.     DX = port number
  10748.     ES:DI -> user buffer
  10749. Return: AX = number of characters transferred
  10750. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  10751. --------S-1418-------------------------------
  10752. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  10753.     AH = 18h
  10754.     ES:BX -> 16-byte command string
  10755.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10756. Return: AH = status
  10757.         00h successful
  10758.         80h timeout
  10759.     AL = mailbox status
  10760.         00h no errors
  10761.         8Xh BIOS error
  10762.     ES:BX buffer filled in with mailbox string
  10763.     ZF clear if no errors
  10764.     ZF set if either status byte contains an error code
  10765. SeeAlso: AH=16h"Digiboard"
  10766. --------S-1418-------------------------------
  10767. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  10768.     AH = 18h
  10769.     DX = port number
  10770. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  10771.         driver
  10772. SeeAlso: AH=06h"PC-MOS"
  10773. --------S-1419-------------------------------
  10774. INT 14 - FOSSIL - WRITE BLOCK
  10775.     AH = 19h
  10776.     CX = maximum number of characters to transfer
  10777.     DX = port number
  10778.     ES:DI -> user buffer
  10779. Return: AX = number of characters transferred
  10780. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  10781. --------S-1419-------------------------------
  10782. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  10783.     AH = 19h
  10784.     BL = flag
  10785.         00h disable special character interrupt
  10786.         FFh enable interrupt
  10787.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10788. Return: AH = status
  10789.         00h successful
  10790.         FFh failed
  10791. SeeAlso: AH=1Ah"Digiboard"
  10792. --------S-1419-------------------------------
  10793. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  10794.     AH = 19h
  10795.     AL = what to flush
  10796.         bit 0: input buffer
  10797.         bit 1: output buffer
  10798.     DX = port number
  10799. Return: nothing
  10800. SeeAlso: AH=09h"PC-MOS"
  10801. --------S-141A-------------------------------
  10802. INT 14 - FOSSIL - BREAK BEGIN OR END
  10803.     AH = 1Ah
  10804.     AL = 00h stop sending 'break'
  10805.          01h start sending 'break'
  10806.     DX = port number
  10807. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  10808. --------S-141A-------------------------------
  10809. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  10810.     AH = 1Ah
  10811.     BX = subfunction
  10812.         00h return pointer to special character flag byte
  10813.         01h return pointer to special character counter word
  10814.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  10815. Return: ES:BX -> special character flag or counter
  10816. Notes:    flag is FFh if one or more special characters are in the receive
  10817.       buffer; it is 00h and the counter is invalid if no special characters
  10818.       are in the receive buffer
  10819.     counter (if valid) contains the number of characters in the receive
  10820.       buffer up to and including the last-received special character
  10821. --------S-141B-------------------------------
  10822. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  10823.     AH = 1Bh
  10824.     DX = port number
  10825.     CX = size of user buffer
  10826.     ES:DI -> user buffer for driver info (see #0219)
  10827. Return: AX = number of characters transferred
  10828.     CX = 3058h ("0X") (X00 FOSSIL only)
  10829.     DX = 2030h (" 0") (X00 FOSSIL only)
  10830.  
  10831. Format of FOSSIL driver info:
  10832. Offset    Size    Description    (Table 0219)
  10833.  00h    WORD    size of structure in bytes
  10834.  02h    BYTE    FOSSIL spec driver conforms to
  10835.  03h    BYTE    revision level of this specific driver
  10836.  04h    DWORD    pointer to ASCIZ identification string
  10837.  08h    WORD    size of the input buffer
  10838.  0Ah    WORD    number of bytes left in buffer
  10839.  0Ch    WORD    size of the output buffer
  10840.  0Eh    WORD    number of bytes left in buffer
  10841.  10h    BYTE    width of screen
  10842.  11h    BYTE    length of screen
  10843.  12h    BYTE    actual baud rate, computer to modem
  10844. --------S-141C-------------------------------
  10845. INT 14 - X00 FOSSIL - ACTIVATE PORT
  10846.     AH = 1Ch
  10847.     DX = port number
  10848. Return: AX = 1954h if successful
  10849.     BL = maximum function number supported (not including 7Eh and above)
  10850.     BH = revision of FOSSIL specification supported
  10851. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  10852.       with the PS/2 BIOS in a future release
  10853. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  10854. --------S-141D-------------------------------
  10855. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  10856.     AH = 1Dh
  10857.     DX = port number
  10858. Return: none
  10859. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  10860.       with the PS/2 BIOS in a future release
  10861.     ignored if the port was never activated with AH=04h or AH=1Ch
  10862. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  10863. --------S-141E-------------------------------
  10864. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  10865.     AH = 1Eh
  10866.     AL = break status
  10867.         00h if break
  10868.         01h if no break
  10869.     BH = parity (see #0220)
  10870.     BL = number of stop bits
  10871.         00h one stop bit
  10872.         01h two stop bits (1.5 if 5 bit word length)
  10873.     CH = word length (see #0221)
  10874.     CL = bps rate (see #0222)
  10875.     DX = port number
  10876. Return: AX = port status code (see #0180,#0181)
  10877. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  10878.     if the port was locked at X00 load time, the appropriate parameters are
  10879.       ignored
  10880. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  10881.  
  10882. (Table 0220)
  10883. Values for X00 FOSSIL parity:
  10884.  00h    no parity
  10885.  01h    odd parity
  10886.  02h    even parity
  10887.  03h    stick parity odd
  10888.  04h    stick parity even
  10889.  
  10890. (Table 0221)
  10891. Values for X00 FOSSIL word length:
  10892.  00h    5 bits
  10893.  01h    6 bits
  10894.  02h    7 bits
  10895.  03h    8 bits
  10896.  
  10897. (Table 0222)
  10898. Values for X00 FOSSIL bps rate:
  10899.  00h    110
  10900.  01h    150
  10901.  02h    300
  10902.  03h    600
  10903.  04h    1200
  10904.  05h    2400
  10905.  06h    4800
  10906.  07h    9600
  10907.  08h    19200
  10908. --------S-141E------------------------------------
  10909. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  10910.     AH = 1Eh
  10911.     CX = channel number (00h COM1, 01h COM2, ...)
  10912.     DS:BX -> buffer for communications parameters (see #0223)
  10913. Return: DS:BX buffer filled
  10914. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  10915.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  10916. SeeAlso: AH=20h"HUNTER"
  10917.  
  10918. Format of HUNTER 16 communications parameters:
  10919. Offset    Size    Description    (Table 0223)
  10920.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  10921.  01h    BYTE    port number (00h COM1, 01h COM2)
  10922.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  10923.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  10924.  03h    BYTE    data bits (01h seven, 02h eight)
  10925.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  10926.  05h    BYTE    stop bits (00h one, 01h two)
  10927.  06h    BYTE    handshake (see #0224)
  10928.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  10929.  08h    BYTE    Nulls after CR (0-20)
  10930.  09h    BYTE    LF (00h off, 01h on)
  10931.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  10932.                80h: Serig off
  10933.  0Bh    BYTE    echo (00h off, 01h on)
  10934.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  10935.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  10936.  0Eh  5 BYTEs    reserved
  10937.  
  10938. Bitfields for HUNTER 16 handshake:
  10939. Bit(s)    Description    (Table 0224)
  10940.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  10941.  2    DTR enabled
  10942.  4    CTS enabled
  10943.  5    DSR enabled
  10944.  6    DCD enabled
  10945. --------S-141F-------------------------------
  10946. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  10947.     AH = 1Fh
  10948.     AL = 00h read modem control register
  10949.           Return: BL = modem control register (see #0225)
  10950.               AH = status
  10951.     AL = 01h write modem control register
  10952.           BL = modem control register (see #0225)
  10953.           Return: AX = status
  10954.     DX = port number
  10955. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  10956.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  10957. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  10958.  
  10959. Bitfields for X00 FOSSIL modem control register:
  10960. Bit(s)    Description    (Table 0225)
  10961.  0    data terminal ready
  10962.  1    request to send
  10963.  2    OUT1
  10964.  3    OUT2 (interrupts) enabled
  10965.  4    LOOP
  10966.  5-7    reserved
  10967. --------S-1420-------------------------------
  10968. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  10969.     AH = 20h
  10970.     DX = port number
  10971. Return: AH = 00h if character was available
  10972.         AL = next character (removed from receive buffer)
  10973.     AX = FFFFh if no character available
  10974. SeeAlso: AH=0Ch,AH=21h"X00"
  10975. --------S-1420-------------------------------
  10976. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  10977.     AH = 20h
  10978.     AL = logical port (01h COM1, 02h COM2)
  10979.     DX = physical port number
  10980. Return: AX = status
  10981.         0000h successful
  10982.         FFFFh failed
  10983. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  10984. --------S-1420-------------------------------
  10985. INT 14 - MultiDOS Plus - INITIALIZE PORT
  10986.     AH = 20h
  10987.     AL = port parameters (see #0176 at AH=00h"SERIAL")
  10988.     DX = port number (0-3)
  10989. Return: AH = status
  10990.         00h successful
  10991.         41h no such port
  10992.         64h monitor mode already active
  10993. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  10994. --------S-1420-------------------------------
  10995. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  10996.     AH = 20h
  10997.     DX = port number
  10998. Return: AX = number of bytes in output buffer
  10999. SeeAlso: AH=0Ah"PC-MOS"
  11000. --------S-1420------------------------------------
  11001. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  11002.     AH = 20h
  11003.     CX = channel number (00h COM1, 01h COM2, ...)
  11004.     DS:BX -> buffer with communications parameter (see #0223)
  11005. Return: AX = status
  11006.         0000h successful
  11007.         0001h invalid parameter
  11008. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  11009. --------S-1421-------------------------------
  11010. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  11011.     AH = 21h
  11012.     AL = character
  11013.     DX = port number
  11014. Notes:    the given character is inserted at the end of the receive buffer as if
  11015.       it had just arrived from the serial port; all normal receive
  11016.       processing (XON/XOFF, ^C/^K) is performed on the character
  11017.     fully re-entrant
  11018. SeeAlso: AH=20h"X00"
  11019. --------S-1421-------------------------------
  11020. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  11021.     AH = 21h
  11022.     DX = physical port number
  11023. Return: AX = status
  11024.         0000h successful
  11025.         FFFFh failed
  11026. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  11027. --------S-1421-------------------------------
  11028. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  11029.     AH = 21h
  11030.     AL = character to send
  11031.     DX = port number
  11032. Return: AH = status (see #0226)
  11033. Note:    monitor mode must have been turned on with AH=24h before calling
  11034. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  11035.  
  11036. (Table 0226)
  11037. Values for MultiDOS Plus status:
  11038.  00h    successful
  11039.  39h    no DSR or CTS
  11040.  3Ch    no DSR
  11041.  3Bh    no CTS
  11042.  41h    no such port
  11043.  42h    monitor mode not active
  11044.  97h    timed out
  11045. --------S-1421-------------------------------
  11046. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  11047.     AH = 21h
  11048.     AL = char to send
  11049.     DX = port number
  11050.     SI = timeout in timer ticks (0000h = default)
  11051. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  11052.       operating system by The Software Link, Inc.
  11053. SeeAlso: AH=01h,AH=0Eh"PC/MOS",AH=22h"PC-MOS"
  11054. --------S-1421------------------------------------
  11055. INT 14 - HUNTER 16 - EXTENDED CONTROL
  11056.     AH = 21h
  11057.     AL = command
  11058.         01h force transmission of buffer
  11059.         02h clear transmit buffer
  11060.         03h clear receive buffer
  11061.     DX = port (00h COM1, 01h COM2)
  11062. Return: AH = extended status
  11063. Desc:    executes the command on the selected port
  11064. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  11065. --------S-1422-------------------------------
  11066. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  11067.     AH = 22h
  11068.     AL = logical port (01h COM1, 02h COM2)
  11069. Return: AX = status (0000h successful)
  11070. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  11071. --------S-1422-------------------------------
  11072. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  11073.     AH = 22h
  11074.     DX = port number
  11075. Return: AH = status (see also AH=21h"MultiDOS")
  11076.         00h successful
  11077.         AL = character
  11078.         3Dh framing and parity error
  11079.         3Eh overrun error
  11080.         3Fh framing error
  11081.         40h parity error
  11082.         96h ring buffer overflow
  11083. Note:    if no character is available, this function waits until a character
  11084.       arrives or an implementation-dependent timeout elapses
  11085. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  11086. --------S-1422-------------------------------
  11087. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  11088.     AH = 22h
  11089.     DX = port number
  11090.     SI = timeout in timer ticks (0000h = default)
  11091. Return: AH = port status (see also #0180 at AH=03h)
  11092.          bit 7 = 1 indicates time-out
  11093.     AL = character received
  11094. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  11095.       operating system by The Software Link, Inc.
  11096. SeeAlso: AH=02h,AH=0Fh"PC-MOS",AH=21h"PC-MOS"
  11097. --------S-1422------------------------------------
  11098. INT 14 - HUNTER 16 - EXTENDED STATUS
  11099.     AH = 22h
  11100.     DX = port (00h COM1, 01h COM2)
  11101. Return: AH = extended status
  11102.     BX = number of characters in input buffer
  11103.     CX = number of characters in output buffer
  11104. Desc:    returns the most recent Extended Status code for the port
  11105. SeeAlso: AH=21h"HUNTER"
  11106. --------S-1423-------------------------------
  11107. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  11108.     AH = 23h
  11109.     AL = logical port (01h COM1, 02h COM2)
  11110.     DH = user ID
  11111.     DL = process ID (DH,DL both FFh for current task)
  11112. Return: AL = MW386 port mode (see #0227)
  11113.     CX = MW386 port number
  11114.     DH = owner's user ID
  11115.     DL = owner's task ID
  11116. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  11117.  
  11118. Bitfields for MW386 port mode:
  11119. Bit(s)    Description    (Table 0227)
  11120.  0    port is shared (spooler only)
  11121.  1    port is spooled instead of direct (spooler only)
  11122.  2    port is assigned as logical COM device, not in spooler
  11123.  3    port is free
  11124. --------S-1423-------------------------------
  11125. INT 14 - MultiDOS Plus - GET PORT STATUS
  11126.     AH = 23h
  11127.     DX = port number
  11128. Return: AH = line status (see #0180 at AH=03h)
  11129.     AL = modem status (see #0181 at AH=03h)
  11130. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  11131. --------S-1423-------------------------------
  11132. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  11133.     AH = 23h
  11134.     DX = port number
  11135.     BX = TCB segment/selector address of owner task
  11136. Return: nothing
  11137. SeeAlso: AH=0Dh"PC-MOS"
  11138. --------S-1423------------------------------------
  11139. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  11140.     AH = 23h
  11141.     BH = handshake line to set (00h RTS, 01h DTR)
  11142.     BL = new level (00h low, 01h high)
  11143. Desc:    sets the handshake lines of COM1 to the desired level
  11144. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  11145. --------S-1424-------------------------------
  11146. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  11147.     AH = 24h
  11148.     CX = physical I/O port number
  11149.     DS:DX -> configuration table (see #0228)
  11150. Return: AH = 00h
  11151. Note:    invalid port numbers are merely ignored
  11152. SeeAlso: INT 17/AH=96h
  11153.  
  11154. Format of Alloy MW386 configuration table:
  11155. Offset    Size    Description    (Table 0228)
  11156.  00h    BYTE    baud rate (see #0229)
  11157.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  11158.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  11159.  03h    BYTE    stop bits (00h=1, 01h=2)
  11160.  04h    BYTE    receive flow control
  11161.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  11162.  05h    BYTE    transmit flow control (as for receive)
  11163.  
  11164. (Table 0229)
  11165. Values for Alloy MW386 baud rate:
  11166.  00h    38400
  11167.  01h    19200
  11168.  02h    9600
  11169.  03h    7200
  11170.  04h    4800
  11171.  05h    3600
  11172.  06h    2400
  11173.  07h    2000
  11174.  08h    1200
  11175.  09h    600
  11176.  0Ah    300
  11177.  0Bh    150
  11178.  0Ch    134.5
  11179. --------S-1424-------------------------------
  11180. INT 14 - MultiDOS Plus - SET MONITOR MODE
  11181.     AH = 24h
  11182.     AL = port status storage
  11183.         00h single status for entire receive buffer
  11184.         01h separate status kept for each byte in receive buffer
  11185.     DX = port number
  11186. Return: AH = status
  11187.         00h successful
  11188.         3Ah invalid status storage specified
  11189.         41h no such port
  11190.         64h monitor mode already active
  11191. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  11192.       port
  11193. SeeAlso: AH=20h"MultiDOS",AH=25h
  11194. --------S-1424-------------------------------
  11195. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  11196.     AH = 24h
  11197. Return: ???
  11198. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  11199.       operating system by The Software Link, Inc.
  11200. --------S-1424------------------------------------
  11201. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  11202.     AH = 24h
  11203.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  11204. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  11205. --------S-1425-------------------------------
  11206. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  11207.     AH = 25h
  11208.     AL = function
  11209.         00h only clear buffers
  11210.         01h clear buffers and deactivate
  11211.     DX = port number
  11212. Return: AH = status
  11213.         00h successful
  11214.         3Ah invalid function
  11215.         41h no such port
  11216.         42h monitor mode not active
  11217. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  11218. --------S-1425------------------------------------
  11219. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  11220.     AH = 25h
  11221.     AL = new state of RS232 drivers (00h off, 01h on)
  11222. Note:    this function can be used to save power by turning off the RS232 
  11223.       drivers.  It can also be used to turn on the RS232 drivers before
  11224.       connecting to a remote system to avoid "garbage" while the drivers
  11225.       turn on.
  11226. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  11227. --------S-1426------------------------------------
  11228. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  11229.     AH = 26h
  11230.     AL = 00h enable RI power up
  11231.         else disable RI power up
  11232. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  11233. --------S-1427-------------------------------
  11234. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  11235.     AH = 27h
  11236.     DX = port number
  11237. Return: AH = status
  11238.         00h successful
  11239.         41h no such port
  11240.         42h monitor mode not active
  11241.     AL = number of characters in receive buffer
  11242. --------S-1427------------------------------------
  11243. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  11244.     AH = 27h
  11245.     AL = number of extended protocols installed (since last call)
  11246. Return: AL = total number installed, including new ones
  11247. Desc:    Returns the number of extended communication protocols installed
  11248. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  11249. --------S-1428------------------------------------
  11250. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  11251.     AH = 28h
  11252.     AL = protocol handle
  11253.     DS:BX -> 8 character buffer for protocol name
  11254. Return:    AH = status
  11255.         00h successful
  11256.         DS:BX buffer filled with the protocol name
  11257.         FFh failed
  11258. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  11259. --------S-1429------------------------------------
  11260. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  11261.     AH = 29h
  11262.     DS:BX -> buffer containing the protocol name
  11263. Return: AH = status 
  11264.         00h successful
  11265.         AL = handle
  11266.         FFh failed
  11267. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  11268. --------S-142A------------------------------------
  11269. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  11270.     AH = 2Ah
  11271.     AL = protocol handle
  11272. Return: AH = status
  11273.         00h successful
  11274.         FFh failed
  11275.     AL = menu handle
  11276. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  11277. --------S-142B------------------------------------
  11278. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  11279.     AH = 2Bh
  11280.     AL = protocol handle
  11281.     DS:BX -> buffer for extended protocol parameters
  11282. Return: AH = status    
  11283.         00h successful
  11284.         DS:BX buffer filled with extended parameters
  11285.         FFh failed
  11286. SeeAlso: AH=2Ah"HUNTER"
  11287. --------S-142C00----------------------------------
  11288. INT 14 - HUNTER 16 - GET DTR
  11289.     AX = 2C00h
  11290. Return: AH = 00h
  11291.     BL = current state
  11292.         00h     normal DTR operation
  11293.         else DTR is forced high
  11294. Desc:    Indicates whether the DTR signal on COM1 is forced high
  11295. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  11296.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  11297. SeeAlso: AH=2Ch"SET DTR"
  11298. --------S-142C------------------------------------
  11299. INT 14 - HUNTER 16 - SET DTR
  11300.     AH = 2Ch
  11301.     AL nonzero
  11302.     BL = new state
  11303.         00h     normal operation
  11304.         else force DTR high
  11305. Return: AH = 00h
  11306. Desc:    determine whether the DTR signal on COM1 should be forced high
  11307. SeeAlso: AX=2C00h
  11308. --------S-1456-------------------------------
  11309. INT 14 U - BWCOM14 - INSTALLATION CHECK
  11310.     AH = 56h
  11311. Return: CX = 0001h if installed
  11312. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  11313.       connected to the serial port) distributed as part of the
  11314.       Beame&Whiteside BW-NFS package
  11315. SeeAlso: AH=57h,AH=58h
  11316. --------S-1457-------------------------------
  11317. INT 14 U - BWCOM14 - INITIALIZE
  11318.     AH = 57h
  11319.     DL = port number
  11320. Return: AL = initialization status (00h successful, 01h already initialized)
  11321.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  11322. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  11323.       port will be handled by BWCOM14 until AH=58h is called
  11324. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  11325. --------S-1458-------------------------------
  11326. INT 14 U - BWCOM14 - SHUTDOWN
  11327.     AH = 58h
  11328. Return: CX = status (0001h successful, 0002h not initialized)
  11329. Note:    after this call, BWCOM14 will no longer redirect the COM port
  11330. SeeAlso: AH=56h,AH=57h
  11331. --------N-146F--BXFFFE-----------------------
  11332. INT 14 U - Connection Manager - ???
  11333.     AH = 6Fh
  11334.     BX = FFFEh
  11335.     ???
  11336. Return: ???
  11337. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  11338.       serial ports over an IPX or NetBIOS-based network
  11339. --------N-146F--BXFFFF-----------------------
  11340. INT 14 - Connection Manager - INSTALLATION CHECK
  11341.     AH = 6Fh
  11342.     BX = FFFFh
  11343. Return: DX:BX -> Connection Manager Communication Table if installed
  11344.     BX = FFFFh if not installed
  11345. SeeAlso: AH=0Dh/DX=FFFFh
  11346. --------S-147E-------------------------------
  11347. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  11348.     AH = 7Eh
  11349.     AL = code assigned to external application (80h-BFh)
  11350.         80h reserved for communications FOSSIL
  11351.         81h video FOSSIL
  11352.         82h reserved for keyboard FOSSIL
  11353.         83h reserved for system FOSSIL
  11354.     ES:DX -> entry point
  11355. Return: AX = 1954h
  11356.     BL = code assigned to application (same as input AL)
  11357.     DH = 00h failed
  11358.          01h successful
  11359. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  11360. --------S-147F-------------------------------
  11361. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  11362.     AH = 7Fh
  11363.     AL = code assigned to external application
  11364.     ES:DX -> entry point
  11365. Return: AX = 1954h
  11366.     BL = code assigned to application (same as input AL)
  11367.     DH = 00h failed
  11368.          01h successful
  11369. SeeAlso: AH=7Eh
  11370. --------S-1480-------------------------------
  11371. INT 14 - COMMUNICATIONS FOSSIL
  11372.     AH = 80h
  11373. SeeAlso: AH=7Eh
  11374. --------S-1480-------------------------------
  11375. INT 14 - COURIERS.COM - INSTALLATION CHECK
  11376.     AH = 80h
  11377. Return: AH = E8h if loaded
  11378. Program: COURIERS is a TSR utility by PC Magazine
  11379. --------S-148000-----------------------------
  11380. INT 14 - ARTICOM - INSTALLATION CHECK
  11381.     AX = 8000h
  11382. Return: AL = FFh if installed
  11383.         BH = major version
  11384.         BL = minor version
  11385. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  11386.       works on top of NetBIOS and allows modem/serial-port sharing by
  11387.       programs using INT 14 for serial I/O.
  11388. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  11389.       drivers
  11390. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  11391. --------S-148000-----------------------------
  11392. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  11393.     AX = 8000h
  11394.     DX = port number
  11395. Return: AX = code for last error (see #0230)
  11396.     BX = number of characters in output buffer
  11397.     CX = nubmer of characters in input buffer
  11398.     DX = state flag (see #0231)
  11399. Program: COMM-DRV is a universal serial communications driver by Willies'
  11400.       Computer Software Company, which supports standard INT 14 and
  11401.       FOSSIL calls as well as its own interfaces
  11402. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  11403.  
  11404. (Table 0230)
  11405. Values for COMM-DRV error code:
  11406.  00h    no error
  11407.  01h    buffer not set or attempted to change buffer for active port
  11408.  02h    port not active
  11409.  03h    transmit buffer full
  11410.  04h    receive buffer full
  11411.  05h    syntax error
  11412.  06h    invalid buffer size
  11413.  07h    invalid port
  11414.  08h    handler changed
  11415.  09h    invalid baud rate
  11416.  0Ah    invalid parity setting
  11417.  0Bh    invalid data length
  11418.  0Ch    invalid number of stop bits
  11419.  0Dh    invalid protocol number
  11420.  0Eh    IRQ changed
  11421.  0Fh    port changged
  11422.  10h    invalid threshold setting
  11423.  11h    invalid IRQ number
  11424.  12h    interrupts not enabled
  11425.  13h    invalid break syntax
  11426.  14h    fatal error
  11427.  15h    CTS error
  11428.  16h    invalid RS232 I/O port address
  11429.  17h    environment variable not set
  11430.  18h    error on IOCTL call
  11431.  19h    error during atexit cleanup
  11432.  1Ah    error mapping for direct calls
  11433.  1Bh    error opening device
  11434.  1Ch    unable to allocate memory
  11435.  1Dh    error on external micro card
  11436.  1Eh    card changed error
  11437.  1Fh    card type error
  11438.  20h    not supported
  11439.  21h    parent port error
  11440.  22h    card command buffer full
  11441.  23h    no subdevice for this port
  11442.  24h    unknown error
  11443.  25h    external card busy
  11444.  26h    no more timers available
  11445.  27h    INT 14 vector changed
  11446.  28h    INT 08 vector changed
  11447.  29h    DPMI error
  11448.  2Ah    TSR buffer too small (or nonexistent)
  11449.  2Bh    out of asynchronous resources
  11450.  2Ch    out of timer resources
  11451.  2Dh    out of "other" timer resources
  11452.  2Eh    file I/O error
  11453.  2Fh    hardware memory > 64K
  11454.  
  11455. Bitfields for state flag :
  11456. Bit(s)    Description    (Table 0231)
  11457.  0    port is active
  11458.  1    output throttled (XOFF received, or DSR or CTS reset)
  11459.  2    input throttled (XOFF sent, or DTR or RTS reset)
  11460. --------S-148001-----------------------------
  11461. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  11462.     AX = 8001h
  11463. Return: AX = error code, if error (see #0233)
  11464. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  11465. Index:    uninstall;ARTICOM
  11466. --------S-148001-----------------------------
  11467. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  11468.     AX = 8001h
  11469.     DX = port number
  11470. Return: BX:DI -> Port Control Block (see #0240)
  11471. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  11472. --------S-148002-----------------------------
  11473. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  11474.     AX = 8002h
  11475.     ES:DI -> buffer for redirector status structure (see #0232)
  11476. Return: AX = error code, if error (see #0233)
  11477. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  11478.  
  11479. Format of ARTICOM redirector status:
  11480. Offset    Size    Description    (Table 0232)
  11481.  00h    WORD    redirector major and minor version numbers
  11482.  02h    WORD    redirectable ports found
  11483.  04h    WORD    redirectable ports + local ports found
  11484.  06h    WORD    redirector internal buffer size
  11485.  08h    WORD    maximum servers maintained
  11486.  0Ah    WORD    number of adapters found
  11487. --------S-148002-----------------------------
  11488. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  11489.     AX = 8002h
  11490.     DX = port number
  11491. Return: AH bit 7 set on error
  11492.     AH bit 7 clear if successful
  11493.         BX:DI -> Port Control Block (see #0240) (modifyable portion only)
  11494. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  11495. --------S-148003-----------------------------
  11496. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  11497.     AX = 8003h
  11498.     CX = error number to translate (see #0233)
  11499. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  11500. SeeAlso: AX=8000h
  11501.  
  11502. (Table 0233)
  11503. Values for ARTICOM error codes:
  11504.  00h    "No error"
  11505.  01h    "An invalid port number was specified"
  11506.  02h    "Port is already redirected"
  11507.  03h    "Too many ports redirected"
  11508.  04h    "Cannot locate the server"
  11509.  05h    "Server is busy"
  11510.  06h    "Access denied"
  11511.  07h    "Resource in use"
  11512.  08h    "Resource in use - request queued"
  11513.  09h    "No such resource"
  11514.  0Ah    "Invalid username/password pair"
  11515.  0Bh    "Noncompatible version number"
  11516.  0Ch    "Can't remove from memory"
  11517.  0Dh    "Bad NETBIOS adapter number"
  11518.  0Eh    "No more entries in list"
  11519.  0Fh    "Resource is not available at this time"
  11520.  10h    "Invalid value to INT 14 call"
  11521. --------S-148003-----------------------------
  11522. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  11523.     AX = 8003h
  11524.     DX = port number
  11525. Return: AX = number of characters in input buffer
  11526.     BX = input buffer size
  11527.     CX = number of characters in output buffer
  11528.     DX = output buffer size
  11529. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  11530. --------S-148004-----------------------------
  11531. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  11532.     AX = 8004h
  11533.     DX = port to redirect (COM1=0, COM2=1, ...)
  11534.     CH = attach type
  11535.     CL = adapter to use for attach, 0FFh to search all
  11536.     ES:DI -> attachment structure (see #0234)
  11537. Return: AX = error code, if error (see #0233)
  11538. Note:    The wildcard '*' is supported in the server and resource fields.  If
  11539.       wild cards are used then the first matching available server is
  11540.       attached.
  11541. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  11542.  
  11543. Format of ARTICOM attachment structure:
  11544. Offset    Size    Description    (Table 0234)
  11545.  00h 16 BYTEs    server to look for attach
  11546.  10h 16 BYTEs    attach to resource name
  11547.  20h 16 BYTEs    username for attach
  11548.  30h 16 BYTEs    password for username or resource
  11549.  40h    BYTE    attach type
  11550.         00h normal
  11551.         01h queue if resource is in use (not yet supported in v1.00)
  11552. --------S-148005-----------------------------
  11553. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  11554.     AX = 8005h
  11555.     DX = port to detach (COM1=0, COM2=1, ...)
  11556. Return: AX = error code, if error (see #0233)
  11557. Note:    only a previously attached resource can be detached
  11558. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  11559. --------S-148006-----------------------------
  11560. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  11561.     AX = 8006h
  11562.     BX = remote port (COM1=0, COM2=1, ...)
  11563.     CL = adapter number, FFh to try all adapters
  11564.     ES:DI -> resource information structure (see #0235)
  11565.     DS:SI -> 16 byte server name. See note.
  11566. Return: AX = error code, if error (see #0233)
  11567.     BX = next remote port, recall to get next resource info
  11568. Note:    Wild cards supported in both the resource field and server name
  11569.       string DS:SI. If wild cards used then first matching available
  11570.       resource information is searched. Set the resource field to FFh to
  11571.       return all resources.
  11572. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  11573.  
  11574. Format of ARTICOM resource information structure:
  11575. Offset    Size    Description    (Table 0235)
  11576.  00h    BYTE    00h = free, else used
  11577.  01h 16 BYTEs    resource name
  11578.  11h 16 BYTEs    username of resource user
  11579.  21h    WORD    amount of time used
  11580.  23h    WORD    amount of time remaining
  11581.  53h 48 BYTEs    description of resource
  11582.  93h 64 BYTEs    initialization string for modem
  11583.  B3h 32 BYTEs    dial string for modem
  11584.  D3h 32 BYTEs    hang-up string for modem
  11585. --------S-148007-----------------------------
  11586. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  11587.     AX = 8007h
  11588.     DX = port index (COM1=0, COM2=1, ...)
  11589.     ES:DI -> buffer for port information structure (see #0236)
  11590. Return: CF clear if redirection info returned and port is redirected
  11591.     CF set if not a redirected port
  11592.     AX = error code, if error (see #0233)
  11593. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  11594.  
  11595. Format of ARTICOM port information structure:
  11596. Offset    Size    Description    (Table 0236)
  11597.  00h 16 BYTEs    server name resource is on
  11598.  10h    BYTE    adapter number server is on
  11599.  11h 16 BYTEs    resource name
  11600.  21h    WORD    remote port index, use to get additional information
  11601.  23h    WORD    buffer size
  11602.  25h    WORD    baud rate (see #0237)
  11603.  26h    BYTE    modem status register
  11604.  27h    BYTE    modem control register
  11605.  28h    BYTE    line status register
  11606.  29h    BYTE    line control register
  11607.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  11608.  2Bh    WORD    send timeout in ticks
  11609.  2Dh    WORD    receive timeout in ticks
  11610.  2Fh    WORD    time used on remote port
  11611.  31h    WORD    time left before timeout
  11612.  33h    BYTE    if server changes allowed?
  11613.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  11614.  
  11615. (Table 0237)
  11616. Values for ARTICOM baud rate:
  11617.  00h    110
  11618.  01h    150
  11619.  02h    300
  11620.  03h    600
  11621.  04h    1200
  11622.  05h    2400
  11623.  06h    4800
  11624.  07h    9600
  11625.  08h    19200
  11626.  09h    38400
  11627.  0Ah    57600
  11628.  0Bh    115200
  11629.  0Ch    134.5
  11630.  0Dh    1800
  11631.  0Eh    2000
  11632.  0Fh    3600
  11633.  10h    7200
  11634. --------S-148008-----------------------------
  11635. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  11636.     AX = 8008h
  11637.     BX = server index (0,1,...)
  11638.     ES:DI -> server name structure (see #0238)
  11639. Return: AX = error code, if error (see #0233)
  11640.     BX = next remote port, repeat call to get next available server
  11641. Note:    the wildcard '*' is supported in the server name field.     Set the
  11642.       server name to FFh to search for all servers.
  11643. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  11644.  
  11645. Format of ARTICOM server name structure:
  11646. Offset     Size      Description    (Table 0238)
  11647.   00h 16 BYTEs      (call) ASCIZ server name
  11648.   10h     BYTE      (return) the adapter server is found
  11649. --------S-148009-----------------------------
  11650. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  11651.     AX = 8009h
  11652.     BX = send timeout in ticks
  11653.     CX = receive timeout in ticks
  11654.     DX = port index (COM1=0, COM2=1, ...)
  11655. Return: nothing
  11656. SeeAlso: AX=8000h,AX=800Ah
  11657. --------S-14800A-----------------------------
  11658. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  11659.     AX = 800Ah
  11660.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  11661.     DX = port index (COM1=0, COM2=1, ...)
  11662. Return: AX = error code, if error (see #0233)
  11663. Note:    for attached ports only!
  11664. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  11665. --------S-148025-----------------------------
  11666. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  11667.     AX = 8025h
  11668.     DS:DX -> address of trap function (see #0239) to call on read/write
  11669. Note:    setting the vector to a user function allows the redirector's activity
  11670.       to be monitored.
  11671. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  11672.  
  11673. (Table 0239)
  11674. Values ARTICOM trap function is called with:
  11675.     AH = operation
  11676.         80h reading character
  11677.         81h writing character
  11678.     AL = character
  11679. Return: AX must be preserved
  11680.     far JUMP to old trap function (see AX=8035h)
  11681. --------S-148035-----------------------------
  11682. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  11683.     AX = 8035h
  11684. Return: ES:BX -> address of current send/receive routine
  11685. Note:    this function returns the address of the routine which is called
  11686.       inside A-REDIR.EXE each time a character is received or sent on the
  11687.       active COM port.
  11688. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  11689. --------S-1481-------------------------------
  11690. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  11691.     AH = 81h
  11692.     AL = port number (1-4)
  11693. Return: AH = 00h port available
  11694.          01h port exists but already in use
  11695.          02h port nonexistent
  11696. Program: COURIERS is a TSR utility by PC Magazine
  11697. SeeAlso: AH=83h,AH=8Dh
  11698. --------S-1481-------------------------------
  11699. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  11700.     AH = 81h
  11701.     BX:DI -> port control block (see #0240)
  11702.     DX = port number
  11703. Return: AH = line status register (see #0180)
  11704.         error if bit 7 set
  11705.     AL = modem status register (see #0181)
  11706. Program: COMM-DRV is a universal serial communications driver by Willies'
  11707.       Computer Software Company, which supports standard INT 14 and
  11708.       FOSSIL calls as well as its own interfaces
  11709. Note:    AX=8001h should be called first to fill in the port control block
  11710. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  11711.  
  11712. Format of COMM-DRV port control block:
  11713. Offset    Type    Description    (Table 0240)
  11714.  00h    WORD    port IO address
  11715.  02h    WORD    port IRQ
  11716.  04h    WORD    baud rate
  11717.  06h    WORD    parity
  11718.  08h    WORD    data bits
  11719.  0Ah    WORD    stop bits
  11720.  0Ch    WORD    break status (0000h off)
  11721.  0Eh    WORD    flow control protocol
  11722.  10h    BYTE    input block
  11723.  11h    BYTE    output block
  11724.  12h    WORD    low threshold
  11725.  14h    WORD    high threshold
  11726.  16h    WORD    segment of buffer
  11727.  18h    WORD    offset of buffer
  11728.  1Ah    WORD    input buffer length
  11729.  1Ch    WORD    output buffer length
  11730.  1Eh    BYTE    auxiliary address
  11731.  1Fh    BYTE    spare
  11732.  20h  4 WORDs    spares
  11733. --------V-148100-----------------------------
  11734. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  11735.     AX = 8100h
  11736.     ES:DI -> buffer for VFOSSIL information (see #0241)
  11737. Return: AX = 1954h if installed
  11738. SeeAlso: AH=7Eh,AX=8101h
  11739.  
  11740. Format of VFOSSIL information:
  11741. Offset    Size    Description    (Table 0241)
  11742.  00h    WORD    size of information in bytes, including this field
  11743.  02h    WORD    VFOSSIL major version
  11744.  04h    WORD    VFOSSIL revision level
  11745.  06h    WORD    highest VFOSSIL application function supported
  11746. --------V-148101-----------------------------
  11747. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  11748.     AX = 8101h
  11749.     ES:DI -> buffer for application function table (see #0242)
  11750.     CX = length of buffer in bytes
  11751. Return: AX = 1954h if installed
  11752.         BH = highest VFOSSIL application function supported
  11753. Note:    the number of initialized pointers in the application function table
  11754.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  11755.       will be initialized
  11756. SeeAlso: AX=8102h
  11757.  
  11758. Format of VFOSSIL application function table:
  11759. Offset    Size    Description    (Table 0242)
  11760.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0247)
  11761.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0248)
  11762.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0249)
  11763.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0250)
  11764.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0251)
  11765.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0252)
  11766.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  11767.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0254)
  11768.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0255)
  11769.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0256)
  11770.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0257)
  11771.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0258)
  11772.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  11773.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  11774.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  11775.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  11776.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  11777.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  11778.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  11779.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  11780.  
  11781. Format of VFOSSIL video mode data structure:
  11782. Offset    Size    Description    (Table 0243)
  11783.  00h    WORD    length of structure including this field
  11784.  02h    BYTE    mode characteristics
  11785.         bit 0: clear if MDA, set otherwise
  11786.         bit 1: graphics mode
  11787.         bit 2: color disabled (black-and-white)
  11788.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  11789.  04h    WORD    number of text columns
  11790.  06h    WORD    number of text rows
  11791.  08h    WORD    reserved
  11792.  0Ah    WORD    reserved
  11793.  0Ch    DWORD    reserved
  11794.  
  11795. Format of VFOSSIL video configuration data:
  11796. Offset    Size    Description    (Table 0244)
  11797.  00h    WORD    structure length including this field
  11798.  02h    WORD    adapter type
  11799.         00h monochrome/printer
  11800.         01h CGA
  11801.         02h EGA
  11802.         03h VGA
  11803.         07h 8514/A
  11804.  04h    WORD    display type
  11805.         00h monochrome
  11806.         01h color
  11807.         02h enhanced color
  11808.         09h 8514
  11809.  06h    DWORD    adapter memory size
  11810.  
  11811. Format of VFOSSIL cursor type record:
  11812. Offset    Size    Description    (Table 0245)
  11813.  00h    WORD    cursor start line
  11814.  02h    WORD    cursor end line
  11815.  04h    WORD    cursor width (always 01h)
  11816.  06h    WORD    cursor attribute (FFFFh = hidden)
  11817.  
  11818. (Table 0246)
  11819. Values for VFOSSIL error code:
  11820.  0000h    successful
  11821.  0074h    internal VIO failure
  11822.  0163h    unsupported mode
  11823.  0166h    invalid row value
  11824.  0167h    invalid column value
  11825.  017Eh    buffer too small
  11826.  01A5h    invalid VIO parameter
  11827.  01B4h    invalid VIO handle
  11828.  
  11829. (Table 0247)
  11830. Call VioGetMode with:
  11831.     STACK:    WORD    VIO handle (must be 00h)
  11832.         DWORD    pointer to video mode data structure (see #0243)
  11833. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0246)
  11834. SeeAlso: #0248
  11835.  
  11836. (Table 0248)
  11837. Call VioSetMode with:
  11838.     STACK:    WORD    VIO handle (must be 00h)
  11839.         DWORD    pointer to video mode data structure (see #0243)
  11840. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0246)
  11841. SeeAlso: #0247
  11842.  
  11843. (Table 0249)
  11844. Call VioGetConfig with:
  11845.     STACK:    WORD    VIO handle (must be 00h)
  11846.         DWORD    pointer to video configuration data buffer (see #0244)
  11847. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0246)
  11848.  
  11849. (Table 0250)
  11850. Call VioWrtTTY with:
  11851.     STACK:    WORD    VIO handle (must be 00h)
  11852.         WORD    length of string
  11853.         DWORD    pointer to character string to be written to screen
  11854. Return: AX = error code (00h, 74h, 1B4h) (see #0246)
  11855. Notes:    write wraps at end of line and terminates if it reaches end of screen
  11856.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  11857.       not required to be reentrant; in non-ANSI mode, the function is
  11858.       reentrant and may be called from within an MS-DOS function call
  11859.  
  11860. (Table 0251)
  11861. Call VioGetANSI with:
  11862.     STACK:    WORD    VIO handle (must be 00h)
  11863.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  11864.             or 01h if ANSI is on
  11865. Return: AX = error code (00h, 74h, 1B4h) (see #0246)
  11866. SeeAlso: #0252
  11867.  
  11868. (Table 0252)
  11869. Call VioSetANSI with:
  11870.     STACK:    WORD    VIO handle (must be 00h)
  11871.         DWORD    pointer to WORD indicating new state of ANSI
  11872.             00h off, 01h on
  11873. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0246)
  11874. SeeAlso: #0251
  11875.  
  11876. (Table 0253)
  11877. Call VioGetCurPos with:
  11878.     STACK:    WORD    VIO handle (must be 00h)
  11879.         DWORD    pointer to WORD to hold current cursor column (0-based)
  11880.         DWORD    pointer to WORD to hold current cursor row (0-based)
  11881. Return: AX = error code (00h, 74h, 1B4h) (see #0246)
  11882. SeeAlso: #0254
  11883.  
  11884. (Table 0254)
  11885. Call VioSetCurPos with:
  11886.     STACK:    WORD    VIO handle (must be 00h)
  11887.         WORD    cursor column
  11888.         WORD    cursor row
  11889. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11890. Note:    if either coordinate is invalid, the cursor is not moved
  11891. SeeAlso: #0253
  11892.  
  11893. (Table 0255)
  11894. Call VioGetCurType with:
  11895.     STACK:    WORD    VIO handle (must be 00h)
  11896.         DWORD    pointer to cursor type record (see #0245)
  11897. Return: AX = error code (00h, 74h, 1B4h) (see #0246)
  11898. SeeAlso: #0256
  11899.  
  11900. (Table 0256)
  11901. Call VioSetCurType with:
  11902.     STACK:    WORD    VIO handle (must be 00h)
  11903.         DWORD    pointer to cursor type record (see #0245)
  11904. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0246)
  11905. SeeAlso: #0257
  11906.  
  11907. (Table 0257)
  11908. Call VioScrollUp with:
  11909.     STACK:    WORD    VIO handle (must be 00h)
  11910.         DWORD    pointer to char/attr cell for filling emptied rows
  11911.         WORD    number or rows to scroll (FFFFh = clear area)
  11912.         WORD    right column of scroll area
  11913.         WORD    bottom row of scroll area
  11914.         WORD    left column of scroll area
  11915.         WORD    top row of scroll area
  11916. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11917. SeeAlso: #0258,INT 10/AH=06h
  11918.  
  11919. (Table 0258)
  11920. Call VioScrollDn with:
  11921.     STACK:    WORD    VIO handle (must be 00h)
  11922.         DWORD    pointer to char/attr cell for filling emptied rows
  11923.         WORD    number or rows to scroll (FFFFh = clear area)
  11924.         WORD    right column of scroll area
  11925.         WORD    bottom row of scroll area
  11926.         WORD    left column of scroll area
  11927.         WORD    top row of scroll area
  11928. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11929. SeeAlso: #0257,INT 10/AH=07h
  11930.  
  11931. (Table 0259)
  11932. Call VioReadCellStr with:
  11933.     STACK:    WORD    VIO handle (must be 00h)
  11934.         WORD    column at which to start reading
  11935.         WORD    row at which to start reading
  11936.         DWORD    pointer to WORD containing length of buffer in bytes
  11937.             on return, WORD contains number of bytes actually read
  11938.         DWORD    pointer to buffer for cell string
  11939. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0246)
  11940.  
  11941. (Table 0260)
  11942. Call VioReadCharStr with:
  11943.     STACK:    WORD    VIO handle (must be 00h)
  11944.         WORD    column at which to start reading
  11945.         WORD    row at which to start reading
  11946.         DWORD    pointer to WORD containing length of buffer in bytes
  11947.             on return, WORD contains number of bytes actually read
  11948.         DWORD    pointer to buffer for character string
  11949. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0246)
  11950.  
  11951. (Table 0261)
  11952. Call VioWrtCellStr with:
  11953.     STACK:    WORD    VIO handle (must be 00h)
  11954.         WORD    column at which to start writing
  11955.         WORD    row at which to start writing
  11956.         WORD    length of cell string in bytes
  11957.         DWORD    pointer to cell string to write
  11958. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11959. Note:    write wraps at end of line and terminates if it reaches end of screen
  11960.  
  11961. (Table 0262)
  11962. Call VioWrtCharStr with:
  11963.     STACK:    WORD    VIO handle (must be 00h)
  11964.         WORD    column at which to start writing
  11965.         WORD    row at which to start writing
  11966.         WORD    length of character string
  11967.         DWORD    pointer to character string to write
  11968. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11969. Note:    write wraps at end of line and terminates if it reaches end of screen
  11970.  
  11971. (Table 0263)
  11972. Call VioWrtCharStrAttr with:
  11973.     STACK:    WORD    VIO handle (must be 00h)
  11974.         DWORD    pointer to attribute to be applied to each character
  11975.         WORD    column at which to start writing
  11976.         WORD    row at which to start writing
  11977.         WORD    length of character string
  11978.         DWORD    pointer to character string to write
  11979. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11980. Note:    write wraps at end of line and terminates if it reaches end of screen
  11981.  
  11982. (Table 0264)
  11983. Call VioWrtNAttr with:
  11984.     STACK:    WORD    VIO handle (must be 00h)
  11985.         WORD    column at which to start writing
  11986.         WORD    row at which to start writing
  11987.         WORD    number of times to write attribute
  11988.         DWORD    pointer to display attribute to replicate
  11989. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  11990. Note:    write wraps at end of line and terminates if it reaches end of screen
  11991.  
  11992. (Table 0265)
  11993. Call VioWrtNCell with:
  11994.     STACK:    WORD    VIO handle (must be 00h)
  11995.         WORD    column at which to start writing
  11996.         WORD    row at which to start writing
  11997.         WORD    number of times to write cell
  11998.         DWORD    pointer to cell to replicate
  11999. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  12000. Note:    write wraps at end of line and terminates if it reaches end of screen
  12001.  
  12002. (Table 0266)
  12003. Call VioWrtNChar with:
  12004.     STACK:    WORD    VIO handle (must be 00h)
  12005.         WORD    column at which to start writing
  12006.         WORD    row at which to start writing
  12007.         WORD    number of times to write character
  12008.         DWORD    pointer to character to replicate
  12009. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0246)
  12010. Note:    write wraps at end of line and terminates if it reaches end of screen
  12011. --------V-148102-----------------------------
  12012. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  12013.     AX = 8102h
  12014. Return: AX = 1954h
  12015. Note:    terminates all operations; after this call, the video FOSSIL may either
  12016.       be removed from memory or reinitialized
  12017. SeeAlso: AX=8101h,AX=8103h
  12018. --------V-148103-----------------------------
  12019. INT 14 - VIDEO FOSSIL - UNINSTALL
  12020.     AX = 8103h
  12021. Return: AX = 1954h
  12022. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  12023. --------K-1482-------------------------------
  12024. INT 14 - KEYBOARD FOSSIL
  12025.     AH = 82h
  12026. SeeAlso: AH=7Eh
  12027. --------S-1482-------------------------------
  12028. INT 14 - COURIERS.COM - CONFIGURE PORT
  12029.     AH = 82h
  12030.     AL = port number (1-4)
  12031.     BX = speed (bps)
  12032.     CX = bit flags
  12033.         bit 0: enable input flow control
  12034.         bit 1: enable output flow control
  12035.         bit 2: use X.PC protocol (not yet implemented)
  12036. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  12037. --------S-1482-------------------------------
  12038. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  12039.     AH = 82h
  12040.     DX = port number
  12041. Return: AH bit 7 set on error
  12042.     AH bit 7 clear if successful
  12043. Desc:    reset the port to its state before the AH=81h initialization and unhook
  12044.       any interrupts used by the port
  12045. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  12046. ----------1483-------------------------------
  12047. INT 14 - SYSTEM FOSSIL
  12048.     AH = 83h
  12049. SeeAlso: AH=7Eh
  12050. --------S-1483-------------------------------
  12051. INT 14 - COURIERS.COM - START INPUT
  12052.     AH = 83h
  12053.     ES:BX -> circular input buffer
  12054.     CX = length of buffer
  12055.         (should be at least 128 bytes if input flow control enabled)
  12056. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  12057. --------S-1483-------------------------------
  12058. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  12059.     AH = 83h
  12060.     DX = port number
  12061.     AL = subfunction
  12062.         00h flush input buffer
  12063.         01h flush output buffer
  12064.         02h flush both buffers
  12065. Return: AH bit 7 set on error
  12066.     AH bit 7 clear if successful
  12067. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  12068. --------S-1484-------------------------------
  12069. INT 14 - COURIERS.COM - READ CHARACTER
  12070.     AH = 84h
  12071. Return: ZF set if no characters available
  12072.     ZF clear
  12073.        AL = character
  12074.        AH = modem status bits
  12075.         bit 7: set on input buffer overflow
  12076. SeeAlso: AH=02h,AH=86h,AH=89h
  12077. --------S-1484-------------------------------
  12078. INT 14 - COMM-DRV v14.0 - SEND PACKET
  12079.     AH = 84h
  12080.     CX = packet length in bytes
  12081.     DX = port number
  12082.     ES:DI -> packet to be sent
  12083. Return: AH = line status (see #0180)
  12084.         bit 7 set on error
  12085.     AL destroyed
  12086. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  12087. --------S-1485-------------------------------
  12088. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  12089.     AH = 85h
  12090. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  12091. --------S-1485-------------------------------
  12092. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  12093.     AH = 85h
  12094.     CX = length of packet in bytes
  12095.     DX = port number
  12096.     ES:DI -> buffer for packet
  12097. Return: AH = line status (see #0180)
  12098.         bit 7 set on error
  12099.     AL destroyed
  12100. Note:    this call requires that at least the requested number of bytes are
  12101.       already present in the input buffer, and will fail if there are
  12102.       fewer bytes available
  12103. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  12104. --------S-1486-------------------------------
  12105. INT 14 - COURIERS.COM - START OUTPUT
  12106.     AH = 86h
  12107.     ES:BX -> output buffer
  12108.     CX = length of output buffer
  12109. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  12110. --------S-1486-------------------------------
  12111. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  12112.     AH = 86h
  12113.     BL = maximum clock ticks to wait before signalling error on input func
  12114.     BH = maximum clock ticks to wait before signalling error on output
  12115.     DX = port number
  12116.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  12117.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  12118. Return: AH bit 7 set on error
  12119.     AH bit 7 clear if successful
  12120. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  12121.       returning an error when no data is available; functions 01h and 84h
  12122.       will wait for the output timeout before returning an error if there
  12123.       is no space to output the data
  12124. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  12125. --------S-1487-------------------------------
  12126. INT 14 - COURIERS.COM - OUTPUT STATUS
  12127.     AH = 87h
  12128. Return: AX = number of unsent characters
  12129. SeeAlso: AX=88h"COURIERS"
  12130. --------S-1487-------------------------------
  12131. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  12132.     AH = 87h
  12133.     DX = port number
  12134. Return: AH bit 7 set on error
  12135.     AH bit 7 clear if successful
  12136. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  12137. --------S-1488-------------------------------
  12138. INT 14 - COURIERS.COM - ABORT OUTPUT
  12139.     AH = 88h
  12140. SeeAlso: AH=09h,AH=85h"COURIERS"
  12141. --------S-1488-------------------------------
  12142. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  12143.     AH = 88h
  12144.     DX = port number
  12145. Return: AH bit 7 set on error
  12146.     AH bit 7 clear if successful
  12147. Program: COMM-DRV is a universal serial communications driver by Willies'
  12148.       Computer Software Company, which supports standard INT 14 and
  12149.       FOSSIL calls as well as its own interfaces
  12150. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  12151. --------S-1489-------------------------------
  12152. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  12153.     AH = 89h
  12154.     CL = character to send
  12155. SeeAlso: AH=01h,AH=84h"COURIERS"
  12156. --------S-1489-------------------------------
  12157. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  12158.     AH = 89h
  12159.     DX = port number
  12160. Return: AH bit 7 set on error
  12161.     AH bit 7 clear if successful
  12162. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  12163. --------S-148A-------------------------------
  12164. INT 14 - COURIERS.COM - SEND BREAK
  12165.     AH = 8Ah
  12166. SeeAlso: AH=89h"COURIERS",AH=FAh
  12167. --------S-148A-------------------------------
  12168. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  12169.     AH = 8Ah
  12170.     DX = port number
  12171. Return: AH bit 7 set on error
  12172.     AH bit 7 clear if successful
  12173. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  12174. --------S-148B-------------------------------
  12175. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  12176.     AH = 8Bh
  12177.     CX = bitmask of interrupt to process
  12178.         00h = deinstall
  12179.     BX:DI -> DWORD containing address of function to be called
  12180. Return: AH bit 7 clear if successful
  12181.     AH bit 7 set on error
  12182. --------S-148C-------------------------------
  12183. INT 14 - COURIERS.COM - SET SPEED
  12184.     AH = 8Ch
  12185.     BX = speed in bps
  12186. SeeAlso: AH=00h,AH=82h"COURIERS"
  12187. --------S-148C-------------------------------
  12188. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  12189.     AH = 8Ch
  12190.     AL = register offset
  12191.     DX = port number
  12192. Return: AH bit 7 set on error
  12193.     AH bit 7 clear if successful
  12194.         AL = contents of UART register
  12195. SeeAlso: AH=8Dh"COMM-DRV"
  12196. --------S-148D-------------------------------
  12197. INT 14 - COURIERS.COM - DECONFIGURE PORT
  12198.     AH = 8Dh
  12199. SeeAlso: AH=82h"COURIERS"
  12200. --------S-148D-------------------------------
  12201. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  12202.     AH = 8Dh
  12203.     AL = register offset
  12204.     BL = new value for UART register
  12205.     DX = port number
  12206. Return: AH bit 7 set on error
  12207.     AH bit 7 clear if successful
  12208. SeeAlso: AH=8Ch"COMM-DRV"
  12209. --------S-148E-------------------------------
  12210. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  12211.     AH = 8Eh
  12212.     CX = length of packet in bytes
  12213.     DX = port number
  12214.     ES:DI -> buffer for packet
  12215. Return: AH = line status (see #0180)
  12216.         bit 7 set on error (see AX=8000h"COMM-DRV")
  12217.     AL destroyed
  12218. Program: COMM-DRV is a universal serial communications driver by Willies'
  12219.       Computer Software Company, which supports standard INT 14 and
  12220.       FOSSIL calls as well as its own interfaces
  12221. Desc:    retrieve a packet from the input buffer without removing it from the
  12222.       buffer
  12223. Note:    this call requires that at least the requested number of bytes are
  12224.       already present in the input buffer, and will fail if there are
  12225.       fewer bytes available
  12226. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  12227. --------S-14A0-------------------------------
  12228. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  12229.     AH = A0h
  12230.     ES:BX -> ASCIZ internet host name
  12231.     CX = length of name
  12232. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0267)
  12233.     CL = session ID
  12234. Program: the Bridge Application Program Interface is a set of functions which
  12235.       makes many of the details of LAN communications transparent
  12236. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  12237. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  12238.  
  12239. (Table 0267)
  12240. Values for 3com BAPI return code:
  12241.  00h    successful
  12242.  01h    no characters written
  12243.  02h    no characters read
  12244.  03h    no such session
  12245.  04h    clearinghouse name not found
  12246.  05h    no response from host
  12247.  06h    no more sessions available
  12248.  07h    session aborted
  12249.  08h    invalid clearinghouse name
  12250.  09h    not supported
  12251.  0Ah    internal (general) network error
  12252.  0Bh    out of memory
  12253.  0Ch    invalid IP address
  12254. --------S-14A0--CXFFFF-----------------------
  12255. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  12256.     AH = A0h
  12257.     CX = FFFFh
  12258. Return: CF clear if successful
  12259.         AX = 5445h ('TE')
  12260.         CX <> FFFFh
  12261.         DX = port number
  12262.     CF set on error
  12263. Program: TES is a network serial port emulation program
  12264. SeeAlso: AH=A1h"TES"
  12265. --------S-14A1-------------------------------
  12266. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  12267.     AH = A1h
  12268.     DH = session ID (00h for external session managment)
  12269. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0267)
  12270.     AL destroyed (Novell TELAPI.EXE)
  12271. SeeAlso: AH=A0h"BAPI"
  12272. --------S-14A1-------------------------------
  12273. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  12274.     AH = A1h
  12275. Return: CX = number of active sessions
  12276.     ES:SI -> status array (see #0268)
  12277. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  12278.  
  12279. Format of Interconnections TES status array entry:
  12280. Offset    Size    Description    (Table 0268)
  12281.  00h    BYTE    status
  12282.  01h    WORD    offset of name
  12283. --------S-14A2-------------------------------
  12284. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  12285.     AH = A2h
  12286.     AL = character
  12287.     DH = session ID (00h for external session managment)
  12288. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0267)
  12289. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  12290. --------S-14A2-------------------------------
  12291. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  12292.     AH = A2h
  12293. Return: CX = number of servers
  12294.     ES:SI -> array of offsets from ES for server names
  12295. SeeAlso: AH=A1h"TES"
  12296. --------S-14A3-------------------------------
  12297. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  12298.     AH = A3h
  12299.     DH = session ID (00h for external session managment)
  12300. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0267)
  12301.     AL = character read or 00h if none available
  12302. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  12303. --------S-14A3-------------------------------
  12304. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  12305.     AH = A3h
  12306.     ES:SI -> ???
  12307. Return: CF clear if successful
  12308.         AX = 5445h ('TE')
  12309.         CX <> FFFFh
  12310.         DX = port number
  12311.     CF set on error
  12312. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  12313. --------S-14A4-------------------------------
  12314. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  12315.     AH = A4h
  12316.     CX = length of buffer in bytes
  12317.     DH = session ID (00h for external session managment)
  12318.     ES:BX -> buffer containing data
  12319. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0267)
  12320.     CX = number of bytes actually sent
  12321. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  12322. --------S-14A4-------------------------------
  12323. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  12324.     AH = A4h
  12325.     ???
  12326. Return: ???
  12327. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  12328. --------S-14A5-------------------------------
  12329. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  12330.     AH = A5h
  12331.     CX = length of buffer
  12332.     DH = session ID (00h for external session managment)
  12333.     ES:BX -> buffer for data
  12334. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0267)
  12335.     CX = number of bytes actually read
  12336. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  12337. SeeAlso: AH=A7h"BAPI",AX=FF02h
  12338. --------S-14A5-------------------------------
  12339. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  12340.     AH = A5h
  12341.     AL = session number
  12342. Return: ???
  12343. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  12344. --------S-14A6-------------------------------
  12345. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  12346.     AH = A6h
  12347.     DH = session ID (00h for external session managment)
  12348. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0267)
  12349. Desc:    generate a short break signal; if data delivery was turned off by the
  12350.       break, wait for the host to turn it on again
  12351. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  12352. --------S-14A6-------------------------------
  12353. INT 14 - Interconnections Inc. TES - DROP A SESSION
  12354.     AH = A6h
  12355.     AL = session number
  12356. Return: AH = status
  12357.         00h successful
  12358.         else error
  12359. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  12360. --------S-14A7-------------------------------
  12361. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  12362.     AH = A7h
  12363.     DH = session ID (00h for external session managment)
  12364. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0267)
  12365.     CX = number of bytes available for reading
  12366. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  12367. SeeAlso: AH=A5h"BAPI"
  12368. --------S-14A7-------------------------------
  12369. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  12370.     AH = A7h
  12371.     ???
  12372. Return: ???
  12373. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  12374. --------S-14A8-------------------------------
  12375. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  12376.     AH = A8h
  12377.     AL = 00h no visible response
  12378.     ES:SI -> ASCIZ command
  12379. Return: ???
  12380. --------N-14A8-------------------------------
  12381. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  12382.     AH = A8h
  12383.     DH = session ID???
  12384.     CH = subfunction
  12385.         02h ???
  12386.         0Dh ???
  12387.         0Fh ???
  12388.         10h ???
  12389.         11h ???
  12390.         28h ???
  12391.         else
  12392.         Return: AH = 09h (not supported)
  12393. Return: AH = return code (see #0267)
  12394.         00h successful
  12395.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  12396.         CL = ??? (7Fh/FFh) (subfunction 28h)
  12397.         CX = ??? (subfunction 11h)
  12398. SeeAlso: AH=A9h"TelAPI"
  12399. --------N-14A9-------------------------------
  12400. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  12401.     AH = A9h
  12402.     DH = session ID???
  12403.     CH = subfunction
  12404.         02h ???
  12405.         0Dh ???
  12406.         0Fh ???
  12407.         10h ???
  12408.         11h ???
  12409.         28h ???
  12410.         else
  12411.         Return: AH = 09h (not supported)
  12412.     ???
  12413. Return: AH = return code (see #0267)
  12414.     ???
  12415. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  12416. --------V-14AA01-----------------------------
  12417. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  12418.     AX = AA01h
  12419. Return: AX = FFFFh if installed, unchanged
  12420.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  12421.     CX = resident segment (v3.1+)
  12422. Program: DimVGA is a public domain screen saver by Menno Pieters
  12423. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  12424. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  12425. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  12426. SeeAlso: INT 2F/AX=E300h
  12427. Index:    screen saver;DimVGA
  12428. --------V-14AA02-----------------------------
  12429. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  12430.     AX = AA02h
  12431.     BX = number of clock ticks
  12432. Return: AX = FFFFh
  12433. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  12434.       when more than 256 colors can be used DimVGA will blank the screen.
  12435. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  12436. Index:    screen saver;DimVGA
  12437. --------V-14AA03-----------------------------
  12438. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  12439.     AX = AA03h
  12440.     BX = percentage remaining visible (1-99)
  12441. Return: AX = FFFFh
  12442. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  12443. Index:    screen saver;DimVGA
  12444. --------V-14AA04-----------------------------
  12445. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  12446.     AX = AA04h
  12447. Return: AX = FFFFh
  12448.     BX = current time-out in clock ticks
  12449. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  12450. Index:    screen saver;DimVGA
  12451. --------V-14AA05-----------------------------
  12452. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  12453.     AX = AA05h
  12454. Return: AX = FFFFh
  12455.     BX = current dimming factor
  12456. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  12457. Index:    screen saver;DimVGA
  12458. --------V-14AA06-----------------------------
  12459. INT 14 - DimVGA v2.0+ - DISABLE
  12460.     AX = AA06h
  12461. Return: AX = FFFFh
  12462. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  12463. Index:    screen saver;DimVGA
  12464. --------V-14AA07-----------------------------
  12465. INT 14 - DimVGA v2.0+ - ENABLE
  12466.     AX = AA07h
  12467. Return: AX = FFFFh
  12468. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  12469. Index:    screen saver;DimVGA
  12470. --------V-14AA08-----------------------------
  12471. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  12472.     AX = AA08h
  12473. Return: AX = FFFFh
  12474. Note:    this function will dim the screen immediately, even if DimVGA is
  12475.       currently disabled
  12476. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  12477. Index:    screen saver;DimVGA
  12478. --------V-14AA09-----------------------------
  12479. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  12480.     AX = AA09h
  12481. Return: AX = FFFFh
  12482. Note:    this function will undim the screen immediately, even if DimVGA is
  12483.       currently disabled
  12484. SeeAlso: AX=AA01h,AX=AA08h
  12485. Index:    screen saver;DimVGA
  12486. --------V-14AA0A-----------------------------
  12487. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  12488.     AX = AA0Ah
  12489. Return: AX = FFFFh
  12490.     BX = current state (0000h disabled, 0001h enabled)
  12491. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  12492. Index:    screen saver;DimVGA
  12493. --------V-14AA0B-----------------------------
  12494. INT 14 - DimVGA v2.1+ - SET HOTKEY
  12495.     AX = AA0Bh
  12496.     BH = shift state (see #0269)
  12497.     BL = keyboard scancode
  12498. Return: AX = FFFFh
  12499. SeeAlso: AX=AA01h,AX=AA0Ch
  12500. Index:    screen saver;DimVGA
  12501.  
  12502. Bitfields for DimVGA hotkey shift state:
  12503. Bit(s)    Description    (Table 0269)
  12504.  7-4    unused
  12505.  3    Alt key pressed
  12506.  2    Ctrl key pressed
  12507.  1    Left shift key pressed
  12508.  0    Right shift key pressed
  12509. --------V-14AA0C-----------------------------
  12510. INT 14 - DimVGA v2.1+ - GET HOTKEY
  12511.     AX = AA0Ch
  12512. Return: AX = FFFFh
  12513.     BH = shift state (see #0269)
  12514.     BL = keyboard scancode
  12515. SeeAlso: AX=AA01h,AX=AA0Bh
  12516. Index:    screen saver;DimVGA
  12517. --------V-14AA0D-----------------------------
  12518. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  12519.     AX = AA0Dh
  12520.     BX = new mouse check status
  12521.         0000h mouse checking off
  12522.         0001h mouse checking on
  12523. Return: AX = FFFFh
  12524. Note:    before switching mouse checking on, a mouse driver should be
  12525.       found in memory. If no mouse driver is found, mouse checking
  12526.       should be switched off (resident DimVGA does not check by itself).
  12527. SeeAlso: AX=AA01h,AX=AA0Eh
  12528. Index:    screen saver;DimVGA
  12529. --------V-14AA0E-----------------------------
  12530. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  12531.     AX = AA0Eh
  12532. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  12533. SeeAlso: AX=AA01h,AX=AA0Dh
  12534. Index:    screen saver;DimVGA
  12535. --------V-14AA0F-----------------------------
  12536. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  12537.     AX = AA0Fh
  12538.     BX = locking status
  12539.         0000h disabled
  12540.         0001h enabled
  12541. Return: AX = FFFFh
  12542. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  12543. Index:    screen saver;DimVGA
  12544. --------V-14AA10-----------------------------
  12545. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  12546.     AX = AA10h
  12547. Return: BX = locking status (0000h disabled, 0001h enabled)
  12548. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  12549. Index:    screen saver;DimVGA
  12550. --------S-14AF00BXAAAA-----------------------
  12551. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  12552.     AX = AF00h
  12553.     BX = AAAAh
  12554. Return: AX = AF01h if installed
  12555.         BH = protocol type (if BX=AAAAh on entry)
  12556.         01h NetManage TCP/IP
  12557.         BL = version for protocol type (if BX=AAAAh on entry)
  12558. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  12559.       behavior is used to determine whether the newer functions (AH=B0h,
  12560.       AH=B1h,etc) are available
  12561. SeeAlso: AH=A0h"BAPI"
  12562. --------S-14B0-------------------------------
  12563. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  12564.     AH = B0h
  12565.     AL = new state (00h disabled, 01h enabled)
  12566. Return: AH = return code (00h,07h,0Ah) (see #0267)
  12567. Note:    disabling the ECM character allows applications to send data which
  12568.       includes the ECM character
  12569. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  12570. --------S-14B1-------------------------------
  12571. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  12572.     AH = B1h
  12573. Return: AH = return code (00h,07h,0Ah) (see #0267)
  12574. Desc:    provide a means for the application or terminal emulator to perform
  12575.       the same action normally caused by the ECM character
  12576. SeeAlso: AH=B0h,AH=B2h
  12577. --------S-14B2-------------------------------
  12578. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  12579.     AH = B2h
  12580. Return: AH = return code (00h,07h,0Ah) (see #0267)
  12581.     AL = watch flag (00h disabled, 01h enabled)
  12582. Desc:    determine whether the ECM character is enabled
  12583. SeeAlso: AH=B0h,AH=B1h
  12584. --------S-14B3-------------------------------
  12585. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  12586.     AH = B3h
  12587.     AL = direction (00h get, 01h set)
  12588.     DH = session ID (00h for external session managment)
  12589.     DL = configuration item (00h = end-of-line mapping)
  12590.     CX = new configuration item value (if AL=01h)
  12591.         ---if DL=00h---
  12592.         CH = application EOL type (app to Telnet client)
  12593.         01h application will send lone CR
  12594.         02h application will send CR-? pair
  12595.         CL = driver EOL type (Telnet client to Telnet server)
  12596.         01h driver should send CR-NUL pair
  12597.         02h driver should send CR-LF pair
  12598. Return: AH = return code (00h,03h,09h-0Bh) (see #0267)
  12599.     ---if AL=00h---
  12600.     CX = configuration item value (see above)
  12601. SeeAlso: AH=B2h
  12602. --------N-14E0-------------------------------
  12603. INT 14 - TelAPI - ???
  12604.     AH = E0h
  12605.     BX = ???
  12606.     CX:DX = ???
  12607.     DS:DI -> ???
  12608.     ES:SI -> ???
  12609. Return: AX = status (0000h,FF37h,etc.)
  12610.     ES:SI -> ??? if ???
  12611.     ???
  12612. SeeAlso: AH=ECh,AX=FF00h
  12613. --------S-14E000-----------------------------
  12614. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  12615.     AX = E000h
  12616.     DX = port number (0-3)
  12617. Return: ES:BX -> status block (see #0270)
  12618. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  12619.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  12620.       the .DRV extension)
  12621. SeeAlso: AX=E006h
  12622.  
  12623. Format of MX5 Extended FOSSIL status block:
  12624. Offset    Size    Description    (Table 0270)
  12625.  00h    BYTE    flag: active (00h no, 01h yes)
  12626.  01h    BYTE    MNP level (2,4,5)
  12627.  02h    BYTE    series ID from remote MNP
  12628.  03h    DWORD    total packets transmitted
  12629.  07h    DWORD    duplicate packets transmitted
  12630.  0Bh    DWORD    maximum speed
  12631.  0Fh    DWORD    total packets received
  12632.  13h    DWORD    duplicate packets received
  12633.  17h    DWORD    maximum speed
  12634. --------S-14E001-----------------------------
  12635. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  12636.     AX = E001h
  12637.     BH = function
  12638.         00h get MNP level
  12639.         01h set MNP level
  12640.         BL = new level (00h none, 02h/04h/05h MNP level N)
  12641.     DX = port number (0-3)
  12642. Return: BL = MNP level
  12643. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  12644. --------S-14E002-----------------------------
  12645. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  12646.     AX = E002h
  12647.     BH = function
  12648.         00h get answer/originate mode
  12649.         01h set mode
  12650.         BL = new mode (00h originate [default], 01h answer)
  12651.     DX = port number (0-3)
  12652. Return: BL = answer/originate mode
  12653. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  12654. --------S-14E003-----------------------------
  12655. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  12656.     AX = E003h
  12657.     BH = function
  12658.         00h get wait ticks
  12659.         01h set wait ticks
  12660.         BL = MNP wait ticks (default 0Eh)
  12661.     DX = port number (0-3)
  12662. Return: BL = wait ticks
  12663. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  12664. --------S-14E004-----------------------------
  12665. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  12666.     AX = E004h
  12667.     BH = function
  12668.         00h get sound level
  12669.         01h set sound level
  12670.         BL = new sound level (00h off, 01h on [default])
  12671.     DX = port number
  12672. Return: BL = sound state
  12673. Desc:    specify whether MX5 should generate beeps after an MNP connection
  12674.       (three high beeps if successful, high then low on connection failure)
  12675. SeeAlso: AX=E002h,AX=E006h
  12676. --------S-14E005-----------------------------
  12677. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  12678.     AX = E005h
  12679. Return: BX = segment of MX5's memory block or 0000h on failure
  12680. Note:    caller must free the returned memory block to complete the uninstall
  12681. SeeAlso: AX=E006h
  12682. --------S-14E006BX0000-----------------------
  12683. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  12684.     AX = E006h
  12685.     BX = 0000h
  12686. Return: BX = 4D58h ('MX') if installed
  12687.         AH = major version
  12688.         AL = minor version
  12689. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  12690. --------S-14E007-----------------------------
  12691. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  12692.     AX = E007h
  12693.     CX = number of ticks to wait
  12694. Return: nothing
  12695. SeeAlso: AX=E006h
  12696. --------N-14E1-------------------------------
  12697. INT 14 - TelAPI - ???
  12698.     AH = E1h
  12699.     BX = connection ID
  12700.     ???
  12701. Return: AX = status (0000h,FFF7h,maybe others)
  12702.     ???
  12703. SeeAlso: AH=E6h,AX=FF00h
  12704. --------N-14E2-------------------------------
  12705. INT 14 - TelAPI - BUFFERED READ
  12706.     AH = E2h
  12707.     BX = connection ID
  12708.     CX = length of buffer in bytes
  12709.     ES:SI -> buffer for data
  12710. Return: AX = number of characters actually read??? (negative on error)
  12711. SeeAlso: AH=E6h,AX=FF00h,INT 6B/AH=01h
  12712. --------N-14E3-------------------------------
  12713. INT 14 - TelAPI - BUFFERED WRITE
  12714.     AH = E3h
  12715.     BX = connection ID
  12716.     CX = length of buffer in bytes
  12717.     ES:SI -> buffer containing data
  12718. Return: AX = number of characters actually written??? (negative on error)
  12719. SeeAlso: AH=07h"TelAPI",AH=E6h,AX=FF00h,INT 6B/AH=00h
  12720. --------N-14E4-------------------------------
  12721. INT 14 - TelAPI - CONNECTION CONTROL???
  12722.     AH = E4h
  12723.     BX = connection ID
  12724.     CX = ???
  12725.     ES:SI -> 10-byte buffer containing ???
  12726. Return: ???
  12727. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  12728. --------N-14E5-------------------------------
  12729. INT 14 - TelAPI - ???
  12730.     AH = E5h
  12731. Return: AX = status???
  12732. SeeAlso: AH=E6h,AX=FF00h
  12733. --------N-14E6-------------------------------
  12734. INT 14 - TelAPI - ???
  12735.     AH = E6h
  12736. Return: AX = status???
  12737. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  12738.     this function invokes AH=E5h internally
  12739. SeeAlso: AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  12740. --------N-14E7-------------------------------
  12741. INT 14 - TelAPI - GET ???
  12742.     AH = E7h
  12743.     ES:SI -> 20-byte buffer for ???
  12744. Return: AX = 0000h (successful)
  12745.     ES:SI buffer filled
  12746. SeeAlso: AX=FF00h
  12747. --------N-14E8-------------------------------
  12748. INT 14 - TelAPI - SET ???
  12749.     AH = E8h
  12750.     BX = connection ID
  12751.     CL = new value for ???
  12752.     DX = ??? (ignored by Novell TELAPI v4.01)
  12753. Return: AX = status (0000h,FFFFh)
  12754. SeeAlso: AX=FF00h
  12755. --------N-14E9-------------------------------
  12756. INT 14 - TelAPI - ???
  12757.     AH = E9h
  12758.     DX = ???
  12759. Return: ???
  12760. SeeAlso: AX=FF00h
  12761. --------N-14EA-------------------------------
  12762. INT 14 - TelAPI - GET CONNECTION INFO???
  12763.     AH = EAh
  12764.     BX = connection ID
  12765.     ES:SI -> buffer for info???
  12766. Return: AX = status (0000h,FFFFh,etc.)
  12767. SeeAlso: AX=FF00h
  12768. --------N-14EB-------------------------------
  12769. INT 14 - TelAPI - GET ???
  12770.     AH = EBh
  12771.     ES:SI -> buffer for ???
  12772. Return: ES:SI buffer filled
  12773. SeeAlso: AX=FF00h
  12774. --------N-14EC-------------------------------
  12775. INT 14 - TelAPI - ???
  12776.     AH = ECh
  12777.     BX = ???
  12778.     CX:DX = ???
  12779.     DS:DI -> ???
  12780.     ES:SI -> ???
  12781. Return: AX = status (0000h,FF37h,etc.)
  12782.     ES:SI -> ??? if ???
  12783.     ???
  12784. Note:    this function is not supported by the Microdyne TelAPI v3.7
  12785. SeeAlso: AH=E0h"TelAPI",AX=FF00h
  12786. --------N-14ED-------------------------------
  12787. INT 14 - TelAPI - ???
  12788.     AH = EDh
  12789.     BX = connection ID
  12790. Return: AX = status (0000h,FFFFh,etc.)
  12791. Note:    this function is not supported by the Microdyne TelAPI v3.7
  12792. SeeAlso: AX=FF00h
  12793. --------a-14F0F0-----------------------------
  12794. INT 14 - ASAP v1.0 - ???
  12795.     AX = F0F0h
  12796.     DX = ???
  12797.     ???
  12798. Return: ???
  12799. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  12800.       MicroTalk
  12801. SeeAlso: AX=F0F1h
  12802. --------a-14F0F1DX0000-----------------------
  12803. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  12804.     AX = F0F1h
  12805.     DX = 0000h
  12806. Return: DX = segment of resident code
  12807.         0000h if not installed
  12808. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  12809.       MicroTalk
  12810. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  12811. --------S-14F4FF-----------------------------
  12812. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  12813.     AX = F4FFh
  12814.     DX = port (00h-03h)
  12815. Return: CF clear if present
  12816.         AX = 0000h
  12817.     CF set if not present
  12818.         AX <> 0000h
  12819. --------S-14F9-------------------------------
  12820. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  12821.     AH = F9h
  12822.     DX = port (00h-03h)
  12823. --------S-14FA-------------------------------
  12824. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  12825.     AH = FAh
  12826.     DX = port (00h-03h)
  12827. SeeAlso: AH=1Ah,AH=8Ah
  12828. --------S-14FB-------------------------------
  12829. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  12830.     AH = FBh
  12831.     AL = modem control register (see #0210 at AH=05h)
  12832.     DX = port (00h-03h)
  12833. SeeAlso: AH=05h"SERIAL"
  12834. --------S-14FC-------------------------------
  12835. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  12836.     AH = FCh
  12837.     DX = port (00h-03h)
  12838. Return: AH = RS232 status bits (see #0180 at AH=03h)
  12839.     AL = character
  12840. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  12841. --------S-14FD02-----------------------------
  12842. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  12843.     AX = FD02h
  12844. Return: CX = number of characters available
  12845. --------N-14FF00-----------------------------
  12846. INT 14 - TelAPI - INSTALLATION CHECK
  12847.     AX = FF00h
  12848. Return: AL = FFh if installed
  12849.     AH = 00h for Novell TELAPI.EXE
  12850. SeeAlso: AH=E6h
  12851. --------S-14FF01-----------------------------
  12852. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  12853.     AX = FF01h
  12854.     CX = length of buffer (0000h to cancel buffer assignment)
  12855.     DX = port (00h-03h)
  12856.     ES:BX -> send buffer
  12857. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  12858. --------S-14FF02-----------------------------
  12859. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  12860.     AX = FF02h
  12861.     CX = length of buffer (0000h to cancel buffer assignment)
  12862.     DX = port (00h-03h)
  12863.     ES:BX -> receive buffer
  12864. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF03h
  12865. --------S-14FFF8-----------------------------
  12866. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  12867.     AX = FFF8h
  12868.     BX = card type (sub-device number)
  12869.     CX = new baudrate divisor
  12870.     DX = index to baud rate
  12871. Return: AH bit 7 set on error
  12872.     AH bit 7 clear if successful
  12873. Program: COMM-DRV is a universal serial communications driver by Willies'
  12874.       Computer Software Company, which supports standard INT 14 and
  12875.       FOSSIL calls as well as its own interfaces
  12876. SeeAlso: AX=8000h"COMM-DRV"
  12877. --------S-14FFFB-----------------------------
  12878. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  12879.     AX = FFFBh
  12880.     DX = port number
  12881. Return: AH bit 7 set on error
  12882.     AH bit 7 clear if successful
  12883.         BX = highest port number
  12884. --------S-14FFFC-----------------------------
  12885. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  12886.     AX = FFFCh
  12887.     DX = port number
  12888. Return: AH bit 7 set on error
  12889.     AH bit 7 clear if successful
  12890.         BX = flags (see #0271)
  12891. SeeAlso: AX=FFFDh
  12892.  
  12893. Bitfields for INT 14h flags:
  12894. Bit(s)    Description    (Table 0271)
  12895.  0    port active for INT 14h
  12896.  1    interface behaving like a FOSSIL driver
  12897. --------S-14FFFD-----------------------------
  12898. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  12899.     AX = FFFDh
  12900.     BX = flags (see #0271)
  12901.     DX = port number
  12902. Return: AH bit 7 set on error
  12903.     AH bit 7 clear if successful
  12904. SeeAlso: AX=FFFCh
  12905. --------S-14FFFE-----------------------------
  12906. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  12907.     AX = FFFEh
  12908. Return: AH bit 7 set on error
  12909.     AH bit 7 clear if successful
  12910. --------S-14FFFF-----------------------------
  12911. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  12912.     AX = FFFFh
  12913.     BX:SI -> DWORD buffer for address of information area (see #0272)
  12914.           (initialized to zeros)
  12915. Return: BX:SI buffer filled with nonzero value if installed
  12916. Program: COMM-DRV is a universal serial communications driver by Willies'
  12917.       Computer Software Company, which supports standard INT 14 and
  12918.       FOSSIL calls as well as its own interfaces
  12919. Index:    installation check;COMM-DRV
  12920.  
  12921. Format of COMM-DRV information area:
  12922. Offset    Size    Description    (Table 0272)
  12923.  00h  8 BYTEs    signature "COMM-DRV"
  12924.  08h  2 BYTEs    00h,00h
  12925.  0Ah    DWORD    -> direct address mapping table
  12926.  0Eh    DWORD    previous INT 14 vector
  12927. --------t-15---------------------------------
  12928. INT 15 - Microsoft TSR Specification
  12929.     No additional information available at this time.
  12930. --------B-1500-------------------------------
  12931. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  12932.     AH = 00h
  12933. Return: CF set on error
  12934.         AH = 86h no cassette present
  12935.     CF clear if successful
  12936. SeeAlso: AH=01h"CASSETTE"
  12937. --------M-1500-------------------------------
  12938. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  12939.     AH = 00h
  12940. Return: CX = signed X count
  12941.     DX = signed Y count
  12942. --------O-1500-------------------------------
  12943. INT 15 - VMiX v2+ - INSTALLATION CHECK
  12944.     AH = 00h
  12945. Return: DX = 0798h if installed
  12946.         AX = version (AH = major, AL = minor)
  12947. --------T-1500-------------------------------
  12948. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  12949.     AH = 00h
  12950. Note:    if issued by the highest-priority task while MultiDOS is using
  12951.       priority-based rather than round-robin scheduling, control will be
  12952.       returned to the caller immediately
  12953. SeeAlso: AH=03h"MultiDOS",AX=1000h
  12954. --------B-1501-------------------------------
  12955. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  12956.     AH = 01h
  12957. Return: CF set on error
  12958.         AH = 86h no cassette present
  12959.     CF clear if successful
  12960. SeeAlso: AH=00h"CASSETTE"
  12961. --------b-1501-------------------------------
  12962. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  12963.     AH = 01h
  12964.     AL = NVRAM location (00h to 3Fh) (see #0273)
  12965.     BL = NVRAM data value
  12966. Return: AH = return code
  12967.         00h OK
  12968.         01h address bad
  12969.         02h write error
  12970. SeeAlso: AH=02h"Amstrad"
  12971.  
  12972. Format of Amstrad NVRAM:
  12973. Offset    Size    Description    (Table 0273)
  12974.  00h    BYTE    time of day: seconds
  12975.  01h    BYTE    alarm time: seconds
  12976.  02h    BYTE    time of day: minutes
  12977.  03h    BYTE    alarm time: minutes
  12978.  04h    BYTE    time of day: hours
  12979.  05h    BYTE    alarm time: hours
  12980.  06h    BYTE    day of week, 1 = Sunday
  12981.  07h    BYTE    day of month
  12982.  08h    BYTE    month
  12983.  09h    BYTE    year mod 100
  12984.  0Ah    BYTE    RTC status register A (see #0274)
  12985.  0Bh    BYTE    RTC status register B (see #0275)
  12986.  0Ch    BYTE    RTC status register C (read-only) (see #0276)
  12987.  0Dh    BYTE    RTC status register D
  12988.         bit 7: battery good
  12989.  0Eh  6 BYTEs    time and date machine last used
  12990.  14h    BYTE    user RAM checksum
  12991.  15h    WORD    Enter key scancode/ASCII code
  12992.  17h    WORD    Forward delete key scancode/ASCII code
  12993.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  12994.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  12995.  1Dh    WORD    mouse button 1 scancode/ASCII code
  12996.  1Fh    WORD    mouse button 2 scancode/ASCII code
  12997.  21h    BYTE    mouse X scaling factor
  12998.  22h    BYTE    mouse Y scaling factor
  12999.  23h    BYTE    initial VDU mode and drive count
  13000.  24h    BYTE    initial VDU character attribute
  13001.  25h    BYTE    size of RAM disk in 2K blocks
  13002.  26h    BYTE    initial system UART setup byte
  13003.  27h    BYTE    initial external UART setup byte
  13004.  28h 24 BYTEs    available for user application
  13005. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  13006.       the clock chip
  13007.  
  13008. Bitfields for RTC status register A:
  13009. Bit(s)    Description    (Table 0274)
  13010.  7    set if date/time being updated
  13011.  6-4    time base speed, default 010 = 32768 Hz
  13012.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  13013.  
  13014. Bitfields for RTC status register B:
  13015. Bit(s)    Description    (Table 0275)
  13016.  7    clear if normal update, set if abort update
  13017.  6    periodic interrupt enable
  13018.  5    alarm interrupt enable
  13019.  4    update end interrupt enable
  13020.  3    square wave enable
  13021.  2    date mode (clear = BCD, set = binary)
  13022.  1    24-hour format
  13023.  0    daylight saving time enable
  13024.  
  13025. Bitfields for RTC status register C:
  13026. Bit(s)    Description    (Table 0276)
  13027.  7    IRQF flag
  13028.  6    PF flag
  13029.  5    AF flag
  13030.  4    UF flag
  13031. --------O-1501-------------------------------
  13032. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  13033.     AH = 01h
  13034.     STACK:    WORD    object ID of requestor
  13035.         DWORD    pointer to ASCIZ name of requested method
  13036.             "assign" assign channel to object
  13037.             "deassign" deassign channel
  13038.             "cursor" set cursor on/off
  13039.             "init" initialize comm port
  13040.             "open" open I/O channel
  13041.             "position" set cursor position
  13042.             "receive" get buffered packet from comm port
  13043.             "send" send buffered packet to comm port
  13044.             "vio" set current virtual I/O to specified channel
  13045.             "window" make window at cursor position
  13046.         ---if "assign"---
  13047.          WORD    object UID
  13048.          WORD    caller UID/PID
  13049.          DWORD    CSL with port
  13050.         ---if "deassign"---
  13051.          WORD    channel ID
  13052.         ---if "cursor"---
  13053.          WORD    channel ID (must be a SRCSINK)
  13054.          WORD    new state (0000h off, 0001h on)
  13055.         ---if "init"---
  13056.          WORD    channel ID (must be a SRCSINK)
  13057.          WORD    comm port number (00h-03h)
  13058.          WORD    UART init code
  13059.         ---if "open"---
  13060.          WORD    channel ID
  13061.         ---if "position"---
  13062.          WORD    channel ID (must be a SRCSINK)
  13063.          WORD    position (high byte = row, low byte = column)
  13064.         ---if "receive"---
  13065.          DWORD    pointer to buffer
  13066.         ---if "send"---
  13067.          WORD    length of buffer
  13068.          DWORD    pointer to buffer
  13069.         ---if "vio"---
  13070.          WORD    channel ID (must be a SRCSINK)
  13071.         ---if "window"---
  13072.          WORD    top left (high byte = row, low byte = column)
  13073.          WORD    bottom right (high byte = row, low byte = column)
  13074. Return: DX:AX -> IRP structure or 0000h:0000h
  13075. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  13076. --------T-1501-------------------------------
  13077. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  13078.     AH = 01h
  13079.     AL = semaphore number (00h-3Fh)
  13080. Return: AH = status
  13081.         00h successful
  13082.         02h invalid semaphore number
  13083. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  13084.       task and the call returns immediately
  13085.     if the semaphore is already owned by another task, the calling task
  13086.       is placed on a queue for the semaphore and suspended until it can
  13087.       become owner of the semaphore
  13088.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  13089. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  13090. --------B-1502-------------------------------
  13091. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  13092.     AH = 02h
  13093.     CX = number of bytes to read
  13094.     ES:BX -> buffer
  13095. Return: CF clear if successful
  13096.         DX = number of bytes read
  13097.         ES:BX -> byte following last byte read
  13098.     CF set on error
  13099.     AH = status (see #0277)
  13100. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  13101.  
  13102. (Table 0277)
  13103. Values for Cassette status:
  13104.  00h    successful
  13105.  01h    CRC error
  13106.  02h    bad tape signals
  13107.  04h    no data
  13108.  80h    invalid command
  13109.  86h    no cassette present
  13110. --------b-1502-------------------------------
  13111. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  13112.     AH = 02h
  13113.     AL = NVRAM location (00h to 3Fh)
  13114. Return: AH = return code
  13115.         00h OK
  13116.         01h address bad
  13117.         02h checksum error
  13118.     AL = NVRAM data value
  13119. SeeAlso: AH=01h"Amstrad"
  13120. --------O-1502-------------------------------
  13121. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  13122.     AH = 02h
  13123.     STACK:    WORD    object ID of requestor
  13124.         DWORD    pointer to ASCIZ name of requested method
  13125.             "assign" allocate low memory block
  13126.             "assign extended" allocate extended memory pages
  13127.             "assign gdt" allocate GDT selector
  13128.             "paged" allocate low paged memory
  13129.             "paged extended" alllocate extended memory pages
  13130.             "deassign" free memory block
  13131.             "deassign gdt" free GDT selector
  13132.             "getvpage" get physical address for virtual page
  13133.             "setvpage" set physical address for virtual page
  13134.             "info" get VMiX memory usage info block
  13135.             "move" move contents of 32-bit memory
  13136.             "newmcb" make new DOS memory control block
  13137.             "owner" get process ID of MCB or PSP owner
  13138.             "umb" allocate upper memory block
  13139.             "video" toggle system use of vidoe memory and get stat
  13140.         ---if "assign"---
  13141.          WORD    number of objects
  13142.          WORD    size in bytes (multiple of 512 bytes)
  13143.         ---if "assign extended"---
  13144.          WORD    number of objects
  13145.          WORD    size in bytes (multiple of 4K)
  13146.         ---if "assign gdt"---
  13147.          WORD    access type (low byte)
  13148.          WORD    segment size in paragraphs
  13149.          DWORD    pointer to start of physical segment
  13150.         ---if "paged"---
  13151.          WORD    number of 512-byte pages
  13152.         ---if "paged extended"
  13153.          WORD    number of 4K pages
  13154.         ---if "deassign"---
  13155.          DWORD    pointer returned by previous allocation call
  13156.         ---if "deassign gdt"---
  13157.          WORD    GDT selector
  13158.         ---if "getvpage"---
  13159.          WORD    owner's process ID
  13160.          DWORD    pointer to buffer for page structure (struct VPGE)
  13161.         ---if "setvpage"---
  13162.          WORD    owner's process ID
  13163.          DWORD    pointer to new page structure (struct VPGE)
  13164.         ---if "info"---
  13165.          no additional arguments
  13166.         ---if "move"
  13167.          DWORD    32-bit source address
  13168.          DWORD    32-bit destination address
  13169.          WORD    number of words to move
  13170.         ---if "newmcb"---
  13171.          DWORD    pointer to new MCB's location
  13172.          WORD    size of memory block
  13173.          DWORD    pointer to ASCIZ name string (max 8 chars)
  13174.         ---if "owner"---
  13175.          WORD    MCB or PSP segment
  13176.         ---if "umb"---
  13177.          WORD    size in paragraphs
  13178.         ---if "video"---
  13179.          no additional arguments
  13180. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  13181. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  13182. --------T-1502-------------------------------
  13183. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  13184.     AH = 02h
  13185.     AL = semaphore number (00h-3Fh)
  13186. Return: AH = status
  13187.         00h successful
  13188.         01h not semaphore owner
  13189.         02h invalid semaphore number
  13190. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  13191.       queue will become the new owner and be reawakened
  13192.     do not use within an interrupt handler
  13193. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  13194. --------B-1503-------------------------------
  13195. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  13196.     AH = 03h
  13197.     CX = number of bytes to write
  13198.     ES:BX -> data buffer
  13199. Return: CF clear if successful
  13200.         ES:BX -> byte following last byte written
  13201.     CF set on error
  13202.     AH = status (see #0277)
  13203.     CX = 0000h
  13204. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  13205. --------V-1503-------------------------------
  13206. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  13207.     AH = 03h
  13208.     AL = value (I,R,G,B bits)
  13209. SeeAlso: AH=04h"Amstrad"
  13210. --------O-1503-------------------------------
  13211. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  13212.     AH = 03h
  13213.     STACK:    DWORD    pointer to ASCII prompt
  13214.         WORD    field outline character
  13215.         WORD    length of input field (max 7Fh)
  13216.         DWORD    address of pointer to input buffer
  13217. Return: AX = length of input (input buffer is padded with blanks)
  13218. SeeAlso: AH=04h"VMiX"
  13219. --------T-1503-------------------------------
  13220. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  13221.     AH = 03h
  13222.     DX = number of time slices to remain suspended
  13223. Return: after specified interval has elapsed
  13224. Note:    when priority-based scheduling is in use, high-priority tasks should
  13225.       use this function to yield the processor
  13226. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  13227. --------B-1504-------------------------------
  13228. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  13229.     AH = 04h
  13230.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0278)
  13231.     DS = segment containing ABIOS RAM extensions (zero if none)
  13232. Return: CF clear if successful
  13233.         AH = 00h success
  13234.         ES:DI buffer filled
  13235.         AL destroyed
  13236.     CF set on failure
  13237.         AX destroyed
  13238.         AH = 80h/86h if not supported
  13239. SeeAlso: AH=05h"ABIOS",AH=C1h
  13240.  
  13241. Format of ABIOS System Parameter Table:
  13242. Offset    Size    Description    (Table 0278)
  13243.  00h    DWORD    FAR address of ABIOS Common Start Routine
  13244.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  13245.  08h    DWORD    FAR address of ABIOS Time-out Routine
  13246.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  13247.  0Eh 16 BYTEs    reserved
  13248.  1Eh    WORD    number of entries in initialization table
  13249. --------V-1504-------------------------------
  13250. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  13251.     AH = 04h
  13252.     AL = value (RDSEL1 and RDSEL0)
  13253. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  13254. --------O-1504-------------------------------
  13255. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  13256.     AH = 04h
  13257.     STACK:    DWORD    control string
  13258.         DWORD    array of arguments
  13259. SeeAlso: AH=03h"VMiX"
  13260. --------T-1504-------------------------------
  13261. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  13262.     AH = 04h
  13263.     AL = mailbox number (00h-3Fh)
  13264.     CX = message length in bytes
  13265.     DS:SI -> message
  13266. Return: AH = status
  13267.         00h successful
  13268.         01h out of message memory
  13269.         02h invalid mailbox number
  13270. Note:    the message is copied into a system buffer; the caller may immediately
  13271.       reuse its buffer
  13272. SeeAlso: AH=05h"MultiDOS"
  13273. --------B-1505-------------------------------
  13274. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  13275.     AH = 05h
  13276.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0279)
  13277.     DS = segment containing ABIOS RAM extensions (zero if none)
  13278. Return: CF clear if successful
  13279.         AH = 00h success
  13280.         ES:DI buffer filled
  13281.         AL destroyed
  13282.     CF set on failure
  13283.         AX destroyed
  13284.         AH = 80h/86h if not supported
  13285. SeeAlso: AH=04h"ABIOS",AH=C1h
  13286.  
  13287. Format of one entry of ABIOS Initialization Table:
  13288. Offset    Size    Description    (Table 0279)
  13289.  00h    WORD    device ID (see #0280)
  13290.  02h    WORD    number of Logical IDs
  13291.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  13292.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  13293.  0Ah    WORD    request block length
  13294.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  13295.  0Eh    WORD    Data Pointers length (in Common Data Area)
  13296.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  13297.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  13298.  12h  6 BYTEs    reserved
  13299.  
  13300. (Table 0280)
  13301. Values for ABIOS device ID:
  13302.  00h    ABIOS internal calls
  13303.  01h    floppy disk
  13304.  02h    hard disk
  13305.  03h    video
  13306.  04h    keyboard
  13307.  05h    parallel port
  13308.  06h    serial port
  13309.  07h    system timer
  13310.  08h    real-time clock
  13311.  09h    system services
  13312.  0Ah    NMI
  13313.  0Bh    mouse
  13314.  0Eh    CMOS RAM
  13315.  0Fh    DMA
  13316.  10h    Programmable Option Select (POS)
  13317.  16h    keyboard password
  13318. --------V-1505-------------------------------
  13319. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  13320.     AH = 05h
  13321.     AL = value (I,R,G,B bits)
  13322. SeeAlso: AH=04h"Amstrad"
  13323. --------O-1505-------------------------------
  13324. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  13325.     AH = 05h
  13326. Return: AX = process ID
  13327. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  13328. --------T-1505-------------------------------
  13329. INT 15 - MultiDOS Plus - CHECK MAILBOX
  13330.     AH = 05h
  13331.     AL = mailbox number (00h-3Fh)
  13332. Return: AH = status
  13333.         00h successful
  13334.         DX = length of first message in queue, 0000h if no message
  13335.         02h invalid mailbox number
  13336. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  13337. --------b-1506-------------------------------
  13338. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  13339.     AH = 06h
  13340. Return: BX = version number
  13341. --------O-1506-------------------------------
  13342. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  13343.     AH = 06h
  13344.     STACK:    WORD    process ID
  13345. Return: DX:AX -> process control block
  13346. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  13347. --------T-1506-------------------------------
  13348. INT 15 - MultiDOS Plus - READ MAILBOX
  13349.     AH = 06h
  13350.     AL = mailbox number (00h-3Fh)
  13351.     CX = size of buffer in bytes
  13352.     ES:DI -> buffer for message
  13353. Return: AH = status
  13354.         00h successful
  13355.         CX = number of bytes copied
  13356.         DX = actual length of message
  13357.         02h invalid mailbox number
  13358. Note:    if the caller's buffer is not large enough, the message is truncated
  13359.       and the remainder is lost
  13360. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  13361. --------O-1507-------------------------------
  13362. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  13363.     AH = 07h
  13364.     STACK:    WORD    object type
  13365. Return: DX:AX -> object control block
  13366. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  13367. --------T-1507-------------------------------
  13368. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  13369.     AH = 07h
  13370.     BX:CX = entry point of new task
  13371.     DX = stack size in paragraphs
  13372. Return: AH = status
  13373.         00h successful
  13374.         01h no free task control blocks
  13375.         02h no free memory for task's stack
  13376. Note:    execution returns immediately to calling task
  13377. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  13378. --------O-1508-------------------------------
  13379. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  13380.     AH = 08h
  13381.     STACK:    WORD    channel ID
  13382. Return: DX:AX -> channel control block
  13383. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  13384. --------T-1508-------------------------------
  13385. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  13386.     AH = 08h
  13387. Return: calling task terminated, so execution never returns to caller
  13388. Notes:    an internal task must be terminated with this function rather than a
  13389.       DOS termination function
  13390.     task's stack space is returned to parent task's memory pool
  13391. SeeAlso: AH=07h"MultiDOS"
  13392. --------O-1509-------------------------------
  13393. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  13394.     AH = 09h
  13395.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  13396.         WORD    subqueue ID
  13397. Return: AX = queue ID
  13398. SeeAlso: AH=0Ah"VMiX"
  13399. --------T-1509-------------------------------
  13400. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  13401.     AH = 09h
  13402.     AL = new priority
  13403. Note:    the priority has different meanings depending on whether priority-
  13404.       based or round-robin scheduling is used
  13405. SeeAlso: AH=07h"MultiDOS"
  13406. --------O-150A-------------------------------
  13407. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  13408.     AH = 0Ah
  13409.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  13410.         WORD    ID of current element in queue chain
  13411. Return: AX = ID of next element
  13412. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  13413. --------T-150A-------------------------------
  13414. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  13415.     AH = 0Ah
  13416.     AL = new interval
  13417.         00h = 55.0 ms (default)
  13418.         80h = 27.5 ms
  13419.         40h = 13.75 ms
  13420.         20h = 6.88 ms
  13421.         10h = 3.44 ms
  13422.         08h = 1.72 ms
  13423. SeeAlso: AH=03h"MultiDOS"
  13424. --------O-150B-------------------------------
  13425. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  13426.     AH = 0Bh
  13427.     STACK:    WORD    caller's UID
  13428.         DWORD    pointer to ASCIZ name of requested method
  13429.             "abort" abort current send/receive on comm port
  13430.             "block" start/end critical section
  13431.             "close" terminate interrupt-drive comm I/O
  13432.             "open" prepare comm port for interrupt-driven I/O
  13433.             "delay" set delay timer and wait
  13434.             "hibernate" put process to sleep
  13435.             "ints" enable/disable interrupt-driven INT 14h
  13436.             "length" get current send/receive buffer offsets
  13437.             "kswitch" switch stacks
  13438.             "numproc" get number of active processes
  13439.             "protocol" set protocol function for comm interrupts
  13440.             "relocate" set/reset VMiX flag for relocating to himem
  13441.             "status" get current open comm port status
  13442.             "wake" awaken a process
  13443.             "xport" get comm port polled for logins
  13444.         ---if "abort"---
  13445.          no additional arguments
  13446.         ---if "block"---
  13447.          WORD    0000h end, 0001h start
  13448.         ---if "close"---
  13449.          no additional arguments
  13450.         ---if "open"---
  13451.          WORD    comm port (00h-03h)
  13452.          WORD    BIOS parameter byte (see #0176 at INT 14/AH=00h),
  13453.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  13454.         ---if "delay"---
  13455.          WORD    time in seconds
  13456.         ---if "hibernate"---
  13457.          WORD    process ID
  13458.         ---if "ints"---
  13459.          WORD    0000h if no, 0001h if yes
  13460.         ---if "length","numproc","relocate","status","xport"---
  13461.          no additional arguments
  13462.         ---if "kswitch"---
  13463.          DWORD    pointer to new stack
  13464.         ---if "protocol"---
  13465.          DWORD    pointer to function (must be in low "assign"ed memory
  13466.             when in 386 mode)
  13467.         ---if "wake"---
  13468.          WORD    process ID
  13469. Return: DX:AX -> result or 0000h:0000h
  13470.         ---if "length"---
  13471.          BYTE    receive offset
  13472.          BYTE    send offset
  13473.         ---if "kswitch"---
  13474.          DWORD    old stack pointer
  13475.         ---if "numproc"---
  13476.          WORD    number of active processes
  13477.         ---if "status"---
  13478.          current open comm port status
  13479.         ---if "xport"---
  13480.          current comm port being polled for logins
  13481. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  13482. --------T-150B-------------------------------
  13483. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  13484.     AH = 0Bh
  13485. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  13486.       may be restored with AH=0Ch
  13487.     caller's video mode must be same as foreground task's video mode
  13488.     any text written while in the background will be saved to the
  13489.       foreground task's virtual screen when it switches to the background
  13490.     useful if a background task wants to display a message on the
  13491.       foreground screen
  13492. SeeAlso: AH=0Ch"MultiDOS"
  13493. --------O-150C-------------------------------
  13494. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  13495.     AH = 0Ch
  13496.     STACK:    WORD    process ID
  13497. Return: DX:AX -> TSS stack store
  13498. SeeAlso: AH=00"VMiX"
  13499. --------T-150C-------------------------------
  13500. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  13501.     AH = 0Ch
  13502. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  13503.       unless AH=0Bh has been called first
  13504. SeeAlso: AH=0Bh"MultiDOS"
  13505. --------O-150D-------------------------------
  13506. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  13507.     AH = 0Dh
  13508.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  13509.             followed by standard VMiX shell command string
  13510. Return: AX = process ID or error code "SYS_ERROR"
  13511. Note:    the maximum string length is 7Fh characters
  13512. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  13513. --------T-150D-------------------------------
  13514. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  13515.     AH = 0Dh
  13516. Note:    calling task receives all time slices until AH=0Eh is called; this
  13517.       allows time-critical events or nonreentrant code to be processed
  13518. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  13519. --------O-150E-------------------------------
  13520. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  13521.     AH = 0Eh
  13522.     STACK:    WORD    process ID
  13523. Return: AX = status (SYS_OK or SYS_ERROR)
  13524. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  13525. --------T-150E-------------------------------
  13526. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  13527.     AH = 0Eh
  13528. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  13529. --------d-150F-------------------------------
  13530. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  13531.     AH = 0Fh
  13532.     AL = phase code
  13533.         00h reserved
  13534.         01h surface analysis
  13535.         02h formatting
  13536. Return: CF clear if formatting should continue
  13537.     CF set if formatting should terminate
  13538. Note:    called during ESDI drive formatting after each cylinder is completed
  13539. SeeAlso: INT 13/AH=1Ah
  13540. --------O-150F-------------------------------
  13541. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  13542.     AH = 0Fh
  13543.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  13544.         WORD    ID of element in queue chain
  13545. Return: AX = key
  13546. SeeAlso: AH=0Ah"VMiX"
  13547. --------T-150F-------------------------------
  13548. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  13549.     AH = 0Fh
  13550.     DS:BX -> ASCIZ command
  13551. Return: after command has been processed
  13552. Notes:    specified string is executed as if it had been typed at the MultiDOS
  13553.       command prompt
  13554.     the task is placed on a queue which MultiDOS examines periodically and
  13555.       is suspended until MultiDOS has processed the command
  13556.     all lowercase characters up to the first blank are converted to upper
  13557.       case within the given buffer
  13558. --------O-1510-------------------------------
  13559. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  13560.     AH = 10h
  13561.     STACK:    DWORD    pointer to function
  13562.           N WORDs    function args
  13563. Return: AX = function's return value??? (not specified in documentation)
  13564. Note:    while the function is executing, the following global descriptors are
  13565.       available:
  13566.         20h stack segment
  13567.         38h code segment of function
  13568.         40h data alias for function's code segment
  13569.       additional GDT descriptors can be allocated using AH=02h with
  13570.       function "assign gdt"
  13571. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  13572. --------T-1510-------------------------------
  13573. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  13574.     AH = 10h
  13575.     AL = semaphore number (00h-3Fh)
  13576. Return: AH = status
  13577.         00h semaphore not in use
  13578.         01h semaphore owned by another task
  13579.         02h invalid semaphore number
  13580.         03h semaphore owned by caller
  13581. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  13582. --------Q-151000-----------------------------
  13583. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  13584.     AX = 1000h
  13585. Return: after other processes run
  13586. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  13587.       the current time-slice is set to expire at the next clock tick rather
  13588.       than immediately
  13589. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  13590. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
  13591. SeeAlso: INT 7F/AH=E8h
  13592. --------Q-151001-----------------------------
  13593. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  13594.     AX = 1001h
  13595.     BX = number of bytes to allocate
  13596. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  13597.     AX = status (DV v2.42)
  13598.         0000h successful
  13599.         0001h failed
  13600. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  13601.       common memory.  Under DV v2.42, this call never generates a user
  13602.       prompt regardless of the SETERROR value; instead, it always returns
  13603.       AX=0001h and ES:DI=0000h:0000h if out of memory
  13604. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  13605. --------Q-151002-----------------------------
  13606. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  13607.     AX = 1002h
  13608.     ES:DI -> previously allocated block
  13609. Return: block freed
  13610. SeeAlso: AX=1001h,AX=DE0Dh
  13611. --------Q-151003-----------------------------
  13612. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  13613.     AX = 1003h
  13614.     BH = attribute
  13615.     BL = character
  13616.     DX = segment of object handle for window
  13617. Note:    BX=0 does not display anything, it only positions the hardware cursor
  13618. --------Q-1510-------------------------------
  13619. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  13620.     AH = 10h
  13621.     AL = 04h thru 12h
  13622. Return: pops up "Programming error" window in DV 2.x
  13623. --------Q-151013-----------------------------
  13624. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  13625.     AX = 1013h
  13626.     ES:DI -> FAR service routine
  13627. Return: BX = bit mask indicating which bit was allocated
  13628.          0000h if no more bits available
  13629. SeeAlso: AX=1014h,AX=1015h
  13630. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  13631.       interrupt; if other calls need to be made, the interrupt handler
  13632.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  13633. --------Q-151014-----------------------------
  13634. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  13635.     AX = 1014h
  13636.     BX = bit mask from INT 15/AX=1013h
  13637. SeeAlso: AX=1013h,AX=1015h
  13638. --------Q-151015-----------------------------
  13639. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  13640.     AX = 1015h
  13641.     BX = bit mask for interrupts to post
  13642. Return: indicated routines will be called: (DV 2.0x) at next task switch
  13643.                        (DV 2.2x) immediately on return from
  13644.                              hardware interrupt
  13645. SeeAlso: AX=1013h,AX=1014h
  13646. Notes:    this is one of the few TopView calls which are allowed from a hardware
  13647.       interrupt handler
  13648.     the handler will be called with ES containing the segment of the handle
  13649.       of the next task to be executed; on return, ES must be the segment of
  13650.       a task handle
  13651. --------Q-151016-----------------------------
  13652. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  13653.     AX = 1016h
  13654.     ES:DI = possible object handle
  13655. Return: BX = status
  13656.         FFFFh if ES:DI is a valid object handle (see #0282)
  13657.         0000h if ES:DI is not
  13658. Note:    under DESQview versions prior to 2.50, an object handle is always a
  13659.       pointer to the object; for versions 2.50 and up, only task handles
  13660.       are always pointers (other handles may consist of a unique object
  13661.       number and offset into DESQview's common memory)
  13662. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  13663.  
  13664. (Table 0281)
  13665. Values for DESQview object type:
  13666.  00h    window/task
  13667.  01h    mailbox
  13668.  02h    keyboard
  13669.  03h    timer
  13670.  04h    pointer
  13671.  05h    panel
  13672.  06h    objectq
  13673.  
  13674. Format of DESQview object:
  13675. Offset    Size    Description    (Table 0282)
  13676.  00h    WORD    offset in common memory of previous object of same type
  13677.  02h    WORD    offset in common memory of next object of same type
  13678.  04h    WORD    signature FEDCh (DV 2.42-)
  13679.         signature FEDCh or object number (DV 2.50+)
  13680.  06h    WORD    object type (see #0281)
  13681.  08h    DWORD    object handle to return to caller
  13682.  0Ch    DWORD    canonicalized object address (segment = common memory)
  13683.  10h    WORD    offset in common memory of owning task
  13684.         (0000h for unowned OBJECTQs)
  13685.  12h    WORD    mapping context
  13686.         offset in common memory of mapping context record (see #0284)
  13687.     remainder varies by object type and DESQview version
  13688. ---v2.42 keyboard object---
  13689.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  13690.         bit 15: keyboard opened
  13691.  16h  4 BYTEs    ???
  13692.  1Ah    WORD    priority in OBJECTQ???
  13693.  1Ch    ...
  13694.  25h    WORD    offset in common memory of ??? task
  13695.  27h  4 BYTEs    ???
  13696. ---v2.42 objectq object---
  13697.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  13698.         bit 15: OBJECTQ opened
  13699.  16h  2 BYTEs    ???
  13700.  18h    WORD    offset in common memory of ??? task
  13701.  1Ah  6 BYTEs    ???
  13702. ---v2.42 mailbox object---
  13703.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  13704.         bit 15: mailbox opened
  13705.  1Ah    WORD    priority in OBJECTQ???
  13706.  1Ch  6 BYTEs    ???
  13707.  22h    WORD    offset in common memory of mailbox name (counted string)
  13708.         0000h if no name
  13709.      <= 5 BYTEs ???
  13710. ---v2.22-2.42,2.52,2.60 window/task object---
  13711.  14h    BYTE    00h window, 01h task
  13712.  15h    BYTE    internal (not Switch menu) window number???
  13713.  16h    BYTE    internal (not Switch menu) window number???
  13714.  17h    WORD    segment of internal window record (see #0285)
  13715.  19h  2 BYTEs    ???
  13716.  1Bh    BYTE    cursor row
  13717.  1Ch    BYTE    cursor column
  13718.  1Dh    BYTE    visible window origin, row
  13719.  1Eh    BYTE    visible window origin, column
  13720.  1Fh    BYTE    window height (logical)
  13721.  20h    BYTE    window width (logical)
  13722.  21h    BYTE    window position, row
  13723.  22h    BYTE    window position, column
  13724.  23h    BYTE    window height (visible)
  13725.  24h    BYTE    window width (visible)
  13726.  25h    BYTE    row of top of frame (or window if unframed)
  13727.  26h    BYTE    column of left of frame (or window if unframed)
  13728.  27h    BYTE    window height (physical, including frame)
  13729.  28h    BYTE    window width (physical, including frame)
  13730.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  13731.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  13732.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  13733.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  13734.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  13735.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  13736.         unzoomed parameters above are updated when window is zoomed
  13737.           to full screen
  13738.  2Fh    BYTE    ??? initially logical window height
  13739.  30h    BYTE    ??? initially logical window width
  13740.  31h  2 BYTEs    ???
  13741.  33h    BYTE    minimum height of window
  13742.  34h    BYTE    minimum width of window
  13743.  35h    BYTE    maximum height of window
  13744.  36h    BYTE    maximum width of window
  13745.  37h  3 BYTEs    ???
  13746.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  13747.  42h 24 BYTEs    attributes???
  13748.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  13749.  62h  3 BYTEs    ???
  13750.  65h    BYTE    ??? bitflags
  13751.  66h    BYTE    bit 0: window is zoomed
  13752.  67h    BYTE    ???
  13753.  68h    WORD    offset in common memory of window name or 0000h if untitled
  13754.  6Ah    WORD    length of window name
  13755.  6Ch  2 BYTEs    ???
  13756.  6Eh    WORD    offset of logical cursor in window (in character cells)
  13757.  70h    DWORD    pointer to field table for window
  13758.  74h    BYTE    ???
  13759.  75h  2 BYTEs    ???
  13760.  77h    BYTE    number of last-visited field
  13761.  78h    DWORD    pointer to field table entry for last-visited field
  13762.  7Ch  3 BYTEs    ???
  13763.  7Fh    BYTE    select field marker character
  13764.  80h    BYTE    ??? bit flags
  13765.         bit 0: allow ECh window stream opcode to change reverse logattr
  13766.         bit 1: alternate field processing mode selected
  13767.  81h    BYTE    ???
  13768.  82h    DWORD    notification function (manager stream opcode 8Ah)
  13769.         no notification if segment = 0000h
  13770.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  13771.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  13772.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  13773.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  13774.  90h    BYTE    ??? bitflags
  13775.  91h    BYTE    ???
  13776.  ---task object only
  13777.  92h    BYTE    bit flags (bits 0-4)
  13778.  93h    BYTE    character for ??? (default 20h)
  13779.  94h    BYTE    ??? flag
  13780.  95h    WORD    offset in common memory of ???
  13781.  97h  2 BYTEs    ???
  13782.  99h    WORD    ???
  13783.  9Bh    BYTE    ??? bit flags
  13784.         bit 3: ???
  13785.         bit 6: perform protected-attribute processing on select fields
  13786.  9Ch    BYTE    ???
  13787.  9Dh    WORD    offset in common memory of current register save record
  13788.           (see #0283).    No register save record in use if < 01C0h
  13789.  9Fh    WORD    offset in common memory of task's keyboard object
  13790.  A1h    WORD    offset in common memory of task's OBJECTQ object
  13791.  A3h    WORD    offset in common memory of task's mailbox object
  13792.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  13793.  A7h    DWORD    user's SS:SP
  13794.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  13795.  ADh  6 BYTEs    ???
  13796.  B3h    BYTE    ??? bit flags
  13797.         bit 0: run in foreground only
  13798.  B4h    BYTE    ???
  13799.  B5h    BYTE    ??? bitflags
  13800.  B6h    BYTE    task status (see #0386 at AX=DE2Ch)
  13801.  B7h  9 BYTEs    ???
  13802.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  13803.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  13804.  C4h  2 BYTEs    ??? (0000h)
  13805.  C6h    WORD    segment of keyboard buffer for task
  13806.  C8h    WORD    offset in common memory of ??? keyboard object
  13807.  CAh    BYTE    ???
  13808. ---v2.22-2.42
  13809.  CBh    WORD    offset in common memory of ??? object
  13810.  CEh    BYTE    ??? flag
  13811.  CFh    WORD    offset in common memory of default notify window for task
  13812.           or 0000h if none
  13813.  D1h  4 BYTEs    ???
  13814.  D5h    BYTE    window number on Switch Window menu
  13815.  D6h  5 BYTEs    ???
  13816.  DBh    WORD    offset in common memory of ??? object
  13817.  DDh  2 BYTEs    ???
  13818.  DFh    WORD    API level for task
  13819.  E1h    WORD    offset in common memory of object task is waiting on if task
  13820.           status is 'waiting', else 0000h
  13821.  E7h    WORD    segment of ???
  13822.  E9h 4    BYTEs    ???
  13823.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  13824.  F1h 12 BYTEs    ???
  13825.  FBh    WORD    ???
  13826.  FDh    BYTE    ???
  13827.  FFh 12 BYTEs    ???
  13828. 10Bh    DWORD    pointer to process record (see #0286,#0287)
  13829. 10Dh 10 BYTEs    ???
  13830. 119h    DWORD    SS:SP for ???
  13831. 11Dh  4 BYTEs    ???
  13832. 121h    DWORD    pointer to ???
  13833. 125h 25 BYTEs    ???
  13834. 13Eh    DWORD    pointer to ??? in system memory
  13835. ---v2.22
  13836. 142h  3 BYTEs    ???
  13837. 145h        task's default keyboard object
  13838. ---v2.42
  13839. 142h    DWORD    pointer to first task instance data record in system memory
  13840. 148h    DWORD    pointer to last task instance data record in system memory
  13841.         (see #0288)
  13842. 14Ah    BYTE    ???
  13843. 14Dh 42 BYTEs    task's default keyboard object
  13844. 177h 32 BYTEs    task's ObjectQ object
  13845. 197h 41 BYTEs    task's default mailbox object
  13846. 1C0h 24 BYTEs    first register save record
  13847. 450h    --    default top of private stack
  13848. ---v2.52 (probably all DV/X)
  13849. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  13850.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  13851.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  13852.   0000h even when waiting.
  13853. ---v2.60
  13854.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  13855.  CDh    WORD    offset in common memory of ??? object
  13856.  D0h    BYTE    ??? flag
  13857.  D1h    WORD    offset in common memory of default notify window for task
  13858.           or 0000h if none
  13859.  D3h  4 BYTEs    ???
  13860.  D7h    BYTE    window number on Switch Window menu
  13861.  D8h  5 BYTEs    ???
  13862.  DDh    WORD    offset in common memory of ??? object
  13863.  DFh  2 BYTEs    ???
  13864.  E1h    WORD    API level for task
  13865.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  13866.           that task is waiting on, else 0000h. (Task with CPU also
  13867.           has 0000h here)
  13868.  E9h    WORD    segment of ???
  13869.  EBh 4    BYTEs    ???
  13870.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  13871.  F3h 12 BYTEs    ???
  13872.  FDh    WORD    ???
  13873.  FFh    BYTE    ???
  13874. 101h  8 BYTEs    ???
  13875. 109h    DWORD    pointer to process record in system memory
  13876. 10Dh 14 BYTEs  ???
  13877. 11Bh    DWORD    SS:SP for ???
  13878. 11Fh  4 BYTEs    ???
  13879. 123h    DWORD    pointer to ???
  13880. 127h 25 BYTEs    ???
  13881. 140h    DWORD    pointer to ??? in system memory
  13882. 144h    DWORD    pointer to first task instance data record in system memory
  13883. 148h    DWORD    pointer to last task instance data record in system memory
  13884.         (from INT 15/AX=DE27h, see below)
  13885. 14Ch    BYTE    ???
  13886. 14Eh 42 BYTEs    task's default keyboard object
  13887. 179h 32 BYTEs    task's ObjectQ object
  13888. 199h 41 BYTEs    task's default mailbox object
  13889. 1C2h 24 BYTEs    first register save record
  13890. 452h    --    default top of private stack
  13891.  
  13892. Format of DESQview Register Save Record:
  13893. Offset    Size    Description    (Table 0283)
  13894.  00h    WORD    AX
  13895.  02h    WORD    BX
  13896.  04h    WORD    CX
  13897.  06h    WORD    DX
  13898.  08h    WORD    DI
  13899.  0Ah    WORD    SI
  13900.  0Eh    WORD    DS
  13901.  10h    WORD    ES
  13902.  12h    DWORD    return address
  13903.  16h    WORD    original flags
  13904.  
  13905. Format of DESQview mapping context record:
  13906. Offset    Size    Description    (Table 0284)
  13907.  00h    WORD    lowest segment in process's memory
  13908.         (often start of system memory chain)
  13909.  02h    WORD    size of process's memory in paragraphs
  13910.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  13911.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  13912.  06h  2 BYTEs    ???
  13913.  08h    WORD    EMS handle if in EMS, else 0
  13914.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  13915.  0Ch    WORD    segment of system memory block that contains process record,
  13916.           referenced from segment of start of system memory chain
  13917.  0Eh    BYTE    ???
  13918.  0Fh    WORD    size of system memory block that contains process record
  13919.           and DOS memory in paragraphs
  13920.  11h    BYTE    bit flags
  13921.         Bit 0: Swapped out???
  13922.         Bit 1: ???
  13923.         Bit 2: Swapped out???
  13924.  12h    BYTE    ???
  13925.  13h    BYTE    reference count
  13926.  ---v2.31
  13927.  14h 10 BYTEs    ???
  13928.  1Eh    WORD    segment of process record
  13929.  20h  2 BYTEs    ???
  13930.  22h    WORD    segment of ???    (in first free system memory block???)
  13931.  24h    WORD    segment of end of system memory chain
  13932.  26h    WORD    segment of start of system memory chain
  13933.  28h  8 BYTEs    ???
  13934.  2Ah    DWORD    pointer to ??? (process record???)
  13935.  2Dh 10 BYTEs    ???
  13936.  37h    BYTE    lowest interrupt vector to save on context switch
  13937.  38h    BYTE    highest interrupt vector to save on context switch
  13938.  39h    WORD    offset in common memory of main task with this context
  13939.  3Ah 12 BYTEs    ???
  13940.  46h    BYTE    internal mapping context number
  13941.  47h 12 BYTEs    ???
  13942.  ---v2.5x-2.60
  13943.  14h  6 BYTEs    ???
  13944.  1Ah    WORD    segment of process record
  13945.  1Ch  2 BYTEs    ???
  13946.  1Eh    WORD    segment of first free system memory block
  13947.  20h    WORD    segment of start of system memory chain
  13948.  22h    WORD    segment of end of system memory chain
  13949.  24h 8    BYTEs    ???
  13950.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  13951.  30h 3    BYTEs    ???
  13952.  33h    WORD    Offset in common memory of main task with this context
  13953.  35h 7    BYTEs    ???
  13954.  3Ch    BYTE    internal mapping context number
  13955.  3Dh 14 BYTEs    ???
  13956.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  13957.  4Dh    BYTE    ??? (flag???)
  13958.  ---v2.53 (2.5x???)
  13959.  4Eh 12 BYTEs    ???
  13960.  ---v2.60
  13961.  4Eh    WORD    segment of script buffer (see #0289)
  13962.  50h  6 BYTEs    ???
  13963.  
  13964. Format of DESQview Internal Window Record (v2.31-2.60):
  13965. Offset    Size    Description    (Table 0285)
  13966.  00h    BYTE    internal window number???
  13967.  01h    BYTE    display page???
  13968.  02h    BYTE    video mode
  13969.  03h  3 BYTEs    ???
  13970.  06h    BYTE    logical window height
  13971.  07h    BYTE    logical window width
  13972.  08h    DWORD    pointer to text video buffer
  13973.  0Ch 116 BYTEs    ???
  13974.  
  13975. Format of DESQview process record (v2.31):
  13976. Offset    Size    Description    (Table 0286)
  13977. -470h 13 BYTEs    filename of ??? Script
  13978. -463h 1117 BYTEs ??? (script buffer???)
  13979.  -6h  6 BYTEs    ???
  13980.  00h    WORD    segment of parent PSP in process
  13981.  02h  5 BYTEs    ???
  13982.  07h    WORD    segment of current PSP in process
  13983.  09h    WORD    segment of first MCB in process
  13984.  0Bh 13 BYTEs    ???
  13985.  18h 1024 BYTEs process's interrupt vector table
  13986. 418h 376 BYTEs    ???
  13987. 590h        first MCB in process
  13988.  
  13989. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  13990. Offset    Size    Description    (Table 0287)
  13991.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  13992.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  13993. 11Ch    WORD    segment of parent PSP in process
  13994. 11Eh  4 BYTEs    ???
  13995. 122h    WORD    segment of current PSP
  13996. 124h    WORD    segment of current PSP
  13997. 126h    WORD    segment of first MCB in process
  13998. 128h  4 BYTEs    ???
  13999. 12Ch    DWORD    pointer to first process instance data record in system memory
  14000. 130h    DWORD    pointer to last process instance data record in system memory
  14001.         (from INT 15/AX=DE27h, see below)
  14002. 134h  8 BYTEs    ???
  14003. 13Ch    WORD    size of current environment
  14004. 13Eh    WORD    segment of current environment
  14005. 140h    WORD    segment of current PSP
  14006. 142h    DWORD    entry point of current program
  14007. 146h 10 BYTEs    ???
  14008. ---v2.52 (v2.5x???)
  14009. 150h    BYTE    ???
  14010. 151h    WORD    segment of parent PSP in process
  14011. 153h    WORD    ???
  14012. 155h    WORD    ???
  14013. 157h    WORD    ???
  14014. 159h  4 BYTEs    ???
  14015. 15Dh    WORD    segment of current environment
  14016. 15Fh    WORD    segment of current PSP
  14017. 161h    WORD    segment of ???
  14018. 162h    WORD    ???
  14019. 164h  3 BYTEs    ???
  14020. 168h 1024 BYTEs process's interrupt vector table
  14021. 568h 120 BYTEs    ???
  14022. 5E0h        first MCB in process
  14023. ---v2.60
  14024. 150h    WORD    segment of parent PSP in process
  14025. 152h    WORD    ???
  14026. 154h    WORD    ???
  14027. 156h    WORD    ???
  14028. 158h  4 BYTEs    ???
  14029. 15Ch    WORD    segment of current environment
  14030. 15Eh    WORD    segment of current PSP
  14031. 160h    WORD    segment of ???
  14032. 162h    WORD    ???
  14033. 164h 1024 BYTEs process's interrupt vector table
  14034. 564h 108 BYTEs    ???
  14035. 5D0h        first MCB in process
  14036.  
  14037. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  14038. Offset    Size    Description    (Table 0288)
  14039.  00h    DWORD    pointer to next record of same type or 00000000
  14040.  04h    DWORD    pointer to previous record of same type or 00000000
  14041.  08h    DWORD    pointer to source area of memory during restore state
  14042.  0Ch    WORD    number of bytes to save/restore
  14043.  0Eh    DWORD    pointer to destination area of memory during restore state
  14044.  12h    WORD    ??? (0)
  14045.  14h  N BYTEs    source memory buffer during restore state
  14046.  
  14047. Format of DESQview script buffer (v2.60):
  14048. Offset    Size    Description    (Table 0289)
  14049.  00h 13 BYTEs    ASCIZ Script filename
  14050.  0Dh 80 BYTEs    ???
  14051.  5Eh  N BYTEs    script records (see #0290)
  14052.  
  14053. Format of one DESQview script record (v2.60):
  14054. Offset    Size    Description    (Table 0290)
  14055.  00h    BYTE    signature 12h
  14056.  01h 18 BYTEs    blank-padded script name
  14057.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  14058.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  14059.  15h    BYTE    ???
  14060.  16h    WORD    size of script in bytes
  14061.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  14062.           scan code of non-ASCII key)
  14063.  
  14064. Format of DESQview Common Memory Header (v2.31-2.60):
  14065. Offset    Size    Description    (Table 0291)
  14066.  00h    WORD    offset of lowest used block
  14067.  02h    WORD    bytes of commom memory, including header
  14068.  04h    WORD    offset of first free block
  14069.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  14070. Note:    the above is located at the beginning of the commom memory segment
  14071. SeeAlso: #0292,#0293,#0298
  14072.  
  14073. Format of DESQview Free block header:
  14074. Offset    Size    Description    (Table 0292)
  14075.  00h    WORD    size of block in bytes including header
  14076.  02h    WORD    offset of next free block
  14077.  04h  N BYTEs    free block
  14078. SeeAlso: #0291,#0293
  14079.  
  14080. Format of DESQview Used block header:
  14081. Offset    Size    Description    (Table 0293)
  14082.  00h    WORD    size of block in bytes including header
  14083.  02h  N BYTEs    used block
  14084. SeeAlso: #0291,#0292
  14085. --------Q-151017-----------------------------
  14086. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  14087.     AX = 1017h
  14088. Return: pops up "Programming error" window in DV 2.x
  14089. --------Q-151018-----------------------------
  14090. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  14091.     AX = 1018h
  14092.     BH = column
  14093.     BL = row
  14094.     ES = segment of object handle for window below which to search
  14095.          0000h = start search with topmost window
  14096. Return: ES = segment of object handle for window which is visible at the
  14097.            indicated position, or covered by indicated window
  14098.         0000h if no window
  14099. SeeAlso: AX=1023h,AX=1024h
  14100. --------Q-151019-----------------------------
  14101. INT 15 - TopView - "SOUND" - MAKE TONE
  14102.     AX = 1019h
  14103.     BX = frequency in Hertz (0000h = silence)
  14104.     CX = duration in clock ticks (18.2 ticks/sec)
  14105. Return: immediately, tone continues to completion
  14106. Notes:    if another tone is already playing, the new tone does not start until
  14107.       completion of the previous one.  Up to 32 tones may be queued before
  14108.       the process is blocked until a note completes.
  14109.     in DV 2.00, the lowest tone allowed is 20 Hz
  14110.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  14111.       notes are also cancelled
  14112. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  14113. --------Q-15101A-----------------------------
  14114. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  14115.     AX = 101Ah
  14116. Return: stack switched
  14117. Notes:    this call may not be nested; a second call must be preceded by a call
  14118.       to "USTACK" (AX=1025h)
  14119.     while TopView requires many API calls to be executed while on the
  14120.       task's internal stack, DESQview allows those calls to be executed
  14121.       regardless of the current stack
  14122. SeeAlso: AX=1025h
  14123. --------Q-15101B-----------------------------
  14124. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  14125.     AX = 101Bh
  14126. Return: task-switching temporarily disabled
  14127. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  14128.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  14129.       will again be disabled)
  14130.     suspends the caller until DOS is free
  14131. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  14132. SeeAlso: INT 60/DI=0602h
  14133. --------Q-15101C-----------------------------
  14134. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  14135.     AX = 101Ch
  14136. Return: task-switching enabled
  14137. Note:    this API call may be made from within a hardware interrupt handler
  14138. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  14139. --------Q-15101D-----------------------------
  14140. INT 15 - TopView - "STOP" - STOP TASK
  14141.     AX = 101Dh
  14142.     ES = segment of object handle for task to be stopped
  14143.          (== handle of main window for that task)
  14144. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  14145. Note:    once a task has been stopped, additional "STOP"s are ignored
  14146. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  14147.       current task
  14148. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  14149. --------Q-15101E-----------------------------
  14150. INT 15 - TopView - "START" - START TASK
  14151.     AX = 101Eh
  14152.     ES = segment of object handle for task to be started
  14153.          (== handle of main window for that task)
  14154. Return: indicated task is started up again
  14155. Note:    once a task has been started, additional "START"s are ignored
  14156. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  14157. --------Q-15101F-----------------------------
  14158. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  14159.     AX = 101Fh
  14160.     BX = bit fields
  14161.          bits 0-12: number of characters to display
  14162.          bits 13,14: which mouse button may be pressed to remove window
  14163.              00 = either
  14164.              01 = left
  14165.              10 = right
  14166.              11 = either
  14167.          bit 15: beep if 1
  14168.     ES:DI -> text of message
  14169.     CH = width of error window (0 = default)
  14170.     CL = height of error window (0 = default)
  14171.     DX = segment of object handle
  14172. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  14173. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  14174. --------Q-151020-----------------------------
  14175. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  14176.     AX = 1020h
  14177. Return: pops up "Programming error" window in DV v2.00+
  14178. --------Q-151021-----------------------------
  14179. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  14180.     AX = 1021h
  14181.     BX = segment of object handle for task to interrupt (not self)
  14182.     DX:CX -> FAR routine to jump to next time task is run
  14183. Return: nothing
  14184. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  14185.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  14186.       needs to be preserved
  14187.     multiple PGMINTs to a single task are processed last-in first-out
  14188.     if the other task is in a DOS or DV API call, the interruption will
  14189.       occur on return from that call
  14190. --------Q-151022BX0000-----------------------
  14191. INT 15 - TopView - "GETVER" - GET VERSION
  14192.     AX = 1022h
  14193.     BX = 0000h
  14194. Return: BX nonzero, TopView or compatible loaded
  14195.     (BL = major version, BH = minor version)
  14196. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  14197. --------Q-151023-----------------------------
  14198. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  14199.     AX = 1023h
  14200.     BX = segment of object handle for parent window within which to
  14201.            position the window (0 = full screen)
  14202.     ES = segment of object handle for window to be positioned
  14203.     DL = general window position (see #0294)
  14204.     CH = number of columns to offset from position specified by DL
  14205.     CL = number of rows to offset from position specified by DL
  14206. Return: nothing
  14207.  
  14208. Bitfields for TopView general window position:
  14209. Bit(s)    Description    (Table 0294)
  14210.  0,1    horizontal position
  14211.     00 = current, 01 = center, 10 = left, 11 = right
  14212.  2,3    vertical position
  14213.     00 = current, 01 = center, 10 = top, 11 = bottom
  14214.  4    don't redraw screen if set
  14215.  5-7    not used
  14216. --------Q-151024-----------------------------
  14217. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  14218.     AX = 1024h
  14219.     BX = segment of object handle for window
  14220.           (0 = use default)
  14221. Return: ES:DI -> virtual screen
  14222.     CX = size of virtual screen in bytes
  14223.     DL = 00h text screen
  14224.          01h graphics screen
  14225. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  14226. --------Q-151025-----------------------------
  14227. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  14228.     AX = 1025h
  14229. Return: stack switched back
  14230. Notes:    call only after having switched to internal stack with AX=101Ah
  14231.     while TopView requires many API calls to be executed while on the
  14232.       task's private stack, DESQview allows those calls to be executed
  14233.       regardless of the current stack
  14234. SeeAlso: AX=101Ah
  14235. --------Q-1510-------------------------------
  14236. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  14237.     AH = 10h
  14238.     AL = 26h thru 2Ah
  14239. Return: pops up "Programming error" window in DV 2.x
  14240. --------Q-15102B-----------------------------
  14241. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  14242.     AX = 102Bh
  14243.     BX = segment of object handle for task
  14244. Return: nothing
  14245. Note:    forces a task which is waiting on its objectq to continue by placing
  14246.       the handle for the task on the objectq
  14247. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  14248. --------Q-15102C-----------------------------
  14249. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  14250.     AX = 102Ch
  14251.     ES:DI -> contents of .PIF/.DVP file (see #0295)
  14252.     BX = size of .PIF/.DVP info
  14253. Return: BX = segment of object handle for new task
  14254.          0000h on error
  14255. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  14256.  
  14257. Format of .PIF/.DVP file:
  14258. Offset    Size    Description    (Table 0295)
  14259.  00h    BYTE    reserved (0)
  14260.  01h    BYTE    checksum of bytes 02h through 170h
  14261.  02h 30 BYTEs    blank-padded program title
  14262.  20h    WORD    maximum memory to allocate to partition in KB
  14263.  22h    WORD    minimum memory required in KB
  14264.  24h 64 BYTEs    ASCIZ program pathname
  14265.  64h    BYTE    default drive letter ('A',...)
  14266.  65h 64 BYTEs    ASCIZ default directory name
  14267.  A5h 64 BYTEs    ASCIZ program parameters
  14268.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  14269.  E6h    BYTE    number of text pages used
  14270.  E7h    BYTE    number of first interrupt to save
  14271.  E8h    BYTE    number of last interrupt to save
  14272.  E9h    BYTE    rows in virtual screen buffer
  14273.  EAh    BYTE    columns in virtual screen buffer
  14274.  EBh    BYTE    initial window position, row
  14275.  ECh    BYTE    initial window position, column
  14276.  EDh    WORD    system memory in KB
  14277.  EFh 64 BYTEs    ASCIZ shared program name
  14278. 12Fh 64 BYTEs    ASCIZ shared program data file
  14279. 16Fh    BYTE    flags1
  14280.         bit 7: writes text directly to screen
  14281.         bit 6: runs in foreground only (see also offset 184h)
  14282.         bit 5: uses math coprocessor
  14283.         bit 4: accesses system keyboard buffer directly
  14284.         bits 3-1: reserved (0)
  14285.         bit 0: swappable
  14286. 170h    BYTE    flags2
  14287.         bit 6: uses command-line parameters in field at A5h
  14288.         bit 5: swaps interrupt vectors
  14289. ---information unique to .DVP files---
  14290. 171h  2 BYTEs    keys to use on open menu
  14291. 173h    WORD    size of script buffer in bytes
  14292. 175h    WORD    automatically give up CPU after this many tests for keyboard
  14293.           input in one clock tick (default 0 = never)
  14294. 177h    BYTE    nonzero = "uses own colors"
  14295. 178h    BYTE    nonzero if application swappable
  14296. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  14297.         in actual .DVP files, frequently 01h
  14298. 17Ch    BYTE    nonzero to automatically close on exit (see also offset 18Bh)
  14299. 17Dh    BYTE    nonzero if copy-protect floppy is required
  14300. ---information unique to DESQview 2.0+---
  14301. 17Eh    BYTE    .DVP version number
  14302.         00h DESQview v1.2+
  14303.         01h DESQview v2.0+
  14304.         02h DESQview v2.2+
  14305. 17Fh    BYTE    reserved (0)
  14306. 180h    BYTE    initial number of rows in physical window
  14307. 181h    BYTE    initial number of columns in physical window
  14308. 182h    WORD    maximum expanded memory to allow, in KB
  14309. 184h    BYTE    flags3
  14310.         bit 7: automatically assign window position
  14311.         bit 5: maximum memory value has been specified
  14312.         bit 4: disallow "Close" command
  14313.         bit 3: foreground-only when doing graphics
  14314.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  14315.         bit 2: don't virtualize (see also offset 18Bh)
  14316.         bit 1: foreground-only during DOS calls
  14317.             set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  14318. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  14319.         (see #0296)
  14320. 186h    BYTE    number of graphics pages used
  14321. 187h    WORD    extra system memory size
  14322. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  14323. ---information unique to DESQview 2.2+---
  14324. 18Ah    BYTE    serial port usage
  14325.         FFh uses all serial ports
  14326.         00h no serial ports
  14327.         01h only COM1
  14328.         02h only COM2
  14329. 18Bh    BYTE    flags4
  14330.         bit 7: automatically close application on exit if .COM or .EXE
  14331.             specified (see also offset 17Ch)
  14332.         bit 6: swappable if not using serial ports
  14333.         bit 5: start program with window hidden (v2.26+)
  14334.         bit 4: start program in background (v2.26+)
  14335.         bit 3: virtualize text (see also offset 184h)
  14336.         bit 2: virtualize graphics (see also offset 184h)
  14337.         bit 1: share CPU when foreground
  14338.         bit 0: share EGA when foreground and zoomed
  14339. 18Ch    BYTE    protection level for 386 machines
  14340. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  14341. ---information unique to DESQview/X 1.0---
  14342. 18Dh    BYTE    X flags
  14343.         bits 3-7: unused (0)
  14344.         bit 2: don't display wait message when opening window
  14345.         bit 1: don't display DOS window
  14346.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  14347.                (NEWPROC) inherit DOS client layer usage
  14348. 18Eh    BYTE    X keyboard behavior (0-3)
  14349. 18Fh    BYTE    font scaling
  14350.         00h fixed fonts
  14351.         01h scalable fonts
  14352. 190h 10 BYTEs    reserved (0)
  14353. 19Ah    WORD    length of data follownig XDVP signature
  14354. 19Ch  4 BYTEs    signature "XDVP"
  14355. 1A0h  N BYTEs    list of variable length records (see #0297)
  14356.  
  14357. Bitfields for DESQview keyboard conflict level:
  14358. Bit(s)    Description    (Table 0296)
  14359.  3    save/restore entire INT 09 handler state every taskswtch
  14360.  2    take special precautions for programs which read the BIOS keyboard
  14361.       buffer directly from memory
  14362.  1    never indicate keystroke available during scripts/xfers
  14363.  0    only indicate keystroke available every sixth poll
  14364.  
  14365. Format of DESQview/X variable length record:
  14366. Offset    Size    Description    (Table 0297)
  14367.  00h    WORD    length of following record, 0000h if end of record list
  14368.  02h    BYTE    record type
  14369.         01h script filename, up to 64 characters
  14370.         02h command-line parameters (allows >64 characters on cmdline)
  14371.         03h environment inheritance
  14372.         04h environment string
  14373.         05h starting window position
  14374. ---types 01h,02h,04h---
  14375.  03h  N BYTEs    ASCII data
  14376. ---type 03h---
  14377.  03h    BYTE    inheritance
  14378.         00h do not inherit
  14379.         01h inherit environment
  14380. ---type 05h---
  14381.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  14382.         starting row, starting column, starting height, starting width
  14383. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  14384.       only the last instance of each type is used; multiple occurrences of
  14385.       type 04h are concatenated
  14386. --------Q-15102D-----------------------------
  14387. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  14388.     AX = 102Dh
  14389.     BL = subfunction
  14390.          00h determine whether using keyboard mouse
  14391.         Return: BL = 00h using real mouse
  14392.                  01h using keyboard mouse
  14393.          01h turn keyboard mouse on
  14394.          02h turn keyboard mouse off
  14395. --------Q-15102E-----------------------------
  14396. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  14397.     AX = 102Eh
  14398.     BX = number of bytes
  14399. Return: AX = status
  14400.         0000h successful
  14401.         ES:DI -> allocated system memory (see #0298)
  14402.         0001h failed
  14403.         ES:DI = 0000h:0000h
  14404. Note:    under DV 2.42, this call is identical to AX=1001h
  14405. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  14406.  
  14407. Format of DESQview system memory block header:
  14408. Offset    Size    Description    (Table 0298)
  14409.  00h    WORD    segment of next header or 0000h
  14410.  02h    WORD    segment of previous header or 0000h
  14411.  04h    WORD    size of block in paragraphs, including header
  14412.  06h    BYTE    availability flag (00h in use, 01h free)
  14413. Note:    this header is located one paragraph before the memory block proper
  14414. SeeAlso: #0291
  14415. --------Q-1511-------------------------------
  14416. INT 15 - TopView commands
  14417.     AH = 11h
  14418.     AL = various (except 17h)
  14419. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  14420.       see those below
  14421. SeeAlso: AH=DEh
  14422. --------T-1511-------------------------------
  14423. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  14424.     AH = 11h
  14425.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  14426.             request (max len = 127)
  14427. Return: AX = status (SYS_OK or SYS_ERROR)
  14428. SeeAlso: AH=0Ch"VMiX"
  14429. --------T-1511-------------------------------
  14430. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  14431.     AH = 11h
  14432. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  14433. SeeAlso: AH=12h"MultiDOS"
  14434. Index:    hotkeys;MultiDOS Plus
  14435. --------Q-151117BX0000-----------------------
  14436. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  14437.     AX = 1117h
  14438.     BX = 0000h    get current mapping context without setting
  14439.          nonzero    set new mapping context
  14440. Return: BX = mapping context in effect before call
  14441.     interrupts enabled
  14442. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  14443.     mapping contexts determine conventional-memory addressability; setting
  14444.       a mapping context ensures that the associated program and data areas
  14445.       are in memory for access.  Usable by drivers, TSRs and shared
  14446.       programs.
  14447.     caller need not be running under DESQview, but must ensure that the
  14448.       stack in use will not be mapped out by the call
  14449. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  14450. --------m-1511DE-----------------------------
  14451. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  14452.     AX = 11DEh
  14453. Return: CF clear if installed
  14454.         AX = segment at which QEXT.SYS is located
  14455. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  14456.       versions also implement the XMS standard
  14457. Note:    a private entry point (see #0299) may be found by searching the
  14458.       beginning of the returned segment for the signature string
  14459.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  14460.       prior to the signature contains the QEXT version number in BCD,
  14461.       and the word prior to that contains the offset within the QEXT
  14462.       code segment of the private entry point
  14463. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  14464.  
  14465. (Table 0299)
  14466. Call QEXT.SYS private entry point with:
  14467.     AH = 00h ???
  14468.     AH = nonzero ???
  14469. --------T-1512-------------------------------
  14470. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  14471.     AH = 12h
  14472.     STACK:    WORD    process ID
  14473. Return: AX = status (SYS_OK or SYS_ERROR)
  14474. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  14475. --------T-1512-------------------------------
  14476. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  14477.     AH = 12h
  14478. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  14479. SeeAlso: AH=11h"MultiDOS"
  14480. Index:    hotkeys;MultiDOS Plus
  14481. --------Q-1512--BH00-------------------------
  14482. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  14483.     AH = 12h
  14484.     BH = 00h
  14485.     BL = which handle to return
  14486.         00h handle in DWORD on top of stack
  14487.         01h current task's window handle
  14488.         02h given task's mailbox handle (task's handle on stack)
  14489.         03h current task's mailbox handle
  14490.         04h given task's keyboard handle (task's handle on stack)
  14491.         05h current task's keyboard object handle
  14492.         06h given task's OBJECTQ handle (task's handle on stack)
  14493.         07h current task's OBJECTQ handle
  14494.         08h      \
  14495.           thru > return 0000:0000 under DV < 2.26
  14496.         10h      /
  14497.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  14498.         0Dh (2.26+) task handle of owner (parent) of current task
  14499. Return: DWORD on top of stack is object handle
  14500. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  14501.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  14502.       window)
  14503. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  14504. --------Q-1512--BH01-------------------------
  14505. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  14506.     AH = 12h
  14507.     BH = 01h
  14508.     BL = object type to create
  14509.         00h (DV 2.0x only) handle is DWORD on top of stack
  14510.         01h (DV 2.0x only) use task's window handle
  14511.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  14512.         03h (DV 2.0x only) current task's mailbox
  14513.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  14514.         05h (DV 2.0x only) current task's keyboard object
  14515.         08h WINDOW class
  14516.         09h MAILBOX class
  14517.         0Ah KEYBOARD class
  14518.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  14519.         0Fh POINTER object
  14520.         10h PANEL object
  14521.     STACK: (if window object or WINDOW class)
  14522.            DWORD address to jump to (no new task if high word == 0)
  14523.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  14524.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  14525.            DWORD bytes system memory for input buffer for READ/READN
  14526.             (0 == none, -1 == default--same as logical window size)
  14527.            DWORD window size, columns
  14528.            DWORD window size, rows
  14529.            DWORD length of window title
  14530.            DWORD address of window title
  14531. Return: DWORD on top of stack is new object handle
  14532. Notes:    if a new task is created, it is started with
  14533.       AX = BX = SI = DI = BP = 0
  14534.       DX:CX = handle of parent task
  14535.       DS = ES = SS = segment of private stack (and new task's handle)
  14536.     new windows are orphans, inherit the colors/hidden status of the
  14537.       creating task's window, and are placed in the upper left hand corner
  14538.       of the screen but not automatically redrawn
  14539.     new keyboards are closed, and have all object bits cleared except for
  14540.       the hardware cursor bit
  14541. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  14542. --------Q-1512--BH02-------------------------
  14543. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  14544.     AH = 12h
  14545.     BH = 02h
  14546.     BL = object
  14547.         00h handle in DWORD on top of stack
  14548.         window: close window and free
  14549.         timer: free timer
  14550.         panel: free panel object
  14551.         pointer: free pointer
  14552.         01h task's window handle - kills task, never returns
  14553.         02h given task's mailbox (task's handle on top of stack)
  14554.         03h current task's mailbox
  14555.         04h given task's keyboard (task's handle on top of stack)
  14556.         05h current task's keyboard object
  14557. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  14558.       task windows also free any mailbox, objectq, and panel objects held
  14559.       by the task and any child tasks
  14560.     if the keyboard being freed is the default keyboard for a task, this
  14561.       call is equivalent to CLOSE
  14562.     panel and pointer objects are automatically closed if open
  14563. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  14564. --------Q-1512--BH03-------------------------
  14565. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  14566.     AH = 12h
  14567.     BH = 03h
  14568.     BL = object
  14569.         00h mailbox handle in DWORD on top of stack
  14570.         02h sender of last msg read from mailbox (task's handle on stack)
  14571.         03h sender of last msg read from current task's mailbox
  14572. Return: DWORD on stack is task handle of message sender
  14573. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  14574. --------Q-1512--BH03-------------------------
  14575. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  14576.     AH = 12h
  14577.     BH = 03h
  14578.     BL = window to be connected
  14579.         00h handle of window to be attached in DWORD on top of stack
  14580.         01h attach current task's main window
  14581.     STACK: DWORD handle of window to attach to or 00000000h to detach
  14582. Return: STACK popped
  14583. Notes:    when two windows are connected, both will move if the user moves either
  14584.     multiple windows may be attached to a single window, but each window
  14585.       may only be attached to one window at a time
  14586. SeeAlso: AH=12h/BH=83h
  14587. --------Q-1512--BX0300-----------------------
  14588. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  14589.     AH = 12h
  14590.     BX = 0300h
  14591.     STACK: DWORD handle of panel object (see #0300)
  14592. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  14593.            DWORD address of directory
  14594. Note:    a null string is returned if the object is not open
  14595. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  14596.  
  14597. Format of TopView panel file:
  14598. Offset    Size    Description    (Table 0300)
  14599.  00h  2 BYTEs    C0h C3h
  14600.  02h    BYTE    number of panels in file
  14601.  03h    for each panel in file:
  14602.         8 BYTEs  blank-padded panel name
  14603.           DWORD  panel offset in file
  14604.           WORD   panel length
  14605.     data for panels (each consists of one or more window/query/manager
  14606.       streams); first byte of each panel must be 1Bh, fifth byte must be
  14607.       E5h
  14608. --------Q-1512--BH04-------------------------
  14609. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  14610.     AH = 12h
  14611.     BH = 04h
  14612.     BL = window to read from
  14613.         00h handle is DWORD on top of stack
  14614.         01h use calling task's default window
  14615.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  14616.         0Dh (DV 2.26+) default window of parent task of current task
  14617. Return: STACK:    DWORD number of bytes read
  14618.         DWORD address of buffer
  14619. Notes:    reading starts at the current logical cursor position; the cursor is
  14620.       updated to point at the character following the last one read
  14621.     any translucent blanks (FFh) which are visible on screen are changed
  14622.       to the character which is seen through them
  14623.     the string produced by the read is placed in an input buffer which may
  14624.       be reused by the next READ or READN of a window
  14625.     window stream opcodes D8h and D9h determine whether the read returns
  14626.       characters or attributes
  14627. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  14628. --------Q-1512--BH04-------------------------
  14629. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  14630.     AH = 12h
  14631.     BH = 04h
  14632.     BL = object
  14633.         00h handle is DWORD on top of stack
  14634.         mailbox: wait for and get next message
  14635.         keyboard: wait for and get pointer to next input buffer
  14636.         pointer: wait for and get next message
  14637.         02h get next message from mailbox (task's handle on top of stack)
  14638.         03h get next message from current task's mailbox
  14639.         04h get the next input from keyboard (handle on top of stack)
  14640.         05h get the next input from task's default keyboard
  14641.         06h wait for input from any object in OBJECTQ (handle on stack)
  14642.         07h wait for input from any object in task's default OBJECTQ
  14643. Return: STACK: (if objectq) DWORD handle of object with input
  14644.            (otherwise)  DWORD number of bytes
  14645.                 DWORD address of pointer message (see #0301)
  14646. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  14647.       containing the character code as returned by the BIOS; the BIOS scan
  14648.       code is available via the STATUS call if the character is zero
  14649.     for a keyboard in field mode, the input buffer format is determined
  14650.       by the field table header for the window the keyboard is attached to
  14651.     keyboard input buffers and mailbox message buffers may be invalidated
  14652.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  14653. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  14654.  
  14655. Format of DESQview pointer message:
  14656. Offset    Size    Description    (Table 0301)
  14657.  00h    WORD    row
  14658.  02h    WORD    column
  14659.  04h    BYTE    status (see #0302)
  14660.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  14661.  
  14662. Bitfields for DESQview pointer status:
  14663. Bit(s)    Description    (Table 0302)
  14664.  7-2    number of clicks-1 if multiple-click mode active
  14665.  7    set when press/release mode active and button pressed
  14666.  6    set when press/release mode active and button released
  14667.  1-0    button pressed (00=none,01=button1,10=button2)
  14668. --------Q-1512--BX0400-----------------------
  14669. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  14670.     AH = 12h
  14671.     BX = 0400h
  14672.     STACK: DWORD timer's handle
  14673. Return: after timer expires
  14674.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  14675. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  14676. --------Q-1512--BX0400-----------------------
  14677. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  14678.     AH = 12h
  14679.     BX = 0400h
  14680.     STACK: DWORD handle of panel object
  14681.            DWORD window's handle (or 0 for current task's window)
  14682.            DWORD length of panel name
  14683.            DWORD pointer to panel name
  14684. Return: STACK: DWORD handle of window which was used
  14685.            DWORD handle of keyboard or 0
  14686. Notes:    status of APPLY may be checked with STATUS message
  14687.     panel MUST have the following format
  14688.       first byte must be 1Bh (i.e. must start with a stream)
  14689.       first opcode in stream must be E5h
  14690.         single byte arg of opcode is interpreted thus:
  14691.           bits 7,6    11 means create new window
  14692.             10 means create new field table for existing window
  14693.             01 means use existing window and field table
  14694.           bit 5 if set, panel contains a field table
  14695.             (creates a new keyboard and puts it in field mode)
  14696.           bit 4 if set, panel contains input fields
  14697.           bit 3 if set, panel contains select fields but no input fields
  14698.     if the panel contains input or select fields, a keyboard handle is
  14699.       returned; either the window's current open keyboard or a
  14700.       newly-created keyboard object.  The caller should read that keyboard
  14701.       to obtain input from the panel.
  14702. SeeAlso: AH=12h/BH=84h
  14703. --------Q-1512--BH05------------------------
  14704. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  14705.     AH = 12h
  14706.     BH = 05h
  14707.     BL = object
  14708.         00h handle is DWORD on top of stack
  14709.         timer: start timer to end at a specified time
  14710.         keyboard: add input buffer to queue
  14711.         pointer: move pointer icon to specified position
  14712.         02h send message by value/status=0 to mbox (task's handle on stack)
  14713.         03h send message by value/status=0 to current task's mailbox
  14714.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  14715.         05h add input buffer to task's default KEYBOARD queue
  14716.         06h add an object to OBJECTQ (handle on top of stack)
  14717.         07h add an object to task's default OBJECTQ
  14718.     STACK: (if mailbox)  DWORD length
  14719.                  DWORD address
  14720.            (if keyboard) DWORD status (scan code in keystroke mode)
  14721.                  DWORD length (should be 1 in keystroke mode)
  14722.                  DWORD address
  14723.            (if objectq)  DWORD handle of object to add
  14724.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  14725.                    only accurate to 1/18 sec)
  14726.            (if pointer)  DWORD column relative to origin of window
  14727.                  DWORD row relative to origin of window
  14728. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  14729.     the data and status written to a keyboard object must match the format
  14730.       returned by the keyboard object in the current mode
  14731.     the pointer position is scaled according to the current scaling factors
  14732. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  14733. --------Q-1512--BH05-------------------------
  14734. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  14735.     AH = 12h
  14736.     BH = 05h
  14737.     BL = window to write to
  14738.         00h DWORD on top of stack is window handle
  14739.         01h write string to task's default window
  14740.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  14741.         0Dh (DV 2.26+) default window of parent of current task
  14742.     STACK: DWORD object handle if handle passed on stack
  14743.            DWORD total length of string (high word == 0)
  14744.            DWORD address of string to display (see #0303)
  14745. Return: indicated actions performed
  14746.     a. non-control characters are displayed (opcodes DEh and DFh control
  14747.        whether the attributes are left or changed to the current attrib)
  14748.     b. CR/LF/BS/Tab cause the usual cursor movement
  14749.     c. ESC starts a data structure with additional commands if following
  14750.        byte is less than 20h; otherwise, it is written to the window
  14751.     STACK:    DWORD handle of new window if window stream opcode E6h
  14752.         else nothing
  14753. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  14754.  
  14755. Format of stream data structure:
  14756. Offset    Size    Description    (Table 0303)
  14757.  00h    BYTE    1Bh magic value identifying start of stream
  14758.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  14759.         (see #0304,#0310,#0311,#0312)
  14760.  02h    WORD    length of remainder of stream in bytes
  14761.     var-length fields follow, each an OPCODE followed by
  14762.          zero or more args
  14763.  
  14764. (Table 0304)
  14765. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  14766. Opcodes:args
  14767.  00h  display 20h blanks with the default attribute
  14768.  01h-1Fh display OPCODE blanks with the default attribute
  14769.  20h  display char with default attribute 20h times
  14770.     BYTE char to repeat
  14771.  21h-3Fh display char with default attribute OPCODE-20h times
  14772.     BYTE char to repeat
  14773.  40h  display 20h blanks with specified attribute
  14774.     BYTE attribute of blanks
  14775.  41h-5Fh display OPCODE-40h blanks with specified attribute
  14776.     BYTE attribute of blanks
  14777.  60h  display next 20h characters
  14778.     20h BYTEs characters to display
  14779.  61h-7Fh display next OPCODE-60h characters
  14780.     N BYTEs characters to display
  14781.  80h-87h display N blanks with default attribute
  14782.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  14783.           [000h means 800h]
  14784.  88h-8Fh display N copies of the character
  14785.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  14786.           [000h means 800h]
  14787.     BYTE character to repeat
  14788.  90h-97h display N blanks with specified attribute
  14789.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  14790.           [000h means 800h]
  14791.     BYTE attribute
  14792.  98h-9Fh display string at logical cursor pos
  14793.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  14794.           [000h means 800h]
  14795.     N BYTEs string to display
  14796.  A0h  set logical cursor row
  14797.     BYTE row number (0 is top)
  14798.  A1h  set logical cursor column
  14799.     BYTE column number (0 is leftmost)
  14800.  A2h  set top edge of scrolling region
  14801.     BYTE row
  14802.  A3h  set left edge of scrolling region
  14803.     BYTE column
  14804.  A4h  set row of physical window position
  14805.     BYTE line
  14806.  A5h  set column of physical window position
  14807.     BYTE column
  14808.  A6h  set height of physical window
  14809.     BYTE number of rows
  14810.  A7h  set width of physical window
  14811.     BYTE number of columns
  14812.  A8h  set viewport row
  14813.     BYTE row
  14814.  A9h  set viewport column
  14815.     BYTE column
  14816.  AAh  set virtual screen height [contents of window unpredictable after]
  14817.     BYTE rows
  14818.  ABh  set virtual screen width [contents of window unpredictable after]
  14819.     BYTE columns
  14820.  ACh-AEh unused
  14821.  AFh  set compatible/preferred video modes
  14822.     BYTE compatibility/preference mask
  14823.         bit 7    compatible with monochrome
  14824.         bit 6    compatible with color text, EGA/VGA graphics
  14825.         bit 5    compatible with medium-resolution CGA graphics
  14826.         bit 4    compatible with high-resolution CGA graphics
  14827.         bit 3    prefer monochrome
  14828.         bit 2    prefer color text, EGA/VGA graphics
  14829.         bit 1    prefer medium-resolution CGA graphics
  14830.         bit 0    prefer high-resolution CGA graphics
  14831.  B0h  move logical cursor down
  14832.     BYTE number of rows (signed, negative values move up)
  14833.         [if rows=0 and hardware cursor owner, update hardware cursor]
  14834.  B1h  move logical cursor right
  14835.     BYTE number of columns (signed, negative values move left)
  14836.         [if cols=0 and hardware cursor owner, update hardware cursor]
  14837.  B2h  shift top edge of scrolling region
  14838.     BYTE number of rows (signed)
  14839.  B3h  shift left edge of scrolling region
  14840.     BYTE number of columns (signed)
  14841.  B4h  shift physical window down
  14842.     BYTE number of lines (signed)
  14843.  B5h  shift physical window right
  14844.     BYTE number of columns (signed)
  14845.  B6h  expand physical window vertically
  14846.     BYTE number of lines (signed)
  14847.  B7h  expand physical window horizontally
  14848.     BYTE number of columns (signed)
  14849.  B8h  adjust viewport row
  14850.     BYTE number of rows (signed)
  14851.  B9h  adjust viewport column
  14852.     BYTE number of columns (signed)
  14853.  BAh  adjust virtual screen height [contents of window unpredict after]
  14854.     BYTE number of rows to increase (signed)
  14855.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  14856.     BYTE number of columns to increase (signed)
  14857.  BCh-BFh reserved (currently unused)
  14858.  C0h  set logical cursor position
  14859.     BYTE row number (0 is top border)
  14860.     BYTE column number (0 is left border)
  14861.  C1h  set top left corner of scrolling region
  14862.     BYTE row
  14863.     BYTE column
  14864.  C2h  set physical window pos
  14865.     BYTE upper left row (no top border if 0)
  14866.     BYTE upper left column (no left border if 0)
  14867.  C3h  set current window size
  14868.     BYTE number of rows
  14869.     BYTE number of columns
  14870.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  14871.       in window)
  14872.     BYTE row
  14873.     BYTE column
  14874.  C5h  set size of virtual screen [contents unpredictable afterwards]
  14875.     BYTE number of rows
  14876.     BYTE number of columns
  14877.  C6h  unused
  14878.  C7h  unused
  14879.  C8h  set logical cursor relative to current position
  14880.     BYTE number of rows to move down (signed)
  14881.     BYTE number of columns to move right (signed)
  14882.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  14883.  C9h  shift top left corner of scrolling region
  14884.     BYTE number of rows (signed)
  14885.     BYTE number of columns (signed)
  14886.  CAh  set window pos relative to current position
  14887.     BYTE number of rows to shift down (signed)
  14888.     BYTE number of columns to shift right (signed)
  14889.  CBh  set window size relative to current size
  14890.     BYTE number of rows to expand (signed)
  14891.     BYTE number of cols to expand (signed)
  14892.  CCh  shift viewport relative to current position
  14893.     BYTE rows to shift (signed)
  14894.     BYTE cols to shift (signed)
  14895.  CDh  resize virtual screen
  14896.     BYTE number of rows to expand (signed)
  14897.     BYTE number of columns to expand (signed)
  14898.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  14899.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  14900.  D0h  allow window frame to extend beyond screen
  14901.  D1h  always display a complete frame, even if window extends beyond edge of
  14902.       screen
  14903.  D2h  allow DV to change logical colors on video mode switch (default)
  14904.  D3h  application changes logical attributes
  14905.  D4h  window is visible [must redraw to actually make visible]
  14906.  D5h  window is hidden [must redraw to actually remove]
  14907.  D6h  window has frame (default)
  14908.  D7h  window unframed [must redraw to actually remove frame]
  14909.  D8h  READ/READN will read characters from window (default)
  14910.  D9h  READ/READN will read attributes from window
  14911.  DAh  use logical attributes, which may be remapped (see #0305)
  14912.  DBh  use physical attributes for characters
  14913.  DCh  enable special actions for control characters (default)
  14914.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  14915.       call
  14916.  DEh  write both character and attribute (default)
  14917.  DFh  write character only, leave attribute untouched
  14918.  E0h  repeat following commands through E1h opcode
  14919.     BYTE number of times to repeat (00h means 256 times)
  14920.  E1h  end of commands to repeat, start repeating them
  14921.  E2h  set current output color
  14922.     BYTE color
  14923.  E3h  clear virtual screen from scroll origin to end using current color
  14924.  E4h  redraw window
  14925.  E5h  select menu style
  14926.     BYTE style (normally 18h)
  14927.         bits 5,4 = 01 use two-letter menu entries for remainder of
  14928.           this stream
  14929.  E5h  (panel file only)
  14930.     BYTE modifier
  14931.         bits 7,6 = 11 panel stream creates new window
  14932.              = 10 panel defines new field table for existing window
  14933.              = 01 panel stream uses existing window & field table
  14934.         bit 5 = 1 stream contains a field table (create kyboard object)
  14935.         bit 4 = 1 stream defines input fields (create keyboard object)
  14936.         bit 3 = 1 stream defines select fields but not input fields
  14937.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  14938.         bit 1 reserved
  14939.         bit 0 reserved
  14940.  E6h  create new window and perform rest of manipulations in new window
  14941.     BYTE number of rows
  14942.     BYTE number of columns
  14943.     Return: DWORD object handle of new window returned on stack at end
  14944.     Note:    the window is created with a physical size of 0x0 at the
  14945.           same position as the window to which this stream was sent
  14946.  E7h  no operation
  14947.  E8h  scroll area up (top left corner defined by opcode C1h)
  14948.     BYTE height
  14949.     BYTE width
  14950.  E9h  scroll area down (top left corner defined by opcode C1h)
  14951.     BYTE height
  14952.     BYTE width
  14953.  EAh  scroll area left (top left corner defined by opcode C1h)
  14954.     BYTE height
  14955.     BYTE width
  14956.  EBh  scroll area right (top left corner defined by opcode C1h)
  14957.     BYTE height
  14958.     BYTE width
  14959.  ECh  set logical attributes for window contents
  14960.     BYTE video modes command applies to
  14961.         bit 7    monochrome
  14962.         bit 6    color text, EGA/VGA graphics
  14963.         bit 5    medium-resolution CGA graphics
  14964.         bit 4    high-resolution CGA graphics
  14965.     BYTE which attributes to set
  14966.         bit 7    if set, copy single following byte to indicated attribs
  14967.         bits 4-6  number of first attribute to change - 1
  14968.         bits 0-3  number of consecutive attributes to change
  14969.     N BYTEs new attributes
  14970.  EDh  set logical attributes for window frame
  14971.     BYTE video modes command applies to (see opcode ECh)
  14972.     BYTE which attributes to set
  14973.         bit 7    if set, copy single following byte to indicated attrs
  14974.         bits 4-6  number of first attribute to change - 1
  14975.         bits 0-3  number of consecutive attributes to change
  14976.     N BYTEs new attributes
  14977.           attributes
  14978.                1 = top left corner
  14979.                2 = top right corner
  14980.                3 = bottom left corner
  14981.                4 = bottom right corner
  14982.                5 = top edge
  14983.                6 = bottom edge
  14984.                7 = left edge
  14985.                8 = right edge
  14986.  EEh  set characters for window frame
  14987.     BYTE video modes command applies to (see opcode ECh)
  14988.     BYTE which characters to set
  14989.         bit 7    if set, copy single following byte to indicated chars
  14990.         bits 4-6  number of first character to change - 1
  14991.         bits 0-3  number of consecutive characters to change
  14992.     N BYTEs new chars (same relative position as attributes above)
  14993.  EFh  set window name
  14994.     BYTE length of name (should be in range 0 to logical screen width)
  14995.     N BYTEs name
  14996.  F0h  clear input field to blanks
  14997.     BYTE field number
  14998.  F1h  fill input field with character
  14999.     BYTE field number
  15000.     BYTE char
  15001.  F2h  set color of input field
  15002.     BYTE field number (1-N)
  15003.     BYTE attribute
  15004.  F3h  set initial contents of input field
  15005.     BYTE field number (1-N)
  15006.     N BYTEs enough chars to exactly fill field as defined by op FFh
  15007.  F4h  position cursor to start of specific input field
  15008.     BYTE field number (1-N)
  15009.  F5h  change field table entry
  15010.     BYTE field number
  15011.     7-8 BYTEs field table entry (see opcode FFh below)
  15012.  F6h  set field type
  15013.     BYTE field number
  15014.     BYTE type
  15015.         00h inactive
  15016.         40h output field
  15017.         80h input field
  15018.         C0h deselected field
  15019.         C2h selected field
  15020.  F7h  "broadcast write"    write data to fields with program output bit set in
  15021.       the field table entry, in field number order
  15022.     N BYTEs (total length of all program output fields)
  15023.  F8h  scroll field up a line
  15024.     BYTE field number
  15025.  F9h  scroll field down a line
  15026.     BYTE field number
  15027.  FAh  scroll field left
  15028.     BYTE field number
  15029.  FBh  scroll field right
  15030.     BYTE field number
  15031.  FCh  set field table header
  15032.     6 BYTEs    field table header (see #0306)
  15033.  FDh  reset modified bit for all fields
  15034.  FEh  reset selected and modified bits for all fields
  15035.  FFh  set up input fields
  15036.     6 BYTEs    table header (see #0306)
  15037.     7/8N BYTEs the field table entries, one for each field (see #0308)
  15038.     Note:    DESQview uses and updates the actual copy of the information
  15039.           which is contained in the stream.  Thus this info must remain
  15040.           intact until after the data entry is complete.
  15041.  
  15042. (Table 0305)
  15043. Values for TopView logical attributes:
  15044.  01h    normal text
  15045.  02h    highlighted normal text
  15046.  03h    help text
  15047.  04h    highlighted help text
  15048.  05h    error message
  15049.  06h    highlighted error message
  15050.  07h    emphasized text
  15051.  08h    marked text
  15052.  9-16    reverse video versions of 1-8
  15053.  
  15054. Format of TopView field table header:
  15055. Offset    Size    Description    (Table 0306)
  15056.  00h    BYTE    number of fields (must be <= existing number of fields)
  15057.  01h    BYTE    screen behavior bits (see #0307)
  15058.  02h    BYTE    current input field (updated by DESQview)
  15059.  03h    BYTE    current select field (updated by DESQview)
  15060.  04h    BYTE    attribute for select fields when they are pointed at
  15061.  05h    BYTE    attribute for select fields which have been selected
  15062.  
  15063. Bitfields for TopView screen behavior bits:
  15064. Bit(s)    Description    (Table 0307)
  15065.  7    reserved
  15066.  6    menu items may be selected via keyboard
  15067.  5    left mouse button in "status" mode (press anywhere in window
  15068.       immediately returns control to application)
  15069.  4    right mouse button in "status" mode
  15070.  3    select fields return contents or blanks rather than 'Y' or 'N'
  15071.  2    modified bits reset on return to application
  15072.  1-0    type of data returned
  15073.     00 no data returned on read of keyboard
  15074.     01 data returned as array of characters containing all fields packed
  15075.           together, with no field numbers
  15076.     10 data returned as numbered variable-length records for all fields
  15077.     11 data returned as numbered variable-length records for the fields
  15078.           which were modified
  15079.  
  15080. Format of TopView field table entry:
  15081. Offset    Size    Description    (Table 0308)
  15082.  00h    BYTE    start row      \
  15083.  01h    BYTE    start column  \ if menu selection and start is to
  15084.  02h    BYTE    end row       / right or below end, select from kbd only
  15085.  03h    BYTE    end column   /
  15086.  04h    BYTE    field type (see #0309)
  15087.  05h    BYTE    modifier
  15088.         if type is fill-in, then bit flags to determine behavior
  15089.           bit 7     automatically enter CR when field full
  15090.           bit 6     move to next field when current field is full
  15091.           bit 5     enter text from right end (for numbers)
  15092.           bit 4     force input to uppercase
  15093.           bit 3     clear old contents on first keystroke
  15094.           bit 2     input returned when cursor moves out of
  15095.               modified field ("validate", API level 2.02+)
  15096.           bit 1     reserved
  15097.           bit 0     reserved
  15098.         if select field, first key to press to activate
  15099.           00h if have to point-&-click or is an extended-ASCII
  15100.               keystroke (only if two-key menus enabled)
  15101.  06h    BYTE    (select field only) normal color of field
  15102.  07h    BYTE    second key for select field.  This byte is present iff
  15103.           two-letter menu entries selected with opcode E5h, and in that
  15104.           case is present regardless of field type
  15105.  
  15106. Bitfields for TopView field type:
  15107. Bit(s)    Description    (Table 0309)
  15108.  7,6    field class
  15109.     00 inactive (non-entry) field
  15110.     01 echos keystrokes input to make menu selection
  15111.     10 fill-in field
  15112.     11 select field
  15113.  5    field can be filled by broadcast write (F7h opcode)
  15114.  4    reserved
  15115.  3    reserved
  15116.  2    reserved
  15117.  1    set if field selected
  15118.  0    set if field modified
  15119.  
  15120. (Table 0310)
  15121. Values for MODE 01h "QUERY STREAM" opcodes:
  15122. (valid only for those opcodes listed here)
  15123.  A0h return logical cursor row in next byte
  15124.  A1h return logical cursor column in next byte
  15125.  A2h return top row of scrolling region in next byte
  15126.  A3h return left column of scrolling region in next byte
  15127.  A4h return row of physical window origin in next byte
  15128.  A5h return column of physical window origin in next byte
  15129.  A6h return height of physcial window in next byte
  15130.  A7h return width of physical window in next byte
  15131.  A8h return row of viewport origin in next byte
  15132.  A9h return column of viewport origin in next byte
  15133.  AAh return height of virtual screen in next byte
  15134.  ABh return width of virtual screen in next byte
  15135.  AFh return current video mode in next byte
  15136.  C0h return current logical cursor position in next two bytes
  15137.  C1h return top left corner of scrolling region in next two bytes
  15138.  C2h return current window position in next two bytes
  15139.  C3h return current window size in next two bytes
  15140.  C4h return current viewport origin in next two bytes
  15141.  C5h return current virtual screen size in next two bytes
  15142.  D0h \ overwritten with D0h if frames may fall off screen edge
  15143.  D1h /               D1h if frames always displayed entirely
  15144.  D2h \ overwritten with D2h if DESQview controls color palette
  15145.  D3h /               D3h if application changes color palette
  15146.  D4h \ overwritten with D4h if window visible
  15147.  D5h /               D5h if window hidden
  15148.  D6h \ overwritten with D6h if window has frame
  15149.  D7h /               D7h if window unframed
  15150.  D8h \ overwritten with D8h if reading characters from window
  15151.  D9h /               D9h if reading attributes from window
  15152.  DAh \ overwritten with DAh if using logical attributes
  15153.  DBh /               DBh if using physical attributes
  15154.  DCh \ overwritten with DCh if TTY control char interpretation on
  15155.  DDh /               DDh if TTY control char interpretation off
  15156.  DEh \ overwritten with DEh if writing both characters and attributes
  15157.  DFh /               DFh if leaving attributes untouched
  15158.  E2h return current color in next byte
  15159.  ECh get logical attributes for window contents
  15160.     BYTE execute call if currently in specified video mode
  15161.         bit 7    monochrome
  15162.         bit 6    color text, EGA/VGA graphics
  15163.         bit 5    medium-resolution CGA graphics
  15164.         bit 4    high-resolution CGA graphics
  15165.     BYTE which attributes to get
  15166.         bit 7    unused???
  15167.         bits 4-6 first attribute to get - 1
  15168.         bits 0-3 number of consecutive attributes
  15169.     N BYTEs buffer to hold attributes
  15170.  EDh get logical attributes for window frame
  15171.     BYTE execute call if currently in video mode (see opcode ECh)
  15172.     BYTE which attributes to get
  15173.         bit 7    unused???
  15174.         bits 4-6 first attribute to get - 1
  15175.         bits 0-3 number of consecutive attributes
  15176.     N BYTEs buffer to hold attributes
  15177.  EEh get characters for window frame
  15178.     BYTE execute call if currently in video mode (see opcode ECh)
  15179.     BYTE which attributes to get
  15180.         bit 7    unused???
  15181.         bits 4-6 first char to get - 1
  15182.         bits 0-3 number of consecutive chars
  15183.     N BYTEs buffer to hold chars
  15184.  EFh return first N characters of current window name
  15185.     BYTE    max length of returned name
  15186.     N BYTEs buffer to hold window name
  15187.  F3h return contents of specified field
  15188.     BYTE field number
  15189.     N BYTEs buffer to hold field contents (size equal to field size)
  15190.  F5h get field table entry
  15191.     BYTE field number
  15192.     7-8 BYTEs buffer to hold field table entry (see #0308)
  15193.     Notes:    DV < 2.26 always returns 7 bytes
  15194.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  15195.           is using 8-byte entries and eighth byte after    F5h is E7h
  15196.           (NOP); otherwise, 7 bytes are returned
  15197.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  15198.           on the field table entry size
  15199.  F6h get type of a field
  15200.     BYTE field number
  15201.     BYTE type
  15202.  FCh get field table header
  15203.     6 BYTEs buffer to store field table header (see #0306)
  15204.  
  15205. (Table 0311)
  15206. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  15207.  00h allow window to be moved horizontally
  15208.  01h allow window to be moved vertically
  15209.  02h allow window to change width
  15210.  03h allow window to change height
  15211.  04h allow window to be scrolled horizontally
  15212.  05h allow window to be scrolled vertically
  15213.  06h allow "Close Window" menu selection for application
  15214.  07h allow "Hide Window" menu selection for application
  15215.  08h allow application to be suspended ("Rearrange/Freeze")
  15216.  0Eh allow "Scissors" menu
  15217.  10h allow DESQview main menu to be popped up
  15218.  11h allow "Switch Windows" menu
  15219.  12h allow "Open Window" menu
  15220.  13h allow "Quit" menu selection
  15221.  20h-33h opposite of 00h-13h, disallow specified action
  15222.  40h notify if horizontal position of window changes
  15223.  41h notify if vertical position of window changes
  15224.  42h notify if width of window changes
  15225.  43h notify if height of window changes
  15226.  44h notify if window scrolled horizontally
  15227.  45h notify if window scrolled vertically
  15228.  46h notify if window is closed--program has to clean up and exit itself
  15229.  47h notify if window is hidden
  15230.  48h notify if "?" on main menu selected
  15231.  49h notify if pointer message sent to window
  15232.  4Ah notify if window is placed in foreground
  15233.  4Bh notify if window is placed in background
  15234.  4Ch notify if video mode changes
  15235.  4Dh notify if "Scissors" menu "Cut" option selected
  15236.  4Eh notify if "Scissors" menu "Copy" option selected
  15237.  4Fh notify if "Scissors" menu "Paste" option selected
  15238.  50h notify if DESQview main menu about to pop up
  15239.  51h notify if DESQview main menu popped down
  15240.  60h-71h     opposite of 40h-51h: don't notify on specified event
  15241.  84h attach window to parent task's window (both move together)
  15242.  85h detach window from parent task's window (may move independently)
  15243.  86h disable background operation for application
  15244.  87h enable running in background
  15245.  88h set minimum size of physical window
  15246.     BYTE rows
  15247.     BYTE columns
  15248.  89h set maximum size of physical window
  15249.     BYTE rows
  15250.     BYTE cols
  15251.  8Ah set primary asynchronous notification routine (see #0313)
  15252.     DWORD address of routine, 0000h:0000h means none (see also below)
  15253.  8Bh set async notification parameter
  15254.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  15255.  ACh (DV2.2+) perform regular select field attribute processing
  15256.  ADh (DV2.2+) protect attributes in selected field from being lost
  15257.  AEh make window default notify window for owning app (API level 2.00+)
  15258.  AFh set selected field marker character
  15259.     BYTE character to display at left edge of selected fields
  15260.  BCh set standard field processing mode
  15261.  BDh set alternate field processing mode (enables cursor pad for menus)
  15262.  BEh disables changing reverse logical attributes with ECh opcode
  15263.  BFh enables changing reverse logical attributes with ECh opcode
  15264.  C0h make current window topmost in system
  15265.  C1h force current process into foreground
  15266.  C2h make current window topmost in process
  15267.  C3h position mouse pointer relative to origin of current field
  15268.     BYTE rows below upper left corner of field
  15269.     BYTE columns to right of upper left corner of field
  15270.  C4h position mouse pointer relative to origin of given field
  15271.     BYTE field number
  15272.     BYTE rows below upper left corner of field
  15273.     BYTE columns to right of upper left corner of field
  15274.  C5h orphan current window (also hides it)
  15275.     Note: must be last in stream; all subsequent commands ignored
  15276.  C6h show all windows for this process
  15277.  C7h hide all windows for this process
  15278.  C8h suspend process and hide all its windows
  15279.  C9h force current process into background
  15280.  CAh make current window bottom-most in process
  15281.  CBh cancel current window manager operation, remove DV menu, give control
  15282.       to topmost application
  15283.  CCh orphan window and give it to the system for use as paste data
  15284.  CEh reorder windows
  15285.     DWORD pointer to null-terminated list of words; each word is segment
  15286.           of object handle for a window
  15287.  FFh no operation
  15288.  
  15289. (Table 0312)
  15290. Values for MODES 14h to 1Fh "USER STREAMS":
  15291.     normally NOPs, but may be defined by SETESC message to invoke FAR
  15292.     routines, one for each mode number
  15293.       on entry to handler,
  15294.         DS:SI -> first byte of actual stream (not header)
  15295.         CX = number of bytes in stream
  15296.         ES:DI = window's handle
  15297.  
  15298. (Table 0313)
  15299. Values asynchronous notification routine defined by man.stream 8Ah called with:
  15300.     ES:DI = handle of window
  15301.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  15302.        mailbox contains message indicating event
  15303.           Opcode
  15304.            40h  horizontal movement
  15305.            DWORD object handle of window
  15306.            BYTE     new row
  15307.            BYTE     new col
  15308.            41h  vertical movement
  15309.            DWORD object handle of window
  15310.            BYTE     new row
  15311.            BYTE     new col
  15312.            42h  horizontal size change
  15313.            DWORD object handle of window
  15314.            BYTE     new rows
  15315.            BYTE     new cols
  15316.            43h  vertical size change
  15317.            DWORD object handle of window
  15318.            BYTE     new rows
  15319.            BYTE     new cols
  15320.            44h  scrolled horizontally
  15321.            DWORD object handle of window
  15322.            BYTE     mouse row within window
  15323.            BYTE     mouse column within window
  15324.            BYTE     field mouse is on, 0 if none
  15325.            BYTE     amount moved: >0 right, <0 left, 0 done
  15326.            45h  scrolled vertically
  15327.            DWORD object hande of window
  15328.            BYTE     mouse row within window
  15329.            BYTE     mouse column within window
  15330.            BYTE     field mouse is on, 0 if none
  15331.            BYTE     amount moved: >0 down, <0 up, 0 done
  15332.            46h  window close request
  15333.            DWORD object handle of window
  15334.            BYTE     mouse pointer row
  15335.            BYTE     mouse pointer column
  15336.            BYTE     field mouse is on, 0 if none
  15337.            47h  application's windows hidden
  15338.            48h  Help for Program selected
  15339.            DWORD object handle of window
  15340.            BYTE     mouse pointer row
  15341.            BYTE     mouse pointer column
  15342.            BYTE     field mouse is on, 0 if none
  15343.            49h  pointer message sent to window
  15344.            DWORD pointer handle which received message
  15345.            4Ah  switched to window from another ("raise")
  15346.            4Bh  switched away from the window ("lower")
  15347.            4Ch  video mode changed
  15348.            BYTE new BIOS video mode
  15349.            4Dh  Scissors/cUt selected
  15350.            DWORD object handle of window
  15351.            BYTE     row of upper left corner
  15352.            BYTE     column of upper left corner
  15353.            BYTE     field number ul corner is in, 0=none
  15354.            DWORD handle of orphaned window created with
  15355.              copy of data from specified region
  15356.            BYTE     height of region
  15357.            BYTE     width of region
  15358.            4Eh  Scissors/Copy selected
  15359.            DWORD object handle of window
  15360.            BYTE     row of upper left corner
  15361.            BYTE     column of upper left corner
  15362.            BYTE     field number ul corner is in, 0=none
  15363.            DWORD handle of orphaned window created with
  15364.              copy of data from specified region
  15365.            BYTE     height of region
  15366.            BYTE     width of region
  15367.            4Fh  Scissors/Paste selected
  15368.            DWORD object handle of window
  15369.            BYTE     row of upper left corner
  15370.            BYTE     column of upper left corner
  15371.            BYTE     field number ul corner is in, 0=none
  15372.            DWORD handle of orphaned window with data
  15373.            BYTE     height of region
  15374.            BYTE     width of region
  15375.             Note: orphaned data window should be adopted or freed
  15376.                 when done
  15377.            50h  main menu about to pop up
  15378.            51h  main menu popped down
  15379. Return: all registers unchanged
  15380. --------Q-1512--BH06-------------------------
  15381. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  15382.     AH = 12h
  15383.     BH = 06h
  15384.     BL = object
  15385.         00h object handle in DWORD on top of stack
  15386.         mailbox, keyboard, pointer, or timer
  15387.         (DV 2.50+) window
  15388.         01h (DV 2.50+) current task's window
  15389.         04h given task's keyboard (task's handle on top of stack)
  15390.         05h current task's default keyboard
  15391.     STACK: DWORD new priority of object in task's OBJECTQ
  15392.             (new priority of task if window handle)
  15393. Notes:    initially all objects have the same default value.  Should only make
  15394.       relative adjustments to this default value.
  15395.     when changing priorities, all objects already on the objectq are
  15396.       reordered
  15397.     for window handles, only the non-blocked task(s) with the highest
  15398.       priority receive CPU time under DESQview 2.50-2.52; the default
  15399.       priority is 0Ah
  15400. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  15401. --------Q-1512--BH07-------------------------
  15402. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  15403.     AH = 12h
  15404.     BH = 07h
  15405.     BL = object
  15406.         00h object handle in DWORD on top of stack
  15407.         mailbox, keyboard, pointer, or timer
  15408.         (DV 2.50+) window
  15409.         01h (DV 2.50+) current task's window
  15410.         04h given task's keyboard (task's handle on top of stack)
  15411.         05h current task's default keyboard
  15412. Return: STACK: DWORD object priority
  15413. Note:    initially all objects have the same default value.  Should only make
  15414.       relative adjustments to this default value.
  15415. SeeAlso: AH=12h/BH=06h
  15416. --------Q-1512--BH08-------------------------
  15417. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  15418.     AH = 12h
  15419.     BH = 08h
  15420.     BL = object
  15421.         00h handle in DWORD on top of stack
  15422.         window: total character positions in window
  15423.         timer: elapsed time since timer started
  15424.         pointer: number of messages queued to pointer object
  15425.         panel: number of panels in panel file
  15426.         keyboard: number of input buffers queued
  15427.         01h total chars in current task's default window
  15428.         02h number of messages in task's mailbox (task's handle on stack)
  15429.         03h number of messages in current task's mailbox
  15430.         04h number of input buffers queued in task's kbd (handle on stack)
  15431.         05h number of input buffers queued for current task's default kbd
  15432.         06h number of objects queued in OBJECTQ (task's handle on stack)
  15433.         07h number of objects queued in current task's OBJECTQ
  15434.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  15435.         0Dh (DV 2.26+) total chars in parent task's window
  15436. Return: DWORD on top of stack is result
  15437. Note:    for panel objects, a count of zero is returned if no panel file is open
  15438.       for the object
  15439. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  15440. --------Q-1512--BH09-------------------------
  15441. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  15442.     AH = 12h
  15443.     BH = 09h
  15444.     BL = object
  15445.         00h handle in DWORD on top of stack
  15446.         window: get chars/line
  15447.         timer: get 1/100 seconds remaining before timer expires
  15448.         mailbox: (DV/X) get number of bytes queued to mailbox
  15449.         01h get number of chars/line in current task's default window
  15450.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  15451.         0Dh (DV 2.26+) get chars/line in parent task's window
  15452. Return: DWORD on top of stack is length
  15453. SeeAlso: AH=12h/BH=08h
  15454. --------Q-1512--BH0A-------------------------
  15455. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  15456.     AH = 12h
  15457.     BH = 0Ah
  15458.     BL = window to write to
  15459.         00h window handle is DWORD on top of stack
  15460.         01h current task's default window
  15461.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  15462.         0Dh (DV 2.26+) default window of parent of current task
  15463.     STACK:    DWORD count of attributes
  15464.         DWORD address of attribute string
  15465.         DWORD count of characters
  15466.         DWORD address of character string
  15467. Notes:    if one string is longer than the other, the shorter one will be reused
  15468.       until the longer one is exhausted
  15469.     the cursor is left just after the last character written
  15470. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  15471. --------Q-1512--BH0A-------------------------
  15472. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  15473.     AH = 12h
  15474.     BH = 0Ah
  15475.     BL = mailbox to write to
  15476.         00h handle is DWORD on top of stack
  15477.         02h default mailbox of task whose handle is on top of stack
  15478.         03h current task's default mailbox
  15479.     STACK:    DWORD    status (low byte)
  15480.         DWORD    length of message
  15481.         DWORD    address of message
  15482. Notes:    the message is copied into either system or common memory
  15483.     insufficient memory normally causes the process to be aborted; under
  15484.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  15485. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  15486. --------Q-1512--BH0A-------------------------
  15487. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  15488.     AH = 12h
  15489.     BH = 0Ah
  15490.     BL = object
  15491.         00h handle is DWORD on top of stack
  15492.         timer: start timer for specified interval
  15493.         pointer: set control flags (see #0315)
  15494.         keyboard: set control flags (see #0314)
  15495.         04h set control flags on KEYBOARD object (handle on top of stack)
  15496.         05h set control flags on task's default KEYBOARD object
  15497.     STACK: (if timer)   DWORD duration in 1/100 seconds
  15498.            (otherwise)  DWORD bits to set
  15499. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  15500.  
  15501. Bitfields for DESQview keyboard object bits:
  15502. Bit(s)    Description    (Table 0314)
  15503.  15    reserved, can't be set
  15504.  14    unused
  15505.  13    reserved, can't be set
  15506.  12-6    unused
  15507.  5    (DV 2.2+) exclusive input
  15508.  4    filter all keys (used with handler established by SETESC)
  15509.     if 0, only keys that would normally be displayed are filtered
  15510.  3    program continues executing while input in progress
  15511.  2    insert mode active for field mode
  15512.  1    hardware cursor displayed when task is hardware cursor owner
  15513.     must be set if keyboard in field mode and field table includes input
  15514.       fields
  15515.  0    keyboard is in field mode rather than keystroke mode
  15516.  
  15517. Bitfields for DESQview pointer object bits:
  15518. Bit(s)    Description    (Table 0315)
  15519.  15    reserved, can't be set
  15520.  14-8    unused
  15521.  7    mouse pointer is hidden while in window
  15522.  6    get messages even if window not topmost
  15523.  5    get messages even if window not foreground
  15524.  4    multiple clicks separated by less than 1/3 second are counted and
  15525.       returned in a single message
  15526.  3    pointer position is relative to screen origin, not window origin
  15527.  2    send message on button release as well as button press
  15528.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  15529.       pointer leaves the window
  15530.  0    send message only on button activity, not movement
  15531.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  15532. --------Q-1512--BH0B-------------------------
  15533. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  15534.     AH = 12h
  15535.     BH = 0Bh
  15536.     BL = window to write attributes to
  15537.         00h handle is DWORD on top of stack
  15538.         01h current task's default window
  15539.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  15540.         0Dh (DV 2.26+) default window of parent of current task
  15541.     STACK:    DWORD number of attributes to write
  15542.         DWORD address of attributes
  15543. Note:    the attributes are written starting at the current cursor position; the
  15544.       cursor is left just after the last position written
  15545. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  15546. --------Q-1512--BH0B-------------------------
  15547. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  15548.     AH = 12h
  15549.     BH = 0Bh
  15550.     BL = mailbox to write to
  15551.         00h handle is DWORD on top of stack
  15552.         02h default mailbox of task whose handle is on top of stack
  15553.         03h current task's default mailbox
  15554.     STACK:    DWORD    status (low byte)
  15555.         DWORD    length of message
  15556.         DWORD    address of message
  15557. Notes:    only a pointer to the message is stored, but the write may still fail
  15558.       due to insufficient memory
  15559.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  15560. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  15561. --------Q-1512--BH0B-------------------------
  15562. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  15563.     AH = 12h
  15564.     BH = 0Bh
  15565.     BL = OBJECTQ from which to remove all copies of a particular object
  15566.         06h OBJECTQ of task whose handle is on top of stack
  15567.         07h task's default OBJECTQ
  15568.     STACK:    DWORD    handle of object to remove
  15569. Note:    should be sent whenever an object is erased or closed
  15570. --------Q-1512--BH0B-------------------------
  15571. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  15572.     AH = 12h
  15573.     BH = 0Bh
  15574.     BL = object
  15575.         00h handle is DWORD on top of stack
  15576.         pointer: reset control flags
  15577.         keyboard: reset control flags
  15578.         04h clear control flags on KEYBOARD object (handle on top of stack)
  15579.         05h clear control flags on task's default KEYBOARD object
  15580.     STACK:    DWORD    which bits to clear (see #0314,#0315)
  15581. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  15582. --------Q-1512--BH0C-------------------------
  15583. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  15584.     AH = 12h
  15585.     BH = 0Ch
  15586.     BL = object
  15587.         00h handle is DWORD on top of stack
  15588.         window:      fill with given character from scroll origin to end
  15589.         keyboard: attach to a window
  15590.         timer:      open
  15591.         pointer:  start taking input for window
  15592.         panel:      associate with a panel file
  15593.         01h fill task's default window with given char from scrl org to end
  15594.         02h open given task's mailbox for input (task's handle on stack)
  15595.         03h open current task's mailbox
  15596.         04h attach a KEYBOARD to a window (handle on top of stack)
  15597.         05h attach task's default KEYBOARD to a window
  15598.         06h open a task's OBJECTQ (task's handle on top of stack)
  15599.         07h open current task's OBJECTQ
  15600.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  15601.         0Dh (DV 2.26+) fill default window of parent of current task
  15602.      STACK: (if window)   DWORD character to fill with
  15603.         (if keyboard) DWORD handle of window to attach to
  15604.         (if pointer)  DWORD handle of window to attach to
  15605.         (if panel)    DWORD length of filename or resident panel
  15606.                   DWORD address of filename or resident panel
  15607.         (otherwise)   nothing
  15608. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  15609.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  15610.       the panel file
  15611.     result code of open may be retrieved with STATUS message
  15612.     logical cursor is left at scroll origin after filling window
  15613.     the task opening a mailbox becomes its owner, and the only task allowed
  15614.       to read the mailbox
  15615.     messages are only sent to a pointer object when the mouse is positioned
  15616.       in the window to which the pointer has been attached
  15617.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  15618.       messages automatically open the timer
  15619. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  15620. --------Q-1512--BH0D-------------------------
  15621. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  15622.     AH = 12h
  15623.     BH = 0Dh
  15624.     BL = object
  15625.         00h handle is DWORD on top of stack
  15626.         timer:      close
  15627.         keyboard: detach from window and discard queued input
  15628.         pointer:  stop taking input
  15629.         panel:      close
  15630.         mailbox:  close, unlock, and discard any pending messages
  15631.         02h close given task's mailbox (task's handle on top of stack)
  15632.         03h close task's default mailbox
  15633.         04h close KEYBOARD object (handle on top of stack)
  15634.         05h close task's default KEYBOARD
  15635.         06h close given task's OBJECTQ (task's handle on top of stack)
  15636.         07h close current task's OBJECTQ
  15637. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  15638.       ERASE message (AH=12h/BH=0Eh)
  15639.     when a panel object is closed, the panel file and any panels currently
  15640.       in use are freed; window and keyboard objects created by APPLY are
  15641.       not affected, but field mode input ceases
  15642.     open but idle timer objects consume a small amount of CPU time
  15643. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  15644. --------Q-1512--BH0E-------------------------
  15645. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  15646.     AH = 12h
  15647.     BH = 0Eh
  15648.     BL = object
  15649.         00h handle is DWORD on top of stack
  15650.         window:      clear from scroll origin to end of window
  15651.         keyboard: discard input
  15652.         timer:      cancel current interval
  15653.         pointer:  discard all pending messages
  15654.         mailbox:  discard all pending messages
  15655.         01h clear task's default window from scroll origin to end
  15656.         02h discard all queued messages in mailbox (handle on top of stack)
  15657.         03h discard all queued messages in current task's default mailbox
  15658.         04h discard all input queued to KEYBOARD (handle on top of stack)
  15659.         05h discard all input queued to task's default KEYBOARD
  15660.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  15661.         07h remove all objects from current task's OBJECTQ
  15662.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  15663.         0Dh (DV 2.26+) clear default window of parent of current task
  15664. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  15665. SeeAlso: AH=12h/BH=02h
  15666. --------Q-1512--BH0F-------------------------
  15667. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  15668.     AH = 12h
  15669.     BH = 0Fh
  15670.     BL = object
  15671.         00h handle is DWORD on top of stack
  15672.         timer:     is it running?
  15673.         pointer: return status of last message
  15674.         panel:     verify success of last OPEN or APPLY
  15675.         02h return status of last msg READ from mailbox (handle on stack)
  15676.         03h return status of last msg READ from task's default mailbox
  15677.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  15678.         05h get status of last msg from task's default KEYBOARD
  15679.         06h return whether OBJECTQ is open or not (handle on top of stack)
  15680.         07h return whether task's default OBJECTQ is open or not
  15681. Return: DWORD on top of stack is status
  15682. Notes:    if object is a panel object, the status indicates the error code:
  15683.       00h successful
  15684.       14h panel name not in panel directory
  15685.       15h not enough memory to apply panel
  15686.       16h invalid panel format
  15687.       17h panel file already open
  15688.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  15689.       95h not enough memory to open panel file     > that the panel was
  15690.       98h null panel file name            /  not opened
  15691.     if object is a timer, the status is:
  15692.       00000000h open but not running
  15693.       40000000h open and running
  15694.       80000000h closed
  15695.     if object is an OBJECTQ, the status is:
  15696.       00000000h open
  15697.       80000000h closed
  15698.     if object is a keyboard in keystroke mode, the status is the extended
  15699.       character code (scan code) of the last keystroke
  15700.     if object is a keyboard in field mode, the status indicates the reason
  15701.       for the last return from the field manager
  15702.       00h Enter key pressed
  15703.       01h Button 1 or keystroke selection
  15704.       02h Button 2
  15705.       03h validation
  15706.       04h auto Enter on field
  15707.       1Bh Escape pressed
  15708.       46h ^Break pressed
  15709.       other: extended code for key terminating input
  15710.     the status of mailbox messages sent by the window manager is always 80h
  15711.     the status of a pointer message is the same as the status field in the
  15712.       message
  15713. SeeAlso: AH=12h/BH=04h"READ"
  15714. --------Q-1512--BH10-------------------------
  15715. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  15716.     AH = 12h
  15717.     BH = 10h
  15718.     BL = object
  15719.         00h handle is DWORD on top of stack
  15720.         window: return TRUE if logical cursor past end of window
  15721.         mailbox: ???
  15722.         01h returns TRUE if logical cursor past end of task's def window
  15723.         02h return ??? for task's mailbox (task's handle on top of stack)
  15724.         03h return ??? for current task's mailbox
  15725.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  15726.         0Dh (DV 2.26+) check log cursor of window of parent task
  15727. Return: DWORD on top of stack is status
  15728. --------Q-1512--BH11-------------------------
  15729. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  15730.     AH = 12h
  15731.     BH = 11h
  15732.     BL = window for which to move cursor
  15733.         00h window's handle is DWORD on top of stack
  15734.         01h task's default window
  15735.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  15736.         0Dh (DV 2.26+) default window of parent of current task
  15737.     STACK: DWORD column
  15738.            DWORD row
  15739. --------Q-1512--BH11-------------------------
  15740. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  15741.     AH = 12h
  15742.     BH = 11h
  15743.     BL = mailbox to name
  15744.         00h DWORD on top of stack is mailbox handle
  15745.         02h use given task's mailbox (task's handle on top of stack)
  15746.         03h use current task's default mailbox
  15747.     STACK: DWORD length of name
  15748.            DWORD address of name
  15749. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  15750. --------Q-1512--BX1100-----------------------
  15751. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  15752.     AH = 12h
  15753.     BX = 1100h
  15754.     STACK: DWORD object handle for pointer object
  15755.            DWORD number of colums to scale pointer position to
  15756.            DWORD number of rows to scale pointer position to
  15757. SeeAlso: AH=12h/BX=1200h
  15758. --------Q-1512--BH12-------------------------
  15759. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  15760.     AH = 12h
  15761.     BH = 12h
  15762.     BL = window to read from
  15763.         00h handle is DWORD on top of stack
  15764.         01h read next N chars or attributes on task's default window
  15765.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  15766.         0Dh (DV 2.26+) read default window of parent of current task
  15767.     STACK: DWORD count
  15768. Return: STACK: DWORD number of bytes actually read
  15769.            DWORD address of buffer containing data
  15770. Notes:    reading starts at the current logical cursor position; the cursor is
  15771.       updated to point at the character following the last one read
  15772.     any translucent blanks (FFh) which are visible on screen are changed
  15773.       to the character which is seen through them
  15774.     the string produced by the read is placed in an input buffer which may
  15775.       be reused by the next READ or READN of a window
  15776.     window stream opcodes D8h and D9h determine whether the read returns
  15777.       characters or attributes
  15778. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  15779. --------Q-1512--BH12-------------------------
  15780. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  15781.     AH = 12h
  15782.     BH = 12h
  15783.     BL = mailbox for which to retrieve name
  15784.         00h DWORD on top of stack is mailbox handle
  15785.         02h use given task's mailbox (task's handle on top of stack)
  15786.         03h use current task's default mailbox
  15787.     STACK: DWORD length of buffer for name
  15788.            DWORD pointer to buffer
  15789. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  15790. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  15791. Note:    the returned name is not NUL-terminated
  15792. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  15793. --------Q-1512--BX1200-----------------------
  15794. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  15795.     AH = 12h
  15796.     BX = 1200h
  15797.     STACK: DWORD object handle for pointer
  15798. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  15799.            DWORD pointer pos scaled as if window were this many rows high
  15800. SeeAlso: AH=12h/BX=1100h
  15801. --------Q-1512--BH13-------------------------
  15802. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  15803.     AH = 12h
  15804.     BH = 13h
  15805.     BL = window object
  15806.         00h DWORD on top of stack is handle for window to redraw
  15807.         01h redraw task's default window
  15808.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  15809.         0Dh (DV 2.26+) redraw default window of parent of current task
  15810. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  15811. --------Q-1512--BH13-------------------------
  15812. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  15813.     AH = 12h
  15814.     BH = 13h
  15815.     BL = mailbox from which to read
  15816.         00h DWORD on top of stack is mailbox handle
  15817.         02h use given task's mailbox (task's handle on top of stack)
  15818.         03h use current task's default mailbox
  15819.     STACK: DWORD size of buffer in bytes
  15820.            DWORD pointer to buffer
  15821. Return: STACK: DWORD number of bytes read
  15822. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  15823. Notes:    this call blocks if no input is available, but will return less than
  15824.       the requested number of bytes if some (but insufficient) data is
  15825.       available
  15826.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  15827.       4 or 5 set, as common memory may be exhausted by that call when
  15828.       attempting to read the next message
  15829. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  15830. --------Q-1512--BX1300-----------------------
  15831. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  15832.     AH = 12h
  15833.     BX = 1300h
  15834.     STACK: DWORD object handle for pointer
  15835.            DWORD character to use for pointer
  15836. Return: STACK popped
  15837. --------Q-1512--BH14-------------------------
  15838. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  15839.     AH = 12h
  15840.     BH = 14h
  15841.     BL = message modifier
  15842.         00h handle is DWORD on top of stack
  15843.         01h define user stream
  15844.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  15845.         05h intercept keystrokes from task's default KEYBOARD to a window
  15846.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  15847.                  DWORD address of FAR user stream handler
  15848.            (if keyboard) DWORD address of FAR filter function (see #0316)
  15849. Return: STACK popped
  15850.  
  15851. (Table 0316)
  15852. Values keyboard filter function is called with when keyboard is in field mode:
  15853.     AL = character
  15854.     AH = 00h or extended ASCII code if AL = 00h
  15855.     BL = field number
  15856.     CH = cursor column
  15857.     CL = cursor row
  15858.     DL = field type modifier (sixth item in field table entry)
  15859.     DH = seventh item in field table entry
  15860.     ES:SI = window's handle
  15861.     DS:DI -> field table entry for field containing the cursor
  15862. Return:    AH = action to take
  15863.         00h use keystroke
  15864.         01h ignore keystroke
  15865.         FFh beep and ignore keystroke
  15866. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  15867. --------Q-1512--BH14-------------------------
  15868. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  15869.     AH = 12h
  15870.     BH = 14h
  15871.     BL = object
  15872.         00h mailbox handle is DWORD on top of stack
  15873.         02h use given task's mailbox (task's handle on top of stack)
  15874.         03h use current task's default mailbox
  15875. Return: STACK popped if BL=00h
  15876. Note:    release exclusive access by sending CLOSE message to mailbox
  15877.     access may be requested multiple times, and requires multiple CLOSEs
  15878. SeeAlso: AH=12h/BH=0Dh
  15879. --------Q-1512--BH15-------------------------
  15880. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  15881.     AH = 12h
  15882.     BH = 15h
  15883.     BL = object
  15884.         00h DWORD on top of stack
  15885.         mailbox, keyboard, or pointer only
  15886.         02h mailbox for task whose handle is on top of stack
  15887.         03h mailbox for current task
  15888.         04h keyboard for task whose handle is on top of stack
  15889.         05h keyboard for current task
  15890.     STACK: DWORD flags (see #0317,#0318)
  15891. Return: STACK popped
  15892. Notes:    only available if the API level has been set to at least 2.20
  15893.     equivalent to performing SUBFROM and ADDTO calls on the object
  15894.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  15895.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  15896. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  15897.  
  15898. Bitfields for DESQview mailbox object flags:
  15899. Bit(s)    Description    (Table 0317)
  15900.  0    all mail messages in common memory
  15901.  1    allow write even if closed
  15902.  2    don't erase messages when mailbox closed
  15903.  4    (DV/X) append messages with like status and sender (stream-oriented 
  15904.       mail)
  15905.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  15906.  6    (DV/X) make mailbox into non-owned mailbox
  15907.  
  15908. Bitfields for DESQview keyboard object flags:
  15909. Bit(s)    Description    (Table 0318)
  15910.  5    exclusive input when keyboard in use for input
  15911. --------Q-1512--BH16-------------------------
  15912. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  15913.     AH = 12h
  15914.     BH = 16h
  15915.     BL = object
  15916.         00h DWORD on top of stack
  15917.         mailbox, keyboard, or pointer only
  15918.         02h mailbox for task whose handle is on top of stack
  15919.         03h mailbox for current task
  15920.         04h keyboard for task whose handle is on top of stack
  15921.         05h keyboard for current task
  15922. Return: STACK: DWORD current control flags (see #0317,#0318)
  15923. Notes:    only available if the API level has been set to at least 2.20
  15924.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  15925.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  15926. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  15927. --------Q-1512--BH17-------------------------
  15928. INT 15 - DESQview v2.42-2.52 - BUG
  15929.     AH = 12h
  15930.     BH = 17h
  15931.     BL = object
  15932.         00h DWORD on top of stack
  15933.         mailbox, keyboard, or pointer only
  15934.         02h mailbox for task whose handle is on top of stack
  15935.         03h mailbox for current task
  15936.         04h keyboard for task whose handle is on top of stack
  15937.         05h keyboard for current task
  15938. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  15939.       keyboards, and pointers, but causes a random branch
  15940.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  15941. --------Q-1512--BH80-------------------------
  15942. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  15943.     AH = 12h
  15944.     BH = 80h
  15945. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  15946.       not pop up a "Programming Error" window, instead returning an error
  15947.       code in AL (see #0319)
  15948. SeeAlso: AH=12h/BH=00h
  15949.  
  15950. (Table 0319)
  15951. Values for DESQview error code:
  15952.  00h    no error
  15953.  01h    invalid values
  15954.  02h    alias invalid
  15955.  03h    handle valid but wrong type
  15956.  04h    invalid handle
  15957. --------Q-1512--BH81-------------------------
  15958. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  15959.     AH = 12h
  15960.     BH = 81h
  15961. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  15962.       not pop up a "Programming Error" window, instead returning an error
  15963.       code in AL (see #0319)
  15964. SeeAlso: AH=12h/BH=01h
  15965. --------Q-1512--BH82-------------------------
  15966. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  15967.     AH = 12h
  15968.     BH = 82h
  15969. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  15970.       not pop up a "Programming Error" window, instead returning an error
  15971.       code in AL (see #0319)
  15972. SeeAlso: AH=12h/BH=02h
  15973. --------Q-1512--BH83-------------------------
  15974. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  15975.     AH = 12h
  15976.     BH = 83h
  15977. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  15978.       not pop up a "Programming Error" window, instead returning an error
  15979.       code in AL (see #0319)
  15980. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  15981. --------Q-1512--BH84-------------------------
  15982. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  15983.     AH = 12h
  15984.     BH = 84h
  15985. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  15986.       not pop up a "Programming Error" window, instead returning an error
  15987.       code in AL (see #0319)
  15988. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  15989. --------Q-1512--BH85-------------------------
  15990. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  15991.     AH = 12h
  15992.     BH = 85h
  15993. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  15994.       not pop up a "Programming Error" window, instead returning an error
  15995.       code in AL (see #0319)
  15996. SeeAlso: AH=12h/BH=05h
  15997. --------Q-1512--BH86-------------------------
  15998. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  15999.     AH = 12h
  16000.     BH = 86h
  16001. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  16002.       not pop up a "Programming Error" window, instead returning an error
  16003.       code in AL (see #0319)
  16004. SeeAlso: AH=12h/BH=06h
  16005. --------Q-1512--BH87-------------------------
  16006. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  16007.     AH = 12h
  16008.     BH = 87h
  16009. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  16010.       not pop up a "Programming Error" window, instead returning an error
  16011.       code in AL (see #0319)
  16012. SeeAlso: AH=12h/BH=07h
  16013. --------Q-1512--BH88-------------------------
  16014. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  16015.     AH = 12h
  16016.     BH = 88h
  16017. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  16018.       not pop up a "Programming Error" window, instead returning an error
  16019.       code in AL (see #0319)
  16020. SeeAlso: AH=12h/BH=08h
  16021. --------Q-1512--BH89-------------------------
  16022. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  16023.     AH = 12h
  16024.     BH = 89h
  16025. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  16026.       not pop up a "Programming Error" window, instead returning an error
  16027.       code in AL (see #0319)
  16028. SeeAlso: AH=12h/BH=09h
  16029. --------Q-1512--BH8A-------------------------
  16030. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  16031.     AH = 12h
  16032.     BH = 8Ah
  16033. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  16034.       not pop up a "Programming Error" window, instead returning an error
  16035.       code in AL (see #0319)
  16036. SeeAlso: AH=12h/BH=0Ah
  16037. --------Q-1512--BH8B-------------------------
  16038. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  16039.     AH = 12h
  16040.     BH = 8Bh
  16041. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  16042.       not pop up a "Programming Error" window, instead returning an error
  16043.       code in AL (see #0319)
  16044. SeeAlso: AH=12h/BH=0Bh
  16045. --------Q-1512--BH8C-------------------------
  16046. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  16047.     AH = 12h
  16048.     BH = 8Ch
  16049. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  16050.       not pop up a "Programming Error" window, instead returning an error
  16051.       code in AL (see #0319)
  16052. SeeAlso: AH=12h/BH=0Ch
  16053. --------Q-1512--BH8D-------------------------
  16054. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  16055.     AH = 12h
  16056.     BH = 8Dh
  16057. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  16058.       not pop up a "Programming Error" window, instead returning an error
  16059.       code in AL (see #0319)
  16060. SeeAlso: AH=12h/BH=0Dh
  16061. --------Q-1512--BH8E-------------------------
  16062. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  16063.     AH = 12h
  16064.     BH = 8Eh
  16065. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  16066.       not pop up a "Programming Error" window, instead returning an error
  16067.       code in AL (see #0319)
  16068. SeeAlso: AH=12h/BH=0Eh
  16069. --------Q-1512--BH8F-------------------------
  16070. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  16071.     AH = 12h
  16072.     BH = 8Fh
  16073. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  16074.       not pop up a "Programming Error" window, instead returning an error
  16075.       code in AL (see #0319)
  16076. SeeAlso: AH=12h/BH=0Fh
  16077. --------Q-1512--BH90-------------------------
  16078. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  16079.     AH = 12h
  16080.     BH = 90h
  16081. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  16082.       not pop up a "Programming Error" window, instead returning an error
  16083.       code in AL (see #0319)
  16084. SeeAlso: AH=12h/BH=10h
  16085. --------Q-1512--BH91-------------------------
  16086. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  16087.     AH = 12h
  16088.     BH = 91h
  16089. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  16090.       not pop up a "Programming Error" window, instead returning an error
  16091.       code in AL (see #0319)
  16092. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  16093. --------Q-1512--BH92-------------------------
  16094. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  16095.     AH = 12h
  16096.     BH = 92h
  16097. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  16098.       not pop up a "Programming Error" window, instead returning an error
  16099.       code in AL (see #0319)
  16100. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  16101. --------Q-1512--BH93-------------------------
  16102. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  16103.     AH = 12h
  16104.     BH = 93h
  16105. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  16106.       not pop up a "Programming Error" window, instead returning an error
  16107.       code in AL (see #0319)
  16108. SeeAlso: AH=12h/BH=13h
  16109. --------Q-1512--BH94-------------------------
  16110. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  16111.     AH = 12h
  16112.     BH = 94h
  16113. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  16114.       not pop up a "Programming Error" window, instead returning an error
  16115.       code in AL (see #0319)
  16116. SeeAlso: AH=12h/BH=14h
  16117. --------Q-1512--BH95-------------------------
  16118. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  16119.     AH = 12h
  16120.     BH = 95h
  16121. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  16122.       not pop up a "Programming Error" window, instead returning an error
  16123.       code in AL (see #0319)
  16124. SeeAlso: AH=12h/BH=15h
  16125. --------Q-1512--BH96-------------------------
  16126. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  16127.     AH = 12h
  16128.     BH = 96h
  16129. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  16130.       not pop up a "Programming Error" window, instead returning an error
  16131.       code in AL (see #0319)
  16132. SeeAlso: AH=12h/BH=16h
  16133. --------T-1513-------------------------------
  16134. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  16135.     AH = 13h
  16136.     STACK:    WORD    process ID
  16137. Return: AX = status (SYS_OK or SYS_ERROR)
  16138. SeeAlso: AH=12h"VMiX"
  16139. --------T-1513-------------------------------
  16140. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  16141.     AH = 13h
  16142. Return: BX:AX -> task control block (see #0320)
  16143. SeeAlso: AH=15h"MultiDOS"
  16144.  
  16145. Format of MultiDOS Plus v4.0 task control block:
  16146. Offset    Size    Description    (Table 0320)
  16147.  00h    DWORD    pointer to next TCB
  16148.  04h  8 BYTEs    ASCIZ task name
  16149.  0Ch  2 BYTEs    ???
  16150.  0Eh    WORD    task PSP segment
  16151.  10h    WORD    abort/suspend flags
  16152.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  16153.  14h    WORD    priority level (0000h-FFFEh)
  16154.  16h    WORD    time slice counter
  16155.  18h  2 BYTEs    ???
  16156.  1Ah    WORD    suspend timer value
  16157.  1Ch    WORD    stack segment
  16158.  1Eh    WORD    stack pointer
  16159.  20h    WORD    display type
  16160.  22h    WORD    display memory
  16161.  24h  2 BYTEs    ???
  16162.  26h    WORD    termination count
  16163.  28h    WORD    equipment flag for BIO10 driver
  16164.  2Ah    BYTE    background CRT mode
  16165.  2Bh    WORD    screen width in columns
  16166.  2Dh    WORD    screen size in bytes
  16167.  2Fh    WORD    segment of physical screen memory
  16168.  31h 16 BYTEs    eight cursor positions
  16169.  41h    WORD    current cursor shape
  16170.  43h    BYTE    active display page
  16171.  44h    WORD    CRT controller I/O port base
  16172.  46h  2 BYTEs    ???
  16173.  48h    WORD    foreground task flag
  16174.  4Ah  6 BYTEs    ???
  16175.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  16176.  52h    DWORD    old INT 22
  16177.  56h    DWORD    old INT 23
  16178.  5Ah    DWORD    old INT 24
  16179.  5Eh    WORD    top of memory for task
  16180.  60h  4 BYTEs    ???
  16181.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  16182.  66h    WORD    DTA offset
  16183.  68h  4 BYTEs    ???
  16184.  6Ch    BYTE    current ANSI.SYS attribute
  16185.  6Dh    BYTE    current ANSI.SYS column
  16186.  6Eh    BYTE    current ANSI.SYS row
  16187.  6Fh    BYTE    current ANSI.SYS display state
  16188.  70h    BYTE    maximum ANSI.SYS columns
  16189.  71h    BYTE    current ANSI.SYS page
  16190.  72h    WORD    saved ANSI.SYS cursor position
  16191.  74h    BYTE    ANSI.SYS parameter buffer index
  16192.  75h    BYTE    current ANSI.SYS screen mode
  16193.  76h    BYTE    ANSI.SYS wrap flag
  16194.  77h  6 BYTEs    ANSI.SYS parameter buffer
  16195.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  16196.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  16197.  85h  3 BYTEs    ???
  16198.  88h 16 BYTEs    request header for DOS driver calls
  16199.  98h 14 BYTEs    ???
  16200.  A6h    WORD    segment of EMS map if EMS task
  16201.  A8h    WORD    flag: task makes EMS calls
  16202.  AAh    WORD    EMS handle for task
  16203.  ACh    WORD    keyboard shift state
  16204.  AEh 12 BYTEs    ???
  16205.  BAh    WORD    TCB of parent if child task
  16206.  BCh    WORD    termination code
  16207.  BEh    WORD    COM port number
  16208.  C0h  4 BYTEs    ???
  16209.  C4h    WORD    current IRQ number
  16210.  C6h  2 BYTEs    ???
  16211.  C8h    WORD    miscellaneous flag word
  16212.  CAh  2 BYTEs    ???
  16213.  CCh    DWORD    old INT 10
  16214.  D0h    WORD    EMS alternate map set number
  16215.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  16216. --------T-1514-------------------------------
  16217. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  16218.     AH = 14h
  16219.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  16220.         WORD    bottom right corner of window (high = row, low = col)
  16221. Return: AX = status (SYS_OK)
  16222. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  16223. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  16224. --------T-1514-------------------------------
  16225. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  16226.     AH = 14h
  16227. Return: AX = current state
  16228.         0000h MultiDOS Plus command prompt is background task
  16229.         0001h command prompt is foreground task
  16230. SeeAlso: AH=0Bh"MultiDOS"
  16231. --------T-1515-------------------------------
  16232. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  16233.     AH = 15h
  16234.     STACK:    DWORD    pointer to ASCIZ banner message for top of screen
  16235. Return: AX = status (SYS_OK)
  16236. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  16237. --------T-1515-------------------------------
  16238. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  16239.     AH = 15h
  16240. Return: BX:AX -> system block (see #0321)
  16241. SeeAlso: AH=13h"MultiDOS"
  16242.  
  16243. Format of MultiDOS Plus 4.0 system block:
  16244. Offset    Size    Description    (Table 0321)
  16245.  00h    WORD    segment of system control block
  16246.  02h    WORD    redirection flag set by /NOREDIRECT
  16247.  04h    WORD    no-INT 10 flag set by /NO10
  16248.  06h    DWORD    old INT 10
  16249.  0Ah    DWORD    new INT 10
  16250.  0Eh    DWORD    pointer to WORD with current TCB offset (see #0320)
  16251.  12h    DWORD    pointer to WORD with idle task TCB offset
  16252.  16h    DWORD    pointer to WORD with foreground TCB offset (see #0320)
  16253.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset (see #0320)
  16254.  1Eh    WORD    Task Control Block size
  16255.  20h    WORD    number of TCBs
  16256.  22h    WORD    flag: EMS present
  16257.  24h    WORD    EMS page frame base segment
  16258.  26h    WORD    16K pages in EMS page frame
  16259.  28h    WORD    base segment for conventional memory tasks
  16260.  2Ah    WORD    conventional memory size in paragraphs
  16261.  2Ch    DWORD    pointer to list of queue pointers
  16262. --------T-1516-------------------------------
  16263. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  16264.     AH = 16h
  16265.     STACK:    DWORD    pointer to I/O Request Packet
  16266.         WORD    top left corner of window (high byte = row, low = col)
  16267.         WORD    bottom right corner of window (high = row, low = col)
  16268. Return: AX = status (SYS_OK or SYS_ERROR)
  16269. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  16270. --------T-1516-------------------------------
  16271. INT 15 - MultiDOS Plus - INITIALIZATION
  16272.     AH = 16h
  16273. Note:    used internally during initialization; any other calls will cause
  16274.       unpredictable results
  16275. --------T-1517-------------------------------
  16276. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  16277.     AH = 17h
  16278. Return: AH = foreground color
  16279.     AL = background color
  16280. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  16281. --------T-1517-------------------------------
  16282. INT 15 - MultiDOS Plus - MAP IRQ
  16283.     AH = 17h
  16284.     AL = IRQ to map (01h-0Fh)
  16285.     BX = offset of task control block (see #0320) to associate with IRQ
  16286. Return: AX = status
  16287.         0000h successful
  16288.         other invalid IRQ
  16289. Note:    the EMS map of the specified TCB is associated with the given interrupt
  16290. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  16291. --------T-1518-------------------------------
  16292. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  16293.     AH = 18h
  16294.     STACK:    WORD    new background/foreground colors
  16295.             bits 3-0: foreground
  16296.             bits 7-4: background
  16297.             bits 15-8: unused
  16298. Return: AX = color
  16299. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  16300. --------T-1518-------------------------------
  16301. INT 15 - MultiDOS Plus - UNMAP IRQ
  16302.     AH = 18h
  16303.     AL = IRQ to unmap (01h-0Fh)
  16304. Return: AX = status
  16305.         0000h successful
  16306.         0001h invalid IRQ
  16307. Note:    results are unpredictable if the IRQ has not been mapped
  16308. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  16309. --------T-1519-------------------------------
  16310. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  16311.     AH = 19h
  16312.     STACK:    WORD    new background/foreground colors
  16313.             bits 3-0: foreground
  16314.             bits 7-4: background
  16315.             bits 15-8: unused
  16316. Return: AX = color
  16317. SeeAlso: AH=18h"VMiX"
  16318. --------T-1519-------------------------------
  16319. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  16320.     AH = 19h
  16321. Return: AX destroyed
  16322. Note:    for MultiDOS internal use only
  16323. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  16324. --------T-151A-------------------------------
  16325. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  16326.     AH = 1Ah
  16327.     STACK:    WORD    interrupt number
  16328.         DWORD    pointer to register structure
  16329. Return: AX = returned flags
  16330. --------T-151A-------------------------------
  16331. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  16332.     AH = 1Ah
  16333.     DS:SI -> 8-byte name
  16334. Return: AL = status
  16335.         00h successful
  16336.         AH = semaphore number (20h-3Fh)
  16337.         04h out of string space
  16338. Notes:    all eight bytes of the name are significant
  16339.     if the name does not already exist, it is added to the name table and
  16340.       associated with a free semaphore number
  16341.     names cannot be destroyed
  16342. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  16343. --------T-151B-------------------------------
  16344. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  16345.     AH = 1Bh
  16346.     STACK:    DWORD    source address
  16347.         DWORD    destination address
  16348.         WORD    number of words to move
  16349. Return: nothing
  16350. --------T-151B-------------------------------
  16351. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  16352.     AH = 1Bh
  16353.     DS:SI -> 8-byte name
  16354. Return: AH = status
  16355.         00h successful
  16356.         02h invalid semaphore number
  16357.         03h caller already owns semaphore
  16358.         04h out of string space
  16359. Notes:    (see AH=01h"MultiDOS")
  16360.     equivalent to AH=1Ah followed by AH=01h
  16361. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  16362. --------T-151C-------------------------------
  16363. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  16364.     AH = 1Ch
  16365.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  16366.         DWORD    pointer to object bitmap
  16367.         WORD    object width in pixels
  16368.         WORD    object height in pixels
  16369. Return: nothing
  16370. SeeAlso: AH=1Dh"VMiX"
  16371. --------T-151C-------------------------------
  16372. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  16373.     AH = 1Ch
  16374.     DS:SI -> 8-byte name
  16375. Return: AH = status
  16376.         00h successful
  16377.         01h not semaphore owner
  16378.         02h invalid semaphore number
  16379.         04h out of string space
  16380. Notes:    (see AH=02h"MultiDOS")
  16381.     equivalent to AH=1Ah followed by AH=02h
  16382. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  16383. --------T-151D-------------------------------
  16384. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  16385.     AH = 1Dh
  16386. Return: AX = current font number (00h-03h)
  16387. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  16388. --------T-151D-------------------------------
  16389. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  16390.     AH = 1Dh
  16391.     DS:SI -> 8-byte name
  16392. Return: AH = status
  16393.         00h semaphore not in use
  16394.         01h semaphore owned by another task
  16395.         02h invalid semaphore number
  16396.         03h caller owns semaphore
  16397.         04h out of string space
  16398. Notes:    (see AH=10h"MultiDOS")
  16399.     equivalent to AH=1Ah followed by AH=10h
  16400. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  16401. --------T-151E-------------------------------
  16402. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  16403.     AH = 1Eh
  16404.     STACK: WORD new font number (00h-03h)
  16405. Return: AX = current font number (00h-03h)
  16406. SeeAlso: AH=1Dh"VMiX"
  16407. --------T-151E00-----------------------------
  16408. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  16409.     AX = 1E00h
  16410.     DX = event/trigger number (00h-3Fh)
  16411. Return: AH = status
  16412.         00h successful
  16413. SeeAlso: AX=1E01h,AX=1E02h
  16414. --------T-151E01-----------------------------
  16415. INT 15 - MultiDOS Plus - TRIGGER EVENT
  16416.     AX = 1E01h
  16417.     DX = event/trigger number (00h-3Fh)
  16418. Return: AH = status
  16419.         00h successful
  16420.         01h invalid event/trigger number
  16421. Notes:    schedules any task waiting for event; if no task is waiting, the event
  16422.       counter is incremented (and will roll over if it was 65535)
  16423.     may be invoked by interrupt handler
  16424. SeeAlso: AX=1E00h,AX=1E02h
  16425. --------T-151E02-----------------------------
  16426. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  16427.     AX = 1E02h
  16428.     DX = event/trigger number (00h-3Fh)
  16429. Return: AH = status
  16430.         00h successful
  16431.         01h invalid event/trigger number
  16432. Note:    if the event counter is zero, the task is suspended until the event is
  16433.       triggered with AX=1E01h; else, the counter is decremented and the
  16434.       call returns immediately
  16435. SeeAlso: AX=1E00h,AX=1E01h
  16436. --------T-151E08-----------------------------
  16437. INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
  16438.     AX = 1E08h
  16439.     DX:BX -> context save handler (see #0322)
  16440.     DX:CX -> context restore handler (see #0322)
  16441. Note:    handlers may be removed by setting addresses to 0000h:0000h
  16442.  
  16443. (Table 0322)
  16444. Values MultiDOS Plus context-switch handlers are called with:
  16445.     ES:BX -> task's TCB
  16446. Return: all registers preserved
  16447. --------T-151F-------------------------------
  16448. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  16449.     AH = 1Fh
  16450.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  16451.         WORD    bottom right corner of window
  16452. Return: AX = status (SYS_OK)
  16453. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  16454. --------T-151F-------------------------------
  16455. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  16456.     AH = 1Fh
  16457. Return: BX = first segment of conventional memory
  16458.     DX = first segment of EMS swap frame into which MultiDOS will load
  16459.         programs
  16460. --------T-1520-------------------------------
  16461. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  16462.     AH = 20h
  16463. Return: AX = current state
  16464.         0000h multitasking enabled
  16465.         other TCB of task that disabled multitasking
  16466. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  16467. --------c-152000-----------------------------
  16468. INT 15 U - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  16469.     AX = 2000h
  16470. Desc:    stop setting user flag on entry to PRINT critical region
  16471. Note:    also supported by PC Network v1.00 RECEIVER.COM
  16472. SeeAlso: AX=2001h
  16473. --------c-152001-----------------------------
  16474. INT 15 U - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  16475.     AX = 2001h
  16476.     ES:BX -> byte which is to be incremented while in a DOS call
  16477. Desc:    specify a user flag which PRINT should set to let an interested
  16478.       application know it is in a critical region
  16479. Note:    also supported by PC Network v1.00 RECEIVER.COM
  16480. SeeAlso: AX=2000h
  16481. --------O-152010-----------------------------
  16482. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  16483.     AX = 2010h
  16484.     ???
  16485. Return: ???
  16486. SeeAlso: AX=2011h
  16487. --------O-152011-----------------------------
  16488. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  16489.     AX = 2011h
  16490.     ???
  16491. Return: ???
  16492. SeeAlso: AX=2010h
  16493. --------B-1521-------------------------------
  16494. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  16495.     AH = 21h
  16496.     AL = subfunction
  16497.         00h read POST log
  16498.         01h write POST log
  16499.         BH = device ID
  16500.         BL = error code
  16501. Return: CF set on error
  16502.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  16503.     if function 00h:
  16504.        BX = number of error codes stored
  16505.        ES:DI -> error log
  16506. Notes:    the log is a series of words, the first byte of which identifies the
  16507.       error code and the second the device.
  16508.     supported by AMI PCI BIOS
  16509. --------B-1522-------------------------------
  16510. INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
  16511.     AH = 22h
  16512. Return: CF set on error
  16513.         AH = status (86h if function not supported)
  16514.     CF clear on success
  16515.         AH = 00h
  16516.         ES:BX -> ROM BASIC
  16517. Note:    if this function is not supported, ROM BASIC is at F600h:0000h
  16518. SeeAlso: INT 86"BASIC",INT F0"BASIC"
  16519. --------B-152300-----------------------------
  16520. INT 15 U - SYSTEM - PS/1s - GET ??? CMOS DATA
  16521.     AX = 2300h
  16522. Return: CF clear if successful
  16523.         CL = value of CMOS location 2Dh
  16524.         CH = value of CMOS location 2Eh
  16525.     CF set on error
  16526.         AH = error code (80h,86h)
  16527. SeeAlso: AX=2301h,AX=2304h,AX=2305h
  16528. --------B-152301-----------------------------
  16529. INT 15 U - SYSTEM - PS/1s - SET ??? CMOS DATA
  16530.     AX = 2301h
  16531.     CL = new value for CMOS location 2Dh
  16532.     CH = new value for CMOS location 2Eh
  16533. Return: CF clear if successful
  16534.     CF set on error
  16535.         AH = error code (80h,86h)
  16536. Note:    sets the contents of CMOS locations 2Dh and 2Eh
  16537. SeeAlso: AX=2300h,AX=2304h,AX=2305h
  16538. --------B-152304-----------------------------
  16539. INT 15 U - SYSTEM - PS/1s - SYSTEM SETUP
  16540.     AX = 2304h
  16541.     DX = segment of 32K buffer
  16542. Return: CF clear if successful
  16543.         AX = 0003h (left over from setting video mode 3)
  16544.         BX,CX,DX,BP,DS,ES destroyed
  16545.     CF set on error
  16546.         AH = error code (80h,86h)
  16547. SeeAlso: AX=2301h,AX=2305h
  16548. ----------152305-----------------------------
  16549. INT 15 U - SYSTEM - PS/1s - GET PROCESSOR SPEED
  16550.     AX = 2305h
  16551. Return: CF clear if successful
  16552.         AL = processor speed in MHz
  16553.     CF set on error
  16554.         AL = FFh (speed > 80 MHz)
  16555.         AL = error code (80h,86h = unsupported function)
  16556. SeeAlso: AX=2301h,AX=2304h,AH=BCh
  16557. --------b-152400-----------------------------
  16558. INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
  16559.     AX = 2400h
  16560. Return: CF clear if successful
  16561.         AH = 00h
  16562.     CF set on error
  16563.         AH = status
  16564.         01h keyboard controller is in secure mode
  16565.         86h function not supported
  16566. Note:    also supported by Qualitas 386MAX v6.01+
  16567. SeeAlso: AX=2401h,AX=2402h,AX=2403h
  16568. --------b-152401-----------------------------
  16569. INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
  16570.     AX = 2401h
  16571. Return: CF clear if successful
  16572.         AH = 00h
  16573.     CF set on error
  16574.         AH = status
  16575.         01h keyboard controller is in secure mode
  16576.         86h function not supported
  16577. Note:    also supported by Qualitas 386MAX v6.01+
  16578. SeeAlso: AX=2400h,AX=2402h
  16579. --------b-152402-----------------------------
  16580. INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
  16581.     AX = 2402h
  16582. Return: CF clear if successful
  16583.         AH = 00h
  16584.         AL = current state (00h disabled, 01h enabled)
  16585.     CF set on error
  16586.         AH = status
  16587.         01h keyboard controller is in secure mode
  16588.         86h function not supported
  16589. Note:    also supported by Qualitas 386MAX v6.01+
  16590. SeeAlso: AX=2400h,AX=2401h
  16591. --------b-152403-----------------------------
  16592. INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
  16593.     AX = 2403h
  16594. Return: CF clear if successful
  16595.         AH = 00h
  16596.         BX = status of A20 gate support (see #0323)
  16597.     CF set on error
  16598.         AH = status
  16599.         01h keyboard controller is in secure mode
  16600.         86h function not supported
  16601. Note:    also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
  16602. BUG:    at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
  16603.       version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
  16604.       thus causing a random branch on any value of AL greater than 3.
  16605. SeeAlso: AX=2402h
  16606.  
  16607. Bitfields for A20 gate support status:
  16608. Bit(s)    Description    (Table 0323)
  16609.  0    supported on keyboard controller
  16610.  1    supported with bit 1 of I/O port 92h
  16611.  15    additional data is available (location not yet defined)
  16612. ----------153000-----------------------------
  16613. INT 15 - Object Kernel for DOS - INSTALLATION CHECK
  16614.     AX = 3000h
  16615. Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
  16616.         CX = resident segment
  16617. Program: the Object Kernel is a program by M.W. Pieters which is currently
  16618.       under development
  16619. SeeAlso: AX=3001h,AX=3008h
  16620. ----------153001-----------------------------
  16621. INT 15 - Object Kernel for DOS - GET STATUS BLOCK
  16622.     AX = 3001h
  16623. Return: AX = FFFFh
  16624.     ES:DI -> status block
  16625. SeeAlso: AX=3000h,AX=3008h
  16626. ----------153002-----------------------------
  16627. INT 15 - Object Kernel for DOS - KILL PROCESS
  16628.     AX = 3002h
  16629.     (not yet implemented)
  16630. SeeAlso: AX=3000h
  16631. ----------153003-----------------------------
  16632. INT 15 - Object Kernel for DOS - STOP PROCESS
  16633.     AX = 3003h
  16634.     (not yet implemented)
  16635. SeeAlso: AX=3000h
  16636. ----------153004-----------------------------
  16637. INT 15 - Object Kernel for DOS - START PROCESS
  16638.     AX = 3004h
  16639.     (not yet implemented)
  16640. SeeAlso: AX=3000h
  16641. ----------153005-----------------------------
  16642. INT 15 - Object Kernel for DOS - RESTART PROCESS
  16643.     AX = 3005h
  16644.     (not yet implemented)
  16645. SeeAlso: AX=3000h
  16646. ----------153006-----------------------------
  16647. INT 15 - Object Kernel for DOS - EXECUTE PROCESS
  16648.     AX = 3006h
  16649.     (not yet implemented)
  16650. SeeAlso: AX=3000h
  16651. ----------153007-----------------------------
  16652. INT 15 - Object Kernel for DOS - LIST PROCESSES
  16653.     AX = 3007h
  16654.     (not yet implemented)
  16655. SeeAlso: AX=3000h
  16656. ----------153008-----------------------------
  16657. INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
  16658.     AX = 3008h
  16659.     BH = new state (00h disabled, 01h enabled)
  16660. Return: AX = FFFFh
  16661. SeeAlso: AX=3000h,AX=3009h
  16662. ----------153009-----------------------------
  16663. INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
  16664.     AX = 3009h to 30FFh
  16665. SeeAlso: AX=3000h
  16666. Program: the Object Kernel is a program by M.W. Pieters which is currently
  16667.       under development
  16668. --------B-1540-------------------------------
  16669. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  16670.     AH = 40h
  16671.     AL = subfunction
  16672.         00h get system profile in CX and BX
  16673.         01h set system profile from CX and BX
  16674.         02h get internal modem profile in BX
  16675.         03h set internal modem profile from BX
  16676. Return: CF clear if successful
  16677.         AH = 00h
  16678.     CF set on error
  16679.         AH = status (80h = profile execution failed)
  16680. --------V-154000-----------------------------
  16681. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  16682.     AX = 4000h
  16683. Return: AX = 4000h
  16684.     CL = timeout in minutes, 00h if disabled
  16685. SeeAlso: AX=4001h,AX=4600h
  16686. --------V-154001-----------------------------
  16687. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  16688.     AX = 4001h
  16689.     CL = timeout in minutes, 00h to disable
  16690. Return: AL = status
  16691.         00h timeout modified
  16692.         01h timeout cannot be modified
  16693.         40h timeout cannot be modified
  16694.     CL = timeout in minutes, 00h if disabled
  16695. SeeAlso: AX=4000h,AX=4601h
  16696. --------B-1541-------------------------------
  16697. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
  16698.     AH = 41h
  16699.     AL = condition type (see #0324)
  16700.     BH = condition compare or mask value
  16701.     BL = timeout value times 55 milliseconds
  16702.         00h means no timeout
  16703.     DX = I/O port address if AL bit 4 set
  16704.     ES:DI -> user byte if AL bit 4 clear
  16705. Note:    call AH=C0h and examine bit 3 of feature byte 1 to determine whether
  16706.       this function is supported
  16707. SeeAlso: AH=83h,AH=86h,AH=C0h
  16708.  
  16709. Bitfields for external event wait condition type:
  16710. Bit(s)    Description    (Table 0324)
  16711.  0-2    condition to wait for
  16712.     0 any external event
  16713.     1 compare and return if equal
  16714.     2 compare and return if not equal
  16715.     3 test and return if not zero
  16716.     4 test and return if zero
  16717.  3    reserved
  16718.  4    1=port address, 0=user byte
  16719.  5-7    reserved
  16720. --------B-1542-------------------------------
  16721. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  16722.     AH = 42h
  16723.     AL = suspend type
  16724.         00h to use system profile
  16725.         01h to force suspend regardless of system profile
  16726. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  16727.       power-up, execution will resume following the instruction calling
  16728.       this function
  16729. SeeAlso: AH=44h
  16730. --------b-154280-----------------------------
  16731. INT 15 - Compaq SLT/286 - ENTER STANDBY
  16732.     AX = 4280h
  16733. Return: AH = 42h
  16734.     CF clear if successful
  16735.     CF set if unable to enter standby
  16736. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  16737. --------B-1543-------------------------------
  16738. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  16739.     AH = 43h
  16740. Return: AL = status bits (see #0325)
  16741.  
  16742. Bitfields for Convertible system status:
  16743. Bit(s)    Description    (Table 0325)
  16744.  7    power low
  16745.  6    external power in use
  16746.  5    standby power lost
  16747.  4    power activated by alarm
  16748.  3    internal modem powered on
  16749.  2    RS232/parallel adapter powered on
  16750.  1    reserved
  16751.  0    LCD detached
  16752. --------B-1544-------------------------------
  16753. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  16754.     AH = 44h
  16755.     AL = new modem power state (00h power off, 01h power on)
  16756. SeeAlso: AH=42h
  16757. --------b-1544C0-----------------------------
  16758. INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
  16759.     AX = 44C0h
  16760.     ES:DI -> new DSP procedure (exchanged with CMOS[28h])
  16761.     ES:SI -> ??? buffer
  16762. Return: ES:DI -> old DSP procedure
  16763.     ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
  16764.       followed by 00h (addresses 15h-1Ch copied only if less than 21h)
  16765. Note:    this function is also supported by XBIOS.COM
  16766. SeeAlso: AX=44C9h
  16767. --------b-1544C1-----------------------------
  16768. INT 15 - Olivetti Quaderno - ???
  16769.     AX = 44C1h
  16770.     ???
  16771. Return: ???
  16772. Note:    this function is also supported by XBIOS.COM
  16773. SeeAlso: AX=44C9h
  16774. --------b-1544C2-----------------------------
  16775. INT 15 - Olivetti Quaderno - ???
  16776.     AX = 44C2h
  16777.     DL = byte to be written to I/O port 350h
  16778. Note:    this function is also supported by XBIOS.COM
  16779. SeeAlso: AX=44C3h,AX=44C9h
  16780. --------b-1544C3-----------------------------
  16781. INT 15 - Olivetti Quaderno - GET ???
  16782.     AX = 44C3h
  16783. Return: DH = bitfields (see #0326)
  16784.     DL = value read from I/O port 350h
  16785. Note:    this function is also supported by XBIOS.COM
  16786. SeeAlso: AX=44C2h,AX=44C9h
  16787.  
  16788. Bitfields for Olivetti Quaderno ???:
  16789. Bit(s)    Description    (Table 0326)
  16790.  5-7    5-7 read from I/O port 351h
  16791.  2-4    zero
  16792.  1-0    "tres complique"
  16793. --------b-1544C4-----------------------------
  16794. INT 15 - Olivetti Quaderno - ???
  16795.     AX = 44C4h and 44C5h
  16796.     ???
  16797. Return: ???
  16798. Note:    this function is also supported by XBIOS.COM
  16799. SeeAlso: AX=44C9h
  16800. --------b-1544C6-----------------------------
  16801. INT 15 - Olivetti Quaderno - READ LCD
  16802.     AX = 44C6h
  16803. Return: DX = FFFFh clock is displayed on LCD display
  16804.     DX = other: hex number displayed in first four positions of display
  16805.     BH = left alphanumeric character on display (see #0327)
  16806.     BL = right alphanumeric character on display (see #0327)
  16807.     CL = colon flags (see #0328)
  16808. Notes:    the LCD display has the format HH:HH:AA, where H is a hex digit and A
  16809.       is an alphanumeric character
  16810.     this function is also supported by XBIOS.COM
  16811. SeeAlso: AX=44C7h,AX=44C9h
  16812.  
  16813. (Table 0327)
  16814. Values for Olivetti Quaderno LCD alphanumeric characters:
  16815.  00h-0Fh hex digit
  16816.  2Bh    "+"
  16817.  2Dh    "-"
  16818.  30h-39h "0" to "9"
  16819.  41h-5Ah "A" to "Z"
  16820.  61h-6Ah "a" to "z"
  16821.  else    blank
  16822.  
  16823. Bitfields for Olivetti Quaderno LCD colon flags:
  16824. Bit(s)    Description    (Table 0328)
  16825.  0    right colon on
  16826.  1    left colon on
  16827.  2-7    unused    
  16828. --------b-1544C7-----------------------------
  16829. INT 15 - Olivetti Quaderno - WRITE LCD
  16830.     AX = 44C7h
  16831.     DX = hex display
  16832.         FFFFh display clock and "HI", "Md", or "Lo"
  16833.         BH,BL,CL unused
  16834.         other: display specified hex number in first four positions
  16835.         BH = left alphanumeric character on display (see #0327)
  16836.         BL = right alphanumeric character on display (see #0327)
  16837.         CL = colon flags (see #0328)
  16838. Note:    this function is also supported by XBIOS.COM
  16839. SeeAlso: AX=44C6h
  16840. --------b-1544C8-----------------------------
  16841. INT 15 - Olivetti Quaderno - ???
  16842.     AX = 44C8h
  16843.     CL = ??? (00h,02h,21h)
  16844.     CH = ???
  16845.     ???
  16846. Return: ???
  16847. Note:    this function is also supported by XBIOS.COM
  16848. SeeAlso: AX=44C9h
  16849. --------b-1544C9-----------------------------
  16850. INT 15 - Olivetti Quaderno - GET XBIOS VERSION
  16851.     AX = 44C9h
  16852. Return: AL = major version
  16853.     AH = minor version
  16854. Note:    this function is also supported by XBIOS.COM
  16855. --------b-154600-----------------------------
  16856. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  16857.     AX = 4600h
  16858. Return: AH = modem configuration information (see #0329)
  16859.     AL = power conservation status information (see #0330)
  16860.     BH = default system inactivity timeout (1-21 minutes)
  16861.     BL = current system inactivity timeout (1-21 minutes)
  16862.     CH = default video display inactivity timeout (1-63 minutes)
  16863.     CL = current video display inactivity timeout (1-63 minutes)
  16864.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  16865.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  16866. SeeAlso: AX=4280h,AX=4601h,INT 77
  16867.  
  16868. Bitfields for Compaq SLT/286 modem configuration information:
  16869. Bit(s)    Description    (Table 0329)
  16870.  0    powerup state (0 off, 1 on)
  16871.  1    modem installed
  16872.  2    IRQ line assignment (0 IRQ 4, 1 IRQ 3)
  16873.  3    COM port assignment (0 = COM 2, 1 = COM 1)
  16874.  4    modem state (0 not assigned, 1 assigned)
  16875.  5    modem is on
  16876.  
  16877. Bitfields for Compaq SLT/286 power conservation status:
  16878. Bit(s)    Description    (Table 0330)
  16879.  0    power source (0 internal, 1 external)
  16880.  1-2    low battery state
  16881.     00 no low battery condition
  16882.     01 low battery 1
  16883.     10 reserved
  16884.     11 low battery 2
  16885.  3-4    power conservation mode
  16886.     00 automatic, 01 on, 10 off, 11 reserved
  16887. --------b-154601-----------------------------
  16888. INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
  16889.     AX = 4601h
  16890.     BL = system inactivity timeout (1-21 minutes)
  16891.         FFh do not change
  16892.     CL = video display inactivity timeout (1-63 minutes)
  16893.         FFh do not change
  16894.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  16895.         FFh do not change
  16896.     DH = new modem state (00h turn off, 01h turn on, FFh don't change)
  16897. Return: CF clear if successful
  16898.         AH = 00h
  16899.         BL = current system inactivity timeout (1-21 minutes)
  16900.         CL = current video display inactivity timeout (1-63 minutes)
  16901.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  16902.         DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
  16903.     CF set on error
  16904.         AH = error code
  16905.         01h input is out of range
  16906.         02h no modem present
  16907. SeeAlso: AX=4600h,INT 77
  16908. --------b-154604-----------------------------
  16909. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
  16910.     AX = 4604h
  16911. Return: CF clear if successful
  16912.         AL = byte read from I/O port 03F8h
  16913.     CF set on error (not supported)
  16914.         AH = 86h (unsupported function)
  16915. Note:    also supported by 7/26/93 LTE Lite 386 ROM
  16916. --------b-154605-----------------------------
  16917. INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
  16918.     AX = 4605h
  16919. Return: CF clear if successful
  16920.     CF set on error (not supported)
  16921.         AH = 86h (unsupported function)
  16922. Note:    this function is a NOP (other than clearing CF) in the 08/05/93 version
  16923.       of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
  16924.       LTE Lite 386 ROM
  16925. --------J-154900-----------------------------
  16926. INT 15 - Far East MS-DOS - GET BIOS TYPE
  16927.     AX = 4900h
  16928. Return: CF clear if successful
  16929.         AH = 00h
  16930.         BL = BIOS mode
  16931.         00h DOS/V
  16932.         01h standard DBCS DOS (hardware DBCS support)
  16933.     CF set on error
  16934.         AH = 86h (function not supported)
  16935. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  16936. SeeAlso: AH=50h,INT 21/AH=30h
  16937. --------b-154DD4-----------------------------
  16938. INT 15 - HP 95LX - INSTALLATION CHECK
  16939.     AX = 4DD4h
  16940. Return: BX = 4850h ("HP") if HP 95LX
  16941.         CX = ??? (0101h)
  16942.         DL = ??? (00h)
  16943. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  16944. SeeAlso: INT 61"HP 95LX"
  16945. --------b-154E-------------------------------
  16946. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  16947.     AH = 4Eh
  16948.     AL = light sleep
  16949.         00h disabled
  16950.         01h enabled
  16951. Note:    when light sleep is disabled, the system will continue running at full
  16952.       speed; when enabled, it may automatically slow to conserve batteries
  16953. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  16954. --------B-154F-------------------------------
  16955. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  16956.     AH = 4Fh
  16957.     AL = hardware scan code
  16958.     CF set
  16959. Return: CF set
  16960.        AL = hardware scan code
  16961.     CF clear
  16962.        scan code should be ignored
  16963. Note:    called by INT 09 handler to translate scan codes; the INT 09 code does
  16964.       not examine the scan code it reads from the keyboard until after
  16965.       this function returns.  This permits software to rearrange the
  16966.       keyboard; for example, swapping the CapsLock and Control keys, or
  16967.       turning the right Shift key into Enter.
  16968. SeeAlso: INT 09,INT 15/AH=C0h
  16969. --------J-1550-------------------------------
  16970. INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
  16971.     AH = 50h
  16972.     AL = which function address to retrieve
  16973.         00h "read font" function
  16974.         01h "write font" function
  16975.     BL = 00h
  16976.     BH = character size (00h single-byte, 01h double-byte)
  16977.     DH = width of character cell
  16978.     DL = height of character cell
  16979.     BP = code page (see #0331)
  16980. Return: CF clear if successful
  16981.         AH = 00h
  16982.         ES:BX -> requested function's address
  16983.     CF set on error
  16984.         AH = error code (see #0332)
  16985. SeeAlso: AH=49h
  16986.  
  16987. (Table 0331)
  16988. Values for DOS/V code page:
  16989.  0    default
  16990.  437    US English
  16991.  932    Japanese
  16992.  934    Korea
  16993.  936    China
  16994.  938    Taiwan
  16995.  
  16996. (Table 0332)
  16997. Values for DOS/V error code:
  16998.  01h    invalid font type in BH
  16999.  02h    BL not zero
  17000.  03h    invalid font size
  17001.  04h    invalid code page
  17002.  80h    unsupported function (PC)
  17003.  86h    unsupported function (XT)
  17004. --------T-1550-------------------------------
  17005. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  17006.     AH = 50h
  17007.     BX = segment of page directory table
  17008.     CX = page number of page table
  17009. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  17010. --------T-1551-------------------------------
  17011. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  17012.     AH = 51h
  17013.     STACK:    DWORD    selector:offset of function
  17014. Return: registers as returned by function
  17015. Note:    executes function with privilege level 0 (highest privilege)
  17016. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  17017. --------B-155101-----------------------------
  17018. INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
  17019.     AX = 5101h
  17020. Return: CF set if successful
  17021.         AH = 00h
  17022.         AL = current configuration number
  17023.         00h system unit only
  17024.         FFh configuration not recognized
  17025.         BX = status flag
  17026.         bits 0-14: reserved
  17027.         bit 15: additional data is available (location TBD)
  17028.     CF clear on error
  17029.         AH = status
  17030.         01h expansion unit is not present
  17031.         86h function not supported
  17032. Note:    CF convention is the reverse of the standard convention for this
  17033.       interrupt.  (Perhaps a typo in the IBM BIOS Tech Ref?)
  17034. --------T-1552-------------------------------
  17035. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  17036.     AH = 52h
  17037. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  17038. --------p-155300-----------------------------
  17039. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  17040.     AX = 5300h
  17041.     BX = device ID of system BIOS (0000h)
  17042. Return: CF clear if successful
  17043.         AH = major version (BCD)
  17044.         AL = minor version (BCD)
  17045.         BX = 504Dh ("PM")
  17046.         CX = flags (see #0333)
  17047.     CF set on error
  17048.         AH = error code (06h,86h) (see #0334)
  17049.  
  17050. Bitfields for APM flags:
  17051. Bit(s)    Description    (Table 0333)
  17052.  0    16-bit protected mode interface supported
  17053.  1    32-bit protected mode interface supported
  17054.  2    CPU idle call reduces processor speed
  17055.  3    BIOS power management disabled
  17056.  4    BIOS power management disengaged (APM v1.1)
  17057.  5-7    reserved
  17058.  
  17059. (Table 0334)
  17060. Values for APM error code:
  17061.  01h    power management functionality disabled
  17062.  02h    interface connection already in effect
  17063.  03h    interface not connected
  17064.  04h    real-mode interface not connected
  17065.  05h    16-bit protected-mode interface already connected
  17066.  06h    16-bit protected-mode interface not supported
  17067.  07h    32-bit protected-mode interface already connected
  17068.  08h    32-bit protected-mode interface not supported
  17069.  09h    unrecognized device ID
  17070.  0Ah    invalid parameter value in CX
  17071.  0Bh-1Fh reserved for other interface and general errors
  17072.  20h-3Fh reserved for CPU errors
  17073.  40h-5Fh reserved for device errors
  17074.  60h    can't enter requested state
  17075.  61h-7Fh reserved for other system errors
  17076.  80h    no power management events pending
  17077.  81h-85h reserved for other power management event errors
  17078.  86h    APM not present
  17079.  87h-9Fh reserved for other power management event errors
  17080. --------p-155301-----------------------------
  17081. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  17082.     AX = 5301h
  17083.     BX = device ID of system BIOS (0000h)
  17084. Return: CF clear if successful
  17085.     CF set on error
  17086.         AH = error code (02h,05h,07h,09h) (see #0334)
  17087. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  17088. --------p-155302-----------------------------
  17089. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  17090.     AX = 5302h
  17091.     BX = device ID of system BIOS (0000h)
  17092. Return: CF clear if successful
  17093.         AX = real-mode segment base address of protected-mode 16-bit code
  17094.         segment
  17095.         BX = offset of entry point
  17096.         CX = real-mode segment base address of protected-mode 16-bit data
  17097.         segment
  17098.         ---APM v1.1---
  17099.         SI = APM BIOS code segment length
  17100.         DI = APM BIOS data segment length
  17101.     CF set on error
  17102.         AH = error code (02h,05h,06h,07h,09h) (see #0334)
  17103. Notes:    the caller must initialize two consecutive descriptors with the
  17104.       returned segment base addresses; these descriptors must be valid
  17105.       whenever the protected-mode interface is called, and will have
  17106.       their limits arbitrarily set to 64K.
  17107.     the protected mode interface is invoked by making a far call with the
  17108.       same register values as for INT 15; it must be invoked while CPL=0,
  17109.       the code segment descriptor must have a DPL of 0, the stack must be
  17110.       in a 16-bit segment and have enough room for BIOS use and possible
  17111.       interrupts, and the current I/O permission bit map must allow access
  17112.       to the I/O ports used for power management.
  17113.     functions 00h-03h are not available from protected mode
  17114. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  17115. --------p-155303-----------------------------
  17116. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  17117.     AX = 5303h
  17118.     BX = device ID of system BIOS (0000h)
  17119. Return: CF clear if successful
  17120.         AX = real-mode segment base address of protected-mode 32-bit code
  17121.         segment
  17122.         EBX = offset of entry point
  17123.         CX = real-mode segment base address of protected-mode 16-bit code
  17124.         segment
  17125.         DX = real-mode segment base address of protected-mode 16-bit data
  17126.         segment
  17127.         ---APM v1.1---
  17128.         SI = APM BIOS code segment length
  17129.         DI = APM BIOS data segment length
  17130.     CF set on error
  17131.         AH = error code (02h,05h,07h,08h,09h) (see #0334)
  17132. Notes:    the caller must initialize three consecutive descriptors with the
  17133.       returned segment base addresses for 32-bit code, 16-bit code, and
  17134.       16-bit data, respectively; these descriptors must be valid whenever
  17135.       the protected-mode interface is called, and will have their limits
  17136.       arbitrarily set to 64K.
  17137.     the protected mode interface is invoked by making a far call to the
  17138.       32-bit code segment with the same register values as for INT 15; it
  17139.       must be invoked while CPL=0, the code segment descriptor must have a
  17140.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  17141.       for BIOS use and possible interrupts, and the current I/O permission
  17142.       bit map must allow access to the I/O ports used for power management.
  17143.     functions 00h-03h are not available from protected mode
  17144. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  17145. --------p-155304-----------------------------
  17146. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  17147.     AX = 5304h
  17148.     BX = device ID of system BIOS (0000h)
  17149. Return: CF clear if successful
  17150.     CF set on error
  17151.         AH = error code (03h,09h) (see #0334)
  17152. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  17153. --------p-155305-----------------------------
  17154. INT 15 - Advanced Power Management Specification - CPU IDLE
  17155.     AX = 5305h
  17156. Return: CF clear if successful (after system leaves idle state)
  17157.     CF set on error
  17158.         AH = error code (03h,0Bh) (see #0334)
  17159. Notes:    call when the system is idle and should be suspended until the next
  17160.       system event or interrupt
  17161.     should not be called from within a hardware interrupt handler to avoid
  17162.       reentrance problems
  17163.     if an interrupt causes the system to resume normal processing, the
  17164.       interrupt may or may not have been handled when the BIOS returns
  17165.       from this call; thus, the caller should allow interrupts on return
  17166.     interrupt handlers may not retain control if the BIOS allows
  17167.       interrupts while in idle mode even if they are able to determine
  17168.       that they were called from idle mode
  17169.     the caller should issue this call continuously in a loop until it needs
  17170.       to perform some processing of its own
  17171. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  17172. --------p-155306-----------------------------
  17173. INT 15 - Advanced Power Management Specification - CPU BUSY
  17174.     AX = 5306h
  17175. Return: CF clear if successful
  17176.     CF set on error
  17177.         AH = error code (03h,0Bh) (see #0334)
  17178. Notes:    called to ensure that the system runs at full speed even on systems
  17179.       where the BIOS is unable to recognize increased activity (especially
  17180.       if interrupts are hooked by other programs and not chained to the
  17181.       BIOS)
  17182.     this call may be made even when the system is already running at full
  17183.       speed, but it will create unnecessary overhead
  17184.     should not be called from within a hardware interrupt handler to avoid
  17185.       reentrance problems
  17186. SeeAlso: AX=5305h
  17187. --------p-155307-----------------------------
  17188. INT 15 - Advanced Power Management Specification - SET POWER STATE
  17189.     AX = 5307h
  17190.     BX = device ID (see #0335)
  17191.     CX = system state ID (see #0336)
  17192. Return: CF clear if successful
  17193.     CF set on error
  17194.         AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0334)
  17195. Note:    should not be called from within a hardware interrupt handler to avoid
  17196.       reentrance problems
  17197. SeeAlso: AX=530Ch
  17198.  
  17199. (Table 0335)
  17200. Values for APM device IDs:
  17201.  0000h    system BIOS
  17202.  0001h    all devices for which the system BIOS manages power
  17203.  01xxh    display (01FFh for all attached display devices)
  17204.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  17205.  03xxh    parallel ports (03FFh for all attached parallel ports)
  17206.  04xxh    serial ports (04FFh for all attached serial ports)
  17207. ---APM v1.1---
  17208.  05xxh    network adapters (05FFh for all attached network adapters)
  17209.  06xxh    PCMCIA sockets (06FFh for all)
  17210.  0700h-DFFFh reserved
  17211.  Exxxh    OEM-defined power device IDs
  17212.  F000h-FFFFh reserved
  17213.  
  17214. (Table 0336)
  17215. Values for system state ID:
  17216.  0000h    ready (not supported for device ID 0001h)
  17217.  0001h    stand-by
  17218.  0002h    suspend
  17219.  0003h    off (not supported for device ID 0001h)
  17220. ---APM v1.1---
  17221.  0004h    last request processing notification (only for device ID 0001h)
  17222.  0005h    last request rejected (only for device ID 0001h)
  17223.  0006h-001Fh reserved system states
  17224.  0020h-003Fh OEM-defined system states
  17225.  0040h-007Fh OEM-defined device states
  17226.  0080h-FFFFh reserved device states
  17227. --------p-155307CX0001-----------------------
  17228. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  17229.     AX = 5307h
  17230.     CX = 0001h
  17231.     BX = 0001h (device ID for all power-managed devices)
  17232. Return: CF clear
  17233. Notes:    puts the entire system into stand-by mode; normally called in response
  17234.       to a System Stand-by Request notification after any necessary
  17235.       processing, but may also be invoked at the caller's discretion
  17236.     should not be called from within a hardware interrupt handler to avoid
  17237.       reentrance problems
  17238.     the stand-by state is typically exited on an interrupt
  17239. SeeAlso: AX=4280h,AX=5307h/CX=0002h/BX=0001h,AX=530Bh
  17240. --------p-155307CX0002-----------------------
  17241. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  17242.     AX = 5307h
  17243.     CX = 0002h
  17244.     BX = 0001h (device ID for all power-managed devices)
  17245. Return: after system is resumed
  17246.     CF clear
  17247. Notes:    puts the entire system into a low-power suspended state; normally
  17248.       called in response to a Suspend System Request notification after
  17249.       any necessary processing, but may also be invoked at the caller's
  17250.       discretion
  17251.     should not be called from within a hardware interrupt handler to avoid
  17252.       reentrance problems
  17253.     the caller may need to update its date and time values because the
  17254.       system could have been suspended for a long period of time
  17255. SeeAlso: AX=5307h/CX=0001h/BX=0001h,AX=530Bh
  17256. --------p-155308-----------------------------
  17257. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  17258.     AX = 5308h
  17259.     BX = device ID for all devices power-managed by APM
  17260.         0001h (APM v1.1)
  17261.         FFFFh (APM v1.0)
  17262.     CX = new state
  17263.         0000h disabled
  17264.         0001h enabled
  17265. Return: CF clear if successful
  17266.     CF set on error
  17267.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0334)
  17268. Notes:    when power management is disabled, the system BIOS will not
  17269.       automatically power down devices, enter stand-by or suspended mode,
  17270.       or perform any power-saving actions in response to AX=5305h calls
  17271.     should not be called from within a hardware interrupt handler to avoid
  17272.       reentrance problems
  17273. SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
  17274. --------p-155309-----------------------------
  17275. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  17276.     AX = 5309h
  17277.     BX = device ID for all devices power-managed by APM
  17278.         0001h (APM v1.1)
  17279.         FFFFh (APM v1.0)
  17280. Return: CF clear if successful
  17281.     CF set on error
  17282.         AH = error code (09h) (see #0334)
  17283. Note:    should not be called from within a hardware interrupt handler to avoid
  17284.       reentrance problems
  17285. SeeAlso: AX=5308h
  17286. --------p-15530ABX0001-----------------------
  17287. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  17288.     AX = 530Ah
  17289.     BX = 0001h (device ID for all devices power-managed by APM)
  17290. Return: CF clear if successful
  17291.         BH = AC line status
  17292.         00h off-line
  17293.         01h on-line
  17294.         02h on backup power (APM v1.1)
  17295.         FFh unknown
  17296.         other reserved
  17297.         BL = battery status (see #0337)
  17298.         CH = battery flag (APM v1.1) (see #0338)
  17299.         CL = remaining battery life, percentage
  17300.         00h-64h (0-100) percentage of full charge
  17301.         FFh unknown
  17302.         DX = remaining battery life, time (APM v1.1) (see #0339)
  17303.     CF set on error
  17304.         AH = error code (09h) (see #0334)
  17305. Note:    should not be called from within a hardware interrupt handler to avoid
  17306.       reentrance problems
  17307.  
  17308. (Table 0337)
  17309. Values for APM v1.0+ battery status:
  17310.  00h    high
  17311.  01h    low
  17312.  02h    critical
  17313.  03h    charging
  17314.  FFh    unknown
  17315.  other    reserved
  17316.  
  17317. Bitfields for APM v1.1 battery flag:
  17318. Bit(s)    Description    (Table 0338)
  17319.  0    high
  17320.  1    low
  17321.  2    critical
  17322.  3    charging
  17323.  4-6    reserved
  17324.  7    no system battery
  17325. Note:    all bits set (FFh) if unknown
  17326.  
  17327. Bitfields for APM v1.1 remaining battery life:
  17328. Bit(s)    Description    (Table 0339)
  17329.  15    time units: 0=seconds, 1=minutes
  17330.  14-0    battery life in minutes or seconds
  17331. Note:    all bits set (FFFFh) if unknown
  17332. --------p-15530B-----------------------------
  17333. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  17334.     AX = 530Bh
  17335. Return: CF clear if successful
  17336.         BX = event code (see #0340)
  17337.     CF set on error
  17338.         AH = error code (03h,0Bh,80h) (see #0334)
  17339. Notes:    although power management events are often asynchronous, notification
  17340.       will not be made until polled via this call to permit software to
  17341.       only receive event notification when it is prepared to process
  17342.       power management events; since these events are not very time-
  17343.       critical, it should be sufficient to poll once or twice per second
  17344.     the critical resume notification is made after the system resumes
  17345.       from an emergency suspension; normally, the system BIOS only notifies
  17346.       its partner that it wishes to suspend and relies on the partner to
  17347.       actually request the suspension, but no notification is made on an
  17348.       emergency suspension
  17349.     should not be called from within a hardware interrupt handler to avoid
  17350.       reentrance problems
  17351. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  17352.  
  17353. (Table 0340)
  17354. Values for APM event code:
  17355.  0001h    system stand-by request
  17356.  0002h    system suspend request
  17357.  0003h    normal resume system notification
  17358.  0004h    critical resume system notification
  17359.  0005h    battery low notification
  17360. ---APM v1.1---
  17361.  0006h    power status change notification
  17362.  0007h    update time notification
  17363.  0008h    critical system suspend notification
  17364.  0009h    user system standby request notification
  17365.  000Ah    user system suspend request notification
  17366.  000Bh    system standby resume notification
  17367.  000Ch-00FFh reserved system events
  17368.  01xxh    reserved device events
  17369.  02xxh    OEM-defined APM events
  17370.  0300h-FFFFh reserved
  17371. --------p-15530C-----------------------------
  17372. INT 15 - Advanced Power Management v1.1 - GET POWER STATE
  17373.     AX = 530Ch
  17374.     BX = device ID (see #0335)
  17375. Return: CF clear if successful
  17376.         BX = system state ID (see #0336)
  17377.     CF set on error
  17378.         AH = error code (01h,09h) (see #0334)
  17379. SeeAlso: AX=5307h
  17380. --------p-15530D-----------------------------
  17381. INT 15 - Advanced Power Management v1.1 - EN/DISABLE DEVICE POWER MANAGEMENT
  17382.     AX = 530Dh
  17383.     BX = device ID (see #0335)
  17384.     CX = function
  17385.         0000h disable power management
  17386.         0001h enable power management
  17387. Return: CF clear if successful
  17388.     CF set on error
  17389.         AH = error code (01h,03h,09h,0Ah,0Bh) (see #0334)
  17390. SeeAlso: AX=5308h,AX=530Fh
  17391. --------p-15530E-----------------------------
  17392. INT 15 - Advanced Power Management v1.1 - DRIVER VERSION
  17393.     AX = 530Eh
  17394.     BX = device ID of system BIOS (0000h)
  17395.     CH = APM driver major version (BCD)
  17396.     CL = APM driver minor version (BCD)
  17397. Return: CF clear if successful
  17398.         AH = APM connection major version (BCD)
  17399.         AL = APM connection minor version (BCD)
  17400.     CF set on error
  17401.         AH = error code (03h,09h,0Bh) (see #0334)
  17402. SeeAlso: AX=5300h
  17403. --------p-15530F-----------------------------
  17404. INT 15 - Advanced Power Management v1.1 - ENGAGE/DISENGAGE POWER MANAGEMENT
  17405.     AX = 530Fh
  17406.     BX = device ID (see #0335)
  17407.     CX = function
  17408.         0000h disengage power management
  17409.         0001h engage power management
  17410. Return: CF clear if successful
  17411.     CF set on error
  17412.         AH = error code (01h,09h) (see #0334)
  17413. Note:    unlike AX=5308h, this call does not affect the functioning of the APM
  17414.       BIOS
  17415. SeeAlso: AX=5308h,AX=530Dh
  17416. --------p-155380BH00-------------------------
  17417. INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
  17418.     AX = 5380h
  17419.     BH = 00h
  17420. Return: CF clear if successful
  17421.         AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
  17422.         BL = sustdbymode (see #0341)
  17423. SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
  17424.  
  17425. Bitfields for APM SL sustdbymode:
  17426. Bit(s)    Description    (Table 0341)
  17427.  2    ???
  17428.  1    Auto Power Off Timer Enable (APWR_TMR_EN)
  17429.  0    ???
  17430. --------p-155380BH01-------------------------
  17431. INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
  17432.     AX = 5380h
  17433.     BH = 01h
  17434.     BL = sustdbymode (see #0341)
  17435. Return: CF clear if successful
  17436. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  17437. --------p-155380BH02-------------------------
  17438. INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
  17439.     AX = 5380h
  17440.     BH = 02h
  17441. Return: CF clear if successful
  17442.     SI:DI = timer count in seconds (actually 1.024 seconds)
  17443. Desc:    reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  17444. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
  17445. --------p-155380BH03-------------------------
  17446. INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
  17447.     AX = 5380h
  17448.     BH = 03h
  17449.     SI:DI = timer count in seconds (actually 1.024 seconds)
  17450. Return: CF clear if successful
  17451. Desc:    sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
  17452. Note:    the maximum timer count is 268431 seconds
  17453. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
  17454. --------p-155380BH04-------------------------
  17455. INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
  17456.     AX = 5380h
  17457.     BH = 04h
  17458. Return: CF clear if successful
  17459.     SI:DI = timer count in seconds (actually 1.024 seconds)
  17460. Desc:    reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
  17461. SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
  17462. --------p-155380BH05-------------------------
  17463. INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
  17464.     AX = 5380h
  17465.     BH = 05h
  17466.     SI:DI = timer count in seconds (actually 1.024 seconds)
  17467. Return: CF clear if successful
  17468. Desc:    sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
  17469. Note:    the maximum timer count is 134213 seconds
  17470. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
  17471. --------p-155380BH06-------------------------
  17472. INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
  17473.     AX = 5380h
  17474.     BH = 06h
  17475. Return: CF clear if successful
  17476.         BL = resume condition (see #0342)
  17477. Desc:    reads the value of 82360SL RESUME_MASK register
  17478. SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
  17479.  
  17480. Bitfields for APM SL resume condition:
  17481. Bit(s)    Description    (Table 0342)
  17482.  7-2    reserved (0)
  17483.  1    alarm enabled (resume on CMOS alarm)
  17484.  0    ring enabled
  17485. --------p-155380BH07-------------------------
  17486. INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
  17487.     AX = 5380h
  17488.     BH = 07h
  17489.     BL = resume condition (see #0342)
  17490. Return: CF clear if successful
  17491. Desc:    sets the value of 82360SL RESUME_MASK register
  17492. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
  17493. --------p-155380BH08-------------------------
  17494. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
  17495.     AX = 5380h
  17496.     BH = 08h
  17497. Return: CF clear if successful
  17498.         CH = hours
  17499.         CL = minutes
  17500.         SI = seconds
  17501.     CF set on error
  17502.         AH = error code (see #0343)
  17503. Desc:    gets calendar event time from CMOS ram
  17504. SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  17505.  
  17506. (Table 0343)
  17507. Values for APM SL error code:
  17508.  02h    no alarm set
  17509.  03h    no battery
  17510. --------p-155380BH09-------------------------
  17511. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
  17512.     AX = 5380h
  17513.     BH = 09h
  17514.     CH = hours
  17515.     CL = minutes
  17516.     SI = seconds
  17517. Return: CF clear if successful
  17518.     CF set on error
  17519.         AH = error code (see #0343)
  17520. Desc:    sets calendar event time in CMOS ram, enables Alarm resume
  17521. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
  17522. --------p-155380BH0A-------------------------
  17523. INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
  17524.     AX = 5380h
  17525.     BH = 0Ah
  17526. Return: CF clear if successful
  17527.         SI = century
  17528.         DI = year
  17529.         CH = month
  17530.         CL = day
  17531.     CF set on error
  17532.         AH = error code (see #0343)
  17533. Desc:    reads calendar event date from Extended CMOS ram
  17534. SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
  17535. --------p-155380BH0B-------------------------
  17536. INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
  17537.     AX = 5380h
  17538.     BH = 0Bh
  17539.     SI = century
  17540.     DI = year
  17541.     CH = month
  17542.     CL = day
  17543. Return: CF clear if successful
  17544.     CF set on error
  17545.         AH = error code (see #0343)
  17546. Desc:    sets calendar event date in Extended CMOS ram
  17547. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
  17548. --------p-155380BH0C-------------------------
  17549. INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
  17550.     AX = 5380h
  17551.     BH = 0Ch
  17552. Return: CF clear if successful
  17553.     CL = CPU clock divider (1,2,4 or 8)
  17554.     BL = autocpumode ???
  17555. Desc:    reads bits 4-5 of CPUPWRMODE register
  17556. SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
  17557. --------p-155380BH0D-------------------------
  17558. INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
  17559.     AX = 5380h
  17560.     BH = 0Dh
  17561.     CL = CPU clock divider (1,2,4 or 8)
  17562.     BL = autocpumode ???
  17563. Return: CF clear if successful
  17564. Desc:    writes bits 4-5 of CPUPWRMODE register
  17565. SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
  17566. --------p-155380BH7E-------------------------
  17567. INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
  17568.     AX = 5380h
  17569.     BH = 7Eh
  17570. Return:    AL = ???
  17571.         03h on A-Step 386SL BIOSes
  17572.         12h on later steps
  17573.     BX = Control port (00B0h)
  17574. SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
  17575. --------p-155380BH7F-------------------------
  17576. INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
  17577.     AX = 5380h
  17578.     BH = 7Fh
  17579. Return: CF clear if successful
  17580.         BX = OEM identifier
  17581.         all other registers OEM-defined
  17582.         ---Intel SL Enhanced Option BIOS---
  17583.         BX = 534Ch ('SL')
  17584.         CL = 4Fh ('O')
  17585.         AL = version (10h = 1.0)
  17586.     CF set on error
  17587.         AH = error code (03h) (see #0334)
  17588. SeeAlso: AX=5380h/BH=00h
  17589. --------p-155380-----------------------------
  17590. INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
  17591.     AX = 5380h
  17592.     BH <> 7Fh
  17593.     all other registers OEM-defined
  17594. Return: OEM-defined
  17595. SeeAlso: AX=5380h/BH=7Fh
  17596. --------T-155400-----------------------------
  17597. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  17598.     AX = 5400h
  17599.     ES:BX -> device information tables
  17600.     DI:DX -> dispatcher entry point
  17601. Note:    called by OmniView to notify programs loaded before OmniView of state
  17602.       changes inside OmniView
  17603. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  17604. --------T-155401-----------------------------
  17605. INT 15 C - Omniview Multitasker - PROCESS CREATION
  17606.     AX = 5401h
  17607.     ES:BX = process handle
  17608. Note:    called by OmniView to notify programs loaded before OmniView of state
  17609.       changes inside OmniView
  17610. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  17611. --------T-155402-----------------------------
  17612. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  17613.     AX = 5402h
  17614.     ES:DX = process handle
  17615. Note:    called by OmniView to notify programs loaded before OmniView of state
  17616.       changes inside OmniView
  17617. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  17618. --------T-155403-----------------------------
  17619. INT 15 C - Omniview Multitasker - SAVE
  17620.     AX = 5403h
  17621.     ES:DX = process swapping out
  17622. Note:    called by OmniView to notify programs loaded before OmniView of state
  17623.       changes inside OmniView
  17624. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  17625. --------T-155404-----------------------------
  17626. INT 15 C - Omniview Multitasker - RESTORE
  17627.     AX = 5404h
  17628.     ES:DX = process swapping in
  17629. Note:    called by OmniView to notify programs loaded before OmniView of state
  17630.       changes inside OmniView
  17631. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  17632. --------T-155405-----------------------------
  17633. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  17634.     AX = 5405h
  17635.     ES:DX = process swapping in
  17636. Note:    called by OmniView to notify programs loaded before OmniView of state
  17637.       changes inside OmniView
  17638. SeeAlso: AX=5406h
  17639. --------T-155406-----------------------------
  17640. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  17641.     AX = 5406h
  17642.     ES:DX = process swapping in
  17643. Note:    called by OmniView to notify programs loaded before OmniView of state
  17644.       changes inside OmniView
  17645. SeeAlso: AX=5405h
  17646. --------T-155407-----------------------------
  17647. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  17648.     AX = 5407h
  17649. Note:    called by OmniView to notify programs loaded before OmniView of state
  17650.       changes inside OmniView
  17651. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  17652. --------b-1560------------------------------------
  17653. INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
  17654.     AH = 60h
  17655.     AL = new speed
  17656.         00h normal (8 MHz)
  17657.         01h Slow Mode 1 (4 MHz)
  17658.         02h Slow Mode 2 (2 MHz)
  17659. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  17660.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  17661. SeeAlso: AX=6301h
  17662. --------b-1561------------------------------------
  17663. INT 15 - HUNTER 16 - GET POWER LEVEL
  17664.     AH = 61h
  17665. Return: AH = percentage of full power left (0..100)
  17666. Desc:    determine how much battery power is left
  17667. SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
  17668. --------b-1562------------------------------------
  17669. INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
  17670.     AH = 62h
  17671.     AL = level (00h 5%, 01h 10%, ... 12h 95%)
  17672.     BX = interval between power low warnings in seconds (1..600)
  17673. Return: AH = Status
  17674. Desc:    set the level (relative to full power) when power-low warnings begin
  17675.       and the interval between the warnings
  17676. SeeAlso: AH=61h,AH=65h,AH=66h
  17677. --------b-156300----------------------------------
  17678. INT 15 - HUNTER 16 - GET IDLE TIMEOUT
  17679.     AX = 6300h
  17680. Return: AH = status
  17681.     BX = timeout in seconds (0-3600)
  17682. Desc:    get the idle timeout value, the interval without keyboard or
  17683.        communications activity before the system shuts down
  17684. SeeAlso: AX=6301h
  17685. --------b-156301----------------------------------
  17686. INT 15 - HUNTER 16 - SET IDLE TIMEOUT
  17687.     AX = 6301h
  17688.     BX = timeout in seconds (0-3600)
  17689. Desc:    sets the idle timeout value, the interval without keyboard or
  17690.       communications activity before the system shuts down
  17691. SeeAlso: AX=6300h
  17692. --------b-1564------------------------------------
  17693. INT 15 - HUNTER 16 - CONTROL RESUME MODE
  17694.     AH = 64h
  17695.     AL = new state
  17696.         00h disable Resume mode
  17697.         01h enable Resume mode
  17698. Return: AH = status
  17699. Desc:    turn Resume mode on or off. In Resume mode the system starts in
  17700.       the application that was running when it shut down as if nothing 
  17701.       had happened.
  17702. SeeAlso: AH=67h,AH=68h,AH=69h
  17703. --------b-1565------------------------------------
  17704. INT 15 - HUNTER 16 - AUTHORISE CHARGING
  17705.     AH = 65h
  17706.     AL = charging level
  17707.         01h charging not allowed
  17708.         02h charging allowed until power down
  17709.         03h charging allowed until batteries changed or fail.
  17710.         Ask user if charging is still allowed on next poweron
  17711.         04h charging allowed indefinitely
  17712.     BX = 0203h
  17713.     CX = 0405h
  17714.     DX = 0607h
  17715. Return: AH = status
  17716. SeeAlso: AH=66h,AH=68h
  17717. --------b-1566------------------------------------
  17718. INT 15 - HUNTER 16 - SET BATTERY LEVEL
  17719.     AH = 66h
  17720.     AL = level in percent of maximum (0..100)
  17721. Return: AH = status
  17722. SeeAlso: AH=61h,AH=65h
  17723. --------b-1567------------------------------------
  17724. INT 15 - HUNTER 16 - CONTROL STOP MODE
  17725.     AH = 67h
  17726.     AL = mode when waiting for input
  17727.         00h use STOP mode (allows communication)
  17728.         01h use HALT mode (disallows communication)
  17729. Return: AH = status
  17730. Desc:    select the power save mode to use when waiting for input
  17731. SeeAlso: AH=69h
  17732. --------b-1568------------------------------------
  17733. INT 15 - HUNTER 16 - REQUEST POWER DOWN
  17734.     AH = 68h
  17735. Desc:    turns off the Hunter 16 if power down is allowed (see AH=69h)
  17736. SeeAlso: AH=69h
  17737. --------b-1569------------------------------------
  17738. INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
  17739.     AH = 69h
  17740.     AL = mode
  17741.         00h inhibit power down
  17742.         01h allow power down
  17743. Return: AH = status
  17744. SeeAlso: AH=67h,AH=68h,AH=6Ah
  17745. --------b-156A------------------------------------
  17746. INT 15 - HUNTER 16 - CONTROL SLOW MODE
  17747.     AH = 6Ah
  17748.     AL = mode
  17749.         00h inhibit Slow mode
  17750.         01h allow Slow mode
  17751. Return: AH = status
  17752. SeeAlso: AH=69h
  17753. --------b-156B------------------------------------
  17754. INT 15 - HUNTER 16 - GET ROM BIOS VERSION
  17755.     AH = 6Bh
  17756. Return: BH = version number (ASCII)
  17757.     BL = release number (ASCII)
  17758.     CH = minor release number (ASCII)
  17759.     CL = minor release number (ASCII)
  17760. SeeAlso: AH=6Ch
  17761. --------b-156C------------------------------------
  17762. INT 15 - HUNTER 16 - GET SERIAL NUMBER
  17763.     AH = 6Ch
  17764. Return: BL:CX = BCD serial number
  17765. Note:    when shipped, all Hunter 16s have the same Serial Number, but a
  17766.       different number can be stored (see AH=72h)
  17767. SeeAlso: AH=6Bh,AH=72h
  17768. --------b-156D------------------------------------
  17769. INT 15 - HUNTER 16 - GET EVENT DETAIL
  17770.     AH = 6Dh
  17771. Return: AH = 00h if successful
  17772.     CX:BX = event flags bit 0..31 (see #0344)
  17773. Note:    this function allows testing for events
  17774. SeeAlso: AH=6Eh,AH=6Fh
  17775.  
  17776. Bitfields for HUNTER 16 events:
  17777. Bit(s)    Description    (Table 0344)
  17778.  6    RI received
  17779.  5    RTC Alarm
  17780.  4    data received on COM2
  17781.  3    data received on COM1
  17782.  2    error on COM2
  17783.  1    error on COM1
  17784.  0    PWR button pressed
  17785. --------b-156E------------------------------------
  17786. INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
  17787.     AH = 6Eh
  17788.     AL = Software Interrupt
  17789.           00h  do not trap event
  17790.           else trap as software interrupt number AL
  17791.     BH = event number (see AH=6Dh)
  17792.     BL = enable mask
  17793.         00h disable event
  17794.         01h enable event
  17795. Return: AH = 00h if successful
  17796. SeeAlso: AH=6Dh,AH=6Fh
  17797. --------b-156F------------------------------------
  17798. INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
  17799.     AH = 6Fh
  17800.     AL = event number (see AH=6Dh)
  17801. Return: AH = 00h if successful
  17802. Desc:    Acknowledges the event, so the next similar event can be detected 
  17803. SeeAlso: AH=6Dh"HUNTER",AH=6Eh
  17804. ----------157000-----------------------------
  17805. INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
  17806.     AX = 7000h
  17807.     BL = number of word to read (00h-3Fh)
  17808. Return: CF clear if function supported
  17809.         DX = contents of EEPROM word
  17810. Note:    newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
  17811.       the clock chip to store system configuration information
  17812. SeeAlso: AX=7001h
  17813. ----------157001-----------------------------
  17814. INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
  17815.     AX = 7001h
  17816.     BL = number of word to read (00h-3Fh)
  17817.     DX = new value for EEPROM word
  17818. Return: CF clear if function supported
  17819. Note:    the EEPROMs are normally written only by the system setup program;
  17820.       changing the values can badly mess up a Tandy
  17821. SeeAlso: AX=7000h
  17822. --------b-1570------------------------------------
  17823. INT 15 - HUNTER 16 - CONTROL SOUND
  17824.     AH = 70h
  17825.     AL = new state
  17826.         00h disable sound
  17827.         else enable sound
  17828. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  17829.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  17830. --------b-1571------------------------------------
  17831. INT 15 - HUNTER 16 - SELECT POWER UP KEYS
  17832.     AH = 71h
  17833.     BL = column
  17834.     BH = row
  17835.     AL = column switch (00h disable, 01h enable)
  17836.     CL = row switch (00h disable, 01h enable)
  17837. Return: AH = status
  17838. SeeAlso: AH=7Bh,AH=88h
  17839. --------b-157200----------------------------------
  17840. INT 15 - HUNTER 16 - RESET SERIAL NUMBER
  17841.     AX = 7200h
  17842. Return: AH = 00h if successful
  17843. Desc:    reset the serial number to the default serial number present when the
  17844.       Hunter 16 was shipped
  17845. SeeAlso: AH=6Ch,AH=72h
  17846. --------b-1572------------------------------------
  17847. INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
  17848.     AH = 72h
  17849.     AL nonzero
  17850.     DS:BX -> new serial number (6 ASCII digits)
  17851. Return: AH = 00h if successful
  17852. Desc:    install a new serial number
  17853. SeeAlso: AH=6Ch,AX=7200h
  17854. --------b-1573------------------------------------
  17855. INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
  17856.     AH = 73h
  17857.     AL = drive (0: A:, 1: B:)
  17858. Return: AH = status
  17859.         00h successful
  17860.         FFh Oracle GT drive not connected
  17861.     AL = power level in percent of maximum (0..100)
  17862. Desc:    get the power remaining in the Oracle GT batteries
  17863. SeeAlso: AH=61h
  17864. --------b-1574------------------------------------
  17865. INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
  17866.     AH = 74h
  17867.     AL = new level
  17868.         01h off
  17869.         02h unchanged
  17870.         03h change level
  17871.         BL = desired level (00h-7Fh)
  17872. Return: AH = status
  17873. Desc:    select the backlight level to use when the Hunter is next turned on
  17874. SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
  17875. --------b-1575------------------------------------
  17876. INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
  17877.     AH = 75h
  17878.     AL = new level
  17879.         01h off
  17880.         02h unchanged
  17881.         03h change level
  17882.         BL = desired level (00h-7Fh)
  17883. Return: AH = status
  17884. Desc:    select the LCD contrast level to use when the Hunter is next turned on
  17885. SeeAlso: AH=63h,AH=74h
  17886. --------b-1576------------------------------------
  17887. INT 15 - HUNTER 16 - CONTROL POWER SAVE
  17888.     AH = 76h
  17889.     BX = power save control (see #0345)
  17890. SeeAlso: AH=74h
  17891.  
  17892. Bitfields for HUNTER 16 power save control:
  17893. Bit(s)    Description    (Table 0345)
  17894.  0    power save enabled
  17895.  1    inhibit power save when waiting for COM1 data
  17896.  2    inhibit power save when waiting for COM2 data
  17897.  3    inhibit power save when waiting for data from barcode wand
  17898.  4    inhibit power up on timer tick
  17899. --------b-1579------------------------------------
  17900. INT 15 - HUNTER 16 - REDIRECT LPT1
  17901.     AH = 79h
  17902.     AL = port to which to redirect (00h COM1, 01h COM2)
  17903. --------b-157A------------------------------------
  17904. INT 15 - HUNTER 16 - INVOKE HOT KEY
  17905.     AH = 7Ah
  17906. Desc:    this function has the same effect as pressing the HOT key
  17907. SeeAlso: AH=7Bh
  17908. --------b-157B------------------------------------
  17909. INT 15 - HUNTER 16 - CONTROL HOT KEY
  17910.     AH = 7Bh
  17911.     AL = 00h prevent HOT key
  17912.         else allow HOT key
  17913. Desc:    Allow or prevent the HOT key function which is used to examine and
  17914.       change the Hunter setup
  17915. SeeAlso: AH=71h,AH=7Ah,AH=7Ch
  17916. --------b-157C------------------------------------
  17917. INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
  17918.     AH = 7Ch
  17919.     AL = 00h prevent HOT key power option
  17920.         else allow HOT key power option
  17921. Desc:    allow or prevent changing the power options
  17922. SeeAlso: AH=7Bh,AH=7Dh
  17923. --------b-157D------------------------------------
  17924. INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
  17925.     AH = 7Dh
  17926.     AL = 00h turn off after 10 warnings
  17927.         else never turn off
  17928. Desc:    specify whether the Hunter 16 turns off after 10 low power warnings
  17929. SeeAlso: AH=7Ch
  17930. --------b-157E------------------------------------
  17931. INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
  17932.     AH = 7Eh
  17933.     AL = 00h do not prompt
  17934.         else prompt
  17935. Desc:    select whether the user is prompted for the battery state if the
  17936.       battery cap has been off when the system is turned on
  17937. SeeAlso: AH=7Fh
  17938. --------b-157F------------------------------------
  17939. INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
  17940.     AH = 7Fh
  17941.     AL = battery type
  17942.         00h     non-rechargeable
  17943.         else rechargeable
  17944. SeeAlso: AH=7Eh
  17945. --------!---Section--------------------------
  17946. Interrupt List, part 3 of 12
  17947. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  17948. --------B-1580-------------------------------
  17949. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  17950.     AH = 80h
  17951.     BX = device ID
  17952.     CX = process ID
  17953.     CF clear
  17954. Return: CF clear if successful
  17955.         AH = 00h
  17956.     CF set on error
  17957.         AH = status (see #0346)
  17958. Note:    this function should be hooked by a multitasker which wishes to keep
  17959.       track of device ownership; the default BIOS handler merely returns
  17960.       successfully
  17961. SeeAlso: AH=81h,AH=82h
  17962.  
  17963. (Table 0346)
  17964. Values for status:
  17965.  80h    invalid command (PC,PCjr)
  17966.  86h    function not supported (XT)
  17967. --------b-1580------------------------------------
  17968. INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
  17969.     AH = 80h
  17970.     AL = function
  17971.         00h get
  17972.         Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
  17973.         else set
  17974.         BL = battery capacity (same as AL above)
  17975. SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
  17976. --------B-1581-------------------------------
  17977. INT 15 C - OS HOOK - DEVICE CLOSE
  17978.     AH = 81h
  17979.     BX = device ID
  17980.     CX = process ID
  17981.     CF clear
  17982. Return: CF clear if successful
  17983.         AH = 00h
  17984.     CF set on error
  17985.         AH = status (see #0346)
  17986. Note:    this function should be hooked by a multitasker which wishes to keep
  17987.       track of device ownership; the default BIOS handler merely returns
  17988.       successfully
  17989. SeeAlso: AH=80h,AH=82h
  17990. --------b-1581------------------------------------
  17991. INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
  17992.     AH = 81h
  17993.     AL = new state of power output (00h off, nonzero on)
  17994. Desc:    turn the +5V low power output on or off
  17995. SeeAlso: AH=80h"HUNTER"
  17996. --------B-1582-------------------------------
  17997. INT 15 C - OS HOOK - PROGRAM TERMINATION
  17998.     AH = 82h
  17999.     BX = process ID
  18000.     CF clear
  18001. Return: CF clear if successful
  18002.         AH = 00h
  18003.     CF set on error
  18004.         AH = status (see #0346)
  18005. Notes:    closes all devices opened by the given process ID with function 80h
  18006.     this function should be hooked by a multitasker which wishes to keep
  18007.       track of device ownership; the default BIOS handler merely returns
  18008.       successfully
  18009. SeeAlso: AH=80h,AH=81h
  18010. --------b-1582------------------------------------
  18011. INT 15 - HUNTER 16 - SOUND OUTPUT
  18012.     AH = 82h
  18013.     DX = length (duration in seconds = DX * 666670 / frequency)
  18014.     BX = pitch (see #0347)
  18015. Desc:    Sound the tone specified in BX for the duration in DX
  18016. SeeAlso: AX=1019h
  18017.  
  18018. (Table 0347)
  18019. Values for HUNTER 16 sound pitch:
  18020. BX(dec)     Note    Frequency    BX(dec)     Note    Frequency
  18021.   425    G    1568.000     1515    A     440.000
  18022.   451    F#    1479.503     1605    G#     415.307
  18023.   477    F    1396.900     1701    G     392.000
  18024.   506    E    1318.500     1802    F#     369.998
  18025.   536    D#    1244.523     1909    F     349.230
  18026.   568    D    1174.700     2022    E     329.630
  18027.   601    C#    1108.749     2143    D#     311.127
  18028.   637    C    1046.500     2270    D     293.660
  18029.   675    B     958.770     2405    C#     277.183
  18030.   715    A#     932.329     2548    MID C     261.630
  18031.   758    A     880.000     2700    B     246.940
  18032.   803    G#     830.609     2860    A#     233.081
  18033.   850    G     783.990     3030    A     220.000
  18034.   901    F#     739.990     3210    G#     207.654
  18035.   954    F     698.460     3401    G     196.000
  18036.  1011    E     659.260     3604    F#     184.996
  18037.  1071    D#     622.257     3818    F     174.610
  18038.  1135    D     587.330     4045    E     164.810
  18039.  1203    C#     554.365     4286    D#     155.560
  18040.  1274    C     523.250     4540    D     146.830
  18041.  1350    B     493.880     4668    C#     142.827
  18042.  1430    A#     466.162     4803    C     138.810
  18043. --------B-1583-------------------------------
  18044. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  18045.     AH = 83h
  18046.     AL = subfunction
  18047.         00h set interval
  18048.         CX:DX = microseconds to delay
  18049.         ES:BX -> byte whose high bit is to be set at end of interval
  18050.         01h cancel wait interval
  18051. Return: CF set on error or function already busy
  18052.         AH = status
  18053.         80h invalid command (PC,PCjr)
  18054.         86h function not supported (XT and later)
  18055.     CF clear if successful
  18056. Notes:    the resolution of the wait period is 977 microseconds on most systems
  18057.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  18058.       real-time clock chip which is available on INT 70
  18059.     IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
  18060. SeeAlso: AH=41h,AH=86h,INT 70
  18061. --------b-1583------------------------------------
  18062. INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
  18063.     AH = 83h
  18064.     AL = state of LCD window (00h disabled, nonzero enabled)
  18065. Desc:    Enable/disable the facility where the displayed window tracks the
  18066.       cursor output to keep the focus visible
  18067. --------B-1584-------------------------------
  18068. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  18069.     AH = 84h
  18070.     DX = subfunction
  18071.         0000h read joystick switches
  18072.         Return: AL bits 7-4 = switch settings
  18073.         0001h read positions of joysticks
  18074.         Return: AX = X position of joystick A
  18075.             BX = Y position of joystick A
  18076.             CX = X position of joystick B
  18077.             DX = Y position of joystick B
  18078. Return: CF set on error
  18079.         AH = status (see #0346)
  18080.     CF clear if successful
  18081. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  18082.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  18083.     a 250kOhm joystick typically returns 0000h-01A0h
  18084. --------b-158400----------------------------------
  18085. INT 15 - HUNTER 16 - GET DISKETTE PORT
  18086.     AX = 8400h
  18087.     BH = Drive (0: A:, 1: B:)
  18088. Return: AL = Port (0: COM1, >0: COM2)
  18089. Desc:    return the COM port used for the floppy drive
  18090. SeeAlso: AX=8401h
  18091. --------b-158401----------------------------------
  18092. INT 15 - HUNTER 16 - SET DISKETTE PORT
  18093.     AX = 8401h
  18094.     BH = Drive (0: A:, 1: B:)
  18095.     BL = Port (0: COM1, >0: COM2)
  18096. Desc:    set the COM port used for the floppy drive
  18097. SeeAlso: AX=8400h
  18098. --------B-1585-------------------------------
  18099. INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
  18100.     AH = 85h
  18101.     AL = SysReq key action (00h pressed, 01h released)
  18102.     CF clear
  18103. Return: CF clear if successful
  18104.         AH = 00h
  18105.     CF set on error
  18106.         AH = status (see #0346)
  18107. Notes:    called by keyboard decode routine
  18108.     the default handler simply returns successfully; programs which wish
  18109.       to monitor the SysReq key must hook this call
  18110.     the SysReq key is often labeled SysRq
  18111. SeeAlso: INT 09
  18112. --------b-158500----------------------------------
  18113. INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
  18114.     AX = 8500h
  18115. Desc:    restore the standard power menu
  18116. SeeAlso: AX=8501h"HUNTER"
  18117. --------b-158501----------------------------------
  18118. INT 15 - HUNTER 16 - SET POWER MENU (APM)
  18119.     AX = 8501h
  18120.     BL = user software interrupt number
  18121. Desc:    install an alternate power menu routine
  18122. SeeAlso: AX=8500h"HUNTER"
  18123. --------B-1586-------------------------------
  18124. INT 15 - BIOS - WAIT (AT,PS)
  18125.     AH = 86h
  18126.     CX:DX = interval in microseconds
  18127. Return: CF clear if successful (wait interval elapsed)
  18128.     CF set on error or AH=83h wait already in progress
  18129.         AH = status (see #0346)
  18130. Note:    the resolution of the wait period is 977 microseconds on most systems
  18131.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  18132.       real-time clock chip which is available on INT 70
  18133. SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
  18134. --------b-1586------------------------------------
  18135. INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
  18136.     AH = 86h
  18137.     AL = function (00h get, nonzero set)
  18138.     BX = 1234h
  18139.     DS:SI -> 256-byte Attribute buffer
  18140. Note:    In text modes each character has its attribute byte XOR'd with the
  18141.       corresponding byte in the attribute table.  If the attribute is 15,
  18142.       15 is XOR'd with Table[15]
  18143. --------B-1587-------------------------------
  18144. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  18145.     AH = 87h
  18146.     CX = number of words to copy (max 8000h)
  18147.     ES:SI -> global descriptor table (see #0349)
  18148. Return: CF set on error
  18149.     CF clear if successful
  18150.     AH = status (see #0348)
  18151. Notes:    copy is done in protected mode with interrupts disabled by the default
  18152.       BIOS handler; many 386 memory managers perform the copy with
  18153.       interrupts enabled
  18154.     this function is incompatible with the OS/2 compatibility box
  18155. SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
  18156.  
  18157. (Table 0348)
  18158. Values for extended-memory copy status:
  18159.  00h    source copied into destination
  18160.  01h    parity error
  18161.  02h    interrupt error
  18162.  03h    address line 20 gating failed
  18163.  80h    invalid command (PC,PCjr)
  18164.  86h    unsupported function (XT,PS30)
  18165.  
  18166. Format of global descriptor table:
  18167. Offset    Size    Description    (Table 0349)
  18168.  00h 16 BYTEs    zeros (used by BIOS)
  18169.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  18170.  12h  3 BYTEs    24-bit linear source address, low byte first
  18171.  15h    BYTE    source segment access rights (93h)
  18172.  16h    WORD    zero
  18173.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  18174.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  18175.  1Dh    BYTE    destination segment access rights (93h)
  18176.  1Eh 18 BYTEs    zeros (used by BIOS)
  18177. --------b-1587------------------------------------
  18178. INT 15 - HUNTER 16 - SET INT 72h VECTOR
  18179.     AH = 87h
  18180.     DS:DX = new service routine
  18181. Desc:    set the INT 72h vector which is called in 2 cases:
  18182.       - when the machine is about to turn off or reboot, INT 72h is called
  18183.         with AH=0
  18184.       - when the machine is powering up INT 72h is called with AH=01h
  18185. Note:    the actual INT 72h vector must also be changed with INT 21/AH=25h
  18186. --------B-1588-------------------------------
  18187. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  18188.     AH = 88h
  18189. Return: CF clear if successful
  18190.         AX = number of contiguous KB starting at absolute address 100000h
  18191.     CF set on error
  18192.         AH = status
  18193.         80h invalid command (PC,PCjr)
  18194.         86h unsupported function (XT,PS30)
  18195. Notes:    TSRs which wish to allocate extended memory to themselves often hook
  18196.       this call, and return a reduced memory size.    They are then free to
  18197.       use the memory between the new and old sizes at will.
  18198.     the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
  18199.       for memory beyond 16MB
  18200.     not all BIOSes correctly return the carry flag, making this call
  18201.       unreliable unless one first checks whether it is supported through
  18202.       a mechanism other than calling the function and testing CF
  18203. SeeAlso: AH=87h,AH=C7h
  18204. --------b-1588------------------------------------
  18205. INT 15 - HUNTER 16 - GET POWER UP KEYS
  18206.     AH = 88h
  18207. Return: AH = 00h
  18208.     BX = column
  18209.     CL = row
  18210. SeeAlso: AH=71h
  18211. --------B-1589-------------------------------
  18212. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  18213.     AH = 89h
  18214.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  18215.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  18216.     ES:SI -> GDT for protected mode
  18217.            offset 0h  null descriptor (initialize to zeros)
  18218.               8h  GDT descriptor
  18219.              10h  IDT descriptor
  18220.              18h  DS
  18221.              20h  ES
  18222.              28h  SS
  18223.              30h  CS
  18224.              38h  uninitialized, used to build descriptor for BIOS CS
  18225. Return: CF set on error
  18226.        AH = FFh  error enabling address line 20
  18227.     CF clear if successful
  18228.        AH = 00h
  18229.        in protected mode at specified address
  18230. Notes:    BL and BH must be multiples of 8
  18231.     the protected-mode CS must reference the same memory as the CS this
  18232.       function is called from because execution continues with the address
  18233.       following the interrupt call
  18234. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  18235. --------b-158900----------------------------------
  18236. INT 15 - HUNTER 16 - GET POWER MODE
  18237.     AX = 8900h
  18238. Return: AH = 00h
  18239.     BL = current power mode
  18240.         00h Standard Power Mode (SPM)
  18241.         01h Advanced Power Mode (APM)
  18242. SeeAlso: AX=8901h
  18243. --------b-158901----------------------------------
  18244. INT 15 - HUNTER 16 - SET POWER MODE
  18245.     AX = 8901h
  18246.     BL = new mode
  18247.         00h Standard Power Mode (SPM)
  18248.         01h Advanced Power Mode (APM)
  18249. Return: AH = 00h
  18250. SeeAlso: AX=8900h
  18251. --------b-158A------------------------------------
  18252. INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
  18253.     AH = 8Ah
  18254.     AL = new state of Power Input (00h disabled, nonzero enabled)
  18255.     SI = 1234h
  18256.     DI = 5678h
  18257. Return: AH = status
  18258.         00h success
  18259.         FFh failure
  18260. Desc:    Enable or disable Power Input. When Power Input is disabled the AC
  18261.       adaptor will neither charge the batteries nor supply power to the
  18262.       Hunter 16. Disable Power Input if using Alkaline batteries.
  18263. --------b-158B------------------------------------
  18264. INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
  18265.     AH = 8Bh
  18266.     AL = function
  18267.         00h get
  18268.         Return:    BH = Maximum charging temperature
  18269.                 Temp = -20 + (n * 0.63) degrees Centigrade
  18270.             BL = Minimum charging temperature
  18271.         else set
  18272.         BH = maximum charging temperature (as above)
  18273.         BL = minimum charging temperature (as above)
  18274. Return: AH = status
  18275.         00h success
  18276.         FFh failure 
  18277. Desc:    get/set the temperature interval within which the charger should 
  18278.       operate
  18279. --------b-158C------------------------------------
  18280. INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
  18281.     AH = 8Ch
  18282.     AL = function
  18283.         00h get
  18284.         Return: BX = which operations disable power save (see #0350)
  18285.         else set
  18286.         BX = which operations should disable power save (see #0350)
  18287. SeeAlso: AH=8Dh
  18288.  
  18289. Bitfields for HUNTER 16 operations disabling power save:
  18290. Bit(s)    Description    (Table 0350)
  18291.  0    INT 10h prevents power save
  18292.  1    INT 13h prevents power save
  18293.  2    INT 14h prevents power save
  18294.  3    INT 15h prevents power save
  18295.  4    INT 1Ah prevents power save
  18296.  5    INT 21h prevents power save
  18297.  6    direct write to video RAM prevents power save
  18298.  7    access to 8250 UART prevents power save
  18299.  8    access to 8253 (Sound) prevents power save
  18300. --------b-158D------------------------------------
  18301. INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
  18302.     AH = 8Dh
  18303.     AL = function
  18304.         00h get
  18305.         Return: AL = Fast Charge state (00h prevented, else allowed)
  18306.         nonzero set
  18307.         BH = Fast Charge state (00h prevent, nonzero allow)
  18308. Return: AH = status
  18309.         00h success
  18310.         FFh failure
  18311. Desc:    control whether Fast Charging (200ma rather than 70ma) is allowed
  18312. SeeAlso: AH=8Ch
  18313. --------B-1590-------------------------------
  18314. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  18315.     AH = 90h
  18316.     AL = device type (see #0351)
  18317.     ES:BX -> request block for type codes 80h through BFh
  18318.     CF clear
  18319. Return: CF set if wait time satisfied
  18320.     CF clear if driver must perform wait
  18321.         AH = 00h
  18322. Notes:    type codes are allocated as follows:
  18323.       00-7F non-reentrant devices; OS must arbitrate access
  18324.       80-BF reentrant devices; ES:BX points to a unique control block
  18325.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  18326.     floppy and hard disk BIOS code uses this call to implement a timeout;
  18327.       for device types 00h and 01h, a return of CF set means that the
  18328.       timeout expired before the disk responded.
  18329.     this function should be hooked by a multitasker to allow other tasks
  18330.       to execute while the BIOS is waiting for I/O completion; the default
  18331.       handler merely returns with AH=00h and CF clear
  18332. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  18333.  
  18334. (Table 0351)
  18335. Values for device type:
  18336.  00h    disk
  18337.  01h    diskette
  18338.  02h    keyboard
  18339.  03h    PS/2 pointing device
  18340.  21h    waiting for keyboard input (Phoenix BIOS)
  18341.  80h    network
  18342.  FBh    digital sound (Tandy)
  18343.  FCh    disk reset (PS)
  18344.  FDh    diskette motor start
  18345.  FEh    printer
  18346. --------B-1591-------------------------------
  18347. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  18348.     AH = 91h
  18349.     AL = device type (see #0351)
  18350.     ES:BX -> request block for type codes 80h through BFh
  18351.     CF clear
  18352. Return: AH = 00h
  18353. Note:    this function should be hooked by a multitasker to allow other tasks
  18354.       to execute while the BIOS is waiting for I/O completion; the default
  18355.       handler merely returns with AH=00h and CF clear
  18356. SeeAlso: AH=90h
  18357. ----------15A100-----------------------------
  18358. INT 15 U - AMI PCI BIOS - SET ??? FLAG
  18359.     AX = A100h
  18360. Return: AX = 0000h
  18361.     CF clear
  18362. Desc:    sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
  18363.       locations 3Eh and 3Fh
  18364. Note:    in the examined version of the BIOS, nonzero values in AL cause it to
  18365.       drop through to checking the next possible value of AH, i.e. only
  18366.       subfunction 00h is supported
  18367. --------b-15BC-------------------------------
  18368. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
  18369.     AH = BCh
  18370. Return: CF clear
  18371.     (Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
  18372.     (Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
  18373. Note:    this function reads system timer channel 0 twice, then does
  18374.       calculations on the returned values to determine the delay loop
  18375.       counter needed by the BIOS for beeps and floppy timeouts
  18376. SeeAlso: AX=2305h
  18377. --------E-15BF00-----------------------------
  18378. INT 15 - Rational Systems DOS/16M - ???
  18379.     AX = BF00h
  18380.     ???
  18381. Return: ???
  18382. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  18383. SeeAlso: AX=BF02h
  18384. --------E-15BF01-----------------------------
  18385. INT 15 - Rational Systems DOS/16M - ???
  18386.     AX = BF01h
  18387.     ???
  18388. Return: ???
  18389. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  18390.     called by DOS/4GW
  18391. SeeAlso: AX=BF00h,AX=BF02h
  18392. --------E-15BF02DX0000-----------------------
  18393. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  18394.     AX = BF02h
  18395.     DX = 0000h
  18396. Return: DX = nonzero if installed
  18397.         DX:SI -> XBRK structure (see #0352)
  18398. Note:    this function is also supported by DOS/4G
  18399. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  18400. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  18401.  
  18402. Format of DOS/16M XBRK structure:
  18403. Offset    Size    Description    (Table 0352)
  18404.  00h    DWORD    linear address of first available byte
  18405.  04h    DWORD    linear address of last available byte + 1 ???
  18406.  08h    DWORD    real-mode address of XBRK structure???
  18407.  0Ch    DWORD    ???
  18408.  10h  2 BYTEs    ???
  18409.  12h    WORD    segment of ???
  18410.  14h  8 BYTEs    ???
  18411.  1Ch 512 BYTEs    protected-mode IDT
  18412. 21Ch  N BYTEs    protected-mode GDT
  18413. --------E-15BF03-----------------------------
  18414. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  18415.     AX = BF03h
  18416.     BX = PSP segment of extender
  18417.     ???
  18418. Return: ???
  18419. Note:    if BX is not the PSP segment of the extender, it passes the call down
  18420.       the INT 15 chain; this allows nested instances of the extender
  18421. SeeAlso: AX=BF06h
  18422. --------E-15BF04-----------------------------
  18423. INT 15 - Rational Systems DOS/4GW - ???
  18424.     AX = BF04h
  18425.     BX = PSP segment of extender
  18426. Return: nothing???
  18427. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  18428.       the INT 15 chain; this allows nested instances of the extender
  18429.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  18430. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  18431. --------E-15BF05-----------------------------
  18432. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  18433.     AX = BF05h
  18434.     BX = PSP segment of extender
  18435. Return: nothing???
  18436. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  18437.       the INT 15 chain; this allows nested instances of the extender
  18438.     calls INT 67/AX=DE01h if ???
  18439. --------E-15BF06-----------------------------
  18440. INT 15 - Rational Systems DOS/4GW - ???
  18441.     AX = BF06h
  18442.     BX = PSP segment of extender
  18443.     ???
  18444. Return: ???
  18445. Note:    if BX is not the PSP segment of the extender, it passes the call down
  18446.       the INT 15 chain; this allows nested instances of the extender
  18447. SeeAlso: AX=BF03h
  18448. --------E-15BFDCDX0000-----------------------
  18449. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  18450.     AX = BFDCh
  18451.     DX = 0000h
  18452.     SI = 0000h
  18453. Return: DX = nonzero if installed
  18454.         DX:SI -> XBRK structure (see #0352)
  18455. SeeAlso: AX=BF02h
  18456. --------E-15BFDEBX0000-----------------------
  18457. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  18458.     AX = BFDEh
  18459.     BX = 0000h
  18460. Return: AX = ??? (0003h)
  18461.     BX = FFFFh
  18462. SeeAlso: AX=BF02h
  18463. --------E-15BFDEBX0001-----------------------
  18464. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  18465.     AX = BFDEh
  18466.     BX = 0001h
  18467. Return: BX = 0000h (success)
  18468.     CX:DX -> name of process manager executable
  18469. SeeAlso: AX=BFDEh/BX=0000h
  18470. --------E-15BFDEBX0002-----------------------
  18471. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  18472.     AX = BFDEh
  18473.     BX = 0002h
  18474.     CX:DX -> ???
  18475. Return: BX = 0000h (success)
  18476. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  18477. --------E-15BFDEBX0003-----------------------
  18478. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18479.     AX = BFDEh
  18480.     BX = 0003h
  18481. Return: BX = 0000h (success)
  18482.     CX:DX -> ???
  18483. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  18484. --------E-15BFDEBX0004-----------------------
  18485. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18486.     AX = BFDEh
  18487.     BX = 0004h
  18488.     CL = ???
  18489. Return: BX = 0000h (success)
  18490.     CX:DX -> XBRK structure (see #0352)
  18491. SeeAlso: AX=BFDEh/BX=0000h
  18492. --------E-15BFDEBX0005-----------------------
  18493. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18494.     AX = BFDEh
  18495.     BX = 0005h
  18496.     CX = new value for ???
  18497. Return: BX = 0000h (success)
  18498.     AX = old value of ???
  18499.     DS:SI -> ??? (if AX nonzero on return)
  18500.     ES:DI -> ??? (if AX zero on return)
  18501. Note:    called by DOS4GW.EXE
  18502. SeeAlso: AX=BFDEh/BX=0000h
  18503. --------E-15BFDEBX0006-----------------------
  18504. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18505.     AX = BFDEh
  18506.     BX = 0006h
  18507. Return: BX = 0000h (success)
  18508.     AH = interrupt number??? (BEh)
  18509.     CX:DX = ???
  18510. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  18511. --------E-15BFDEBX0007-----------------------
  18512. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  18513.     AX = BFDEh
  18514.     BX = 0007h
  18515.     CX:DX = ???
  18516. Return: BX = 0000h (success)
  18517. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  18518. --------E-15BFDEBX0008-----------------------
  18519. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18520.     AX = BFDEh
  18521.     BX = 0008h
  18522.     CX = segment of ???
  18523.     DS = ???
  18524. Return: BX = status
  18525.         0000h successful
  18526.         AL = ??? (80h or C0h)
  18527.         DX = ??? (0603h) if AL=C0h
  18528.         0001h failed
  18529.         AX = 0000h
  18530. Note:    called by DOS4GW.EXE
  18531. SeeAlso: AX=BFDEh/BX=0000h
  18532. --------E-15BFDEBX0009-----------------------
  18533. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  18534.     AX = BFDEh
  18535.     BX = 0009h
  18536. Return: BX = 0000h (success)
  18537.     CX:DX -> full pathname to LOAD32.EXP
  18538. SeeAlso: AX=BFDEh/BX=0000h
  18539. --------E-15BFDEBX000A-----------------------
  18540. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
  18541.     AX = BFDEh
  18542.     BX = 000Ah
  18543. Return: BX = 0000h (success)
  18544.     AX = new value of ??? counter
  18545. Notes:    also resets a variety of values if the counter goes negative
  18546.     called by DOS4GW.EXE
  18547. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  18548. --------E-15BFDEBX000B-----------------------
  18549. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
  18550.     AX = BFDEh
  18551.     BX = 000Bh
  18552. Return: AX = new value of ??? counter
  18553. Note:    called by DOS4GW.EXE
  18554. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  18555. --------E-15BFDEBX000C-----------------------
  18556. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18557.     AX = BFDEh
  18558.     BX = 000Ch
  18559.     CL = ???
  18560.         00h
  18561.         nonzero
  18562. Return: ???
  18563. SeeAlso: AX=BFDEh/BX=0000h
  18564. --------E-15BFDEBX000D-----------------------
  18565. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18566.     AX = BFDEh
  18567.     BX = 000Dh
  18568.     ???
  18569. Return: ???
  18570. SeeAlso: AX=BFDEh/BX=0000h
  18571. --------E-15BFDEBX000E-----------------------
  18572. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18573.     AX = BFDEh
  18574.     BX = 000Eh
  18575.     DX:CX -> ???
  18576. Return: AX = segment of handle for calling task
  18577.     BX = ??? (probably destroyed)
  18578.     DX:CX -> ???
  18579. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  18580. --------E-15BFDEBX000F-----------------------
  18581. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
  18582.     AX = BFDEh
  18583.     BX = 000Fh
  18584. Return: AX = segment of handle for calling task
  18585.     BX = ??? (probably destroyed)
  18586.     DX:CX -> ???
  18587. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  18588. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  18589. --------E-15BFDEBX0010-----------------------
  18590. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
  18591.     AX = BFDEh
  18592.     BX = 0010h
  18593. Return: AX = segment of caller's task handle
  18594.     BX destroyed
  18595. SeeAlso: AX=BFDEh/BX=000Fh
  18596. --------E-15BFDEBX0011-----------------------
  18597. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18598.     AX = BFDEh
  18599.     BX = 0011h
  18600. Return: CX = code segment of DVDOS4GX.DVR
  18601.     BX = ??? (0004h)
  18602. SeeAlso: AX=BFDEh/BX=0000h
  18603. --------E-15BFDEBX0012-----------------------
  18604. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18605.     AX = BFDEh
  18606.     BX = 0012h
  18607. Return: DX = code segment of DVDOS4GX.DVR
  18608.     BX = ??? (012Ch)
  18609.     CX = ??? (0006h)
  18610. SeeAlso: AX=BFDEh/BX=0000h
  18611. --------E-15BFDEBX0013-----------------------
  18612. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18613.     AX = BFDEh
  18614.     BX = 0013h
  18615. Return: DX:CX -> ???
  18616. SeeAlso: AX=BFDEh/BX=000Eh
  18617. --------E-15BFDEBX0014-----------------------
  18618. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
  18619.     AX = BFDEh
  18620.     BX = 0014h
  18621.     CX = index of ??? mailbox
  18622.         (0000h-0004h valid, but no range checking done)
  18623. Return: AX,BX destroyed
  18624. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  18625. --------E-15BFDEBX0015-----------------------
  18626. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  18627.     AX = BFDEh
  18628.     BX = 0015h
  18629.     CX = index of ??? mailbox
  18630.         (0000h-0004h valid, but no range checking done)
  18631. Return: AX,BX destroyed
  18632. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  18633. --------E-15BFDEBX0016-----------------------
  18634. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  18635.     AX = BFDEh
  18636.     BX = 0016h
  18637.     CX = index of ??? mailbox
  18638.         (0000h-0004h valid, but no range checking done)
  18639. Return: AX = status
  18640.         0000h no one owns mailbox
  18641.         0001h mailbox has an owner
  18642.     BX destroyed
  18643. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  18644. --------E-15BFDEBX0017-----------------------
  18645. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  18646.     AX = BFDEh
  18647.     BX = 0017h
  18648.     CX = index of ??? mailbox
  18649.         (0000h-0004h valid, but no range checking done)
  18650. Return: AX = segment of mailbox owner's handle
  18651.     BX = segment of caller's task handle
  18652. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  18653. --------E-15BFDEBXFFFD-----------------------
  18654. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
  18655.     AX = BFDEh
  18656.     BX = FFFDh
  18657. Return: CX:DX = ???
  18658. SeeAlso: AX=BFDEh/BX=FFFEh
  18659. --------E-15BFDEBXFFFE-----------------------
  18660. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
  18661.     AX = BFDEh
  18662.     BX = FFFEh
  18663.     CX:DX = ???
  18664. SeeAlso: AX=BFDEh/BX=FFFDh
  18665. --------E-15BFDEBXFFFF-----------------------
  18666. INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
  18667.     AX = BFDEh
  18668.     BX = FFFFh
  18669. SeeAlso: AX=BFDEh/BX=0000h
  18670. --------B-15C0-------------------------------
  18671. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  18672.     AH = C0h
  18673. Return: CF set if BIOS doesn't support call
  18674.     CF clear on success
  18675.         ES:BX -> ROM table (see #0353)
  18676.     AH = status
  18677.         00h successful
  18678.         86h unsupported function
  18679. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  18680.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  18681.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  18682.       and a model byte at absolute address FE845h (see #0359)
  18683.     Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
  18684.       a product identifier at F000h:00FAh (see #0361)
  18685.     Compaq machines can be identified by the signature string "COMPAQ" at
  18686.       F000h:FFEAh, and is preceded by additional information (see #0360)
  18687.     Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
  18688.       the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
  18689.       first three data bytes (model/submodel/revision) in the returned
  18690.       table
  18691.     Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
  18692.       a laptop information record at F000h:E000h (see #0362)
  18693.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  18694.       past the end of the configuration table
  18695.     the Phoenix 386 BIOS contains a second version and date string
  18696.       (presumably the last modification for that OEM version) beginning at
  18697.       F000h:FFD8h, with each byte doubled (so that both ROM chips contain
  18698.       the complete information)
  18699. SeeAlso: AH=C7h,AH=C9h,AH=D1h
  18700.  
  18701. Format of ROM configuration table:
  18702. Offset    Size    Description    (Table 0353)
  18703.  00h    WORD    number of bytes following
  18704.  02h    BYTE    model (see #0358)
  18705.  03h    BYTE    submodel (see #0358)
  18706.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  18707.  05h    BYTE    feature byte 1 (see #0354)
  18708.  06h    BYTE    feature byte 2 (see #0355)
  18709.  07h    BYTE    feature byte 3 (see #0356)
  18710.  08h    BYTE    feature byte 4 (see #0357)
  18711.  09h    BYTE    feature byte 5:
  18712.         reserved (0) (IBM)
  18713.         ??? (08h) (Phoenix 386 v1.10)
  18714. ---AWARD BIOS---
  18715.  0Ah  N BYTEs    AWARD copyright notice
  18716. ---Phoenix BIOS---
  18717.  0Ah    BYTE    ??? (00h)
  18718.  0Bh    BYTE    major version
  18719.  0Ch    BYTE    minor version (BCD)
  18720.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  18721. ---Quadram Quad386---
  18722.  0Ah 17 BYTEs    ASCII signature string "Quadram Quad386XT"
  18723.  
  18724. Bitfields for feature byte 1:
  18725. Bit(s)    Description    (Table 0354)
  18726.  7    DMA channel 3 used by hard disk BIOS
  18727.  6    2nd 8259 installed
  18728.  5    Real-Time Clock installed
  18729.  4    INT 15/AH=4Fh called upon INT 09h
  18730.  3    wait for external event (INT 15/AH=41h) supported
  18731.  2    extended BIOS area allocated (usually at top of RAM)
  18732.  1    bus is Micro Channel instead of ISA
  18733.  0    system has dual bus (Micro Channel + ISA)
  18734.  
  18735. Bitfields for feature byte 2:
  18736. Bit(s)    Description    (Table 0355)
  18737.  7    reserved
  18738.  6    INT 16/AH=09h (keyboard functionality) supported
  18739.  5    INT 15/AH=C6h (get POS data) supported
  18740.  4    INT 15/AH=C7h (return memory map info) supported
  18741.  3    INT 15/AH=C8h (en/disable CPU functions) supported
  18742.  2    non-8042 keyboard controller
  18743.  1    data streaming supported
  18744.  0    reserved
  18745.  
  18746. Bitfields for feature byte 3:
  18747. Bit(s)    Description    (Table 0356)
  18748.  7-5    reserved
  18749.  4    ??? (set on 1992 PS/1's, N51SX, CL57SX, 35SX?, 40SX?)
  18750.  3    SCSI subsystem supported on system board
  18751.  2    information panel installed
  18752.  1    IML (Initial Machine Load) system
  18753.  0    SCSI supported in IML
  18754.  
  18755. Bitfields for feature byte 4:
  18756. Bit(s)    Description    (Table 0357)
  18757.  7    ??? (set on N51SX, CL57SX)
  18758.  6-4    reserved
  18759.  3    ??? (set on some 1992 PS/1's, 35SX, 40SX)
  18760.  2-1    reserved
  18761.  0    ??? (set on N51SX, CL57SX, 57SX)
  18762.  
  18763. (Table 0358)
  18764. Values for model/submodel/revision:
  18765. Model  Submdl  Rev    BIOS date    System
  18766.  FFh    *    *    04/24/81    PC (original)
  18767.  FFh    *    *    10/19/81    PC (some bugfixes)
  18768.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  18769.  FFh    00h    rev      ???        Tandy 1000SL
  18770.  FFh    01h    rev      ???        Tandy 1000TL
  18771.  FFh    46h    ***      ???        Olivetti M15
  18772.  FEh    *    *    08/16/82    PC XT
  18773.  FEh    *    *    11/08/82    PC XT and Portable
  18774.  FEh    *    *    ../..x..    Toshiba laptops up to ~1987
  18775.                     ("x"=product ID) (see #0363)
  18776.  FEh    43h    ***      ???        Olivetti M240
  18777.  FEh    A6h    ???      ???        Quadram Quad386
  18778.  FDh    *    *    06/01/83    PCjr
  18779.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  18780.  FCh    00h    00h      ???        PC3270/AT
  18781.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  18782.  FCh    00h    > 01h      ???        7531/2 Industrial AT
  18783.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  18784.  FCh    01h    00h    09/17/87    Tandy 3000
  18785.  FCh    01h    00h    ../..x..    Toshiba laptops since ~1988
  18786.                     ("x"=product ID) (see #0363)
  18787.  FCh    01h    00h    03/08/93    Compaq DESKPRO/i
  18788.  FCh    01h    00h     various    Compaq DESKPRO, SystemPro, ProSignia
  18789.  FCh    01h    00h    07/20/93    Zenith Z-Lite 425L
  18790.  FCh    01h    20h    06/10/92    AST
  18791.  FCh    01h    30h      ???        Tandy 3000NL
  18792.  FCh    01h    ???      ???        Compaq 286/386
  18793.  FCh    02h    00h    04/21/86    PC XT-286
  18794.  FCh    02h    00h     various    Compaq LTE Lite
  18795.  FCh    02h    00h    08/05/93    Compaq Contura 486/486c/486cx
  18796.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  18797.  FCh    04h    02h      ???        PS/2 Model 50
  18798.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  18799.  FCh    04h    04h      ???        PS/2 Model 50Z
  18800.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  18801.  FCh    06h    00h      ???        IBM 7552-140 "Gearbox"
  18802.  FCh    06h    01h      ???        IBM 7552-540 "Gearbox"
  18803.  FCh    08h    ***      ???        Epson, unknown model
  18804.  FCh    08h    00h      ???        PS/2 Model 25/286
  18805.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  18806.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  18807.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  18808.  FCh    20h    00h    02/18/93    Compaq ProLinea
  18809.  FCh    30h    ***      ???        Epson, unknown model
  18810.  FCh    31h    ***      ???        Epson, unknown model
  18811.  FCh    33h    ***      ???        Epson, unknown model
  18812.  FCh    39h    ???    09/16991    Toshiba T2200SX/60 (see also #0363)
  18813.  FCh    3Ch    ???    01/28<91    Toshiba T2000SX/40 (see also #0363)
  18814.  FCh    42h    ***      ???        Olivetti M280
  18815.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  18816.  FCh    48h    ***      ???        Olivetti M290
  18817.  FCh    4Fh    ***      ???        Olivetti M250
  18818.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  18819.  FCh    51h    ***      ???        Olivetti PCS286
  18820.  FCh    52h    ***      ???        Olivetti M300
  18821.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  18822.  FCh    81h    01h      ???        "OEM machine"
  18823.  FCh    82h    01h      ???        "OEM machine"
  18824.  FCh    94h    00h      ???        Zenith 386
  18825.  FBh    00h    01h    01/10/86    PC XT-089, Enh Keyb, 3.5" support
  18826.  FBh    00h    02h    05/09/86    PC XT
  18827.  FBh    4Ch    ***      ???        Olivetti M200
  18828.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  18829.  FAh    00h    01h    12/12/86    PS/2 Model 30
  18830.  FAh    01h    00h      ???        PS/2 Model 25/25L (8 MHz 8086)
  18831.  FAh    30h    00h      ???        IBM Restaurant Terminal
  18832.  FAh    4Eh    ***      ???        Olivetti M111
  18833.  FAh    FEh    00h      ???        IBM PCradio 9075
  18834.  F9h    00h    00h    09/13/85    PC Convertible
  18835.  F9h    FFh    00h      ???        PC Convertible
  18836.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  18837.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  18838.  F8h    02h    00h      ???        PS/2 Model 55-5571
  18839.  F8h    04h    00h      ???        PS/2 Model 70
  18840.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  18841.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  18842.  F8h    05h    00h      ???        IBM PC 7568
  18843.  F8h    06h    00h      ???        PS/2 Model 55-5571
  18844.  F8h    07h    00h      ???        IBM PC 7561/2
  18845.  F8h    07h    01h      ???        PS/2 Model 55-5551
  18846.  F8h    07h    02h      ???        IBM PC 7561/2
  18847.  F8h    07h    03h      ???        PS/2 Model 55-5551
  18848.  F8h    09h    00h      ???        PS/2 Model 70 16MHz, type 1 system brd
  18849.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  18850.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  18851.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  18852.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  18853.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  18854.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  18855.  F8h    0Eh    00h      ???        PS/1 486SX
  18856.  F8h    0Fh    00h      ???        PS/1 486DX
  18857.  F8h    10h    00h      ???        PS/2 Model 55-5551
  18858.  F8h    11h    00h    10/01/90    PS/2 Model 90 XP (25 MHz 486)
  18859.  F8h    12h    00h      ???        PS/2 Model 95 XP
  18860.  F8h    13h    00h    10/01/90    PS/2 Model 90 XP (33 MHz 486)
  18861.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486), 95 XP
  18862.  F8h    15h    00h      ???        PS/2 Model 90 XP
  18863.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD (33 MHz 486)
  18864.  F8h    17h    00h      ???        PS/2 Model 90 XP
  18865.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  18866.  F8h    1Ah    00h      ???        PS/2 Model 95 XP
  18867.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  18868.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 (16 MHz 386SX)
  18869.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  18870.  F8h    23h    00h      ???        PS/2 Model L40 SX
  18871.  F8h    23h    01h      ???        PS/2 Model L40 SX (20 MHz 386SX)
  18872.  F8h    25h    00h      ???        PS/2 Model 57 SLC
  18873.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  18874.  F8h    26h    00h      ???        PS/2 Model 57 SX
  18875.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  18876.  F8h    28h    00h      ???        PS/2 Model 95 XP
  18877.  F8h    29h    00h      ???        PS/2 Model 90 XP
  18878.  F8h    2Ah    00h      ???        PS/2 Model 95 XP (50 MHz 486)
  18879.  F8h    2Bh    00h      ???        PS/2 Model 90 (50 MHz 486)
  18880.  F8h    2Ch    00h      ???        PS/2 Model 95 XP
  18881.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  18882.  F8h    2Dh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX)
  18883.  F8h    2Eh    00h      ???        PS/2 Model 95 XP
  18884.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  18885.  F8h    2Fh    00h      ???        PS/2 Model 90 XP (20 MHz 486SX + 487SX)
  18886.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  18887.  F8h    33h    00h      ???        PS/2 Model 30-386
  18888.  F8h    34h    00h      ???        PS/2 Model 25-386
  18889.  F8h    36h    00h      ???        PS/2 Model 95 XP
  18890.  F8h    37h    00h      ???        PS/2 Model 90 XP
  18891.  F8h    38h    00h      ???        PS/2 Model 57
  18892.  F8h    39h    00h      ???        PS/2 Model 95 XP
  18893.  F8h    3Fh    00h      ???        PS/2 Model 90 XP
  18894.  F8h    40h    00h      ???        PS/2 Model 95 XP
  18895.  F8h    41h    00h      ???        PS/2 Model 77
  18896.  F8h    45h    00h      ???        PS/2 Model 90 XP (Pentium)
  18897.  F8h    46h    00h      ???        PS/2 Model 95 XP (Pentium)
  18898.  F8h    47h    00h      ???        PS/2 Model 90/95 E (Pentium)
  18899.  F8h    48h    00h      ???        PS/2 Model 85
  18900.  F8h    49h    00h      ???        PS/ValuePoint 325T
  18901.  F8h    4Ah    00h      ???        PS/ValuePoint 425SX
  18902.  F8h    4Bh    00h      ???        PS/ValuePoint 433DX
  18903.  F8h    4Eh    00h      ???        PS/2 Model 295
  18904.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  18905.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  18906.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  18907.  F8h    56h    00h      ???        PS/2 Model CL57 SX
  18908.  F8h    57h    00h      ???        PS/2 Model 90 XP
  18909.  F8h    58h    00h      ???        PS/2 Model 95 XP
  18910.  F8h    59h    00h      ???        PS/2 Model 90 XP
  18911.  F8h    5Ah    00h      ???        PS/2 Model 95 XP
  18912.  F8h    5Bh    00h      ???        PS/2 Model 90 XP
  18913.  F8h    5Ch    00h      ???        PS/2 Model 95 XP
  18914.  F8h    5Dh    00h      ???        PS/2 Model N51 SLC
  18915.  F8h    5Eh    00h      ???        IBM ThinkPad 700
  18916.  F8h    61h    ***      ???        Olivetti P500
  18917.  F8h    62h    ***      ???        Olivetti P800
  18918.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  18919.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21
  18920.  F8h    81h    00h      ???        PS/2 Model 55-5502
  18921.  F8h    87h    00h      ???        PS/2 Model N33SX
  18922.  F8h    88h    00h      ???        PS/2 Model 55-5530T
  18923.  F8h    97h    00h      ???        PS/2 Model 55 Note N23SX
  18924.  F8h    99h    00h      ???        PS/2 Model N51 SX
  18925.  F8h    F2h    30h      ???        Reply Model 32
  18926.  F8h    F6h    30h      ???        Memorex Telex
  18927.  F8h    FDh    00h      ???        IBM Processor Complex (with VPD)
  18928.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  18929.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  18930.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  18931.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  18932.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  18933.  E1h    00h    00h      ???        PS/2 Model 55-5530 Laptop
  18934.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  18935.  30h    ???    ???      ???        Sperry PC
  18936.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  18937.  ???    56h    ???      ???        Olivetti, unknown model
  18938.  ???    74h    ???      ???        Olivetti, unknown model
  18939.     * This BIOS call is not implemented in these early versions.
  18940.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  18941.    ** These BIOS versions require the DASDDRVR.SYS patches.
  18942.   *** These Olivetti and Epson machines store the submodel in the byte at
  18943.     F000h:FFFDh.
  18944.  
  18945. (Table 0359)
  18946. Values for Dell model byte:
  18947.  02h    Dell 200
  18948.  03h    Dell 300
  18949.  05h    Dell 220
  18950.  06h    Dell 310
  18951.  07h    Dell 325
  18952.  09h    Dell 310A
  18953.  0Ah    Dell 316
  18954.  0Bh    Dell 220E
  18955.  0Ch    Dell 210
  18956.  0Dh    Dell 316SX
  18957.  0Eh    Dell 316LT
  18958.  0Fh    Dell 320LX
  18959.  11h    Dell 425E
  18960.  
  18961. Format of Compaq product information:
  18962. Address        Size    Description    (Table 0360)
  18963.  F000h:FFE4h    BYTE    product family code (first byte)
  18964.  F000h:FFE4h    BYTE    Point release number
  18965.  F000h:FFE4h    BYTE    ROM version code
  18966.  F000h:FFE4h    BYTE    product family code (second byte)
  18967.  F000h:FFE8h    WORD    BIOS type code
  18968.  
  18969. Bitfields for Hewlett-Packard product identifier:
  18970. Bit(s)    Description    (Table 0361)
  18971.  4-0    machine code
  18972.     0 original Vectra
  18973.     1 ES/12
  18974.     2 RS/20
  18975.     3 Portable/CS
  18976.     4 ES
  18977.     5 CS
  18978.     6 RS/16
  18979.     other reserved
  18980.  7-5    CPU type
  18981.     0 = 80286
  18982.     1 = 8088
  18983.     2 = 8086
  18984.     3 = 80386
  18985.     other reserved
  18986.  
  18987. Format of Toshiba laptop information:
  18988. Offset    Size    Description    (Table 0362)
  18989.  00h  8 BYTEs    ASCII product number (e.g. "T2200SX ")
  18990.  08h  8 BYTEs    ASCII version number (e.g. "V1.20   ")
  18991.  10h  8 BYTEs    ASCII signature string "TOSHIBA "
  18992.  18h  8 BYTEs    always zero???
  18993.  20h    DWORD    -> built-in BIOS setup program entry point or 0000h:0000h
  18994. Note:    this record is located at F000h:E000h
  18995.  
  18996. (Table 0363)
  18997. Values for Toshiba product ID:
  18998. model prodID   version      date       product number    /hdd
  18999.  FEh    29h        ../..)..   Toshiba T1000LE
  19000.  FEh    2Ah        ../..*..   Toshiba T1000XE
  19001.  FEh    2Bh        ../..+..   Toshiba T1000SE
  19002.  FEh    2Ch        ../..,..   Toshiba T1000      -
  19003.  FEh    2Dh        ../..-..   Toshiba T1200F     -
  19004.  FEh    2Dh    V4.00    12/26-87   Toshiba T1200H    /20
  19005.  FEh    2Eh        ../.....   Toshiba T1100+
  19006.  FCh    22h        ../.."..   Toshiba T8500
  19007.  FCh    26h        01/15&88   Toshiba T5200     /100
  19008.  FCh    27h        ../..'..   Toshiba T5100
  19009.  FCh    28h        ../..(..   Toshiba T2000
  19010.  FCh    2Ah        12/26*89   Toshiba T1200XE
  19011.  FCh    2Bh        ../..+..   Toshiba T1600
  19012.  FCh    2Ch        ../..,..   Toshiba T3100e
  19013.  FCh    2Dh        ../..-..   Toshiba T3200
  19014.  FCh    2Fh        ../../..   Toshiba T3100
  19015.  FCh    34h        ../..4..   Toshiba T100X
  19016.  FCh    ???        ../.. ..   Toshiba T200
  19017.  FCh    ???        ../.. ..   Toshiba T200CS
  19018.  FCh    38h        ../..8..   Toshiba T2000SXe
  19019.  FCh    39h    V1.20    09/16991   Toshiba T2200SX   /60
  19020.  FCh    39h    V1.40    10/01992   Toshiba T2200SX   /120 (upgraded)
  19021.  FCh    3Ch    V1.50    01/28<91   Toshiba T2000SX   /40
  19022.  FCh    3Dh        ../..=..   Toshiba T3200SXC
  19023.  FCh    3Eh        ../..>..   Toshiba T3100SX
  19024.  FCh    3Fh        ../..?..   Toshiba T3200SX
  19025.  FCh    40h        ../..@..   Toshiba T4500C
  19026.  FCh    41h        04/05A92   Toshiba T4500     ("T4500SXC" ?)
  19027.  FCh    45h    V3.20    04/14E92   Toshiba T4400SX   ("C" or "SXC" on cover)
  19028.  FCh    45h        01/13E93   Toshiba T4400SXC
  19029.  FCh    46h *        ../..F..   Toshiba T6400
  19030.  FCh    46h *        ../..F..   Toshiba T6400C
  19031.  FCh    5Fh        ../.._..   Toshiba T3300SL
  19032.  FCh    69h        ../..i..   Toshiba T1900C
  19033.  FCh    6Ah        ../..j..   Toshiba T1900
  19034.  FCh    6Dh        ../..m..   Toshiba T1850C
  19035.  FCh    6Eh        12/25n92   Toshiba T1850
  19036.  FCh    6Fh        07/17o92   Toshiba T1800
  19037.  FCh    7Eh    V1.30    06/17~93   Toshiba T4600C
  19038.  FCh    7Fh        ../..x..   Toshiba T4600
  19039.  FCh    97h        ../..x..   Toshiba T4800CT
  19040.  FCh    98h *    V1.10    12/22x93   Toshiba T1910     /120 /320
  19041.  FCh    98h *        ../..x..   Toshiba T1910CS
  19042.  FCh    99h        ../..x..   Toshiba T4700CS
  19043.  FCh    9Bh    V2.30    01/31x94   Toshiba T4700CT
  19044.  FCh    9Bh    V2.50    03/22x94   Toshiba T4700CT   /320
  19045.  FCh    9Ch    V1.30    01/11x94   Toshiba T1950CT   /320
  19046.  FCh    9Dh *        ../..x..   Toshiba T1950
  19047.  FCh    9Dh *        ../..x..   Toshiba T1950CS
  19048.  FCh    9Eh *    V1.20    12/25x93   Toshiba T3400     /120
  19049.  FCh    9Eh *    V1.30    03/22x94   Toshiba T3400     /250
  19050.  FCh    9Eh *        ../..x..   Toshiba T3400CT
  19051. Note:    BIOS version numbers and dates may vary, esp. due to harddisk and
  19052.       flash BIOS upgrades
  19053.     the 8-bit ASCII graphics character in the "date" column above
  19054.       has been substituted by "x" because it depends on code page
  19055.     [*] These models have monochrome and color versions which can only be
  19056.       distinguished with INT 42/AX=7503h
  19057. --------B-15C1-------------------------------
  19058. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  19059.     AH = C1h
  19060. Return: CF set on error
  19061.     CF clear if successful
  19062.         ES = segment of data area
  19063. SeeAlso: AH=04h"ABIOS"
  19064. --------M-15C200-----------------------------
  19065. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  19066.     AX = C200h
  19067.     BH = new state
  19068.         00h disabled
  19069.         01h enabled
  19070. Return: CF set on error
  19071.     AH = status (see #0364)
  19072.  
  19073. (Table 0364)
  19074. Values for pointing device function status:
  19075.  00h    successful
  19076.  01h    invalid function
  19077.  02h    invalid input
  19078.  03h    interface error
  19079.  04h    need to resend
  19080.  05h    no device handler installed
  19081. --------M-15C201-----------------------------
  19082. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  19083.     AX = C201h
  19084. Return: CF set on error
  19085.         AH = status (see #0364)
  19086.     CF clear if successful
  19087.         BH = device ID
  19088.         BL = value returned by attached device after reset
  19089.         AAh if device is a mouse
  19090. Note:    after successful completion of this call, the pointing device is set
  19091.       as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
  19092.       scaling 1:1, unchanged data package size
  19093. SeeAlso: INT 33/AX=0000h
  19094. --------M-15C202-----------------------------
  19095. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  19096.     AX = C202h
  19097.     BH = sampling rate
  19098.         00h 10/second
  19099.         01h 20/second
  19100.         02h 40/second
  19101.         03h 60/second
  19102.         04h 80/second
  19103.         05h 100/second
  19104.         06h 200/second
  19105. Return: CF set on error
  19106.         AH = status (see #0364)
  19107. SeeAlso: INT 33/AX=001Ch
  19108. --------M-15C203-----------------------------
  19109. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  19110.     AX = C203h
  19111.     BH = resolution (see #0365)
  19112. Return: CF set on error
  19113.         AH = status (see #0364)
  19114.  
  19115. (Table 0365)
  19116. Values for pointing device resolution:
  19117.  00h    one count per mm
  19118.  01h    two counts per mm
  19119.  02h    four counts per mm
  19120.  03h    eight counts per mm
  19121. --------M-15C204-----------------------------
  19122. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  19123.     AX = C204h
  19124. Return: CF set on error
  19125.         AH = status (see #0364)
  19126.     CF clear if successful
  19127.         BH = device ID
  19128. --------M-15C205-----------------------------
  19129. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  19130.     AX = C205h
  19131.     BH = data package size (1 - 8 bytes)
  19132. Return: CF set on error
  19133.         AH = status (see #0364)
  19134. Note:    the pointing device is set as follows: disabled, 100 Hz sample rate,
  19135.       resolution 4 counts/mm, scaling 1:1
  19136. SeeAlso: AX=C201h
  19137. --------M-15C206-----------------------------
  19138. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
  19139.     AX = C206h
  19140.     BH = subfunction
  19141.         00h return device status
  19142.         Return: BL = pointing device status (see #0366)
  19143.             CL = resolution (see #0365)
  19144.             DL = sample rate, reports per second
  19145.         01h set scaling at 1:1
  19146.         02h set scaling at 2:1
  19147. Return: CF set on error
  19148.         AH = status (see #0364)
  19149.  
  19150. Bitfields for pointing device status:
  19151. Bit(s)    Description    (Table 0366)
  19152.  0    right button pressed
  19153.  1    reserved
  19154.  2    left button pressed
  19155.  3    reserved
  19156.  4    0 if 1:1 scaling, 1 if 2:1 scaling
  19157.  5    device enabled
  19158.  6    0 if stream mode, 1 if remote mode
  19159.  7    reserved
  19160. --------M-15C207-----------------------------
  19161. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  19162.     AX = C207h
  19163.     ES:BX -> FAR user device handler
  19164. Return: CF set on error
  19165.         AH = status (see #0364)
  19166. Note:    when the subroutine is called, it is passed the following values on
  19167.       the stack; the handler should return with a FAR return without
  19168.       popping the stack:
  19169.         WORD 1: status (see #0367)
  19170.         WORD 2: X data (high byte = 00h)
  19171.         WORD 3: Y data (high byte = 00h)
  19172.         WORD 4: 0000h
  19173. SeeAlso: INT 33/AX=000Ch
  19174.  
  19175. Bitfields for pointing device status:
  19176. Bit(s)    Description    (Table 0367)
  19177.  15-8    reserved (0)
  19178.  7    Y data overflowed
  19179.  6    X data overflowed
  19180.  5    Y data is negative
  19181.  4    X data is negative
  19182.  3    reserved (1)
  19183.  2    reserved (0)
  19184.  1    right button pressed
  19185.  0    left button pressed
  19186. --------B-15C3------------------------------
  19187. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  19188.     AH = C3h
  19189.     AL = function
  19190.         00h disable PS/2 watchdog timer
  19191.         01h enable PS/2 watchdog timer
  19192.         BX = timer counter (0001h-00FFh)
  19193.         02h disable Gearbox system
  19194.         03h enable Gearbox system
  19195. Return: CF set on error
  19196.     CF clear if successful
  19197. Note:    the watchdog timer generates an NMI
  19198. SeeAlso: INT 21/AH=2Bh/CX=6269h/DX=742Dh
  19199. --------B-15C4-------------------------------
  19200. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  19201.     AH = C4h
  19202.     AL = subfunction
  19203.         00h return base POS register address
  19204.         01h enable selected slot for setup
  19205.         BL = slot number (1 to 8)
  19206.         02h disable setup for all slots (enable adapter)
  19207. Return: CF set on error
  19208.     DX = base POS register address (if subfunction 00h)
  19209. SeeAlso: AH=C6h
  19210. --------B-15C5-------------------------------
  19211. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  19212.     AH = C5h
  19213.     AL = interrupt being invoked
  19214.         01h INT 19
  19215.         02h INT 14
  19216.         03h INT 16
  19217.         04h INT 40 (floppy INT 13)
  19218.         05h INT 17
  19219.         06h INT 10
  19220.         07h INT 12
  19221.         08h INT 11
  19222.         09h INT 1A
  19223. Return: all registers except AX must be preserved
  19224. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  19225.       handlers on the PS/2 Models 30/286, 50Z, and 95
  19226.     default handler does nothing and returns CF clear for the above
  19227.       subfunctions, CF set and AH=86h for all other subfunctions
  19228.     value of AX passed to the original interrupt handler is pushed on
  19229.       stack immediately prior to call
  19230. --------B-15C6-------------------------------
  19231. INT 15 U - later PS/2 models - GET POS DATA
  19232.     AH = C6h
  19233.     ???
  19234. Return: ???
  19235. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  19236.     IBM reports that "there are a number of problems with this call" and
  19237.       does not recommend its use.
  19238. SeeAlso: AH=C4h
  19239. --------B-15C7-------------------------------
  19240. INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
  19241.     AH = C7h
  19242.     DS:SI -> user supplied memory map table (see #0368)
  19243. Note:    call AH=C0h and examine bit 4 of feature byte 2 to check if this
  19244.       function is supported
  19245. Return: CF set on error, clear if successful
  19246. SeeAlso: AH=C0h,AH=C9h,AH=D1h
  19247.  
  19248. Format of memory-map table structure:
  19249. Offset    Size    Description    (Table 0368)
  19250.  00h    WORD    length of table (excluding this word)
  19251.  02h    DWORD    local memory between 1M and 16M, in 1K blocks
  19252.  06h    DWORD    local memory between 16M and 4G, in 1K blocks
  19253.  0Ah    DWORD    system memory between 1M and 16M, in 1K blocks
  19254.  0Eh    DWORD    system memory between 16M and 4G, in 1K blocks
  19255.  12h    DWORD    cacheable memory between 1M and 16M, in 1K blocks
  19256.  16h    DWORD    cacheable memory between 16M and 4G, in 1K blocks
  19257.  1Ah    DWORD    1K blocks before start of non-system memory between 1M and 16M
  19258.  1Eh    DWORD    1K blocks before start of non-system memory between 16M and 4G
  19259.  22h  2 DWORDs    reserved
  19260. --------B-15C8-------------------------------
  19261. INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
  19262.     AH = C8h
  19263.     AL = function
  19264.         00h disable cache or (90 and 95) disable cache L1
  19265.         01h enable cache or (90 and 95) enable cache L1
  19266.         ---models 90 and 95 only---
  19267.         02h disable cache L2
  19268.         03h enable cache L2
  19269.         04h disable both caches
  19270.         05h enable both caches
  19271.         06h return status of both caches
  19272.         07h-FFh Reserved
  19273. Return: CF set on error
  19274.     CF clear if successful
  19275.         AH = status (see #0369)
  19276.     For subfunction 06h only:
  19277.         BH = status of cache L2
  19278.         00h enabled
  19279.         01h disabled or not installed
  19280.         BL = status of cache L1 (same codes as BH)
  19281. Notes:     supported by at least PS/2 70, 70/486, 80-A21, 90, 95
  19282.     call AH=C0h and examine bit 3 of feature byte 2 to check if this
  19283.       function is supported.
  19284.     on a 486 system, any external caches must be disabled when the
  19285.       on-chip cache (L1) is disabled.
  19286. SeeAlso: AH=C0h
  19287.  
  19288. (Table 0369)
  19289. Values for status:
  19290.  00h    operation successful
  19291.  01h    function choice (in AL) is invalid
  19292.  02h    NVRAM data is invalid
  19293.  03h    cache test error
  19294.  04h    (90 and 95 only) cannot perform operation requested due to state of
  19295.       other cache (see note above)
  19296.  05h    no L2 cache is present
  19297.  09h    CPU in protected mode
  19298. --------B-15C9-------------------------------
  19299. INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  19300.     AH = C9h
  19301.     AL = 10h (may be required on some non-PS BIOSes)
  19302. Return: CF clear if successful
  19303.         AH = 00h
  19304.         CH = CPU type (see #0370)
  19305.         CL = mask revision (stepping level) (see #0371)
  19306.     CF set on error
  19307.         AH = status (80h,86h = function not supported)
  19308. Notes:    the BIOS must save DX at startup in order to be able to support this
  19309.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  19310.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  19311.  
  19312. (Table 0370)
  19313. Values for CPU type:
  19314.  03h    80386DX or clone
  19315.  04h    80486
  19316.  05h    Pentium
  19317.  23h    80386SX or clone
  19318.  33h    Intel i376
  19319.  43h    80386SL or clone
  19320.  A3h    IBM 386SLC
  19321.  A4h    IBM 486SLC
  19322.  
  19323. (Table 0371)
  19324. Values for stepping level:
  19325. ---i376 (type code 33h)---
  19326.  05h    A0
  19327.  08h    B
  19328. ---80386/80386DX (type code 03h)---
  19329.  03h    Intel B1 to B10, Am386DX/DXL step A
  19330.  05h    Intel D0
  19331.  08h    Intel D1/D2/E1, Am386DX/DXL step B
  19332. ---80386SL (type code 43h)---
  19333.  05h    A
  19334.  1xh    B
  19335. ---80386SX (type code 23h)---
  19336.  04h    Intel A0
  19337.  05h    Intel B, Am386SX/SXL step A1
  19338.  08h    Intel C/D1, Am386SX/SXL step B
  19339.  09h    Intel 386CX/386EX/386SXstatic step A
  19340. ---80486DX (type code 04h)---
  19341.  00h    Intel A0/A1
  19342.  01h    Intel B2 to B6
  19343.  02h    Intel C0
  19344.  03h    Intel C1
  19345.  04h    Intel D0
  19346.  10h    Intel cA2/cA3, Cx486SLC step A
  19347.  11h    Intel cB0/cB1
  19348. ---486DX2 (type code 04h)---
  19349.  02h    Am486DX2 (unknown stepping)
  19350.  32h    Intel DX2/Overdrive steps A0 to A2
  19351.  33h    Intel DX2/Overdrive step B1
  19352. ---486SX (type code 04h)---
  19353.  20h    Intel A0
  19354.  22h    Intel B0
  19355.  27h    Intel cA0
  19356.  28h    Intel cB0
  19357. ---486SL (type code 04h)---
  19358.  40h    Intel A
  19359. ---IntelSX2 (type code 04h)---
  19360.  5xh    Intel A
  19361. ---IntelDX4 (type code 04h)---
  19362.  8xh    Intel A
  19363. ---487SX (type code 04h)---
  19364.  20h    Intel A0
  19365.  21h    Intel B0
  19366. ---Pentium (type code 05h)---
  19367.  0xh    Intel P5 steps Ax (1993)
  19368.  1xh    Intel P5 steps Bx (1994)
  19369.  2xh    Intel P54C step A
  19370. ---RapidCAD (type code 03h)---
  19371.  40h    A
  19372. --------B-15CA-------------------------------
  19373. INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
  19374.     AH = CAh
  19375.     AL = function
  19376.         00h read CMOS
  19377.         Return: CL = value of CMOS location
  19378.         01h write CMOS
  19379.         CL = new value for CMOS location
  19380.     BL = CMOS location (0Eh-3Fh)
  19381. Return: CF clear if successful
  19382.         AH = 00h
  19383.     CF set on error
  19384.         AH = error code (see #0372)
  19385. Note:    writes do not update the CMOS checksum
  19386.  
  19387. (Table 0372)
  19388. Values for CMOS read/write error code:
  19389.  01h    CMOS lost power or has invalid checksum
  19390.  03h    specified location out of range (too high)
  19391.  04h    specified location out of range (too low)
  19392.  80h    unsupported function (PC)
  19393.  86h    unsupported function (XT)
  19394. --------B-15CB-------------------------------
  19395. INT 15 U - PS/2 Model 95 - RESERVED
  19396.     AH = CBh
  19397.     ???
  19398. Return: ???
  19399. --------B-15CC-------------------------------
  19400. INT 15 U - PS/2 Model 95 - RESERVED
  19401.     AH = CCh
  19402.     ???
  19403. Return: ???
  19404. --------V-15CCCC-----------------------------
  19405. INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
  19406.     AX = CCCCh
  19407. Return: AX = ABCDh if installed
  19408. Note:    supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
  19409.       older versions have the string "VCHAD" 2 bytes after the address of
  19410.       the INT 15 handler which is hooked by all versions for the SysReq key
  19411. SeeAlso: AH=85h
  19412. --------B-15CD-------------------------------
  19413. INT 15 U - PS/2 Model 95 - RESERVED
  19414.     AH = CDh
  19415.     ???
  19416. Return: ???
  19417. --------B-15CE--BL00-------------------------
  19418. INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
  19419.     AH = CEh
  19420.     BL = 00h-0Eh arbitration level to be allocated
  19421.          0Fh-FFh reserved
  19422.     AL = option byte
  19423.         bit 7-1: reserved (0)
  19424.         bit 0: 0 = need DMA channel for arbitration level requested
  19425.            1 = no channel required for arbitration level
  19426. Return: CF set on error
  19427.         AH = status (80h,86h = function not supported)
  19428.     CF clear on success
  19429.         AL = channel number
  19430.         00h-07h channel number allocated for the arbiration level
  19431.         08h-FEh reserved
  19432.         FFh    no channel requested for arbitration level
  19433.         AH = status (see #0373)
  19434. Notes:     arbitration level 00h has the highest priority, 0Eh the lowest
  19435.      to perform a DMA transfer operation, be sure to call this function
  19436.        first, and call AH=CFh afterward.  Failure to use this function
  19437.        can cause unpredictable results.
  19438. SeeAlso: AH=CFh
  19439.  
  19440. (Table 0373)
  19441. Values for DMA arbitration status:
  19442.  00h    success
  19443.  01h    arbitration level not available
  19444.  02h    channel not available
  19445.  03h    invalid arbitration level passed
  19446. --------B-15CF-------------------------------
  19447. INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
  19448.     AH = CFh
  19449.     BL = arbitration level to be deallocated (see AH=CEh)
  19450. Return: CF set on error
  19451.         AH = status (80h,86h = function not supported)
  19452.     CF clear on success
  19453.         AH = status
  19454.         00h success
  19455.         04h arbitration level not allocated
  19456. SeeAlso: AH=CEh
  19457. --------B-15D0-------------------------------
  19458. INT 15 - later PS/2s - RESERVED
  19459.     AH = D0h
  19460.     ???
  19461. Return: ???
  19462. --------B-15D100DX0000-----------------------
  19463. INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
  19464.     AX = D100h
  19465.     DX = 0000h (reserved, must set to 0)
  19466. Return: BL = size of one DDT entry, in bytes
  19467.     CX = number of DDT entries
  19468.     AH = return code (see #0374)
  19469.     CF set on error
  19470.     CF clear on success
  19471. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
  19472.  
  19473. (Table 0374)
  19474. Values for return code:
  19475.  00h    success
  19476.  01h    requested DDT entry not found
  19477.  02h    DDT data not valid
  19478.  86h    function not supported
  19479. --------B-15D101-----------------------------
  19480. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
  19481.     AX = D101h
  19482.     BX = number of requested entry (starting with 1)
  19483.     DX = 0000h (reserved, must be set to 0)
  19484.     ES:DI -> buffer to contain DDT entry (see #0375)
  19485. Return:    AH = return code (see #0374)
  19486.     CF set on error
  19487.     CF clear on success
  19488.         ES:DI buffer filled with DDT entry
  19489. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
  19490.  
  19491. Format of Device Descriptor Table (DDT):
  19492. Offset    Size    Description    (Table 0375)
  19493.  00h    BYTE    bits 7-4: reserved (set to 0)
  19494.         bits 3-0: slot of device (0 = system board)
  19495.  01h    BYTE    bits 7-4: second interrupt for this device (0 = none)
  19496.         bits 3-0: first interrupt for this device (0 = none)
  19497.  02h    BYTE    bits 7-4: second arbitration level for this device
  19498.         bits 3-0: first arbitration level for this device
  19499.  03h    WORD    DDT indicators (see #0376)
  19500.  05h    BYTE    reserved (0)
  19501.  06h    WORD    device ID (0 = none)
  19502.  08h    WORD    starting address of first  I/O block (0 = none)
  19503.  0Ah    WORD    starting address of second I/O block (0 = none)
  19504.  OCh    WORD    starting address of third  I/O block (0 = none)
  19505.  OEh    DWORD    start of first non-system memory block (0 = none)
  19506.  12h    WORD    size of first non-system memory block (in kilobytes)
  19507.  14h    DWORD    start of second non-system memory block (0 = none)
  19508.  18h    WORD    size of second non-system memory block (in kilobytes)
  19509.  1Ah    BYTE    implementation identifier of the device
  19510.  1Bh    BYTE    implementation revision level of the device
  19511. Note:    I/O block addresses and non-system memory addresses are listed in
  19512.       ascending order in each DDT entry.
  19513.  
  19514. Bitfields for DDT indicators:
  19515. Bit(s)    Description    (Table 0376)
  19516.  15    reserved (0)
  19517.  14    second arbitration level exists
  19518.  13    first arbitration level exists
  19519.  12    serial interface is RS-422
  19520.  11    not address limited
  19521.  10    DMA channel used
  19522.  9    second arbitration level can be shared
  19523.  8    first arbitration level can be shared
  19524.  7-0    reserved (0)
  19525. --------B-15D102-----------------------------
  19526. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
  19527.     AX = D102h
  19528.     BX = entry number at which to start searching
  19529.     CX = requested I/O port address
  19530.     DX = 0000h (reserved, must be set to 0)
  19531.     ES:DI -> buffer to contain DDT entry (see #0375)
  19532. Return:    AH = return code (see #0374)
  19533.     BX = DDT entry number where I/O port was found, or total entries
  19534.          plus 1 if port was not found.
  19535.     CF set on error
  19536.     CF clear on success
  19537.         ES:DI buffer filled with DDT entry
  19538. Desc:    the DDT is searched from the specified entry for the I/O port in CX,
  19539.       and the first entry in which it is found is returned
  19540. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
  19541. --------B-15D103DX0000-----------------------
  19542. INT 15 - later PS/2s - RETURN ENTIRE DDT
  19543.     AX = D103h
  19544.     DX = 0000h (reserved, must be set to 0)
  19545.     ES:DI -> buffer to contain DDT entry (see #0375)
  19546. Return:    AH = return code (see #0374)
  19547.     CF set on error
  19548.     CF clear on success
  19549.         ES:DI buffer filled with DDT entry
  19550. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
  19551. --------B-15D104-----------------------------
  19552. INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
  19553.     AX = D104h
  19554.     BX = entry number at which to start searching
  19555.     CX = requested device ID
  19556.     DX = 0000h (reserved, must be set to 0)
  19557.     ES:DI -> buffer to contain DDT entry (see #0375)
  19558. Return:    AH = return code (see #0374)
  19559.     BX = DDT entry number where device ID was found, or total entries
  19560.           plus 1 if port was not found.
  19561.     CF set on error
  19562.     CF clear on success
  19563.         ES:DI buffer filled with DDT entry
  19564. Desc:    the DDT is searched from the specified entry for the device ID in CX,
  19565.       and the first entry in which it is found is returned.
  19566. SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
  19567. --------B-15D2-------------------------------
  19568. INT 15 - later PS/2s - RESERVED
  19569.     AH = D2h
  19570.     ???
  19571. Return: ???
  19572. --------B-15D3-------------------------------
  19573. INT 15 - later PS/2s - RESERVED
  19574.     AH = D3h
  19575.     ???
  19576. Return: ???
  19577. --------B-15D4-------------------------------
  19578. INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
  19579.     AH = D4h
  19580.     DL = logical fixed disk drive number
  19581. Return:    AH = return code (see #0377)
  19582.     CF set on error
  19583.     CF clear on success
  19584.         AL = physical fixed disk drive number
  19585.  
  19586. (Table 0377)
  19587. Values for return code:
  19588.  00h    success
  19589.  01h    specified logical drive number is invalid
  19590.  80h    function not supported (on PCjr and PC)
  19591.  86h    function not supported
  19592. --------B-15D5-------------------------------
  19593. INT 15 - later PS/2s - RESERVED
  19594.     AH = D5h
  19595.     ???
  19596. Return: ???
  19597. --------B-15D600BL00-------------------------
  19598. INT 15 - later PS/2s - READ BOOT DEVICE ID
  19599.     AX = D600h
  19600.     BL = 00h
  19601.     DX = device ID
  19602. Return: CF clear if successful
  19603.         AH = 00h
  19604.     CF set on error
  19605.         AH = status (86h for function not supported)
  19606. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
  19607. --------B-15D600BL01-------------------------
  19608. INT 15 - later PS/2s - WRITE BOOT DEVICE ID
  19609.     AX = D600h
  19610.     BL = 01h
  19611.     DX = device ID
  19612. Return: CF clear on success
  19613.         AH = 00h
  19614.     CF set on error
  19615.         AH = status (86h for function not supported)
  19616. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
  19617. --------B-15D601BL00-------------------------
  19618. INT 15 - later PS/2s - READ BOOT DEVICE KEY
  19619.     AX = D601h
  19620.     BL = 00h
  19621.     DX = device ID
  19622. Return: CF clear on success
  19623.         AH = 00h
  19624.     CF set on error
  19625.         AH = status (86h for function not supported)
  19626. SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
  19627. --------B-15D601BL01-------------------------
  19628. INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
  19629.     AX = D601h
  19630.     BL = 01h
  19631.     DX = device ID
  19632. Return: CF clear on success
  19633.         AH = 00h
  19634.     CF set on error
  19635.         AH = status (86h for function not supported)
  19636. SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
  19637. --------B-15D602-----------------------------
  19638. INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
  19639.     AX = D602h
  19640. Return: CF clear on success
  19641.         AH = 00h
  19642.         AL = status of reference-partition boot request
  19643.         00h boot not requested
  19644.         01h boot requested
  19645.     CF set on error
  19646.         AH = status (86h for function not supported)
  19647. SeeAlso: AX=D601h/BL=00h
  19648. --------X-15D800-----------------------------
  19649. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  19650.     AX = D800h
  19651.     CL = slot number (including embedded and virtual)
  19652. Return: CF clear if successful
  19653.         AH = 00h
  19654.     CF set on error
  19655.         AH = error code (80h,82h,83h,86h,87h)(see #0379)
  19656.     AL = bit flags (see #0378)
  19657.     BH = major revision level of configuration utility
  19658.     BL = minor revision level of configuration utility
  19659.     CX = checksum of configuration file
  19660.     DH = number of device functions
  19661.     DL = combined function information byte
  19662.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  19663. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  19664. SeeAlso: AX=D801h,AX=D804h
  19665.  
  19666. Bitfields for EISA AL bit flags:
  19667. Bit(s)    Description    (Table 0378)
  19668.  7    set if duplicate IDs
  19669.  6    set if product ID readable
  19670.  4,5    slot type (00=expansion, 01=embedded, 10=virtual device)
  19671.  0-3    duplicate ID number if bit 7 set
  19672.  
  19673. (Table 0379)
  19674. Values for EISA error code:
  19675.  80h    invalid slot number
  19676.  81h    invalid function number
  19677.  82h    EISA CMOS corrupt
  19678.  83h    empty slot
  19679.  84h    error clearing CMOS
  19680.  85h    EISA CMOS is full
  19681.  86h    invalid BIOS-FW function call
  19682.  87h    invalid system configuration
  19683.  88h    config utility version not supported
  19684. --------X-15D801-----------------------------
  19685. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  19686.     AX = D801h
  19687.     CH = function number to read
  19688.     CL = slot number (including embedded and virtual)
  19689.     DS:SI -> 320-byte buffer for standard configuration data block
  19690. Return: CF clear if successful
  19691.         AH = 00h
  19692.         DS:SI buffer filled
  19693.     CF set on error
  19694.         AH = error code (80h-83h,86h,87h) (see #0379)
  19695.     BX destroyed
  19696. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  19697. --------X-15D802-----------------------------
  19698. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  19699.     AX = D802h
  19700.     BH = EISA config utility major revision level
  19701.     BL = EISA config utility minor revision level
  19702. Return: CF clear if successful
  19703.         AH = 00h
  19704.     CF set on error
  19705.         AH = error code (84h,86h,88h) (see #0379)
  19706. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  19707. SeeAlso: AX=D803h
  19708. --------X-15D803-----------------------------
  19709. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  19710.     AX = D803h
  19711.     CX = length of data structure (0000h = empty slot)
  19712.         includes two bytes for config file checksum
  19713.     DS:SI -> configuration data
  19714. Return: CF clear if successful
  19715.         AH = 00h
  19716.     CF set on error
  19717.         AH = error code (84h-86h) (see #0379)
  19718. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  19719. SeeAlso: AX=D802h
  19720. --------X-15D804-----------------------------
  19721. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  19722.     AX = D804h
  19723.     CL = slot number (including embedded and virtual)
  19724. Return: CF clear if successful
  19725.         AH = 00h
  19726.     CF set on error
  19727.         AH = error code (80h,83h,86h) (see #0379)
  19728.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  19729. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  19730. SeeAlso: AX=D800h
  19731. --------b-15D820-----------------------------
  19732. INT 15 - Compaq LTE Lite - GET ???
  19733.     AX = D820h
  19734.     DS:SI -> 17-byte buffer for ???
  19735. Return: DS:SI buffer filled (first byte is length of remaining data, unless
  19736.       it is greater than 10h, in which case the second byte is 00h and no
  19737.       other data is returned)
  19738. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  19739.       486/486c/486cx and recent DESKPRO/i ROMs
  19740. SeeAlso: AX=D821h
  19741. --------b-15D821-----------------------------
  19742. INT 15 - Compaq LTE Lite - SET ???
  19743.     AX = D821h
  19744.     DS:SI -> counted string (should not be more than 16 bytes)
  19745. Return: AH = 00h
  19746. Note:    this function is also supported by Compaq's EISA System ROM, Contura
  19747.       486/486c/486cx and recent DESKPRO/i ROMs
  19748. SeeAlso: AX=D820h
  19749. --------b-15D822BL00-------------------------
  19750. INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
  19751.     AX = D822h
  19752.     BL = 00h
  19753.     CX = size of buffer or 0000h to retrieve required buffer size
  19754.     DS:SI -> buffer for ??? (if CX nonzero)
  19755. Return: CF clear if successful
  19756.         AH = 00h
  19757.         DH = 08h
  19758.         CX = required buffer size to retrieve all data (if CX=0 on entry)
  19759.         DS:SI buffer filled (if CX nonzero on entry)
  19760.     CF set on error (BL nonzero)
  19761.         AH = 86h
  19762. --------b-15D823-----------------------------
  19763. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  19764.     AX = D823h
  19765.     BL = subfunction??? (00h or 80h)
  19766.     BH = ???
  19767.     DS:SI -> buffer for ??? (see #0380)
  19768. Return: CF clear if successful
  19769.         AH = 00h
  19770.         DH = 08h
  19771.         DL = ???
  19772.     CF set on error
  19773.         AH = error code
  19774.         86h BL neither 00h nor 80h
  19775.         87h ???
  19776.  
  19777. Format of Compaq EISA buffer:
  19778. Offset    Size    Description    (Table 0380)
  19779.  00h    BYTE    ???
  19780.  01h    WORD    ???
  19781.  03h    BYTE    ???
  19782.  04h    WORD    ???
  19783.  06h    WORD    ???
  19784.     ???
  19785. ----------15D824-----------------------------
  19786. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  19787.     AX = D824h
  19788.     CX = ???
  19789.     DS:SI -> ASCIZ string containing ???
  19790. Return: CF clear if successful
  19791.         AH = 00h
  19792.         CX = ???
  19793.     CF set on error
  19794.         AH = error code
  19795.         87h ??? failed
  19796.         88h ???
  19797. Note:    these functions are only available if ??? from keyboard controller
  19798.       command C0h
  19799. ----------15D825-----------------------------
  19800. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  19801.     AX = D825h
  19802.     CX = ???
  19803.     SI = ???
  19804.     DI = ???
  19805.     ???
  19806. Return: CF clear if successful
  19807.         AH = 00h
  19808.         CX = ???
  19809.     CF set on error
  19810.         AH = error code
  19811.         87h ??? failed
  19812.         88h ???
  19813.             CX = ???
  19814. Note:    these functions are only available if ??? from keyboard controller
  19815.       command C0h
  19816. ----------15D826-----------------------------
  19817. INT 15 - Compaq EISA System ROM 04/08/93 - ???
  19818.     AX = D826h
  19819.     BX = ???
  19820.     CX = size of buffer in bytes
  19821.     DS:SI -> buffer for ???
  19822.     ???
  19823. Return: CF clear if successful
  19824.         AH = 00h
  19825.         CX = ???
  19826.     CF set on error
  19827.         AH = error code
  19828.         87h ??? failed
  19829.         88h ???
  19830. Note:    these functions are only available if ??? from keyboard controller
  19831.       command C0h
  19832. --------X-15D8-------------------------------
  19833. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  19834.     AH = D8h
  19835.     AL = 80h to 84h
  19836.     other registers as appropriate for AL=00h to 04h
  19837. Return: as appropriate for AL=00h to 04h
  19838. Note:    these functions are identical to AX=D800h to D804h, except that they
  19839.       should be called when using 32-bit CS addressing mode (pointers use
  19840.       ESI rather than SI as offset) instead of 16-bit addressing mode
  19841. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  19842. --------b-15D8-------------------------------
  19843. INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
  19844.     AH = D8h
  19845.     AL = A0h to A6h
  19846.     other registers as appropriate for AL=20h to 26h
  19847. Return: as appropriate for AL=20h to 26h
  19848. Note:    these functions are identical to AX=D820h to D826h, except that they
  19849.       should be called when using 32-bit CS addressing mode
  19850. ----------15DA-------------------------------
  19851. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  19852.     AH = DAh
  19853.     AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
  19854.     ???
  19855. Return: ???
  19856. SeeAlso: AH=DBh
  19857. ----------15DB-------------------------------
  19858. INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
  19859.     AH = DBh
  19860.     AL = function (00h-04h)
  19861.     ???
  19862. Return: ???
  19863. SeeAlso: AH=DAh
  19864. --------Q-15DE00-----------------------------
  19865. INT 15 - DESQview - GET PROGRAM NAME
  19866.     AX = DE00h
  19867. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  19868.         the "Switch Windows" menu (see #0381)
  19869. Note:    always returns AX=0000h under DESQview/X
  19870. SeeAlso: AX=DE07h
  19871.  
  19872. Format of program entry in DESQVIEW.DVO:
  19873. Offset    Size    Description    (Table 0381)
  19874.  00h    BYTE    length of name (FFh if end of file)
  19875.  01h  N BYTEs    name
  19876.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  19877.     BYTE    program type
  19878.         00h normal program
  19879.         04h divider
  19880.         80h Delete a Program
  19881.         81h Change a Program
  19882.     WORD    ??? apparently always 0000h
  19883. --------Q-15DE01-----------------------------
  19884. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  19885.     AX = DE01h
  19886. Return: nothing
  19887. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  19888.     NOP for DESQview/X
  19889. --------Q-15DE02-----------------------------
  19890. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  19891.     AX = DE02h
  19892. Return: nothing
  19893. Note:    this call is a NOP in DV 2.x
  19894. SeeAlso: AX=DE03h
  19895. --------Q-15DE03-----------------------------
  19896. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  19897.     AX = DE03h
  19898. Return: AX = ??? for current window
  19899.     BX = ??? for current window
  19900. Note:    this call is a NOP in DV 2.x
  19901. SeeAlso: AX=DE02h
  19902. --------Q-15DE04-----------------------------
  19903. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  19904.     AX = DE04h
  19905. Return: BX = bytes of common memory available
  19906.     CX = largest block available
  19907.     DX = total common memory in bytes
  19908. SeeAlso: AX=DE05h,AX=DE06h
  19909. --------Q-15DE05-----------------------------
  19910. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  19911.     AX = DE05h
  19912. Return: BX = KB of memory available
  19913.     CX = largest block available
  19914.     DX = total conventional memory in KB
  19915. SeeAlso: AX=DE04h,AX=DE06h
  19916. --------Q-15DE06-----------------------------
  19917. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  19918.     AX = DE06h
  19919. Return: BX = KB of expanded memory available
  19920.     CX = largest block available
  19921.     DX = total expanded memory in KB
  19922. SeeAlso: AX=DE04h,AX=DE05h
  19923. --------Q-15DE07-----------------------------
  19924. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  19925.     AX = DE07h
  19926. Return: AX = number of program as it appears on the "Switch Windows" menu
  19927. Note:    this API call may be made from a hardware interrupt handler
  19928. SeeAlso: AX=DE00h
  19929. --------Q-15DE08-----------------------------
  19930. INT 15 - DESQview - GET ???
  19931.     AX = DE08h
  19932. Return: AX = 0000h if ??? is not set to the current task
  19933.          0001h if ??? is set to the current task
  19934. --------Q-15DE09-----------------------------
  19935. INT 15 - DESQview - UNIMPLEMENTED
  19936.     AX = DE09h
  19937. Return: nothing (NOP in DV 1.x and 2.x)
  19938. --------Q-15DE0A-----------------------------
  19939. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  19940.     AX = DE0Ah
  19941.     BL = character
  19942. Return: character displayed, next call will display in next position (which
  19943.     wraps back to the start of the line if off the right edge of screen)
  19944. Notes:    displays character on bottom line of *physical* screen, regardless
  19945.       of current size of window (even entirely hidden)
  19946.     does not know about graphics display modes, just pokes the characters
  19947.       into display memory
  19948.     this API call may be made from a hardware interrupt handler
  19949. SeeAlso: AX=1003h
  19950. --------Q-15DE0B-----------------------------
  19951. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  19952.     AX = DE0Bh
  19953.     BL = API level minor version number
  19954.     BH = API level major version number
  19955. Return: AX = maximum API level (AH = major, AL = minor)
  19956. Notes:    if the requested API level is greater than the version of DESQview, a
  19957.       "You need a newer version" error window is popped up
  19958.     the API level defaults to 1.00, and is inherited by child tasks
  19959. --------Q-15DE0C-----------------------------
  19960. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  19961.     AX = DE0Ch
  19962.     BX = number of bytes
  19963. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  19964. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  19965.       system memory
  19966. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  19967. --------Q-15DE0D-----------------------------
  19968. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  19969.     AX = DE0Dh
  19970.     ES:DI -> previously allocated block
  19971. Return: nothing
  19972. SeeAlso: AX=1002h,AX=DE0Ch
  19973. --------Q-15DE0E-----------------------------
  19974. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  19975.     AX = DE0Eh
  19976.     ES:DI -> name to find (see #0382)
  19977.     CX = length of name
  19978. Return: BX = 0000h not found
  19979.          0001h found
  19980.         DS:SI = object handle
  19981. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
  19982.  
  19983. (Table 0382)
  19984. Values for special DESQview mailbox names:
  19985.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  19986.  "DESQview/X Help Engine"
  19987.  "DESQview/X Network Server"  Network Manager
  19988.  "DESQview X Server0"    X-Windows server
  19989.  "DESQview X Server7"    X-Windows printing service
  19990.  "INBOX"        DESQview/X LPD requests
  19991.  "OUTBOX"        DESQview/X LPD responses
  19992.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  19993.  "_DVNM_"        DV/X v1.10 network manager
  19994. --------Q-15DE0F-----------------------------
  19995. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  19996.     AX = DE0Fh
  19997. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  19998. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  19999.     enables an additional mouse mode
  20000. --------Q-15DE10-----------------------------
  20001. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  20002.     AX = DE10h
  20003.     BH = scan code
  20004.     BL = character
  20005. Return: nothing
  20006. Notes:    a later read will get the keystroke as if it had been typed by the user
  20007.     multiple pushes are read last-in first-out
  20008.     if a script exists for the pushed key in the current application, the
  20009.       script will be executed
  20010.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  20011. SeeAlso: INT 16/AH=05h
  20012. --------Q-15DE11BL00-------------------------
  20013. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  20014.     AX = DE11h
  20015.     BL = 00h      viewport will not move automatically
  20016.          nonzero  viewport will move to keep cursor visible (default)
  20017. Return: nothing
  20018. --------Q-15DE12BX0000-----------------------
  20019. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  20020.     AX = DE12h
  20021.     BX = 0000h    select normal style (linefeed only moves down)
  20022.          nonzero  select C style (linefeed moves to start of next line)
  20023. Return: nothing
  20024. Note:    set on a per-task basis, and inherited from the parent task
  20025. --------Q-15DE13-----------------------------
  20026. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  20027.     AX = DE13h
  20028. Return: BX = number of calls to BEGINC or ENTERC
  20029.           (see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
  20030.           (see INT 15/AX=101Ch)
  20031. Note:    this API call may be made from within a hardware interrupt handler
  20032. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  20033. --------Q-15DE14-----------------------------
  20034. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  20035.     AX = DE14h
  20036.     ES:DI -> object
  20037. Return: BL = 00h not an object
  20038.          08h window or task
  20039.          09h mailbox
  20040.          0Ah keyboard
  20041.          0Bh timer
  20042.          0Ch objectq
  20043.          0Fh pointer
  20044.          10h panel
  20045. SeeAlso: AX=1016h
  20046. --------Q-15DE15-----------------------------
  20047. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  20048.     AX = DE15h
  20049.     BL = error handling mode
  20050.         00h post system error on all error conditions
  20051.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  20052.         messages sent to mailboxes which fail due to lack of system
  20053.         or common memory
  20054.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  20055.         calls which fail due to lack of system memory
  20056. Return: nothing
  20057. SeeAlso: AX=DE0Ch,AX=DE16h
  20058. --------Q-15DE16-----------------------------
  20059. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  20060.     AX = DE16h
  20061. Return: BL = current mode
  20062.         00h always post system error
  20063.         01h return carry flag set on failed mailbox writes
  20064.         02h return CF set on failed mailbox writes and NULL on failed
  20065.         GETMEM calls
  20066. SeeAlso: AX=DE15h
  20067. --------Q-15DE17-----------------------------
  20068. INT 15 - DESQview v2.20-2.25 - reserved
  20069.     AX = DE17h
  20070. Return: pops up "Programming error" window
  20071. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  20072. SeeAlso: AX=1117h
  20073. --------Q-15DE17-----------------------------
  20074. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  20075.     AX = DE17h
  20076.     BX = function
  20077.         0000h   get current mapping context without setting
  20078.         nonzero set new mapping context to BX
  20079. Return: BX = mapping context in effect before call
  20080. Notes:    mapping contexts determine conventional-memory addressability; setting
  20081.       a mapping context ensures that the associated program and data areas
  20082.       are in memory for access.  Usable by drivers, TSRs and shared
  20083.       programs.
  20084.     caller need not be running under DESQview
  20085.     this API call may be made from a hardware interrupt handler
  20086. SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
  20087. --------Q-15DE18-----------------------------
  20088. INT 15 - DESQview v2.20+ - internal - ???
  20089.     AX = DE18h
  20090.     BP = function number
  20091.         high byte must be 10h
  20092.         low byte is function
  20093.         00h set ???
  20094.             BL = ???  (00h-10h, video mode???)
  20095.             BH = value to store
  20096.         03h set ???
  20097.             BL = ??? (stored in driver)
  20098.         0Ah get ???
  20099.             ES:DI -> 18-byte buffer to hold ???
  20100. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  20101. --------Q-15DE19-----------------------------
  20102. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  20103.     AX = DE19h
  20104.     BX = number of bytes to allocate
  20105. Return: AX = 0000h successful
  20106.         ES:DI -> allocated block
  20107.          nonzero insufficient memory
  20108. Note:    this API call may be made from within a hardware interrupt handler
  20109. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  20110. --------Q-15DE1A-----------------------------
  20111. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  20112.     AX = DE1Ah
  20113.     ES:DI -> previously allocated block
  20114. Return:    AX = 0000h (successful)
  20115. Note:    this function may be called from within a hardware interrupt handler
  20116. SeeAlso: AX=DE0Dh,AX=DE19h
  20117. --------Q-15DE1B-----------------------------
  20118. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  20119.     AX = DE1Bh
  20120. Return: nothing
  20121. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  20122. --------Q-15DE1C-----------------------------
  20123. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  20124.     AX = DE1Ch
  20125. Return: nothing
  20126. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  20127.       that DOS is free
  20128.     the official documentation states that this call should be paired with
  20129.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  20130.     this API call may be made from within a hardware interrupt handler
  20131. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  20132. --------Q-15DE1D-----------------------------
  20133. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  20134.     AX = DE1Dh
  20135.     DX = segment of handle for task to receive keystroke
  20136.     BL = character
  20137.     BH = scan code
  20138. Return: AX = 0000h if successful
  20139.        nonzero if receiver's keyboard buffer was full
  20140. Notes:    the key is treated as though the user had pressed it, ignoring any
  20141.       script which may be bound to the key, and using the current field
  20142.       table if the keyboard object is in field processing mode
  20143.     multiple PUTKEYs are seen in the order in which they are executed
  20144. SeeAlso: AX=DE10h
  20145. --------Q-15DE1E-----------------------------
  20146. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  20147.     AX = DE1Eh
  20148. Return: CL = actual number of rows on screen
  20149.     CH = actual number of columns on screen
  20150.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  20151. Note:    this API call may be made from a hardware interrupt handler
  20152. SeeAlso: INT 10/AH=0Fh
  20153. --------Q-15DE1F-----------------------------
  20154. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  20155.     AX = DE1Fh
  20156. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  20157. Note:    this API call may be made from within a hardware interrupt handler
  20158. SeeAlso: AX=DE13h,INT 21/AH=34h
  20159. --------Q-15DE20-----------------------------
  20160. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  20161.     AX = DE20h
  20162.     BX = segment of handle of task to interupt
  20163.     DX:CX -> FAR interrupt routine
  20164.     BP,SI,DI,DS,ES as required by interrupt routine
  20165. Return: nothing
  20166. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  20167.       making the DISPATCHINT call
  20168.     multiple "DISPATCHINT" calls are processed in the order in which they
  20169.       were executed
  20170.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  20171.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  20172.       needs to be preserved
  20173.     this API call may be made from within a hardware interrupt handler
  20174. SeeAlso: AX=1021h,AX=DE2Ah
  20175. --------Q-15DE21-----------------------------
  20176. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  20177.     AX = DE21h
  20178.     BX = new state
  20179.         0000h turn off
  20180.         nonzero turn on
  20181. Return: BX = old state of virtualization
  20182. Notes:    this API call may be made from within a hardware interrupt handler
  20183.     under DV 2.40 and 2.42, this call appears to have no effect and always
  20184.       returns a nonzero value in BX which appears to be the offset within
  20185.       the DV common memory segment of the caller's task object; it may
  20186.       only have an effect within a hardware interrupt handler
  20187. SeeAlso: AX=1117h,AX=DE17h
  20188. --------Q-15DE22-----------------------------
  20189. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  20190.     AX = DE22h
  20191.     DX = segment of task handle
  20192. Return: DX = total amount of memory in paragraphs
  20193.     BX = amount of system memory in paragraphs
  20194.     CX = largest block of system memory available in paragraphs
  20195.     AX = memory flags (see #0383)
  20196. Notes:    if the task handle is a child task, the returned values will be for the
  20197.       process containing the task, rather than the task itself
  20198.     if the process's system memory is swapped out, BX,CX,DX remain
  20199.       unchanged, because the memory usage cannot be determined
  20200. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  20201.  
  20202. Bitfields for DESQview process memory flags:
  20203. Bit(s)    Description    (Table 0383)
  20204.  0    system memory resides in shared memory
  20205.  1    process's memory is swapped out
  20206.  2    process's system memory is swapped out
  20207. --------Q-15DE23-----------------------------
  20208. INT 15 U - DESQview v2.31+ - ???
  20209.     AX = DE23h
  20210.     BX = ??? IRQ number on first PIC?
  20211.     CX = ??? IRQ number on second PIC?
  20212. Return: ???
  20213. Note:    called by QEMM 6.00+
  20214. --------Q-15DE24-----------------------------
  20215. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  20216.     AX = DE24h
  20217.     BX = length of .DVP data
  20218.     CX = length of ??? string
  20219.     DS:SI -> ??? string
  20220.     ES:DI -> .DVP data (see #0295 at AX=102Ch)
  20221. Return: BX = segment of task handle??? or 0000h on error
  20222. Note:    this call is similar to AX=102Ch except that it can interpret the
  20223.       extended DVP data
  20224. SeeAlso: AX=102Ch
  20225. --------Q-15DE25-----------------------------
  20226. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  20227.     AX = DE25h
  20228.     ES:DI -> 67-byte buffer for ASCIZ directory name
  20229. Return: ES:DI buffer filled with directory from which DESQview was started
  20230. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  20231.       name, so if the buffer is not cleared to zeros before the call,
  20232.       there is no way to tell where the directory name ends.  This bug
  20233.       has been fixed in DV 2.52 (DV/X 1.02)
  20234. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  20235. --------Q-15DE26-----------------------------
  20236. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  20237.     AX = DE26h
  20238. Return: BX = segment of handle for task with keyboard focus
  20239. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  20240.       "direct" window is active
  20241. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  20242. --------Q-15DE27-----------------------------
  20243. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  20244.     AX = DE27h
  20245.     BX = type
  20246.         0000h process
  20247.         0001h task
  20248.     ES:DI -> list of Instance Item Structures (see #0384)
  20249. Return: CF clear if successful
  20250.         AX = ???
  20251.         BX = ???
  20252.     CF set on error
  20253.         AX = error code???
  20254.         0004h invalid BX value
  20255. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20256. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  20257.  
  20258. Format of DESQview Instance Item Structure [one element of list]:
  20259. Offset    Size    Description    (Table 0384)
  20260.  00h    WORD    length of data area DESQview should save and restore on context
  20261.           switches (0000h = end of list)
  20262.  02h    DWORD    pointer to area to be saved/restored
  20263. --------Q-15DE28-----------------------------
  20264. INT 15 U - DESQview v2.50+ - ???
  20265.     AX = DE28h
  20266.     BX = segment of ??? or 0000h for default
  20267.     ???
  20268. Return: ???
  20269. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20270. SeeAlso: AX=DE2Ah
  20271. --------Q-15DE29BX0000-----------------------
  20272. INT 15 U - DESQview/X - ???
  20273.     AX = DE29h
  20274.     BX = 0000h
  20275.     ???
  20276. Return: CF clear if successful
  20277.         ???
  20278.     CF set on error
  20279. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20280.     under DESQview 2.60, this function and all other subfunctions of
  20281.       AX=DE29h always return CF set, as they are unique to DESQview/X
  20282. --------Q-15DE29BX0001-----------------------
  20283. INT 15 U - DESQview/X - ???
  20284.     AX = DE29h
  20285.     BX = 0001h
  20286.     DX = segment of window handle
  20287. Return: CF clear if successful
  20288.         AX = ???
  20289.         DX = ???
  20290.     CF set on error
  20291. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20292. --------Q-15DE29BX0002-----------------------
  20293. INT 15 U - DESQview/X - ???
  20294.     AX = DE29h
  20295.     BX = 0002h
  20296.     DX = segment of window handle
  20297. Return: CF clear if successful
  20298.         AX = ???
  20299.         DX = ???
  20300.     CF set on error
  20301. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20302. --------Q-15DE29BX0003-----------------------
  20303. INT 15 U - DESQview/X - ???
  20304.     AX = DE29h
  20305.     BX = 0003h
  20306.     DX = segment of window handle
  20307. Return: CF clear if successful
  20308.         ???
  20309.     CF set on error
  20310. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20311. --------Q-15DE29BX0004-----------------------
  20312. INT 15 U - DESQview/X - GET DISPLAY NAME
  20313.     AX = DE29h
  20314.     BX = 0004h
  20315.     CX = size of buffer in bytes
  20316.     DX = segment of window handle
  20317.     ES:DI -> buffer for display name
  20318. Return: CF clear if successful
  20319.         buffer filled with ASCIZ display name (truncated if necessary) or
  20320.           null string if no display
  20321.     CF set on error
  20322. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20323.     the name ":0" refers to the local display
  20324. --------Q-15DE29BX0005-----------------------
  20325. INT 15 U - DESQview/X - ???
  20326.     AX = DE29h
  20327.     BX = 0005h
  20328.     ???
  20329. Return: CF clear if successful
  20330.         ???
  20331.     CF set on error
  20332. Note:    under DESQview 2.60, this function and all other subfunctions of
  20333.       AX=DE29h always return CF set, as they are unique to DESQview/X
  20334. --------Q-15DE2A-----------------------------
  20335. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  20336.     AX = DE2Ah
  20337.     BX = segment of handle for task to interrupt or 0000h for caller
  20338.     DX:CX -> interrupt routine
  20339.     BP,SI,DI,DS,ES as required by interrupt routine
  20340. Return: nothing
  20341. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20342.     this call is the same as AX=DE20h except that it will delay
  20343.       interrupting the specified task until after it has exited DOS
  20344. SeeAlso: AX=1021h,AX=DE20h
  20345. --------Q-15DE2B-----------------------------
  20346. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  20347.     AX = DE2Bh
  20348.     ES:DI -> starting object
  20349.         0000h:0000h for first object in list???
  20350. Return: AX = status
  20351.         0000h successful
  20352.         ES:DI -> next object of same type (window/non-window)
  20353.         0001h failed (ES:DI was not a valid handle)
  20354. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20355.     there are two separate lists, one for window/task objects and one
  20356.       for all other objects
  20357. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  20358. --------Q-15DE2C-----------------------------
  20359. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  20360.     AX = DE2Ch
  20361.     DX = window information format version (0100h for DESQview 2.5x)
  20362.     BX = segment of window handle or 0000h for default
  20363.     ES:DI -> buffer for window information (see #0385)
  20364. Return: AX = status
  20365.         0000h successful
  20366. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20367. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  20368.  
  20369. Format of DESQview window information:
  20370. Offset    Size    Description    (Table 0385)
  20371.  00h    BYTE    task flag: 00h window, 01h task
  20372.  01h    BYTE    process number if owner task
  20373.         00h if non-owner task
  20374.  02h    WORD    segment of owner's handle, 0000h if orphaned
  20375.  04h    WORD    mapping context (see #0284 at AX=1016h)
  20376.  06h    BYTE    task status (see #0386)
  20377.  07h    BYTE    unused
  20378.  08h    WORD    status bits (see #0387)
  20379.  0Ah    BYTE    01h if foreground-only window
  20380.  
  20381. (Table 0386)
  20382. Values for DESQview task status:
  20383.  00h    "Waiting" waiting for input
  20384.  01h    "Idle" keyboard poll limit reached
  20385.  03h    same as 01h
  20386.  04h    "Pausing" INT 15/AX=1000h pause called
  20387.  04h    DV/X direct: user did something to allow task switch
  20388.  05h    "ModeChg" video mode about to be changed
  20389.  06h    "ModeNtf" notify that video mode changed
  20390.  07h    "MoniCh" requested change to other monitor
  20391.  08h    "StartPgm" control relinquished to start new process
  20392.  09h    "MgrCan" made window manager CANCEL command
  20393.  0Ah    "Slicing" time slice expired
  20394.  0Bh    "Exit DOS" notify on DOS calls
  20395.  0Ch    "Enter DOS" process is re-entering DOS
  20396.  0Dh    "Terminate" INT 21/AH=4Ch or task freed
  20397.  0Eh    "BrkNxt" Control-Break pressed
  20398.  0Fh    "MgrCol" keyboard focus taken away
  20399.  10h    "PgmInt" interrupted by API call from another task
  20400.  11h    "BldOpen" call to INT 15/AX=DE01h
  20401.  
  20402. Bitfields for DESQview task status bits:
  20403. Bit(s)    Description    (Table 0387)
  20404.  6    task is freeing another task
  20405.  5    process is being created
  20406.  4    user suspended process
  20407.  3    process suspended itself
  20408.  2    process is resized direct window (suspended)
  20409.  1    process swapped out
  20410.  0    DESQview process
  20411. --------Q-15DE2D-----------------------------
  20412. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  20413.     AX = DE2Dh
  20414.     CX = direction
  20415.         FFFFh set socket handler
  20416.         DX:BX -> FAR function for socket interface
  20417.             must be of the format described under INT 63"DESQview"
  20418.         other get socket handler
  20419.         Return: DX:BX -> socket handler
  20420. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20421.     the "set" subfunction is normally called only by SOCKET.DVR
  20422. SeeAlso: AX=DE2Eh,INT 63"DESQview"
  20423. --------Q-15DE2E-----------------------------
  20424. INT 15 U - DESQview v2.50+ - SOCKET API
  20425.     AX = DE2Eh
  20426.     DX:BX -> socket record (see #0389)
  20427.         0000h:0000h to create a new socket record
  20428. Return: CX = size of socket record in bytes
  20429.     DX:BX -> socket record which was used
  20430. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  20431.     socket records are allocated from common memory
  20432.     for Unix compatibility, each socket and connection on a socket is
  20433.       allocated a DOS file handle (referencing an SFT for NUL) which is
  20434.       used on various calls to specify which of possibly multiple
  20435.       connections is to be operated upon
  20436. SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
  20437.  
  20438. (Table 0388)
  20439. Values for DESQview/X socket API function number:
  20440.  0000h    initialize socket???
  20441.  0001h    "gethostname"
  20442.  0002h    "ioctl" check for input
  20443.  0003h    "sleep" delay for specified period
  20444.  0004h    "htons" convert word to network (big-endian) byte order
  20445.  0005h    "select"
  20446.  0006h    "bsd_close"/"so_close" close socket
  20447.  0007h    NOP
  20448.  0008h    "connect" initiate connection on socket
  20449.  0009h    "recv"/"recvfrom" read from socket
  20450.  000Ah    "socket"
  20451.  000Bh    ???
  20452.  000Ch    "gethostbyname"
  20453.  000Dh    "send"/"sendto" write to socket
  20454.  000Eh    ??? (does something to all connections for process)
  20455.  000Fh    "getpid" get process identifier
  20456.  0010h    "gettimeofday"
  20457.  0011h    "bind" assign name to socket
  20458.  0012h    "listen" listen for connections on socket
  20459.  0013h    "accept" accept connection on socket
  20460.  0014h    connect to X server
  20461.  0015h    "gethostbyaddr" get host information for an address
  20462.  0016h    "getprotobyname"
  20463.  0017h    "getprotobynumber"
  20464.  0018h    "getservbyname"
  20465.  0019h    "getservbyport"
  20466.  001Ah    "getsockname" determine name bound to socket
  20467.  001Bh    "getpeername" get name of connected peer
  20468.  001Ch    "getsockopt"/"setsockopt"
  20469.  001Dh    "so_exit"     close all sockets for calling process
  20470.  001Eh    "issock" determine whether file handle references socket
  20471.  001Fh    "so_attach" reattach previously detached socket
  20472.  0020h    "so_detach" temporarily detach socket
  20473.  0021h    get DESQview directory
  20474.  0022h    "NewProc" start new application (see AX=102Ch)
  20475.  0023h    "so_linkup"
  20476.  0024h    canonicalize filename
  20477.  0025h    indirect INT 15h call
  20478.  0026h    Network Manager interface
  20479.  0027h    "so_unlink"    close connection from "so_linkup"
  20480.  0028h    "raisepriority"
  20481.  0029h    "lowerpriority"
  20482.  002Ah    ???
  20483.  FFFFh    "NetExit" (appears to be a NOP)
  20484.  
  20485. Format of DESQview/X socket record:
  20486. Offset    Size    Description    (Table 0389)
  20487.  00h    WORD    signature F0ADh
  20488.  02h    WORD    function number (see #0388)
  20489.  04h    WORD    returned error code (see #0406)
  20490.  06h    WORD    maximum message size??? (usually 0400h)
  20491.  08h    WORD    PSP segment to use or 0000h if socket not valid
  20492.  0Ah    WORD    scratch space (JFT size)
  20493.  0Ch    DWORD    scratch space (JFT address)
  20494.  10h    DWORD    mailbox handle (initialized by function 0000h)
  20495.  14h    DWORD    timer object handle (initialized by function 0000h)
  20496. ---function 0000h---
  20497.  18h    WORD    (return) ???
  20498. ---function 0001h---
  20499.  18h    WORD    (return) status???
  20500.  1Ah 128 BYTEs    (return) ASCIZ hostname (empty string if not on network)
  20501.  9Ah    WORD    maximum length of hostname to return
  20502. ---function 0002h---
  20503.  18h    WORD    (return) status
  20504.  1Ah    WORD    socket's file handle
  20505.  1Ch    WORD    IOCTL function
  20506.         05h "FIONREAD" determine available input
  20507.         06h "FIONBIO" set blocking state of socket
  20508.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  20509.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  20510. ---function 0003h---
  20511.  18h  2 BYTEs    unused
  20512.  1Ah    WORD    delay time in seconds
  20513. ---function 0004h---
  20514.  18h    WORD    (return) result in network (big-endian) byte order
  20515.  1Ah    WORD    value to convert to network byte order
  20516. ---function 0005h---
  20517.  18h    WORD    (return) number of handles meeting the specified conditions???
  20518.  1Ah    WORD    number of file handles in each bitset???
  20519.  1Ch    DWORD    bitset of socket handles to check for readability???
  20520.  20h    DWORD    bitset of socket handles to check for writability???
  20521.  24h    DWORD    bitset of socket handles to check for errors???
  20522.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  20523.  2Ah    DWORD    ???
  20524.  2Eh    DWORD    ???
  20525. ---function 0006h---
  20526.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20527.  1Ah    WORD    socket's file handle
  20528. ---function 0008h---
  20529.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20530.  1Ah    WORD    socket's file handle
  20531.  1Ch    WORD    0001h if socket name specified, 0000h if not
  20532.  1Eh    WORD    length of socket name
  20533.  20h  N BYTEs    name of socket to which to connect
  20534. ---function 0009h---
  20535.  18h    WORD    (return) number of bytes actually read, 0000h if connection
  20536.             closed, or FFFFh on error
  20537.  1Ah    WORD    socket's file handle
  20538.  1Ch    WORD    number of bytes to read
  20539.  1Eh    WORD    flags
  20540.  20h    WORD    0000h if no source address desired
  20541.         0001h if source address is to be stored (datagram sockets)
  20542.  22h    WORD    length of source address
  20543.  24h 110 BYTEs    source address
  20544.  92h 1K BYTEs    buffer for data to be read
  20545. ---function 000Ah---
  20546.  18h    WORD    (return) socket's file handle or FFFFh on error
  20547.  1Ah    WORD    address family (0001h,0002h)
  20548.  1Ch    WORD    socket type
  20549.  1Eh    WORD    protocol
  20550. ---function 000Bh---
  20551.  18h    WORD    (return) 0001h if ??? or FFFFh on error
  20552.  1Ah    WORD    socket's file handle
  20553.  1Eh    WORD    (call) ???
  20554. ---function 000Ch---
  20555.  18h 128 BYTEs    buffer containing ASCIZ hostname
  20556.         special case if empty string or "unix"
  20557.  98h    ???    'struct hostent' ???
  20558.  A2h    ???    (return) ???
  20559. ---function 000Dh---
  20560.  18h    WORD    (return) number of bytes actually written or FFFFh on error
  20561.  1Ah    WORD    socket's file handle
  20562.  1Ch    WORD    number of bytes to write
  20563.  1Eh    WORD    number of bytes to follow in subsequent writes???
  20564.  20h    WORD    flags
  20565.  22h    WORD    0000h if no destination specified, 0001h if destination present
  20566.  24h    WORD    ???
  20567.  26h    WORD    length of destination address
  20568.  28h 110 BYTEs    destination address
  20569.  96h 1K BYTEs    buffer containing data to be written
  20570. ---function 000Eh---
  20571.  no additional fields
  20572. ---function 000Fh---
  20573.  18h    DWORD    (return) DESQview task handle of calling process
  20574. ---function 0010h---
  20575.  18h    DWORD    (return) current time
  20576.  1Ch    DWORD    (return) ???
  20577. ---function 0011h---
  20578.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20579.  1Ah    WORD    socket's file handle
  20580.  1Ch    WORD    length of name
  20581.  1Eh  N BYTEs    buffer for socket name
  20582. ---function 0012h---
  20583.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20584.  1Ah    WORD    socket's file handle
  20585.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  20586. ---function 0013h---
  20587.  18h    WORD    (return) file handle for new connection or FFFFh on error
  20588.  1Ah    WORD    listen()ing socket's file handle
  20589.  1Ch    WORD    (call) length of buffer for connecting entity's address
  20590.         (return) actual length of address
  20591.  1Eh  N BYTEs    buffer for connecting entity's address
  20592. ---function 0014h---
  20593.  18h    WORD    (return) socket's file handle or FFFFh on error
  20594.  1Ah  4 BYTEs    (return) ???
  20595.  1Eh    WORD    (return) ???
  20596.  20h    WORD    (return) ???
  20597.  22h 256 BYTEs    ASCIZ X display name
  20598. 122h    ???
  20599. ---function 0015h---
  20600.  18h    WORD    (call) type of address??? (test for 0001h seen)
  20601.  1Ah    WORD    (call) length of buffer for host address
  20602.  1Ch 110 BYTEs    buffer containing host address
  20603.  8Ah    WORD    (return) offset of official host name???
  20604.  8Ch    WORD    (return) offset of alias list???
  20605.  8Eh    WORD    (return) address type???
  20606.  90h    WORD    (return) length of an address in bytes???
  20607.  92h    WORD    (return) offset of address???
  20608.  9Ah  N BYTEs    (return) ??? buffer for hostname, alias list, and host address
  20609. ---function 0016h---
  20610.  18h    ???    buffer for protocol name???
  20611.  98h    ???
  20612. ---function 0017h---
  20613.  18h    WORD    (call) protocol number???
  20614.  1Ah    WORD    (return) ??? or 0001h
  20615. ---function 0018h---
  20616.  18h 128 BYTEs    buffer containing ???
  20617.  98h 128 BYTEs    buffer containing ???
  20618. 118h    WORD    (return) ???
  20619. ---function 0019h---
  20620.  18h    WORD    length of name???
  20621.  1Ah 128 BYTEs    buffer for name???
  20622.  9Ah    WORD    (return) ???
  20623. ---function 001Ah---
  20624.  18h    WORD    (return) 0000h if successful, FFFFh on error
  20625.  1Ah    WORD    socket's file handle
  20626.  1Ch    WORD    (call) length of buffer for socket name
  20627.         (return) actual length of socket name
  20628.  1Eh  N BYTEs    buffer for socket name
  20629. ---function 001Bh---
  20630.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20631.  1Ah    WORD    socket's file handle
  20632.  1Ch    WORD    (call) size of buffer for name
  20633.         (return) actual size of name
  20634.  1Eh  N BYTEs    buffer for peer's name
  20635. ---function 001Ch---
  20636.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20637.  1Ah    WORD    direction: 0000h to get, 0001h to set
  20638.  1Ch    WORD    socket's file handle
  20639.  1Eh    WORD    option level
  20640.  20h    WORD    option name
  20641.  22h    WORD    (call) length of buffer for option value
  20642.         (return) actual length of option value
  20643.  24h  N BYTEs    buffer for option value
  20644. ---function 001Dh---
  20645.  no additional fields
  20646. ---function 001Eh---
  20647.  18h    WORD    (return) status: 0000h ??? or 0001h ???
  20648.  1Ah    WORD    file handle which may or may not be a socket
  20649. ---function 001Fh---
  20650.  18h    WORD    (return) file handle or FFFFh on error
  20651.  1Ah    DWORD    (call) pointer to Socket Context Record (see #0407) of a
  20652.             previously detached socket
  20653. ---function 0020h---
  20654.  18h    WORD    (return) status: 0000h if successful or FFFFh on error
  20655.  1Ah    WORD    socket's file handle
  20656.  1Ch    DWORD    (return) pointer to Socket Context Record (see #0407) for
  20657.             the file handle
  20658. ---function 0021h---
  20659.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  20660. ---function 0022h---
  20661.  18h    DWORD    (return) task handle of new application
  20662.  1Ch    WORD    size of .DVP data
  20663.  1Eh 129 BYTEs    ASCIZ ???
  20664.  9Fh  N BYTEs    .DVP data (see #0295 at AX=102Ch)
  20665. ---function 0023h---
  20666.  18h    WORD    (return) ??? or FFFFh on error
  20667.  1Ah    WORD    socket's file handle???
  20668. ---function 0024h---
  20669.  18h    WORD    (return) DOS error code (see #0811 at INT 21/AH=59h)
  20670.             0000h if successful
  20671.  1Ah 129 BYTEs    ASCIZ filename/pathname
  20672. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  20673. ---function 0025h---
  20674.  18h    WORD    value of AX
  20675.  1Ah    WORD    value of BX
  20676.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  20677.         (call) number of stack parameters if AH value is 12h
  20678.         (return) returned CX for calls other than INT 15/AH=12h
  20679.  1Eh    WORD    value of DX
  20680.  20h    WORD    value of DI
  20681.  22h    WORD    value of SI
  20682.  24h    WORD    value of DS
  20683.  26h    WORD    value of ES
  20684.  28h    WORD    (return) value of FLAGS after call
  20685.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  20686.         (return) stack results from INT 15/AH=12h call
  20687. ---function 0026h---
  20688.  18h    WORD    (call) Network Manager subfunction (see #0390)
  20689.         (return) status???
  20690.  1Ah    WORD    (call) size of parameter data
  20691.         (return) size of returned data
  20692.  1Ch  N BYTEs    (call) parameter data required by call (see #0391,#0392,#0393)
  20693.         (return) result data (see #0401,#0402,#0405)
  20694. ---function 0027h---
  20695.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  20696.  1Ah    WORD    socket's file handle
  20697. ---functions 0028h,0029h---
  20698.  18h    WORD    (call) file handle for which to set priority low/high
  20699.             FFFFh to change calling task's priority
  20700. ---function 002Ah---
  20701.  no additional fields
  20702.  
  20703. (Table 0390)
  20704. Values for DESQview/X Network Manager subfunction:
  20705.  0004h    "so_exit"???
  20706.  0005h    "gethostbyname"
  20707.  0006h    "gethostname"
  20708.  0009h    "socket"
  20709.  000Dh    "gethostbyaddr"
  20710.  000Fh    "getprotobyname"
  20711.  0010h    get protocol name for protocol number
  20712.  0011h    "getservbyname"
  20713.  0012h    "getservbyport" (see #0394)
  20714.  0013h    "getsockname"??? (see #0395)
  20715.  0016h    ??? (see #0396)
  20716.  0017h    kill Network Manager
  20717.  0018h    "getpeername"??? (see #0397)
  20718.  0019h    ??? (called by socket function 0000h) (see #0398)
  20719.  001Ah    ??? (see #0399)
  20720.  001Bh    "so_linkup" (see #0400)
  20721.  001Dh    get network services (see #0401)
  20722.  001Fh    "getpwuid"
  20723.  0020h    "getpwnam"
  20724.  0021h    "getpwvar"
  20725.  0022h    "crypt"
  20726.  0023h    "so_unlink"
  20727.  0024h    "getlogin" (see #0402)
  20728.  0028h    "sethostent"
  20729.  0029h    "gethostent"
  20730.  002Ah    "soaddhost"
  20731.  002Bh    "soupdatehost"
  20732.  002Ch    "sodeletehost"
  20733.  002Dh    "setservent"
  20734.  002Eh    "getservent"
  20735.  002Fh    "setpwent"
  20736.  0030h    "getpwent" (see #0403)
  20737.  0031h    ???
  20738.  0032h    ???
  20739.  0033h    ???
  20740.  0034h    get IP network number (see #0404)
  20741.  0035h    ??? (pops up Network Manager window)
  20742.  0037h    ???
  20743.  0038h    get machine name and IP address (see #0405)
  20744.  0039h    ???
  20745.  
  20746. Format of Function 0026h/Subfunction 000Fh data:
  20747. Offset    Size    Description    (Table 0391)
  20748.  00h  8 BYTEs    (return) ???
  20749.  
  20750. Format of Function 0026h/Subfunction 0010h data:
  20751. Offset    Size    Description    (Table 0392)
  20752.  00h  2 BYTEs    (return) ???
  20753.  02h    WORD    (return) protocol number
  20754.  04h    WORD    (call) protocol number for which to get name
  20755.  06h    WORD    (return) ???
  20756.  08h    var    (return) ASCIZ protocol name
  20757.  N    var    (return) ASCIZ protocol name
  20758.  
  20759. Format of Function 0026h/Subfunction 0011h data:
  20760. Offset    Size    Description    (Table 0393)
  20761.  00h  8 BYTEs    ???
  20762.  08h    var    (return) ASCIZ protocol name
  20763.     var    (return) ASCIZ ??? name
  20764.     var    (return) ASCIZ ??? name
  20765.  
  20766. Format of Function 0026h/Subfunction 0012h data:
  20767. Offset    Size    Description    (Table 0394)
  20768.  00h  8 BYTEs    (return) ???
  20769.  
  20770. Format of Function 0026h/Subfunction 0013h data:
  20771. Offset    Size    Description    (Table 0395)
  20772.  00h 116 BYTEs    (return) ???
  20773.  
  20774. Format of Function 0026h/Subfunction 0016h data:
  20775. Offset    Size    Description    (Table 0396)
  20776.  00h  4 BYTEs    (return) ???
  20777.  
  20778. Format of Function 0026h/Subfunction 0018h data:
  20779. Offset    Size    Description    (Table 0397)
  20780.  00h 116 BYTEs    (return) ???
  20781.  
  20782. Format of Function 0026h/Subfunction 0019h data:
  20783. Offset    Size    Description    (Table 0398)
  20784.  00h  4 BYTEs    (return) ???
  20785.  04h    DWORD    (return) task handle of ???
  20786.  
  20787. Format of Function 0026h/Subfunction 001Ah data:
  20788. Offset    Size    Description    (Table 0399)
  20789.  00h 38 BYTEs    (return) ???
  20790.  
  20791. Format of Function 0026h/Subfunction 001Bh data:
  20792. Offset    Size    Description    (Table 0400)
  20793.  00h 10 BYTEs    (return) ???
  20794.  
  20795. Format of Function 0026h/Subfunction 001Dh return data [array]:
  20796. Offset    Size    Description    (Table 0401)
  20797.  00h    WORD    ??? or FFFFh if end of array
  20798.  02h  7 BYTEs    ???
  20799.  09h 27 BYTEs    ASCIZ name of service
  20800.  
  20801. Format of Function 0026h/Subfunction 0024h return data:
  20802. Offset    Size    Description    (Table 0402)
  20803.  00h    var    ASCIZ username
  20804.  
  20805. Format of Function 0026h/Subfunction 0030h data:
  20806. Offset    Size    Description    (Table 0403)
  20807.  00h    WORD    (call) UID or 0000h for current user
  20808.         (return) ???
  20809.  02h    WORD    (return) UID
  20810.  04h  6 BYTEs    (return) ???
  20811.  0Ah    var    (return) ASCIZ username
  20812.     var    (return) ASCIZ encrypted password
  20813.     var    (return) ASCIZ initial ("home") directory
  20814.  
  20815. Format of Function 0026h/Subfunction 0034h data:
  20816. Offset    Size    Description    (Table 0404)
  20817.  00h  1-3 BYTEs IP network number of caller's machine (low byte first)
  20818.  
  20819. Format of Function 0026h/Subfunction 0038h return data:
  20820. Offset    Size    Description    (Table 0405)
  20821.  00h    BYTE    ???
  20822.  01h  4 BYTEs    IP address
  20823.  05h    var    ASCIZ machine name
  20824.     ???
  20825.  
  20826. (Table 0406)
  20827. Values for DESQview/X socket error code:
  20828.  0000h    successful
  20829.  0009h    "BADF" bad file handle
  20830.  000Ch    "ENOMEM" out of memory
  20831.  000Eh    "EFAULT" bad address
  20832.  0016h    "EINVAL" invalid argument
  20833.  0018h    "EMFILE" too many open files
  20834.  0020h    "EPIPE" ??? broken pipe
  20835.  0023h    "EWOULDBLOCK" operation cannot be completed at this time
  20836.  0024h    "EINPROGRESS" operation now in progress
  20837.  0026h    "ENOTSOCK" socket invalid
  20838.  0028h    "EMSGSIZE" message too long to send atomically
  20839.  002Ch    "ESOCKTNOSUPPORT" socket type not supported
  20840.  002Fh    "EAFNOSUPPORT" address family not supp. by protocol fam.
  20841.  0031h    "EDOM" argument too large
  20842.  0038h    "EISCONN" socket is already connected
  20843.  0039h    "ENOTCONN" socket is not connected
  20844.  
  20845. Format of DESQview/X Socket Context Record:
  20846. Offset    Size    Description    (Table 0407)
  20847.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  20848.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  20849.  06h    WORD    PSP segment of owner or 0000h
  20850.  08h    WORD    mapping context of owning window (see #0284 at AX=1016h)
  20851.  0Ah  2 BYTEs    ???
  20852.  0Ch    WORD    address family
  20853.  0Eh    WORD    socket type
  20854.  10h    WORD    protocol
  20855.  12h    WORD    socket state
  20856.         0001h created
  20857.         0002h bound
  20858.         0003h listening???
  20859.         0005h connected
  20860.  14h    DWORD    timer object handle
  20861.  18h    DWORD    object handle (mailbox???)
  20862.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  20863.  20h    DWORD    pointer to ??? or 0000h
  20864.  24h  6 BYTEs    ???
  20865.  2Ah    WORD    file handle for socket or FFFFh
  20866.  2Ch  2 BYTEs    ???
  20867.  2Eh    WORD    nonzero if socket nonblocking
  20868. ---network connections only---
  20869.  30h  2 BYTEs    ???
  20870.  32h    WORD    ???
  20871.  34h  4 BYTEs    (big-endian) IP address of remote
  20872.  38h  6 BYTEs    ???
  20873. --------Q-15DE2F-----------------------------
  20874. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  20875.     AX = DE2Fh
  20876. Return: BX = status
  20877.         0001h keyboard focus has been given to a direct window since the
  20878.         last call
  20879.         0000h if not
  20880. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  20881.     Quarterdeck stated that this call would not be available under future
  20882.       versions of DESQview Classic, but it is still present in v2.60
  20883. --------Q-15DE30-----------------------------
  20884. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  20885.     AX = DE30h
  20886. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  20887. Notes:    DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
  20888.     you must first check the DESQview version to verify that it is 2.50 or
  20889.       greater
  20890. SeeAlso: INT 21/AH=2Bh/CX=4445h
  20891. --------Q-15DE31-----------------------------
  20892. INT 15 - DESQview/X v1.10 - ???
  20893.     AX = DE31h
  20894.     CX = ???
  20895.         0000h ???
  20896.         nonzero ???
  20897.     ???
  20898. Return: ???
  20899. --------b-15DF-------------------------------
  20900. INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
  20901.     AH = DFh
  20902.     AL = function
  20903.         00h turn on Turbo mode
  20904.         01h turn off Turbo mode
  20905.         02h set Turbo mode according to hardware switch
  20906. SeeAlso: INT 13/AX=FFFFh
  20907. --------b-15E00F-----------------------------
  20908. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  20909.     AX = E00Fh
  20910.     ES:BX -> start of 2nd processor's execution
  20911. Return: AL = status
  20912.         0Fh successful
  20913.         00h failure
  20914. SeeAlso: AX=E10Eh,AX=E200h
  20915. --------b-15E10E-----------------------------
  20916. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  20917.     AX = E10Eh
  20918.     ES:BX -> start of 2nd processor's execution
  20919. Return: AL = status
  20920.         0Fh successful (halted)
  20921.         00h failure (not halted)
  20922. SeeAlso: AX=E00Fh,AX=E200h
  20923. --------b-15E200-----------------------------
  20924. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  20925.     AX = E200h
  20926. Return: AX bit 15 set if 2nd processor available
  20927. SeeAlso: AX=E00Fh,AX=E10Eh
  20928. --------b-15E4-------------------------------
  20929. INT 15 - Tandy??? - ???
  20930.     AH = E4h
  20931.     AL = subfunction
  20932.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  20933.     DL = ???
  20934. Return: DL = 00h if successful???
  20935. Note:    the section of code in 386MAX which calls these functions also checks
  20936.       whether the ROM BIOS has both Tandy and Phoenix Technologies
  20937.       signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
  20938.       support this function, however, returning the usual CF set/AH=86h for
  20939.       "unsupported function".
  20940. --------b-15E4-------------------------------
  20941. INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
  20942.     AH = E4h
  20943.     AL = subfunction
  20944.         00h get ???
  20945.         Return: CF clear
  20946.             AH = 00h
  20947.             CX = 0000h
  20948.             BX = ??? (read from [XBDA:0094h])
  20949.         01h,02h unsupported by this ROM version
  20950.         Return: CF set, AH = 86h
  20951.         80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
  20952.         Return: CF clear
  20953.             AH = 00h
  20954.             CX = 0000h
  20955.             BX = ???
  20956.         81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
  20957.         Return: CF set, AH = 86h
  20958. Notes:    functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
  20959.     these functions are not supported by the 7/26/93 LTE Lite 386 ROM
  20960. --------b-15E800-----------------------------
  20961. INT 15 - Compaq Contura - GET ???
  20962.     AX = E800h
  20963. Return: AX = 0000h
  20964.     BH = 00h
  20965.     BL = ??? (read from port 0C7Ch)
  20966.     CH = ???
  20967.     CL = ???
  20968.     DX = 0000h
  20969. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  20970. --------b-15E801-----------------------------
  20971. INT 15 - Compaq Contura - GET ???
  20972.     AX = E801h
  20973. Return: CF clear
  20974.     AX = extended memory in K (read from CMOS locations 30h and 31h)
  20975.     BH = ???
  20976.     BL = ???
  20977.     CX = extended memory in K (read from CMOS locations 17h and 18h)
  20978.     DX = ???
  20979. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  20980. --------b-15E802-----------------------------
  20981. INT 15 - Compaq Contura - GET ???
  20982.     AX = E802h
  20983. Return: CF clear
  20984.     AX = 0000h
  20985.     BX = ???
  20986.     CX = 0000h
  20987. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  20988.       supported by LTE Lite 20 and 25.
  20989. --------m-15F200CX454D-----------------------
  20990. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
  20991.     AX = F200h
  20992.     CX = 454Dh
  20993. Return: CF clear if hardware already initialised
  20994.         BX = upper RAM areas in use
  20995.         bit 0: C000-C3FF
  20996.         bit 1: C400-C7FF
  20997.         ...
  20998.         bit 11: EC00-EFFF
  20999.     CF set if hardware not initialised yet
  21000. --------B-1600-------------------------------
  21001. INT 16 - KEYBOARD - GET KEYSTROKE
  21002.     AH = 00h
  21003. Return: AH = BIOS scan code
  21004.     AL = ASCII character
  21005. Notes:    on extended keyboards, this function discards any extended keystrokes,
  21006.       returning only when a non-extended keystroke is available
  21007.     the BIOS scan code is usually, but not always, the same as the hardware
  21008.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  21009.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  21010.       differs for shifted special keys.
  21011. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  21012. --------B-1601-------------------------------
  21013. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  21014.     AH = 01h
  21015. Return: ZF set if no keystroke available
  21016.     ZF clear if keystroke available
  21017.         AH = BIOS scan code
  21018.         AL = ASCII character
  21019. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  21020.       however, any extended keystrokes which are not compatible with 83/84-
  21021.       key keyboards are removed in the process of checking whether a
  21022.       non-extended keystroke is available
  21023. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  21024. --------B-1602-------------------------------
  21025. INT 16 - KEYBOARD - GET SHIFT FLAGS
  21026.     AH = 02h
  21027. Return: AL = shift flags (see #0408)
  21028. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  21029.  
  21030. Bitfields for keyboard shift flags:
  21031. Bit(s)    Description    (Table 0408)
  21032.  7    Insert active
  21033.  6    CapsLock active
  21034.  5    NumLock active
  21035.  4    ScrollLock active
  21036.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  21037.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  21038.  1    left shift key pressed
  21039.  0    right shift key pressed
  21040. --------B-1603-------------------------------
  21041. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  21042.     AH = 03h
  21043.     AL = subfunction
  21044.         00h set default delay and rate (PCjr and some PS/2)
  21045.         01h increase delay before repeat (PCjr)
  21046.         02h decrease repeat rate by factor of 2 (PCjr)
  21047.         03h increase delay and decrease repeat rate (PCjr)
  21048.         04h turn off typematic repeat (PCjr and some PS/2)
  21049.         05h set repeat rate and delay (AT,PS)
  21050.         BH = delay value (00h = 250ms to 03h = 1000ms)
  21051.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  21052.         06h get current typematic rate and delay (newer PS/2s)
  21053.         Return: BL = repeat rate (see above)
  21054.             BH = delay (see above)
  21055. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  21056.       supported
  21057. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  21058. --------B-1604-------------------------------
  21059. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  21060.     AH = 04h
  21061.     AL = keyclick state
  21062.         00h off
  21063.         01h on
  21064. SeeAlso: AH=03h
  21065. --------B-1605-------------------------------
  21066. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  21067.     AH = 05h
  21068.     CH = scan code
  21069.     CL = ASCII character
  21070. Return: AL = 00h if successful
  21071.          01h if keyboard buffer full
  21072. Note:    under DESQview, a number of "keystrokes" invoke specific
  21073.       DESQview-related actions when they are read from the keyboard
  21074.       buffer (see #0409)
  21075. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AH=FFh,INT 15/AX=DE10h
  21076.  
  21077. (Table 0409)
  21078. Values for pseudo-keystrokes for DESQview:
  21079.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  21080.  38FCh or FC00h    pop up DESQview main menu
  21081.  38FEh or FE00h    close the current window
  21082.  38FFh or FF00h    pop up DESQview learn menu
  21083. --------B-1605-------------------------------
  21084. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  21085.     AH = 05h
  21086.     AL = function
  21087.         01h set keyboard layout to French
  21088.         02h set keyboard layout to German
  21089.         03h set keyboard layout to Italian
  21090.         04h set keyboard layout to Spanish
  21091.         05h set keyboard layout to UK
  21092.         80h check if function supported
  21093.         Return: AL <> 80h if supported
  21094. Return: ???
  21095. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  21096. SeeAlso: AH=92h,AH=A2h
  21097. --------B-1609-------------------------------
  21098. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  21099.     AH = 09h
  21100. Return: AL = supported keyboard functions (see #0410)
  21101. Note:    this function is only available if bit 6 of the second feature byte
  21102.       returned by INT 15/AH=C0h is set
  21103. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  21104.  
  21105. Bitfields for supported keyboard functions:
  21106. Bit(s)    Description    (Table 0410)
  21107.  7    reserved
  21108.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  21109.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  21110.  4    INT 16/AH=0Ah supported
  21111.  3    INT 16/AX=0306h supported
  21112.  2    INT 16/AX=0305h supported
  21113.  1    INT 16/AX=0304h supported
  21114.  0    INT 16/AX=0300h supported
  21115. --------B-160A-------------------------------
  21116. INT 16 - KEYBOARD - GET KEYBOARD ID
  21117.     AH = 0Ah
  21118. Return: BX = keyboard ID (see #0411)
  21119. Note:    check return value from AH=09h to determine whether this function is
  21120.       supported
  21121. SeeAlso: AH=09h
  21122.  
  21123. (Table 0411)
  21124. Values for keyboard ID:
  21125.  0000h    no keyboard attached
  21126.  41ABh    Japanese "G" keyboard (translate mode)
  21127.  54ABh    Japanese "P" keyboard (translate mode)
  21128.  83ABh    Japanese "G" keyboard (pass-through mode)
  21129.  84ABh    Japanese "P" keyboard (pass-through mode)
  21130.  90ABh    old Japanese "G" keyboard
  21131.  91ABh    old Japanese "P" keyboard
  21132.  92ABh    old Japanese "A" keyboard
  21133. --------B-1610-------------------------------
  21134. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  21135.     AH = 10h
  21136. Return: AH = BIOS scan code
  21137.     AL = ASCII character
  21138. Notes:    if no keystroke is available, this function waits until one is placed
  21139.       in the keyboard buffer
  21140.     the BIOS scan code is usually, but not always, the same as the hardware
  21141.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  21142.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  21143.       differs for shifted special keys.
  21144.     unlike AH=00h, this function does not discard extended keystrokes
  21145.     INT 16/AH=09h can be used to determine whether this function is
  21146.       supported, but only on later model PS/2s
  21147. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  21148. --------B-1611-------------------------------
  21149. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  21150.     AH = 11h
  21151. Return: ZF set if no keystroke available
  21152.     ZF clear if keystroke available
  21153.         AH = BIOS scan code
  21154.         AL = ASCII character
  21155. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  21156.     unlike AH=01h, this function does not discard extended keystrokes
  21157.     some versions of the IBM BIOS Technical Reference erroneously report
  21158.       that CF is returned instead of ZF
  21159.     INT 16/AH=09h can be used to determine whether this function is
  21160.       supported, but only on later model PS/2s
  21161. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  21162. --------B-1612-------------------------------
  21163. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  21164.     AH = 12h
  21165. Return: AL = shift flags 1 (same as returned by AH=02h) (see #0412)
  21166.     AH = shift flags 2 (see #0413)
  21167. Notes:    AL bit 3 set only for left Alt key on many machines
  21168.     AH bits 7 through 4 always clear on a Compaq SLT/286
  21169.     INT 16/AH=09h can be used to determine whether this function is
  21170.       supported, but only on later model PS/2s
  21171. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  21172.  
  21173. Bitfields for keyboard shift flags 1:
  21174. Bit(s)    Description    (Table 0412)
  21175.  7    Insert active
  21176.  6    CapsLock active
  21177.  5    NumLock active
  21178.  4    ScrollLock active
  21179.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  21180.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  21181.  1    left shift key pressed
  21182.  0    right shift key pressed
  21183.  
  21184. Bitfields for keyboard shift flags 2:
  21185. Bit(s)    Description    (Table 0413)
  21186.  7    SysReq key pressed (SysReq is often labeled SysRq)
  21187.  6    CapsLock pressed
  21188.  5    NumLock pressed
  21189.  4    ScrollLock pressed
  21190.  3    right Alt key pressed
  21191.  2    right Ctrl key pressed
  21192.  1    left Alt key pressed
  21193.  0    left Ctrl key pressed
  21194. --------J-1613-------------------------------
  21195. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  21196.     AH = 13h
  21197.     AL = function
  21198.         00h set shift status
  21199.         DX = shift status (see #0414), must preserve internal status
  21200.               bits
  21201.         01h get shift status
  21202.         Return: DX = current shift status (see #0414)
  21203. Note:    these functions are supplied by the Japanese Front-End Processor
  21204. SeeAlso: AH=14h,INT 21/AX=6301h
  21205.  
  21206. Bitfields for DOS/V shift status:
  21207. Bit(s)    Description    (Table 0414)
  21208.  0    full-size rather than half-size
  21209.  2-1    character input mode
  21210.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  21211.  5-3    internal status
  21212.  6    Romaji enabled
  21213.  7    Katakana to Kanji conversion enabled
  21214.  15-8    internal status
  21215. --------J-1614-------------------------------
  21216. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  21217.     AH = 14h
  21218.     AL = function
  21219.         00h enable display
  21220.         01h disable display
  21221.         02h get display state
  21222.         Return: AL = current state (00h enabled, 01h disabled)
  21223. Desc:    control the screen-bottom shift status row(s) for the Japanese
  21224.       Front-End Processor
  21225. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  21226. --------B-1620-------------------------------
  21227. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  21228.     AH = 20h
  21229. Return: AH = BIOS scan code (see AH=10h for details)
  21230.     AL = ASCII character
  21231. Note:    use AH=09h to determine whether this function is supported
  21232. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  21233. --------b-1620------------------------------------
  21234. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  21235.     AH = 20h
  21236.     AL = shift status (see #0415)
  21237. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  21238.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  21239.     the user can override the specified settings by pressing the keys
  21240.  
  21241. Bitfields for HUNTER 16 shift status:
  21242. Bit(s)    Description    (Table 0415)
  21243.  4    Scroll Lock on
  21244.  5    Num Lock on
  21245.  6    Caps Lock on
  21246. --------K-1620-------------------------------
  21247. INT 16 O - K3 v1.5+, K3PLUS v5.0+ - GET EXTENDED BUFFER STATE
  21248.     AH = 20h
  21249. Return: AX = K3 version
  21250.     ES:BX -> extended keyboard buffer start
  21251.     ES:DX -> extended keyboard buffer end
  21252.     ES:SI -> next keystroke
  21253.     ES:DI -> last keystroke in buffer
  21254.     CX = number of keystrokes in buffer
  21255. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  21256.       K3 extended German keyboard driver by Martin Gerdes published in c't
  21257.       magazine in 1988
  21258. Note:    this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h
  21259.       instead
  21260. SeeAlso: AH=25h"K3",AX=AF20h
  21261. --------B-1621-------------------------------
  21262. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  21263.     AH = 21h
  21264. Return: ZF set if no keystroke available
  21265.     ZF clear if keystroke available
  21266.         AH = BIOS scan code
  21267.         AL = ASCII character
  21268. Notes:    use AH=09h to determine whether this function is supported
  21269.     some versions of the IBM BIOS Technical Reference erroneously report
  21270.       that CF is returned instead of ZF
  21271. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  21272. --------b-1621------------------------------------
  21273. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  21274.     AH = 21h
  21275.     AL = shift keys to control (see #0408)
  21276.     BL = shift state for disabled keys
  21277. Note:    If a bit in AL is set the key is disabled and set to the state of the
  21278.       corresponding bit in BL
  21279. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  21280. --------B-1622-------------------------------
  21281. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  21282.     AH = 22h
  21283. Return: AL = shift flags 1 (see #0412)
  21284.     AH = shift flags 2 (see #0413)
  21285. Note:    use AH=09h to determine whether this function is supported
  21286. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  21287. --------b-1622------------------------------------
  21288. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  21289.     AH = 22h
  21290.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  21291.     BX = 0708h
  21292.     CX = 0910h
  21293.     DX = 1112h
  21294. Return: AL = 00h if successful
  21295. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  21296. --------b-1623------------------------------------
  21297. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  21298.     AH = 23h
  21299.     AL = new state of breakout (00h enabled, nonzero disabled)
  21300.     BX = 0708h   
  21301.     CX = 0910h
  21302.     DX = 1112h
  21303. Return: AL = 00h if successful
  21304. Desc:    Enables or disables the emergency breakout feature, where the
  21305.       Hunter 16 at power on checks whether the X and P keys are pressed.
  21306.       If so the machine will boot rather than continue the running program
  21307. SeeAlso: AH=22h"HUNTER"
  21308. --------b-1624------------------------------------
  21309. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  21310.     AH = 24h
  21311.     AL = Matrix Code (see #0416)
  21312.     BL = new Key code
  21313. Return: AL = status (00h successful, nonzero failed)
  21314. SeeAlso: AH=2Bh,AH=2Ch
  21315.  
  21316. (Table 0416)
  21317. Values for HUNTER 16 Matrix Code:
  21318.  Code  Key        Code    Key        Code    Key
  21319.  00h   Esc key        1Eh    Space        3Bh    L
  21320.  01h   1        21h    0        3Ch    ,
  21321.  02h   Q        22h    -        3Eh    Right shift
  21322.  03h   Tab        23h    '        42h    8
  21323.  04h   Num Lock        24h    Keypad 4    43h    7
  21324.  05h   \        25h    Enter        44h    U
  21325.  08h   LShift        26h    Keypad 7    45h    I
  21326.  09h   Ctrl        27h    .        46h    J
  21327.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  21328.  0Bh   2        29h    Keypad 0    48h    M
  21329.  0Ch   W        2Ch    =        49h    N 
  21330.  0Dh   A        2Dh    Backspace    4Ah    /
  21331.  0Eh   S        2Eh    Keypad 8    4Dh    6
  21332.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  21333.  11h   Alt        30h    Keypad 5    4Fh    T
  21334.  16h   4        31h    Keypad 6    50h    Y
  21335.  17h   3        32h    Keypad 2    51h    G
  21336.  18h   E        33h    Keypad 3    52h    H
  21337.  19h   R        34h    Keypad .    53h    B
  21338.  1Ah   D        37h    9        54h    V
  21339.  1Bh   F        38h    O        55h    #
  21340.  1Ch   X        39h    P        58h    Pwr
  21341.  1Dh   C        3Ah    ;        59h    Shift Pwr
  21342. --------b-1625------------------------------------
  21343. INT 16 - HUNTER 16 - RESET KEYBOARD
  21344.     AH = 25h
  21345. Return: AL = 00h
  21346. Desc:    restores the standard keyboard layout after any remapping
  21347. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  21348. --------K-1625-------------------------------
  21349. INT 16 O - K3 v1.5+, K3PLUS v5.0+ - COPY INTO EXTENDED BUFFER
  21350.     AH = 25h
  21351.     CX = number of keystrokes to copy
  21352.     ES:SI -> buffer containing keystrokes
  21353. Return: CF clear if successful
  21354.     CF set on error (i.e. buffer full)
  21355.         CX = number of keystrokes NOT transferred
  21356.         ES:SI -> first keystroke not transferred
  21357. Note:    this function is normally unsupported under K3PLUS v6.0+; use AX=AF20h
  21358.       instead
  21359. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h
  21360. --------b-1626------------------------------------
  21361. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  21362.     AH = 26h
  21363.     AL = new state of keyclicks (00h disabled, 01h enabled)
  21364. Return: AL = 00h
  21365. SeeAlso: AH=2Ah
  21366. --------b-1627------------------------------------
  21367. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  21368.     AH = 27h
  21369.     AL = what to dump
  21370.         00h whole (virtual) window
  21371.         01h LCD window only
  21372. Return: AL = 00h
  21373. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  21374.       part displayed in the LCD window
  21375. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  21376.       a 640x200 virtual screen
  21377. --------b-1629------------------------------------
  21378. INT 16 - HUNTER 16 - GET KEY REPEAT
  21379.     AH = 29h
  21380. Return: BL = Typematic rate (characters per second) (see #0417)
  21381.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  21382. SeeAlso: AH=03h,AH=2Ah
  21383.  
  21384. (Table 0417)
  21385. Values for HUNTER 16 Typematic rate:
  21386.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  21387.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  21388.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  21389.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  21390.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  21391.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  21392.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  21393.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  21394. SeeAlso: AH=2Ah
  21395. --------b-162A------------------------------------
  21396. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  21397.     AH = 2Ah
  21398.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  21399. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  21400. --------b-162B------------------------------------
  21401. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  21402.     AH = 2Bh
  21403.     AL = which key table to redefine
  21404.         00h unshifted
  21405.         01h shifted
  21406.         02h Numlock
  21407.     BH = standard scan code of key (00h-80h)
  21408.     BL = new scan code
  21409. Desc:    redefine the generated scan code from BH to BL
  21410. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  21411. --------b-162C------------------------------------
  21412. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  21413.     AH = 2Ch
  21414.     AL = Matrix code of key (see AH=29h)
  21415.     BL = new key code
  21416. Return: AL = status (00h success, nonzero failed)
  21417. Desc:    redefine the key code generated by holding the PAW key down and
  21418.       pressing the key in AL
  21419. SeeAlso: AH=24h,AH=2Bh
  21420. --------b-162D------------------------------------
  21421. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  21422.     AH = 2Dh
  21423.     AL = enabled break keys
  21424.         bit 0 Ctrl-C
  21425.         bit 1 Ctrl-Break
  21426.     BX = 0708h
  21427.     CX = 0910h
  21428.     DX = 1112h
  21429. Return: AL = status (00h success, FFh failed)
  21430. SeeAlso: AH=21h"HUNTER"
  21431. --------U-163577-----------------------------
  21432. INT 16 U - TextWare TWTSR - API
  21433.     AX = 3577h
  21434.     CX = function
  21435.         00CBh ???
  21436.         Return: AX = 0000h
  21437.             BX = 0000h
  21438.             DX:CX -> ???
  21439.         00CCh uninstall
  21440.         Return: AX = status
  21441.                 0000h successful
  21442.                 FFFDh unable to unload because vectors taken
  21443.         00CDh ???
  21444.         Return: AX = 0000h
  21445.             BX = 0000h
  21446.             DX:CX -> ???
  21447.         other
  21448.         Return: AX = 5345h ('SE')
  21449. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  21450.       popped up via hotkey
  21451. SeeAlso: AX=D724h
  21452. --------U-164252-----------------------------
  21453. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  21454.     AX = 4252h
  21455. Return: AX = 5242h if installed
  21456. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  21457.       PC Magazine utility CAPTURE written by Tom Kihlken
  21458. SeeAlso: AX=4253h,AX=4254h
  21459. --------U-164253-----------------------------
  21460. INT 16 - TEXTCAP 2.0 - UNINSTALL
  21461.     AX = 4253h
  21462. Return: AX = segment of resident code
  21463. Notes:    the uninstall code does not check whether interrupt vectors have been
  21464.       chained by other programs
  21465.     the caller must free the main memory block (using the returned segment)
  21466. SeeAlso: AX=4252h,AX=4254h
  21467. --------U-164254-----------------------------
  21468. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  21469.     AX = 4254h
  21470. Return: AX = status
  21471.         4254h if screen dump will be written as soon as disk becomes idle
  21472.         5442h if screen dump written
  21473. SeeAlso: AX=4252h,AX=4253h
  21474. --------e-164500-----------------------------
  21475. INT 16 - Shamrock Software EMAIL - GET STATUS
  21476.     AX = 4500h
  21477.     DL = port number (01h = COM1)
  21478.     ES:BX -> 13-byte buffer for ASCIZ name
  21479. Return: AX = 4D00h if EMAIL installed on specified port
  21480.         ES:BX -> "" if no connection
  21481.           -> "*" if connection but caller has not identified name
  21482.           -> name otherwise
  21483.         CX = version (CH = major, CL = minor)
  21484.         DL = privilege level of user (00h = guest)
  21485.         DH = chosen language (00h German, 01h English)
  21486. SeeAlso: AX=4501h,AX=4502h
  21487. --------e-164501-----------------------------
  21488. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  21489.     AX = 4501h
  21490.     DL = port number (01h = COM1)
  21491. Return: AX = 4D00h if EMAIL installed on specified port
  21492.         BX = maximum connect time in clock ticks
  21493.         CX = maximum connect time for guests (without name) in clock ticks
  21494.         DX = elapsed connect time of current user in clock ticks
  21495. SeeAlso: AX=4500h
  21496. --------e-164502-----------------------------
  21497. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  21498.     AX = 4502h
  21499.     DL = port number (01h = COM1)
  21500. Return: AX = 4D00h if EMAIL installed on specified port
  21501.         BL = current value of serial port's Line Control Register
  21502.         BH = flags (see #0418)
  21503.         CX = selected country code (33 = France, 49 = Germany, etc)
  21504.         DX = baudrate divisor (115200/DX = baudrate)
  21505. SeeAlso: AX=4500h
  21506.  
  21507. Bitfields for Shamrock Software EMAIL flags:
  21508. Bit(s)    Description    (Table 0418)
  21509.  0    ISO code
  21510.  1    pause
  21511.  2    linefeed
  21512.  3    ANSI sequences
  21513. --------e-164503-----------------------------
  21514. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  21515.     AX = 4503h
  21516.     DL = port number (01h = COM1)
  21517.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  21518.     ES:BX -> ASCIZ string with new user command-word
  21519. Return: AX = 4D00h if EMAIL installed on specified port
  21520. Notes:    a single user command (consisting of only uppercase letters and digits)
  21521.       may be defined, and remains valid until it is overwritten or the
  21522.       EMAIL program terminates; the user command must be activated by
  21523.       calling AX=4504h at least once.
  21524.     an existing command word may be redefined with this function
  21525. SeeAlso: AX=4504h,AX=4505h
  21526. --------e-164504-----------------------------
  21527. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  21528.     AX = 4504h
  21529.     DL = port number (01h = COM1)
  21530.     ES:BX -> 80-byte buffer for ASCIZ user input line
  21531. Return: AX = 4D00h if EMAIL installed on specified port
  21532.         DL = flags
  21533.         bit 0: user function supported (always set)
  21534.         bit 1: user entered user-function command word
  21535.         if DL bit 1 set,
  21536.         ES:BX buffer contains line entered by user which begins with
  21537.             the defined command word and has been converted to all
  21538.             caps
  21539. Note:    caller must process the returned commandline and invoke AX=4505h
  21540.       within five seconds with the result of that processing
  21541. SeeAlso: AX=4503h,AX=4505h
  21542. --------e-164505-----------------------------
  21543. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  21544.     AX = 4505h
  21545.     DL = port number (01h = COM1)
  21546.     DH = error flag
  21547.         bit 3: set on error
  21548.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  21549. Return: AH = 4Dh if EMAIL installed on specified port
  21550.     AL = status
  21551.         00h successful
  21552.         02h unable to perform function (timeout, prev call not complete)
  21553.         other error
  21554. Notes:    if the error flag in DH is set, the string is not sent and an error
  21555.       message is generated instead; if this function is not called within
  21556.       five seconds of AX=4504h, EMAIL automatically generates an error
  21557.       message
  21558.     the string is copied into an internal buffer, allowing this function's
  21559.       caller to continue immediately
  21560. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  21561. --------e-164506-----------------------------
  21562. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  21563.     AX = 4506h
  21564.     DL = port number (01h = COM1)
  21565.     ES:BX -> 13-byte buffer for ASCIZ filename
  21566. Return: AX = 4D00h if EMAIL installed on specified port
  21567.         DH = Xmodem status
  21568.         00h no XGET command given
  21569.         01h XGET in progress
  21570.         02h XGET completed successfully
  21571.         ES:BX buffer filled with last filename given to XGET command
  21572.         (without path)
  21573. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  21574.       return DH=00h
  21575. SeeAlso: AX=4500h,INT 17/AX=2408h
  21576. --------K-164D4F-----------------------------
  21577. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  21578.     AX = 4D4Fh
  21579. Return: AX = 6F6Dh if installed
  21580.         ES = segment of resident code
  21581. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  21582. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  21583. --------J-165000-----------------------------
  21584. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  21585.     AX = 5000h
  21586.     BX = country code
  21587.         0001h USA (English), 0051h Japan
  21588. Return: AL = status
  21589.         00h successful
  21590.         01h bad country code
  21591.         02h other error
  21592. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  21593. --------J-165001-----------------------------
  21594. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  21595.     AX = 5001h
  21596. Return: AL = status
  21597.         00h successful
  21598.         BX = country code
  21599.         02h error
  21600. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  21601. --------J-1651-------------------------------
  21602. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  21603.     AH = 51h
  21604. Return: AL = standard shift key states (see #0408,#0412)
  21605.     AH = Kana lock (00h off, 01h on)
  21606. SeeAlso: AH=02h,AH=12h,AH=22h
  21607. --------t-165453BX5242-----------------------
  21608. INT 16 - TSRBONES - INSTALLATION CHECK
  21609.     AX = 5453h ('TS')
  21610.     BX = 5242h ('RB')
  21611.     CX = 4F4Eh ('ON')
  21612.     DX = 4553h ('ES')
  21613. Return: AX = 4553h if installed
  21614.     BX = 4F4Eh if installed
  21615.     CX = 5242h if installed
  21616.     DX = 5453h if installed
  21617. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  21618. Note:    these values are the default as the TSRBONES package is distributed,
  21619.       but will normally be changed when implementing an actual TSR with
  21620.       the TSRBONES skeleton
  21621. SeeAlso: INT 2D"AMIS"
  21622. --------A-165500-----------------------------
  21623. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  21624.     AX = 5500h
  21625. Return: AX = 4D53h ('MS') if keyboard TSR present
  21626. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  21627.       that are present through this call.
  21628.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  21629.       handlers; otherwise it assumes that the TSR will handle the keyboard
  21630. SeeAlso: INT 1A/AX=3601h
  21631. --------A-1655FEDX0000-----------------------
  21632. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR???
  21633.     AX = 55FEh
  21634.     DX = 0000h
  21635.     ES:BX -> ??? function
  21636.     ES:CX -> ??? structure
  21637. Return: AX = result
  21638.         4D4Bh only the INT 1B handler will be installed.
  21639.         <> 4D4Bh handlers for INT 08, INT 09, INT 16, INT 1B, and
  21640.           INT 1C are installed
  21641. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  21642.       function when new keyboard keys are pressed. If a TSR returns
  21643.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  21644. SeeAlso: INT 16/AX=5500h,INT 1A/AX=3601h
  21645. --------U-1655FF-----------------------------
  21646. INT 16 - Swap Utilities - ???
  21647.     AX = 55FFh
  21648.     BX >= 0004h
  21649.     CX = function
  21650.         0000h set ??? flag
  21651.         other clear ??? flag
  21652. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools v7, as
  21653.       well as the Trusted Access SCRNBLNK.COM; this may be part of the
  21654.       standard TesSeRact library
  21655. SeeAlso: INT 2F/AX=5453h
  21656. --------c-165758BX4858-----------------------
  21657. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  21658.     AX = 5758h
  21659.     BX = 4858h ('HX')
  21660.     DX = 4443h ('DC')
  21661.     CX <> 5758h
  21662. Return: BX = 6878h if installed
  21663.     CX = 6463h if installed
  21664.         AX = code segment of TSR
  21665.         CX = internal version??? (v3.00 returns 0100h)
  21666. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  21667. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  21668.     the cache statistics are located early in the segment pointed at by
  21669.       AX on return
  21670. SeeAlso: INT 2F/AX=5758h
  21671. ----------165758BX5754-----------------------
  21672. INT 16 U - Netroom ??? - ???
  21673.     AX = 5758h
  21674.     BX = 5754h
  21675.     ???
  21676. Return: ???
  21677. ----------165758BX5755-----------------------
  21678. INT 16 U - Netroom ??? - ???
  21679.     AX = 5758h
  21680.     BX = 5755h
  21681.     DS:SI -> ???
  21682. Return: ???
  21683. ----------165758BX5756-----------------------
  21684. INT 16 U - Netroom ??? - INSTALLATION CHECK
  21685.     AX = 5758h
  21686.     BX = 5756h
  21687. Return: BX <> 5756h if installed
  21688. --------m-165758BX5858-----------------------
  21689. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  21690.     AX = 5758h
  21691.     BX = 5858h
  21692. Return: CF clear
  21693.     DX:BX -> saved copy of interrupt vector table
  21694. Note:    the installation check consists of calling this function and comparing
  21695.       BX against 5858h on return; if it has changed, PRENET is installed
  21696. SeeAlso: AX=5758h/BX=5859h
  21697. Index:    installation check;Netroom PRENET
  21698. --------m-165758BX5859-----------------------
  21699. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  21700.     AX = 5758h
  21701.     BX = 5859h
  21702. Return: CF clear
  21703.     DX:BX -> saved copy of interrupt vector table
  21704. Note:    the installation check consists of calling this function and comparing
  21705.       BX against 5859h on return; if it has changed, POSTNET is installed
  21706. SeeAlso: AX=5758h/BX=5858h
  21707. Index:    installation check;Netroom POSTNET
  21708. --------U-166969BX6968-----------------------
  21709. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  21710.     AX = 6969h
  21711.     BX = 6968h
  21712. Return: resident code unhooked, but not removed from memory
  21713. Index:    uninstall;BACKTALK
  21714. --------U-166969BX6969-----------------------
  21715. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  21716.     AX = 6969h
  21717.     BX = 6969h
  21718.     DX = 0000h
  21719. Return: DX nonzero if installed
  21720.         BX = CS of resident code
  21721.         DX = PSP segment of resident code
  21722.         DS:SI -> ASCIZ identification string "CPoint Talk"
  21723. --------i-166A6B-----------------------------
  21724. INT 16 U - FastJuice - DISABLE/UNLOAD???
  21725.     AX = 6A6Bh
  21726. Return: ???
  21727. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  21728. SeeAlso: AX=7463h
  21729. Index:    uninstall;FastJuice
  21730. --------G-166C63-----------------------------
  21731. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  21732.     AX = 6C63h ('lc')
  21733. Return: AX = 4C43h ('LC') if installed
  21734. Program: TMED is a freeware resident memory editor by Liang Chen
  21735. --------b-166F00BX0000-----------------------
  21736. INT 16 - HP HIL Vectras - HP HIL Extended BIOS INSTALLATION CHECK
  21737.     AX = 6F00h
  21738.     BX = 0000h
  21739. Return: BX = 4850h if present
  21740. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  21741.     supported by ES, QS, and RS series HP Vectras
  21742. SeeAlso: AX=6F0Dh
  21743. --------b-166F0D-----------------------------
  21744. INT 16 - HP HIL Vectras - GET HIL Extended BIOS INTERRUPT NUMBER
  21745.     AX = 6F0Dh
  21746. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  21747. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  21748.       input system
  21749. SeeAlso: AX=6F0Eh,INT 6F"HP"
  21750. --------b-166F0E-----------------------------
  21751. INT 16 - HP HIL Vectras - SET HIL Extended BIOS INTERRUPT NUMBER
  21752.     AX = 6F0Eh
  21753.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  21754. Return: AH = status (00h = successful)
  21755. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  21756.       number in case of an interrupt conflict with another application
  21757. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  21758.       input system
  21759. SeeAlso: AX=6F0Dh,INT 6F"HP"
  21760. --------K-1670-------------------------------
  21761. INT 16 - FAKEY.COM - INSTALLATION CHECK
  21762.     AH = 70h
  21763. Return: AX = 1954h if installed
  21764. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  21765. --------K-1671-------------------------------
  21766. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  21767.     AH = 71h
  21768.     CX = number of keystrokes
  21769.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  21770. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  21771. SeeAlso: AH=05h,AH=72h
  21772. --------K-1672-------------------------------
  21773. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  21774.     AH = 72h
  21775. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  21776. SeeAlso: AH=71h
  21777. --------K-1673-------------------------------
  21778. INT 16 - FAKEY.COM - PLAY TONES
  21779.     AH = 73h
  21780.     CX = number of tones to play
  21781.     DS:SI -> array of tones (see #0419)
  21782. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  21783. SeeAlso: INT 15/AX=1019h
  21784.  
  21785. Format of FAKEY.COM tone array entries:
  21786. Offset    Size    Description    (Table 0419)
  21787.  00h    WORD    divisor for timer channel 2
  21788.  02h    WORD    duration in clock ticks
  21789. --------i-167463-----------------------------
  21790. INT 16 U - FastJuice - INSTALLATION CHECK
  21791.     AX = 7463h ("tc")
  21792. Return: AX = 5443h ("TC") if installed
  21793. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  21794. SeeAlso: AX=6A6Bh
  21795. --------R-1675-------------------------------
  21796. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  21797.     AH = 75h
  21798.     AL = number of ticks between checks for new screen changes
  21799. --------R-1676-------------------------------
  21800. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  21801.     AH = 76h
  21802.     AL = error checking type
  21803.         00h none
  21804.         01h fast
  21805.         02h slow
  21806. --------R-1677-------------------------------
  21807. INT 16 - pcANYWHERE III - LOG OFF
  21808.     AH = 77h
  21809.     AL = mode
  21810.         00h wait for another call
  21811.         01h leave in Memory Resident Mode
  21812.         02h leave in Automatic Mode
  21813.         FFh leave in current operating mode
  21814. --------U-167761-----------------------------
  21815. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  21816.     AX = 7761h ('wa')
  21817. Return: AX = 5741h ('WA') if installed
  21818. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  21819. SeeAlso: INT 21/AX=7761h
  21820. --------U-167788BX7789-----------------------
  21821. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  21822.     AX = 7788h
  21823.     BX = 7789h
  21824.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  21825. Return: AX = 7789h if installed and signature correct
  21826.     BX = 7788h
  21827.     SI destroyed
  21828. --------R-1679-------------------------------
  21829. INT 16 - pcANYWHERE III - CHECK STATUS
  21830.     AH = 79h
  21831. Return: AX = status
  21832.         FFFFh if resident and active
  21833.         FFFEh if resident but not active
  21834.         FFFDh if in Memory Resident mode
  21835.         FFFCh if in Automatic mode
  21836.         other value if not resident
  21837. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  21838. --------R-167A-------------------------------
  21839. INT 16 - pcANYWHERE III - CANCEL SESSION
  21840.     AH = 7Ah
  21841. --------R-167B00-----------------------------
  21842. INT 16 - pcANYWHERE III - SUSPEND
  21843.     AX = 7B00h
  21844. SeeAlso: AH=79h,AX=7B01h
  21845. --------R-167B01-----------------------------
  21846. INT 16 - pcANYWHERE III - RESUME
  21847.     AX = 7B01h
  21848. SeeAlso: AH=79h,AX=7B00h
  21849. --------R-167C-------------------------------
  21850. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  21851.     AH = 7Ch
  21852. Return: AH = port number
  21853.     AL = baud rate
  21854.         00h = 50 baud
  21855.         01h = 75 baud
  21856.         02h = 110 baud
  21857.         03h = 134.5 baud
  21858.         04h = 150 baud
  21859.         05h = 300 baud
  21860.         06h = 600 baud
  21861.         07h = 1200 baud
  21862.         08h = 1800 baud
  21863.         09h = 2000 baud
  21864.         0Ah = 2400 baud
  21865.         0Bh = 4800 baud
  21866.         0Ch = 7200 baud
  21867.         0Dh = 9600 baud
  21868.         0Eh = 19200 baud
  21869. --------R-167D-------------------------------
  21870. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  21871.     AH = 7Dh
  21872.     AL = subfunction
  21873.         00h set terminal parameters
  21874.         01h get terminal parameters
  21875.         02h get configuration header and terminal parameters
  21876.     DS:CX -> terminal parameter block
  21877. --------R-167E-------------------------------
  21878. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  21879.     AH = 7Eh
  21880.     AL = subfunction
  21881.         01h port input status
  21882.         Return AX = 0 if no characer ready,
  21883.                AX = 1 if character ready
  21884.         02h port input character
  21885.         Return AL = received character
  21886.         03h port output character in CX
  21887.         11h hang up phone
  21888. --------R-167F-------------------------------
  21889. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  21890.     AH = 7Fh
  21891.     AL = subfunction
  21892.         00h enable remote keyboard only
  21893.         01h enable host keyboard only
  21894.         02h enable both keyboards
  21895.         08h display top 24 lines
  21896.         09h display bottom 24 lines
  21897.         10h Hayes modem
  21898.         11h other modem
  21899.         12h direct connect
  21900. --------U-1680-------------------------------
  21901. INT 16 - MAKEY.COM - INSTALLATION CHECK
  21902.     AH = 80h
  21903. Return: AX = 1954h if installed
  21904. Program: MAKEY is a utility by System Enhancement Associates
  21905. --------U-168765BX4321-----------------------
  21906. INT 16 - AT.COM version 8/26/87 - API
  21907.     AX = 8765h
  21908.     BX = 4321h
  21909.     CX = ??? or FFFFh
  21910.     if CX = FFFFh
  21911.         DX = number of event to remove or FFFFh
  21912. Return: ES:BX -> event record array (see #0420)
  21913. Program: AT.COM is a resident scheduler by Bill Frolik
  21914.  
  21915. Format of AT.COM event record:
  21916. Offset    Size    Description    (Table 0420)
  21917.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  21918.  01h    BYTE    day of date on which to trigger
  21919.  02h    BYTE    month of date on which to trigger
  21920.  03h    BYTE    trigger time, minute
  21921.  04h    BYTE    trigger time, hour
  21922.  05h    WORD    offset of command to be executed
  21923. ----------1692-------------------------------
  21924. INT 16 - ???
  21925.     AH = 92h
  21926. Return: AH <= 80h if ???
  21927. Note:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  21928. SeeAlso: AH=05h"PCjr",AH=A2h
  21929. --------U-1699-------------------------------
  21930. INT 16 - SCOUT v5.4 - GET ???
  21931.     AH = 99h
  21932. Return: AX = ABCDh
  21933.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  21934. Program: Scout is a memory-resident file manager by New-Ware
  21935. SeeAlso: AH=9Eh
  21936. --------U-169E-------------------------------
  21937. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  21938.     AH = 9Eh
  21939. Return: AX = ABCDh if installed
  21940. Program: Scout is a memory-resident file manager by New-Ware
  21941. SeeAlso: AH=99h
  21942. ----------16A2-------------------------------
  21943. INT 16 - ???
  21944.     AH = A2h
  21945. Return: AH <= 80h if ???
  21946. Note:    this function is this function is called by the DOS 5+ KEYB.COM
  21947. SeeAlso: AH=92h
  21948. --------V-16AA-------------------------------
  21949. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  21950.     AH = AAh
  21951.     Various registers set up by high level language.
  21952. Return: Graphics performed
  21953. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  21954.       Modula 2 and others from DataBiten in Sweden. The library is
  21955.       installed as a memory resident driver.
  21956. --------U-16AABBBXEEFF-----------------------
  21957. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  21958.     AX = AABBh
  21959.     BX = EEFFh
  21960. Return: AX = EEFFh if installed
  21961.     BX = AABBh if installed
  21962.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  21963. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  21964.       Co.
  21965. Index:    hotkeys;JORJ
  21966. --------K-16AF20BX4B33-----------------------
  21967. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  21968.     AX = AF20h
  21969.     BX = 4B33h ('K3')
  21970. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  21971.     ES:BX -> extended keyboard buffer start
  21972.     ES:DX -> extended keyboard buffer end
  21973.     ES:SI -> next keystroke
  21974.     ES:DI -> last keystroke in buffer
  21975.     CX = number of keystrokes in buffer
  21976. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  21977.       K3 extended German keyboard driver by Martin Gerdes published in c't
  21978.       magazine in 1988
  21979. Note:    this function replaces the identical function AH=20h"K3"
  21980. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h
  21981. --------K-16AF25BX4B33-----------------------
  21982. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  21983.     AX = AF25h
  21984.     BX = 4B33h ('K3')
  21985.     CX = number of keystrokes to copy
  21986.     ES:SI -> buffer containing keystrokes
  21987. Return: CF clear if successful
  21988.     CF set on error (i.e. buffer full)
  21989.         CX = number of keystrokes NOT transferred
  21990.         ES:SI -> first keystroke not transferred
  21991. Note:    this function replaces the identical function AH=25h"K3"
  21992. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h
  21993. --------K-16AF4DBX4B33-----------------------
  21994. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  21995.     AX = AF4Dh
  21996.     BX = 4B33h ('K3')
  21997. Return: AL = 50h if installed
  21998.         BX = K3 version
  21999.         DX = API version
  22000.         ES:CX -> K3 structure (version-dependent) (see #0421)
  22001. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  22002.       K3 extended German keyboard driver by Martin Gerdes published in c't
  22003.       magazine in 1988
  22004. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF83h
  22005. Index:    installation check;K3PLUS
  22006.  
  22007. Format of internal K3 structure:
  22008. Offset    Size    Description    (Table 0421)
  22009.  00h  3 BYTEs    signature "K3$"
  22010.  03h    BYTE    length of structure, including this byte and signature
  22011.  04h    WORD    compiler switch option flags A (see #0422)
  22012.  06h    WORD    compiler switch option flags B (see #0423)
  22013.  08h    BYTE    internal flags A (see #0424)
  22014.  09h    BYTE    internal flags B (see #0425)
  22015.  0Ah    WORD    DOS version recorded at startup
  22016.  0Ch    WORD    "ActTypeSpeed"
  22017.  0Eh    WORD    last Keyboard-ID sent
  22018.         41ABh translated, 83ABh native (pass-through)
  22019.  10h    WORD    offset of K3TAB Special
  22020.  12h    WORD    offset of K3TAB German
  22021.  14h    WORD    offset of K3TAB Alt
  22022.  16h    WORD    offset of K3TAB AltGr
  22023.  18h    WORD    offset of K3TAB Ctrl
  22024.  1Ah    WORD    offset of K3TAB NPad
  22025.  1Ch    WORD    offset of K3TAB CtrlNPad
  22026.  1Eh    WORD    offset of K3TAB AltNPad
  22027.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  22028.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  22029.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  22030.  26h    WORD    length of video mode table
  22031.  28h    WORD    offset of VidMdTbl or 0000h
  22032.  2Ah    BYTE    '$' end marker
  22033.  
  22034. Bitfields for K3PLUS compiler switch option flags A:
  22035. Bit(s)    Description    (Table 0422)
  22036.  15    GuINT16Fct2 (general use of INT 16 function 2)
  22037.  14    Int15df (INT 15 has to be predefined)
  22038.  13    GuAltNP (general use of Alt Numpad)
  22039.  12    SupAT (ATs+ supported)
  22040.  11    GuINT16Fct3 (general use of INT 16 function 3)
  22041.  10    GuINT16Ret (general use of INT16 bad function return)
  22042.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  22043.  7    ForceMF (force MF decode without read-ID)
  22044.  6    KXlate (translate keys for special keyboard)
  22045.  5    UmlautX (umlaut translation capability included)
  22046.  4    ApoX (translate apostrophe)
  22047.  3    DoINT16 (INT 16 handler included)
  22048.  2    UseCC (CopyCursor included)
  22049.  1-0    UseEB
  22050.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  22051.  
  22052. Bitfields for K3 compiler switch option flags B:
  22053. Bit(s)    Description    (Table 0423)
  22054.  15-11    reserved (0)
  22055.  10    CtrlSeq (Ctrl macro capability included)
  22056.  9-8    SupINT16fct55FE
  22057.  6    DoInstallCheck (check for double installation)
  22058.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  22059.  4    SendOut (sound and message output supported)
  22060.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  22061.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  22062.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  22063.     2=use internal indexes, 3=reserved)
  22064.  
  22065. Bitfields for K3 internal flags A:
  22066. Bit(s)    Description    (Table 0424)
  22067.  7    DoingUmlautExp
  22068.  6    CallINT15fct4F
  22069.  5    Beep1 (requires SendOut set in option flags B)
  22070.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  22071.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  22072.  2    KeyClick
  22073.  1    UmlautExp
  22074.  0    UmlautTrans
  22075.  
  22076. Bitfields for K3 internal flags B:
  22077. Bit(s)    Description    (Table 0425)
  22078.  7-5    reserved
  22079.  4    TranslateE0 enabled
  22080.  3    Boot enabled
  22081.  2    PrintScreen enabled
  22082.  1    Break enabled
  22083.  0    ApoPendingBeep
  22084. --------K-16AF50BX4B33-----------------------
  22085. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  22086.     AX = AF50h
  22087.     BX = 4B33h ('K3')
  22088.     CH = function
  22089.         00h get function flags
  22090.         CL = 00h
  22091.         Return: CX = supported function flags (see #0426)
  22092.         nonzero reserved for extensions
  22093. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  22094.  
  22095. Bitfields for K3PLUS supported function list:
  22096. Bit(s)    Description    (Table 0426)
  22097.  0    function 4Dh supported
  22098.  1    function 50h supported
  22099.  2-3    reserved (0)
  22100.  4    function 20h supported
  22101.  5    function 25h supported
  22102.  6    function 51h supported
  22103.  7    reserved (0)
  22104.  8    function 80h supported
  22105.  9    function 81h supported
  22106.  10    function 82h supported
  22107.  11-15    reserved (0)
  22108. --------K-16AF51BX4B33-----------------------
  22109. INT 16 - K3PLUS v2.00+ - SET OPTIONS
  22110.     AX = AF51h
  22111.     BX = 4B33h ('K3')
  22112.     CX = switches
  22113. Return: AL = status
  22114.         00h done
  22115.         CX = previous switch settings
  22116.         01h switch not supported
  22117.         FFh other error
  22118. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  22119. --------K-16AF80BX4B33-----------------------
  22120. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 09h VECTOR
  22121.     AX = AF80h
  22122.     BX = 4B33h ('K3')
  22123. Return: AL = status
  22124.         00h not supported
  22125.         81h if successful
  22126.         ES:CX -> original INT 09 handler
  22127. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  22128. --------K-16AF81BX4B33-----------------------
  22129. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 16h HANDLER
  22130.     AX = AF81h
  22131.     BX = 4B33h ('K3')
  22132. Return: AL = status
  22133.         00h not supported
  22134.         82h if successful
  22135.         ES:CX -> original INT 16 handler
  22136. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  22137. --------K-16AF82BX4B33-----------------------
  22138. INT 16 - K3PLUS v2.00+ - GET ORIGINAL INT 10h HANDLER
  22139.     AX = AF82h
  22140.     BX = 4B33h ('K3')
  22141. Return: AL = status
  22142.         00h not supported
  22143.         83h if successful
  22144.         ES:CX -> original INT 10 handler
  22145. Program: K3PLUS is an enhancement by Matthias Paul and Axel C. Frinke of the
  22146.       K3 extended German keyboard driver by Martin Gerdes published in c't
  22147.       magazine in 1988
  22148. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h
  22149. --------m-16B0B1-----------------------------
  22150. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  22151.     AX = B0B1h
  22152.     ES:DI -> 6 byte signature "VGARAM"
  22153. Return: AX = B1B0h if installed,
  22154.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  22155. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  22156.       not used in text modes available for DOS
  22157. --------K-16CA--BX736B-----------------------
  22158. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  22159.     AH = CAh
  22160.     BX = 736Bh ("sk")
  22161.     CX = 736Bh
  22162.     AL = function
  22163.         00h installation check
  22164.         Return: DX = words available in keyboard buffer
  22165.         01h place keystroke in buffer
  22166.         DX = keystroke (DH = scan code, DL = ASCII character)
  22167.         Return: DX = words available in keyboard buffer
  22168.                 FFFFh on error
  22169.         02h flush STACKEY and BIOS keyboard buffers
  22170. Return: AX = CAFFh if installed
  22171.         BX = segment of resident code
  22172.         CX = STACKEY version (CH = major, CL = minor)
  22173. Program: STACKEY is a shareware keyboard-input faking TSR
  22174. Index:    installation check;STACKEY
  22175. --------V-16CA00BX6570-----------------------
  22176. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  22177.     AX = CA00h
  22178.     BX = 6570h ("ep")
  22179.     CX = 6570h
  22180. Return: AX = CAFFh if installed
  22181.         BX = segment of resident code
  22182.         CX = ??? (0090h)
  22183. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  22184.       permanent across mode switches
  22185. SeeAlso: AX=CA00h/BX=7670h
  22186. --------V-16CA00BX7670-----------------------
  22187. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  22188.     AX = CA00h
  22189.     BX = 7670h ("vp")
  22190.     CX = 7670h
  22191. Return: AX = CAFFh if installed
  22192.         BX = segment of resident code
  22193.         CX = ??? (0090h)
  22194. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  22195.       permanent across mode switches
  22196. SeeAlso: AX=CA00h/BX=6570h
  22197. --------U-16D724CX00CB-----------------------
  22198. INT 16 U - APCAL v3.20 - GET ???
  22199.     AX = D724h
  22200.     CX = 00CBh
  22201. Return: AX = 0000h
  22202.     BX = 0000h
  22203.     DX:CX -> ??? or 0000h:0000h
  22204. Program: APCAL is an optionally-resident shareware appointment calendar by
  22205.       Gamma Software
  22206. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  22207. --------U-16D724CX00CC-----------------------
  22208. INT 16 U - APCAL v3.20 - GET ???
  22209.     AX = D724h
  22210.     CX = 00CCh
  22211. Return: AX = 0000h
  22212.     BX = 0000h
  22213.     DX:CX -> ??? (apparently an internal data area)
  22214. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  22215. --------U-16D724CX00CD-----------------------
  22216. INT 16 U - APCAL v3.20 - GET ???
  22217.     AX = D724h
  22218.     CX = 00CDh
  22219. Return: AX = ??? (5345h seen)
  22220. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  22221. ----------16DFDF-----------------------------
  22222. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  22223.     AX = DFDFh
  22224. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  22225.       "06/18/93" if installed
  22226. --------t-16E0E0-----------------------------
  22227. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  22228.     AX = E0E0h
  22229. Return: AX = 1F1Fh if installed
  22230.         DWORD 0040h:00F0h -> last data block in TSR list (see #0428)
  22231. Note:    the returned TSR list provides support for communication among TSRs
  22232.       built with TurboPower's Turbo Professional and Object Professional
  22233.       libraries for Turbo Pascal
  22234. SeeAlso: AX=F0F0h
  22235. --------U-16ED--BHED-------------------------
  22236. INT 16 - BORLAND TURBO LIGHTNING - API
  22237.     AH = EDh
  22238.     BH = EDh
  22239.     BL = function
  22240.         00h installation check
  22241.         Return: AX = 5205h
  22242.             CH = major version
  22243.             CL = minor version
  22244.         01h identical to function 00h???
  22245.         02h get resident data segment
  22246.         Return: AX = data segment of resident portion
  22247.         03h get resident ???
  22248.         Return: AX = offset of some buffer in resident code seg
  22249.         04h redefine auxiliary dictionary
  22250.         DS:SI -> counted filename string
  22251.         Return: AL = result code
  22252.         05h select active environment
  22253.         AL = environment (00h to 0Ch)
  22254.         Return: AX = status
  22255.                 0000h if OK
  22256.                 0001h if out of range
  22257.         06h toggle AutoProof???
  22258.         AL = state (00h off, 01h on)
  22259.         07h ???
  22260.         08h ???
  22261.         AL = char???
  22262.         CX = ???
  22263.         DX = ???
  22264.         Return: AX = 0, 1 or 2
  22265.         09h ???
  22266.         0Ah ???
  22267.         CX = ???
  22268.         DX = ???
  22269.         Return: AX = ???
  22270.         0Bh check dictionary integrity???
  22271.         DS:SI -> counted dictionary filename string
  22272.         Return: AX = 0, 40h, 80h
  22273.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  22274.         DS:SI -> counted string to check
  22275.         Return: AH = 0
  22276.             AL = result code
  22277.                00h string found in dictionary
  22278.                20h string begins more than one word
  22279.                40h string not found
  22280.         0Dh set ???
  22281.         (sets an internal flag)
  22282.         0Eh spellcheck string (RAM dictionary only)
  22283.         DS:SI -> counted string to check
  22284.         Return: AH = 00h
  22285.             AL = result code
  22286.                 00h string found in dictionary
  22287.                 01h string not found
  22288.                 02h ???
  22289.         0Fh ???
  22290.         10h ???
  22291. Notes:    AX in general returns an error code from most functions.
  22292. Index:    installation check;Turbo Lightning
  22293. --------U-16EF-------------------------------
  22294. INT 16 - CALCULATOR - INSTALLATION CHECK
  22295.     AH = EFh
  22296. Return: AX = 0088h if installed
  22297. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  22298.       Marek Kosznik
  22299. --------b-16F0-------------------------------
  22300. INT 16 - Compaq 386 and newer - SET CPU SPEED
  22301.     AH = F0h
  22302.     AL = speed code (see #0427)
  22303.     if AL=09h,
  22304.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  22305. SeeAlso: AH=F1h,AH=F3h
  22306.  
  22307. (Table 0427)
  22308. Values for speed code:
  22309.  00h    equivalent to 6 MHz 80286 (COMMON)
  22310.  01h    equivalent to 8 MHz 80286 (FAST)
  22311.  02h    full 16 MHz (HIGH)
  22312.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  22313.       (AUTO or HIGH)
  22314.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  22315.  09h    specify speed directly
  22316. --------t-16F0F0-----------------------------
  22317. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  22318.     AX = F0F0h
  22319. Return: AX = 0F0Fh if installed
  22320.         ES:DI -> last data block in TSR list
  22321. Note:    the returned TSR list provides support for communication among TSRs
  22322.       built with TurboPower's Turbo Professional and Object Professional
  22323.       libraries for Turbo Pascal
  22324. SeeAlso: AX=E0E0h
  22325.  
  22326. Format of TurboPower TSR data block:
  22327. Offset    Size    Description    (Table 0428)
  22328.  00h    DWORD    pointer to program tag (counted ASCII string)
  22329.  04h    WORD    interface version number (0400h)
  22330.  06h    DWORD    pointer to command entry point
  22331.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  22332.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  22333. ---swappable TSRs only---
  22334.  12h    DWORD    pointer to swapping data
  22335.  16h    DWORD    pointer to user data
  22336.     more???
  22337. --------b-16F1-------------------------------
  22338. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  22339.     AH = F1h
  22340. Return: AL = speed code (see #0427)
  22341.     if AL = 09h, CX = speed code
  22342. SeeAlso: AH=F0h,AH=F3h
  22343. --------b-16F2-------------------------------
  22344. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  22345.     AH = F2h
  22346. Return: AL = type
  22347.         00h if 11-bit AT keyboard is in use
  22348.         01h if 9-bit PC keyboard is in use
  22349.     AH = 00h (04/08/93 system ROM)
  22350. --------b-16F3-------------------------------
  22351. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  22352.     AH = F3h
  22353.     AL = new limit
  22354.         00h limit is 6 Mhz
  22355.         01h limit is 8 Mhz/6 Mhz
  22356. SeeAlso: AH=F0h,AH=F1h
  22357. --------U-16F398-----------------------------
  22358. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  22359.     AX = F398h
  22360. Return: AX = 6A73h ("js")
  22361.     BH = scan code of current hot key
  22362.     BL = ASCII code of current hot key
  22363. Note:    NG.EXE was written by John Socha
  22364. --------b-16F400-----------------------------
  22365. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  22366.     AX = F400h
  22367. Return: AH = E2h
  22368.     AL = status
  22369.         00h not present
  22370.         01h enabled
  22371.         02h disabled
  22372. SeeAlso: AX=F401h,AX=F402h
  22373. --------b-16F401-----------------------------
  22374. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  22375.     AX = F401h
  22376. Return: AX = E201h
  22377. SeeAlso: AX=F400h,AX=F402h
  22378. --------b-16F402-----------------------------
  22379. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  22380.     AX = F402h
  22381. Return: AX = E202h
  22382. SeeAlso: AX=F400h,AX=F401h
  22383. --------v-16FA00DX5945-----------------------
  22384. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  22385.     AX = FA00h
  22386.     DX = 5945h
  22387. Return: CF clear
  22388.     DI = 4559h
  22389.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  22390.         FFFFh if disabled
  22391. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  22392. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  22393. --------v-16FA01DX5945-----------------------
  22394. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  22395.     AX = FA01h
  22396.     DX = 5945h
  22397. Return: CF clear if successful
  22398.     DI = 4559h
  22399. SeeAlso: AX=FA00h
  22400. --------v-16FA02DX5945-----------------------
  22401. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  22402.     AX = FA02h
  22403.     DX = 5945h
  22404.     BL = new parameter flags (see #0429)
  22405. Return: CF clear
  22406.     DI = 4559h
  22407.     CL = old value of parameter flags
  22408.  
  22409. Bitfields for VSAFE/VWATCH parameter flags:
  22410. Bit(s)    Description    (Table 0429)
  22411.  7    Protect executable files
  22412.  6    Protect FD boot sector
  22413.  5    Protect HD boot sector
  22414.  4    Boot sector viruses
  22415.  3    Check executable files
  22416.  2    General write protect
  22417.  1    Resident
  22418.  0    HD Low level format
  22419. --------v-16FA03DX5945-----------------------
  22420. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  22421.     AX = FA03h
  22422.     DX = 5945h
  22423. Return: CF clear
  22424.     DI = 4559h
  22425.     AX = 0002h
  22426. --------v-16FA04DX5945-----------------------
  22427. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  22428.     AX = FA04h
  22429.     DX = 5945h
  22430. Return: CF clear
  22431.     DI = 4559h
  22432.     BL = hotkey disable flag (nonzero if hotkey disabled)
  22433. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  22434. SeeAlso: AX=FA00h,AX=FA05h
  22435. --------v-16FA05DX5945-----------------------
  22436. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  22437.     AX = FA05h
  22438.     DX = 5945h
  22439.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  22440. Return: CF clear
  22441.     DI = 4559h
  22442. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  22443. SeeAlso: AX=FA00h,AX=FA04h
  22444. --------v-16FA06DX5945-----------------------
  22445. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  22446.     AX = FA06h
  22447.     DX = 5945h
  22448. Return: CF clear
  22449.     DI = 4559h
  22450.     BL = test status
  22451.         00h don't monitor network drives (default for VWATCH v2.1)
  22452.         FFh monitor network drives (default for VSAFE v2.0)
  22453.     CL = ??? (only VSAFE 2.0)
  22454. SeeAlso: AX=FA07h
  22455. --------v-16FA07DX5945-----------------------
  22456. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  22457.     AX = FA07h
  22458.     DX = 5945h
  22459.     BL = new state
  22460.         00h don't monitor
  22461.         01h monitor network drives
  22462. Return: CF clear
  22463.     DI = 4559h
  22464. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  22465. SeeAlso: AX=FA00h,AX=FA06h
  22466. --------v-16FA08DX5945-----------------------
  22467. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  22468.     AX = FA08h
  22469.     DX = 5945h
  22470. Return: CF clear
  22471.     DI = 4559h
  22472.     AX = ??? (0002h)
  22473.     BX = version (BH=major, BL=two-digit minor)
  22474. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  22475. SeeAlso: AX=FA00h,AX=FA06h
  22476. --------U-16FE55-----------------------------
  22477. INT 16 U - PC Tools v8+ programs - GET ???
  22478.     AX = FE55h
  22479.     CX = segment of resident program or 0000h for last loaded
  22480.     DX = 0000h
  22481. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  22482.     AX = ??? or 0000h
  22483. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  22484.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  22485.       seem to hook it merely to return the same AX as the CPTASK loaded
  22486.       prior to them returned
  22487. --------U-16FEA4-----------------------------
  22488. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  22489.     AX = FEA4h
  22490. Return: nothing
  22491. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  22492.       code in DESKTOP
  22493. SeeAlso: AX=FFA4h
  22494. --------U-16FEC6-----------------------------
  22495. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  22496.     AX = FEC6h
  22497.     BL = new state (00h enabled, nonzero disabled)
  22498. Return: nothing
  22499. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  22500.       be honored
  22501. --------U-16FED3-----------------------------
  22502. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  22503.     AX = FED3h
  22504.     DS:SI -> 92-byte data record for ???
  22505. Return: ???
  22506. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  22507.       code in DESKTOP
  22508. SeeAlso: AX=FFD3h
  22509. --------U-16FEDC-----------------------------
  22510. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  22511.     AX = FEDCh
  22512. Return: AX,DX destroyed
  22513. Index:    uninstall;CPSCHED
  22514. --------U-16FEEFCX0000-----------------------
  22515. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  22516.     AX = FEEFh
  22517.     CX = 0000h
  22518. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  22519.         BX = segment of resident portion
  22520.         DX = (CPSCHED v8.0) resident CS
  22521. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  22522.       code in DESKTOP
  22523. SeeAlso: AX=FFEFh
  22524. --------U-16FEF1-----------------------------
  22525. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  22526.     AX = FEF1h
  22527.     BX = ???
  22528. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  22529.     DX = 5555h
  22530. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  22531.       code in DESKTOP
  22532. SeeAlso: AX=FFF1h
  22533. --------K-16FF-------------------------------
  22534. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  22535.     AH = FFh
  22536.     DX = scan code
  22537. Return: AL = status
  22538.         00h success
  22539.         01h failure
  22540. Program: KBUF is a keyboard buffer expander by Mark Adler
  22541. SeeAlso: AH=05h
  22542. --------V-16FF-------------------------------
  22543. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  22544.     AH = FFh
  22545. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  22546.     AL+1 = Zoom interrupt number
  22547.     BX = hotkey
  22548. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  22549.       the default hot key is F10
  22550.     not all vendors include the Tseng TSR which supports these functions
  22551. SeeAlso: INT 60"OPTIMA"
  22552. Index:    hotkeys;OPTIMA 1024 VGA
  22553. --------d-16FF70BX0000-----------------------
  22554. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  22555.     AX = FF70h
  22556.     BX = 0000h
  22557.     CX = 4C69h ('Li')
  22558.     DX = 6E6Bh ('nk')
  22559. Return: AX = 0000h
  22560.     CX = 4350h ('CP')
  22561.     DH = major version
  22562.     DL = minor version
  22563. Program: DRIVEMAP is a redirector which allows drives on computers connected
  22564.       over the parallel or serial ports to appear as local drives
  22565. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  22566. --------d-16FF70BX0001-----------------------
  22567. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  22568.     AX = FF70h
  22569.     BX = 0001h
  22570.     DL = ???
  22571. Return: AX = ???
  22572.     DH = ???
  22573. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  22574. --------d-16FF70BX0002-----------------------
  22575. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  22576.     AX = FF70h
  22577.     BX = 0002h
  22578.     CX = ???
  22579.     DX = ???
  22580. Return: AX = ??? or FFFEh/FFFFh on error
  22581.     DL = ???
  22582. BUG:    DRIVEMAP will branch to random locations for BX values other than
  22583.       those listed above for v8.0-9.0 because a) the incorrect register is
  22584.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  22585.       function numbers, and b) the conditional which branches on invalid
  22586.       function numbers jumps to the following instruction, becoming a NOP
  22587. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  22588. Index:    installation check;DRIVEMAP
  22589. --------T-16FF80BX0000-----------------------
  22590. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  22591.     AX = FF80h
  22592.     BX = 0000h
  22593.     CX = 0000h
  22594.     DX = 0000h
  22595. Return: CX = 5555h if installed
  22596. Program: CPTASK is a task switcher by Central Point Software
  22597. --------T-16FF80BX0001-----------------------
  22598. INT 16 U - PC Tools v8+ CPTASK - GET ???
  22599.     AX = FF80h
  22600.     BX = 0001h
  22601.     ???
  22602. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  22603.     BX = ??? (PSP segment of resident code???)
  22604. --------T-16FF80BX0002-----------------------
  22605. INT 16 U - PC Tools v8+ CPTASK - GET ???
  22606.     AX = FF80h
  22607.     BX = 0002h
  22608. Return: DX:SI -> ???
  22609. --------T-16FF80BX0003-----------------------
  22610. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  22611.     AX = FF80h
  22612.     BX = 0003h
  22613. Return: AX = flags (see #0430)
  22614. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  22615.  
  22616. Bitfields for CPTASK flags:
  22617. Bit(s)    Description    (Table 0430)
  22618.  10    ???
  22619.  13    ???
  22620.  14    ???
  22621.  15    ???
  22622. --------T-16FF80BX0004-----------------------
  22623. INT 16 U - PC Tools v8+ CPTASK - SET ???
  22624.     AX = FF80h
  22625.     BX = 0004h
  22626.     CX = new value of ???
  22627. Return: ???
  22628. Note:    this function also sets bit 14 of the flags word returned by
  22629.       AX=FF80h/BX=0003h
  22630. --------T-16FF80BX0005-----------------------
  22631. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  22632.     AX = FF80h
  22633.     BX = 0005h
  22634. Return: AX = number of active tasks???
  22635. --------T-16FF80BX0006-----------------------
  22636. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  22637.     AX = FF80h
  22638.     BX = 0006h
  22639. Return: AX = old state (0000h clear, 0001h set)
  22640. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  22641. --------T-16FF80BX0007-----------------------
  22642. INT 16 U - PC Tools v8+ CPTASK - ???
  22643.     AX = FF80h
  22644.     BX = 0007h
  22645.     ES:DI -> ???
  22646.     ???
  22647. Return: ???
  22648. --------T-16FF80BX0008-----------------------
  22649. INT 16 U - PC Tools v8+ CPTASK - ???
  22650.     AX = FF80h
  22651.     BX = 0008h
  22652.     ???
  22653. Return: ???
  22654. --------T-16FF80BX0009-----------------------
  22655. INT 16 U - PC Tools v8+ CPTASK - GET ???
  22656.     AX = FF80h
  22657.     BX = 0009h
  22658. Return: CL = ???
  22659.     CH = ??? (01h or 02h)
  22660. --------T-16FF80BX000A-----------------------
  22661. INT 16 U - PC Tools v9+ CPTASK - SET ???
  22662.     AX = FF80h
  22663.     BX = 000Ah
  22664.     DS:SI -> 128-byte buffer containing ???
  22665. --------T-16FF80BX000B-----------------------
  22666. INT 16 U - PC Tools v9+ CPTASK - SET ???
  22667.     AX = FF80h
  22668.     BX = 000Bh
  22669.     DX = index of ??? task (1-10)
  22670. --------T-16FF80BX000C-----------------------
  22671. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  22672.     AX = FF80h
  22673.     BX = 000Ch
  22674.     CX = new delay time in minutes
  22675. --------T-16FF80BX4350-----------------------
  22676. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  22677.     AX = FF80h
  22678.     BX = 4350h ('CP')
  22679.     CX = 5354h ('ST')
  22680. Return: never returns; terminates all tasks and exits to program originally
  22681.       calling CPTASK
  22682. --------U-16FF90-----------------------------
  22683. INT 16 U - PC Tools v8+ DESKTOP - ???
  22684.     AX = FF90h
  22685.     ???
  22686. Return: ???
  22687. Note:    available only when popped up
  22688. --------U-16FF91-----------------------------
  22689. INT 16 U - PC Tools v7+ DESKTOP - ???
  22690.     AX = FF91h
  22691.     ???
  22692. Return: AX = 0000h
  22693. Note:    calls AX=FFFDh after ???
  22694. SeeAlso: AX=FF92h,AX=FFFDh
  22695. --------U-16FF92-----------------------------
  22696. INT 16 U - PC Tools v7+ DESKTOP - ???
  22697.     AX = FF92h
  22698.     ???
  22699. Return: AX = 0000h
  22700. Note:    like AX=FF91h, but temporarily sets ??? to 3
  22701. SeeAlso: AX=FF91h,AX=FFFDh
  22702. --------U-16FF93-----------------------------
  22703. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  22704.     AX = FF93h
  22705. --------U-16FF94-----------------------------
  22706. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  22707.     AX = FF94h
  22708.     CX = ??? (default 0017h)
  22709. --------U-16FF95-----------------------------
  22710. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  22711.     AX = FF95h
  22712.     BX = ???
  22713. --------U-16FF96-----------------------------
  22714. INT 16 U - PC Tools v7+ DESKTOP - ???
  22715.     AX = FF96h
  22716.     CL = ???
  22717. Return: AX = ???
  22718. --------U-16FF97-----------------------------
  22719. INT 16 U - PC Tools v7+ DESKTOP - ???
  22720.     AX = FF97h
  22721.     DS:DX -> buffer for ??? (see #0431)
  22722. Return: ???
  22723.  
  22724. Format of PC Tools DESKTOP buffer:
  22725. Offset    Size    Description    (Table 0431)
  22726.  00h 48 BYTEs    ???
  22727.  30h 128 BYTEs    ???
  22728. --------U-16FF98-----------------------------
  22729. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  22730.     AX = FF98h
  22731.     DX = byte offset in file of overlay header (see #0432)
  22732. Return: BX = file handle for DESK.OVL file
  22733. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  22734.       overlay header, and seek to the offset specified by the header
  22735.  
  22736. Format of PC Tools DESKTOP overlay header:
  22737. Offset    Size    Description    (Table 0432)
  22738.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  22739.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  22740. --------U-16FF99-----------------------------
  22741. INT 16 U - PC Tools v7+ DESKTOP - ???
  22742.     AX = FF99h
  22743.     ???
  22744. Return: ???
  22745. --------U-16FF9A-----------------------------
  22746. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  22747.     AX = FF9Ah
  22748. Return: ES:BX -> name of current color scheme
  22749. Note:    available even if not popped up
  22750. --------U-16FF9B-----------------------------
  22751. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  22752.     AX = FF9Bh
  22753. Return: ???
  22754. Note:    sounds triple-length beep
  22755. --------T-16FF9C-----------------------------
  22756. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  22757.     AX = FF9Ch
  22758.     BL = function
  22759.         00h set ??? pointer
  22760.         DS:SI -> ???
  22761.         01h clear pointer to 0000h:0000h
  22762. ----------16FF9D-----------------------------
  22763. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  22764.     AX = FF9Dh
  22765.     ES:BX -> ??? word
  22766. Return: ???
  22767. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  22768.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  22769.       flag is always cleared if ES=0000h.
  22770. --------U-16FF9E-----------------------------
  22771. INT 16 U - PC Tools v7+ DESKTOP - ???
  22772.     AX = FF9Eh
  22773.     DL = ???
  22774.         bit 7: ???
  22775.         bits 6-0: function number??? (00h,01h,other)
  22776.     ???
  22777. Return: ???
  22778. --------U-16FFA1-----------------------------
  22779. INT 16 U - PC Tools v7+ DESKTOP - ???
  22780.     AX = FFA1h
  22781.     ???
  22782. Return: ???
  22783. Note:    same as AX=FFA2h, except ??? set to FFh
  22784. SeeAlso: AX=FFA2h
  22785. --------U-16FFA2-----------------------------
  22786. INT 16 U - PC Tools v7+ DESKTOP - ???
  22787.     AX = FFA2h
  22788.     ???
  22789. Return: ???
  22790. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  22791. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  22792. --------y-16FFA3BX0000-----------------------
  22793. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  22794.     AX = FFA3h
  22795.     BX = 0000h
  22796.     CX = 0000h
  22797. Return: AX = segment of resident code
  22798.     BX = 5555h
  22799.     CX = 5555h
  22800. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  22801. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  22802. --------y-16FFA3BX0001-----------------------
  22803. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  22804.     AX = FFA3h
  22805.     BX = 0001h
  22806.     CX = 0001h
  22807. Return: AX:BX -> ???
  22808.     CX = BX
  22809. --------y-16FFA3BX0002-----------------------
  22810. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  22811.     AX = FFA3h
  22812.     BX = 0002h
  22813.     CX = 0002h
  22814. Return: AX = ??? (0 or 1)
  22815.     CX = BX = AX
  22816. --------y-16FFA3BX0003-----------------------
  22817. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  22818.     AX = FFA3h
  22819.     BX = 0003h
  22820.     CX = 0003h
  22821. Return: AX = ??? (0 or 1)
  22822.     CX = BX = AX
  22823. --------y-16FFA3BX0004-----------------------
  22824. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  22825.     AX = FFA3h
  22826.     BX = 0004h
  22827.     CX = 0004h
  22828. SeeAlso: AX=FFA3h/BX=0005h
  22829. --------y-16FFA3BX0005-----------------------
  22830. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  22831.     AX = FFA3h
  22832.     BX = 0005h
  22833.     CX = 0005h
  22834. SeeAlso: AX=FFA3h/BX=0004h
  22835. --------y-16FFA3BX0006-----------------------
  22836. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  22837.     AX = FFA3h
  22838.     BX = 0006h
  22839.     CX = 0006h
  22840.     DX = current PSP segment as known to DOS??? or 0000h
  22841. ----------16FFA3BXFFA3-----------------------
  22842. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  22843.     AX = FFA3h
  22844.     BX = FFA3h
  22845.     CX = FFA3h
  22846. Return: BX = CX = 5555h if installed
  22847.         AX = resident code segment
  22848. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  22849.       access indicator on the screen; in v7 and v8, this function was
  22850.       provided by DATAMON
  22851. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  22852. --------U-16FFA4-----------------------------
  22853. INT 16 U - PC Tools v7-8 DESKTOP - ???
  22854.     AX = FFA4h
  22855. Return: ???
  22856. Notes:    available even when not popped up
  22857.     sets unknown flag if ??? conditions met
  22858. SeeAlso: AX=FEA4h
  22859. --------c-16FFA5CX1111-----------------------
  22860. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  22861.     AX = FFA5h
  22862.     CX = 1111h
  22863. Return: CH = 00h if installed
  22864.         ES:DI -> internal data (see #0433)
  22865.         CL = cache state
  22866.         01h enabled
  22867.         02h disabled
  22868. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  22869.  
  22870. Format of PC-Cache internal data:
  22871. Offset    Size    Description    (Table 0433)
  22872. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  22873.         each byte is either blank (20h) or drive letter (41h-54h)
  22874.  -8    BYTE    ???
  22875.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  22876.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  22877.  -3   3 BYTEs    ???
  22878. --------c-16FFA5CXAAAA-----------------------
  22879. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  22880.     AX = FFA5h
  22881.     CX = AAAAh
  22882. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  22883. SeeAlso: AX=FFA5h/CX=CCCCh
  22884. --------c-16FFA5CXCCCC-----------------------
  22885. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  22886.     AX = FFA5h
  22887.     CX = CCCCh
  22888. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  22889. Note:    delayed writes are automatically disabled on EXECing
  22890.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  22891.       however, delayed writes are not automatically reenabled upon the
  22892.       program's termination in v6.
  22893. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  22894. --------c-16FFA5CXDDDD-----------------------
  22895. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  22896.     AX = FFA5h
  22897.     CX = DDDDh
  22898. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  22899. --------c-16FFA5CXEEEE-----------------------
  22900. INT 16 - PC-Cache v6+ - ENABLE CACHE
  22901.     AX = FFA5h
  22902.     CX = EEEEh
  22903. SeeAlso: AX=FFA5h/CX=DDDDh
  22904. --------c-16FFA5CXFFFF-----------------------
  22905. INT 16 - PC-Cache v6+ - FLUSH CACHE
  22906.     AX = FFA5h
  22907.     CX = FFFFh
  22908. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  22909. --------U-16FFA6-----------------------------
  22910. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  22911.     AX = FFA6h
  22912. Return: DS:SI -> ???
  22913. Note:    available only when popped up
  22914. --------U-16FFA7-----------------------------
  22915. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  22916.     AX = FFA7h
  22917. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  22918. --------U-16FFA8-----------------------------
  22919. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  22920.     AX = FFA8h
  22921.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  22922.     ???
  22923. Return: ???
  22924. Notes:    available only when popped up
  22925.     strings copied into internal buffer, among other actions
  22926. --------U-16FFA9-----------------------------
  22927. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  22928.     AX = FFA9h
  22929. Return: DS:SI -> version string
  22930. --------U-16FFAA-----------------------------
  22931. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  22932.     AX = FFAAh
  22933.     ???
  22934. Return: ???
  22935. Note:    available only when popped up
  22936. --------U-16FFAB-----------------------------
  22937. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  22938.     AX = FFABh
  22939. Return: DS:SI -> editor setting strings???
  22940. --------U-16FFAC-----------------------------
  22941. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  22942.     AX = FFACh
  22943.     DL = ???
  22944. Note:    available only when popped up
  22945. --------U-16FFAD-----------------------------
  22946. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  22947.     AX = FFADh
  22948.     DL = ???
  22949. --------U-16FFAE-----------------------------
  22950. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  22951.     AX = FFAEh
  22952. Return: AL = ???
  22953. --------U-16FFAF-----------------------------
  22954. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  22955.     AX = FFAFh
  22956.     DL = ???
  22957. --------U-16FFB0-----------------------------
  22958. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  22959.     AX = FFB0h
  22960.     BL = ???
  22961. --------U-16FFB1-----------------------------
  22962. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  22963.     AX = FFB1h
  22964.     ???
  22965. Return: ???
  22966. --------U-16FFB2-----------------------------
  22967. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  22968.     AX = FFB2h
  22969. Return: DS:SI -> ???
  22970. --------U-16FFB3-----------------------------
  22971. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  22972.     AX = FFB3h
  22973.     ???
  22974. Return: ???
  22975. Note:    available only when popped up
  22976. --------U-16FFB4-----------------------------
  22977. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  22978.     AX = FFB4h
  22979. Note:    available only when popped up
  22980. SeeAlso: AX=FFBBh
  22981. --------U-16FFB5-----------------------------
  22982. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  22983.     AX = FFB5h
  22984.     BX = window specifier (000Fh to 0019h) (see #0434)
  22985.     DX = 0000h get, nonzero = set
  22986.     ES:DI -> window parameter buffer (see #0435)
  22987. SeeAlso: AX=FFCBh
  22988.  
  22989. (Table 0434)
  22990. Values for PC Tools DESKTOP window specifier:
  22991.  000Fh    comm/FAX
  22992.  0014h    hotkey selection
  22993.  0015h    ASCII table
  22994.  0016h    system colors menu
  22995.  
  22996. Format of PC Tools DESKTOP window parameters:
  22997. Offset    Size    Description    (Table 0435)
  22998.  00h    BYTE    rows in window, not counting frame
  22999.  01h    BYTE    columns in window, not counting frame
  23000.  02h    BYTE    row number of top of window
  23001.  03h    BYTE    2*column number of left of window
  23002.  04h    BYTE    character attribute for ???
  23003.  05h    BYTE    character attribute for background/border
  23004.  06h    BYTE    character attribute for ???
  23005.  07h    DWORD    pointer to ??? on screen
  23006.  0Bh  4 BYTEs    ???
  23007.  0Fh    BYTE    nonzero if window may be resized
  23008. Note:    if running in monochrome mode, character attributes at offsets 04h to
  23009.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  23010.       are changed to 07h on reading
  23011. --------U-16FFB6-----------------------------
  23012. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  23013.     AX = FFB6h
  23014. Return: AH = ???
  23015.     AL = ???
  23016. --------U-16FFB7-----------------------------
  23017. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  23018.     AX = FFB7h
  23019.     BX = direction
  23020.         0000h copy to buffer
  23021.         else  copy from buffer
  23022.     DS:SI -> 70-byte buffer with ???
  23023. Return: data copied
  23024. Note:    available only when popped up under v6.0+
  23025. --------U-16FFB8-----------------------------
  23026. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  23027.     AX = FFB8h
  23028.     BH = subfunction
  23029.         00h get
  23030.         Return: BL = old value of ???
  23031.             CL = old value of ??? (v6.0+)
  23032.             CH = old value of ??? (v6.0+)
  23033.         nonzero set
  23034.         BL = new value for ???
  23035.         CL = new value for ??? (v6.0+)
  23036.         CH = new value for ??? (v6.0+)
  23037.         DH = ???
  23038.         Return: AL = old value replaced by CL (v6.0+)
  23039.             AH = old value replaced by CH (v6.0+)
  23040. --------U-16FFB9-----------------------------
  23041. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23042.     AX = FFB9h
  23043.     ???
  23044. Return: AX = ???
  23045.     CX = ???
  23046.     DS:SI -> ???
  23047.     ES:DI -> ???
  23048. --------U-16FFBA-----------------------------
  23049. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23050.     AX = FFBAh
  23051.     ???
  23052. Return: AX = ???
  23053. Note:    available only when popped up
  23054. --------U-16FFBB-----------------------------
  23055. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  23056.     AX = FFBBh
  23057. Note:    available only when popped up
  23058. SeeAlso: AX=FFB4h
  23059. --------U-16FFBC-----------------------------
  23060. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  23061.     AX = FFBCh
  23062. --------U-16FFBD-----------------------------
  23063. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  23064.     AX = FFBDh
  23065.     ???
  23066. Return: ???
  23067. --------U-16FFBE-----------------------------
  23068. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23069.     AX = FFBEh
  23070.     ???
  23071. Return: ???
  23072. Note:    available only when popped up
  23073. --------U-16FFBF-----------------------------
  23074. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23075.     AX = FFBFh
  23076.     BX = DOS file handle to write on
  23077.     ???
  23078. Return: ???
  23079. Note:    available only when popped up
  23080. --------U-16FFC0-----------------------------
  23081. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23082.     AX = FFC0h
  23083.     ???
  23084. Return: AX = 0000h if successful
  23085.     AX = FFFFh on error
  23086. Note:    available only when popped up
  23087. --------U-16FFC1-----------------------------
  23088. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23089.     AX = FFC1h
  23090.     BL = ???
  23091.     ES:DI -> data structure (see #0436)
  23092.     ???
  23093. Return: AX = ???
  23094. Note:    available only when popped up
  23095. SeeAlso: AX=FFC2h,AX=FFC3h
  23096.  
  23097. Format of PC Tools DESKTOP data structure:
  23098. Offset    Size    Description    (Table 0436)
  23099.  00h    WORD    ???
  23100.  02h    WORD    ???
  23101.  04h    WORD    ???
  23102.  06h    WORD    ???
  23103.  08h    WORD    ???
  23104.  0Ah    BYTE    ???
  23105.  0Bh    BYTE    ??? (zero/nonzero)
  23106. ---v7.1---
  23107.  0Ch    WORD    ???
  23108.  0Eh    BYTE    ???
  23109.  0Fh    WORD    ???
  23110.  11h    WORD    ???
  23111.     ???
  23112. --------U-16FFC2-----------------------------
  23113. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23114.     AX = FFC2h
  23115.     BL = ???
  23116.     ES:DI -> data structure (see #0436)
  23117.     ???
  23118. Return: AH = ???
  23119.     CX = ???
  23120.     DH = ???
  23121.     DL = ???
  23122. Note:    available only when popped up
  23123. SeeAlso: AX=FFC1h,AX=FFC3h
  23124. --------U-16FFC3-----------------------------
  23125. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23126.     AX = FFC3h
  23127.     BL = ???
  23128.     ES:DI -> data structure (see #0436)
  23129.     ???
  23130. Return: AH = ???
  23131.     CX = ???
  23132.     DH = ???
  23133.     DL = ???
  23134. Note:    available only when popped up
  23135. SeeAlso: AX=FFC1h,AX=FFC2h
  23136. --------U-16FFC4-----------------------------
  23137. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  23138.     AX = FFC4h
  23139. Return: AL = ???
  23140.     BX = segment of scratch space???
  23141.     CX = segment of stored screen data (section covered by window???)
  23142.     DX = segment of window parameters for ???
  23143.     ES:BP -> ???
  23144. Note:    available only when popped up in versions prior to 6.0
  23145. --------U-16FFC5-----------------------------
  23146. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  23147.     AX = FFC5h
  23148. Return: BL = Desktop state
  23149.         00h if nonresident
  23150.         nonzero if loaded resident
  23151. Note:    available only when popped up; should call AX=FFEFh first to ensure
  23152.       that DESKTOP is active
  23153. SeeAlso: AX=FFEFh,AX=FFF3h
  23154. --------U-16FFC6-----------------------------
  23155. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  23156.     AX = FFC6h
  23157.     BL = new value for ???
  23158. --------U-16FFC7-----------------------------
  23159. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  23160.     AX = FFC7h
  23161.     ???
  23162. Return: ???
  23163. --------U-16FFC8-----------------------------
  23164. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  23165.     AX = FFC8h
  23166. Return: DS:SI -> ???
  23167. Note:    valid only while popped up
  23168. --------U-16FFC9-----------------------------
  23169. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  23170.     AX = FFC9h
  23171.     DS:SI -> characters to store in clipboard
  23172.     CX = size in bytes
  23173. Return: CF set on error
  23174. Notes:    available only when popped up
  23175.     while copying, bytes of 00h and 0Ah are skipped
  23176. --------U-16FFCA-----------------------------
  23177. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  23178.     AX = FFCAh
  23179.     DX = ???
  23180. Return: AX destroyed
  23181. Note:    available only when popped up
  23182. --------U-16FFCB-----------------------------
  23183. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  23184.     AX = FFCBh
  23185.     DX = window specifier???
  23186. Return: AX destroyed
  23187. Note:    available only when popped up
  23188. SeeAlso: AX=FFB5h
  23189. --------U-16FFCC-----------------------------
  23190. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  23191.     AX = FFCCh
  23192.     DS:SI -> ASCIZ string
  23193. Return: AX = ???
  23194.     CX = ???
  23195.     ES:DI -> address past last character displayed (v5.1/5.5)
  23196.           -> ??? on menu bar (v6.0)
  23197. --------U-16FFCD-----------------------------
  23198. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23199.     AX = FFCDh
  23200.     DS:DX -> ???
  23201. Return: ???
  23202. Note:    available only when popped up
  23203. --------U-16FFCE-----------------------------
  23204. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  23205.     AX = FFCEh
  23206.     CX = ???
  23207. Return: nothing???
  23208. --------U-16FFCF-----------------------------
  23209. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  23210.     AX = FFCFh
  23211. Note:    available only when popped up
  23212. --------U-16FFD0-----------------------------
  23213. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  23214.     AX = FFD0h
  23215.     ???
  23216. Return: ???
  23217. Note:    available only when popped up
  23218. --------U-16FFD1-----------------------------
  23219. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  23220.     AX = FFD1h
  23221. Return: BX = number of copies
  23222.     DX = destination
  23223.         00h cancel
  23224.         01h LPT1
  23225.         02h LPT2
  23226.         03h LPT3
  23227.         04h COM1
  23228.         05h COM2
  23229.         06h disk file
  23230. Note:    available only when popped up
  23231. --------U-16FFD2-----------------------------
  23232. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23233.     AX = FFD2h
  23234.     BX = ???
  23235. Return: BL = ???
  23236. Note:    available only when popped up
  23237. --------U-16FFD3-----------------------------
  23238. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23239.     AX = FFD3h
  23240.     DS:SI -> 92-byte data record for ???
  23241. Return: ???
  23242. SeeAlso: AX=FED3h
  23243. --------U-16FFD4BH3C-------------------------
  23244. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  23245.     AX = FFD4h
  23246.     BH = 3Ch create file (with no attributes)
  23247.          3Dh open file
  23248.          41h delete file
  23249.     BL = access mode
  23250.          00h read only
  23251.          01h write only
  23252.          02h read/write
  23253.     DS:SI -> ASCIZ filename
  23254. Return: BX = file handle
  23255.         0000h on error
  23256. Note:    operation is attempted in (in order) the directory from which the
  23257.       desktop was started/run???, the directory specified with the
  23258.       filename, X:\PCTOOLS\, and X:\
  23259. --------U-16FFD5-----------------------------
  23260. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23261.     AX = FFD5h
  23262.     ???
  23263. Return: ???
  23264. Note:    available only when popped up
  23265. --------U-16FFD6-----------------------------
  23266. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23267.     AX = FFD6h
  23268.     BX = ???
  23269.     CX = ???
  23270.     DX = offset in ???
  23271.     ???
  23272. Return: ???
  23273. Note:    available only when popped up
  23274. --------U-16FFD7-----------------------------
  23275. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23276.     AX = FFD7h
  23277.     ???
  23278. Return: BL = ???
  23279. Note:    available only when popped up
  23280. --------U-16FFD8-----------------------------
  23281. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  23282.     AX = FFD8h
  23283.     DS:BX -> ASCIZ filename
  23284. Return: BX = file handle
  23285.         0000h on error
  23286. Note:    pops up confirmation menu if file already exists
  23287.     only available when popped up???
  23288. --------U-16FFD9-----------------------------
  23289. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  23290.     AX = FFD9h
  23291. Return: AX = ???
  23292. Note:    available only when popped up
  23293. --------U-16FFDA-----------------------------
  23294. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  23295.     AX = FFDAh
  23296.     DS:SI -> ??? (v5.1/5.5 only)
  23297. Return: DS:SI -> filename
  23298. --------U-16FFDB-----------------------------
  23299. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  23300.     AX = FFDBh
  23301.     BL = ???
  23302. Note:    available only when popped up
  23303. --------U-16FFDC-----------------------------
  23304. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  23305.     AX = FFDCh
  23306. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  23307.       original values
  23308. Index:    uninstall;PC Tools DESKTOP
  23309. --------U-16FFDDBX0000-----------------------
  23310. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  23311.     AX = FFDDh
  23312.     BX = 0000h
  23313. Return: CX = 5555h
  23314.     DX = 5555h if PCShell installed in resident mode
  23315. --------U-16FFDDBX0001-----------------------
  23316. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  23317.     AX = FFDDh
  23318.     BX = 0001h
  23319. Return: CF clear if request successful (PCShell will pop up)
  23320.     CF set on error
  23321. SeeAlso: AX=FFDDh/BX=0003h
  23322. --------U-16FFDDBX0002-----------------------
  23323. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  23324.     AX = FFDDh
  23325.     BX = 0002h
  23326. Return: AL =
  23327.         00h ???
  23328.         01h ???
  23329. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  23330.       awaits a keystroke, and aborts the current process
  23331. --------U-16FFDDBX0003-----------------------
  23332. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  23333.     AX = FFDDh
  23334.     BX = 0003h
  23335. SeeAlso: AX=FFDDh/BX=0001h
  23336. --------U-16FFDDBX0004-----------------------
  23337. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  23338.     AX = FFDDh
  23339.     BX = 0004h
  23340. Return: CF clear if successful
  23341.         DS:SI -> ???
  23342. --------U-16FFDDBX0005-----------------------
  23343. INT 16 U - PC Tools v5.1+ PCShell API - ???
  23344.     AX = FFDDh
  23345.     BX = 0005h
  23346.     ???
  23347. Return: ???
  23348. Note:    resets various variables if certain conditions are met
  23349. --------U-16FFDDBX0006-----------------------
  23350. INT 16 U - PC Tools v5.1+ PCShell API - ???
  23351.     AX = FFDDh
  23352.     BX = 0006h
  23353.     ???
  23354. Return: ???
  23355. Note:    resets various variables if certain conditions are met
  23356. --------U-16FFDDBX0007-----------------------
  23357. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  23358.     AX = FFDDh
  23359.     BX = 0007h
  23360. Return: CF clear if successful
  23361. SeeAlso: AX=FFDDh/BX=0008h
  23362. --------U-16FFDDBX0008-----------------------
  23363. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  23364.     AX = FFDDh
  23365.     BX = 0008h
  23366. Return: CF undefined
  23367. SeeAlso: AX=FFDDh/BX=0007h
  23368. --------U-16FFDDBX0009-----------------------
  23369. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  23370.     AX = FFDDh
  23371.     BX = 0009h
  23372. Return: CF clear if successful
  23373.         DS:SI -> list of pointers (see #0437)
  23374.  
  23375. Format of PC Tools PCShell returned pointer list:
  23376. Offset    Size    Description    (Table 0437)
  23377.  00h    WORD    offset of WORD containing ???
  23378.  02h    WORD    offset of name of program to execute
  23379.  04h    WORD    offset of 80-byte buffer for ???
  23380.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  23381.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  23382. --------U-16FFDDBX000A-----------------------
  23383. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  23384.     AX = FFDDh
  23385.     BX = 000Ah
  23386. Return: CX = 5555h if running
  23387.     DX = 5555h
  23388. Note:    also sets a flag
  23389. --------U-16FFDDBX000B-----------------------
  23390. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  23391.     AX = FFDDh
  23392.     BX = 000Bh
  23393.     ???
  23394. Return: CX = 5555h if PCRUN active
  23395.     DX = 5555h
  23396. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  23397. --------U-16FFDE-----------------------------
  23398. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  23399.     AX = FFDEh
  23400.     DS:DX -> menu description (must be on a paragraph boundary)
  23401. Return: AX = ???
  23402.         AL seems to be the number of the selected button
  23403. Note:    available only when popped up
  23404. SeeAlso: AX=FFEEh
  23405. --------U-16FFDF-----------------------------
  23406. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23407.     AX = FFDFh
  23408.     ???
  23409. Return: ???
  23410. --------U-16FFE0-----------------------------
  23411. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23412.     AX = FFE0h
  23413.     CX = ???
  23414.     DX = ???
  23415. Note:    available only when popped up
  23416. --------U-16FFE1-----------------------------
  23417. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  23418.     AX = FFE1h
  23419. --------U-16FFE2-----------------------------
  23420. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23421.     AX = FFE2h
  23422.     DX = ???
  23423. Return: ???
  23424. Note:    available only when popped up
  23425. --------U-16FFE3-----------------------------
  23426. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  23427.     AX = FFE3h
  23428.     BL = character to print to currently open printer or print file
  23429. Return: CF set on error
  23430. Note:    available only when popped up
  23431. SeeAlso: INT 17/AH=00h
  23432. --------U-16FFE4-----------------------------
  23433. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23434.     AX = FFE4h
  23435.     DX = segment of ???
  23436. Return: ???
  23437. Note:    available only when popped up
  23438. --------U-16FFE5-----------------------------
  23439. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  23440.     AX = FFE5h
  23441.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  23442.     DX = segment of window parameters???
  23443. Return: AX = DOS file handle for file
  23444.         DS:DX -> filename???
  23445.         FFFFh if function cancelled by user
  23446. Note:    available only when popped up
  23447. SeeAlso: AX=FFDAh
  23448. --------U-16FFE6-----------------------------
  23449. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  23450.     AX = FFE6h
  23451. Return: AX = 0000h if no key available
  23452.          else  BIOS keycode
  23453. Notes:    available only when popped up
  23454.     invokes INT 28 idle interrupt before checking for key
  23455. --------U-16FFE7-----------------------------
  23456. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23457.     AX = FFE7h
  23458.     BX = segment of ???
  23459. Return: ???
  23460. Note:    available only when popped up
  23461. --------U-16FFE8-----------------------------
  23462. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  23463.     AX = FFE8h
  23464.     CX = number
  23465.     DH = attribute
  23466.     DS:SI -> destination for ASCII number
  23467. Return: DS:SI buffer filled in with alternating characters and attributes
  23468. --------U-16FFE9-----------------------------
  23469. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  23470.     AX = FFE9h
  23471. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  23472. Note:    available only when popped up
  23473. --------U-16FFEA-----------------------------
  23474. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  23475.     AX = FFEAh
  23476.     DS:SI -> counted string (count byte followed by string)
  23477. Return: ???
  23478. Note:    available only when popped up
  23479. --------U-16FFEB-----------------------------
  23480. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23481.     AX = FFEBh
  23482.     ???
  23483. Return: ???
  23484. --------U-16FFEC-----------------------------
  23485. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  23486.     AX = FFECh
  23487.     DS:SI -> FAR routine to ???
  23488.     BX = ???
  23489.     ???
  23490. Return: AX = keystroke
  23491.         FFFFh if F10 pressed to go to menu
  23492. Notes:    available only when popped up
  23493.     invokes INT 28 while waiting for keystroke
  23494.     F10 is hotkey to Desktop menu
  23495. Index:    hotkeys;PC Tools DESKTOP
  23496. --------U-16FFED-----------------------------
  23497. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  23498.     AX = FFEDh
  23499. Return: AX = ???
  23500. Note:    available only when popped up
  23501. --------U-16FFEE-----------------------------
  23502. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  23503.     AX = FFEEh
  23504.     DS:SI -> pulldown menu system description (see #0438)
  23505. Return: AX destroyed
  23506. Notes:    available only when popped up
  23507.     if the accessory does not need any menu items of its own, it should
  23508.       call AX=FFFAh instead
  23509. SeeAlso: AX=FFF7h,AX=FFFAh
  23510.  
  23511. Format of PC Tools DESKTOP pulldown menu system description:
  23512. Offset    Size    Description    (Table 0438)
  23513.  00h    WORD    offset of menu bar contents (counted string)
  23514.  02h    WORD    number of items on menu bar
  23515.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  23516.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  23517.  18h    WORD    offset of first menu definition (see #0439)
  23518.  1Ah    WORD    offset of second menu definition
  23519.     ...
  23520.  
  23521. Format of PC Tools DESKTOP menu definition:
  23522. Offset    Size    Description    (Table 0439)
  23523.  00h    WORD    offset of menu contents (see #0440)
  23524.  02h    WORD    number of entries in menu
  23525.  04h    for each entry:
  23526.         Offset    Size    Description
  23527.          00h    BYTE    scancode of Alt-key to invoke entry
  23528.          01h    BYTE    character to highlight (01h=first, etc)
  23529.          02h    WORD    offset of FAR routine to handle selection
  23530.  
  23531. Format of PC Tools DESKTOP menu contents:
  23532. Offset    Size    Description    (Table 0440)
  23533.  00h    BYTE    number of lines in menu
  23534.  01h    BYTE    width of menu
  23535.  02h  N BYTEs    counted strings, one for each line in menu
  23536. --------U-16FFEFCX0000-----------------------
  23537. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  23538.     AX = FFEFh
  23539.     CX = 0000h
  23540. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  23541.         BX = segment of resident portion
  23542.         AX = ??? (v5.1/5.5 only)
  23543. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  23544. --------U-16FFF0-----------------------------
  23545. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  23546.     AX = FFF0h
  23547.     DX = ???
  23548. Return: AX destroyed
  23549. Note:    available only when popped up
  23550. --------U-16FFF1BX0000-----------------------
  23551. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  23552.     AX = FFF1h
  23553.     BX = 0000h  leave ??? flag as is
  23554.         nonzero set ??? flag
  23555. Return: CX = 5555h if installed
  23556.     DX = 5555h
  23557. --------U-16FFF2-----------------------------
  23558. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  23559.     AX = FFF2h
  23560.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  23561.         or help text
  23562. Return: AX destroyed
  23563. Notes:    available only when popped up
  23564.     if the specified string does not start with '[', it is displayed
  23565.       centered on the bottom line, else the function key labels are shown
  23566. --------U-16FFF3-----------------------------
  23567. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  23568.     AX = FFF3h
  23569. Note:    releases any EMS being used; restores video mode, page, and cursor
  23570.       shape; and restores interrupt vectors
  23571. SeeAlso: AX=FFC5h,AX=FFEFh
  23572. Index:    uninstall;PC Tools DESKTOP
  23573. --------U-16FFF4-----------------------------
  23574. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  23575.     AX = FFF4h
  23576.     ???
  23577. Return: ???
  23578. Note:    available only when popped up
  23579. SeeAlso: AX=FFF6h
  23580. --------U-16FFF5-----------------------------
  23581. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  23582.     AX = FFF5h
  23583. Return: ES:BX -> screen attributes data structure (see #0441)
  23584.     AL = ??? (v6.0+)
  23585.  
  23586. Format of PC Tools DESKTOP attribute data structure:
  23587. Offset    Size    Description    (Table 0441)
  23588.  -1    BYTE    attribute for desktop background
  23589.  00h    BYTE    attribute for normal characters on desktop menu
  23590.  01h    BYTE    attribute for highlighted characters on desktop menu
  23591.  02h  5 BYTEs    ???
  23592.  07h    BYTE    attribute for dialog boxes
  23593.  08h 15 BYTEs    ???
  23594.  17h    BYTE    attribute for message boxes
  23595. --------U-16FFF6-----------------------------
  23596. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  23597.     AX = FFF6h
  23598.     DS = segment of editor buffer structure (see #0442)
  23599.     BX = ???
  23600.     DX = segment of window parameters structure (see #0435)
  23601. Return: ???
  23602. Note:    available only when popped up
  23603. SeeAlso: AX=FFF4h
  23604.  
  23605. Format of PC Tools DESKTOP editor buffer structure:
  23606. Offset    Size    Description    (Table 0442)
  23607.  00h    WORD    offset of current cursor position in buffer segment
  23608.  02h  2 BYTEs    ???
  23609.  04h    WORD    offset of beginning of file data in buffer segment
  23610.  06h 10 BYTEs    ???
  23611.  10h  N BYTEs    ASCIZ name of file being edited
  23612. --------U-16FFF7-----------------------------
  23613. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  23614.     AX = FFF7h
  23615.     DS:SI -> ???
  23616.     ???
  23617. Return: ???
  23618. Notes:    available only when popped up
  23619.     performs input processing on the menu bar set up with AX=FFEEh
  23620. SeeAlso: AX=FFEEh,AX=FFFBh
  23621. --------U-16FFF8-----------------------------
  23622. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  23623.     AX = FFF8h
  23624.     DS:0000h -> window parameters structure (see #0435)
  23625.     DS:BX -> DWORD to store address of ??? on screen
  23626. Return: ???
  23627. --------U-16FFF9-----------------------------
  23628. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  23629.     AX = FFF9h
  23630.     ES:BX -> FAR routine to redisplay the utility's window
  23631. Note:    available only when popped up
  23632. --------U-16FFFA-----------------------------
  23633. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  23634.     AX = FFFAh
  23635. Notes:    available only when popped up
  23636.     adds the "Window" option to the "Desktop" option which is the only one
  23637.       available when no accessories are active.  Unlike AX=FFEEh, no
  23638.       additional menu items are added between "Desktop" and "Window"
  23639. SeeAlso: AX=FFEEh,AX=FFFBh
  23640. --------U-16FFFB-----------------------------
  23641. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  23642.     AX = FFFBh
  23643. Return: ???
  23644. Notes:    available only when popped up
  23645.     performs input processing on the standard menu bar set up with AX=FFFAh
  23646. SeeAlso: AX=FFF7h
  23647. --------U-16FFFC-----------------------------
  23648. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  23649.     AX = FFFCh
  23650. Return: ES:BX -> hotkey table (see #0443)
  23651.     DS:DX = original INT 09 vector
  23652.  
  23653. Format of PC Tools DESKTOP hotkey table:
  23654. Offset    Size    Description    (Table 0443)
  23655.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  23656.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  23657.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  23658.  06h  2 BYTEs    scancode/shift state for screen autodial key
  23659. --------U-16FFFD-----------------------------
  23660. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  23661.     AX = FFFDh
  23662. Return: AX destroyed
  23663. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  23664. SeeAlso: AX=FF91h,AX=FF92h
  23665. --------M-16FFFE-----------------------------
  23666. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  23667.     AX = FFFEh
  23668. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  23669. --------M-16FFFF-----------------------------
  23670. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  23671.     AX = FFFFh
  23672. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  23673. --------P-17----DX0ABC-----------------------
  23674. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  23675.     DX = 0ABCh
  23676. Return: AX = AAAAh
  23677.     DX = BAAAh
  23678.     ES = code segment of resident portion
  23679. --------P-17----DX0B90-----------------------
  23680. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  23681.     DX = 0B90h
  23682. Return: DX = ABBBh
  23683.     ES = code segment of resident portion
  23684. --------P-17----DX0B91-----------------------
  23685. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  23686.     DX = 0B91h
  23687. Return: DX = ABCBh
  23688.     ES = code segment of resident portion
  23689. --------P-17----DX0F5F-----------------------
  23690. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  23691.     DX = 0F5Fh
  23692. Return: AX = AAAAh
  23693.     DX = F555h
  23694.     ES = code segment of resident portion
  23695. --------B-1700-------------------------------
  23696. INT 17 - PRINTER - WRITE CHARACTER
  23697.     AH = 00h
  23698.     AL = character to write
  23699.     DX = printer number (00h-02h)
  23700. Return: AH = printer status (see #0444)
  23701. SeeAlso: AH=02h,AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  23702.  
  23703. Bitfields for printer status:
  23704. Bit(s)    Description    (Table 0444)
  23705.  7    not busy
  23706.  6    acknowledge
  23707.  5    out of paper
  23708.  4    selected
  23709.  3    I/O error
  23710.  2-1    unused
  23711.  0    timeout
  23712. --------B-1701-------------------------------
  23713. INT 17 - PRINTER - INITIALIZE PORT
  23714.     AH = 01h
  23715.     DX = printer number (00h-02h)
  23716. Return: AH = printer status (see #0444)
  23717. Note:    some printers report that they are ready immediately after
  23718.       initialization when they actually are not; a more reliable result may
  23719.       be obtained by calling AH=02h after a brief delay
  23720. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC"
  23721. --------B-1702-------------------------------
  23722. INT 17 - PRINTER - GET STATUS
  23723.     AH = 02h
  23724.     DX = printer number (00h-02h)
  23725. Return: AH = printer status (see #0444)
  23726. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  23727. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  23728. --------P-1702--DX0000-----------------------
  23729. INT 17 - INSET - INSTALLATION CHECK
  23730.     AH = 02h
  23731.     DX = 0000h
  23732.     CX = 07C3h (1987d)
  23733. Return: CX = 07C2h (1986d) if installed
  23734. Program: INSET is a text/graphics integration program
  23735. --------b-170200BX5050-----------------------
  23736. INT 17 - Advanced Parallel Port BIOS - INSTALLATION CHECK
  23737.     AX = 0200h
  23738.     BX = 5050h ('PP')
  23739.     CH = 45h   ('E')
  23740.     DX = printer port number (00h-02h)
  23741. Return: AH = 00h      \
  23742.     AL = 45h       If Advanced BIOS Installed
  23743.     CX = 5050h    /
  23744.     DX:BX -> far entry point to Advanced BIOS
  23745. Program: The Advanced Parallel Port BIOS provides support for parallel
  23746.       port peripherals using the enhanced modes of the IEEE 1284.
  23747. --------P-1703-------------------------------
  23748. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  23749.     AH = 03h
  23750. Return: BX = ???
  23751.     CX = ???
  23752. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  23753.       Vertisoft Systems, Inc.
  23754. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  23755. --------c-1703-------------------------------
  23756. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  23757.     AH = 03h
  23758.     DX = printer port number
  23759.     CX = number of characters to print
  23760.     DS:SI -> string
  23761. Return: AH = printer status (see #0444)
  23762.     CX = number of characters actually printed
  23763. Desc:    send an entire string of chars to the print spooler with a single call
  23764. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  23765.       operating system by The Software Link, Inc.
  23766. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  23767. --------P-1704-------------------------------
  23768. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  23769.     AH = 04h
  23770. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  23771. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  23772. --------P-170500-----------------------------
  23773. INT 17 U - Emulaser ELTSR - ???
  23774.     AX = 0500h
  23775.     ???
  23776. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  23777.     BX = ???
  23778.     CX = PSP segment of ELTSR
  23779.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  23780.     SI = ???
  23781.     DI = ???
  23782. SeeAlso: AH=04h,INT 1A/AH=E5h
  23783. --------P-170501-----------------------------
  23784. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  23785.     AX = 0501h
  23786. Return: (see AX=0500h)
  23787. Note:    restores interrupt vectors without checking whether they have been
  23788.       hooked by later programs; should only be called if ELTSR reports
  23789.       that it is safe to unload
  23790. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  23791. Index:    uninstall;Emulaser ELTSR
  23792. --------P-170502-----------------------------
  23793. INT 17 U - Emulaser ELTSR - SET ???
  23794.     AX = 0502h
  23795.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  23796.     CL = ???
  23797.     DL = ???
  23798. Return: (see AX=0500h)
  23799. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  23800. --------P-170503-----------------------------
  23801. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  23802.     AX = 0503h
  23803. Return: (see AX=0500h)
  23804. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  23805. --------P-1706-------------------------------
  23806. INT 17 U - Emulaser ELTSR - ???
  23807.     AH = 06h
  23808.     ???
  23809. Return: ???
  23810. SeeAlso: AH=05h,INT 1A/AH=E5h
  23811. --------P-1707-------------------------------
  23812. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  23813.     AH = 07h
  23814.     ES:DX -> ASCIZ filename to be opened
  23815. Return: ???
  23816. Note:    new output will be appended to the specified file
  23817. SeeAlso: AH=08h,INT 1A/AH=E5h
  23818. --------P-1708-------------------------------
  23819. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  23820.     AH = 08h
  23821.     ???
  23822. Return: ???
  23823. Desc:    close the file previously opened by function 07h
  23824. SeeAlso: AH=07h,INT 1A/AH=E5h
  23825. --------P-1709-------------------------------
  23826. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  23827.     AH = 09h
  23828.     BX = ???
  23829.     CX = ???
  23830.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  23831. Return: AX = status
  23832.         00h successful
  23833.         FFh failed
  23834. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  23835.       Vertisoft Systems, Inc.
  23836. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  23837.       that either ELSPL or Disk Spool II be installed
  23838. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  23839. --------P-170A-------------------------------
  23840. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  23841.     AH = 0Ah
  23842.     ES:BX -> ??? buffer
  23843.     CX = length of ??? buffer
  23844. Return: ???
  23845. Note:    copies the specified name into the buffer passed to ELSPL as the
  23846.       filename by AH=09h
  23847. SeeAlso: AH=09h,INT 1A/AH=E5h
  23848. --------P-170B-------------------------------
  23849. INT 17 U - Emulaser ELTSR - GET ???
  23850.     AH = 0Bh
  23851. Return: AX:BX -> ???
  23852. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  23853. --------P-170C-------------------------------
  23854. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  23855.     AH = 0Ch
  23856.     ???
  23857. Return: ???
  23858. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  23859. --------P-170D-------------------------------
  23860. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  23861.     AH = 0Dh
  23862. Return: AX = state (0000h off, 0010h on)
  23863. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  23864.       the ScrlLk light as its activity indicator
  23865. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  23866. --------P-170E-------------------------------
  23867. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  23868.     AH = 0Eh
  23869. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  23870.       Vertisoft Systems, Inc.
  23871. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  23872.       processed in the background, but may also be called by applications
  23873.       to give Emulaser additional CPU time
  23874. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  23875. --------P-172000-----------------------------
  23876. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  23877.     AX = 2000h
  23878.     BL = printer number???
  23879. Return:    AX = status (see #0445)
  23880.     BX = driver version number (BH=major,BL=minor)
  23881.     CH = ??? (00h)
  23882.     CL = ???
  23883.     DX = ??? (0100h)
  23884. Note:    also enables the remaining printer driver functions (2001h-2007h)
  23885. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  23886.  
  23887. (Table 0445)
  23888. Values for PC Paint function status:
  23889.  0000h    successful
  23890.  0001h    invalid printer???
  23891.  0002h    ???
  23892.  0003h    invalid subfunction
  23893.  0005h    driver disabled, must call function 00h first
  23894.  0009h    unknown printer error
  23895.  000Bh    printer not selected
  23896.  000Ch    printer out of paper
  23897.  000Eh    error while writing to serial printer
  23898.  000Fh    ???
  23899.  0010h    invalid function number
  23900.  0011h    value out of range
  23901. --------P-172001-----------------------------
  23902. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  23903.     AX = 2001h
  23904.     BL = printer number???
  23905. Return: AX = status (see #0445)
  23906. --------P-172002-----------------------------
  23907. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  23908.     AX = 2002h
  23909.     BL = printer number???
  23910.     CL = desired information
  23911.         00h printer type
  23912.         Return: ES:DI -> ASCIZ printer name
  23913.         01h paper size
  23914.         DX = size index
  23915.         Return: ES:DI -> ASCIZ paper size description
  23916.         02h ???
  23917.         Return: BX = ???
  23918.         03h printer information???
  23919.         DX = ???
  23920.         ES:BX -> buffer for ??? (min 134 bytes)
  23921. Return: AX = status (see #0445)
  23922. SeeAlso: AX=2000h,AX=2004h
  23923. --------P-172003-----------------------------
  23924. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  23925.     AX = 2003h
  23926.     ES:BX -> ???
  23927. Return: AX = status (see #0445)
  23928. SeeAlso: AX=2000h,AX=2004h
  23929. --------P-172004-----------------------------
  23930. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  23931.     AX = 2004h
  23932.     BL = printer number???
  23933. Return: AX = status (see #0445)
  23934.     ES:DI -> ???
  23935. SeeAlso: AX=2000h,AX=2003h
  23936. --------P-172005-----------------------------
  23937. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  23938.     AX = 2005h
  23939.     BL = printer number???
  23940. Return: AX = status (see #0445)
  23941. Note:    this function also clears the flag set by AX=2001h
  23942. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  23943. --------P-172006-----------------------------
  23944. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  23945.     AX = 2006h
  23946.     BL = printer number???
  23947. Return: AX = status (see #0445)
  23948. Note:    this function also clears the flag set by AX=2001h and disables
  23949.       functions other than AX=2000h
  23950. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  23951. --------P-172007-----------------------------
  23952. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  23953.     AX = 2007h
  23954. Return: AX unchanged
  23955. SeeAlso: AX=2000h
  23956. --------N-172400-----------------------------
  23957. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  23958.     AX = 2400h
  23959.     DL = new state
  23960.         00h disabled
  23961.         01h enabled
  23962. Return: DL = 24h if installed
  23963.     DH = minor version number
  23964.     CX = network address of this machine
  23965.     AL = status (see #0446)
  23966. SeeAlso: AX=2403h,INT 16/AX=4500h
  23967.  
  23968. (Table 0446)
  23969. Values for NET.24 function status:
  23970.  00h    successful
  23971.  01h    timeout
  23972.  02h    header error
  23973.  03h    data error
  23974.  04h    busy
  23975.  05h    invalid parameters
  23976. --------N-172401-----------------------------
  23977. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  23978.     AX = 2401h
  23979.     BL = timeout in clock ticks
  23980. Return: AL = status (see #0446)
  23981.     DX:BX -> receive buffer
  23982. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  23983. --------N-172402-----------------------------
  23984. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  23985.     AX = 2402h
  23986.     transmit buffer filled (see AX=2403h)
  23987. Return: AL = status (see #0446)
  23988. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  23989. --------N-172403-----------------------------
  23990. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  23991.     AX = 2403h
  23992. Return: AL = status (see #0446)
  23993.     CX = number of characters in receive ring buffer
  23994.     DX:BX -> transmit buffer
  23995. SeeAlso: AX=2400h,AX=2402h
  23996. --------N-172404-----------------------------
  23997. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  23998.     AX = 2404h
  23999.     BX = target address
  24000. Return: AL = status (see #0446)
  24001. SeeAlso: AX=2402h,AX=2405h
  24002. --------N-172405-----------------------------
  24003. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  24004.     AX = 2405h
  24005.     BX = target address
  24006. Return: AL = status (see #0446)
  24007. SeeAlso: AX=2402h,AX=2404h
  24008. --------N-172406-----------------------------
  24009. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  24010.     AX = 2406h
  24011. Return: AL = status (see #0446)
  24012. SeeAlso: AX=2407h,AX=240Ah
  24013. --------N-172407-----------------------------
  24014. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  24015.     AX = 2407h
  24016. Return: AL = status (see also #0446)
  24017.         06h end of data
  24018.     DL = received character
  24019. SeeAlso: AX=2406h
  24020. --------N-172408-----------------------------
  24021. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  24022.     AX = 2408h
  24023. Return: AL = status (see also #0446)
  24024.         06h end of data
  24025.     CX = number of bytes in receive buffer
  24026.     DX:SI -> receive buffer
  24027. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  24028. --------N-172409-----------------------------
  24029. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  24030.     AX = 2409h
  24031.     BX = target address
  24032.     CX = number of data bytes
  24033.     DL = command code to send
  24034.     DS:SI -> data bytes for command
  24035. Return: AL = status (see also #0446)
  24036.         03h no response
  24037.         06h remote currently unable to perform command
  24038. SeeAlso: AX=2405h,AX=2408h
  24039. --------N-17240A-----------------------------
  24040. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  24041.     AX = 240Ah
  24042. Return: AL = status (see #0446)
  24043. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  24044. --------N-17240B-----------------------------
  24045. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  24046.     AX = 240Bh
  24047.     DL = character to send
  24048. Return: AL = status (see also AX=2400h)
  24049.         03h transmission error
  24050.         06h write error
  24051. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  24052. --------N-17240C-----------------------------
  24053. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  24054.     AX = 240Ch
  24055. Return: AL = status (see also AX=2400h)
  24056.         03h transmission error
  24057.         06h remote breaks connection
  24058. SeeAlso: AX=240Ah,AX=240Bh
  24059. --------J-175000-----------------------------
  24060. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  24061.     AX = 5000h
  24062.     BX = country code
  24063.         0001h USA (English), 0051h Japan
  24064. Return: AL = status
  24065.         00h successful
  24066.         01h bad country code
  24067.         02h other error
  24068. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  24069. --------J-175001-----------------------------
  24070. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  24071.     AX = 5001h
  24072. Return: AL = status
  24073.         00h successful
  24074.         BX = country code
  24075.         02h error
  24076. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  24077. --------J-1751-------------------------------
  24078. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  24079.     AH = 51h
  24080.     DX = 2-byte JIS code
  24081. Return: DX = shift-JIS value or 0000h on error
  24082. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  24083.       characters to Shift-JIS characters, and the other performs the
  24084.       opposite conversion
  24085. SeeAlso: AX=5000h,AH=52h
  24086. --------J-1752-------------------------------
  24087. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  24088.     AH = 52h
  24089.     DX = 2-byte shift-JIS code
  24090. Return: DX = JIS code or 0000h on error
  24091. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  24092.       characters to Shift-JIS characters, and the other performs the
  24093.       opposite conversion
  24094. SeeAlso: AH=51h
  24095. --------V-1760-------------------------------
  24096. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  24097.     AH = 60h
  24098. Return: AL = 60h
  24099.     DX = CS of resident code
  24100. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  24101.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  24102.       consisting of an 80h followed by the actual command
  24103. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  24104. --------V-1761-------------------------------
  24105. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  24106.     AH = 61h
  24107. Return: AL = 61h
  24108.     DX = CS of resident code
  24109. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  24110. --------P-1762-------------------------------
  24111. INT 17 U - T2PS v1.0 - UNINSTALL
  24112.     AH = 62h
  24113. Return: nothing
  24114. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  24115. --------P-1763-------------------------------
  24116. INT 17 U - T2PS v1.0 - SET PARAMETERS
  24117.     AH = 63h
  24118.     ES:SI -> settings (see #0447)
  24119. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  24120.       Technologies
  24121. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  24122.  
  24123. Format of T2PS settings:
  24124. Offset    Size    Description    (Table 0447)
  24125.  00h    WORD    LPT port number (0=LPT1, etc.)
  24126.  02h    WORD    page heigh in points
  24127.  04h    WORD    page width in points
  24128.  06h    WORD    top margin in points
  24129.  08h    WORD    bottom margin in points
  24130.  0Ah    WORD    left margin in points
  24131.  0Ch    WORD    right margin in points
  24132.  0Eh    WORD    font size in points
  24133.  10h    WORD    tab size
  24134.  12h    WORD    timeout in clock ticks
  24135. --------P-1764-------------------------------
  24136. INT 17 U - T2PS v1.0 - GET PARAMETERS
  24137.     AH = 64h
  24138.     ES:SI -> buffer for settings (see #0447)
  24139. Return: ES:SI buffer filled
  24140. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  24141. --------N-1781-------------------------------
  24142. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  24143.     AH = 81h
  24144.     AL = 00h (NTNX compatibility mode)
  24145.     CL = number of jobs to cancel
  24146. Return: AL = status (see #0448)
  24147. Note:    this function cancels the last CL printouts for the current task
  24148. SeeAlso: AH=82h
  24149.  
  24150. (Table 0448)
  24151. Values for Alloy status:
  24152.  00h    success
  24153.  01h-7Fh warning
  24154.  80h    general failure
  24155.  81h    host overloaded (NTNX only)
  24156.  82h    module busy (NTNX only)
  24157.  83h    host busy (NTNX only)
  24158.  84h    re-entry flag set
  24159.  85h    invalid request
  24160.  86h    invalid printer
  24161.  87h    invalid process ID
  24162.  89h    access denied
  24163.  8Ah    option not available for given port type
  24164.  8Bh    option not available for given task type
  24165.  91h    printer busy
  24166.  C2h    file not found
  24167.  C3h    path not found
  24168.  C4h    file access failure
  24169. --------N-1782-------------------------------
  24170. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  24171.     AH = 82h
  24172.     AL = 00h (NTNX compatibility mode)
  24173. Return: AL = status (see #0448)
  24174. SeeAlso: AH=81h
  24175. --------N-1783-------------------------------
  24176. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  24177.     AH = 83h
  24178.     AL = mode
  24179.         00h NTNX compatibility
  24180.         CL = number of copies (max 99, default 1)
  24181.         02h MW386 v2+
  24182.         BX = logical device number
  24183.             00h-03h = LPT1-LPT4
  24184.             04h-07h = COM1-COM4
  24185.         CX = number of copies
  24186. Return: AL = status (see #0448)
  24187. Note:    in NTNX compatibility mode, this function only affects LPT1
  24188. --------N-1784-------------------------------
  24189. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  24190.     AH = 84h
  24191.     AL = mode
  24192.         00h NTNX compatibility
  24193.         02h MW386 v2+
  24194.         BX = logical device number
  24195.             00h-03h = LPT1-LPT4
  24196.             04h-07h = COM1-COM4
  24197. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  24198.       under MW386 in NTNX compatibility mode)
  24199. --------J-1784-------------------------------
  24200. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  24201.     AH = 84h
  24202.     AL = character
  24203.     DX = printer number
  24204. Return: AH = printer status (see #0444)
  24205. SeeAlso: AH=00h,AH=85h
  24206. --------J-1785-------------------------------
  24207. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  24208.     AH = 85h
  24209.     AL = new state (00h enabled, 01h disabled)
  24210. SeeAlso: AH=84h"AX"
  24211. --------N-1787-------------------------------
  24212. INT 17 - Alloy NTNX - SET INDOS POINTER
  24213.     AH = 87h
  24214.     AL = 00h
  24215.     CX:BX -> buffer for user-written printer drivers
  24216. Return: BX,CX destroyed
  24217. Note:    must be executed before the printer is enabled
  24218. SeeAlso: AH=8Ah
  24219. --------N-1788-------------------------------
  24220. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  24221.     AH = 88h
  24222.     AL = mode
  24223.         00h NTNX compatibility
  24224.         DX = NTNX printer number (see #0449)
  24225.         01h MW386
  24226.         DX = MW386 printer number
  24227. Return: AH = status (see #0448)
  24228. Note:    removes specified printer from the spooler's list of printers
  24229. SeeAlso: AH=89h,AH=8Bh
  24230.  
  24231. (Table 0449)
  24232. Values for Alloy NTNX printer number:
  24233.  00h    host LPT1
  24234.  01h    host LPT2
  24235.  02h    host LPT3
  24236.  03h    host LPT4
  24237.  04h    host COM1
  24238.  05h    host COM2
  24239.  06h    user's logical COM2
  24240.  07h    user's terminal AUX port
  24241.  08h    user's logical COM1 (MW386 only)
  24242. --------N-1789-------------------------------
  24243. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  24244.     AH = 89h
  24245.     AL = mode
  24246.         00h NTNX compatibility
  24247.         DX = NTNX printer number (see #0449)
  24248.         01h MW386
  24249.         DX = MW386 printer number
  24250. Return: AL = status (see #0448)
  24251. Note:    the specified printer is added to the spooler's list of available
  24252.       printers
  24253. SeeAlso: AH=88h,AH=8Bh
  24254. --------N-178A-------------------------------
  24255. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  24256.     AH = 8Ah
  24257.     ???
  24258. SeeAlso: AH=92h
  24259. --------N-178B-------------------------------
  24260. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  24261.     AH = 8Bh
  24262.     DS:DX -> ASCIZ printer name
  24263. Return: AL = status (see also AH=81h)
  24264.         00h successful
  24265.         DX = physical device number
  24266. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  24267. --------N-178C-------------------------------
  24268. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  24269.     AH = 8Ch
  24270.     DX = physical device number
  24271.     ES:DI -> 17-byte buffer for ASCIZ device name
  24272. Return: AL = status (see also AH=81h)
  24273.         00h successful
  24274.         ES:DI buffer filled
  24275. SeeAlso: AH=88h,AH=8Bh
  24276. --------N-178D-------------------------------
  24277. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  24278.     AH = 8Dh
  24279.     AL = 00h
  24280. Return: AL = status (see #0448)
  24281. Notes:    clears all buffers and resets spooler to boot-up values
  24282.     MW386 supports this function for compatibility only; it is a NOP
  24283. --------N-178E-------------------------------
  24284. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  24285.     AH = 8Eh
  24286.     AL = 00h
  24287. Return: CX:BX -> INT 28 entry point
  24288. SeeAlso: AH=8Fh
  24289. --------N-178F-------------------------------
  24290. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  24291.     AH = 8Fh
  24292.     AL = 00h
  24293. Return: CX:BX -> DOS intercept routine
  24294. SeeAlso: AH=8Eh
  24295. --------N-1790-------------------------------
  24296. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  24297.     AH = 90h
  24298.     AL = mode
  24299.         00h NTNX compatibility
  24300.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  24301.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  24302.         02h MW386 v2+
  24303.         BX = logical device number
  24304.             00h-03h = LPT1-LPT4
  24305.             04h-07h = COM1-COM4
  24306.     CX:SI -> ASCIZ pathname
  24307. Return: AL = status (see #0448)
  24308. Note:    in mode 00h, the file is always sent to logical LPT1
  24309. SeeAlso: AH=A0h
  24310. --------N-1791-------------------------------
  24311. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  24312.     AH = 91h
  24313.     AL = mode
  24314.         00h NTNX compatibility
  24315.         Return: CX = user number (00h = host)
  24316.             DX = currently selected printer number (00h-08h)
  24317.         01h MW386
  24318.         Return: CX = user number
  24319.             DX = physical dev number of currently selected printer
  24320.         02h MW386 v2+
  24321.         BX = logical device number
  24322.             00h-03h = LPT1-LPT4
  24323.             04h-07h = COM1-COM4
  24324.         Return: CX = user number
  24325.             DX = physical device number
  24326. Return: AL = status (see #0448)
  24327. SeeAlso: AH=8Ch
  24328. --------N-1792-------------------------------
  24329. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  24330.     AH = 92h
  24331.     AL = 00h
  24332.     CL = 00h
  24333. Return: CL = driver state
  24334.         01h initialized
  24335.         80h not initialized
  24336.     AX = status (see #0448)
  24337. SeeAlso: AH=8Ah
  24338. --------N-1794-------------------------------
  24339. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  24340.     AH = 94h
  24341.     AL = mode
  24342.         00h NTNX compatibility
  24343.         DX = NTNX printer number (see #0449)
  24344.         01h MW386
  24345.         DX = MW386 printer number
  24346.         02h MW386 v2+
  24347.         BX = logical printer number
  24348.         DX = MW386 printer number
  24349. Return: AL = status (see #0448)
  24350. Note:    modes 00h and 01h affect only logical LPT1
  24351. SeeAlso: AH=8Bh,AH=95h
  24352. --------N-1795-------------------------------
  24353. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  24354.     AH = 95h
  24355.     AL = mode
  24356.         00h NTNX compatibility
  24357.         Return: DX = NTNX printer number (see #0449)
  24358.                 (FFFFh if current printer not compatible with NTNX)
  24359.         01h MW386
  24360.         Return: DX = MW386 printer number
  24361.         02h MW386 v2+
  24362.         BX = logical device number
  24363.             00h-03h = LPT1-LPT4
  24364.             04h-07h = COM1-COM4
  24365.         Return: DX = MW386 printer number (FFFFh = none)
  24366. Return: AL = status (see #0448)
  24367. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  24368. SeeAlso: AH=94h
  24369. --------N-1796-------------------------------
  24370. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  24371.     AH = 96h
  24372.     AL = 00h
  24373. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  24374.       returning
  24375. SeeAlso: INT 14/AH=24h
  24376. --------N-1797-------------------------------
  24377. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  24378.     AH = 97h
  24379.     AL = mode
  24380.         00h NTNX compatibility
  24381.         02h MW386 v2+
  24382.         BX = logical device number
  24383.             00h-03h = LPT1-LPT4
  24384.             04h-07h = COM1-COM4
  24385.     CH,CL,DH = three character break sequence
  24386.     DL = subfunction
  24387.         00h set break string
  24388.         else reset break
  24389. Return: AL = status (see #0448)
  24390. Notes:    mode 00h affects only logical LPT1
  24391.     when the break string is encountered, the spool file will be closed and
  24392.       queued for printing automatically
  24393.     the break string is not permanently saved, and will be reset each time
  24394.       MW386 or the user is rebooted
  24395. SeeAlso: AH=9Bh
  24396. --------N-1798-------------------------------
  24397. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  24398.     AH = 98h
  24399.     AL = 00h
  24400.     DL = printer number (FFh=current)
  24401. Return: AL = status
  24402.         00h successful
  24403.         01h incorrect printer
  24404.         02h task not found
  24405. Note:    MW386 supports this function for compatibility only; it is a NOP
  24406. --------N-1799-------------------------------
  24407. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  24408.     AH = 99h
  24409.     AL = mode
  24410.         00h NTNX compatibility
  24411.         DL = NTNX printer number (see #0449)
  24412.             (FFh = task's current logical LPT1)
  24413.         DH = mode (see #0450)
  24414.         01h MW386
  24415.         DX = MW386 printer number
  24416.         CL = mode (as for DH above)
  24417. Return: AL = status (see #0448)
  24418.     DH = mode (bits 1 and 2 set as above)
  24419.     DL = printer owner's user number if not spooled
  24420.  
  24421. Bitfields for Alloy printer mode:
  24422.  0    get mode if 1, set mode if 0    (Table 0450)
  24423.  1    private ("attached")
  24424.  2    direct instead of spooled
  24425.  3-7    reserved (0)
  24426. --------N-179A-------------------------------
  24427. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  24428.     AH = 9Ah
  24429.     AL = mode
  24430.         00h NTNX compatibility
  24431.         DX = NTNX printer number (see #0449)
  24432.             (FFFFh = current logical LPT1)
  24433.         01h MW386
  24434.         DX = MW386 printer number
  24435.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  24436. Return: AL = status (see #0448)
  24437. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  24438.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  24439. SeeAlso: AH=A4h
  24440. --------N-179B-------------------------------
  24441. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  24442.     AH = 9Bh
  24443.     AL = mode
  24444.         00h NTNX compatibility
  24445.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  24446.         01h MW386
  24447.         CX = timeout value in seconds (00h = never)
  24448.         02h MW386 v2+
  24449.         BX = logical device number
  24450.             00h-03h = LPT1-LPT4
  24451.             04h-07h = COM1-COM4
  24452.         CX = timeout value in seconds (00h = never)
  24453. Return: AL = status (see #0448)
  24454. Notes:    modes 00h and 01h affect only the current logical LPT1
  24455.     if no data is sent to a printer for the specified amount of time, the
  24456.       spool file will be closed and queued for printing automatically
  24457. SeeAlso: AH=97h
  24458. --------N-17A0-------------------------------
  24459. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  24460.     AH = A0h
  24461.     AL = mode
  24462.         00h NTNX compatibility
  24463.         DX = ??? (NTNX, MW386 v1.x only)
  24464.         02h MW386 v2+
  24465.         BX = logical device number
  24466.             00h-03h = LPT1-LPT4
  24467.             04h-07h = COM1-COM4
  24468.     CX:SI -> ASCIZ pathname
  24469. Return: AL = status (see #0448)
  24470. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  24471.       the original file to be modified or deleted while the copy is printed
  24472.     in mode 00h, the file is printed on logical LPT1
  24473. SeeAlso: AH=90h
  24474. --------N-17A4-------------------------------
  24475. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  24476.     AH = A4h
  24477.     AL = new state
  24478.         00h form feed after end of print job disabled
  24479.         01h form feed enabled
  24480. Return: AL = status (see #0448)
  24481. Note:    only affects the current logical LPT1
  24482. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  24483. --------N-17A6-------------------------------
  24484. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  24485.     AH = A6h
  24486.     AL = new state
  24487.         00h banner page before print job disabled
  24488.         01h banner page enabled
  24489. Return: AL = status (see #0448)
  24490. Note:    only affects the current logical LPT1
  24491. SeeAlso: AH=A4h
  24492. --------N-17A7-------------------------------
  24493. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  24494.     AH = A7h
  24495.     AL = spool flags (see #0451)
  24496.     BX = logical device number
  24497.         00h-03h = LPT1-LPT4
  24498.         04h-07h = COM1-COM4
  24499. Return: AL = status (see #0448)
  24500. Note:    the documentation does not state which register contains the result of
  24501.       a GET
  24502. SeeAlso: AH=A4h,AH=A6h
  24503.  
  24504. Bitfields for Alloy spool flags:
  24505. Bit(s)    Description    (Table 0451)
  24506.  0    banner page enabled (see AH=A6h)
  24507.  1    form feed enabled (see AH=A4h)
  24508.  2-6    reserved (0)
  24509.  7    set flags if 1, get flags if 0
  24510. --------N-17A8-------------------------------
  24511. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  24512.     AH = A8h
  24513.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  24514. Return: AL = status (see #0448)
  24515. Note:    allows application to specify banner page filename for spool files
  24516.       collected from the application's printer output
  24517. SeeAlso: AH=A9h
  24518. --------N-17A9-------------------------------
  24519. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  24520.     AH = A9h
  24521.     AL = new spool drive (2=C:,3=D:,etc)
  24522. Return: AL = status (see #0448)
  24523. Note:    does not remove previous spooling directory since jobs may be pending
  24524. SeeAlso: AH=A8h
  24525. --------N-17AA-------------------------------
  24526. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  24527.     AH = AAh
  24528.     AL = mode
  24529.         00h NTNX
  24530.         DX = NTNX printer number (see #0449)
  24531.         01h MW386
  24532.         DX = MW386 printer number
  24533. Return: AH = instantaneous printer status
  24534.         00h printer ready
  24535.         01h not ready
  24536.         12h off line
  24537.         13h out of paper
  24538.         14h general device failure
  24539.         15h device timeout
  24540.         16h bad device number
  24541. --------N-17AF-------------------------------
  24542. INT 17 - Alloy MW386 - CHECK SPOOLER
  24543.     AH = AFh
  24544. Return: AX = 55AAh if spooler available
  24545. --------c-17C0-------------------------------
  24546. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  24547.     AH = C0h
  24548.     DX = printer port (0-3)
  24549. Return: ES:BX -> control block (see #0452)
  24550. SeeAlso: AH=C1h
  24551.  
  24552. Format of PCSpool control block:
  24553. Offset    Size    Description    (Table 0452)
  24554.  00h    WORD    printer number
  24555.  02h    WORD    address of printer status port
  24556.  04h    WORD    number of first record in queue
  24557.  06h    WORD    number of last record in queue
  24558.  08h    DWORD    characters already printed
  24559.  0Ch    DWORD    number of characters remaining
  24560.  10h    DWORD    pointer to dequeue buffer
  24561.  14h    DWORD    previous count of characters printed
  24562.  18h    DWORD    number of clock ticks taken to print them
  24563.  1Ch    WORD    offset of next character to output
  24564.  1Eh    WORD    offset of next character to print
  24565.  20h    WORD    pointer to spooling queue record
  24566.  22h    BYTE    current spooling status
  24567.  23h    BYTE    current printer status:
  24568.         00h OK
  24569.         01h not ready
  24570.         02h paused with message
  24571.         03h paused
  24572.         04h initializing
  24573.         FEh non-existent port
  24574.         FFh not spooled
  24575.  24h    BYTE    current control record type
  24576.  25h    WORD    observed printer speed
  24577.  27h    WORD    characters to print per service
  24578.  29h    BYTE    01h if disk write needed
  24579.  2Ah    BYTE    01h if queued data should be flushed
  24580.  2Bh    BYTE    01h to update cps status
  24581. --------c-17C1--------------------------------
  24582. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  24583.     AH = C1h
  24584.     DX = printer port (0-3)
  24585.     DS:SI -> ASCIZ string to save for display
  24586. Note:    flushes pending writes
  24587. SeeAlso: AH=C0h,AH=C2h
  24588. --------c-17C2-------------------------------
  24589. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  24590.     AH = C2h
  24591.     DX = printer port (0-3)
  24592. SeeAlso: AH=C3h
  24593. --------c-17C3-------------------------------
  24594. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  24595.     AH = C3h
  24596.     DX = printer port (0-3)
  24597. SeeAlso: AH=C2h,AH=C7h
  24598. --------c-17C4-------------------------------
  24599. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  24600.     AH = C4h
  24601. Return: DI = B0BFh
  24602.     SI = segment
  24603. --------c-17C5-------------------------------
  24604. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  24605.     AH = C5h
  24606.     DX = printer port (0-3)
  24607. Note:    cancels up to the pause record
  24608. --------c-17C6-------------------------------
  24609. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  24610.     AH = C6h
  24611.     DX = printer port (0-3)
  24612. Return: AX = queue status
  24613.        0000h printer not active or at pause
  24614.        0001h printer busy
  24615. --------c-17C7-------------------------------
  24616. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  24617.     AH = C7h
  24618.     DX = printer port (0-3)
  24619. SeeAlso: AH=C3h
  24620. --------P-17CD00-----------------------------
  24621. INT 17 - INSET - EXECUTE COMMAND STRING
  24622.     AX = CD00h
  24623.     DS:DX -> ASCIZ command string (max 80 bytes)
  24624. Return: CX = 07C2h (1986d)
  24625. Note:    user interface menus pop up after last command, unless that command
  24626.     exits INSET
  24627. --------P-17CD01-----------------------------
  24628. INT 17 - INSET - GET IMAGE SIZE
  24629.     AX = CD01h
  24630.     DS:DX -> ASCIZ name of image file
  24631. Return: AX = height in 1/720th inch
  24632.     BX = width in 1/720th inch
  24633.     CX = 07C2h (1986d)
  24634. --------P-17CD02-----------------------------
  24635. INT 17 - INSET - INITIALIZE
  24636.     AX = CD02h
  24637. Return: CX = 07C2h (1986d)
  24638. Note:    all open files are closed and the printer is reset
  24639. SeeAlso: AX=CD04h
  24640. --------P-17CD03-----------------------------
  24641. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  24642.     AX = CD03h
  24643. Return: CX = 07C2h (1986d)
  24644. --------P-17CD04-----------------------------
  24645. INT 17 - INSET - INITIALIZE LINKED MODE
  24646.     AX = CD04h
  24647.     ES:SI -> FAR routine for linked mode (see #0453)
  24648. Return: CX = 07C2h
  24649. SeeAlso: AX=CD02h,AX=CD08h
  24650.  
  24651. (Table 0453)
  24652. Values INSET linked-mode routine is called with:
  24653.     AL = function
  24654.         00h send character to printer
  24655.         BL = character to send
  24656.         01h send string to printer
  24657.         CX = number of bytes to send
  24658.         DS:DX -> buffer containing data
  24659.         02h move print head to horizontal starting position of image
  24660. Return:    AX = status
  24661.         0000h success
  24662.         0001h failure
  24663. --------P-17CD05-----------------------------
  24664. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  24665.     AX = CD05h
  24666.     DS:DX -> ASCIZ name of PIX file
  24667.     CX = left margin of text in 1/720th inch
  24668. Return: AH = printer type
  24669.         00h page-oriented (multiple images may be placed side-by-side)
  24670.         01h line-oriented (use AX=CD06h for vertical paper movement)
  24671.     CX = 07C2h (1986d)
  24672. SeeAlso: AX=CD07h
  24673. --------P-17CD06-----------------------------
  24674. INT 17 - INSET - GRAPHICS LINE FEED
  24675.     AX = CD06h
  24676. Return: AH = completion status
  24677.         00h image complete
  24678.         01h image incomplete
  24679.     CX = 07C2h (1986d)
  24680. SeeAlso: AX=CD09h
  24681. --------P-17CD07-----------------------------
  24682. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  24683.     AX = CD07h
  24684. Return: CX = 07C2h
  24685. SeeAlso: AX=CD05h
  24686. --------P-17CD08-----------------------------
  24687. INT 17 - INSET - CANCEL LINK MODE
  24688.     AX = CD08h
  24689. Return: CX = 07C2h
  24690. SeeAlso: AX=CD04h
  24691. --------P-17CD09-----------------------------
  24692. INT 17 - INSET - ALTER TEXT LINE SPACING
  24693.     AX = CD09h
  24694.     CX = line spacing in 1/720th inch
  24695. Return: CX = 07C2h
  24696. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  24697. SeeAlso: AX=CD06h
  24698. --------P-17CD0A-----------------------------
  24699. INT 17 - INSET - GET SETUP
  24700.     AX = CD0Ah
  24701.     DS:DX -> buffer for IN.SET data
  24702. Return: CX = 07C2h
  24703. --------P-17CD0B-----------------------------
  24704. INT 17 - INSET - START GETTING SCALED IMAGE
  24705.     AX = CD0Bh
  24706.     DS:SI -> ASCIZ pathname of .PIX file
  24707.     BX = number of bitplanes
  24708.     CX = number of rows in output bitmap
  24709.     DX = number of columns in output bitmap
  24710. Return: AX = status
  24711.         0000h OK
  24712.         FFFFh error
  24713. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  24714. --------P-17CD0C-----------------------------
  24715. INT 17 - INSET - GET NEXT IMAGE STRIP
  24716.     AX = CD0Ch
  24717. Return: AX = status
  24718.         0000h OK but not complete
  24719.         0001h OK and image complete
  24720.         FFFFh error
  24721.     DS:SI -> buffer (max 4K) for bit map strip
  24722.     CX = start row
  24723.     DX = number of rows
  24724.     BX = offset in bytes between bit planes
  24725. Note:    buffer may be overwritten by subsequent calls
  24726. SeeAlso: AX=CD0Bh
  24727. --------P-17F0-------------------------------
  24728. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  24729.     AH = F0h
  24730.     DX = printer port (0-3)
  24731. Return: AX = 0001h Jetstream present
  24732.          else  non-Jetstream port
  24733. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  24734.       to drive printers at up to 80000 characters per second
  24735. --------P-17F1-------------------------------
  24736. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  24737.     AH = F1h
  24738.     CX = data buffer length
  24739.     DX = printer port (0-3)
  24740.     DS:SI -> data buffer
  24741. Return: AX = status
  24742.         0000h printer not ready (see also AH=02h)
  24743.         other printing started
  24744. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  24745. --------P-17F2-------------------------------
  24746. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  24747.     AH = F2h
  24748.     DX = printer port (0-3)
  24749. Return: AX = status
  24750.         0000h prior print request finished
  24751.         other number of characters left to print
  24752. SeeAlso: AH=02h,AH=F1h,AH=F3h
  24753. --------P-17F3-------------------------------
  24754. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  24755.     AH = F3h
  24756.     DX = printer port (0-3)
  24757. Return: AX = number of unprinted characters due to abort
  24758. SeeAlso: AH=F1h,AH=F4h
  24759. --------P-17F4-------------------------------
  24760. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  24761.     AH = F4h
  24762.     DX = printer port (0-3)
  24763.     DS:DS -> FAR post address (called with interrupts on)
  24764. SeeAlso: AH=F1h,AH=F3h
  24765. --------P-17F5-------------------------------
  24766. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  24767.     AH = F5h
  24768.     CX = data buffer length
  24769.     DX = printer port (0-3)
  24770.     DS:SI -> data buffer (32-bit physical address)
  24771. Return: AX = status
  24772.         0000h printer not ready (see also AH=02h)
  24773.         other printing started
  24774. SeeAlso: AH=F1h
  24775. --------c-17FF--BX0000-----------------------
  24776. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  24777.     AH = FFh
  24778.     BX = 0000h
  24779.     CX = 0000h
  24780.     DX = printer port number
  24781. Return: AH = printer status (see #0444 at AH=00h)
  24782. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  24783.       operating system by The Software Link, Inc.
  24784. Desc:    close the spool file immediately instead of waiting for the close time
  24785.       to elapse
  24786. SeeAlso: AH=01h,AH=03h"PC-MOS"
  24787. --------B-18---------------------------------
  24788. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  24789. Desc:    called when there is no bootable disk available to the system
  24790. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  24791.       unpredictable on compatibles; this interrupt often reboots the
  24792.       system, and often has no effect at all
  24793.     network cards with their own BIOS can hook this interrupt to allow
  24794.       a diskless boot off the network (even when a hard disk is present
  24795.       if none of the partitions is marked as the boot partition)
  24796. SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
  24797. --------J-1800-------------------------------
  24798. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  24799.     AH = 00h
  24800. Return: AX = keystroke
  24801. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  24802. --------J-1801-------------------------------
  24803. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  24804.     AH = 01h
  24805. Return: ZF set if no keystroke available
  24806.     ZF clear if keystroke available
  24807.         AX = keystroke
  24808. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  24809. --------J-1802-------------------------------
  24810. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  24811.     AH = 02h
  24812. Return: AL = shift flags
  24813. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  24814. --------J-1803-------------------------------
  24815. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  24816.     AH = 03h
  24817.     ???
  24818. Return: ???
  24819. SeeAlso: AH=00h,AH=04h
  24820. --------J-1804-------------------------------
  24821. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  24822.     AH = 04h
  24823.     ???
  24824. Return: ???
  24825. Note:    details are not available at this time
  24826. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  24827. --------J-18---------------------------------
  24828. INT 18 - NEC PC-9800 series - VIDEO
  24829.     AH = function
  24830.         0Ah set video mode
  24831.         0Bh get video mode
  24832.         0Ch start text screen display
  24833.         0Dh end text screen display
  24834.         0Eh set single display area
  24835.         0Fh set multiple display area
  24836.         10h set cursor shape
  24837.         11h display cursor
  24838.         12h terminate cursor
  24839.         13h set cursor position
  24840.         14h read font patter
  24841.         16h initialize text video RAM
  24842.         1Ah define user character
  24843.     ???
  24844. Return: ???
  24845. Notes:    details are not available at this time
  24846.     text video RAM is located at segments A000h (characters) and A200h
  24847.       (attributes)
  24848. ----------185350BX4849-----------------------
  24849. INT 18 - SPHINX C-- - WB.COM - API
  24850.     AX = 5350h ('SP')
  24851.     BX = 4849h ('HI')
  24852.     CX = 4E58h ('NX')
  24853.     DH = function
  24854.         01h set ???
  24855.         DL = ???
  24856.         02h get ???
  24857.         Return: DL = ???
  24858.         03h get ???
  24859.         Return: ES:DI -> ??? data buffer
  24860.         06h ???
  24861. Return: AX = 7370h ('sp') if installed
  24862.     BX = 6869h ('hi') if installed
  24863.     CX = 6E78h ('nx') if installed
  24864. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  24865.       which is a cross between C and assembler; WB.COM is the driver which
  24866.       launches the WorkBench
  24867. --------s-186900-----------------------------
  24868. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  24869.     AX = 6900h
  24870. Return: AX = amount of DRAM on card or 0000h if GUS not available
  24871. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  24872.       and then shells out the the program requiring its services
  24873. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  24874. --------s-186901-----------------------------
  24875. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  24876.     AX = 6901h
  24877.     BX = number of active voices (14-32)
  24878. Return: nothing
  24879. SeeAlso: AX=6900h
  24880. --------s-186902-----------------------------
  24881. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  24882.     AX = 6902h
  24883.     BX = voice number (00h-1Fh)
  24884.     CX = linear volume (0000h-01FFh)
  24885. Return: nothing
  24886. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  24887. --------s-186903-----------------------------
  24888. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  24889.     AX = 6903h
  24890.     BX = voice number (00h-1Fh)
  24891.     CX = frequency in Hz (0-44100)
  24892. Return: nothing
  24893. SeeAlso: AX=6902h,AX=6904h
  24894. --------s-186904-----------------------------
  24895. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  24896.     AX = 6904h
  24897.     BX = voice number (00h-1Fh)
  24898.     CX = balance (0 = left, 7 = even, 15 = right)
  24899. Return: nothing
  24900. SeeAlso: AX=6902h,AX=6903h
  24901. --------s-186905-----------------------------
  24902. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  24903.     AX = 6905h
  24904.     BL = voice number
  24905.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  24906.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  24907.     CH:DI = 20-bit starting address for voice data
  24908.     DL:SI = 20-bit address for loop start
  24909.     DH:BP = 20-bit address for loop end
  24910. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  24911. --------s-186906-----------------------------
  24912. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  24913.     AX = 6906h
  24914.     BL = data format (1 = twos-complement, 0 = not)
  24915.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  24916.     CX = number of bytes to send
  24917.     ES:SI -> buffer containing data
  24918.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  24919. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  24920. --------s-186907-----------------------------
  24921. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  24922.     AX = 6907h
  24923.     BX = voice number (00h-1Fh)
  24924. Return: nothing
  24925. SeeAlso: AX=6908h,AX=690Dh
  24926. --------s-186908-----------------------------
  24927. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  24928.     AX = 6908h
  24929.     BX = voice number (00h-1Fh)
  24930.     CL:DX = 20-bit ending address
  24931. Return: nothing
  24932. SeeAlso: AX=690Bh
  24933. --------s-186909-----------------------------
  24934. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  24935.     AX = 6909h
  24936.     BL = voice number (00h-1Fh)
  24937.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  24938.     CX = starting volume
  24939.     DX = ending volume
  24940.     DI:SI = time
  24941. Return: nothing
  24942. SeeAlso: AX=6902h,AX=690Ah
  24943. --------s-18690A-----------------------------
  24944. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  24945.     AX = 690Ah
  24946.     BX = voice number (00h-1Fh)
  24947. Return: AX = current non-linear volume for voice
  24948. SeeAlso: AX=6902h,AX=6909h
  24949. --------s-18690B-----------------------------
  24950. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  24951.     AX = 690Bh
  24952.     BX = voice number
  24953. Return: BX:AX = 20-bit address at which voice is playing
  24954. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  24955. --------s-18690C-----------------------------
  24956. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  24957.     AX = 690Ch
  24958.     BL = data format (1 = twos-complement, 0 = not)
  24959.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  24960.     CX = number of bytes to get
  24961.     ES:SI -> buffer for retrieved data
  24962.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  24963. Return: nothing
  24964. SeeAlso: AX=6906h
  24965. --------s-18690D-----------------------------
  24966. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  24967.     AX = 690Dh
  24968.     BX = voice
  24969.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  24970.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  24971. Return: CX = balance value
  24972. SeeAlso: AX=6907h,AX=6908h
  24973. --------s-188000-----------------------------
  24974. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  24975.     AX = 8000h
  24976. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  24977.       INT 18h and then shells out to the program requiring its services
  24978. SeeAlso: AX=8001h,AX=8004h
  24979. --------s-188001-----------------------------
  24980. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  24981.     AX = 8001h
  24982.     BX:CX -> ASCIZ filename
  24983. SeeAlso: AX=8000h,AX=8002h
  24984. --------s-188002-----------------------------
  24985. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  24986.     AX = 8002h
  24987. SeeAlso: AX=8002h,AX=8003h
  24988. --------s-188003-----------------------------
  24989. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  24990.     AX = 8003h
  24991. --------s-188004-----------------------------
  24992. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  24993.     AX = 8004h
  24994. SeeAlso: AX=8000h,AX=8003h
  24995. --------B-19---------------------------------
  24996. INT 19 - SYSTEM - BOOTSTRAP LOADER
  24997. Desc:    This interrupt reboots the system without clearing memory or restoring
  24998.       interrupt vectors.  Because interrupt vectors are preserved, this
  24999.       interrupt usually causes a system hang if any TSRs have hooked
  25000.       vectors from 00h through 1Ch, particularly INT 08.
  25001. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  25002.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  25003.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  25004.       This sector should contain a master bootstrap loader and a partition
  25005.       table (see #0455).  After loading the master boot sector at
  25006.       0000h:7C00h, the master bootstrap loader is given control.  It will
  25007.       scan the partition table for an active partition, and will then load
  25008.       the operating system's bootstrap loader (contained in the first
  25009.       sector of the active partition) and give it control.
  25010.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  25011.       disk have a valid boot sector
  25012.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  25013.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  25014.       a reset, store 0000h at 0040h:0072h before jumping.
  25015.     VDISK.SYS hooks this interrupt to allow applications to find out how
  25016.       much extended memory has been used by VDISKs (see #0454).  DOS 3.3+
  25017.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  25018.       at the beginning of its INT 19 handler segment, thus causing some
  25019.       programs to overwrite extended memory which is already in use.
  25020.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  25021.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  25022.       contains extended partitions which point at each other in a loop,
  25023.       since it will never find the end of the linked list of extended
  25024.       partitions
  25025.     under Windows Real and Enhanced modes, calling INT 19 will hang the
  25026.       system in the same was as under bare DOS; under Windows Standard
  25027.       mode, INT 19 will successfully perform a cold reboot as it appears
  25028.       to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
  25029. SeeAlso: INT 14/AH=17h,INT 18,INT 5B"PC Cluster"
  25030.  
  25031. Format of VDISK header block (at beginning of INT 19 handler's segment):
  25032. Offset    Size    Description    (Table 0454)
  25033.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  25034.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  25035.  1Dh 15 BYTEs    n/a
  25036.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  25037.  
  25038. Format of hard disk master boot sector:
  25039. Offset    Size    Description    (Table 0455)
  25040.  00h 446 BYTEs    Master bootstrap loader code
  25041. 1BEh 16 BYTEs    partition record for partition 1 (see #0456)
  25042. 1CEh 16 BYTEs    partition record for partition 2
  25043. 1DEh 16 BYTEs    partition record for partition 3
  25044. 1EEh 16 BYTEs    partition record for partition 4
  25045. 1FEh    WORD    signature, AA55h indicates valid boot block
  25046.  
  25047. Format of partition record:
  25048. Offset    Size    Description    (Table 0456)
  25049.  00h    BYTE    boot indicator (80h = active partition)
  25050.  01h    BYTE    partition start head
  25051.  02h    BYTE    partition start sector (bits 0-5)
  25052.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  25053.  04h    BYTE    operating system indicator (see #0457)
  25054.  05h    BYTE    partition end head
  25055.  06h    BYTE    partition end sector (bits 0-5)
  25056.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  25057.  08h    DWORD    sectors preceding partition
  25058.  0Ch    DWORD    length of partition in sectors
  25059.  
  25060. (Table 0457)
  25061. Values for operating system indicator:
  25062.  00h    empty
  25063.  01h    DOS 12-bit FAT
  25064.  02h    XENIX root file system
  25065.  03h    XENIX /usr file system (obsolete)
  25066.  04h    DOS 16-bit FAT
  25067.  05h    DOS 3.3+ extended partition
  25068.  06h    DOS 3.31+ Large File System
  25069.  07h    QNX
  25070.  07h    OS/2 HPFS
  25071.  07h    Advanced Unix
  25072.  08h    AIX bootable partition, SplitDrive
  25073.  09h    AIX data partition
  25074.  09h    Coherent filesystem
  25075.  0Ah    OS/2 Boot Manager
  25076.  0Ah    OPUS
  25077.  0Ah    Coherent swap partition
  25078.  10h    OPUS
  25079.  12h    Compaq Diagnostics partition
  25080.  18h    AST special Windows swap file
  25081.  24h    NEC MS-DOS 3.x
  25082.  40h    VENIX 80286
  25083.  50h    Disk Manager, read-only partition
  25084.  51h    Disk Manager, read/write partition
  25085.  51h    Novell???
  25086.  52h    CP/M
  25087.  52h    Microport System V/386
  25088.  56h    GoldenBow VFeature
  25089.  61h    SpeedStor
  25090.  63h    Unix SysV/386, 386/ix
  25091.  63h    Mach, MtXinu BSD 4.3 on Mach
  25092.  63h    GNU HURD
  25093.  64h    Novell NetWare
  25094.  65h    Novell NetWare (3.11)
  25095.  70h    DiskSecure Multi-Boot
  25096.  75h    PC/IX
  25097.  80h    Minix v1.1 - 1.4a
  25098.  81h    Minix v1.4b+
  25099.  81h    Linux
  25100.  81h    Mitac Advanced Disk Manager
  25101.  82h    Linux Swap partition
  25102.  83h    Linux native file system (ext2fs/xiafs)
  25103.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  25104.  93h    Amoeba file system
  25105.  94h    Amoeba bad block table
  25106.  B7h    BSDI file system (secondarily swap)
  25107.  B8h    BSDI swap partition (secondarily file system)
  25108.  C1h    DR-DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  25109.  C4h    DR-DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  25110.  C6h    DR-DOS 6.0 LOGIN.EXE-secured Huge partition
  25111.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  25112.  DBh    CTOS (Convergent Technologies OS)
  25113.  E1h    SpeedStor 12-bit FAT extended partition
  25114.  E4h    SpeedStor 16-bit FAT extended partition
  25115.  F2h    DOS 3.3+ secondary
  25116.  FEh    LANstep
  25117.  FFh    Xenix bad block table
  25118. --------B-1A00-------------------------------
  25119. INT 1A - TIME - GET SYSTEM TIME
  25120.     AH = 00h
  25121. Return: CX:DX = number of clock ticks since midnight
  25122.     AL = midnight flag, nonzero if midnight passed since time last read
  25123. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  25124.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  25125.       it, leading to loss of a day if two consecutive midnights pass
  25126.       without a request for the time (e.g. if the system is on but idle)
  25127. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 62/AX=0099h
  25128. --------B-1A01-------------------------------
  25129. INT 1A - TIME - SET SYSTEM TIME
  25130.     AH = 01h
  25131.     CX:DX = number of clock ticks since midnight
  25132. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  25133. --------B-1A02-------------------------------
  25134. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  25135.     AH = 02h
  25136. Return: CF clear if successful
  25137.         CH = hour (BCD)
  25138.         CL = minutes (BCD)
  25139.         DH = seconds (BCD)
  25140.         DL = daylight savings flag (00h standard time, 01h daylight time)
  25141.     CF set on error (i.e. clock not running or in middle of update)
  25142. SeeAlso: AH=00h
  25143. --------B-1A03-------------------------------
  25144. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  25145.     AH = 03h
  25146.     CH = hour (BCD)
  25147.     CL = minutes (BCD)
  25148.     DH = seconds (BCD)
  25149.     DL = daylight savings flag (00h standard time, 01h daylight time)
  25150. SeeAlso: AH=01h
  25151. --------B-1A04-------------------------------
  25152. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  25153.     AH = 04h
  25154. Return: CF clear if successful
  25155.         CH = century (BCD)
  25156.         CL = year (BCD)
  25157.         DH = month (BCD)
  25158.         DL = day (BCD)
  25159.     CF set on error
  25160. SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
  25161. --------B-1A05-------------------------------
  25162. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  25163.     AH = 05h
  25164.     CH = century (BCD)
  25165.     CL = year (BCD)
  25166.     DH = month (BCD)
  25167.     DL = day (BCD)
  25168. SeeAlso: AH=04h,INT 21/AH=2Bh
  25169. --------B-1A06-------------------------------
  25170. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  25171.     AH = 06h
  25172.     CH = hour (BCD)
  25173.     CL = minutes (BCD)
  25174.     DH = seconds (BCD)
  25175. Return: CF set on error (alarm already set or clock stopped for update)
  25176.     CF clear if successful
  25177. Notes:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  25178.       time
  25179.     the BIOS does not check for invalid values for the time, so the CMOS
  25180.       clock chip's "don't care" setting (any values between C0h and FFh)
  25181.       may be used for any or all three part.  For example, to create an
  25182.       alarm once a minute, every minute, call with CH=C0h, CL=C0h, and
  25183.       DH=00h.
  25184. SeeAlso: AH=07h,INT 4A
  25185. --------B-1A07-------------------------------
  25186. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  25187.     AH = 07h
  25188. Return: alarm disabled
  25189. Note:    does not disable the real-time clock's IRQ
  25190. SeeAlso: AH=06h,INT 70
  25191. --------B-1A08-------------------------------
  25192. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  25193.     AH = 08h
  25194.     CH = hours in BCD
  25195.     CL = minutes in BCD
  25196.     DH = seconds in BCD
  25197. SeeAlso: AH=09h
  25198. --------B-1A09-------------------------------
  25199. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  25200.     AH = 09h
  25201. Return: CH = hours in BCD
  25202.     CL = minutes in BCD
  25203.     DH = seconds in BCD
  25204.     DL = alarm status
  25205.         00h alarm not enabled
  25206.         01h alarm enabled but will not power up system
  25207.         02h alarm will power up system
  25208. SeeAlso: AH=08h
  25209. --------B-1A0A-------------------------------
  25210. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  25211.     AH = 0Ah
  25212. Return: CF set on error
  25213.     CF clear if successful
  25214.         CX = count of days since Jan 1,1980
  25215. SeeAlso: AH=04h,AH=0Bh
  25216. --------B-1A0B-------------------------------
  25217. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  25218.     AH = 0Bh
  25219.     CX = count of days since Jan 1,1980
  25220. Return: CF set on error
  25221.     CF clear if successful
  25222. SeeAlso: AH=05h,AH=0Ah
  25223. --------J-1A10-------------------------------
  25224. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  25225.     AH = 10h
  25226.     ???
  25227. Return: ???
  25228. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  25229. --------J-1A11-------------------------------
  25230. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  25231.     AH = 11h
  25232.     ???
  25233. Return: ???
  25234. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  25235. --------J-1A12-------------------------------
  25236. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  25237.     AH = 12h
  25238.     ???
  25239. Return: ???
  25240. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  25241. --------A-1A3601-----------------------------
  25242. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  25243.     AX = 3601h
  25244. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  25245.         ASCIZ string "WPCORP\0"
  25246. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  25247.       third party product wants to interface with it.  The third party
  25248.       product must intercept this interrupt and return the address of a
  25249.       keyboard monitor routine.
  25250.     Before checking for keyboard input, and after every key entered by the
  25251.       user, Word Perfect will call the routine whose address was provided
  25252.       in DS:SI with the following parameters:
  25253.         Entry:    AX = key code or 0
  25254.             BX = WordPerfect state flag
  25255.         Exit:    AX = 0 or key code
  25256.             BX = 0 or segment address of buffer with key codes
  25257.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  25258. SeeAlso: INT 16/AX=5500h
  25259. --------N-1A6108-----------------------------
  25260. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  25261.     AX = 6108h
  25262.     STACK:    WORD    conversation ID (0000h-0009h)
  25263.         DWORD    pointer to message buffer
  25264.         WORD    length of message
  25265.         DWORD    pointer to reply buffer
  25266.         WORD    length of reply buffer
  25267.         WORD    0000h (use default "Cparams" structure)
  25268. Return: AX = status (see #0458)
  25269.     STACK unchanged
  25270. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25271.       which implements the Simple Network Application Protocol
  25272. SeeAlso: AX=6205h
  25273.  
  25274. (Table 0458)
  25275. Values for SNAP.EXE status:
  25276.  0000h    successful
  25277.  F830h    "SNAP_ABORTED"
  25278.  FC04h    "SNAP_SERVERDIED"
  25279.  FC05h    "SNAP_RESEND"
  25280.  FC06h    "SNAP_SELECTFAILED"
  25281.  FC07h    "SNAP_WRONGVERSION"
  25282.  FC08h    "SNAP_INVALIDACK"
  25283.  FC09h    "SNAP_TIMEOUT"
  25284.  FC0Ah    "SNAP_SERVERREJECT"
  25285.  FC0Bh    "SNAP_NOREPLYDUE"
  25286.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  25287.  FC0Dh    "SNAP_NOINIT"
  25288.  FC0Eh    "SNAP_SOCKETERROR"
  25289.  FC0Fh    "SNAP_BUFFERLIMIT"
  25290.  FC10h    "SNAP_INVALIDCID"
  25291.  FC11h    "SNAP_INVALIDOP"
  25292.  FC12h    "SNAP_XMITFAIL"
  25293.  FC13h    "SNAP_NOMORERETRIES"
  25294.  FC14h    "SNAP_BADPARMS"
  25295.  FC15h    "SNAP_NOMEMORY"
  25296.  FC16h    "SNAP_NOMORECONVS"
  25297.  FFFFh    failed (invalid function/parameter)
  25298. --------N-1A6205-----------------------------
  25299. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  25300.     AX = 6205h
  25301.     STACK:    WORD    conversation ID (0000h-0009h)
  25302.         DWORD    pointer to message
  25303.         WORD    length of message
  25304.         WORD    0000h (use default "Cparms" structure)
  25305. Return: AX = status (see #0458)
  25306.     STACK unchanged
  25307. SeeAlso: AX=6108h
  25308. --------N-1A6308-----------------------------
  25309. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  25310.     AX = 6308h
  25311.     STACK:    WORD    offset of ASCIZ "guardian"
  25312.         WORD    offset of ASCIZ hostname
  25313.         WORD    offset of ASCIZ server name
  25314.         WORD    offset of ASCIZ userid
  25315.         WORD    offset of ASCIZ password
  25316.         WORD    offset of password length
  25317.         WORD    offset of password type
  25318.         WORD    offset of "Cparms" structure (see #0459)
  25319. Return: ???
  25320.     STACK unchanged
  25321. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  25322.       to allocate a buffer)
  25323. SeeAlso: AX=6405h,AX=7202h
  25324.  
  25325. Format of SNAP.EXE Cparms structure:
  25326. Offset    Size    Description    (Table 0459)
  25327.  00h    WORD    retry delay in seconds
  25328.  02h    WORD    timeout delay in seconds
  25329.  04h    WORD    maximum buffer size
  25330.  06h    WORD    encryption level
  25331. --------N-1A6405-----------------------------
  25332. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  25333.     AX = 6405h
  25334.     STACK:    WORD    conversation ID (0000h-0009h)
  25335.         DWORD    pointer to message buffer
  25336.         WORD    length of message
  25337.         WORD    0000h (use default "Cparms" structure)
  25338. Return: AX = status (see #0458)
  25339.     STACK unchanged
  25340. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25341.       which implements the Simple Network Application Protocol
  25342. SeeAlso: AX=6308h
  25343. --------N-1A6900-----------------------------
  25344. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  25345.     AX = 6900h
  25346. Return: AX = value used for DS by resident code
  25347. SeeAlso: AX=6A01h,AX=6F01h
  25348. --------N-1A6A01-----------------------------
  25349. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  25350.     AX = 6A01h
  25351.     STACK:    WORD    number of bytes to allocate
  25352. Return: AX = offset of allocated buffer or 0000h if out of memory
  25353.     STACK unchanged
  25354. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25355.       which implements the Simple Network Application Protocol
  25356. SeeAlso: AX=6B01h
  25357. --------N-1A6B01-----------------------------
  25358. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  25359.     AX = 6B01h
  25360.     STACK:    WORD    offset within SNAP data segment of previously allocated
  25361.             buffer
  25362. Return: STACK unchanged
  25363. Note:    this call is a NOP if the specified offset is 0000h
  25364. SeeAlso: AX=6A01h
  25365. --------N-1A6C04-----------------------------
  25366. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  25367.     AX = 6C04h
  25368.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  25369.         WORD    segment of source buffer
  25370.         WORD    offset of source buffer
  25371.         WORD    number of bytes to copy
  25372. Return: AX = offset of byte after last one copied to destination
  25373.     STACK unchanged
  25374. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25375.       which implements the Simple Network Application Protocol
  25376. SeeAlso: AX=6D04h
  25377. --------N-1A6D04-----------------------------
  25378. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  25379.     AX = 6D04h
  25380.     STACK:    WORD    offset within SNAP data segment of source buffer
  25381.         WORD    segment of destination buffer
  25382.         WORD    offset of destination buffer
  25383.         WORD    number of bytes to copy
  25384. Return: AX = offset of byte after last one copied from source
  25385.     buffer filled
  25386.     STACK unchanged
  25387. SeeAlso: AX=6C04h
  25388. --------N-1A6E01-----------------------------
  25389. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  25390.     AX = 6E01h
  25391.     STACK:    WORD    new value for ???
  25392. Return: AX = old value of ???
  25393.     STACK unchanged
  25394. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25395.       which implements the Simple Network Application Protocol
  25396. --------N-1A6F01-----------------------------
  25397. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  25398.     AX = 6F01h
  25399.     STACK: WORD 0000h
  25400. Return: AX = status
  25401.         0000h SNAP is resident
  25402.         other SNAP not present
  25403.     STACK unchanged
  25404. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25405.       which implements the Simple Network Application Protocol, and is
  25406.       required by PCVENUS (a network shell).  The combination of SNAP and
  25407.       PCVENUS allows the use of the Andrew File System as one or more
  25408.       networked drives.
  25409. SeeAlso: AX=6900h,AX=7400h
  25410. --------N-1A7002-----------------------------
  25411. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  25412.     AX = 7002h
  25413.     STACK:    WORD    anchor number (0000h-0009h)
  25414.         WORD    new value for the anchor
  25415. Return: AX = status
  25416.         0000h successful
  25417.         FFFFh failed (top word on stack not in range 00h-09h)
  25418.     STACK unchanged
  25419. SeeAlso: AX=7101h
  25420. --------N-1A7101-----------------------------
  25421. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  25422.     AX = 7101h
  25423.     STACK:    WORD    anchor number (0000h-0009h)
  25424. Return: AX = anchor's value
  25425.     STACK unchanged
  25426. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25427.       which implements the Simple Network Application Protocol
  25428. SeeAlso: AX=7002h
  25429. --------N-1A7202-----------------------------
  25430. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  25431.     AX = 7202h
  25432.     STACK:    WORD    conversation ID (0000h-0009h)
  25433.         WORD    offset within resident data segment of "Cparms"
  25434.               structure (see #0459)
  25435. Return: AX = status???
  25436.     STACK unchanged
  25437. SeeAlso: AX=6308h
  25438. --------N-1A7302-----------------------------
  25439. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  25440.     AX = 7302h
  25441.     STACK:    WORD    conversation ID (0000h-0009h)
  25442.         WORD    offset within resident data segment of ???
  25443. Return: AX = ???
  25444.     ???
  25445.     STACK unchanged
  25446. SeeAlso: AX=7400h
  25447. --------N-1A7400-----------------------------
  25448. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  25449.     AX = 7400h
  25450. Return: AX = version (AH=major, AL=minor)
  25451. Note:    this call is only valid if SNAP is installed
  25452. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  25453. --------N-1A75-------------------------------
  25454. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  25455.     AH = 75h
  25456.     AL = ???
  25457. Return: AX = ??? (0000h)
  25458. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25459.       which implements the Simple Network Application Protocol
  25460. --------N-1A76-------------------------------
  25461. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  25462.     AH = 76h
  25463.     AL = ???
  25464. Return: AX = ???
  25465. --------N-1A77-------------------------------
  25466. INT 1A - SNAP.EXE 3.4 - ???
  25467.     AH = 77h
  25468.     AL = ??? (at least 01h)
  25469.     STACK:    WORD    ???
  25470.         ???
  25471. Return: ???
  25472.     STACK unchanged
  25473. --------N-1A7802-----------------------------
  25474. INT 1A - SNAP.EXE 3.4 - ???
  25475.     AX = 7802h
  25476.     STACK:    WORD    ???
  25477.         WORD    ???
  25478. Return: ???
  25479.     STACK unchanged
  25480. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  25481.       which implements the Simple Network Application Protocol
  25482. --------s-1A7F-------------------------------
  25483. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  25484.     AH = 7Fh
  25485.     ???
  25486. Return: ???
  25487. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  25488. SeeAlso: AH=80h,AH=83h,AH=85h
  25489. --------s-1A80-------------------------------
  25490. INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
  25491.     AH = 80h
  25492.     AL = 00h source is 8253 channel 2
  25493.          01h source is cassette input
  25494.          02h source is I/O channel "Audio IN"
  25495.          03h source is sound generator chip
  25496. Note:    although documented in the 1000TL Technical Reference, the 1000TL
  25497.       BIOS has just an IRET for this call
  25498. SeeAlso: AH=7Fh,AH=83h
  25499. --------X-1A80-------------------------------
  25500. INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
  25501.     AH = 80h
  25502. Return: CF clear if successful
  25503.         CX = 5353h ('SS') if Socket Services installed
  25504.         AL = number of adapters present (0-16)
  25505.         AH destroyed
  25506.     CF set on error
  25507.         AH = error code (see #0460)
  25508. SeeAlso: AH=83h"PCMCIA"
  25509.  
  25510. (Table 0460)
  25511. Values for PCMCIA error codes:
  25512.  01h    "BAD_ADAPTER" nonexistent adapter
  25513.  02h    "BAD_ATTRIBUTE" invalid attribute specified
  25514.  03h    "BAD_BASE" invalid system memory base address
  25515.  04h    "BAD_EDC" invalid EDC generator specified
  25516.  05h    "BAD_INDICATOR" invalid indicator specified
  25517.  06h    "BAD_IRQ" invalid IRQ channel specified
  25518.  07h    "BAD_OFFSET" invalid PCMCIA card offset specified
  25519.  08h    "BAD_PAGE" invalid page specified
  25520.  09h    "BAD_READ" unable to complete request
  25521.  0Ah    "BAD_SIZE" invalid window size specified
  25522.  0Bh    "BAD_SOCKET" nonexistent socket specified
  25523.  0Ch    "BAD_TECHNOLOGY" unsupported Card Technology for writes
  25524.  0Dh    "BAD_TYPE" unavailable window type specified
  25525.  0Eh    "BAD_VCC" invalid Vcc power level index specified
  25526.  0Fh    "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
  25527.  10h    "BAD_WAIT" invalid number of wait states specified
  25528.  11h    "BAD_WINDOW" nonexistent window specified
  25529.  12h    "BAD_WRITE" unable to complete request
  25530.  13h    "NO_ADAPTERS" no adapters installed, but Socket Services is present
  25531.  14h    "NO_CARD" no card in socket
  25532. --------X-1A81-------------------------------
  25533. INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
  25534.     AH = 81h
  25535.     DS:DX -> callback routine (see #0461) or 0000h:0000h to disable
  25536. Return: CF clear if successful
  25537.         AH destroyed
  25538.     CF set on error
  25539.         AH = error code (see #0460)
  25540. Note:    the callback will be invoked on any socket changes whose notification
  25541.       has not been disabled with the status change enable mask; it may be
  25542.       invoked either while processing a hardware interrupt from the adapter
  25543.       or while processing the following Socket Services request
  25544. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  25545.  
  25546. (Table 0461)
  25547. Values PCMCIA callback routine is invoked with:
  25548.     AL = adapter number
  25549.     BH = status change interrupt enable mask (see #0462)
  25550.     BL = socket number
  25551.     DH = current socket status (see #0463)
  25552.     DL = current card status (see #0464)
  25553. Return: all registers preserved
  25554. Notes:    the callback may be invoked during a hardware interrupt, and may not
  25555.       call on Socket Services
  25556.     the callback will be invoked once for each socket with a status change
  25557.  
  25558. Bitfields for PCMCIA status change interrupt enable mask:
  25559. Bit(s)    Description    (Table 0462)
  25560.  7    card detect change
  25561.  6    ready change
  25562.  5    battery warning change
  25563.  4    battery dead change
  25564.  3    insertion request
  25565.  2    ejection request
  25566.  1-0    reserved (0)
  25567.  
  25568. Bitfields for PCMCIA current socket status:
  25569. Bit(s)    Description    (Table 0463)
  25570.  7    card changed
  25571.  6    reserved (0)
  25572.  5    card insertion complete
  25573.  4    card ejection complete
  25574.  3    card insertion request pending
  25575.  2    card ejection request pending
  25576.  1    card locked
  25577.  0    reserved (0)
  25578.  
  25579. Bitfields for PCMCIA current card status:
  25580. Bit(s)    Description    (Table 0464)
  25581.  7    card detect
  25582.  6    ready
  25583.  5    battery voltage detect 2 (battery warning)
  25584.  4    battery voltage detect 1 (battery dead)
  25585.  3-1    reserved (0)
  25586.  0    write protected
  25587. --------s-1A8100-----------------------------
  25588. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  25589.     AX = 8100h
  25590. Return: AL > 80h if supported
  25591.     AX = 00C4h if supported (1000SL/TL)
  25592.         CF set if sound chip is busy
  25593.         CF clear  if sound chip is free
  25594. Note:    the value of CF is not definitive; call this function until CF is
  25595.       clear on return, then call AH=84h"Tandy"
  25596. --------s-1A82-------------------------------
  25597. INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
  25598.     AH = 82h
  25599.     ES:BX -> buffer for sound samples
  25600.     CX = length of buffer
  25601.     DX = transfer rate (1-4095, 1 is fastest)
  25602. Return: AH = 00h
  25603.     CF set if sound busy
  25604.     CF clear if sound chip free
  25605. Note:    the value in DX should be 1/10 the corresponding value for
  25606.       INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL.  Call
  25607.       INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
  25608.     The BIOS issues an INT 15/AX=91FBh when the input is complete
  25609.     DMA across a 64K boundary is masked by the BIOS
  25610. --------X-1A82-------------------------------
  25611. INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
  25612.     AH = 82h
  25613.     DS:DX -> callback routine (see #0465) or 0000h:0000h
  25614. Return: CF clear if successful
  25615.         AH destroyed
  25616.     CF set on error
  25617.         AH = error code (see #0460)
  25618. Note:    the callback is invoked on a Write Multiple request with an unsupported
  25619.       card technology type
  25620. SeeAlso: AH=81h"PCMCIA",AH=94h
  25621.  
  25622. (Table 0465)
  25623. Values PCMCIA callback routine is invoked with:
  25624.     ES:AX -> Low-Level Socket Services Routines (see #0467)
  25625.     BH = socket attributes (see #0466)
  25626.     CX = number of bytes or words to write
  25627.     DS:SI -> data buffer to be written
  25628.     DX:DI -> 26-bit linear card address
  25629.     BP = card technology type
  25630. Return: CF clear if successful
  25631.     CF set on error
  25632.         AH = error code (07h,0Ch,12h,14h) (see #0460)
  25633.  
  25634. Bitfields for PCMCIA socket attributes:
  25635. Bit(s)    Description    (Table 0466)
  25636.  7-4    reserved (0)
  25637.  3    packed buffer
  25638.  2    even bytes only (only valid if 1 set)
  25639.  1    data width (clear = byte, set = word)
  25640.  0    memory type (clear = common, set = attribute)
  25641.  
  25642. Format of PCMCIA Low-Level Socket Services Routines:
  25643. Offset    Size    Description    (Table 0467)
  25644.  00h    WORD    offset of Write Many routine (see #0468)
  25645.  02h    WORD    offset of Write One routine (see #0469)
  25646.  04h    WORD    offset of Read One routine (see #0470)
  25647.  06h    WORD    offset of Increment Offset routine (see #0471)
  25648.  08h    WORD    offset of Set Offset routine (see #0472)
  25649.  0Ah    WORD    offset of Get Status routine (see #0473)
  25650.  
  25651. (Table 0468)
  25652. Call Write Many routine with:
  25653.     BH = socket attributes (see #0466)
  25654.     CX = number of bytes or words to write
  25655.     DS:SI -> data to be written
  25656. Return: CF clear if successful
  25657.     CF set on error
  25658.  
  25659. (Table 0469)
  25660. Call Write One routine with:
  25661.     AL/AX = data to be written
  25662.     BH = socket attributes (see #0466)
  25663. Return: CF clear if successful
  25664.     CF set on error
  25665.  
  25666. (Table 0470)
  25667. Call Read One routine with:
  25668.     BH = socket attributes (see #0466)
  25669. Return: CF clear if successful
  25670.         AL/AX = data read
  25671.     CF set on error
  25672.  
  25673. (Table 0471)
  25674. Call Increment Offset routine with:
  25675.     BH = socket attributes (see #0466)
  25676. Return: CF clear if successful
  25677.     CF set on error
  25678.  
  25679. (Table 0472)
  25680. Call Set Offset routine with:
  25681.     DX:DI = new offset address
  25682. Return: CF clear if successful
  25683.     CF set on error
  25684.  
  25685. (Table 0473)
  25686. Call Get Status routine with:
  25687.     nothing
  25688. Return: AL = current card status (see #0464)
  25689. --------s-1A83-------------------------------
  25690. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  25691.     AH = 83h
  25692.     AL = volume (0=silence, 7=highest)
  25693.     CX = number of bytes to play
  25694.     DX = time between sound samples (multiples of 273 nanoseconds)
  25695.         only bits 11-0 used
  25696.     ES:BX -> sound data (array of 8-bit unsigned PCM samples)
  25697. Return: AH = 00h
  25698.     CF set if sound is busy
  25699.     CF clear if sound chip is free
  25700. Notes:    this call returns immediately while the sound plays in the
  25701.       background; the sound chip is clocked at 3.57 MHz, with the low 12
  25702.       bits of DX specifying the clock divisor
  25703.     The BIOS appears to call INT 15/AX=91FBh when the sound device
  25704.       underflows to allow another INT 1A/AH=83h for seamless playing of
  25705.       long sounds.
  25706. SeeAlso: AH=84h"Tandy",INT 15/AH=91h
  25707. --------X-1A83-------------------------------
  25708. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
  25709.     AH = 83h
  25710.     AL = adapter number
  25711. Return: CF clear if successful
  25712.         AX = Socket Services version (BCD)
  25713.         BX = implementation version (BCD)
  25714.         CX = 5353h ("SS")
  25715.         DS:SI -> ASCIZ implementor description
  25716.     CF set on error
  25717.         AH = error code (01h) (see #0460)
  25718. Note:    the current version (from the Revision A.00 documentation) of Socket
  25719.       Services is 1.00 (AX=0100h)
  25720. SeeAlso: AH=80h"PCMCIA"
  25721. --------s-1A84-------------------------------
  25722. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  25723.     AH = 84h
  25724. Return: ???
  25725. Note:    the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
  25726. SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
  25727. --------X-1A84-------------------------------
  25728. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
  25729.     AH = 84h
  25730.     AL = adapter number
  25731. Return: CF clear if successful
  25732.         AH destroyed
  25733.         BH = number of windows
  25734.         BL = number of sockets (1-16)
  25735.         CX = number of EDCs
  25736.         DH = capabilities (see #0474)
  25737.         DL = status change interrupt used (only if DH bit 3 set)(see #0475)
  25738.     CF set on error
  25739.         AH = error code (01h) (see #0460)
  25740. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  25741.  
  25742. Bitfields for PCMCIA capabilities:
  25743. Bit(s)    Description    (Table 0474)
  25744.  7-6    reserved (0)
  25745.  5    status change interrupt is hardware shareable
  25746.  4    status change interrupt is software shareable
  25747.  3    status change interrupt
  25748.  2    data bus width is per-socket rather than per-window
  25749.  1    power management is per-adapter rather than per-socket
  25750.  0    indicators are per-adapter rather than per-socket
  25751.  
  25752. (Table 0475)
  25753. Values for PCMCIA status change interrupt usage:
  25754.  00h-0Fh IRQ level
  25755.  10h    NMI
  25756.  11h    I/O check
  25757.  12h    bus error
  25758.  13h    vendor specific
  25759.  14h-FFh reserved
  25760. --------s-1A85-------------------------------
  25761. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  25762.     AH = 85h
  25763.     ???
  25764. Return: ???
  25765. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  25766. SeeAlso: AH=7Fh,AH=83h"Tandy"
  25767. --------X-1A85-------------------------------
  25768. INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
  25769.     AH = 85h
  25770.     AL = adapter number
  25771. Return: CF clear if successful
  25772.         AH destroyed
  25773.         DH = adapter attributes (see #0476)
  25774.     CF set on error
  25775.         AH = error code (01h) (see #0460)
  25776. SeeAlso: AH=84h"PCMCIA",AH=86h
  25777.  
  25778. Bitfields for PCMCIA adapter attributes:
  25779. Bit(s)    Description    (Table 0476)
  25780.  7-5    reserved (0)
  25781.  4    hardware share status change
  25782.  3    software share status change
  25783.  2    enable status change interrupts
  25784.  1    adapter preserves state information during reduced power consumption
  25785.  0    attempting to reduce power consumption
  25786. --------X-1A86-------------------------------
  25787. INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
  25788.     AH = 86h
  25789.     AL = adapter number
  25790.     DH = new adapter attributes (see #0476)
  25791. Return: CF clear if successful
  25792.         AH destroyed
  25793.     CF set on error
  25794.         AH = error code (01h) (see #0460)
  25795. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  25796. --------X-1A87-------------------------------
  25797. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
  25798.     AH = 87h
  25799.     AL = adapter number
  25800.     BH = window number
  25801. Return: CF clear if successful
  25802.         AH destroyed
  25803.         BL = capabilities (see #0477)
  25804.         CX = bitmap of assignable sockets
  25805.         DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
  25806.         DL = supported access speeds (see #0478)
  25807.         DS:SI -> Memory Window Characteristics table (see #0479)
  25808.         DS:DI -> I/O Window Characteristics table (see #0480)
  25809.     CF set on error
  25810.         AH = error code (01h,11h) (see #0460)
  25811. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  25812.  
  25813. Bitfields for PCMCIA window capabilities:
  25814. Bit(s)    Description    (Table 0477)
  25815.  7-5    reserved (0)
  25816.  4    separate enable for EISA comon space
  25817.  3    EISA I/O mappable
  25818.  2    I/O space
  25819.  1    attribute memory
  25820.  0    common memory
  25821.  
  25822. Bitfields for PCMCIA supported access speeds:
  25823. Bit(s)    Description    (Table 0478)
  25824.  7    reserved (0)
  25825.  6    600 ns
  25826.  5    300 ns
  25827.  4    250 ns
  25828.  3    200 ns
  25829.  2    150 ns
  25830.  1    100 ns
  25831.  0    WAIT line monitoring
  25832.  
  25833. Format of PCMCIA Memory Window Characteristics table:
  25834. Offset    Size    Description    (Table 0479)
  25835.  00h    WORD    window capabilities (see #0481)
  25836.  02h    WORD    minimum base address in 4K pages
  25837.  04h    WORD    maximum base address in 4K pages
  25838.  06h    WORD    minimum window size in 4K pages
  25839.  08h    WORD    maximum window size in 4K pages
  25840.  0Ah    WORD    window size granularity (4K units)
  25841.  0Ch    WORD    required base address alignment (4K units)
  25842.  0Eh    WORD    required card offset alignment (4K units)
  25843.  
  25844. Format of PCMCIA I/O Window Characteristics table:
  25845. Offset    Size    Description    (Table 0480)
  25846.  00h    WORD    window capabilities (see #0481)
  25847.  02h    WORD    minimum base address in bytes
  25848.  04h    WORD    maximum base address in bytes
  25849.  06h    WORD    minimum window size in bytes
  25850.  08h    WORD    maximum window size in bytes
  25851.  0Ah    WORD    window size granularity (bytes)
  25852.  
  25853. Bitfields for PCMCIA window capabilities:
  25854. Bit(s)    Description    (Table 0481)
  25855.  0    programmable base address
  25856.  1    programmable window size
  25857.  2    window disable/enable supported
  25858.  3    8-data bus
  25859.  4    16-data bus
  25860.  5    base address alignment on size boundary required
  25861.  6    power-of-two size granularity
  25862. ---memory windows---
  25863.  7    card offset must be aligned on size boundary
  25864.  8    paging hardware available
  25865.  9    paging hardware shared
  25866.  10    page disable/enable supported
  25867.  11-15    reserved (0)
  25868. ---I/O windows---
  25869.  7-15    reserved (0)
  25870. --------X-1A88-------------------------------
  25871. INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
  25872.     AH = 88h
  25873.     AL = adapter number
  25874.     BH = window number
  25875. Return: CF clear if successful
  25876.         AH destroyed
  25877.         BL = socket number (0-16) (0 = not assigned)
  25878.         CX = window size (bytes for I/O window, 4K units for memory window)
  25879.         DH = window attributes (see #0482)
  25880.         DL = access speed (only one bit set) (see #0478)
  25881.         SI = window base address (bytes if I/O, 4K units if memory)
  25882.         DI = card offset address (memory only, 4K units)
  25883.     CF set on error
  25884.         AH = error code (01h,11h) (see #0460)
  25885. SeeAlso: AH=87h,AH=89h,AH=8Ah
  25886.  
  25887. Bitfields for PCMCIA window attributes:
  25888. Bit(s)    Description    (Table 0482)
  25889.  0    memory-mapped rather than I/O-mapped
  25890.  1    attribute memory rather than common (memory-mapped)
  25891.     EISA mapped (I/O)
  25892.  2    enabled
  25893.  3    16-data path
  25894.  4    subdivided into pages (memory-mapped only)
  25895.  5    non-specific access slot enable (EISA-mapped only)
  25896.  6-7    reserved (0)
  25897. --------X-1A89-------------------------------
  25898. INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
  25899.     AH = 89h
  25900.     AL = adapter number
  25901.     BH = window number
  25902.     BL = socket number
  25903.     CX = window size (bytes if I/O window, 4K units if memory window)
  25904.     DH = window attributes (see #0482)
  25905.     DL = access speed (only one bit set) (see #0478)
  25906.     SI = window base address (bytes if I/O, 4K units if memory window)
  25907.     DI = card offset addrress (memory only, 4K units)
  25908. Return: CF clear if successful
  25909.         AH destroyed
  25910.     CF set on error
  25911.         AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #0460)
  25912. SeeAlso: AH=87h,AH=88h,AH=8Bh
  25913. --------X-1A8A-------------------------------
  25914. INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
  25915.     AH = 8Ah
  25916.     AL = adapter number
  25917.     BH = window number
  25918.     BL = page number
  25919. Return: CF clear if successful
  25920.         AH destroyed
  25921.         DX = page attributes (see #0483)
  25922.         DI = memory card offset (4K units)
  25923.     CF set on error
  25924.         AH = error code (01h,08h,11h) (see #0460)
  25925. Notes:    this function is only valid for memory-mapped windows
  25926.     the socket being operated on is implied by the previous AH=89h call
  25927. SeeAlso: AH=88h,AH=8Bh
  25928.  
  25929. Bitfields for PCMCIA page attributes:
  25930. Bit(s)    Description    (Table 0483)
  25931.  0    page enabled
  25932.  15-1    reserved (0)
  25933. --------X-1A8B-------------------------------
  25934. INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
  25935.     AH = 8Bh
  25936.     AL = adapter number
  25937.     BH = window number
  25938.     BL = page number
  25939.     DX = page attributes (see #0483)
  25940.     DI = memory card offset (4K units)
  25941. Return: CF clear if successful
  25942.         AH destroyed
  25943.     CF set on error
  25944.         AH = error code (01h,02h,07h,08h,11h) (see #0460)
  25945. Notes:    this function is only valid for memory-mapped windows
  25946.     the socket being operated on is implied by the previous AH=89h call
  25947. SeeAlso: AH=89h,AH=8Ah
  25948. --------X-1A8C-------------------------------
  25949. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
  25950.     AH = 8Ch
  25951.     AL = adapter number
  25952.     BL = socket number (01h to maximum supported by adapter)
  25953. Return: CF clear if successful
  25954.         AH destroyed
  25955.         DH = capabilities (see #0484)
  25956.         DL = hardware indicators (see #0485)
  25957.         DS:SI -> Socket Characteristics table (see #0486)
  25958.         DS:DI -> Power Management table (see #0488)
  25959.     CF set on error
  25960.         AH = error code (01h,0Bh) (see #0460)
  25961. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  25962.  
  25963. Bitfields for PCMCIA socket capabilities:
  25964. Bit(s)    Description    (Table 0484)
  25965.  0    card change
  25966.  1    card lock
  25967.  2    insert card (motor control)
  25968.  3    eject card (motor control)
  25969.  4-7    reserved (0)
  25970.  
  25971. Bitfields for PCMCIA socket hardware indicators:
  25972. Bit(s)    Description    (Table 0485)
  25973.  0    busy status
  25974.  1    write-protected
  25975.  2    battery status
  25976.  3    card lock status
  25977.  4    XIP status (eXecute-In-Place)
  25978.  5-7    reserved (0)
  25979.  
  25980. Format of PCMCIA Socket Characteristics table:
  25981. Offset    Size    Description    (Table 0486)
  25982.  00h    WORD    supported card types (see #0487)
  25983.  02h    WORD    steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
  25984.  04h    WORD    additional steerable IRQ levels
  25985.         bit 0: NMI
  25986.         bit 1: I/O check
  25987.         bit 2: bus error
  25988.         bit 3: vendor-unique
  25989.         bits 4-7 reserved (0)
  25990.  
  25991. Bitfields for supported card types:
  25992. Bit(s)    Description    (Table 0487)
  25993.  0    memory card
  25994.  1    I/O card
  25995.  2-7    reserved (0)
  25996.  
  25997. Format of PCMCIA Power Management table:
  25998. Offset    Size    Description    (Table 0488)
  25999.  00h    WORD    number of entries in table (0 if power management not avail)
  26000.  02h 2N BYTEs    power levels
  26001.         byte 0: voltage in 0.1V units
  26002.         byte 1: power supply
  26003.             bit 7: Vcc
  26004.             bit 6: Vpp1
  26005.             bit 5: Vpp2
  26006. --------X-1A8D-------------------------------
  26007. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
  26008.     AH = 8Dh
  26009.     AL = adapter number
  26010.     BL = socket number (01h to maximum supported by adapter)
  26011. Return: CF clear if successful
  26012.         AH destroyed
  26013.         BH = status change interrupt enable mask (see #0462)
  26014.         CH = Vcc level (lower nybble) (see #0488)
  26015.         CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  26016.         DH = current socket status (see #0463)
  26017.         DL = indicators (see #0485)
  26018.         SI = card type (see #0489)
  26019.         DI = IRQ level steering (I/O only) (see #0490)
  26020.     CF set on error
  26021.         AH = error code (01h,0Bh) (see #0460)
  26022. SeeAlso: AH=8Ch,AH=8Eh
  26023.  
  26024. Bitfields for PCMCIA card type:
  26025. Bit(s)    Description    (Table 0489)
  26026.  0    memory
  26027.  1    I/O
  26028.  2-15    reserved (0)
  26029.  
  26030. Bitfields for PCMCIA I/O level steering:
  26031. Bit(s)    Description    (Table 0490)
  26032.  15    interrupt steering enabled
  26033.  14-5    reserved (0)
  26034.  4-0    IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
  26035. --------X-1A8E-------------------------------
  26036. INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
  26037.     AH = 8Eh
  26038.     AL = adapter number
  26039.     BL = socket number (01h to maximum supported by adapter)
  26040.     BH = status change interrupt enable mask (see #0462)
  26041.     CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  26042.     DH = current socket status (see #0463)
  26043.     DL = indicators (see #0485)
  26044.     SI = card type (see #0489)
  26045.     DI = IRQ level steering (I/O only) (see #0490)
  26046. Return: CF clear if successful
  26047.         AH destroyed
  26048.     CF set on error
  26049.         AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #0460)
  26050. SeeAlso: AH=8Ch,AH=8Dh
  26051. --------X-1A8F-------------------------------
  26052. INT 1A - PCMCIA Socket Services v1.00 - GET CARD
  26053.     AH = 8Fh
  26054.     AL = adapter number
  26055.     BL = socket number (01h to maximum supported by adapter)
  26056. Return: CF clear if successful
  26057.         AH destroyed
  26058.         DL = current card status (see #0464)
  26059.     CF set on error
  26060.         AH = error code (01h,0Bh) (see #0460)
  26061. SeeAlso: AH=8Dh,AH=90h
  26062. --------X-1A90-------------------------------
  26063. INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
  26064.     AH = 90h
  26065.     AL = adapter number
  26066.     BL = socket number (01h to maximum supported by adapter)
  26067. Return: CF clear if successful
  26068.         AH destroyed
  26069.     CF set on error
  26070.         AH = error code (01h,0Bh,14h) (see #0460)
  26071. Note:    toggles RESET pin of the specified card, but does not wait after
  26072.       toggling the pin; it is the caller's responsibility to avoid
  26073.       accessing the card before it is ready again
  26074. --------X-1A91-------------------------------
  26075. INT 1A - PCMCIA Socket Services v1.00 - READ ONE
  26076.     AH = 91h
  26077.     AL = adapter number
  26078.     BL = socket number (01h to maximum supported by adapter)
  26079.     BH = attributes (see #0491)
  26080.     DX:SI = card address
  26081. Return: CF clear if successful
  26082.         AH destroyed
  26083.         CL/CX = value read
  26084.     CF set on error
  26085.         AH = error code (01h,07h,09h,0Bh,14h) (see #0460)
  26086.         CX may be destroyed
  26087. Note:    this function is only valid for I/O-mapped sockets
  26088. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  26089.  
  26090. Bitfields for PCMCIA attributes:
  26091. Bit(s)    Description    (Table 0491)
  26092.  2    even bytes only
  26093.  1    word rather than byte
  26094.  0    attribute memory instead of common memory
  26095. --------X-1A92-------------------------------
  26096. INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
  26097.     AH = 92h
  26098.     AL = adapter number
  26099.     BL = socket number (01h to maximum supported by adapter)
  26100.     BH = attributes (see #0491)
  26101.     CL/CX = value to write
  26102.     DX:SI = card address
  26103. Return: CF clear if successful
  26104.         AH destroyed
  26105.     CF set on error
  26106.         AH = error code (01h,07h,0Bh,12h,14h) (see #0460)
  26107. Note:    this function is only valid for I/O-mapped sockets; it also does not
  26108.       implement Card Technology handling--use AH=94h when writing to
  26109.       non-RAM technologies
  26110. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  26111. --------X-1A93-------------------------------
  26112. INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
  26113.     AH = 93h
  26114.     AL = adapter number
  26115.     BL = socket number (01h to maximum supported by adapter)
  26116.     BH = attributes (see #0491)
  26117.     CX = number of bytes or words to read
  26118.     DX:SI = card address
  26119.     DS:DI -> data buffer to be filled
  26120. Return: CF clear if successful
  26121.         AH destroyed
  26122.     CF set on error
  26123.         AH = error code (01h,07h,09h,0Bh,14h) (see #0460)
  26124. Note:    this function is only available on I/O-mapped sockets
  26125. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  26126. --------X-1A94-------------------------------
  26127. INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
  26128.     AH = 94h
  26129.     AL = adapter number
  26130.     BL = socket number (01h to maximum supported by adapter)
  26131.     BH = attributes (see #0491)
  26132.     CX = number of bytes or words to read
  26133.     DX:DI = card address
  26134.     DS:SI -> buffer containing data
  26135.     BP = Card Technology type (0000h = RAM)
  26136. Return: CF clear if successful
  26137.         AH destroyed
  26138.     CF set on error
  26139.         AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #0460)
  26140. Notes:    this function is only available on I/O-mapped sockets
  26141.     Socket Services calls the Card Technology callback (see #0465) for
  26142.       any card technology it does not directly support
  26143. SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  26144. --------X-1A95-------------------------------
  26145. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
  26146.     AH = 95h
  26147.     AL = adapter number
  26148.     BH = EDC generator number
  26149. Return: CF clear if successful
  26150.         AH destroyed
  26151.         CX = bitmap of assignable sockets
  26152.         DH = EDC capabilities (see #0492)
  26153.         DL = supported EDC types (see #0493)
  26154.     CF set on error
  26155.         AH = error code (01h,04h) (see #0460)
  26156. SeeAlso: AH=96h,AH=9Ch
  26157.  
  26158. Bitfields for EDC capabilities:
  26159. Bit(s)    Description    (Table 0492)
  26160.  0    unidirectional only generation
  26161.  1    bidirectional only generation
  26162.  2    register-based (I/O-mapped) support
  26163.  3    memory-mapped support
  26164.  4    pausable
  26165.  5-7    reserved (0)
  26166.  
  26167. Bitfields for supported EDC types:
  26168. Bit(s)    Description    (Table 0493)
  26169.  0    8-checksum
  26170.  1    16-CRC-SDLC
  26171.  2-7    reserved (0)
  26172. --------X-1A96-------------------------------
  26173. INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
  26174.     AH = 96h
  26175.     AL = adapter number
  26176.     BH = EDC generator number
  26177. Return: CF clear if successful
  26178.         AH destroyed
  26179.         BL = socket number
  26180.         DH = EDC attributes (see #0494)
  26181.         DL = EDC type (see #0493) (only one bit set)
  26182.     CF set on error
  26183.         AH = error code (01h,04h) (see #0460)
  26184. SeeAlso: AH=95h,AH=97h,AH=9Ch
  26185.  
  26186. Bitfields for EDC attributes:
  26187. Bit(s)    Description    (Table 0494)
  26188.  0    unidirectional only
  26189.  1    (if 0 set) clear=read, set=write
  26190.  2-7    reserved (0)
  26191. --------X-1A97-------------------------------
  26192. INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
  26193.     AH = 97h
  26194.     AL = adapter number
  26195.     BH = EDC generator
  26196.     BL = socket number
  26197.     DH = EDC attributes (see #0494)
  26198.     DL = EDC type (see #0493) (only one bit may be set)
  26199. Return: CF clear if successful
  26200.         AH destroyed
  26201.     CF set on error
  26202.         AH = error code (01h,02h,04h,0Bh) (see #0460)
  26203. SeeAlso: AH=96h,AH=9Ch
  26204. --------X-1A98-------------------------------
  26205. INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
  26206.     AH = 98h
  26207.     AL = adapter number
  26208.     BH = EDC generator
  26209. Return: CF clear if successful
  26210.         AH destroyed
  26211.     CF set on error
  26212.         AH = error code (01h,04h) (see #0460)
  26213. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  26214. --------X-1A99-------------------------------
  26215. INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
  26216.     AH = 99h
  26217.     AL = adapter number
  26218.     BH = EDC generator
  26219. Return: CF clear if successful
  26220.         AH destroyed
  26221.     CF set on error
  26222.         AH = error code (01h,04h) (see #0460)
  26223. SeeAlso: AH=9Ah
  26224. --------X-1A9A-------------------------------
  26225. INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
  26226.     AH = 9Ah
  26227.     AL = adapter number
  26228.     BH = EDC generator
  26229. Return: CF clear if successful
  26230.         AH destroyed
  26231.     CF set on error
  26232.         AH = error code (01h,04h) (see #0460)
  26233. SeeAlso: AH=99h,AH=98h
  26234. --------X-1A9B-------------------------------
  26235. INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
  26236.     AH = 9Bh
  26237.     AL = adapter number
  26238.     BH = EDC generator
  26239. Return: CF clear if successful
  26240.         AH destroyed
  26241.     CF set on error
  26242.         AH = error code (see #0460)
  26243. SeeAlso: AH=98h,AH=99h,AH=9Ch
  26244. --------X-1A9C-------------------------------
  26245. INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
  26246.     AH = 9Ch
  26247.     AL = adapter number
  26248.     BH = EDC generator
  26249. Return: CF clear if successful
  26250.         AH destroyed
  26251.         DL/DX = computed checksum or CRC
  26252.     CF set on error
  26253.         AH = error code (01h,04h) (see #0460)
  26254. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  26255. --------c-1AA0-------------------------------
  26256. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  26257.     AH = A0h
  26258. Return: AH = B0h if installed
  26259.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  26260.         ES = code segment
  26261.         ES:BX -> name of current spool file
  26262.         ES:SI -> current despool file
  26263.         CL = despooler state (00h disabled, 41h enabled)
  26264.         CH = spooler state (00h disabled, 41h enabled)
  26265.         DL = despooler activity
  26266.         00h currently active printing a file
  26267.         41h standing by
  26268.         DH = 00h ???
  26269.            = 41h ???
  26270.         DI = 0000h ???
  26271.          0001h ???
  26272. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  26273.       Software Company
  26274. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26275.       as that is a licensed version of Disk Spool II
  26276. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  26277. --------c-1AAB-------------------------------
  26278. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  26279.     AH = ABh
  26280. Return: AH = BAh if installed
  26281.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  26282.         ES = code segment
  26283.         ES:BX -> name of current spool file
  26284.         ES:SI -> current despool file
  26285.         CL = despooler state (00h disabled, 41h enabled)
  26286.         CH = spooler state (00h disabled, 41h enabled)
  26287.         DL = despooler activity
  26288.         00h currently active printing a file
  26289.         41h standing by
  26290.         DH = 00h ???
  26291.            = 41h ???
  26292.         DI = 0000h ???
  26293.          0001h ???
  26294. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  26295.       Software Company
  26296. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  26297. --------c-1AAC-------------------------------
  26298. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  26299.     AH = ACh
  26300. Return: (see AH=ABh)
  26301. Note:    this function is identical to AH=ABh
  26302. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  26303. --------c-1AAD-------------------------------
  26304. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  26305.     AH = ADh
  26306.     AL = function code (see #0495)
  26307. Return: AH = 00h if successful
  26308. SeeAlso: AH=ABh
  26309.  
  26310. (Table 0495)
  26311. Values for Disk Spool function code:
  26312.  02h    enable spooler only
  26313.  03h    enable the despooler
  26314.  04h    disable the despooler
  26315.  08h    inhibit popup menu
  26316.  09h    enable popup menu
  26317.  0Ah    ???
  26318.  0Bh    disable the spooler
  26319.  0Ch    start despooler after last successfully printed document???
  26320.  0Dh    start despooler at the exact point where it last left off???
  26321.  0Eh    pop up the menu
  26322.  0Fh    ???
  26323.  11h    ???
  26324.  14h    ???
  26325.  15h    ???
  26326.  16h    ???
  26327.  17h    ???
  26328.  18h    ???
  26329.  19h    ???
  26330.  20h    clear file pointed to by the despooler???
  26331.  21h    ???
  26332.  22h    ???
  26333.  23h    ???
  26334.  30h    ???
  26335. --------X-1AAF-------------------------------
  26336. INT 1A - PCMCIA v2 - API
  26337.     AH = AFh
  26338.     details not yet available
  26339. --------d-1AB001CX4D52-----------------------
  26340. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  26341.     AX = B001h
  26342.     CX = 4D52h ("MR")
  26343.     DX = 4349h ("CI")
  26344. Return: CX = 4943h ("IC") if installed
  26345.     DX = 524Dh ("RM") if installed
  26346.         ES:DI -> MRCINFO structure (see #0496)
  26347. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  26348.       be called first, as this call is used for the first, ROM-based
  26349.       MRCI server, while the other call is used for RAM-based servers
  26350.       which may be partially or entirely replacing a prior server
  26351. SeeAlso: INT 2F/AX=4A12h
  26352.  
  26353. Format of MRCINFO structure:
  26354. Offset    Size    Description    (Table 0496)
  26355.  00h  4 BYTEs    vendor signature
  26356.         "MSFT" Microsoft
  26357.  04h    WORD    server version (high=major)
  26358.  06h    WORD    MRCI specification version
  26359.  08h    DWORD    address of server entry point (see #0498)
  26360.  0Ch    WORD    bit flags: server capabilities (see #0497)
  26361.  0Eh    WORD    bit flags: hardware assisted capabilities (see #0497)
  26362.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  26363.  
  26364. Bitfields for MRCI capabilities:
  26365. Bit(s)    Description    (Table 0497)
  26366.  0    standard compress
  26367.  1    standard decompress
  26368.  2    update compress
  26369.  3    MaxCompress (not present in initial public release)
  26370.  4    reserved
  26371.  5    incremental decompress
  26372.  6    MRCI 2.0 standard compress
  26373.  7    MRCI 2.0 standard decompress
  26374.  8-14    reserved
  26375.  15    this structure is in ROM and can't be modified
  26376.     (server capabilities only)
  26377.  
  26378. (Table 0498)
  26379. Call MRCI entry point with:
  26380.     DS:SI -> MRCREQUEST structure (see #0499)
  26381.     CX = type of client (0000h application, 0001h file system)
  26382.     AX = operation
  26383.         0001h perform standard compression
  26384.         0002h perform standard decompression
  26385.         0004h perform update compression
  26386.         0008h perform MaxCompress
  26387.         0020h perform incremental decompression
  26388.         0040h perform MRCI 2.0 standard compression
  26389.         0080h perform MRCI 2.0 standard decompression
  26390.     AX = FFFFh clear flags
  26391.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  26392. Return: AX = status
  26393.         0000h successful
  26394.         0001h invalid function
  26395.         0002h server busy, try again
  26396.         0003h destination buffer too small
  26397.         0004h incompressible data
  26398.         0005h bad compressed data format
  26399.     BP destroyed (MS-DOS 6.2)
  26400. Note:    MRCI driver may chain to a previous driver
  26401.  
  26402. Format of MRCREQUEST structure:
  26403. Offset    Size    Description    (Table 0499)
  26404.  00h    DWORD    pointer to source buffer
  26405.  04h    WORD    size of source buffer (0000h = 64K)
  26406.  06h    WORD    (UpdateCompress only)
  26407.         (call) offset in source buffer of beginning of changed data
  26408.         (return) offset in destination buffer of beginning of changed
  26409.               compressed data
  26410.  08h    DWORD    pointer to destination buffer
  26411.         must contain original compressed data for UpdateCompress
  26412.  0Ch    WORD    size of destination buffer (0000h = 64K)
  26413.         any compression: size of buffer for compressed data
  26414.         standard decompression: number of bytes to be decompressed
  26415.         incremental decompression: number of byte to decompress now
  26416.         (return) actual size of resulting data
  26417.  0Eh    WORD    client compressed data storage allocation size
  26418.  10h    DWORD    incremental decompression state data
  26419.         set to 00000000h before first incremental decompression call
  26420. Notes:    the source and destination buffers may not overlap
  26421.     the source and destination buffer sizes should normally be the same
  26422.     application should not update the contents of the MRCREQUEST structure
  26423.       between incremental decompression calls
  26424. --------X-1AB101-----------------------------
  26425. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK
  26426.     AX = B101h
  26427. Return: AH = 00h if installed
  26428.         CF clear
  26429.         EDX = 20494350h (' ICP')
  26430.         EDI = physical address of protected-mode entry point (see #0501)
  26431.         AL = PCI hardware characteristics (see #0500)
  26432.         BH = PCI interface level major version (BCD)
  26433.         BL = PCI interface level minor version (BCD)
  26434.         CL = number of last PCI bus in system
  26435.     EAX, EBX, ECX, and EDX may be modified
  26436.     all other flags (except IF) may be modified
  26437. Note:    this function may require up to 1024 byte of stack; it will not enable
  26438.       interrupts if they were disabled before making the call
  26439. SeeAlso: AX=B181h
  26440.  
  26441. Bitfields for PCI hardware characteristics:
  26442. Bit(s)    Description    (Table 0500)
  26443.  0    configuration space access mechanism 1 supported
  26444.  1    configuration space access mechanism 2 supported
  26445.  2-3    reserved
  26446.  4    Special Cycle generation mechanism 1 supported
  26447.  5    Special Cycle generation mechanism 2 supported
  26448.  6-7    reserved
  26449.  
  26450. (Table 0501)
  26451. Call protected-mode entry point with:
  26452.     registers as for real/V86-mode INT call
  26453.     CS = ring 0 descriptor with access to full address space
  26454. Return: as for real/V86-mode call
  26455. --------X-1AB102-----------------------------
  26456. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE
  26457.     AX = B102h
  26458.     CX = device ID
  26459.     DX = vendor ID
  26460.     SI = device index (0-n)
  26461. Return: CF clear if successful
  26462.     CF set on error
  26463.     AH = status
  26464.         00h successful
  26465.         BL = bus number
  26466.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  26467.         83h bad vendor ID
  26468.         86h device not found
  26469.     EAX, EBX, ECX, and EDX may be modified
  26470.     all other flags (except IF) may be modified
  26471. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26472.       interrupts if they were disabled before making the call
  26473.     device ID FFFFh may be reserved as a wildcard in future implementations
  26474.     the meanings of BL and BH on return may be exchanged in future
  26475.       implementations
  26476.     all devices sharing a single vendor ID and device ID may be enumerated
  26477.       by incrementing SI from 0 until error 86h is returned
  26478. SeeAlso: AX=B182h
  26479. --------X-1AB103-----------------------------
  26480. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE
  26481.     AX = B103h
  26482.     ECX = class code (bits 23-0)
  26483.     SI = device index (0-n)
  26484. Return: CF clear if successful
  26485.     CF set on error
  26486.     AH = status
  26487.         00h successful
  26488.         BL = bus number
  26489.         BH = device/function number (bits 7-3 device, bits 2-0 func)
  26490.         86h device not found
  26491.     EAX, EBX, ECX, and EDX may be modified
  26492.     all other flags (except IF) may be modified
  26493. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26494.       interrupts if they were disabled before making the call
  26495.     the meanings of BL and BH on return may be exchanged in future
  26496.       implementations
  26497.     all devices sharing the same Class Code may be enumerated by
  26498.       incrementing SI from 0 until error 86h is returned
  26499. SeeAlso: AX=B183h
  26500. --------X-1AB106-----------------------------
  26501. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS
  26502.     AX = B106h
  26503.     BL = bus number
  26504.     EDX = Special Cycle data
  26505. Return: CF clear if successful
  26506.     CF set on error
  26507.     AH = status
  26508.         00h successful
  26509.         81h unsupported function
  26510.     EAX, EBX, ECX, and EDX may be modified
  26511.     all other flags (except IF) may be modified
  26512. Note:    this function may require up to 1024 byte of stack; it will not enable
  26513.       interrupts if they were disabled before making the call
  26514. SeeAlso: AX=B186h
  26515. --------X-1AB108-----------------------------
  26516. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE
  26517.     AX = B108h
  26518.     BL = bus number
  26519.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26520.     DI = register number (0000h-00FFh)
  26521. Return: CF clear if successful
  26522.         CL = byte read
  26523.     CF set on error
  26524.     AH = status
  26525.         00h successful
  26526.         87h bad register number
  26527.     EAX, EBX, ECX, and EDX may be modified
  26528.     all other flags (except IF) may be modified
  26529. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26530.       interrupts if they were disabled before making the call
  26531.     the meanings of BL and BH on entry may be exchanged in future
  26532.       implementations
  26533. SeeAlso: AX=B188h
  26534. --------X-1AB109-----------------------------
  26535. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD
  26536.     AX = B109h
  26537.     BL = bus number
  26538.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26539.     DI = register number (0000h-00FFh)
  26540. Return: CF clear if successful
  26541.         CX = word read
  26542.     CF set on error
  26543.     AH = status
  26544.         00h successful
  26545.         87h bad register number
  26546.     EAX, EBX, ECX, and EDX may be modified
  26547.     all other flags (except IF) may be modified
  26548. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26549.       interrupts if they were disabled before making the call
  26550.     the meanings of BL and BH on entry may be exchanged in future
  26551.       implementations
  26552. SeeAlso: AX=B189h
  26553. --------X-1AB10A-----------------------------
  26554. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD
  26555.     AX = B10Ah
  26556.     BL = bus number
  26557.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26558.     DI = register number (0000h-00FFh)
  26559. Return: CF clear if successful
  26560.         ECX = dword read
  26561.     CF set on error
  26562.     AH = status
  26563.         00h successful
  26564.         87h bad register number
  26565.     EAX, EBX, ECX, and EDX may be modified
  26566.     all other flags (except IF) may be modified
  26567. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26568.       interrupts if they were disabled before making the call
  26569.     the meanings of BL and BH on entry may be exchanged in future
  26570.       implementations
  26571. SeeAlso: AX=B18Ah
  26572. --------X-1AB10B-----------------------------
  26573. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE
  26574.     AX = B10Bh
  26575.     BL = bus number
  26576.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26577.     DI = register number (0000h-00FFh)
  26578.     CL = byte to write
  26579. Return: CF clear if successful
  26580.     CF set on error
  26581.     AH = status
  26582.         00h successful
  26583.         87h bad register number
  26584.     EAX, EBX, ECX, and EDX may be modified
  26585.     all other flags (except IF) may be modified
  26586. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26587.       interrupts if they were disabled before making the call
  26588.     the meanings of BL and BH on entry may be exchanged in future
  26589.       implementations
  26590. SeeAlso: AX=B18Bh
  26591. --------X-1AB10C-----------------------------
  26592. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD
  26593.     AX = B10Ch
  26594.     BL = bus number
  26595.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26596.     DI = register number (multiple of 2 less than 0100h)
  26597.     CX = word to write
  26598. Return: CF clear if successful
  26599.     CF set on error
  26600.     AH = status
  26601.         00h successful
  26602.         87h bad register number
  26603.     EAX, EBX, ECX, and EDX may be modified
  26604.     all other flags (except IF) may be modified
  26605. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26606.       interrupts if they were disabled before making the call
  26607.     the meanings of BL and BH on entry may be exchanged in future
  26608.       implementations
  26609. SeeAlso: AX=B18Ch
  26610. --------X-1AB10D-----------------------------
  26611. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD
  26612.     AX = B10Dh
  26613.     BL = bus number
  26614.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26615.     DI = register number (multiple of 4 less than 0100h)
  26616.     ECX = dword to write
  26617. Return: CF clear if successful
  26618.     CF set on error
  26619.     AH = status
  26620.         00h successful
  26621.         87h bad register number
  26622.     EAX, EBX, ECX, and EDX may be modified
  26623.     all other flags (except IF) may be modified
  26624. Notes:    this function may require up to 1024 byte of stack; it will not enable
  26625.       interrupts if they were disabled before making the call
  26626.     the meanings of BL and BH on entry may be exchanged in future
  26627.       implementations
  26628. SeeAlso: AX=B18Dh
  26629. --------X-1AB181-----------------------------
  26630. INT 1A - Intel PCI BIOS v2.0c - INSTALLATION CHECK (32-bit)
  26631.     AX = B181h
  26632. Return: as for AX=B101h
  26633. SeeAlso: AX=B101h
  26634. --------X-1AB182-----------------------------
  26635. INT 1A - Intel PCI BIOS v2.0c - FIND PCI DEVICE (32-bit)
  26636.     AX = B182h
  26637.     CX = device ID
  26638.     DX = vendor ID
  26639.     SI = device index (0-n)
  26640. Return: as for AX=B102h
  26641. SeeAlso: AX=B102h
  26642. --------X-1AB183-----------------------------
  26643. INT 1A - Intel PCI BIOS v2.0c - FIND PCI CLASS CODE (32-bit)
  26644.     AX = B183h
  26645.     ECX = class code (bits 23-0)
  26646.     SI = device index (0-n)
  26647. Return: as for AX=B103h
  26648. SeeAlso: AX=B103h
  26649. --------X-1AB186-----------------------------
  26650. INT 1A - Intel PCI BIOS v2.0c - PCI BUS-SPECIFIC OPERATIONS (32-bit)
  26651.     AX = B186h
  26652.     BL = bus number
  26653.     EDX = Special Cycle data
  26654. Return: as for AX=B106h
  26655. SeeAlso: AX=B106h
  26656. --------X-1AB188-----------------------------
  26657. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION BYTE (32-bit)
  26658.     AX = B188h
  26659.     BL = bus number
  26660.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26661.     DI = register number (0000h-00FFh)
  26662. Return: as for AX=B108h
  26663. SeeAlso: AX=B108h
  26664. --------X-1AB189-----------------------------
  26665. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION WORD (32-bit)
  26666.     AX = B189h
  26667.     BL = bus number
  26668.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26669.     DI = register number (0000h-00FFh)
  26670. Return: as for AX=B109h
  26671. SeeAlso: AX=B109h
  26672. --------X-1AB18A-----------------------------
  26673. INT 1A - Intel PCI BIOS v2.0c - READ CONFIGURATION DWORD (32-bit)
  26674.     AX = B18Ah
  26675.     BL = bus number
  26676.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26677.     DI = register number (0000h-00FFh)
  26678. Return: as for AX=B10Ah
  26679. SeeAlso: AX=B10Ah
  26680. --------X-1AB18B-----------------------------
  26681. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION BYTE (32-bit)
  26682.     AX = B18Bh
  26683.     BL = bus number
  26684.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26685.     DI = register number (0000h-00FFh)
  26686.     CL = byte to write
  26687. Return: as for AX=B10Bh
  26688. SeeAlso: AX=B10Bh
  26689. --------X-1AB18C-----------------------------
  26690. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION WORD (32-bit)
  26691.     AX = B18Ch
  26692.     BL = bus number
  26693.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26694.     DI = register number (multiple of 2 less than 0100h)
  26695.     CX = word to write
  26696. Return: as for AX=B10Ch
  26697. SeeAlso: AX=B10Ch
  26698. --------X-1AB18D-----------------------------
  26699. INT 1A - Intel PCI BIOS v2.0c - WRITE CONFIGURATION DWORD (32-bit)
  26700.     AX = B18Dh
  26701.     BL = bus number
  26702.     BH = device/function number (bits 7-3 device, bits 2-0 function)
  26703.     DI = register number (multiple of 4 less than 0100h)
  26704.     ECX = dword to write
  26705. Return: as for AX=B10Dh
  26706. SeeAlso: AX=B10Dh
  26707. --------X-1AB4-------------------------------
  26708. INT 1A - Intel Plug-and-Play BIOS Extensions - API
  26709.     AH = B4h
  26710.     AL = function (00h-07h)
  26711.     further details not yet available
  26712. --------c-1AC0-------------------------------
  26713. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  26714.     AH = C0h
  26715. Return: (see AH=A0h)
  26716. Notes:    this call is identical to AH=A0h
  26717.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26718.       as that is a licensed version of Disk Spool II
  26719. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  26720. ----------1AC4-------------------------------
  26721. INT 1A - Phoenix BIOS Extensions
  26722.     AH = C4h
  26723.     (details to follow when extensions become public)
  26724. --------U-1ACCCCBXCCCC-----------------------
  26725. INT 1A U - DATEFIX - INSTALLATION CHECK
  26726.     AX = CCCCh
  26727.     BX = CCCCh
  26728.     CX = 0000h
  26729. Return: CX = CCCCh if installed
  26730.         ES:BX -> original interrupt handler
  26731. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  26732.       machines, where the realtime clock's calendar wraps after 1991
  26733. SeeAlso: AH=FEh,AH=FFh"AT&T"
  26734. --------c-1AD0-------------------------------
  26735. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  26736.     AH = D0h
  26737.     AL = function code
  26738.         01h enable spooler and despooler
  26739.         02h enable spooler only
  26740.         03h enable despooler at beginning of file
  26741.         04h disable the despooler
  26742.         05h disable the despooler and spooler
  26743.         06h clear the spool file
  26744.         08h inhibit the popup menu
  26745.         09h enable the popup menu
  26746.         0Ah ??? (called by Disk Spool's INT 21 handler)
  26747.         0Bh disable the spooler
  26748.         0Ch start despooler after last successfully printed document
  26749.         0Dh start despooler at the exact point where it last left off
  26750.         0Eh pop up the menu
  26751.         0Fh ???
  26752.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  26753.             when a program terminates)
  26754.         14h ???
  26755.         15h delete despool file and reset ???
  26756.         16h ??? (writes something to unknown file)
  26757.         17h ??? (writes something to despool file, then reads something
  26758.             else and ???)
  26759.         18h ??? (reads something from despool file, and then ???)
  26760.         19h ??? (creates/truncates spool file)
  26761.         20h clear file pointed to by the despooler
  26762.         21h ??? (writes something to unknown file)
  26763.         22h ??? (writes something to spool file if spooler/despooler using
  26764.             same file)
  26765.         23h ??? (opens/creates unknown file, then ???)
  26766.         30h ???
  26767.         31h ???
  26768.         32h beep
  26769.         33h append CRLF to spool file???
  26770.         34h ???
  26771.         35h ???
  26772.         36h ???
  26773.         37h append CRLF to spool file and start a new spool file???
  26774.         38h ???
  26775.         40h ??? (v4.05)
  26776.         41h ??? (v4.05)
  26777.         51h ??? (called by Disk Spool's INT 21 handler)
  26778.         52h ??? (called by Disk Spool's INT 21 handler)
  26779.         57h ???
  26780.         5Ah ??? (v4.05)
  26781.         5Bh ??? (v4.05)
  26782.         5Ch ??? (v4.05)
  26783. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26784.       as that is a licensed version of Disk Spool II
  26785. SeeAlso: AH=A0h,AH=ADh
  26786. --------c-1AE0-------------------------------
  26787. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  26788.     AH = E0h
  26789.     AL = subfunction
  26790.         01h enable spooler
  26791.         02h disable spooler
  26792.         03h enable despooler
  26793.         04h disable despooler
  26794.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26795. Return: AH = status
  26796.         00h successful
  26797.         F0h printer port not managed by Disk Spool II
  26798.         FFH failed
  26799. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26800.       as that is a licensed version of Disk Spool II
  26801. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  26802. --------c-1AE1-------------------------------
  26803. INT 1A - Disk Spool II v4.0x - GET STATUS
  26804.     AH = E1h
  26805.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26806. Return: AH = status
  26807.         00h successful
  26808.         CL = despooler state (00h disabled, 41h enabled)
  26809.         CH = spooler state (00h disabled, 41h enabled)
  26810.         DL = despooler activity (00h standing by, 41h printing)
  26811.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  26812.             or AutoDespool enabled)
  26813.         ES:SI -> ASCIZ name of current despool file
  26814.         ES:DI -> 3-byte file extension used by Disk Spool II
  26815.         F0h printer port not managed by Disk Spool II
  26816. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26817.       as that is a licensed version of Disk Spool II
  26818. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  26819. --------c-1AE2-------------------------------
  26820. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  26821.     AH = E2h
  26822.     AL = which
  26823.         01h first
  26824.         02h next (can only call after "first")
  26825.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26826. Return: AH = status
  26827.         00h successful
  26828.         ES:BX -> ASCIZ filename
  26829.         F0h no (more) spool files
  26830.         FFh failed
  26831. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26832.       as that is a licensed version of Disk Spool II
  26833. SeeAlso: AH=E0h,AH=E1h
  26834. --------c-1AE301-----------------------------
  26835. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  26836.     AX = E301h
  26837.     ES:BX -> ASCIZ filename (max 32 chars)
  26838. Return: AH = status
  26839.         00h successful
  26840.         ES:SI -> spool file status record (see #0502)
  26841.         F0h not a spool file
  26842.         FFh failed
  26843. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26844.       as that is a licensed version of Disk Spool II
  26845. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  26846.  
  26847. Format of Disk Spool II spool file status record:
  26848. Offset    Size    Description    (Table 0502)
  26849.  00h    BYTE    hour of creation or last update
  26850.  01h    BYTE    minute of creation or last update
  26851.  02h    BYTE    year-1980 of creation or last update
  26852.  03h    BYTE    month of creation or last update
  26853.  04h    BYTE    day of creation or last update
  26854.  05h    BYTE    total number of copies to print
  26855.  06h    BYTE    number of copies already printed
  26856.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26857.  08h    BYTE    save status (00h delete after printing, 01h save)
  26858.  09h    BYTE    file status
  26859.         01h done printing, but being saved
  26860.         02h on hold
  26861.         03h queued for printing
  26862.         04h being spooled
  26863.         05h being despooled (i.e. printed)
  26864.  0Ah 16 BYTEs    ASCIZ description
  26865.  1Ah  2 WORDs    file size in bytes (high,low)
  26866.  1Eh  2 WORDs    bytes left to print (high,low)
  26867. --------c-1AE302-----------------------------
  26868. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  26869.     AX = E302h
  26870.     ES:BX -> ASCIZ filename (max 32 chars)
  26871.     ES:SI -> spool file status record (see #0502)
  26872. Return: AH = status
  26873.         00h successful
  26874.         F0h not a spool file
  26875.         FFh failed
  26876. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26877.       as that is a licensed version of Disk Spool II
  26878. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  26879. --------c-1AE401-----------------------------
  26880. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  26881.     AX = E401h
  26882.     ES:BX -> ASCIZ filename (max 32 chars)
  26883.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26884. Return: AH = status
  26885.         00h successful
  26886.         FFh failed
  26887. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26888.       as that is a licensed version of Disk Spool II
  26889. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  26890. --------c-1AE402-----------------------------
  26891. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  26892.     AX = E402h
  26893.     ES:BX -> ASCIZ filename (max 32 chars)
  26894.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  26895. Return: AH = status
  26896.         00h successful
  26897.         FFh failed
  26898. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26899.       as that is a licensed version of Disk Spool II
  26900. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  26901. --------c-1AE5-------------------------------
  26902. INT 1A U - Emulaser ELSPL.COM - ???
  26903.     AH = E5h
  26904.     ???
  26905. Return: ???
  26906. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  26907.       as part of Vertisoft's Emulaser PostScript emulator
  26908. SeeAlso: AH=A0h,INT 17/AH=03h
  26909. --------c-1AEE-------------------------------
  26910. INT 1A U - Disk Spool II v4.05 - ???
  26911.     AH = EEh
  26912.     AL = printer port???
  26913.     ???
  26914. Return: ???
  26915. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  26916.       as that is a licensed version of Disk Spool II
  26917. SeeAlso: AH=E1h
  26918. --------U-1AF7-------------------------------
  26919. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  26920.     AH = F7h
  26921. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  26922.       time to correct for clock drift
  26923. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  26924.       version 1.1, but F7h is the function called by transient portion
  26925. SeeAlso: AH=F8h,AH=FFh"RighTime"
  26926. --------U-1AF8-------------------------------
  26927. INT 1A - RighTime v1.1 - ENABLE
  26928.     AH = F8h
  26929. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  26930.       time to correct for clock drift
  26931. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  26932.       TeSseRact program identifier based on its current state: "RighTime"
  26933.       when enabled, "RighTim"F7h when disabled.
  26934. SeeAlso: AH=F7h,AH=FFh"RighTime"
  26935. --------b-1AFE-------------------------------
  26936. INT 1A - AT&T 6300 - READ TIME AND DATE
  26937.     AH = FEh
  26938. Return: BX = day count (0 = Jan 1, 1984)
  26939.     CH = hour
  26940.     CL = minute
  26941.     DH = second
  26942.     DL = hundredths
  26943. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  26944. --------b-1AFF-------------------------------
  26945. INT 1A - AT&T 6300 - SET TIME AND DATE
  26946.     AH = FFh
  26947.     BX = day count (0 = Jan 1, 1984)
  26948.     CH = hour
  26949.     CL = minute
  26950.     DH = second
  26951.     DL = hundredths
  26952. Return: ???
  26953. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  26954. --------U-1AFF-------------------------------
  26955. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  26956.     AH = FFh
  26957. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  26958.       time to correct for clock drift
  26959. Note:    upon being permanently disabled, RighTime closes the file handle
  26960.       referencing its executable (which is updated with time correction
  26961.       information every two minutes while RighTime is enabled).
  26962. --------s-1AFF00-----------------------------
  26963. INT 1A - SND - INSTALLATION CHECK???
  26964.     AX = FF00h
  26965. Return: AL = version??? (02h)
  26966.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  26967. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  26968.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  26969.       command set
  26970. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  26971. --------s-1AFF01-----------------------------
  26972. INT 1A - SND - PAUSE
  26973.     AX = FF01h
  26974.     DX = number of clock ticks to delay
  26975. Return: AH = status
  26976.         00h successful
  26977.         01h SND busy
  26978. Notes:    if successful, execution returns to the caller after the delay expires;
  26979.       if SND is busy, execution returns immediately
  26980.     the IC v2.0 implementation of this API makes no special allowance for
  26981.       time rollover at midnight, which can cause the delay to be over one
  26982.       hour if this function is called just before the BIOS time count
  26983.       rolls over and the delay extends into the next day
  26984. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  26985. SeeAlso: INT E0/CL=BDh
  26986. --------s-1AFF02-----------------------------
  26987. INT 1A - SND - START SOUND
  26988.     AX = FF02h
  26989.     DX = frequency in Hertz (14h-FFFFh)
  26990. Return: AH = status
  26991.         00h successful
  26992.         01h SND busy
  26993. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  26994. --------s-1AFF03-----------------------------
  26995. INT 1A - SND - STOP SOUND
  26996.     AX = FF03h
  26997. Return: AH = status
  26998.         00h successful
  26999.         01h busy
  27000. Note:    turns off any sound currently being emitted by the PC's speaker unless
  27001.       SND is currently busy processing an API call (this includes
  27002.       background music).  Use AX=FF05h to stop the sound even if an API
  27003.       call is in progress.
  27004. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  27005. --------s-1AFF04-----------------------------
  27006. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  27007.     AX = FF04h
  27008.     DS:DX -> ASCIZ music string
  27009. Return: AH = status
  27010.         00h successful (music begins playing in background)
  27011.         01h busy
  27012. Note:    the music string accepted by SND is not the same as that accepted by
  27013.       BASIC and other programs which process music strings
  27014. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  27015. --------s-1AFF05-----------------------------
  27016. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  27017.     AX = FF05h
  27018. Return: AH = 00h (successful)
  27019. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  27020.       SND is currently busy, such as playing background music
  27021. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  27022. --------B-1B---------------------------------
  27023. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  27024. Desc:    this interrupt is automatically called when INT 09 determines that
  27025.       Control-Break has been pressed
  27026. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  27027.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  27028. SeeAlso: INT 23
  27029. --------B-1C---------------------------------
  27030. INT 1C - TIME - SYSTEM TIMER TICK
  27031. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  27032.       handler
  27033. Notes:    this is the preferred interrupt to chain when a program needs to be
  27034.       invoked regularly
  27035.     not available on NEC 9800-series PCs
  27036. SeeAlso: INT 08,INT E2"PC Cluster"
  27037. --------B-1D---------------------------------
  27038. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  27039. Note:    the default parameter table (see #0503) is located at F000h:F0A4h for
  27040.       100% compatible BIOSes
  27041. SeeAlso: INT 10/AH=00h
  27042.  
  27043. Format of video parameters:
  27044. Offset    Size    Description    (Table 0503)
  27045.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  27046.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  27047.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  27048.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  27049.  40h    WORD    bytes in video buffer for modes 00h and 01h
  27050.  42h    WORD    bytes in video buffer for modes 02h and 03h
  27051.  44h    WORD    bytes in video buffer for modes 04h and 05h
  27052.  46h    WORD    bytes in video buffer for modes 06h and 07h
  27053.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  27054.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  27055. --------B-1E---------------------------------
  27056. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  27057. Note:    the default parameter table (see #0504) is located at F000h:EFC7h for
  27058.       100% compatible BIOSes
  27059. SeeAlso: INT 13/AH=0Fh,INT 41
  27060.  
  27061. Format of diskette parameter table:
  27062. Offset    Size    Description    (Table 0504)
  27063.  00h    BYTE    first specify byte
  27064.         bits 7-4: step rate
  27065.         bits 3-0: head unload time (0Fh = 240 ms)
  27066.  01h    BYTE    second specify byte
  27067.         bits 7-1: head load time (01h = 4 ms)
  27068.         bit    0: non-DMA mode (always 0)
  27069.  02h    BYTE    delay until motor turned off (in clock ticks)
  27070.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  27071.  04h    BYTE    sectors per track
  27072.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  27073.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  27074.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  27075.  08h    BYTE    format filler byte (default F6h)
  27076.  09h    BYTE    head settle time in milliseconds
  27077.  0Ah    BYTE    motor start time in 1/8 seconds
  27078. --------B-1F---------------------------------
  27079. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  27080. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  27081.       character 80h-FFh
  27082. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  27083.       compatible BIOSes
  27084. SeeAlso: INT 10/AX=5000h,INT 43
  27085. --------b-1F12-------------------------------
  27086. INT 1F U - C&T "SuperState" BIOS - POWER OFF
  27087.     AH = 12h
  27088. Return: none
  27089. Note:    POWER OFF
  27090. --------b-1F17-------------------------------
  27091. INT 1F U - C&T "SuperState" BIOS - EXECUTE FAR PROC ROUTINE ON SuperState
  27092.     AH = 17h
  27093.     ES:DI -> far procedure
  27094. Return: all registers except AH,ES,DI
  27095. Note:    You can change the BIOS area (F000h:0000h - F000h:FFFFh) only through
  27096.       this function
  27097. --------b-1F19-------------------------------
  27098. INT 1F U - C&T "SuperState" BIOS - ENABLE AUTO WAKEUP AND SET TIME AND DATE
  27099.     AH = 19h
  27100.     AL = hour in BCD
  27101.     BH = minutes in BCD
  27102.     BL = seconds in BCD
  27103.     CH = year century in BCD (must be 19h)
  27104.     CL = year low in BCD
  27105.     DH = month in BCD
  27106.     DL = date in BCD
  27107. Return: CF clear
  27108. --------b-1F1C-------------------------------
  27109. INT 1F U - C&T "SuperState" BIOS - SET SUSPEND TIMEOUT
  27110.     AH = 1Ch
  27111.     BX = sec until suspend starts
  27112. Return: None       
  27113. --------b-1F1D-------------------------------
  27114. INT 1F U - C&T "SuperState" BIOS - SET SLEEP TIMEOUT
  27115.     AH = 1Dh
  27116.     BX = sec until sleep starts
  27117. Return: None       
  27118. --------J-1F90-------------------------------
  27119. INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
  27120.     AH = 90h
  27121.     ES:BX -> global descriptor table (see #0349 at INT 15/AH=87h)
  27122.     CX = number of bytes to copy
  27123.     SI = 0000h
  27124.     DI = 0000h
  27125. Return: CF clear if successful
  27126.     CF set on error
  27127.     ???
  27128. SeeAlso: INT 15/AH=87h
  27129. --------b-1FF5--BLFA-------------------------
  27130. INT 1F U - C&T "SuperState" BIOS - REQUEST PASSWORD INPUT
  27131.     AH = F5h
  27132.     BL = FAh
  27133. Return: none
  27134. Note:    this function will not return until the correct password is entered
  27135. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FEh
  27136. --------b-1FF5--BLFD-------------------------
  27137. INT 1F U - C&T "SuperState" BIOS - ENCRYPT PASSWORD
  27138.     AH = F5h
  27139.     BL = FDh
  27140.     CX:SI = input string
  27141.     DX:DI = encrypted string
  27142.     BH = length of input string
  27143. Return: CF set on error
  27144. SeeAlso: AH=F5h/BL=FAh,AX=F5h/BL=FEh
  27145. --------b-1FF5--BLFE-------------------------
  27146. INT 1F U - C&T "SuperState" BIOS - SET PASSWORD
  27147.     AH = F5h
  27148.     BL = FEh
  27149.     CX:SI -> input string
  27150.     BH = length of input string (if BH = 00h, clear password)
  27151. Return: CF set on error
  27152. Note:    the input string must be encrypted by INT 1Fh/AH=F5h/BL=FDh
  27153. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FFh
  27154. --------b-1FF5--BLFF-------------------------
  27155. INT 1F U - C&T "SuperState" BIOS - GET ENCRYPTED PASSWORD
  27156.     AH = F5h
  27157.     BL = FFh
  27158.     DX:DI = string buffer
  27159. Return: CF set on error
  27160.     CF clear if successful
  27161.         BH = length of input string (if BH = 00h, password is not valid)
  27162.         DX:DI -> encrypted password string
  27163. SeeAlso: AH=F5h/BL=FDh,AX=F5h/BL=FEh
  27164. --------b-1FFB-------------------------------
  27165. INT 1F U - C&T "SuperState" BIOS - GET/SET CPU SPEED
  27166.     AH = FBh
  27167.     BL = function 
  27168.         00h get CPU speed
  27169.         Return: AL = current CPU speed (00h = fast, 01h = slow)
  27170.         01h set CPU speed
  27171.         AL = new CPU speed (00h = fast, 01h = slow)
  27172. SeeAlso: AH=FCh/BL=00h
  27173. --------b-1FFC--BL00-------------------------
  27174. INT 1F U - C&T "SuperState" BIOS - GET ALARM STATUS
  27175.     AH = FCh
  27176.     BL = 00h
  27177. Return: AL = current alarm state (00h = disabled, 01h = enabled)
  27178. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h
  27179. --------b-1FFC--BL01-------------------------
  27180. INT 1F U - C&T "SuperState" BIOS - SET ALARM STATUS
  27181.     AH = FCh
  27182.     BL = 01h
  27183.     AL = new alarm state (00h = disabled, 01h = enabled)
  27184. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h
  27185. --------b-1FFC--BL02-------------------------
  27186. INT 1F U - C&T "SuperState" BIOS - GET ALARM TIME
  27187.     AH = FCh
  27188.     BL = 02h
  27189. Return: CH = hour by BCD
  27190.     CL = min by BCD
  27191.     DH = sec by BCD
  27192. SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h,AH=FCh/BL=04h
  27193. --------b-1FFC--BL03-------------------------
  27194. INT 1F U - C&T "SuperState" BIOS - SET ALARM TIME
  27195.     AH = FCh
  27196.     BL = 03h
  27197.     CH = hour by BCD
  27198.     CL = min by BCD
  27199.     DH = sec by BCD
  27200. Return: CF set on error (incorrect time format or Alarm is not enable) 
  27201. SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h,AH=FCh/BL=05h
  27202. --------b-1FFC--BL04-------------------------
  27203. INT 1F U - C&T "SuperState" BIOS - GET ALARM DATE
  27204.     AH = FCh
  27205.     BL = 04h
  27206. Return: CH = year century by BCD
  27207.     CL = year low by BCD
  27208.     DH = month by BCD
  27209.     DL = date by BCD
  27210. SeeAlso: AH=FCh/BL=02h,AH=FCh/BL=05h
  27211. --------b-1FFC--BL05-------------------------
  27212. INT 1F U - C&T "SuperState" BIOS - SET ALARM DATE
  27213.     AH = FCh
  27214.     BL = 05h
  27215.     CH = year century by BCD
  27216.     CL = year low by BCD
  27217.     DH = month by BCD
  27218.     DL = date by BCD
  27219. Return: CF set on error (incorrect date format or Alarm is not enable) 
  27220. SeeAlso: AH=FCh/BL=03h,AH=FCh/BL=04h
  27221. --------b-1FFD--BL00-------------------------
  27222. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP STATUS
  27223.     AH = FDh
  27224.     BL = 00h
  27225. Return: AL = current wake-up state (00h = disabled, 01h = enabled)
  27226. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  27227. --------b-1FFD--BL01-------------------------
  27228. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP STATUS
  27229.     AH = FDh
  27230.     BL = 01h
  27231.     AL = new wake-up state (00h = disabled, 01h = enabled)
  27232. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  27233. --------b-1FFD--BL02-------------------------
  27234. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP TIME
  27235.     AH = FDh
  27236.     BL = 02h
  27237. Return: CH = hour by BCD
  27238.     CL = min by BCD
  27239.     DH = sec by BCD
  27240. SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
  27241. --------b-1FFD-------------------------------
  27242. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP TIME
  27243.        AH = FDh
  27244.        BL = 3h
  27245.        CH = hour by BCD
  27246.        CL = min by BCD
  27247.        DH = sec by BCD
  27248. Return: CF set on error (incorrect Time format or Auto Wake up is not enable) 
  27249. SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
  27250. --------b-1FFD--BL04-------------------------
  27251. INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP DATE
  27252.     AH = FDh
  27253.     BL = 04h
  27254. Return: CH = year century in BCD
  27255.     CL = year low in BCD
  27256.     DH = month in BCD
  27257.     DL = date in BCD
  27258. SeeAlso: AH=FDh/BL=02h,AH=FDh/BL=05h
  27259. --------b-1FFD--BL05-------------------------
  27260. INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP DATE
  27261.     AH = FDh
  27262.     BL = 05h
  27263.     CH = year century in BCD
  27264.     CL = year low in BCD
  27265.     DH = month in BCD
  27266.     DL = date in BCD
  27267. Return: CF set on error (incorrect date format or Auto Wake up is not enable) 
  27268. SeeAlso: AH=FDh/BL=03h,AH=FDh/BL=04h
  27269. --------!---Section--------------------------
  27270. Interrupt List, part 4 of 12
  27271. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  27272. --------O-20---------------------------------
  27273. INT 20 - Minix - SEND/RECEIVE MESSAGE
  27274.     AX = process ID of other process
  27275.     BX -> message
  27276.     CX = operation (1 send, 2 receive, 3 send&receive)
  27277. Program: Minix is a Version 7 Unix-compatible operating system by Andrew
  27278.       Tanenbaum
  27279. Note:    the message contains the system call number (numbered as in V7
  27280.       Unix(tm)) and the call parameters
  27281. --------D-20---------------------------------
  27282. INT 20 - DOS 1+ - TERMINATE PROGRAM
  27283.     CS = PSP segment
  27284. Return: never
  27285. Note:    (see INT 21/AH=00h)
  27286. SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
  27287. --------G-20---------------------------------
  27288. INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
  27289.     ???
  27290. Return: ???
  27291. SeeAlso: INT 21"COMTROL"
  27292. --------G-21---------------------------------
  27293. INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
  27294.     ???
  27295. Return: AX = first segment available for control program use
  27296. SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
  27297. --------D-2100-------------------------------
  27298. INT 21 - DOS 1+ - TERMINATE PROGRAM
  27299.     AH = 00h
  27300.     CS = PSP segment
  27301. Notes:    Microsoft recommends using INT 21/AH=4Ch for DOS 2+
  27302.     execution continues at the address stored in INT 22 after DOS performs
  27303.       whatever cleanup it needs to do
  27304.     if the PSP is its own parent, the process's memory is not freed; if
  27305.       INT 22 additionally points into the terminating program, the
  27306.       process is effectively NOT terminated
  27307.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27308. SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
  27309. --------D-2101-------------------------------
  27310. INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
  27311.     AH = 01h
  27312. Return: AL = character read
  27313. Notes:    ^C/^Break are checked, and INT 23 executed if read
  27314.     character is echoed to standard output
  27315.     standard input is always the keyboard and standard output the screen
  27316.       under DOS 1.x, but they may be redirected under DOS 2+
  27317. SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
  27318. --------D-2102-------------------------------
  27319. INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
  27320.     AH = 02h
  27321.     DL = character to write
  27322. Return: AL = last character output (despite the official docs which state
  27323.         nothing is returned) (at least DOS 3.3-5.0)
  27324. Notes:    ^C/^Break are checked, and INT 23 executed if pressed
  27325.     standard output is always the screen under DOS 1.x, but may be
  27326.       redirected under DOS 2+
  27327.     the last character output will be the character in DL unless DL=09h
  27328.       on entry, in which case AL=20h as tabs are expanded to blanks
  27329. SeeAlso: AH=06h,AH=09h
  27330. --------D-2103-------------------------------
  27331. INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
  27332.     AH = 03h
  27333. Return: AL = character read
  27334. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  27335.     STDAUX is usually the first serial port
  27336. SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
  27337. --------D-2104-------------------------------
  27338. INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
  27339.     AH = 04h
  27340.     DL = character to write
  27341. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  27342.     STDAUX is usually the first serial port
  27343.     if STDAUX is busy, this function will wait until it becomes free
  27344. SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
  27345. --------D-2105-------------------------------
  27346. INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
  27347.     AH = 05h
  27348.     DL = character to print
  27349. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  27350.     STDPRN is usually the first parallel port, but may be redirected under
  27351.       DOS 2+
  27352.     if the printer is busy, this function will wait
  27353. SeeAlso: INT 17/AH=00h
  27354. --------D-2106-------------------------------
  27355. INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
  27356.     AH = 06h
  27357.     DL = character (except FFh)
  27358. Return: AL = character output (despite official docs which state nothing is
  27359.         returned) (at least DOS 3.3-5.0)
  27360. Notes:    does not check ^C/^Break
  27361.     writes to standard output, which is always the screen under DOS 1.x,
  27362.       but may be redirected under DOS 2+
  27363. SeeAlso: AH=02h,AH=09h
  27364. --------D-2106--DLFF-------------------------
  27365. INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
  27366.     AH = 06h
  27367.     DL = FFh
  27368. Return: ZF set if no character available
  27369.         AL = 00h
  27370.     ZF clear if character available
  27371.         AL = character read
  27372. Notes:    ^C/^Break are NOT checked
  27373.     if the returned character is 00h, the user pressed a key with an
  27374.       extended keycode, which will be returned by the next call of this
  27375.       function
  27376.     this function reads from standard input, which is always the keyboard
  27377.       under DOS 1.x, but may be redirected under DOS 2+
  27378.     although the return of AL=00h when no characters are available is not
  27379.       documented, some programs rely on this behavior
  27380. SeeAlso: AH=0Bh
  27381. --------D-2107-------------------------------
  27382. INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
  27383.     AH = 07h
  27384. Return: AL = character read from standard input
  27385. Notes:    does not check ^C/^Break
  27386.     standard input is always the keyboard under DOS 1.x, but may be
  27387.       redirected under DOS 2+
  27388.     if the interim console flag is set (see AX=6301h), partially-formed
  27389.       double-byte characters may be returned
  27390. SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
  27391. --------D-2108-------------------------------
  27392. INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
  27393.     AH = 08h
  27394. Return: AL = character read from standard input
  27395. Notes:    ^C/^Break are checked, and INT 23 executed if detected
  27396.     standard input is always the keyboard under DOS 1.x, but may be
  27397.       redirected under DOS 2+
  27398.     if the interim console flag is set (see AX=6301h), partially-formed
  27399.       double-byte characters may be returned
  27400. SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h
  27401. --------D-2109-------------------------------
  27402. INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
  27403.     AH = 09h
  27404.     DS:DX -> '$'-terminated string
  27405. Return: AL = 24h (the '$' terminating the string, despite official docs which
  27406.         state that nothing is returned) (at least DOS 3.3-5.0)
  27407. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  27408.     standard output is always the screen under DOS 1.x, but may be
  27409.       redirected under DOS 2+
  27410.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  27411. SeeAlso: AH=02h,AH=06h"OUTPUT"
  27412. --------D-210A-------------------------------
  27413. INT 21 - DOS 1+ - BUFFERED INPUT
  27414.     AH = 0Ah
  27415.     DS:DX -> buffer (see #0505)
  27416. Return: buffer filled with user input
  27417. Notes:    ^C/^Break are checked, and INT 23 is called if either detected
  27418.     reads from standard input, which may be redirected under DOS 2+
  27419.     if the maximum buffer size (see #0505) is set to 00h, this call returns
  27420.       immediately without reading any input
  27421. SeeAlso: AH=0Ch,INT 2F/AX=4810h
  27422.  
  27423. Format of DOS input buffer:
  27424. Offset    Size    Description    (Table 0505)
  27425.  00h    BYTE    maximum characters buffer can hold
  27426.  01h    BYTE    (call) number of chars from last input which may be recalled
  27427.         (return) number of characters actually read, excluding CR
  27428.  02h  N BYTEs    actual characters read, including the final carriage return
  27429. --------K-210A00-----------------------------
  27430. INT 21 - WCED v1.6+ - INSTALLATION CHECK
  27431.     AX = 0A00h
  27432.     DS:DX -> 6-byte buffer whose first two bytes must be 00h
  27433. Return: buffer offset 02h-05h filled with "Wced" if installed
  27434. Program: WCED is a free command-line editor and history utility by Stuart
  27435.       Russell
  27436. SeeAlso: AH=FFh"CED"
  27437. --------D-210B-------------------------------
  27438. INT 21 - DOS 1+ - GET STDIN STATUS
  27439.     AH = 0Bh
  27440. Return: AL = status
  27441.         00h if no character available
  27442.         FFh if character is available
  27443. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  27444.     standard input is always the keyboard under DOS 1.x, but may be
  27445.       redirected under DOS 2+
  27446.     if the interim console flag is set (see AX=6301h), this function
  27447.       returns AL=FFh if a partially-formed double-byte character is
  27448.       available
  27449. SeeAlso: AH=06h"INPUT",AX=4406h
  27450. --------v-210B56-----------------------------
  27451. INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
  27452.     AX = 0B56h
  27453. Return: AX = 4952h if resident
  27454. SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h
  27455. --------D-210C-------------------------------
  27456. INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
  27457.     AH = 0Ch
  27458.     AL = STDIN input function to execute after flushing buffer
  27459.     other registers as appropriate for the input function
  27460. Return: as appropriate for the specified input function
  27461. Note:    if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
  27462.       no input is attempted
  27463. SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
  27464. --------D-210D-------------------------------
  27465. INT 21 - DOS 1+ - DISK RESET
  27466.     AH = 0Dh
  27467. Return: (DOS 6 only) CF clear (earlier versions preserve CF)
  27468. Notes:    This function writes all modified disk buffers to disk, but does not
  27469.       update the directory information (that is only done when files are
  27470.       closed or a SYNC call is issued)
  27471. SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
  27472. --------v-210D20-----------------------------
  27473. INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
  27474.     AX = 0D20h
  27475. Return: AX = 1971h if resident
  27476. SeeAlso: AX=0B56h,AH=30h/DX=ABCDh
  27477. --------D-210E-------------------------------
  27478. INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
  27479.     AH = 0Eh
  27480.     DL = new default drive (00h = A:, 01h = B:, etc)
  27481. Return: AL = number of potentially valid drive letters
  27482. Notes:    under Novell NetWare, the return value is always 32, the number of
  27483.       drives that NetWare supports
  27484.     under DOS 3+, the return value is the greatest of 5, the value of
  27485.       LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
  27486.     on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
  27487.       may be accessed as either A: or B:
  27488.     otherwise, the return value is the highest drive actually present
  27489.     DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
  27490.       and 3+ a maximum of 26 drives
  27491. SeeAlso: AH=19h,AH=3Bh,AH=DBh
  27492. --------v-210E--DLAD-------------------------
  27493. INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
  27494.     AH = 0Eh
  27495.     DL = ADh
  27496. Return: AL = BAh if installed
  27497. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  27498.       Fifth Generation Systems, as bundled with Novell DOS 7
  27499. SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h
  27500. --------v-210E--DLAE-------------------------
  27501. INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
  27502.     AH = 0Eh
  27503.     DL = AEh
  27504. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h
  27505. --------v-210E--DLAF-------------------------
  27506. INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
  27507.     AH = 0Eh
  27508.     DL = AFh
  27509. SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h
  27510. --------D-210F-------------------------------
  27511. INT 21 - DOS 1+ - OPEN FILE USING FCB
  27512.     AH = 0Fh
  27513.     DS:DX -> unopened File Control Block (see #0506)
  27514. Return: AL = status
  27515.         00h successful
  27516.         FFh file not found or access denied
  27517. Notes:    (DOS 3.1+) file opened for read/write in compatibility mode
  27518.     an unopened FCB has the drive, filename, and extension fields filled
  27519.       in and all other bytes cleared
  27520.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27521.     DR-DOS checks password attached with AX=4303h
  27522. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  27523. SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h
  27524.  
  27525. Format of File Control Block:
  27526. Offset    Size    Description    (Table 0506)
  27527.  -7    BYTE    extended FCB if FFh
  27528.  -6   5 BYTEs    reserved
  27529.  -1    BYTE    file attribute if extended FCB
  27530.  00h    BYTE    drive number (0 = default, 1 = A, etc)
  27531.  01h  8 BYTEs    blank-padded file name
  27532.  09h  3 BYTEs    blank-padded file extension
  27533.  0Ch    WORD    current block number
  27534.  0Eh    WORD    logical record size
  27535.  10h    DWORD    file size
  27536.  14h    WORD    date of last write (see #0803 at AX=5700h)
  27537.  16h    WORD    time of last write (see #0802 at AX=5700h) (DOS 1.1+)
  27538.  18h  8 BYTEs    reserved (see #0507,#0508,#0509,#0510,#0511)
  27539.  20h    BYTE    record within current block
  27540.  21h    DWORD    random access record number (if record size is > 64 bytes, high
  27541.           byte is omitted)
  27542. Note:    to use an extended FCB, you must specify the address of the FFh flag at
  27543.       offset -7, rather than the address of the drive number field
  27544.  
  27545. Format of FCB reserved field for DOS 1.0:
  27546. Offset    Size    Description    (Table 0507)
  27547.  16h    WORD    location in directory (if high byte = FFh, low byte is device
  27548.           ID)
  27549.  18h    WORD    number of first cluster in file
  27550.  1Ah    WORD    current absolute cluster number on disk
  27551.  1Ch    WORD    current relative cluster number within file
  27552.         (0 = first cluster of file, 1 = second cluster, etc.)
  27553.  1Eh    BYTE    dirty flag (00h = not dirty)
  27554.  1Fh    BYTE    unused
  27555.  
  27556. Format of FCB reserved field for DOS 1.10-1.25:
  27557. Offset    Size    Description    (Table 0508)
  27558.  18h    BYTE    bit 7: set if logical device
  27559.         bit 6: not dirty
  27560.         bits 5-0: disk number or logical device ID
  27561.  19h    WORD    starting cluster number on disk
  27562.  1Bh    WORD    current absolute cluster number on disk
  27563.  1Dh    WORD    current relative cluster number within file
  27564.  1Fh    BYTE    unused
  27565.  
  27566. Format of FCB reserved field for DOS 2.x:
  27567. Offset    Size    Description    (Table 0509)
  27568.  18h    BYTE    bit 7: set if logical device
  27569.         bit 6: set if open???
  27570.         bits 5-0: ???
  27571.  19h    WORD    starting cluster number on disk
  27572.  1Bh    WORD    ???
  27573.  1Dh    BYTE    ???
  27574.  1Eh    BYTE    ???
  27575.  1Fh    BYTE    ???
  27576.  
  27577. Format of FCB reserved field for DOS 3.x:
  27578. Offset    Size    Description    (Table 0510)
  27579.  18h    BYTE    number of system file table entry for file
  27580.  19h    BYTE    attributes
  27581.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  27582.               01 = SHARE.EXE not loaded, character device
  27583.               10 = SHARE.EXE loaded, remote file
  27584.               11 = SHARE.EXE loaded, local file or device
  27585.         bits 5-0: low six bits of device attribute word
  27586. ---SHARE.EXE loaded, local file---
  27587.  1Ah    WORD    starting cluster of file on disk
  27588.  1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record
  27589.           (see #0774 at AH=52h)
  27590.  1Eh    BYTE    file attribute
  27591.  1Fh    BYTE    ???
  27592. ---SHARE.EXE loaded, remote file---
  27593.  1Ah    WORD    number of sector containing directory entry
  27594.  1Ch    WORD    relative cluster within file of last cluster accessed
  27595.  1Eh    BYTE    absolute cluster number of last cluster accessed
  27596.  1Fh    BYTE    ???
  27597. ---SHARE.EXE not loaded---
  27598.  1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
  27599.  1Bh    WORD    starting cluster of file
  27600.  1Dh    WORD    number of sector containing directory entry
  27601.  1Fh    BYTE    number of directory entry within sector
  27602. Note:    if FCB opened on character device, DWORD at 1Ah is set to the address
  27603.       of the device driver header, then the BYTE at 1Ah is overwritten.
  27604.  
  27605. Format of FCB reserved field for DOS 5.0:
  27606. Offset    Size    Description    (Table 0511)
  27607.  18h    BYTE    number of system file table entry for file
  27608.  19h    BYTE    attributes
  27609.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  27610.               01 = SHARE.EXE not loaded, character device
  27611.               10 = SHARE.EXE loaded, remote file
  27612.               11 = SHARE.EXE loaded, local file or device
  27613.         bits 5-0: low six bits of device attribute word
  27614. ---SHARE.EXE loaded, local file---
  27615.  1Ah    WORD    starting cluster of file on disk
  27616.  1Ch    WORD    unique sequence number of sharing record
  27617.  1Eh    BYTE    file attributes
  27618.  1Fh    BYTE    unused???
  27619. ---SHARE.EXE loaded, remote file---
  27620.  1Ah    WORD    network handle
  27621.  1Ch    DWORD    network ID
  27622. ---SHARE not loaded, local device---
  27623.  1Ah    DWORD    pointer to device driver header
  27624.  1Eh  2 BYTEs    unused???
  27625. ---SHARE not loaded, local file---
  27626.  1Ah    BYTE    extra info
  27627.         bit 7: read-only attribute from SFT
  27628.         bit 6: archive attribute from SFT
  27629.         bits 5-0: high bits of sector number
  27630.  1Bh    WORD    starting cluster of file
  27631.  1Dh    WORD    low word of sector number containing directory entry
  27632.  1Fh    BYTE    number of directory entry within sector
  27633. --------D-2110-------------------------------
  27634. INT 21 - DOS 1+ - CLOSE FILE USING FCB
  27635.     AH = 10h
  27636.     DS:DX -> File Control Block (see #0506)
  27637. Return: AL = status
  27638.         00h successful
  27639.         FFh failed
  27640. Notes:    a successful close forces all disk buffers used by the file to be
  27641.       written and the directory entry to be updated
  27642.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27643. SeeAlso: AH=0Fh,AH=16h,AH=3Eh
  27644. --------D-2111-------------------------------
  27645. INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
  27646.     AH = 11h
  27647.     DS:DX -> unopened FCB (see #0506), may contain '?' wildcards
  27648. Return: AL = status
  27649.         00h successful
  27650.         [DTA] unopened FCB for first matching file
  27651.         FFh no matching filename, or bad FCB
  27652. Notes:    the type of the returned FCB depends on whether the input FCB was a
  27653.       normal or an extended FCB
  27654.     the data returned in the DTA is actually the drive number (or extended
  27655.       FCB header and drive number) followed by the file's directory entry
  27656.       (see #0512); this format happens to be compatible with an unopened
  27657.       FCB
  27658.     for extended FCBs with search attribute 08h, the volume label (if any)
  27659.       will be returned even if the current directory is not the root dir.
  27660.     DOS 3+ also allows the '*' wildcard
  27661.     the search FCB must not be modified if AH=12h will be used to continue
  27662.       searching; DOS 3.3 has set the following parts of the FCB:
  27663.          0Ch    BYTE    ???
  27664.          0Dh    WORD    directory entry number of matching file
  27665.          0Fh    WORD    cluster number of current directory
  27666.          11h  4 BYTEs    ???
  27667.          15h    BYTE    drive number (1=A:)
  27668.     this function is used by many copy protection schemes to obtain the
  27669.       starting cluster of a file
  27670. SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
  27671.  
  27672. Format of DOS directory entry:
  27673. Offset    Size    Description    (Table 0512)
  27674.  00h  8 BYTEs    blank-padded filename
  27675.  08h  3 BYTEs    blank-padded file extension
  27676.  0Bh    BYTE    attributes
  27677.  0Ch 10 BYTEs    reserved
  27678.         used by DR-DOS to store file password
  27679.  16h    WORD    time of creation or last update (see #0802 at AX=5700h)
  27680.  18h    WORD    date of creation or last update (see #0803 at AX=5700h)
  27681.  1Ah    WORD    starting cluster number
  27682.  1Ch    DWORD    file size
  27683. --------D-2112-------------------------------
  27684. INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
  27685.     AH = 12h
  27686.     DS:DX -> unopened FCB (see #0506)
  27687. Return: AL = status
  27688.         00h successful
  27689.         [DTA] = unopened FCB
  27690.         FFh no more matching filenames
  27691. Note:    (see AH=11h)
  27692.     assumes that successful FindFirst executed on search FCB before call
  27693. SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
  27694. --------D-2113-------------------------------
  27695. INT 21 - DOS 1+ - DELETE FILE USING FCB
  27696.     AH = 13h
  27697.     DS:DX -> unopened FCB (see #0506), filename filled with template for
  27698.         deletion ('?' wildcards allowed)
  27699. Return: AL = status
  27700.         00h one or more files successfully deleted
  27701.         FFh no matching files or all were read-only or locked
  27702. Notes:    DOS 1.25+ deletes everything in the current directory (including
  27703.       subdirectories) and sets the first byte of the name to 00h (entry
  27704.       never used) instead of E5h if called on an extended FCB with
  27705.       filename '???????????' and bits 0-4 of the attribute set (bits 1 and
  27706.       2 for DOS 1.x).  This may have originally been an optimization to
  27707.       minimize directory searching after a mass deletion (DOS 1.25+ stop
  27708.       the directory search upon encountering a never-used entry), but can
  27709.       corrupt the filesystem under DOS 2+ because subdirectories are
  27710.       removed without deleting the files they contain.
  27711.     currently-open files should not be deleted
  27712.     MS-DOS allows deletion of read-only files with an extended FCB, whereas
  27713.       Novell NetWare does not
  27714. SeeAlso: AH=41h,INT 2F/AX=1113h
  27715. --------D-2114-------------------------------
  27716. INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
  27717.     AH = 14h
  27718.     DS:DX -> opened FCB (see #0506)
  27719. Return: AL = status
  27720.         00h successful
  27721.         01h end of file (no data)
  27722.         02h segment wrap in DTA
  27723.         03h end of file, partial record read
  27724.     [DTA] = record read from file
  27725. Notes:    reads a record of the size specified in the FCB beginning at the
  27726.       current file position, then updates the current block and current
  27727.       record fields in the FCB
  27728.     if a partial record was read, it is zero-padded to the full size
  27729.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27730. SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
  27731. --------D-2115-------------------------------
  27732. INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
  27733.     AH = 15h
  27734.     DS:DX -> opened FCB (see #0506)
  27735.     [DTA] = record to write
  27736. Return: AL = status
  27737.         00h successful
  27738.         01h disk full
  27739.         02h segment wrap in DTA
  27740. Notes:    writes a record of the size specified in the FCB beginning at the
  27741.       current file position, then updates the current block and current
  27742.       record fields in the FCB
  27743.     if less than a full sector is written, the data is placed in a DOS
  27744.       buffer to be written out at a later time
  27745.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27746. SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
  27747. --------D-2116-------------------------------
  27748. INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
  27749.     AH = 16h
  27750.     DS:DX -> unopened FCB (see #0506), wildcards not allowed
  27751. Return: AL = status
  27752.         00h successful
  27753.         FFh directory full or file exists and is read-only or locked
  27754. Notes:    if file already exists, it is truncated to zero length
  27755.     if an extended FCB is used, the file is given the attribute in the
  27756.       FCB; this is how to create a volume label in the disk's root dir
  27757.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27758. SeeAlso: AH=0Fh,AH=10h,AH=3Ch
  27759. --------D-2117-------------------------------
  27760. INT 21 - DOS 1+ - RENAME FILE USING FCB
  27761.     AH = 17h
  27762.     DS:DX -> modified FCB (see also #0506)
  27763.         the old filename ('?' wildcards OK) is in the standard location
  27764.         while the new filename ('?' wildcards OK) is stored in the 11
  27765.         bytes beginning at offset 11h
  27766. Return: AL = status
  27767.         00h successfully renamed
  27768.         FFh no matching files,file is read-only, or new name already exists
  27769. Notes:    subdirectories may be renamed using an extended FCB with the
  27770.       appropriate attribute, as may volume labels
  27771.     DR-DOS checks password attached with AX=4303h before permitting rename
  27772. SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
  27773. --------D-2118-------------------------------
  27774. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  27775.     AH = 18h
  27776. Return: AL = 00h
  27777. Note:    corresponds to the CP/M BDOS function "get bit map of logged drives",
  27778.       which is meaningless under MS-DOS
  27779. SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h
  27780. --------D-2119-------------------------------
  27781. INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
  27782.     AH = 19h
  27783. Return: AL = drive (00h = A:, 01h = B:, etc)
  27784. Note:    Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
  27785.       from a particular location every time it starts a command to
  27786.       determine when to issue an automatic EOJ
  27787. SeeAlso: AH=0Eh,AH=47h,AH=BBh
  27788. --------D-211A-------------------------------
  27789. INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
  27790.     AH = 1Ah
  27791.     DS:DX -> Disk Transfer Area (DTA)
  27792. Notes:    the DTA is set to PSP:0080h when a program is started
  27793.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  27794. SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
  27795. --------D-211B-------------------------------
  27796. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
  27797.     AH = 1Bh
  27798. Return: AL = sectors per cluster (allocation unit)
  27799.     CX = bytes per sector
  27800.     DX = total number of clusters
  27801.     DS:BX -> media ID byte (see #0513)
  27802. Note:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  27803.       versions return a pointer to a copy of the FAT's ID byte
  27804. SeeAlso: AH=1Ch,AH=36h
  27805.  
  27806. (Table 0513)
  27807. Values for media ID byte:
  27808.  FFh    floppy, double-sided, 8 sectors per track (320K)
  27809.  FEh    floppy, single-sided, 8 sectors per track (160K)
  27810.  FDh    floppy, double-sided, 9 sectors per track (360K)
  27811.  FCh    floppy, single-sided, 9 sectors per track (180K)
  27812.  F9h    floppy, double-sided, 15 sectors per track (1.2M)
  27813.  F8h    hard disk
  27814.  F0h    other
  27815. --------D-211C-------------------------------
  27816. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
  27817.     AH = 1Ch
  27818.     DL = drive (00h = default, 01h = A:, etc)
  27819. Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
  27820.     CX = bytes per sector
  27821.     DX = total number of clusters
  27822.     DS:BX -> media ID byte (see #0513)
  27823. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  27824.       versions return a pointer to a copy of the FAT's ID byte
  27825.     on a DBLSPACE drive, the total number of clusters is based on the
  27826.       estimated compression ratio
  27827. SeeAlso: AH=1Bh,AH=36h
  27828. --------D-211D-------------------------------
  27829. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  27830.     AH = 1Dh
  27831. Return: AL = 00h
  27832. Note:    corresponds to the CP/M BDOS function "get bit map of read-only
  27833.       drives", which is meaningless under MS-DOS
  27834. SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
  27835. --------D-211E-------------------------------
  27836. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  27837.     AH = 1Eh
  27838. Return: AL = 00h
  27839. Note:    corresponds to the CP/M BDOS function "set file attributes" which was
  27840.      meaningless under MS-DOS 1.x
  27841. SeeAlso: AH=18h,AH=1Dh,AH=20h
  27842. --------D-211F-------------------------------
  27843. INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
  27844.     AH = 1Fh
  27845. Return: AL = status
  27846.         00h successful
  27847.         DS:BX -> Drive Parameter Block (DPB) (see #0514 for DOS 1.x,
  27848.             AH=32h for DOS 2+)
  27849.         FFh invalid drive
  27850. Note:    this call was undocumented prior to the release of DOS 5.0; however,
  27851.       only the DOS 4+ version of the DPB has been documented
  27852. SeeAlso: AH=32h
  27853.  
  27854. Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
  27855. Offset    Size    Description    (Table 0514)
  27856.  00h    BYTE    sequential device ID
  27857.  01h    BYTE    logical drive number (0=A:)
  27858.  02h    WORD    bytes per sector
  27859.  04h    BYTE    highest sector number within a cluster
  27860.  05h    BYTE    shift count to convert clusters into sectors
  27861.  06h    WORD    starting sector number of first FAT
  27862.  08h    BYTE    number of copies of FAT
  27863.  09h    WORD    number of directory entries
  27864.  0Bh    WORD    number of first data sector
  27865.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  27866.  0Fh    BYTE    sectors per FAT
  27867.  10h    WORD    starting sector of directory
  27868.  12h    WORD    address of allocation table
  27869. Note:    the DOS 1.0 table is the same except that the first and last fields
  27870.       are missing; see INT 21/AH=32h for the DOS 2+ version
  27871. --------D-2120-------------------------------
  27872. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  27873.     AH = 20h
  27874. Return: AL = 00h
  27875. Note:    corresponds to the CP/M BDOS function "get/set default user
  27876.       (sublibrary) number", which is meaningless under MS-DOS
  27877. SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
  27878. --------D-2121-------------------------------
  27879. INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
  27880.     AH = 21h
  27881.     DS:DX -> opened FCB (see #0506)
  27882. Return: AL = status
  27883.         00h successful
  27884.         01h end of file, no data read
  27885.         02h segment wrap in DTA, no data read
  27886.         03h end of file, partial record read
  27887.     [DTA] = record read from file
  27888. Notes:    the record is read from the current file position as specified by the
  27889.       random record and record size fields of the FCB
  27890.     the file position is not updated after reading the record
  27891.     if a partial record is read, it is zero-padded to the full size
  27892.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27893. SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
  27894. --------D-2122-------------------------------
  27895. INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
  27896.     AH = 22h
  27897.     DS:DX -> opened FCB (see #0506)
  27898.     [DTA] = record to write
  27899. Return: AL = status
  27900.         00h successful
  27901.         01h disk full
  27902.         02h segment wrap in DTA
  27903. Notes:    the record is written to the current file position as specified by the
  27904.       random record and record size fields of the FCB
  27905.     the file position is not updated after writing the record
  27906.     if the record is located beyond the end of the file, the file is
  27907.       extended but the intervening data remains uninitialized
  27908.     if the record only partially fills a disk sector, it is copied to a
  27909.       DOS disk buffer to be written out to disk at a later time
  27910.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27911. SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
  27912. --------D-2123-------------------------------
  27913. INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
  27914.     AH = 23h
  27915.     DS:DX -> unopened FCB (see #0506), wildcards not allowed
  27916. Return: AL = status
  27917.         00h successful (matching file found)
  27918.         FCB random record field filled with size in records, rounded up
  27919.         to next full record
  27920.         FFh failed (no matching file found)
  27921. Notes:    not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27922.     MS-DOS returns nonsense if the FCB record number field is set to a very
  27923.       large positive number, and status FFh if negative; DR-DOS returns the
  27924.       correct file size in both cases
  27925. BUG:    APPEND for DOS 3.3+ corrupts DX if the file is not found
  27926. SeeAlso: AH=42h
  27927. --------D-2124-------------------------------
  27928. INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
  27929.     AH = 24h
  27930.     DS:DX -> opened FCB (see #0506)
  27931. Notes:    computes the random record number corresponding to the current record
  27932.       number and record size, then stores the result in the FCB
  27933.     normally used when switching from sequential to random access
  27934.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  27935. SeeAlso: AH=21h,AH=27h,AH=42h
  27936. --------D-2125-------------------------------
  27937. INT 21 - DOS 1+ - SET INTERRUPT VECTOR
  27938.     AH = 25h
  27939.     AL = interrupt number
  27940.     DS:DX -> new interrupt handler
  27941. Notes:    this function is preferred over direct modification of the interrupt
  27942.       vector table
  27943.     some DOS extenders place an API on this function, as it is not
  27944.       directly meaningful in protected mode
  27945.     under DR-DOS 5.0+, this function does not use any of the DOS-internal
  27946.       stacks and may thus be called at any time
  27947.     Novell NetWare (except the new DOS Requester) monitors the offset of
  27948.       any INT 24 set, and if equal to the value at startup, substitutes
  27949.       its own handler to allow handling of network errors; this introduces
  27950.       the potential bug that any program whose INT 24 handler offset
  27951.       happens to be the same as COMMAND.COM's will not have its INT 24
  27952.       handler installed
  27953. SeeAlso: AX=2501h,AH=35h
  27954. --------E-212501-----------------------------
  27955. INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
  27956.     AX = 2501h
  27957.     SS = application's original SS or DS (FlashTek X-32VM)
  27958. Return: CF clear if successful
  27959.     CF set on error
  27960.         caller is operating on X-32 stack (FlashTek X-32VM)
  27961. Notes:    Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
  27962.       system calls.     Only available when directly using 386/DOS-Extender or
  27963.       a compatible DOS extender, or when using a product that was created
  27964.       using 386-DOS/Extender or a compatible
  27965.     this function is also supported by FlashTek X-32VM
  27966. SeeAlso: AH=30h"Phar Lap"
  27967. --------E-212502-----------------------------
  27968. INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
  27969.     AX = 2502h
  27970.     CL = interrupt number
  27971. Return: CF clear
  27972.     ES:EBX = CS:EIP of protected-mode interrupt handler
  27973. Note:    this function is also supported by FlashTek X-32VM
  27974. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
  27975. --------E-212503-----------------------------
  27976. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
  27977.     AX = 2503h
  27978.     CL = interrupt number
  27979. Return: CF clear
  27980.     EBX = CS:IP of real-mode interrupt handler
  27981. Note:    this function is also supported by FlashTek X-32VM
  27982. SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
  27983. --------E-212504-----------------------------
  27984. INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
  27985.     AX = 2504h
  27986.     CL = interrupt number
  27987.     DS:EDX = CS:EIP of protected-mode interrupt handler
  27988. Return: CF clear
  27989. Note:    this function is also supported by FlashTek X-32VM
  27990. SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
  27991. --------E-212505-----------------------------
  27992. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
  27993.     AX = 2505h
  27994.     CL = interrupt number
  27995.     EBX = CS:IP of real-mode interrupt handler
  27996. Return: CF clear
  27997. Note:    this function is also supported by FlashTek X-32VM
  27998. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
  27999. --------E-212506-----------------------------
  28000. INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
  28001.     AX = 2506h
  28002.     CL = interrupt number
  28003.     DS:EDX = CS:EIP of protected-mode interrupt handler
  28004. Return: CF clear
  28005. Notes:    this function modifies both the real-mode low-memory interrupt
  28006.       vector table and the protected-mode Interrupt Descriptor Table (IDT)
  28007.     interrupts occurring in real mode are resignaled in protected mode
  28008.     this function is also supported by FlashTek X-32VM
  28009. --------E-212507-----------------------------
  28010. INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
  28011.     AX = 2507h
  28012.     CL = interrupt number
  28013.     DS:EDX = CS:EIP of protected-mode interrupt handler
  28014.     EBX = CS:IP of real-mode interrupt handler
  28015. Return: CF clear
  28016. Notes:    interrupts are disabled until both vectors have been modified
  28017.     this function is also supported by FlashTek X-32VM
  28018. SeeAlso: AX=2504h,AX=2505h
  28019. --------E-212508-----------------------------
  28020. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
  28021.     AX = 2508h
  28022.     BX = segment selector
  28023. Return: CF clear if successful
  28024.         ECX = linear base address of segment
  28025.     CF set if invalid segment selector
  28026. Note:    this function is also supported by FlashTek X-32VM
  28027. SeeAlso: AX=2509h
  28028. --------E-212509-----------------------------
  28029. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
  28030.     AX = 2509h
  28031.     EBX = linear address to convert
  28032. Return: CF clear if successful
  28033.         ECX = physical address (carry flag clear)
  28034.     CF set if linear address not mapped in page tables
  28035. SeeAlso: AX=2508h
  28036. --------E-212509-----------------------------
  28037. INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
  28038.     AX = 2509h
  28039. Return: CF clear
  28040.     EAX high word = default DS
  28041.     AX = alias for 16-bit data segment
  28042.     BX = real mode code segment
  28043.     EDX high word = selector covering full 4GB address space
  28044.     DX = default SS
  28045.     ESI high word = PSP selector
  28046.     SI = environment selector
  28047. --------E-21250A-----------------------------
  28048. INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
  28049.     AX = 250Ah
  28050.     ES = segment selector in the Local Descriptor Table (LDT) of segment
  28051.          to modify
  28052.     EBX = physical base address of memory to map (multiple of 4K)
  28053.     ECX = number of physical 4K pages to map
  28054. Return: CF clear if successful
  28055.         EAX = 32-bit offset in segment of mapped memory
  28056.     CF set on error
  28057.         EAX = error code
  28058.         08h insufficient memory to create page tables
  28059.         09h invalid segment selector
  28060. SeeAlso: INT 31/AX=0800h
  28061. --------E-21250C-----------------------------
  28062. INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
  28063.     AX = 250Ch
  28064. Return: CF clear
  28065.     AL = base interrupt vector for IRQ0-IRQ7
  28066.     AH = base interrupt vector for IRQ8-IRQ15
  28067.     BL = interrupt vector for BIOS print screen function (Phar Lap only)
  28068. Note:    this function is also supported by FlashTek X-32VM
  28069. SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
  28070. --------E-21250D-----------------------------
  28071. INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
  28072.     AX = 250Dh
  28073. Return: CF clear
  28074.     EAX = CS:IP of real-mode callback procedure (see #0515) that will
  28075.           call through from real mode to a protected-mode routine
  28076.     EBX = 32-bit real-mode address of intermode call data buffer
  28077.     ECX = size in bytes of intermode call data buffer
  28078.     ES:EDX = protected-mode address of intermode call data buffer
  28079. Notes:    this function is also supported by FlashTek X-32VM
  28080.     X-32VM guarantees the intermode buffer to be at least 4 KB
  28081. SeeAlso: AX=250Eh
  28082.  
  28083. (Table 0515)
  28084. Call Phar Lap real-mode callback with:
  28085.     STACK:    DWORD    offset to protected-mode code
  28086.         WORD    placeholder for protected-mode CS
  28087.         DWORD    pointer to selector structure (see #0516)
  28088.             or 0000h:0000h for defaults
  28089.         var    parameters for protected-mode procedure
  28090. Return: via FAR return
  28091.  
  28092. Format of Phar Lap selector structure:
  28093. Offset    Size    Description    (Table 0516)
  28094.  00h    WORD    protected-mode GS selector
  28095.  02h    WORD    protected-mode FS selector
  28096.  04h    WORD    protected-mode ES selector
  28097.  06h    WORD    protected-mode DS selector
  28098. --------E-21250E-----------------------------
  28099. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
  28100.     AX = 250Eh
  28101.     EBX = CS:IP of real-mode procedure to call
  28102.     ECX = number of two-byte words to copy from protected-mode stack
  28103.           to real-mode stack
  28104. Return: CF clear if successful
  28105.         all segment registers unchanged
  28106.         all general registers contain values set by real-mode procedure
  28107.         all other flags set as they were left by real-mode procedure
  28108.         stack unchanged
  28109.     CF set on error
  28110.         EAX = error code
  28111.         01h not enough real-mode stack space
  28112. Note:    this function is also supported by FlashTek X-32VM; under X-32VM, the
  28113.       call will fail if ECX > 0000003Fh
  28114. SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
  28115. --------E-21250F-----------------------------
  28116. INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
  28117.     AX = 250Fh
  28118.     ES:EBX = 48-bit protected-mode address to convert
  28119.     ECX = 00000000h or length of data in bytes
  28120. Return: CF clear if successful (address < 1MB and contiguous)
  28121.         ECX = 32-bit real-mode MS-DOS address
  28122.     CF set on error (address >= 1MB or not contiguous)
  28123.         ECX = linear address
  28124. Note:    this function is also supported by FlashTek X-32VM
  28125. SeeAlso: AX=2510h
  28126. --------E-212510-----------------------------
  28127. INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
  28128.     AX = 2510h
  28129.     EBX = CS:IP of real-mode procedure to call
  28130.     ECX = number of two-byte words to copy to protected-mode stack to
  28131.           real-mode stack
  28132.     DS:EDX -> pointer to parameter block (see #0517)
  28133. Return: CF clear if successful
  28134.         all segment registers unchanged,
  28135.         EDX unchanged
  28136.         all other general registers contain values set by real-mode proc
  28137.         all other flags are set as they were left by real-mode procedure
  28138.         real-mode register values are returned in the parameter block
  28139.     CF set on error
  28140.         EAX = error code
  28141.         01h not enough real-mode stack space
  28142. Note:    unlike most of the preceding 25xxh functions, this one is not
  28143.       supported by FlashTek X-32VM
  28144. SeeAlso: AX=250Eh,AX=250Fh
  28145.  
  28146. Format of Phar Lap real-mode call parameter block:
  28147. Offset    Size    Description    (Table 0517)
  28148.  00h    WORD    real-mode DS value
  28149.  02h    WORD    real-mode ES value
  28150.  04h    WORD    real-mode FS value
  28151.  06h    WORD    real-mode GS value
  28152.  08h    DWORD    real-mode EAX value
  28153.  0Ch    DWORD    real-mode EBX value
  28154.  10h    DWORD    real-mode ECX value
  28155.  14h    DWORD    real-mode EDX value
  28156. --------E-212511-----------------------------
  28157. INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
  28158.     AX = 2511h
  28159.     DS:EDX -> parameter block (see #0518)
  28160. Return: all segment registers unchanged
  28161.     EDX unchanged
  28162.     all other registers contain values set by the real-mode int handler
  28163.     the flags are set as they were left by the real-mode interrupt handler
  28164.     real-mode register values are returned in the parameter block
  28165. Note:    this function is also supported by FlashTek X-32VM
  28166. SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
  28167.  
  28168. Format of Phar Lap real-mode interrupt parameter block:
  28169. Offset    Size    Description    (Table 0518)
  28170.  00h    WORD    interrupt number
  28171.  02h    WORD    real-mode DS value
  28172.  04h    WORD    real-mode ES value
  28173.  06h    WORD    real-mode FS value
  28174.  08h    WORD    real-mode GS value
  28175.  0Ah    DWORD    real-mode EAX value
  28176.  0Eh    DWORD    real-mode EDX value
  28177. Note: all other real-mode values set from protected-mode registers
  28178. --------E-212512-----------------------------
  28179. INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
  28180.     AX = 2512h
  28181.     DS:EDX -> pointer to ASCIZ program name
  28182.     ES:EBX -> pointer to parameter block (see #0520)
  28183.     ECX = size in bytes of LDT buffer
  28184. Return: CF clear if successful
  28185.         EAX = number of segment descriptors in LDT
  28186.     CF set on error
  28187.         EAX = error code (see #0519)
  28188. SeeAlso: AX=2517h
  28189.  
  28190. (Table 0519)
  28191. Values for Phar Lap error code:
  28192.  02h    file not found or path invalid
  28193.  05h    access denied
  28194.  08h    insufficient memory
  28195.  0Ah    environment invalid
  28196.  0Bh    invalid file format
  28197.  80h    LDT too small
  28198.  
  28199. Format of Phar Lap program load parameter block:
  28200. Offset    Size    Description    (Table 0520)
  28201. Input:
  28202.  00h    DWORD    32-bit offset of environment string
  28203.  04h    WORD    segment of environment string
  28204.  06h    DWORD    32-bit offset of command-tail string
  28205.  0Ah    WORD    segment of command-tail string
  28206.  0Ch    DWORD    32-bit offset of LDT buffer (size in ECX)
  28207.  10h    WORD    segment of LDT buffer
  28208. Output:
  28209.  12h    WORD    real-mode paragraph address of PSP (see also AH=26h)
  28210.  14h    WORD    real/protected mode flag
  28211.         0000h  real mode
  28212.         0001h  protected mode
  28213.  16h    DWORD    initial EIP value
  28214.  1Ah    WORD    initial CS value
  28215.  1Ch    DWORD    initial ESP value
  28216.  20h    WORD    initial SS value
  28217.  22h    WORD    initial DS value
  28218.  24h    WORD    initial ES value
  28219.  26h    WORD    initial FS value
  28220.  28h    WORD    initial GS value
  28221. --------E-212513-----------------------------
  28222. INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
  28223.     AX = 2513h
  28224.     BX = segment selector of descriptor in GDT or LDT
  28225.     CL = access-rights byte for alias descriptor
  28226.     CH = use-type bit (USE16 or USE32) for alias descriptor
  28227. Return: CF clear if successful
  28228.         AX = segment selector for created alias
  28229.     CF set on error
  28230.         EAX = error code
  28231.         08h insufficient memory (can't grow LDT)
  28232.         09h invalid segment selector in BX
  28233. --------E-212514-----------------------------
  28234. INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
  28235.     AX = 2514h
  28236.     BX = segment selector of descriptor in GDT or LDT
  28237.     CL = new access-rights byte
  28238.     CH = new use-type bit (USE16 or USE32)
  28239. Return: CF clear if successful
  28240.     CF set on error
  28241.         EAX = error code
  28242.         09h invalid selector in BX
  28243. SeeAlso: AX=2515h,INT 31/AX=0009h
  28244. --------E-212515-----------------------------
  28245. INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
  28246.     AX = 2515h
  28247.     BX = segment selector of descriptor in GDT or LDT
  28248. Return: CF clear if successful
  28249.         CL = access-rights byte for segment
  28250.         CH = use-type bit (USE16 or USE32)
  28251.     ECX<16-31> destroyed
  28252.     CF set on error
  28253.         EAX = error code
  28254.         09h invalid segment selector in BX
  28255. SeeAlso: AX=2514h
  28256. --------E-212516-----------------------------
  28257. INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
  28258.     AX = 2516h
  28259. Return: CF clear
  28260. Note:    this function must be called from Ring 0 or the CS descriptor is freed
  28261. --------E-212517-----------------------------
  28262. INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
  28263.     AX = 2517h
  28264. Return: CF clear
  28265.     ES:EBX -> data buffer (protected mode address)
  28266.     ECX -> data buffer (real mode address)
  28267.     EDX = size of data buffer in bytes
  28268. Note:    the data buffer's address changes after calls to AX=2512h and AX=252Ah
  28269. SeeAlso: AX=2512h,AX=252Ah,AX=2530h
  28270. --------E-212518-----------------------------
  28271. INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
  28272.     AX = 2518h
  28273.     ES:EBX -> function to call when a segment is moved
  28274. Return: CF clear
  28275.     ES:EBX -> previous handler
  28276. --------E-212519-----------------------------
  28277. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
  28278.     AX = 2519h
  28279. Return: CF clear
  28280.     EAX = error code
  28281.         0000h  no error
  28282.         0001h  out of physical memory
  28283.         0002h  out of swap space (unable to grow swap file)
  28284.         0003h  out of LDT entries and unable to grow LDT
  28285.         0004h  unable to change extended memory allocation mark
  28286.         FFFFFFFFh    paging disabled
  28287. Note:    VMM is the Virtual Memory Manager option
  28288. --------E-21251A-----------------------------
  28289. INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
  28290.     AX = 251Ah
  28291.     EDX = number of 4k pages to lock
  28292.     if BL = 00h
  28293.         ECX = linear address of first page to lock
  28294.     if BL = 01h
  28295.         ES:ECX -> pointer to first page to lock
  28296. Return: CF clear if successful
  28297.     CF set on error
  28298.         EAX = error code
  28299.         08h insufficient memory
  28300.         09h invalid address range
  28301. SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
  28302. --------E-21251B-----------------------------
  28303. INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
  28304.     AX = 251Bh
  28305.     EDX = number of pages to unlock
  28306.     if BL = 00h
  28307.         ECX = linear address of first page to unlock
  28308.     if BL = 01h
  28309.         ES:ECX -> pointer to first page to unlock
  28310. Return: CF clear if successful
  28311.     CF set on error
  28312.         EAX = error code
  28313.         09h invalid address range
  28314. SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
  28315. --------E-21251C-----------------------------
  28316. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
  28317.     AX = 251Ch
  28318.     BH = preservation flag (00h preserve contents, 01h discard contents)
  28319.     EDX = number of pages to free
  28320.     BL = address type
  28321.         00h linear address
  28322.         ECX = linear address of first page to be freed
  28323.         01h pointer
  28324.         ES:ECX -> first page to be freed
  28325. Return: CF clear if successful
  28326.     CF set on error
  28327.         EAX = error code
  28328.         08h memory error, swap space full, no VMM or DPMI
  28329.         09h invalid address
  28330. --------E-21251D-----------------------------
  28331. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
  28332.     AX = 251Dh
  28333.     BL = address type
  28334.         00h linear address
  28335.         ECX = linear address of page table entry to read
  28336.         01h pointer
  28337.         ES:ECX -> page table entry to read
  28338. Return: CF clear if successful
  28339.         EAX = contents of page table entry
  28340.     CF set on error
  28341.         EAX = error code
  28342.         09h invalid address or NOPAGE option set
  28343.         78h invalid under DPMI
  28344. Note:    this function is obsolete; use AX=252Bh/BH=09h instead
  28345. SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h
  28346. --------E-21251E-----------------------------
  28347. INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
  28348.     AX = 251Eh
  28349.     BL = address type
  28350.         00h linear address
  28351.         ECX = linear address of page table entry to read
  28352.         01h pointer
  28353.         ES:ECX -> page table entry to read
  28354.     EDX = new value for page table entry
  28355. Return: CF clear if successful
  28356.     CF set on error
  28357.         EAX = error code
  28358.         09h invalid address or NOPAGE option set
  28359.         82h not compatible with DPMI
  28360. Note:    this call is obsolete; use AX=252Bh/BH=0Ah instead
  28361. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h
  28362. --------E-21251F-----------------------------
  28363. INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
  28364.     AX = 251Fh
  28365.     BL = address type
  28366.         00h linear address
  28367.         ECX = linear address of first page table entry
  28368.         EDX = linear address of second page table entry
  28369.         01h pointer
  28370.         ES:ECX -> first page table entry
  28371.         ES:EDX -> second page table entry
  28372. Return: CF clear if successful
  28373.     CF set on error
  28374.         EAX = error code
  28375.         09h invalid address or NOPAGE option set
  28376.         82h not compatible with DPMI
  28377. SeeAlso: AX=251Dh,AX=251Eh
  28378. --------E-212520-----------------------------
  28379. INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
  28380.     AX = 2520h
  28381.     DS:EDX -> pointer to buffer at least 100 bytes in size (see #0521)
  28382.     BL = 0 (don't reset VM stats), 1 (reset VM stats)
  28383. Return: carry flag clear
  28384.  
  28385. Format of Phar Lap VM statistics buffer:
  28386. Offset    Size    Description    (Table 0521)
  28387.  00h    DWORD    VM status
  28388.         0001h VM subsystem is present
  28389.         0000h VM not present
  28390.  04h    DWORD    "nconvpg" number of conventional memory pages available
  28391.  08h    DWORD    "nbimpg" number of Compaq built-in memory pages available
  28392.  0Ch    DWORD    "nextpg" total number of extended memory pages
  28393.  10h    DWORD    "extlim" extender memory pages limit
  28394.  14h    DWORD    "aphyspg" number of physical memory pages allocated to appl
  28395.  18h    DWORD    "alockpg" number of locked pages owned by application
  28396.  1Ch    DWORD    "sysphyspg" number physical memory pages allocated to system
  28397.  20h    DWORD    "nfreepg" number of free physical pages; approx if EMS VCPI
  28398.  24h    DWORD    linear address of beginning of application address space
  28399.  28h    DWORD    linear address of end of application address space
  28400.  2Ch    DWORD    number of seconds since last time VM stats were reset
  28401.  30h    DWORD    number of page faults since last time
  28402.  34h    DWORD    number of pages written to swap file since last time
  28403.  38h    DWORD    number of reclaimed pages (page faults on swapped pages)
  28404.  3Ch    DWORD    number of virtual pages allocated to the application
  28405.  40h    DWORD    size in pages of swap file
  28406.  44h    DWORD    number of system pages allocated with EMS calls
  28407.  48h    DWORD    minimum number of conventional memory pages
  28408.  4Ch    DWORD    maximum size in pages to which swap file can be increased
  28409.  50h    DWORD    "vmflags"
  28410.         bit 0 = 1 if page fault in progress
  28411. ---v4.0+ ---
  28412.  54h    DWORD    number of physical pages guaranteed to be free
  28413.  58h    DWORD    number of free physical pages currently available
  28414.  5Ch    DWORD    size in pages of largest free block of memory (including disk
  28415.           swap space)
  28416.  60h    DWORD    reserved
  28417. --------E-212521-----------------------------
  28418. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
  28419.     AX = 2521h
  28420.     EBX = max 4k pages of physical extended memory which program may use
  28421. Return: CF clear if successful
  28422.        EBX = maximum limit in pages
  28423.        ECX = minimum limit in pages
  28424.     CF set on error
  28425.         EAX = error code
  28426.         08h insufficient memory or -nopage switch used
  28427. SeeAlso: AX=2522h
  28428. --------E-212522-----------------------------
  28429. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
  28430.     AX = 2522h
  28431.     ES:EBX -> alternate handler for page faults
  28432. Return: CF clear
  28433.     ES:EBX -> previous page-fault handler
  28434. SeeAlso: AX=2523h
  28435. --------E-212523-----------------------------
  28436. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
  28437.     AX = 2523h
  28438.     ???
  28439. Return: ???
  28440. Note:    this function takes a DWORD pointer and a DWORD pointer to a DWORD
  28441.       pointer as arguments
  28442. SeeAlso: AX=2522h
  28443. --------E-212524-----------------------------
  28444. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
  28445.     AX = 2524h
  28446.     ???
  28447. Return: ???
  28448. Note:    this function takes three DWORD pointers and three DWORD pointers to
  28449.       DWORD pointers as arguments
  28450. --------E-212525-----------------------------
  28451. INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
  28452.     AX = 2525h
  28453.     EBX = limit in 4k pages of physical conventional memory which program
  28454.           may use
  28455. Return: CF clear if successful
  28456.         EBX = maximum limit in pages
  28457.         ECX = minimum limit in pages
  28458.     CF set on error
  28459.         EAX = error code
  28460.         08h insufficient memory or -nopage switch used
  28461. SeeAlso: AX=2521h
  28462. --------E-212526-----------------------------
  28463. INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
  28464.     AX = 2526h
  28465.     ???
  28466. Return: ???
  28467. Notes:    details are not yet available
  28468.     this function takes a pointer to the configuration buffer (see #0522)
  28469.       and a poitner to a BYTE as arguments
  28470.  
  28471. Format of Phar Lap configuration buffer:
  28472. Offset    Size    Description    (Table 0522)
  28473.  00h    DWORD    flags 1 (see #0523)
  28474.  04h    DWORD    flags 2 (unused through v5.0)
  28475.  08h    DWORD    flags 3 (unused through v5.0)
  28476.  0Ch    DWORD    386|DOS-Extender major version
  28477.  10h    DWORD    386|DOS-Extender minor version
  28478.  14h    DWORD    first letter of text after minor version number in version str
  28479.  18h    DWORD    beta flag (00h normal release, 01h beta release)
  28480.  1Ch    DWORD    processor (3 = 386, 4 = 486)
  28481.  20h    DWORD    coprocessor (4 = none, 6 = 287, 7 = 387/486)
  28482.  24h    DWORD    Weitek coprocessor flag (0 = none, 1 = present)
  28483.  28h    DWORD    machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
  28484.  2Ch    DWORD    machine class
  28485.         IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
  28486.         NEC: 0=normal mode, 1=high-res mode
  28487.  30h    DWORD    VCPI flag (0 = none, 1 = present)
  28488.  34h    DWORD    -WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
  28489.  38h    DWORD    -MINREAL setting
  28490.  3Ch    DWORD    -MAXREAL setting
  28491.  40h    DWORD    -MINIBUF setting
  28492.  44h    DWORD    -MAXIBUF setting
  28493.  48h    DWORD    size in bytes of DOS call data buffer
  28494.  4Ch    DWORD    number of interrupt stacks (-NISTACK)
  28495.  50h    DWORD    interrupt stack size (-ISTKSIZE)
  28496.  54h    DWORD    -REALBREAK setting
  28497.  58h    DWORD    -CALLBUFS
  28498.  5Ch    DWORD    -HWIVEC
  28499.  60h    DWORD    -PRIVEC
  28500.  64h    DWORD    -INTMAP
  28501.  68h    DWORD    -PRIMAP
  28502.  6Ch    DWORD    VCPI: master 8259 interrupt vector base (IRQ0 mapping)
  28503.  70h    DWORD    VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
  28504.  74h    DWORD    BIOS print screen interrupt vector (0 if NEC)
  28505.  78h    DWORD    -EXTLOW setting
  28506.  7Ch    DWORD    -EXTHIGH setting
  28507.  80h    DWORD    lowest physical extended-memory address allocatable
  28508.  84h    DWORD    highest physical extended-memory address allocatable + 1
  28509.  88h    DWORD    special memory's physical base address (00000000h if none)
  28510.  8Ch    DWORD    special memory size in bytes (00000000h if none)
  28511.  90h    DWORD    -MAXVCPIMEM setting
  28512.  94h    DWORD    -VSCAN
  28513.  98h    DWORD    -SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
  28514.  9Ch    DWORD    -CODESIZE setting
  28515.  A0h    DWORD    minimum swap file size (-MINSWFSIZE)
  28516.  A4h    DWORD    maximum swap fiel size (-MAXSWFSIZE)
  28517.  A8h    DWORD    page replacement policy (0 = LFU, 1 = NUR)
  28518.  ACh    DWORD    number of GDT entries (-NGDTENT)
  28519.  B0h    DWORD    number of LDT entries (-NLDTENT)
  28520.  B4h    DWORD    program's privilege level (0-3)
  28521. ---386|DOS-Extender v3.0+ ---
  28522.  B8h    DWORD    -LOCKSTACK setting
  28523.  BCh    DWORD    -MAXEXTMEM
  28524.  C0h    DWORD    -MAXXMSMEM
  28525.  C4h    DWORD    -MAXPGMMEM
  28526.  C8h    DWORD    -DATATHRESHOLD
  28527.  CCh    DWORD    virtual memory manager flag (0 = not present, 1 = present)
  28528.  D0h    DWORD    Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
  28529.  D4h    DWORD    -CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
  28530.  D8h    DWORD    DPMI flag (0 = not present, 1 = present)
  28531.  DCh    DWORD    DPMI major version
  28532.  E0h    DWORD    DPMI minor version
  28533.  E4h    DWORD    DPMI capabilities flags (see #0524)
  28534.  E8h    DWORD    VCPI major version
  28535.  ECh    DWORD    VCPI minor version
  28536.  F0h    WORD    VCPI: IRQ0-7 physical base interrupt vector
  28537.  F2h    WORD    VCPI: IRQ8-15 physical base interrupt vector
  28538.  F4h    DWORD    XMS flag (0 = none, 1 = present)
  28539.  F8h    DWORD    XMS major version
  28540.  FCh    DWORD    XMS minor version
  28541. 100h    WORD    application's CS selector
  28542. 102h    WORD    application's DS selector
  28543. 104h    WORD    application's PSP selector
  28544. 106h    WORD    application's environment selector
  28545. 108h    WORD    selector mapping entire first megabyte
  28546. 10Ah    WORD    selector mapping text video memory
  28547. 10Ch    WORD    selector mapping video memory (text for IBM, graphics for NEC)
  28548. 10Eh    WORD    selector mapping Weitek address space, 0000h if not present
  28549. 110h    WORD    selector mapping Cyrix EMC387 address space, 0000h if none
  28550. 112h    WORD    reserved (0)
  28551. 114h    DWORD    real-mode FAR entry point to call to switch to protected mode
  28552.           with no saved context
  28553. 118h    DWORD    size of LDT in bytes
  28554. ---386|DOS-Extender v5.0+ ---
  28555. 11Ch    DWORD    Windows flag (0 = not present, 1 = Windows present)
  28556. 120h    DWORD    Windows major version
  28557. 124h    DWORD    Windows minor version
  28558. 128h    DWORD    Windows mode (0 = real/standard, 1 = enhanced)
  28559. 12Ch    DWORD    OS/2 flag (0 = not present, 1 = OS/2 present)
  28560. 130h    DWORD    OS/2 major version
  28561. 134h    DWORD    OS/2 minor version
  28562. 138h 50 DWORDs    reserved (0)
  28563.  
  28564. Bitfields for flags 1:
  28565. Bit(s)    Description    (Table 0523)
  28566.  0    -NOPAGE specified
  28567.  1    -A20 specified
  28568.  2    -VDISK specified
  28569.  3    -XT specified
  28570.  4    -AT specified
  28571.  5    -MCA specified
  28572.  6    -EISA specified
  28573.  7    -NORMRES specified (NEC only)
  28574.  8    -HIGHRES specified (NEC only)
  28575.  9    set if -SWFGROW1ST, clear if -NOSWFGROW1ST
  28576.  10    -NOVM specified
  28577.  11    -SAVEREGS specified
  28578.  12    unused (clear)
  28579.  13    -NOVCPI specified
  28580.  14    -NOMUL specified
  28581.  15    -NOBMCHK specified
  28582.  16    -NOSPCLMEM or -NOBIM
  28583.  17    -NOPGEXP specified
  28584.  18    -SWAPDEFDISK specified
  28585. ---v3.0+ ---
  28586.  19    -SAVEINTS specified
  28587.  20    -NOLOAD specified
  28588.  21    -PAGELOG specified
  28589.  22    -OPENDENY specified
  28590.  23    -ERRATA17 specified
  28591. ---v4.1+ ---
  28592.  24    -NESTDPMI specified
  28593.  25    -NONESTDPMI specified
  28594.  26    -NODPMI specified
  28595.  27    -NOPCDWEITEK specified
  28596. ---v4.2+ ---
  28597.  28    -WININT21 specified
  28598.  
  28599. Bitfields for DPMI capabilities flags:
  28600. Bit(s)    Description    (Table 0524)
  28601.  0    paging supported
  28602.  1    physical device mapping
  28603.  2    conventional memory mapping
  28604.  3    exceptions restartable
  28605. --------E-212527-----------------------------
  28606. INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
  28607.     AX = 2527h
  28608.     EBX = new status (00h disabled, 01h enabled)
  28609. Return: CF clear
  28610.     EBX = previous state save flag
  28611. SeeAlso: AX=2528h
  28612. --------E-212528-----------------------------
  28613. INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
  28614.     AX = 2528h
  28615.     DS:EBX -> buffer for registers (see #0525)
  28616. Return: CF clear if successful
  28617.         DS:EBX buffer filled
  28618.     CF set on error
  28619.         EAX = error code
  28620.         83h interrupt state save not enabled
  28621.         84h no active interrupt
  28622. SeeAlso: AX=2527h
  28623.  
  28624. Format of Phar Lap buffer for registers:
  28625. Offset    Size    Description    (Table 0525)
  28626.  00h  8 BYTEs    unused
  28627.  08h  4    DWORDs    EAX,EBX,ECX,EDX
  28628.  18h  4 DWORDs    ESI,EDI,EBP,ESP
  28629.  28h  6 WORDs    CS,DS,SS,ES,FS,GS
  28630.  34h    DWORD    EIP
  28631.  38h    DWORD    EFLAGS
  28632. --------E-212529-----------------------------
  28633. INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
  28634.     AX = 2529h
  28635.     ???
  28636. Return: ES:EBX -> parameter block (see #0526)
  28637.     ???
  28638. Note:    details not available at this time
  28639. SeeAlso: AX=252Ah
  28640.  
  28641. Format of Phar Lap program load parameter block:
  28642. Offset    Size    Description    (Table 0526)
  28643.  00h    DWORD    initial EIP
  28644.  04h    WORD    initial CS
  28645.  06h    DWORD    initial ESP
  28646.  0Ah    WORD    initial SS
  28647.  0Ch  4 WORDs    initial DS, ES, FS, GS
  28648.  14h    DWORD    minimum size in bytes of program segment
  28649.  18h    DWORD    bytes of additional memory allocated
  28650.  1Ch    DWORD    flags
  28651.         bit 0: child linked with -UNPRIVILEGED
  28652.         ---v6.0+ ---
  28653.         bit 1: child is PE file instead of .EXP
  28654.         bit 2: loaded file is a DLL
  28655.         bits 3-31 reserved
  28656. ---v6.0+ ---
  28657.  20h    DWORD    module handles (PE files only)
  28658.  24h  7 DWORDs    reserved (0)
  28659. --------E-21252A-----------------------------
  28660. INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
  28661.     AX = 252Ah
  28662.     DS:EDX -> ASCIZ program name
  28663.     ES:EBX -> parameter block (see #0520)
  28664.     ECX = size of LDT buffer in bytes
  28665.     ESI = bit flags
  28666.         bit 0: allow demand paging rather than loading entire program
  28667.         bit 1: demand page from swap file rather than from .EXP
  28668. Return: CF clear if successful
  28669.         EAX = VMM handle or FFFFFFFFh if none
  28670.         ECX = number of descriptors in LDT buffer
  28671.     CF set on error
  28672.         EAX = error code
  28673.         02h file error
  28674.             EBX = file error code (see #0527)
  28675.             ECX = DOS error code if EBX=1,2,3, or 8
  28676.         08h insufficient memory
  28677.             EBX = memory error code (see #0528)
  28678.         80h LDT buffer too small
  28679.         87h called twice without intervening call to AX=2531h
  28680. SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h
  28681.  
  28682. (Table 0527)
  28683. Values for Phar Lap file error code:
  28684.  01h    DOS open error
  28685.  02h    DOS seek error
  28686.  03h    DOS read error
  28687.  04h    not an .EXP or .REX file
  28688.  05h    invalid file format
  28689.  06h    -OFFSET is not a multiple of 64K
  28690.  07h    -NOPAGE incompatible with -REALBREAK/-OFFSET
  28691.  08h    DOS error loading .EXE file
  28692.  
  28693. (Table 0528)
  28694. Values for Phar Lap memory error code:
  28695.  01h    out of physical memory
  28696.  02h    out of swap space
  28697.  04h    unable to change extended memory allocation
  28698.  05h    -MAXPGMMEM exceeded
  28699.  06h    insufficient low memory to REALBREAK value
  28700.  07h    insufficient low memory for PSP and environment
  28701. --------E-21252BBH00-------------------------
  28702. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
  28703.     AX = 252Bh
  28704.     BH = 00h
  28705.     ???
  28706. Return: ???
  28707. --------E-21252BBH01-------------------------
  28708. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
  28709.     AX = 252Bh
  28710.     BH = 01h
  28711.     ???
  28712. Return: ???
  28713. --------E-21252BBH02-------------------------
  28714. INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
  28715.     AX = 252Bh
  28716.     BH = 02h
  28717.     ???
  28718. Return: ???
  28719. --------E-21252BBH03-------------------------
  28720. INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
  28721.     AX = 252Bh
  28722.     BH = 03h
  28723.     ???
  28724. Return: ???
  28725. SeeAlso: AX=252Bh/BL=0Bh
  28726. --------E-21252BBH04-------------------------
  28727. INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
  28728.     AX = 252Bh
  28729.     BH = 04h
  28730.     ???
  28731. Return: ???
  28732. Note:    returns one word per page
  28733. SeeAlso: #0529
  28734.  
  28735. Bitfields for Phar Lap page information:
  28736. Bit(s)    Description    (Table 0529)
  28737.  7    mapped to read/write data file
  28738.  6    mapped to read-only data file
  28739.  5    swapped to disk
  28740.  4    locked
  28741.  3-0    page type
  28742.     0 unmapped
  28743.     1 allocated
  28744.     2 physical device page
  28745. --------E-21252B-----------------------------
  28746. INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
  28747.     AX = 252Bh
  28748.     BH = function
  28749.         05h lock pages
  28750.         06h unlock pages
  28751.     BL = address type
  28752.         00h linear address
  28753.         ECX = linear start address of memory region
  28754.         01h segmented address
  28755.         ES:ECX -> start of memory region
  28756.     EDX = size of memory region in bytes
  28757. Return: CF clear if successful
  28758.     CF set on error
  28759. Note:    this function is also supported by FlashTek X-32VM; if X-32 is not
  28760.       using virtual memory, this function always succeeds
  28761. --------E-21252B-----------------------------
  28762. INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
  28763.     AX = 252Bh
  28764.     BH = function (07h,08h)
  28765.     ???
  28766. Return: ???
  28767. --------E-21252BBH09-------------------------
  28768. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
  28769.     AX = 252Bh
  28770.     BH = 09h
  28771.     BL = subfunction
  28772.         00h get page table entry by linear address
  28773.         ECX = linear address for which to get page table entry
  28774.         01h get page table entry by logical address
  28775.         ES:ECX = address for which to get page table entry
  28776. Return: CF clear if successful
  28777.         EAX = page table entry
  28778.         EBX = additional page table information
  28779.     CF set on error
  28780.         EAX = error code
  28781.         0009h invalid address
  28782.         0082h running under DPMI
  28783. SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah
  28784. --------E-21252BBH0A-------------------------
  28785. INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
  28786.     AX = 252Bh
  28787.     BH = 0Ah
  28788.     BL = subfunction
  28789.         00h set page table entry for linear address
  28790.         ECX = linear address for which to get page table entry
  28791.         01h set page table entry for logical address
  28792.         ES:ECX = address for which to get page table entry
  28793.     ESI = page table entry
  28794.     EDI = additional page table information
  28795. Return: CF clear if successful
  28796.     CF set on error
  28797.         EAX = error code
  28798.         0009h invalid address
  28799.         0082h running under DPMI
  28800. SeeAlso: AX=252Bh/BH=09h
  28801. --------E-21252BBH0B-------------------------
  28802. INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
  28803.     AX = 252Bh
  28804.     BH = 0Bh
  28805.     BL = subfunction
  28806.         00h by linear address
  28807.         ECX = linear address at which to map data file
  28808.         01h by logical address
  28809.         ES:ECX = logical address at which to map data file
  28810.     EDX = number of bytes to map
  28811.     DS:ESI -> mapping structure (see #0530)
  28812.     DS:EDI -> ASCIZ filename
  28813. Return: CF clear if successful
  28814.     CF set on error
  28815.         EAX = error code
  28816.         0002h file error
  28817.             ECX = phase (01h opening file, 02h seeking, 03h reading)
  28818.             EDX = error code returned by DOS
  28819.         0009h invalid address
  28820.         0081h invalid parameters or 386|VMM not present
  28821.         0086h all 386|VMM file handles already in use
  28822. SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h
  28823.  
  28824. Format of Phar Lap mapping structure:
  28825. Offset    Size    Description    (Table 0530)
  28826.  00h    DWORD    starting file offset to be mapped
  28827.  04h    DWORD    DOS file access and sharing modes (see #0559 at INT 21/AH=3Dh)
  28828. --------E-21252C-----------------------------
  28829. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
  28830.     AX = 252Ch
  28831.     BX = segment selector
  28832.     ECX = number of 4K pages to add
  28833. Return: CF clear if successful
  28834.         EAX = offset in segment of beginning of unmapped pages
  28835.     CF set on error
  28836.         EAX = error code
  28837.         08h insufficent memory
  28838.         09h invalid selector
  28839.         82h not supported by current DPMI
  28840. --------E-21252D-----------------------------
  28841. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
  28842.     AX = 252Dh
  28843.     EBX = VMM file handle
  28844. Return: CF clear if successful
  28845.     CF set on error
  28846.         EAX = error code (81h invalid VMM handle)
  28847. --------E-21252E-----------------------------
  28848. INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
  28849.     AX = 252Eh
  28850.     CL = direction (00h get parameters, 01h set parameters)
  28851.     DS:EBX -> parameter buffer (see #0531)
  28852. Return: CF clear if successful
  28853.     CF set on error
  28854.         EAX = error code (81h bad parameter value)
  28855.  
  28856. Format of Phar Lap VMM parameter buffer:
  28857. Offset    Size    Description    (Table 0531)
  28858.  00h    DWORD    flags
  28859.         bit 0: page fault logging enabled
  28860.         ---v5.0+ ---
  28861.         bit 1: swap extender to disk during DOS EXEC call
  28862.         bit 2: don't zero allocated memory
  28863.  04h    DWORD    scan period for page aging, in milliseconds
  28864.  08h    DWORD    maximum size (in bytes) to check on each page scan
  28865.  0Ch 52 BYTEs    unused
  28866. --------E-21252F-----------------------------
  28867. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
  28868.     AX = 252Fh
  28869.     DS:EBX -> data to be written
  28870.     CX = size of data in bytes
  28871. Return: CF clear if successful
  28872.     CF set on error
  28873.         EAX = error code (85h no page log file or not 386/VMM)
  28874. --------E-212530-----------------------------
  28875. INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
  28876.     AX = 2530h
  28877.     ECX = size of data buffer in bytes (1024 to 65536)
  28878. Return: CF clear if successful
  28879.     CF set on error
  28880.         EAX = error code
  28881.         08h insufficient low memory
  28882.         81h invalid size
  28883. SeeAlso: AX=2517h
  28884. --------E-212531-----------------------------
  28885. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
  28886.     AX = 2531h
  28887.     BX = segment selector
  28888.     ECX = direction (00h read, 01h write)
  28889.     DS:EDX -> 8-byte buffer for descriptor contents
  28890. Return: CF clear if successful
  28891.     CF set on error
  28892.         EAX = error code
  28893.         81h invalid selector
  28894.         82h DPMI running, or not a code or data segment
  28895. --------E-212532-----------------------------
  28896. INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
  28897.     AX = 2532h
  28898.     CL = exception number (00h-0Fh)
  28899. Return: CF clear if successful
  28900.         ES:EBX = CS:EIP of current exception handler
  28901.     CF set on error (CL > 0Fh)
  28902. Notes:    this call is also supported by the FlashTek X-32VM extender
  28903.     this function is incompatible with 386|VMM; use AX=2522h instead
  28904. SeeAlso: AX=2522h,AX=2533h
  28905. --------E-212533-----------------------------
  28906. INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
  28907.     AX = 2533h
  28908.     CL = exception number (00h-0Fh)
  28909.     DS:EDX = CS:EIP of new exception handler
  28910. Return: CF clear if successful
  28911.     CF set on error (CL > 0Fh)
  28912. Notes:    this call is also supported by the FlashTek X-32VM extender
  28913.     this function is incompatible with 386|VMM; use AX=2522h instead
  28914. SeeAlso: AX=2522h,AX=2532h
  28915. --------E-212534-----------------------------
  28916. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
  28917.     AX = 2534h
  28918. Return: CF clear
  28919.     EAX = interrupt state (00h disabled, 01h enabled)
  28920. --------E-212535-----------------------------
  28921. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
  28922.     AX = 2535h
  28923.     EBX = direction (00h read registers, 01h write)
  28924.     DS:EDX -> system register record (see #0532)
  28925. Return: CF clear
  28926. Note:    this call is only available under MS Windows if PHARLAP.386 VDD is
  28927.       installed
  28928.  
  28929. Format of Phar Lap system register record:
  28930. Offset    Size    Description    (Table 0532)
  28931.  00h    DWORD    CR0
  28932.  04h  4 DWORDs    DR0,DR1,DR2,DR3
  28933.  14h  2 DWORDs    reserved
  28934.  1Ch  2 DWORDs    DR6,DR7
  28935.  24h  3 DWORDs    reserved
  28936. --------E-212536----------------------------
  28937. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
  28938.     AX = 2536h
  28939.     EBX = bit flags
  28940.         bit 0: modifying conventional memory rather than extended memory
  28941.         bit 1: setting maximum memory usage rather than minimum
  28942.     ECX = new limit in 4K pages
  28943. Return: CF clear if successful
  28944.         EAX = new limit
  28945.     CF set on error
  28946.         EAX = error code (08h memory error or -NOPAGE set)
  28947.         EBX = maximum limit in pages
  28948.         ECX = minimum limit in pages
  28949. --------E-212537----------------------------
  28950. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
  28951.     AX = 2537h
  28952.     BX = number of paragraphs to allocate
  28953. Return: CF clear if successful
  28954.         AX = real-mode segment of allocated block
  28955.     CF set on error
  28956.         AX = error code
  28957.         07h MS-DOS memory chain corrupted
  28958.         08h insufficient low memory
  28959.         BX = size in paragraphs of largest free block
  28960. SeeAlso: AH=48h
  28961. --------E-212538----------------------------
  28962. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
  28963.     AX = 2538h
  28964.     DS:EBX -> buffer for registers (see #0525)
  28965.     ECX = register record to retrieve
  28966.         00h first interrupt state
  28967.         01h next interrupt state
  28968.         EDX = handle for current interrupt state
  28969. Return: CF clear if successful
  28970.         DS:EBX buffer filled
  28971.         EDX = handle of current interrupt state
  28972.         ESI = number of interrupt which occurred
  28973.     CF set on error
  28974.         EAX = error code
  28975.         81h invalid handle in EDX
  28976.         83h register saving not enabled
  28977.         84h no more interrupt states
  28978. SeeAlso: AX=2527h,AX=2528h
  28979. --------E-212539----------------------------
  28980. INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
  28981.     AX = 2539h
  28982.     BX = MS-DOS file handle for open file
  28983. Return: CF clear if successful
  28984.         EAX = offset of .EXP header in file
  28985.     CF set on error
  28986.         EAX = error code (02h file error)
  28987.         EBX = file error code
  28988.         02h DOS error seeking
  28989.         03h DOS error reading
  28990.         04h invalid file type    
  28991.         05h invalid file format
  28992.         ECX = DOS error code if EBX=02h or 03h
  28993.     current file position in file modified
  28994. --------E-21253A----------------------------
  28995. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
  28996.     AX = 253Ah
  28997.     ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
  28998.         an error
  28999. Return: CF clear
  29000.     ES:EBX -> previous handler
  29001. SeeAlso: AH=4Ah
  29002. --------E-21253B----------------------------
  29003. INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
  29004.     AX = 253Bh
  29005.     DS:EBX -> buffer containing register contents (see #0525)
  29006. Return: never returns
  29007. SeeAlso: AX=2528h
  29008. --------E-21253C-----------------------------
  29009. INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
  29010.     AX = 253Ch
  29011. Return: CF clear
  29012.     EAX = old size of swap file in bytes
  29013.     EBX = new size of swap file in bytes
  29014. --------E-21253D-----------------------------
  29015. INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
  29016.     AX = 253Dh
  29017.     BL = interrupt number
  29018.     ECX = direction (0 = read, 1 = write)
  29019.     DS:EDX -> 8-byte buffer for descriptor
  29020. Return: CF clear if successful
  29021.         DS:EDX filled if reading
  29022.     CF set on error
  29023.         EAX = error code (0082h if running under DPMI)
  29024. Desc:    access hardware-level IDT rather than the internal 386/DOS-Extender
  29025.       shadow IDT
  29026. Notes:    this call will always fail under DPMI because it is not possible to
  29027.       access the IDT
  29028.     the descriptor is not checked when writing
  29029.     this call can normally be used only by programs running in ring 0
  29030.       because the processor does not allow an interrupt to be vectored to
  29031.       a less privileged ring
  29032. --------E-21253F-----------------------------
  29033. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
  29034.     AX = 253Fh
  29035.     BX = LDT descriptor to allocate (0000h for any)
  29036.     ???
  29037. Return: ???
  29038. --------E-212540-----------------------------
  29039. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
  29040.     AX = 2540h
  29041.     ???
  29042. Return: ???
  29043. --------E-212544-----------------------------
  29044. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
  29045.     AX = 2544h
  29046.     ???
  29047. Return: ???
  29048. --------E-212545-----------------------------
  29049. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
  29050.     AX = 2545h
  29051.     ECX = direction (00h get, 01h set)
  29052.     ???
  29053. Return: ???
  29054. --------E-212546-----------------------------
  29055. INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
  29056.     AX = 2546h
  29057.     ???
  29058. Return: ???
  29059. --------E-2125C0-----------------------------
  29060. INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
  29061.     AX = 25C0h
  29062.     BX = number of 16-byte paragraphs of MS-DOS memory requested
  29063. Return: CF clear if successful
  29064.         AX = real-mode paragraph address of memory
  29065.     CF set on error
  29066.         AX = error code
  29067.         07h MS-DOS memory control blocks destroyed
  29068.         08h insufficient memory
  29069.         BX = size in paragraphs of largest available memory block
  29070. SeeAlso: AX=25C1h,AX=25C2h
  29071. --------E-2125C1-----------------------------
  29072. INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
  29073.     AX = 25C1h
  29074.     CX = real-mode paragraph address of memory block to free
  29075. Return: CF clear if successful
  29076.         EAX destroyed
  29077.     CF set on error
  29078.         AX = error code
  29079.         07h MS-DOS memory control blocks destroyed
  29080.         09h invalid memory block address in CX
  29081. SeeAlso: AX=25C0h,AX=25C2h
  29082. --------E-2125C2-----------------------------
  29083. INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
  29084.     AX = 25C2h
  29085.     BX = new requested block size in paragraphs
  29086.     CX = real-mode paragraph address of memory block to modify
  29087. Return: CF clear if successful
  29088.         EAX destroyed
  29089.     CF set on error
  29090.         AX = error code
  29091.         07h MS-DOS memory control blocks destroyed
  29092.         08h insufficient memory
  29093.         09h invalid memory block address in CX
  29094.         BX = size in paragraphs of largest available memory block
  29095. SeeAlso: AX=25C0h,AX=25C1h
  29096. --------E-2125C3-----------------------------
  29097. INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
  29098.     AX = 25C3h
  29099.     ES:EBX -> pointer to parameter block (see #0534)
  29100.     DS:EDX -> pointer to ASCIZ program filename
  29101. Return: CF clear if successful
  29102.         all registers unchanged
  29103.     CF set on error
  29104.         EAX = error code (see #0533)
  29105.  
  29106. (Table 0533)
  29107. Values for Phar Lap error code:
  29108.  01h    function code in AL is invalid ???
  29109.  02h    file not found or path invalid
  29110.  05h    access denied
  29111.  08h    insufficient memory to load program
  29112.  0Ah    environment invalid
  29113.  0Bh    invalid file format
  29114.  
  29115. Format of parameter block:
  29116. Offset    Size    Description    (Table 0534)
  29117.  00h    DWORD    32-bit offset of environment string
  29118.  04h    WORD    segment selector of environment string
  29119.  06h    DWORD    32-bit offset of command-tail string
  29120.  0Ah    WORD    segment selector of command-tail string
  29121. --------D-2126-------------------------------
  29122. INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
  29123.     AH = 26h
  29124.     DX = segment at which to create PSP (see #0535)
  29125. Notes:    new PSP is updated with memory size information; INTs 22h, 23h, 24h
  29126.       taken from interrupt vector table; the parent PSP field is set to 0
  29127.     (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
  29128.       copy
  29129. SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
  29130.  
  29131. Format of Program Segment Prefix (PSP):
  29132. Offset    Size    Description    (Table 0535)
  29133.  00h  2 BYTEs    INT 20 instruction for CP/M CALL 0 program termination
  29134.         the CDh 20h here is often used as a signature for a valid PSP
  29135.  02h    WORD    segment of first byte beyond memory allocated to program
  29136.  04h    BYTE    (DOS) unused filler
  29137.         (OS/2) count of fake DOS version returns
  29138.  05h    BYTE    CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
  29139.         BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
  29140.  06h    WORD    CP/M compatibility--size of first segment for .COM files
  29141.  08h  2 BYTEs    remainder of FAR JMP at 05h
  29142.  0Ah    DWORD    stored INT 22 termination address
  29143.  0Eh    DWORD    stored INT 23 control-Break handler address
  29144.  12h    DWORD    DOS 1.1+ stored INT 24 critical error handler address
  29145.  16h    WORD    segment of parent PSP
  29146.  18h 20 BYTEs    DOS 2+ Job File Table, one byte per file handle, FFh = closed
  29147.  2Ch    WORD    DOS 2+ segment of environment for process (see #0536)
  29148.  2Eh    DWORD    DOS 2+ process's SS:SP on entry to last INT 21 call
  29149.  32h    WORD    DOS 3+ number of entries in JFT (default 20)
  29150.  34h    DWORD    DOS 3+ pointer to JFT (default PSP:0018h)
  29151.  38h    DWORD    DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
  29152.         used by SHARE in DOS 3.3
  29153.  3Ch    BYTE    DOS 4+ (DBCS) interim console flag (see AX=6301h)
  29154.  3Dh    BYTE    (APPEND) TrueName flag (see INT 2F/AX=B711h)
  29155.  3Eh    BYTE    (Novell NetWare) flag: next byte initialized if CEh
  29156.         (OS/2) capabilities flag
  29157.  3Fh    BYTE    (Novell NetWare) Novell task number if previous byte is CEh
  29158.  40h  2 BYTEs    DOS 5+ version to return on INT 21/AH=30h
  29159.  42h    WORD    (MSWindows3) selector of next PSP (PDB) in linked list
  29160.         Windows keeps a linked list of Windows programs only
  29161.  44h    WORD    (MSWindows3) "PDB_Partition"
  29162.  46h    WORD    (MSWindows3) "PDB_NextPDB"
  29163.  48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
  29164.  49h    BYTE    unused by DOS versions <= 6.00
  29165.  4Ch    WORD    (MSWindows3) "PDB_EntryStack"
  29166.  4Eh  2 BYTEs    unused by DOS versions <= 6.00
  29167.  50h  3 BYTEs    DOS 2+ service request (INT 21/RETF instructions)
  29168.  53h  2 BYTEs    unused in DOS versions <= 6.00
  29169.  55h  7 BYTEs    unused in DOS versions <= 6.00; can be used to make first FCB
  29170.           into an extended FCB
  29171.  5Ch 16 BYTEs    first default FCB, filled in from first commandline argument
  29172.         overwrites second FCB if opened
  29173.  6Ch 16 BYTEs    second default FCB, filled in from second commandline argument
  29174.           overwrites beginning of commandline if opened
  29175.  7Ch  4 BYTEs    unused
  29176.  80h 128 BYTEs    commandline / default DTA
  29177.         command tail is BYTE for length of tail, N BYTEs for the tail,
  29178.           followed by a BYTE containing 0Dh
  29179. Notes:    in DOS v3+, the limit on simultaneously open files may be increased by
  29180.       allocating memory for a new open file table, filling it with FFh,
  29181.       copying the first 20 bytes from the default table, and adjusting the
  29182.       pointer and count at 34h and 32h.  However, DOS will only copy the
  29183.       first 20 file handles into a child PSP (including the one created on
  29184.       EXEC).
  29185.     network redirectors based on the original MS-Net implementation use
  29186.       values of 80h-FEh in the open file table to indicate remote files;
  29187.       Novell NetWare also uses values from FEh down to 80h or one more than
  29188.       FILES= (whichever is greater) to indicate remote files
  29189.     MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
  29190.       high; the first FCB is empty and the second contains the first
  29191.       parameter
  29192.     some DOS extenders place protected-mode values in various PSP fields
  29193.       such as the "parent" field, which can confuse PSP walkers.  Always
  29194.       check either for the CDh 20h signature or that the suspected PSP is
  29195.       at the beginning of a memory block which owns itself (the preceding
  29196.       paragraph should be a valid MCB with "owner" the same as the
  29197.       suspected PSP).
  29198.     Novell NetWare updates the fields at offsets 3Eh and 3Fh without
  29199.       checking that a legal PSP segment is current; see AH=50h for further
  29200.       discussion
  29201.  
  29202. Format of environment block:
  29203. Offset    Size    Description    (Table 0536)
  29204.  00h  N BYTEs    first environment variable, ASCIZ string of form "var=value"
  29205.       N BYTEs    second environment variable, ASCIZ string
  29206.     ...
  29207.       N BYTEs    last environment variable, ASCIZ string of form "var=value"
  29208.     BYTE    00h
  29209. ---DOS 3+---
  29210.     WORD    number of strings following environment (normally 1)
  29211.       N BYTEs    ASCIZ full pathname of program owning this environment
  29212.         other strings may follow
  29213. --------D-2127-------------------------------
  29214. INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
  29215.     AH = 27h
  29216.     CX = number of records to read
  29217.     DS:DX -> opened FCB (see #0506)
  29218. Return: AL = status
  29219.         00h successful, all records read
  29220.         01h end of file, no data read
  29221.         02h segment wrap in DTA, no data read
  29222.         03h end of file, partial read
  29223.     [DTA] = records read from file
  29224.     CX = number of records read (return AL = 00h or 03h)
  29225. Notes:    read begins at current file position as specified in FCB; the file
  29226.       position is updated after reading
  29227.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  29228. SeeAlso: AH=21h,AH=28h,AH=3Fh
  29229. --------D-2128-------------------------------
  29230. INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
  29231.     AH = 28h
  29232.     CX = number of records to write
  29233.     DS:DX -> opened FCB (see #0506)
  29234.     [DTA] = records to write
  29235. Return: AL = status
  29236.         00h successful
  29237.         01h disk full or file read-only
  29238.         02h segment wrap in DTA
  29239.     CX = number of records written
  29240. Notes:    write begins at current file position as specified in FCB; the file
  29241.       position is updated after writing
  29242.     if CX = 0000h on entry, no data is written; instead the file size is
  29243.       adjusted to be the same as the file position specified by the random
  29244.       record and record size fields of the FCB
  29245.     if the data to be written is less than a disk sector, it is copied into
  29246.       a DOS disk buffer, to be written out to disk at a later time
  29247.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  29248. SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h
  29249. --------D-2129-------------------------------
  29250. INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
  29251.     AH = 29h
  29252.     AL = parsing options (see #0537)
  29253.     DS:SI -> filename string (both '*' and '?' wildcards OK)
  29254.     ES:DI -> buffer for unopened FCB
  29255. Return: AL = result code
  29256.         00h successful parse, no wildcards encountered
  29257.         01h successful parse, wildcards present
  29258.         FFh failed (invalid drive specifier)
  29259.     DS:SI -> first unparsed character
  29260.     ES:DI buffer filled with unopened FCB (see #0506)
  29261. Notes:    asterisks expanded to question marks in the FCB
  29262.     all processing stops when a filename terminator is encountered
  29263.     cannot be used with filespecs which include a path (DOS 2+)
  29264.     Novell NetWare monitors the result code since an 'invalid drive' may
  29265.       signal an attempt to reconnect a network drive; if there are no
  29266.       connections to the specified drive, NetWare attempts to build a
  29267.       connection and map the drive to the SYS:LOGIN directory
  29268. SeeAlso: AH=0Fh,AH=16h,AH=26h
  29269.  
  29270. Bitfields for parsing options:
  29271. Bit(s)    Description    (Table 0537)
  29272.  0    skip leading separators
  29273.  1    use existing drive number in FCB if no drive is specified, instead of
  29274.       setting field to zero
  29275.  2    use existing filename in FCB if no base name is specified, instead of
  29276.       filling field with blanks
  29277.  3    use existing extension in FCB if no extension is specified, instead of
  29278.       filling field with blanks
  29279.  4-7    reserved (0)
  29280. --------D-212A-------------------------------
  29281. INT 21 - DOS 1+ - GET SYSTEM DATE
  29282.     AH = 2Ah
  29283. Return: CX = year (1980-2099)
  29284.     DH = month
  29285.     DL = day
  29286. ---DOS 1.10+---
  29287.     AL = day of week (00h=Sunday)
  29288. SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h,INT 1A/AH=04h,INT 2F/AX=120Dh
  29289. --------D-212B-------------------------------
  29290. INT 21 - DOS 1+ - SET SYSTEM DATE
  29291.     AH = 2Bh
  29292.     CX = year (1980-2099)
  29293.     DH = month
  29294.     DL = day
  29295. Return: AL = status
  29296.         00h successful
  29297.         FFh invalid date, system date unchanged
  29298. Note:    DOS 3.3+ also sets CMOS clock
  29299. SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
  29300. --------E-212B--CX4149-----------------------
  29301. INT 21 - AI Architects - ??? - INSTALLATION CHECK
  29302.     AH = 2Bh
  29303.     CX = 4149h ('AI')
  29304.     DX = 413Fh ('A?')
  29305. Return: AL <> FFh if installed
  29306. Note:    Borland's TKERNEL makes this call
  29307. --------c-212B--CX4358-----------------------
  29308. INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
  29309.     AH = 2Bh
  29310.     CX = 4358h ('CX')
  29311. Return: AL = FFh if PC-Kwik/PC-Cache not installed
  29312.     AL = 00h if installed
  29313.         CF clear
  29314.         CX = 6378h ('cx')
  29315.         BX = ???
  29316.         DX = version (DH = major version, DL = binary minor version)
  29317. Note:    PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
  29318.       Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
  29319.       to PC-Kwik v3.20)
  29320. SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
  29321. Index:    PC-Cache;installation check|Qualitas Qcache;installation check
  29322. Index:    installation check;PC-Cache 5.x|installation check;Qualitas Qcache
  29323. --------Q-212B--CX4445-----------------------
  29324. INT 21 - DESQview - INSTALLATION CHECK
  29325.     AH = 2Bh
  29326.     CX = 4445h ('DE')
  29327.     DX = 5351h ('SQ')
  29328.     AL = subfunction (DV v2.00+)
  29329.         01h get version
  29330.         Return: BX = version (BH = major, BL = minor)
  29331.         Note: early copies of v2.00 return 0002h
  29332.         02h get shadow buffer info, and start shadowing
  29333.         Return: BH = rows in shadow buffer
  29334.             BL = columns in shadow buffer
  29335.             DX = segment of shadow buffer
  29336.         04h get shadow buffer info
  29337.         Return: BH = rows in shadow buffer
  29338.             BL = columns in shadow buffer
  29339.             DX = segment of shadow buffer
  29340.         05h stop shadowing
  29341. Return: AL = FFh if DESQview not installed
  29342. Notes:    in DESQview v1.x, there were no subfunctions; this call only identified
  29343.       whether or not DESQview was loaded.  DESQview v2.52 performs function
  29344.       01h for all subfunction requests 0Ch and higher and appears to ignore
  29345.       all lower-numbered functions not listed here.
  29346.     DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
  29347.       is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
  29348.       v2.00.
  29349. BUG:    subfunction 05h does not appear to work correctly in DESQview 2.52
  29350. SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
  29351. --------U-212B--CX454C-----------------------
  29352. INT 21 - ELRES v1.1 - INSTALLATION CHECK
  29353.     AH = 2Bh
  29354.     CX = 454Ch ('EL')
  29355.     DX = 5253h ('RS')
  29356. Return: ES:BX -> ELRES history structure (see #0538)
  29357.     DX = DABEh (signature, DAve BEnnett)
  29358. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  29359.       Bennett which stores recent errorlevel values, allows them to be
  29360.       retrieved for use in batch files, and can place them in an
  29361.       environment variable
  29362. SeeAlso: AH=4Bh"ELRES",AH=4Dh
  29363.  
  29364. Format of ELRES history structure:
  29365. Offset    Size    Description    (Table 0538)
  29366.  00h    WORD    number of return codes which can be stored by following buffer
  29367.  02h    WORD    current position in buffer (treated as a ring)
  29368.  04h  N BYTEs    ELRES buffer
  29369. --------m-212B01CX444D-----------------------
  29370. INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
  29371.     AX = 2B01h
  29372.     CX = 444Dh ('DM')
  29373.     DX = 4158h ('AX')
  29374. Return: AX = 0000h if installed
  29375.         BX = version??? (0002h)
  29376.         CX = 4845h ('HE')
  29377.         DX = 5245h ('RE')
  29378.         ES = DOS-UP driver segment
  29379. --------T-212B01CX5441-----------------------
  29380. INT 21 - TAME v2.10+ - INSTALLATION CHECK
  29381.     AX = 2B01h
  29382.     CX = 5441h ('TA')
  29383.     DX = 4D45h ('ME')
  29384. ---v2.60---
  29385.     BH = ???
  29386.         00h skip ???, else do
  29387. Return: AL = 02h if installed
  29388.     ES:DX -> data area in TAME-RES (see #0539,#0543,#0544)
  29389. Program: TAME is a shareware program by David G. Thomas which gives up CPU time
  29390.       to other partitions under a multitasker when the current partition's
  29391.       program incessantly polls the keyboard or system time
  29392.  
  29393. Format of TAME 2.10-2.20 data area:
  29394. Offset    Size    Description    (Table 0539)
  29395.  00h    BYTE    data structure minor version number (01h in TAME 2.20)
  29396.  01h    BYTE    data structure major version number (07h in TAME 2.20)
  29397.  02h    DWORD    number of task switches
  29398.  06h    DWORD    number of keyboard polls
  29399.  0Ah    DWORD    number of time polls
  29400.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  29401.  12h    DWORD    original INT 10h
  29402.  16h    DWORD    original INT 14h
  29403.  1Ah    DWORD    original INT 15h
  29404.  1Eh    DWORD    original INT 16h
  29405.  22h    DWORD    original INT 17h
  29406.  26h    DWORD    original INT 21h
  29407.  2Ah    DWORD    original INT 28h
  29408.  2Eh    WORD    offset of TAME INT 10h handler
  29409.  30h    WORD    offset of TAME INT 14h handler
  29410.  32h    WORD    offset of TAME INT 15h handler
  29411.  34h    WORD    offset of TAME INT 16h handler
  29412.  36h    WORD    offset of TAME INT 17h handler
  29413.  38h    WORD    offset of TAME INT 21h handler
  29414.  3Ah    WORD    offset of TAME INT 28h handler
  29415.  3Ch    WORD    X in /max:X,Y or /freq:X,Y
  29416.  3Eh    WORD    Y in /max:X,Y or /freq:X,Y
  29417.  40h    WORD    number of polls remaining before next task switch
  29418.  42h    WORD    /KEYIDLE value
  29419.  44h    BYTE    interrupts already grabbed by TAME (see #0540)
  29420.  45h    BYTE    flags for interrupts which may be acted on (same bits as above)
  29421.  46h    BYTE    TAME enabled (01h) or disabled (00h)
  29422.  47h    BYTE    /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
  29423.  48h    BYTE    /NOTIMER (01h) or /TIMER (00h)
  29424.  49h    BYTE    window or task number for this task
  29425.  4Ah    BYTE    multitasker type (see #0541)
  29426.  4Bh    BYTE    type of task switching selected
  29427.         bit 0: DESQview???
  29428.         bit 1: DoubleDOS???
  29429.         bit 2: TopView???
  29430.         bit 3: KeySwitch
  29431.         bit 4: HLT instruction
  29432.  4Ch    BYTE    ???
  29433.  4Dh    BYTE    flags
  29434.         bit 1: /FREQ instead of /MAX
  29435.  4Eh    BYTE    /FG: value
  29436.  4Fh    BYTE    task switches left until next FGONLY DESQview API call
  29437.  50h    BYTE    ???
  29438.  
  29439. Bitfields for interrupts already grabbed by TAME:
  29440. Bit(s)    Description    (Table 0540)
  29441.  0    INT 10h
  29442.  1    INT 14h
  29443.  2    INT 15h
  29444.  3    INT 16h
  29445.  4    INT 17h
  29446.  5    INT 21h
  29447.  6    INT 28h
  29448.  
  29449. (Table 0541)
  29450. Values for multitasker type:
  29451.  01h    DESQview
  29452.  02h    DoubleDOS
  29453.  03h    TopView
  29454.  04h    OmniView
  29455.  05h    VM/386
  29456.  
  29457. Bitfields for type of task switching selected:
  29458. Bit(s)    Description    (Table 0542)
  29459.  0    DESQview
  29460.  1    DoubleDOS
  29461.  2    TopView
  29462.  3    OmniView
  29463.  4    KeySwitch
  29464.  5    HLT instruction
  29465.  
  29466. Format of TAME 2.30 data area:
  29467. Offset    Size    Description    (Table 0543)
  29468.  00h    BYTE    data structure minor version number (02h in TAME 2.30)
  29469.  01h    BYTE    data structure major version number (0Ah in TAME 2.30)
  29470.  02h    DWORD    number of task switches
  29471.  06h    DWORD    number of keyboard polls
  29472.  0Ah    DWORD    number of time polls
  29473.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  29474.  12h    DWORD    time of last /CLEAR or TAME-RES load
  29475.  16h    DWORD    time yielded
  29476.  1Ah    DWORD    time spent polling
  29477.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  29478.  22h    DWORD    original INT 10h
  29479.  26h    DWORD    original INT 14h
  29480.  2Ah    DWORD    original INT 15h
  29481.  2Eh    DWORD    original INT 16h
  29482.  32h    DWORD    original INT 17h
  29483.  36h    DWORD    original INT 21h
  29484.  3Ah    DWORD    original INT 28h
  29485.  3Eh    WORD    offset of TAME INT 10h handler
  29486.  40h    WORD    offset of TAME INT 14h handler
  29487.  42h    WORD    offset of TAME INT 15h handler
  29488.  44h    WORD    offset of TAME INT 16h handler
  29489.  46h    WORD    offset of TAME INT 17h handler
  29490.  48h    WORD    offset of TAME INT 21h handler
  29491.  4Ah    WORD    offset of TAME INT 28h handler
  29492.  4Ch    WORD    X in /max:X,Y or /freq:X,Y
  29493.  4Eh    WORD    Y in /max:X,Y or /freq:X,Y
  29494.  50h    WORD    number of polls remaining before next task switch
  29495.  52h    WORD    /KEYIDLE value
  29496.  54h    WORD    /FG: value
  29497.  56h    WORD    task switches left until next FGONLY DESQview API call
  29498.  58h    WORD    multitasker version
  29499.  5Ah    WORD    virtual screen segment
  29500.  5Ch    BYTE    interrupts already grabbed by TAME (see #0540)
  29501.  5Dh    BYTE    flags for interrupts which may be acted on (same bits as above)
  29502.  5Eh    BYTE    window or task number for this task
  29503.  5Fh    BYTE    multitasker type (see #0541)
  29504.  60h    BYTE    type of task switching selected (bit flags) (see #0542)
  29505.  61h    BYTE    watch_DOS
  29506.  62h    BYTE    bit flags
  29507.         bit 0: TAME enabled
  29508.         bit 1: /FREQ instead of /MAX (counts in 3Ch and 3Eh per tick)
  29509.         bit 2: /TIMEPOLL
  29510.         bit 3: /KEYPOLL
  29511.         bit 4: inhibit timer
  29512.         bit 5: enable status monitoring
  29513.  63h    BYTE    old status
  29514.  64h    WORD    signature DA34h
  29515.  
  29516. Format of TAME 2.60 data area:
  29517. Offset    Size    Description    (Table 0544)
  29518.  00h    BYTE    data structure minor version number (02h in TAME 2.60)
  29519.  01h    BYTE    data structure major version number (0Bh in TAME 2.60)
  29520.  02h    DWORD    number of task switches
  29521.  06h    DWORD    number of keyboard polls
  29522.  0Ah    DWORD    number of time polls
  29523.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  29524.  12h    DWORD    time of last /CLEAR or TAME-RES load
  29525.  16h    DWORD    time yielded
  29526.  1Ah    DWORD    time spent polling
  29527.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  29528.  22h  4 BYTEs    ???
  29529.  26h    DWORD    original INT 10h
  29530.  2Ah    DWORD    original INT 14h
  29531.  2Eh    DWORD    original INT 15h
  29532.  32h    DWORD    original INT 16h
  29533.  36h    DWORD    original INT 17h
  29534.  3Ah    DWORD    original INT 21h
  29535.  3Eh    DWORD    original INT 28h
  29536.  42h    WORD    offset of TAME INT 10h handler
  29537.  44h    WORD    offset of TAME INT 14h handler
  29538.  46h    WORD    offset of TAME INT 15h handler
  29539.  48h    WORD    offset of TAME INT 16h handler
  29540.  4Ah    WORD    offset of TAME INT 17h handler
  29541.  4Ch    WORD    offset of TAME INT 21h handler
  29542.  4Eh    WORD    offset of TAME INT 28h handler
  29543.  50h    WORD    X in /max:X,Y or /freq:X,Y
  29544.  52h    WORD    Y in /max:X,Y or /freq:X,Y
  29545.  54h    WORD    number of polls remaining before next task switch
  29546.  56h    WORD    /KEYIDLE value
  29547.  58h  4 BYTEs    ???
  29548.  5Ch    WORD    X in /boost:X,Y
  29549.  5Eh    WORD    Y in /boost:X,Y
  29550.  60h    WORD    /FG: value
  29551.  62h    WORD    task switches remaining until next FGONLY DESQview API call
  29552.  64h    WORD    multitasker version ???
  29553.  66h    WORD    virtual screen segment
  29554.  68h    BYTE    interrupts already grabbed by TAME (see #0540)
  29555.  69h    BYTE    flags for interrupts which may be acted on (same bits as above)
  29556.  6Ah    BYTE    window or task number for this task
  29557.  6Bh    BYTE    multitasker type (see #0541)
  29558.  6Ch    BYTE    type of task switching selected (bit flags) (see #0542)
  29559.  6Dh    BYTE    watch_DOS
  29560.  6Eh    BYTE    bit flags
  29561.         bit 0: TAME enabled
  29562.         bit 1: /FREQ instead of /MAX (counts in 50h and 52h per tick)
  29563.         bit 2: /TIMEPOLL
  29564.         bit 3: /KEYPOLL
  29565.         bit 4: inhibit timer
  29566.         bit 5: enable status monitoring
  29567.  6Fh    BYTE    old status
  29568.  70h    WORD    signature DA34h
  29569. --------v-212B16CX0643-----------------------
  29570. INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
  29571.     AX = 2B16h
  29572.     CX = 0643h
  29573. Return: AX = 1603h if installed
  29574. --------R-212B44BX4D41-----------------------
  29575. INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
  29576.     AX = 2B44h ('D')
  29577.     BX = 4D41h ('MA')
  29578.     CX = 7063h ('pc')
  29579.     DX = 4157h ('AW')
  29580. Return: AX = resident program
  29581.         4F4Bh ('OK') if large host resident
  29582.         6F6Bh ('ok') if small host resident
  29583.     CX:DX -> API entry point (see #0545)
  29584. SeeAlso: INT 16/AH=79h
  29585.  
  29586. (Table 0545)
  29587. Call pcANYWHERE API entry point with:
  29588.     AX = 0000h get pcANYWHERE IV version
  29589.         DS:SI -> BYTE buffer for host type code
  29590.         Return: AH = version number
  29591.             AL = revision number
  29592.             DS:DI buffer byte filled with
  29593.             00h full-featured host
  29594.             01h limited-feature LAN host
  29595.             other API may not be supported
  29596.     AX = 0001h initialize operation
  29597.         DS:SI -> initialization request structure (see #0546)
  29598.         Return: AX = function status (see #0549)
  29599.     AX = 0002h get status
  29600.         Return: AH = current operating mode (see init req structure below)
  29601.             AL = current connection status (see #0548)
  29602.     AX = 0003h suspend remote screen updates
  29603.         Return: AX = function status (see #0549)
  29604.     AX = 0004h resume screen updates
  29605.         Return: AX = function status (see #0549)
  29606.     AX = 0005h end current remote access session
  29607.         DS:SI -> termination request structure (see #0547)
  29608.         Return: AX = function status (see #0549)
  29609.     AX = 0006h remove pcANYWHERE IV from memory
  29610.         Return: AX = status (see #0549)
  29611.     AX = 8000h read data from communications channel
  29612.         DS:BX -> buffer
  29613.         CX = buffer size
  29614.         Return: AX >= number of characters read/available
  29615.             AX < 0 on error
  29616.     AX = 8001h write data to communications channel
  29617.         DS:BX -> buffer
  29618.         CX = buffer size
  29619.         Return: AX >= number of characters written
  29620.             AX < 0 on error
  29621.     AX = 8002h get connection status
  29622.         Return: AX = status
  29623.             > 0000h if connection active
  29624.             = 0000h if connection lost
  29625.             < 0000h on error
  29626.  
  29627. Format of pcANYWHERE initialization request structure:
  29628. Offset    Size    Description    (Table 0546)
  29629.  00h    BYTE    operating mode
  29630.         00h wait for a call
  29631.         01h hot key activates
  29632.         02h incoming call activates
  29633.         03h initiate a call
  29634.  01h  3 BYTEs    user ID to append to config file names
  29635.  04h    WORD    DS-relative pointer to path for config files
  29636.  06h    WORD    DS-relative pointer to path for program files
  29637.  
  29638. Format of pcANYWHERE termination request structure:
  29639. Offset    Size    Description    (Table 0547)
  29640.  00h    BYTE    operating mode after termination
  29641.         00h wait for a call
  29642.         01h hot key activates
  29643.         02h incoming call activates
  29644.         80h use current mode
  29645.         FFh remove from memory
  29646.  
  29647. Bitfields for current connection status:
  29648. Bit(s)    Description    (Table 0548)
  29649.  0    a physical connection is active
  29650.  1    remove screen updating is active
  29651.  2    connection checking is active
  29652.  3    hot key detection is active
  29653.  4    background file transfer is active
  29654.  
  29655. (Table 0549)
  29656. Values for pcANYWHERE function status:
  29657.  0000h    function completed successfully
  29658.  FFD1h    unable to release interrupt vectors
  29659.  FFD2h    unable to release allocated memory
  29660.  FFF2h    unable to establish a connection when operating mode is
  29661.       "Initiate a call"
  29662.  FFF3h    modem configuration is invalid (corrupt config)
  29663.  FFF4h    modem initialization failed (no modem response)
  29664.  FFF5h    the communications device could not be initialized
  29665.  FFF6h    the host operator aborted the function
  29666.  FFF7h    the communications driver type specified in the configuration file is
  29667.       different than the one loaded when pcANYWHERE IV was started
  29668.  FFF9h    the configuration file is invalid
  29669.  FFFAh    the configuration file could not be found
  29670.  FFFBh    no session is active
  29671.  FFFCh    a remote access session is active
  29672.  FFFDh    the specified operating mode is invalid
  29673. ----------212B--CX6269-----------------------
  29674. INT 21 - WDTSR.COM - INSTALLATION CHECK
  29675.     AH = 2Bh
  29676.     CX = 6269h ('bi')
  29677.     DX = 742Dh ('t-')
  29678. Return: AL = FFh if not installed
  29679.     AL = 77h ('w') if WDTSR is installed
  29680.         CX = 6174h ('at')
  29681.         DX = 6368h ('ch')
  29682.         ES = resident code segment
  29683.         ES:DI -> identification and configuration data
  29684. Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
  29685.       GmbH
  29686. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h
  29687. --------S-212B--CX6269-----------------------
  29688. INT 21 - bitFOSS - INSTALLATION CHECK
  29689.     AH = 2Bh
  29690.     CX = 6269h ('bi')
  29691.     DX = 7446h ('tF')
  29692. Return: AL = FFh if not installed
  29693.     AL = 4Fh ('O') if bitFOSS is installed
  29694.         CX = 5353h ('SS')
  29695.         DX = 494Ch ('IL')
  29696.         ES = resident code segment
  29697.         ES:DI -> identification data
  29698. Program: bitFOSS is a revision 5 FOSSIL driver
  29699. SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh
  29700. --------S-212B--CX6269-----------------------
  29701. INT 21 - bitFOSSI - INSTALLATION CHECK
  29702.     AH = 2Bh
  29703.     CX = 6269h ('bi')
  29704.     DX = 7449h ('tI')
  29705. Return: AL = FFh if not installed
  29706.     AL = 53h ('S') if bitFOSSI is installed
  29707.         CX = 444Eh ('DN')
  29708.         DX = 2D46h ('-F')
  29709.         ES = resident code segment
  29710.         ES:DI -> identification data
  29711. Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
  29712. SeeAlso: AH=2Bh/CX=6269h/DX=7446h,INT 11/AH=BCh
  29713. --------D-212C-------------------------------
  29714. INT 21 - DOS 1+ - GET SYSTEM TIME
  29715.     AH = 2Ch
  29716. Return: CH = hour
  29717.     CL = minute
  29718.     DH = second
  29719.     DL = 1/100 seconds
  29720. Note:    on most systems, the resolution of the system clock is about 5/100sec,
  29721.       so returned times generally do not increment by 1
  29722.     on some systems, DL may always return 00h
  29723. SeeAlso: AH=2Ah,AH=2Dh,AH=E7h,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
  29724. SeeAlso: INT 2F/AX=120Dh
  29725. --------v-212C00CX534B-----------------------
  29726. INT 21 - SKUDO - INSTALLATION CHECK
  29727.     AX = 2C00h
  29728.     CX = 534Bh ('SK')
  29729.     DX = 5544h ('UD')
  29730.     BX = 4F21h ('O!')
  29731. Return: AX = 5349h ('SI') if installed
  29732.         CH = version number
  29733.         CL = subversion
  29734. Program: SKUDO is an antivirus TSR by Jordi Mas
  29735. --------D-212D-------------------------------
  29736. INT 21 - DOS 1+ - SET SYSTEM TIME
  29737.     AH = 2Dh
  29738.     CH = hour
  29739.     CL = minute
  29740.     DH = second
  29741.     DL = 1/100 seconds
  29742. Return: AL = result
  29743.         00h successful
  29744.         FFh invalid time, system time unchanged
  29745. Note:    DOS 3.3+ also sets CMOS clock
  29746. SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
  29747. --------T-212D01CX7820-----------------------
  29748. INT 21 - PC-Mix - INSTALLATION CHECK
  29749.     AX = 2D01h
  29750.     CX = 7820h ('X ')
  29751.     DX = 6D69h ('MI')
  29752. Return: AL = 00h if installed
  29753. --------D-212E--DL00-------------------------
  29754. INT 21 - DOS 1+ - SET VERIFY FLAG
  29755.     AH = 2Eh
  29756.     DL = 00h (DOS 1.x/2.x only)
  29757.     AL = new state of verify flag
  29758.         00h off
  29759.         01h on
  29760. Notes:    default state at system boot is OFF
  29761.     when ON, all disk writes are verified provided the device driver
  29762.       supports read-after-write verification
  29763. SeeAlso: AH=54h
  29764. --------D-212F-------------------------------
  29765. INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
  29766.     AH = 2Fh
  29767. Return: ES:BX -> current DTA
  29768. Note:    under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
  29769. SeeAlso: AH=1Ah
  29770. --------D-2130-------------------------------
  29771. INT 21 - DOS 2+ - GET DOS VERSION
  29772.     AH = 30h
  29773. ---DOS 5+ ---
  29774.     AL = what to return in BH
  29775.         00h OEM number (as for DOS 2.0-4.0x)
  29776.         01h version flag
  29777. Return: AL = major version number (00h if DOS 1.x)
  29778.     AH = minor version number
  29779.     BL:CX = 24-bit user serial number (most versions do not use this)
  29780. ---if DOS <5 or AL=00h---
  29781.     BH = MS-DOS OEM number (see #0550)
  29782. ---if DOS 5+ and AL=01h---
  29783.     BH = version flag
  29784.         bit 3: DOS is in ROM
  29785.         other: reserved (0)
  29786. Notes:    the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
  29787.     the OS/2 v2.x Compatibility Box returns major version 14h (20)
  29788.     the Windows/NT DOS box returns version 5.00, subject to SETVER
  29789.     DOS 4.01 and 4.02 identify themselves as version 4.00; use
  29790.       INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
  29791.       and the later PC-DOS 4.0x and MS-DOS 4.0x
  29792.     IBM DOS 6.1 reports its version as 6.00; use the OEM number to
  29793.       distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
  29794.       IBM DOS 6.0)
  29795.     MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
  29796.       correct value
  29797.     the "Chicago" beta returns version 7.00 (reported in 
  29798.       _Microsoft_Systems_Journal_, August 1994).
  29799.     DR-DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports v6.00.
  29800.     generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
  29801.       as PC-DOS by returning OEM number 00h
  29802.     the version returned under DOS 4.0x may be modified by entries in
  29803.       the special program list (see #0800 at AH=52h); the version returned
  29804.       under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
  29805.       version number
  29806. SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
  29807. SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=E002h
  29808.  
  29809. (Table 0550)
  29810. Values for DOS OEM number:
  29811.  00h    IBM
  29812.  01h    Compaq
  29813.  02h    MS Packaged Product
  29814.  04h    AT&T
  29815.  05h    Zenith
  29816.  06h    Hewlett-Packard
  29817.  0Dh    Packard-Bell
  29818.  16h    DEC
  29819.  23h    Olivetti
  29820.  29h    Toshiba
  29821.  33h    Novell (Windows/386 device IDs only)
  29822.  34h    MS Multimedia Systems (Windows/386 device IDs only)
  29823.  35h    MS Multimedia Systems (Windows/386 device IDs only)
  29824.  4Dh    Hewlett-Packard
  29825.  66h    PhysTechSoft (PTS-DOS)
  29826.  99h    General Software's Embedded DOS
  29827.  EEh    DR-DOS
  29828.  EFh    Novell DOS
  29829.  FFh    Microsoft, Phoenix
  29830. --------E-2130-------------------------------
  29831. INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
  29832.     AH = 30h
  29833.     EAX = 00003000h
  29834.     EBX = 50484152h ("PHAR")
  29835. Return: AL = major DOS version
  29836.     AH = minor DOS version
  29837.     EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
  29838.         BL = ASCII major version number
  29839.     EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
  29840.         EDX = address of GDA
  29841. SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
  29842. --------v-2130--DXABCD-----------------------
  29843. INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
  29844.     AH = 30h
  29845.     DX = ABCDh
  29846. Return: DX = DCBAh if installed
  29847. SeeAlso: AX=0D20h,AX=30F1h
  29848. --------T-213000BX1234-----------------------
  29849. INT 21 - CTask 2.0+ - INSTALLATION CHECK
  29850.     AX = 3000h
  29851.     BX = 1234h
  29852.     DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
  29853. Return: AL = DOS major version
  29854.     AH = DOS minor version
  29855.     CX:BX -> Ctask global data block
  29856. Program: CTask is a multitasking kernel for C written by Thomas Wagner
  29857. Note:    if first eight bytes of returned data block equal eight bytes passed
  29858.       in, CTask is resident
  29859. --------O-213000BX3000-----------------------
  29860. INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
  29861.     AX = 3000h
  29862.     BX = 3000h
  29863.     CX = DX = 3000h
  29864. Return: AX = PC-MOS version
  29865. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  29866.       system by The Software Link, Inc.
  29867. SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
  29868. --------G-213022-----------------------------
  29869. INT 21 - StopPrg v2.0 - INSTALLATION CHECK
  29870.     AX = 3022h
  29871. Return: AX = DOS version (see AH=30h)
  29872.     CX = 1112h if StopPrg installed
  29873.         BX = segment of resident code
  29874. Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
  29875. Note:    StopPrg may be temporarily disabled by storing 9090h in the word at
  29876.       0000h:04FEh
  29877. --------v-2130F1-----------------------------
  29878. INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
  29879.     AX = 30F1h
  29880. Return: AL = 00h if resident
  29881. SeeAlso: AH=30h/DX=ABCDh,AX=330Fh
  29882. ----------2130FFCX4445-----------------------
  29883. INT 21 - DESQ??? - INSTALLATION CHECK
  29884.     AX = 30FFh
  29885.     CX = 4445h ("DE")
  29886.     DX = 5351h ("SQ")
  29887. Return: BH = 05h if installed
  29888.     ???
  29889. Note:    called by DUBLDISK.COM v2.6; this function is not supported by
  29890.       DESQview, so it may be for DESQview's precursor DESQ.
  29891. SeeAlso: AX=4404h"DUBLDISK"
  29892. --------D-2131-------------------------------
  29893. INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
  29894.     AH = 31h
  29895.     AL = return code
  29896.     DX = number of paragraphs to keep resident
  29897. Return: never
  29898. Notes:    the value in DX only affects the memory block containing the PSP;
  29899.       additional memory allocated via AH=48h is not affected
  29900.     the minimum number of paragraphs which will remain resident is 11h
  29901.       for DOS 2.x and 06h for DOS 3+
  29902.     most TSRs can save some memory by releasing their environment block
  29903.       before terminating (see #0535 at AH=26h,AH=49h)
  29904. SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
  29905. --------D-2132-------------------------------
  29906. INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
  29907.     AH = 32h
  29908.     DL = drive number (00h = default, 01h = A:, etc)
  29909. Return: AL = status
  29910.         00h successful
  29911.         DS:BX -> Drive Parameter Block (DPB) (see #0551) for specified
  29912.               drive
  29913.         FFh invalid or network drive
  29914. Notes:    the OS/2 compatibility box supports the DOS 3.3 version of this call
  29915.       except for the DWORD at offset 12h
  29916.     this call updates the DPB by reading the disk; the DPB may be accessed
  29917.       via the DOS list of lists (see #0765 at AH=52h) if disk access is not
  29918.       desirable.
  29919.     undocumented prior to the release of DOS 5.0; only the DOS 4+ version
  29920.       of the DPB has been documented, however
  29921.     supported by DR-DOS 3.41+; DR-DOS 3.41-6.0 return the same data as
  29922.       MS-DOS 3.31
  29923. SeeAlso: AH=1Fh,AH=52h
  29924.  
  29925. Format of DOS Drive Parameter Block:
  29926. Offset    Size    Description    (Table 0551)
  29927.  00h    BYTE    drive number (00h = A:, 01h = B:, etc)
  29928.  01h    BYTE    unit number within device driver
  29929.  02h    WORD    bytes per sector
  29930.  04h    BYTE    highest sector number within a cluster
  29931.  05h    BYTE    shift count to convert clusters into sectors
  29932.  06h    WORD    number of reserved sectors at beginning of drive
  29933.  08h    BYTE    number of FATs
  29934.  09h    WORD    number of root directory entries
  29935.  0Bh    WORD    number of first sector containing user data
  29936.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  29937.         16-bit FAT if greater than 0FF6h, else 12-bit FAT
  29938.  0Fh    BYTE    number of sectors per FAT
  29939.  10h    WORD    sector number of first directory sector
  29940.  12h    DWORD    address of device driver header
  29941.  16h    BYTE    media ID byte
  29942.  17h    BYTE    00h if disk accessed, FFh if not
  29943.  18h    DWORD    pointer to next DPB
  29944. ---DOS 2.x---
  29945.  1Ch    WORD    cluster containing start of current directory, 0000h=root,
  29946.         FFFFh = unknown
  29947.  1Eh 64 BYTEs    ASCIZ pathname of current directory for drive
  29948. ---DOS 3.x---
  29949.  1Ch    WORD    cluster at which to start search for free space when writing
  29950.  1Eh    WORD    number of free clusters on drive, FFFFh = unknown
  29951. ---DOS 4.0-6.0---
  29952.  0Fh    WORD    number of sectors per FAT
  29953.  11h    WORD    sector number of first directory sector
  29954.  13h    DWORD    address of device driver header
  29955.  17h    BYTE    media ID byte
  29956.  18h    BYTE    00h if disk accessed, FFh if not
  29957.  19h    DWORD    pointer to next DPB
  29958.  1Dh    WORD    cluster at which to start search for free space when writing,
  29959.         usually the last cluster allocated
  29960.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  29961. SeeAlso: #0801
  29962. --------D-2133-------------------------------
  29963. INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
  29964.     AH = 33h
  29965.     AL = subfunction
  29966.         00h get current extended break state
  29967.         Return: DL = current state, 00h = off, 01h = on
  29968.         01h set state of extended ^C/^Break checking
  29969.         DL = new state
  29970.             00h off, check only on character I/O functions
  29971.             01h on, check on all DOS functions
  29972.         Return: (Novell DOS 7) DL = old state of extended Break checks
  29973. Note:    under DOS 3.1+ and DR-DOS, this function does not use any of the
  29974.       DOS-internal stacks and may thus be called at any time
  29975. SeeAlso: AX=3302h
  29976. --------D-213302-----------------------------
  29977. INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
  29978.     AX = 3302h
  29979.     DL = new state (00h for OFF, 01h for ON)
  29980. Return: DL = old state of extended BREAK checking
  29981. Notes:    this function does not use any of the DOS-internal stacks and may thus
  29982.       be called at any time; one possible use is modifying Control-Break
  29983.       checking from within an interrupt handler or TSR
  29984.     not supported by DR-DOS through version 6.0; newly-supported by
  29985.       Novell DOS 7
  29986. SeeAlso: AH=33h
  29987. --------D-213303-----------------------------
  29988. INT 21 - DOS 4+ - UNUSED
  29989.     AX = 3303h
  29990. Return: nothing
  29991. Note:    this function and AX=3304h were apparently intended to support a
  29992.       code-page switching flag for OS/2 compatibility (OS/2 allows a file
  29993.       to have a code page as an attribute); however, this function has
  29994.       always been a NOP in public releases of DOS.    See _DOS_Internals_
  29995.       Chapter 2 for more information
  29996. SeeAlso: AX=3304h
  29997. --------D-213304-----------------------------
  29998. INT 21 - DOS 4+ - UNUSED
  29999.     AX = 3304h
  30000. Return: nothing
  30001. Note:    this function and AX=3303h were apparently intended to support a
  30002.       code-page switching flag for OS/2 compatibility (OS/2 allows a file
  30003.       to have a code page as an attribute); however, this function has
  30004.       always been a NOP in public releases of DOS.    See _DOS_Internals_
  30005.       Chapter 2 for more information
  30006. SeeAlso: AX=3303h
  30007. --------D-213305-----------------------------
  30008. INT 21 - DOS 4+ - GET BOOT DRIVE
  30009.     AX = 3305h
  30010. Return: DL = boot drive (1=A:,...)
  30011. Notes:    fully reentrant
  30012.     NEC 9800-series PCs always call the boot drive A: and assign the other
  30013.       drive letters sequentially to the other drives in the system
  30014. --------D-213306-----------------------------
  30015. INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
  30016.     AX = 3306h
  30017. Return: BL = major version
  30018.     BH = minor version
  30019.     DL = revision (bits 2-0, all others 0)
  30020.     DH = version flags
  30021.         bit 3: DOS is in ROM
  30022.         bit 4: DOS is in HMA
  30023.     AL = FFh if true DOS version < 5.0
  30024. Notes:    this function always returns the true version number, unlike AH=30h,
  30025.       whose return value may be changed with SETVER
  30026.     because of the conflict from the CBIS PowerLAN redirector (see next
  30027.       entry), programs should check whether BH is less than 100 (64h)
  30028.       and BL is at least 5 before accepting the returned BX as the true
  30029.       version number; however, even this is not entirely reliable when
  30030.       that redirector is loaded
  30031.     fully reentrant
  30032.     OS/2 v2.1 will return BX=0A14h (version 20.10)
  30033.     the Windows NT DOS box returns BX=3205h (version 5.50)
  30034.     Novell DOS 7 returns version 6.00
  30035. BUG:    DR-DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
  30036.       subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
  30037.       for invalid subfunctions
  30038. SeeAlso: AH=30h,INT 2F/AX=122Fh
  30039. --------N-213306-----------------------------
  30040. INT 21 - CBIS POWERLAN - NETWORK REDIRECTOR - ???
  30041.     AX = 3306h
  30042. Return: AX = 3306h
  30043.     BL = ??? (usually 00h)
  30044.     BH = ??? (usually 00h or FFh)
  30045. Note:    unknown function, is in conflict with DOS 5+ version call
  30046. SeeAlso: AX=3306h"DOS"
  30047. --------v-21330F-----------------------------
  30048. INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
  30049.     AX = 330Fh
  30050. Return: AL = 0Fh if resident (DOS returns AL=FFh)
  30051. SeeAlso: AX=30F1h,AX=33E0h
  30052. --------k-213341-----------------------------
  30053. INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
  30054.     AX = 3341h
  30055. Return: DX = 1234h if installed
  30056.         CX = resident code segment
  30057. Program: Diet Disk is a public domain transparent data file compressor by
  30058.       Barry Nance
  30059. --------v-2133E0-----------------------------
  30060. INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
  30061.     AX = 33E0h
  30062. Return: AL = E0h if resident (DOS returns AL=FFh)
  30063. SeeAlso: AX=330Fh,AX=357Fh
  30064. --------D-2134-------------------------------
  30065. INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
  30066.     AH = 34h
  30067. Return: ES:BX -> one-byte InDOS flag
  30068. Notes:    this function executes on the DOS stack, and thus cannot be called
  30069.       while another DOS function is already executing; you should use
  30070.       this function once at the beginning of the program and store the
  30071.       returned pointer rather than calling it when requiring DOS access
  30072.     the value of InDOS is incremented whenever an INT 21 function begins
  30073.       and decremented whenever one completes
  30074.     during an INT 28 call, it is safe to call some INT 21 functions even
  30075.       though InDOS may be 01h instead of zero
  30076.     InDOS alone is not sufficient for determining when it is safe to
  30077.       enter DOS, as the critical error handling decrements InDOS and
  30078.       increments the critical error flag for the duration of the critical
  30079.       error.  Thus, it is possible for InDOS to be zero even if DOS is
  30080.       busy.
  30081.     SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
  30082.       then zeros it on completion
  30083.     the critical error flag is the byte immediately following InDOS in
  30084.       DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ and
  30085.       DR-DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
  30086.       is located 1AAh bytes BEFORE the critical section flag)
  30087.     for DOS 3.1+, an undocumented call exists to get the address of the
  30088.       critical error flag (see AX=5D06h)
  30089.     this function was undocumented prior to the release of DOS 5.0.
  30090. SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
  30091. --------D-2135-------------------------------
  30092. INT 21 - DOS 2+ - GET INTERRUPT VECTOR
  30093.     AH = 35h
  30094.     AL = interrupt number
  30095. Return: ES:BX -> current interrupt handler
  30096. Note:    under DR-DOS 5.0+, this function does not use any of the DOS-internal
  30097.       stacks and may thus be called at any time
  30098. SeeAlso: AH=25h,AX=2503h
  30099. --------E-213501-----------------------------
  30100. INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
  30101.     AX = 3501h
  30102. Return: CF clear if successful
  30103.         BX = new selector
  30104.     CF set on error (no more selectors available)
  30105. Note:    the new selector will be an expand-up read/write data selector with
  30106.       undefined base and limit
  30107. SeeAlso: AX=3502h,INT 31/AX=0000h
  30108. --------E-213502-----------------------------
  30109. INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
  30110.     AX = 3502h
  30111.     BX = selector
  30112. Return: CF clear if successful
  30113.     CF set on error (invalid selector)
  30114. Note:    only selectors allocated via AX=3501h should be deallocated
  30115. SeeAlso: AX=3501h,INT 31/AX=0001h
  30116. --------E-213503-----------------------------
  30117. INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
  30118.     AX = 3503h
  30119.     BX = selector
  30120.     ECX = base address
  30121. Return: CF clear if successful
  30122.     CF set on error (invalid selector)
  30123. SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
  30124. --------E-213504-----------------------------
  30125. INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
  30126.     AX = 3504h
  30127.     BX = selector
  30128. Return: CF clear if successful
  30129.         ECX = absolute base address of selector
  30130.     CF set on error (invalid selector)
  30131. SeeAlso: AX=3503h,INT 31/AX=0006h
  30132. --------E-213505-----------------------------
  30133. INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
  30134.     AX = 3505h
  30135.     BX = selector
  30136.     ECX = desired limit
  30137. Return: CF clear if successful
  30138.         ECX = actual limit set
  30139.     CF set on error (no more selectors available)
  30140. Note:    the limit will be rounded down to nearest 4K boundary if the requested
  30141.       limit is greater than 1MB
  30142. SeeAlso: AX=3503h,INT 31/AX=0008h
  30143. --------E-21350A-----------------------------
  30144. INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
  30145.     AX = 350Ah
  30146.     EBX = absolute physical address
  30147.     ECX = size in bytes of area to map
  30148. Return: CF clear if successful
  30149.     CF set on error (insufficient memory or service refused by DPMI host)
  30150. Notes:    should not make repeated calls for the same physical address
  30151.     there is no provision for unmapping memory
  30152. --------E-21350B-----------------------------
  30153. INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
  30154.     AX = 350Bh
  30155.     DS = default selector for DS
  30156. Return: CF clear
  30157.     EAX = maximum amount of memory which can be allocated via AX=350Ch
  30158. SeeAlso: AX=350Ch
  30159. --------E-21350C-----------------------------
  30160. INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
  30161.     AX = 350Ch
  30162.     ECX = size of block in bytes
  30163.     DS = default DS
  30164. Return: CF clear if successful
  30165.         EAX = near pointer to new block
  30166.         EDX = new lowest legal value for stack
  30167.     CF set on error (requested size not multiple of 4K)
  30168. SeeAlso: AX=350Bh,AX=350Dh
  30169. --------E-21350D-----------------------------
  30170. INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
  30171.     AX = 350Dh
  30172.     EBX = current ESP value
  30173.     ECX = size of block in bytes
  30174.     DS = default DS
  30175. Return: CF clear if successful
  30176.         EBX = new value for ESP
  30177.         EDX = suggested new limit for SS
  30178.     CF set on error
  30179. Note:    this function should only be called once during initialization
  30180. SeeAlso: AX=350Bh,AX=350Ch
  30181. --------v-21357F-----------------------------
  30182. INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
  30183.     AX = 357Fh
  30184. Return: DX = FFFFh if installed
  30185. SeeAlso: AX=33E0h,AX=3DFFh
  30186. --------D-2136-------------------------------
  30187. INT 21 - DOS 2+ - GET FREE DISK SPACE
  30188.     AH = 36h
  30189.     DL = drive number (00h = default, 01h = A:, etc)
  30190. Return: AX = FFFFh if invalid drive
  30191.     else
  30192.         AX = sectors per cluster
  30193.         BX = number of free clusters
  30194.         CX = bytes per sector
  30195.         DX = total clusters on drive
  30196. Notes:    free space on drive in bytes is AX * BX * CX
  30197.     total space on drive in bytes is AX * CX * DX
  30198.     "lost clusters" are considered to be in use
  30199.     according to Dave Williams' MS-DOS reference, the value in DX is
  30200.       incorrect for non-default drives after ASSIGN is run
  30201. SeeAlso: AH=1Bh,AH=1Ch
  30202. --------D-213700-----------------------------
  30203. INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
  30204.     AX = 3700h
  30205. Return: AL = status
  30206.         00h successful
  30207.         DL = current switch character
  30208.         FFh unsupported subfunction
  30209. Desc:    Determine the character which is used to introduce command switches.
  30210.       This setting is ignored by DOS commands in version 4.0 and higher,
  30211.       but is honored by many third-party programs.
  30212. Notes:    documented in some OEM versions of some releases of DOS
  30213.     supported by OS/2 compatibility box
  30214.     always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR-DOS 3.41+
  30215. SeeAlso: AX=3701h
  30216. --------D-213701-----------------------------
  30217. INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
  30218.     AX = 3701h
  30219.     DL = new switch character
  30220. Return: AL = status
  30221.         00h successful
  30222.         FFh unsupported subfunction
  30223. Notes:    documented in some OEM versions of some releases of DOS
  30224.     supported by OS/2 compatibility box
  30225.     ignored by MS-DOS 5+ and DR-DOS 3.41+; DR-DOS 6.0 leaves AX unchanged
  30226. SeeAlso: AX=3700h
  30227. --------D-2137-------------------------------
  30228. INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
  30229.     AH = 37h
  30230.     AL = subfunction
  30231.         02h get availdev flag
  30232.         Return: DL = 00h \DEV\ must precede character device names
  30233.                = nonzero \DEV\ is optional
  30234.         03h set availdev flag
  30235.         DL = 00h    \DEV\ is mandatory
  30236.            = nonzero    \DEV\ is optional
  30237. Return: AL = status
  30238.         00h successful
  30239.         FFh unsupported subfunction
  30240. Notes:    all versions of DOS from 2.00 allow \DEV\ to be prepended to device
  30241.       names without generating an error even if the directory \DEV does
  30242.       not actually exist (other paths generate an error if they do not
  30243.       exist).
  30244.     although MS-DOS 3.3+ and DR-DOS 3.41+ accept these calls, they have no
  30245.       effect, and AL=02h always returns DL=FFh
  30246. --------k-2137D0BX899D-----------------------
  30247. INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
  30248.     AX = 37D0h
  30249.     BX = 899Dh ('DI' + 'ET')
  30250. Return: AL = FFh if not present as TSR (default return value from DOS)
  30251.     AX = 0000h if installed as a TSR
  30252.         CX = 899Dh
  30253.         DX = version ID
  30254. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  30255. SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
  30256. --------k-2137D1BX899D-----------------------
  30257. INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
  30258.     AX = 37D1h
  30259.     BX = 899Dh ('DI' + 'ET')
  30260. Return: AX = 0000h
  30261.     CX = code segment of TSR part of DIET.EXE
  30262.     DX = memory block segment of TSR DIET.EXE
  30263.         (0000h if installed as device driver)
  30264. SeeAlso: AX=37D0h,AX=37DFh
  30265. --------k-2137D2BX899D-----------------------
  30266. INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
  30267.     AX = 37D2h
  30268.     BX = 899Dh ('DI' + 'ET')
  30269. Return: AX = 0000h
  30270.     DL = control flag (00h active, else disabled)
  30271.     DH = skip flag (nonzero while TSR active)
  30272. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  30273. --------k-2137D3BX899D-----------------------
  30274. INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
  30275.     AX = 37D3h
  30276.     BX = 899Dh ('DI' + 'ET')
  30277.     DL = control flag (00h active, else disabled)
  30278.     DH = skip flag (00h)
  30279. Return: AX = 0000h
  30280. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  30281. --------k-2137D4BX899D-----------------------
  30282. INT 21 - DIET v1.43e - GET TSR OPTIONS
  30283.     AX = 37D4h
  30284.     BX = 899Dh ('DI' + 'ET')
  30285. Return: AX = 0000h
  30286.     DX = TSR options (see #0552)
  30287. SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
  30288.  
  30289. Bitfields for DIET TSR options:
  30290. Bit(s)    Description    (Table 0552)
  30291.  0    automated compression of DIETed file
  30292.  1    automated compression of newly-created file
  30293.  2    suppress DIET message
  30294.  3    display original file size
  30295.  4-15    reserved (0)
  30296. --------k-2137D5BX899D-----------------------
  30297. INT 21 - DIET v1.43e - SET TSR OPTIONS
  30298.     AX = 37D5h
  30299.     BX = 899Dh ('DI' + 'ET')
  30300.     DX = TSR options (see #0552)
  30301. Return: AX = 0000h
  30302. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  30303. SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
  30304. --------k-2137D6BX899D-----------------------
  30305. INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
  30306.     AX = 37D6h
  30307.     BX = 899Dh ('DI' + 'ET')
  30308. Return: AX = 0000h
  30309.     DS:DX -> name of temporary directory or 0000h:0000h for current dir
  30310. SeeAlso: AX=37D0h,AX=37D7h
  30311. --------k-2137D7BX899D-----------------------
  30312. INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
  30313.     AX = 37D7h
  30314.     BX = 899Dh ('DI' + 'ET')
  30315.     DS:DX -> ASCIZ name of temporary directory (max 61 chars)
  30316.         0000h:0000h for current directory
  30317. Return: AX = 0000h
  30318. Note:    the specified directory name must include a drive letter and end with
  30319.       a backslash
  30320. SeeAlso: AX=37D0h,AX=37D6h
  30321. --------k-2137DCBX899D-----------------------
  30322. INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
  30323.     AX = 37DCh
  30324.     BX = 899Dh ('DI' + 'ET')
  30325.     DS:DX -> external procedure
  30326. Return: AX = 0000h
  30327. Note:    the resident code will call the specified external procedure at the
  30328.       beginning of decompression and when compression is exited on failure
  30329. SeeAlso: AX=37DDh
  30330.  
  30331. (Table 0553)
  30332. Values DIET external procedure is called with:
  30333.     STACK:    WORD    class
  30334.             FFFDh creation failed for unknown reasons
  30335.             FFFEh creation failed due to lack of space
  30336.             FFFFh file creation error
  30337.             else file handle of DIETed file to be decompressed
  30338.         DWORD    -> compressed filename
  30339.         DWORD    -> decompressed or temporary filename
  30340. Return: SI,DI,BP,DS,ES must be preserved by external procedure
  30341. --------k-2137DDBX899D-----------------------
  30342. INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
  30343.     AX = 37DDh
  30344.     BX = 899Dh ('DI' + 'ET')
  30345. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  30346. Note:    unlinks the external procedure specified by AX=37DCh
  30347. SeeAlso: AX=37DCh
  30348. --------k-2137DEBX899D-----------------------
  30349. INT 21 - DIET v1.43e - READ EMS STATUS
  30350.     AX = 37DEh
  30351.     BX = 899Dh ('DI' + 'ET')
  30352. Return: AX = 0000h
  30353.     CX = EMS status
  30354.         0000h not used
  30355.         0001h used as work area
  30356.         0002h used for code and as work area
  30357.     DX = EMM handle when EMS is in use
  30358. --------k-2137DFBX899D-----------------------
  30359. INT 21 - DIET v1.43e - UNLOAD TSR
  30360.     AX = 37DFh
  30361.     BX = 899Dh ('DI' + 'ET')
  30362. Return: AX = status
  30363.         0000h successful
  30364.         00FFh failed
  30365. Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
  30366. SeeAlso: AX=37D0h
  30367. Index:    uninstall;DIET
  30368. --------D-2138-------------------------------
  30369. INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
  30370.     AH = 38h
  30371. --DOS 2.x--
  30372.     AL = 00h get current-country info
  30373.     DS:DX -> buffer for returned info (see #0554,#0555)
  30374. Return: CF set on error
  30375.         AX = error code (02h)
  30376.     CF clear if successful
  30377.         AX = country code (MS-DOS 2.11 only)
  30378.         buffer at DS:DX filled
  30379. --DOS 3+--
  30380.     AL = 00h for current country
  30381.     AL = 01h thru 0FEh for specific country with code <255
  30382.     AL = 0FFh for specific country with code >= 255
  30383.        BX = 16-bit country code
  30384.     DS:DX -> buffer for returned info (see #0555)
  30385. Return: CF set on error
  30386.         AX = error code (02h)
  30387.     CF clear if successful
  30388.         BX = country code
  30389.         DS:DX buffer filled
  30390. Note:    this function is not supported by the Borland DPMI host, but no error
  30391.       is returned; as a workaround, one should allocate a buffer in
  30392.       conventional memory with INT 31/AX=0100h and simulate an INT 21 with
  30393.       INT 31/AX=0300h
  30394. SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
  30395.  
  30396. Format of DOS 2.00-2.10 country info:
  30397. Offset    Size    Description    (Table 0554)
  30398.  00h    WORD    date format  0 = USA    mm dd yy
  30399.                  1 = Europe dd mm yy
  30400.                  2 = Japan    yy mm dd
  30401.  02h    BYTE    currency symbol
  30402.  03h    BYTE    00h
  30403.  04h    BYTE    thousands separator char
  30404.  05h    BYTE    00h
  30405.  06h    BYTE    decimal separator char
  30406.  07h    BYTE    00h
  30407.  08h 24 BYTEs    reserved
  30408.  
  30409. Format of DOS 2.11+ country info:
  30410. Offset    Size    Description    (Table 0555)
  30411.  00h    WORD    date format (see #0554)
  30412.  02h  5 BYTEs    ASCIZ currency symbol string
  30413.  07h  2 BYTEs    ASCIZ thousands separator
  30414.  09h  2 BYTEs    ASCIZ decimal separator
  30415.  0Bh  2 BYTEs    ASCIZ date separator
  30416.  0Dh  2 BYTEs    ASCIZ time separator
  30417.  0Fh    BYTE    currency format
  30418.         bit 2 = set if currency symbol replaces decimal point
  30419.         bit 1 = number of spaces between value and currency symbol
  30420.         bit 0 = 0 if currency symbol precedes value
  30421.             1 if currency symbol follows value
  30422.  10h    BYTE    number of digits after decimal in currency
  30423.  11h    BYTE    time format
  30424.         bit 0 = 0 if 12-hour clock
  30425.             1 if 24-hour clock
  30426.  12h    DWORD    address of case map routine
  30427.         (FAR CALL, AL = character to map to upper case [>= 80h])
  30428.  16h  2 BYTEs    ASCIZ data-list separator
  30429.  18h 10 BYTEs    reserved
  30430.  
  30431. (Table 0556)
  30432. Values for country code:
  30433.  001h    United States
  30434.  002h    Canadian-French
  30435.  003h    Latin America
  30436.  01Fh    Netherlands
  30437.  020h    Belgium
  30438.  021h    France
  30439.  022h    Spain
  30440.  024h    Hungary (not supported by DR-DOS 5.0)
  30441.  026h    Yugoslavia (not supported by DR-DOS 5.0)
  30442.  027h    Italy
  30443.  029h    Switzerland
  30444.  02Ah    Czechoslovakia/Tjekia (not supported by DR-DOS 5.0)
  30445.  02Bh    Austria (DR-DOS 5.0)
  30446.  02Ch    United Kingdom
  30447.  02Dh    Denmark
  30448.  02Eh    Sweden
  30449.  02Fh    Norway
  30450.  030h    Poland (not supported by DR-DOS 5.0)
  30451.  031h    Germany
  30452.  037h    Brazil (not supported by DR-DOS 5.0)
  30453.  03Dh    International English [Australia in DR-DOS 5.0]
  30454.  051h    Japan (DR-DOS 5.0, MS-DOS 5.0+)
  30455.  052h    Korea (DR-DOS 5.0)
  30456.  056h    China (MS-DOS 5.0+)
  30457.  058h    Taiwan (MS-DOS 5.0+)
  30458.  05Ah    Turkey (MS-DOS 5.0+)
  30459.  15Fh    Portugal
  30460.  162h    Iceland
  30461.  166h    Finland
  30462.  311h    Middle East/Saudi Arabia (DR-DOS 5.0,MS-DOS 5.0+)
  30463.  3CCh    Israel (DR-DOS 5.0,MS-DOS 5.0+)
  30464. --------D-2138--DXFFFF-----------------------
  30465. INT 21 - DOS 3+ - SET COUNTRY CODE
  30466.     AH = 38h
  30467.     DX = FFFFh
  30468.     AL = 01h thru FEh for specific country with code <255
  30469.     AL = FFh for specific country with code >= 255
  30470.        BX = 16-bit country code (see #0556)
  30471. Return: CF set on error
  30472.         AX = error code (see #0811 at AH=59h)
  30473.     CF clear if successful
  30474. Note:    not supported by OS/2
  30475. SeeAlso: INT 2F/AX=1403h
  30476. --------D-2139-------------------------------
  30477. INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
  30478.     AH = 39h
  30479.     DS:DX -> ASCIZ pathname
  30480. Return: CF clear if successful
  30481.         AX destroyed
  30482.     CF set on error
  30483.         AX = error code (03h,05h) (see #0811 at AH=59h)
  30484. Notes:    all directories in the given path except the last must exist
  30485.     fails if the parent directory is the root and is full
  30486.     DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
  30487.       it is not possible to make that directory the current directory
  30488.       because the path would exceed 64 characters
  30489.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30490. SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AH=71h,AH=E2h/SF=0Ah,INT 2F/AX=1103h
  30491. SeeAlso: INT 60/DI=0511h
  30492. --------D-213A-------------------------------
  30493. INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
  30494.     AH = 3Ah
  30495.     DS:DX -> ASCIZ pathname of directory to be removed
  30496. Return: CF clear if successful
  30497.         AX destroyed
  30498.     CF set on error
  30499.         AX = error code (03h,05h,06h,10h) (see #0811 at AH=59h)
  30500. Notes:    directory must be empty (contain only '.' and '..' entries)
  30501.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30502. SeeAlso: AH=39h,AH=3Bh,AH=71h,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h
  30503. --------D-213B-------------------------------
  30504. INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
  30505.     AH = 3Bh
  30506.     DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
  30507. Return: CF clear if successful
  30508.         AX destroyed
  30509.     CF set on error
  30510.         AX = error code (03h) (see #0811 at AH=59h)
  30511. Notes:    if new directory name includes a drive letter, the default drive is
  30512.       not changed, only the current directory on that drive
  30513.     changing the current directory also changes the directory in which
  30514.       FCB file calls operate
  30515.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30516. SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h
  30517. --------D-213C-------------------------------
  30518. INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
  30519.     AH = 3Ch
  30520.     CX = file attributes (see #0557)
  30521.     DS:DX -> ASCIZ filename
  30522. Return: CF clear if successful
  30523.         AX = file handle
  30524.     CF set on error
  30525.         AX = error code (03h,04h,05h) (see #0811 at AH=59h)
  30526. Notes:    if a file with the given name exists, it is truncated to zero length
  30527.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30528.     DR-DOS checks the system password or explicitly supplied password at
  30529.       the end of the filename against the reserved field in the directory
  30530.       entry before allowing access
  30531. SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
  30532.  
  30533. Bitfields for file attributes:
  30534. Bit(s)    Description    (Table 0557)
  30535.  0    read-only
  30536.  1    hidden
  30537.  2    system
  30538.  3    volume label (ignored)
  30539.  4    reserved, must be zero (directory)
  30540.  5    archive bit
  30541.  7    if set, file is shareable under Novell NetWare
  30542. --------D-213D-------------------------------
  30543. INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
  30544.     AH = 3Dh
  30545.     AL = access and sharing modes (see #0558)
  30546.     DS:DX -> ASCIZ filename
  30547.     CL = attribute mask of files to look for (server call only)
  30548. Return: CF clear if successful
  30549.         AX = file handle
  30550.     CF set on error
  30551.         AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #0811 at AH=59h)
  30552. Notes:    file pointer is set to start of file
  30553.     file handles which are inherited from a parent also inherit sharing
  30554.       and access restrictions
  30555.     files may be opened even if given the hidden or system attributes
  30556.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30557.     DR-DOS checks the system password or explicitly supplied password at
  30558.       the end of the filename against the reserved field in the directory
  30559.       entry before allowing access
  30560.     sharing modes are only effective on local drives if SHARE is loaded
  30561. SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
  30562.  
  30563. Bitfields for access and sharing modes:
  30564. Bit(s)    Description    (Table 0558)
  30565.  2-0    access mode
  30566.     000 read only
  30567.     001 write only
  30568.     010 read/write
  30569.     011 (DOS 5+ internal) passed to redirector on EXEC to allow
  30570.         case-sensitive filenames
  30571.  3    reserved (0)
  30572.  6-4    sharing mode (DOS 3+)
  30573.     000 compatibility mode
  30574.     001 "DENYALL" prohiboth read and write access by others
  30575.     010 "DENYWRITE" prohiwrite access by others
  30576.     011 "DENYREAD" prohiread access by others
  30577.     100 "DENYNONE" allow full access by others
  30578.     111 network FCB (only available during server call)
  30579.  7    inheritance
  30580.     if set, file is private to current process and will not be inherited
  30581.       by child processes
  30582.  
  30583. (Table 0559)
  30584. Values of DOS file sharing behavior:
  30585.       |    Second and subsequent Opens
  30586.  First      |Compat  Deny      Deny     Deny    Deny
  30587.  Open      |       All      Write     Read    None
  30588.       |R W RW R W RW R W RW R W RW R W RW
  30589.  - - - - -| - - - - - - - - - - - - - - - - -
  30590.  Compat R |Y Y Y  N N N     1 N N    N N N  1 N N
  30591.     W |Y Y Y  N N N     N N N    N N N  N N N
  30592.     RW|Y Y Y  N N N     N N N    N N N  N N N
  30593.  - - - - -|
  30594.  Deny    R |C C C  N N N     N N N    N N N  N N N
  30595.  All    W |C C C  N N N     N N N    N N N  N N N
  30596.     RW|C C C  N N N     N N N    N N N  N N N
  30597.  - - - - -|
  30598.  Deny    R |2 C C  N N N     Y N N    N N N  Y N N
  30599.  Write    W |C C C  N N N     N N N    Y N N  Y N N
  30600.     RW|C C C  N N N     N N N    N N N  Y N N
  30601.  - - - - -|
  30602.  Deny    R |C C C  N N N     N Y N    N N N  N Y N
  30603.  Read    W |C C C  N N N     N N N    N Y N  N Y N
  30604.     RW|C C C  N N N     N N N    N N N  N Y N
  30605.  - - - - -|
  30606.  Deny    R |2 C C  N N N     Y Y Y    N N N  Y Y Y
  30607.  None    W |C C C  N N N     N N N    Y Y Y  Y Y Y
  30608.     RW|C C C  N N N     N N N    N N N  Y Y Y
  30609. Legend: Y = open succeeds, N = open fails with error code 05h
  30610.     C = open fails, INT 24 generated
  30611.     1 = open succeeds if file read-only, else fails with error code
  30612.     2 = open succeeds if file read-only, else fails with INT 24
  30613. --------v-213DFF-----------------------------
  30614. INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
  30615.     AX = 3DFFh
  30616. Return: AX = 4A44h if resident
  30617. SeeAlso: AX=357Fh,AX=4203h
  30618. --------D-213E-------------------------------
  30619. INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
  30620.     AH = 3Eh
  30621.     BX = file handle
  30622. Return: CF clear if successful
  30623.         AX destroyed
  30624.     CF set on error
  30625.         AX = error code (06h) (see #0811 at AH=59h)
  30626. Note:    if the file was written to, any pending disk writes are performed, the
  30627.       time and date stamps are set to the current time, and the directory
  30628.       entry is updated
  30629. SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
  30630. --------D-213F-------------------------------
  30631. INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
  30632.     AH = 3Fh
  30633.     BX = file handle
  30634.     CX = number of bytes to read
  30635.     DS:DX -> buffer for data
  30636. Return: CF clear if successful
  30637.         AX = number of bytes actually read (0 if at EOF before call)
  30638.     CF set on error
  30639.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30640. Notes:    data is read beginning at current file position, and the file position
  30641.       is updated after a successful read
  30642.     the returned AX may be smaller than the request in CX if a partial
  30643.       read occurred
  30644.     if reading from CON, read stops at first CR
  30645.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  30646. BUG:    Novell NETX.EXE v3.26 and 3.31 do not set CF if the read fails due to
  30647.       a record lock (see AH=5Ch), though it does return AX=0005h; this
  30648.       has been documented by Novell
  30649. SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
  30650. --------G-213F-------------------------------
  30651. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
  30652.     AH = 3Fh
  30653.     BX = handle for character device "TDHDEBUG"
  30654.     CX = number of bytes to read
  30655.     DS:DX -> buffer for status block (see #0561)
  30656. Return: CF clear if successful
  30657.         AX = number of bytes actually read
  30658.     CF set on error
  30659.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30660. SeeAlso: AH=40h"Turbo Debug"
  30661.  
  30662. (Table 0560)
  30663. Values for status of Turbo Debugger command:
  30664.  00h    successful
  30665.  01h    invalid handle
  30666.  02h    no more breakpoints available
  30667.  03h    hardware does not support specified breakpoint type
  30668.  04h    previous command prevents execution
  30669.  05h    debugger hardware not found
  30670.  06h    hardware failure
  30671.  07h    invalid command
  30672.  08h    driver not initialized yet
  30673.  FEh    recursive entry (hardware breakpoint inside hw bp handler)
  30674.  
  30675. Format of Turbo Debugger status block:
  30676. Offset    Size    Description    (Table 0561)
  30677.  00h    BYTE    status of command (see #0560)
  30678. ---status for command 01h---
  30679.  01h    WORD    device driver interface version number (currently 1)
  30680.  03h    WORD    device driver software version
  30681.  05h    BYTE    maximum simultaneous hardware breakpoints
  30682.  06h    BYTE    configuration bits (see #0562)
  30683.  07h    BYTE    supported breakpoint types (see #0563)
  30684.  08h    WORD    supported addressing match modes (see #0564)
  30685.  0Ah    WORD    supported data matches (see #0565)
  30686.  0Ch    BYTE    maximum data match length (01h, 02h, or 04h)
  30687.  0Dh    WORD    size of onboard memory (in KB)
  30688.  0Fh    WORD    maximum number of trace-back events
  30689.  11h    WORD    hardware breakpoint enable byte address segment (0000h if not
  30690.           supported)
  30691. ---status for command 04h---
  30692.  01h    BYTE    handle to use when referring to the just-set breakpoint
  30693.  
  30694. Bitfields for Turbo Debugger configuration bits:
  30695. Bit(s)    Description    (Table 0562)
  30696.  0    CPU and DMA accesses are distinct
  30697.  1    can detect DMA transfers
  30698.  2    supports data mask
  30699.  3    hardware pass counter on breakpoints
  30700.  4    can match on data as well as addresses
  30701.  
  30702. Bitfields for Turbo Debugger supported breakpoint types:
  30703. Bit(s)    Description    (Table 0563)
  30704.  0    memory read
  30705.  1    memory write
  30706.  2    memory read/write
  30707.  3    I/O read
  30708.  4    I/O write
  30709.  5    I/O read/write
  30710.  6    instruction fetch
  30711.  
  30712. Bitfields for Turbo Debugger supported addressing match modes:
  30713. Bit(s)    Description    (Table 0564)
  30714.  0    any address
  30715.  1    equal to test value
  30716.  2    not equal
  30717.  3    above test value
  30718.  4    below test value
  30719.  5    below or equal
  30720.  6    above or equal
  30721.  7    within range
  30722.  8    outside range
  30723.  
  30724. Bitfields for Turbo Debugger supported data matches:
  30725. Bit(s)    Description    (Table 0565)
  30726.  0    any data
  30727.  1    equal to test value
  30728.  2    not equal
  30729.  3    above test value
  30730.  4    below test value
  30731.  5    below or equal
  30732.  6    above or equal
  30733.  7    within range
  30734.  8    outside range
  30735. --------N-213F-------------------------------
  30736. INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
  30737.     AH = 3Fh
  30738.     BX = handle for character device "$IPCUST"
  30739.     CX = number of bytes to read
  30740.     DS:DX -> buffer for configuration data (see #0566)
  30741. Return: CF clear if successful
  30742.         AX = number of bytes actually read
  30743.     CF set on error
  30744.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30745. Notes:    if less than the entire data is read or written, the next read/write
  30746.       continues where the previous one ended; IOCTL calls AX=4402h and
  30747.       AX=4403h both reset the location at which the next operation starts
  30748.       to zero
  30749.     the data pointer is also reset to zero if the previous read or write
  30750.       reached or exceeded the end of the data, when the current function
  30751.       is read and the previous was write, or vice versa
  30752.     v2.1+ uses a new configuration method, but allows the installation
  30753.       of IPCUST.SYS for backward compatibility with other software which
  30754.       must read the PC/TCP configuration
  30755. SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"
  30756.  
  30757. Format of PC/TCP configuration data:
  30758. Offset    Size    Description    (Table 0566)
  30759.  00h 12 BYTEs    IPCUST.SYS device driver header
  30760.  12h    BYTE    ???
  30761.  13h    BYTE    ???
  30762.  14h    WORD    ???
  30763.  16h    BYTE    bit flags
  30764.         bit 0: send BS rather than DEL for BackSpace key
  30765.         bit 1: wrap long lines
  30766.  17h    BYTE    ???
  30767.  18h 64 BYTEs    ASCIZ hostname
  30768.  58h 64 BYTEs    ASCIZ domain name
  30769.         (fully qualified domain name is hostname.domain-name)
  30770.  98h 16 BYTEs    ASCIZ username
  30771.  A8h 64 BYTEs    ASCIZ full name
  30772.  E8h 64 BYTEs    ASCIZ office address
  30773. 128h 32 BYTEs    ASCIZ phone number
  30774. 148h    WORD    offset from GMT in minutes
  30775. 14Ah  4 BYTEs    ASCIZ timezone name
  30776. 14Eh    WORD    number of time servers
  30777. 150h  ? DWORDs    (big-endian) IP addresses for time servers
  30778.     ???
  30779. 164h    WORD    number of old-style name servers
  30780. 166h  3 DWORDs    (big-endian) IP addresses for name servers
  30781. 172h    WORD    number of domain name servers
  30782. 174h  3 DWORDs    (big-endian) IP addresses for domain name servers
  30783. 180h    DWORD    (big-endian) IP address of default gateway
  30784. 184h    DWORD    (big-endian) IP address of log server
  30785. 188h    DWORD    (big-endian) IP address of cookie server
  30786. 18Ch    DWORD    (big-endian) IP address of lpr server
  30787. 190h    DWORD    (big-endian) IP address of imagen print server
  30788. 194h 54 BYTEs    ???
  30789. 1E8h    WORD    TCP default window size in bytes
  30790. 1EAh    WORD    TCP low window size
  30791. 1ECh 64 BYTEs    ASCIZ host tabel filename
  30792. 22Ch  2 BYTEs    ???
  30793. 22Eh 80 BYTEs    ASCIZ mail relay host name
  30794. 27Eh    BYTE    ???
  30795. 27Fh    BYTE    ??? bit flags
  30796. 280h 44 BYTEs    ???
  30797. 2ACh    WORD    ???
  30798. 2AEh 202 BYTEs    ???
  30799. --------N-213F-------------------------------
  30800. INT 21 - WORKGRP.SYS - GET ENTRY POINT
  30801.     AH = 3Fh
  30802.     BX = file handle for device "NET$HLP$"
  30803.     CX = 0008h
  30804.     DS:DX -> buffer for entry point record (see #0636)
  30805. Return: CF clear if successful
  30806.         AX = number of bytes actually read (0 if at EOF before call)
  30807.     CF set on error
  30808.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30809. Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
  30810.       permits communication with PCs running Windows for Workgroups or
  30811.       LAN Manager
  30812. SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h
  30813. --------N-213F-------------------------------
  30814. INT 21 - BW-TCP - GET DRIVER INFO
  30815.     AH = 3Fh
  30816.     BX = file handle for device "ETHDEV27"
  30817.     CX = 002Bh
  30818.     DS:DX -> buffer for driver info (see #0567)
  30819. Return: CF clear if successful
  30820.         AX = number of bytes actually read (0 if at EOF before call)
  30821.     CF set on error
  30822.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30823. Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
  30824. Notes:    the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
  30825.       making this call to retrieve the driver information; one should also
  30826.       call the private API interrupt with AH=15h
  30827.     the installation check for the TCP/IP stack is to test for the
  30828.       existence of the character device UDP-IP10
  30829. SeeAlso: INT 14/AH=56h,INT 62/AH=00h"ETHDEV",INT 63/AH=03h,INT 64/AH=00h
  30830. Index:    installation check;BW-TCP hardware driver
  30831. Index:    installation check;BW-TCP TCPIP.SYS
  30832.  
  30833. Format of BW-TCP driver info:
  30834. Offset    Size    Description    (Table 0567)
  30835.  00h    WORD    I/O base address
  30836.  02h    BYTE    shared memory page (01h = segment 0100h, etc.)
  30837.  03h    BYTE    interrupt vector for private API
  30838.  04h    BYTE    IRQ used by board
  30839.  05h    WORD    size of data buffer
  30840.  07h    WORD    maximum transfer window
  30841.  09h    WORD    time zone
  30842.  0Bh    BYTE    address type (01h user, 04h RARP, 05h BOOTP)
  30843.  0Ch    DWORD    internet address
  30844.  10h    WORD    "value" ???
  30845.  12h    BYTE    subnet mask
  30846.  13h    WORD    "ether_pointer" ???
  30847.  15h    WORD    offset in device driver of log server records
  30848.  17h    WORD    offset in device driver of name server records
  30849.  19h    WORD    offset in device driver of print server records
  30850.  1Bh    WORD    offset in device driver of time server records
  30851.  1Dh    WORD    offset in device driver of gateway records
  30852.  1Fh    WORD    segment address of device driver
  30853.  21h    BYTE    transfer size
  30854.  22h  9 BYTEs    network adapter board name
  30855. ---11/21/91+ ---
  30856.  23h    BYTE    ETHDEV version (major in high nybble, minor in low nybble)
  30857.  24h    BYTE    ETHDEV revision
  30858.  25h    BYTE    TCPIP version (major in high nybble, minor in low nybble)
  30859.  26h    BYTE    TCPIP revision
  30860.  27h    BYTE    BWRPC version (major in high nybble, minor in low nybble)
  30861.  28h    BYTE    BWRPC revision
  30862.  29h    BYTE    BWNFS version (major in high nybble, minor in low nybble)
  30863.  2Ah    BYTE    BWNFS revision
  30864.  2Bh    BYTE    Telnet version (major in high nybble, minor in low nybble)
  30865.  2Ch    BYTE    Telnet revision
  30866.  2Dh    BYTE    NETBIOS version (major in high nybble, minor in low nybble)
  30867.  2Eh    BYTE    NETBIOS revision
  30868. Note:    for each driver, if version=0, the driver is not installed or does
  30869.       not support the version check
  30870.  
  30871. Format of BW-TCP server records:
  30872. Offset    Size    Description    (Table 0568)
  30873.  00h    BYTE    number of server records following
  30874.  01h  N DWORDs    internet addresses of servers
  30875. --------y-213F-------------------------------
  30876. INT 21 - Trusted Access - NB.SYS - GET STATE
  30877.     AH = 3Fh
  30878.     BX = file handle for device "$$NB$$NB"
  30879.     CX = 0002h (size of state)
  30880.     DS:DX -> buffer for state record (see #0569)
  30881. Return: CF clear if successful
  30882.         AX = number of bytes actually read (0 if at EOF before call)
  30883.     CF set on error
  30884.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30885. Program: Trusted Access is a security and access-control package by Lassen
  30886.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  30887.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  30888. SeeAlso: AH=40h"NB.SYS",AX=4101h
  30889.  
  30890. Format of Trusted Access state record:
  30891. Offset    Size    Description    (Table 0569)
  30892.  00h    BYTE    00h off, 01h on
  30893.  01h    BYTE    keys being disabled
  30894.         bit 0: Ctrl-Break
  30895.         bit 1: SysReq
  30896.         bit 2: Ctrl and Alt
  30897.         bit 3: Ctrl-Alt-Del
  30898.         bit 7: all keys (overrides other bits)
  30899. ----------213F-------------------------------
  30900. INT 21 U - IFSHLP.SYS - GET ENTRY POINT
  30901.     AH = 3Fh
  30902.     BX = file handle for device "IFS$HLP$"
  30903.     CX = 0008h (size of buffer in bytes)
  30904.     DS:DX -> buffer for entry point record (see #0570)
  30905. Return: CF clear if successful
  30906.         AX = number of bytes actually read (0 if at EOF before call)
  30907.     CF set on error
  30908.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30909. Program: IFSHLP.SYS is a support driver for Microsoft Windows for Workgroups
  30910. SeeAlso: AX=4402h"IFSHLP"
  30911.  
  30912. Format of IFSHLP.SYS entry point record:
  30913. Offset    Size    Description    (Table 0570)
  30914.  00h  4 BYTEs    (call) signature 70h E9h 34h 37h
  30915.         signature must be 34h 37h 70h EFh if called via IOCTL
  30916.  04h    DWORD    (ret) pointer to FAR call entry point (see #0571)
  30917.  
  30918. (Table 0571)
  30919. Call IFSHLP.SYS entry point with:
  30920.     STACK:    WORD    function number (00h-0Ch)
  30921.             00h ???
  30922.             01h set ??? intercept
  30923.             02h remove ??? intercept
  30924.             03h ??? LPT2
  30925.             04h ??? LPT1
  30926.             05h ??? and remove ??? intercept
  30927.             06h set ??? flag
  30928.             07h clear ??? flag
  30929.             08h get ??? flag word
  30930.             09h ???
  30931.             0Ah ???
  30932.             0Bh ???
  30933.             0Ch get ???
  30934. ---if function 00h---
  30935. Return: AX = ??? (0024h seen)
  30936.     DX = resident code segment
  30937. ---if function 01h---
  30938.     STACK:    DWORD    new intercept address
  30939. Return: AX = status
  30940.         0000h successful
  30941.         0001h failed (already set)
  30942.         DX = 0000h
  30943. ---if function 02h---
  30944. Return: AX = status
  30945.         0000h successful
  30946.         0001h failed (not set)
  30947.     DX = 0000h
  30948. ---if function 03h,04h---
  30949.     STACK:    WORD    ???
  30950. Return: AX = 0000h
  30951.     DX = 0000h
  30952. ---if function 05h---
  30953.     ???
  30954. ---if function 06h---
  30955. Return: AX = 0001h and DX = 0000h if already set
  30956.     AX,DX unchanged if successful
  30957. ---if function 07h---
  30958. Return: AX = 0001h and DX = 0000h if not set
  30959.     AX,DX unchanged if successful
  30960. ---if function 08h---
  30961. Return: DX = 0000h
  30962.     AX = flags (bit 0 set/cleared by functions 06h and 07h)
  30963. ---if function 09h---
  30964. Return: AX = status
  30965.         0000h successful
  30966.         0001h failed (already called)
  30967. ---if function 0Ah---
  30968.     STACK:    WORD    ???
  30969.     ???
  30970. ---if function 0Bh---
  30971. Return: AX = status
  30972.         0000h successful
  30973.         0001h failed (not set)
  30974. ---if function 0Ch---
  30975. Return: AX = 0000h
  30976.     ES:BX -> ??? data
  30977. ---if function > 0Ch---
  30978. Return:    AX = 0001h
  30979.     DX = 0000h
  30980. --------D-2140-------------------------------
  30981. INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
  30982.     AH = 40h
  30983.     BX = file handle
  30984.     CX = number of bytes to write
  30985.     DS:DX -> data to write
  30986. Return: CF clear if successful
  30987.         AX = number of bytes actually written
  30988.     CF set on error
  30989.         AX = error code (05h,06h) (see #0811 at AH=59h)
  30990. Notes:    if CX is zero, no data is written, and the file is truncated or
  30991.       extended to the current position
  30992.     data is written beginning at the current file position, and the file
  30993.       position is updated after a successful write
  30994.     the usual cause for AX < CX on return is a full disk
  30995. BUG:    a write of zero bytes will appear to succeed when it actually failed
  30996.       if the write is extending the file and there is not enough disk
  30997.       space for the expanded file (DOS 5.0-6.0); one should therefore check
  30998.       whether the file was in fact extended by seeking to 0 bytes from
  30999.       the end of the file (INT 21/AX=4202h/CX=0/DX=0)
  31000.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  31001. SeeAlso: AH=28h,AH=3Fh,AH=93h,INT 2F/AX=1109h
  31002. --------G-2140-------------------------------
  31003. INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
  31004.     AH = 40h
  31005.     BX = handle for character device "TDHDEBUG"
  31006.     CX = number of bytes to write
  31007.     DS:DX -> hardware breakpoint command (see #0572)
  31008. Return: CF clear if successful
  31009.         AX = number of bytes actually written
  31010.     CF set on error
  31011.         AX = error code (05h,06h) (see #0811 at AH=59h)
  31012. Note:    results are retrieved by reading from the device
  31013. SeeAlso: AH=3Fh"Turbo Debug"
  31014.  
  31015. Format of Turbo Debugger hardware breakpoint commands:
  31016. Offset    Size    Description    (Table 0572)
  31017.  00h    BYTE    command code
  31018.         00h install interrupt vectors
  31019.         01h get hardware capabilities
  31020.         02h enable hardware breakpoints
  31021.         03h disable hardware breakpoints
  31022.         04h set hardware breakpoint
  31023.         05h clear hardware breakpoint
  31024.         06h set I/O base address and reset hardware
  31025.         07h restore interrupt vectors
  31026. ---command code 00h---
  31027.  01h    DWORD    pointer to Turbo Debugger entry point to be jumped to on
  31028.           hardware breakpoint; call with CPU state the same as on
  31029.           the breakpoint except for pushing AX and placing an entry
  31030.           code (FFh if breakout button or breakpoint handle) in AH
  31031. ---command code 04h---
  31032.  01h    BYTE    breakpoint type
  31033.         00h memory read
  31034.         01h memory write
  31035.         02h memory read/write
  31036.         03h I/O read
  31037.         04h I/O write
  31038.         05h I/O read/write
  31039.         06h instruction fetch
  31040.  02h    BYTE    address matching mode (see #0573)
  31041.  03h    DWORD    32-bit linear low address
  31042.  07h    DWORD    32-bit linear high address
  31043.  0Bh    WORD    pass count
  31044.  0Dh    BYTE    data size (01h, 02h, or 04h)
  31045.  0Eh    BYTE    source of matched bus cycle (01h CPU, 02h DMA, 03h either)
  31046.  0Fh    BYTE    data-matching mode (see #0573)
  31047.  10h    DWORD    low data value
  31048.  14h    DWORD    high data value
  31049.  18h    DWORD    data mask specifying which bits of the data are tested
  31050. ---command code 05h---
  31051.  01h    BYTE    handle of breakpoint to clear (breakpoint returned from command
  31052.           04h)
  31053. ---command code 06h---
  31054.  01h    WORD    base address of hardware debugger board
  31055.  
  31056. (Table 0573)
  31057. Values for Turbo Debugger address/data matching mode:
  31058.  00h    match any
  31059.  01h    equal to test value
  31060.  02h    different from test value
  31061.  03h    above test value
  31062.  04h    below test value
  31063.  05h    below or equal to test value
  31064.  06h    above or equal to test value
  31065.  07h    within inclusive range
  31066.  08h    outside specified range
  31067. --------N-2140-------------------------------
  31068. INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
  31069.     AH = 40h
  31070.     BX = handle for character device "$IPCUST"
  31071.     CX = number of bytes to write
  31072.     DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
  31073. Return: CF clear if successful
  31074.         AX = number of bytes actually written
  31075.     CF set on error
  31076.         AX = error code (05h,06h) (see #0811 at AH=59h)
  31077. Notes:    if less than the entire data is read or written, the next read/write
  31078.       continues where the previous one ended; IOCTL calls AX=4402h and
  31079.       AX=4403h both reset the location at which the next operation starts
  31080.       to zero
  31081.     the data pointer is also reset to zero if the previous read or write
  31082.       reached or exceeded the end of the data, when the current function
  31083.       is read and the previous was write, or vice versa
  31084.     v2.1+ uses a new configuration method, but allows the installation
  31085.       of IPCUST.SYS for backward compatibility with other software which
  31086.       must read the PC/TCP configuration
  31087. SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
  31088. --------y-2140-------------------------------
  31089. INT 21 U - Trusted Access - NB.SYS - SET STATE
  31090.     AH = 40h
  31091.     BX = handle for character device "$$NB$$NB"
  31092.     DS:DX -> state record (see #0569)
  31093.     CX ignored
  31094. Return: CF clear if successful
  31095.         AX = number of bytes actually written
  31096.     CF set on error
  31097.         AX = error code (05h,06h) (see #0811 at AH=59h)
  31098. Program: Trusted Access is a security and access-control package by Lassen
  31099.       Software, Inc.; NB.SYS is a device driver to prevent the user from
  31100.       terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
  31101. SeeAlso: AH=3Fh"NB.SYS"
  31102. --------j-214000BX0002-----------------------
  31103. INT 21 - FARTBELL.EXE - INSTALLATION CHECK
  31104.     AX = 4000h
  31105.     BX = 0002h
  31106.     CX = 0000h
  31107.     DS:DX = 0000h:0000h
  31108. Return: CF clear if installed
  31109.         AX = CS of resident code
  31110. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  31111.       noises when programs output a bell
  31112. SeeAlso: AX=4001h
  31113. --------j-214001BX0002-----------------------
  31114. INT 21 - FARTBELL.EXE - FORCE NOISE
  31115.     AX = 4001h
  31116.     BX = 0002h
  31117.     CX = 0000h
  31118.     DS:DX = 0000h:0000h
  31119. Program: FARTBELL is a joke program by Guenther Thiele which makes various
  31120.       noises when programs output a bell
  31121. SeeAlso: AX=4000h
  31122. --------D-2141-------------------------------
  31123. INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
  31124.     AH = 41h
  31125.     DS:DX -> ASCIZ filename (no wildcards, but see below)
  31126.     CL = attribute mask for deletion (server call only, see below)
  31127. Return: CF clear if successful
  31128.         AX destroyed (DOS 3.3) AL seems to be drive of deleted file
  31129.     CF set on error
  31130.         AX = error code (02h,03h,05h) (see #0811 at AH=59h)
  31131. Notes:    (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
  31132.       the filespec must be canonical (as returned by AH=60h), and only
  31133.       files matching the attribute mask in CL are deleted
  31134.     DR-DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h
  31135.     DOS does not erase the file's data; it merely becomes inaccessible
  31136.       because the FAT chain for the file is cleared
  31137.     deleting a file which is currently open may lead to filesystem
  31138.       corruption.  Unless SHARE is loaded, DOS does not close the handles
  31139.       referencing the deleted file, thus allowing writes to a nonexistant
  31140.       file.
  31141.     under DRDOS and DR Multiuser DOS, this function will fail if the file
  31142.       is currently open
  31143.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  31144. BUG:    DR-DOS 3.41 crashes if called via AX=5D00h
  31145. SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AH=71h,AX=F244h
  31146. SeeAlso: INT 2F/AX=1113h
  31147. --------y-214101DXFFFE-----------------------
  31148. INT 21 - SoftLogic Data Guardian - ???
  31149.     AX = 4101h
  31150.     DX = FFFEh
  31151. Return: AX = 0000h if installed
  31152. Note:    resident code sets several internal variables on this call
  31153. SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h
  31154. --------D-2142-------------------------------
  31155. INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
  31156.     AH = 42h
  31157.     AL = origin of move
  31158.         00h start of file
  31159.         01h current file position
  31160.         02h end of file
  31161.     BX = file handle
  31162.     CX:DX = offset from origin of new file position
  31163. Return: CF clear if successful
  31164.         DX:AX = new file position in bytes from start of file
  31165.     CF set on error
  31166.         AX = error code (01h,06h) (see #0811 at AH=59h)
  31167. Notes:    for origins 01h and 02h, the pointer may be positioned before the
  31168.       start of the file; no error is returned in that case, but subsequent
  31169.       attempts at I/O will produce errors
  31170.     if the new position is beyond the current end of file, the file will
  31171.       be extended by the next write (see AH=40h)
  31172. BUG:    using this method to grow a file from zero bytes to a very large size
  31173.       can corrupt the FAT in some versions of DOS; the file should first
  31174.       be grown from zero to one byte and then to the desired large size
  31175. SeeAlso: AH=24h,INT 2F/AX=1228h
  31176. --------v-214203-----------------------------
  31177. INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
  31178.     AX = 4203h
  31179. Return: AX = 1234h if resident
  31180. SeeAlso: AX=3DFFh,AX=4243h
  31181. --------v-214243-----------------------------
  31182. INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
  31183.     AX = 4243h
  31184. Return: AX = 5678h if resident
  31185. SeeAlso: AX=4203h,AX=4B04h
  31186. --------D-214300-----------------------------
  31187. INT 21 - DOS 2+ - GET FILE ATTRIBUTES
  31188.     AX = 4300h
  31189.     DS:DX -> ASCIZ filename
  31190. Return: CF clear if successful
  31191.         CX = file attributes (see #0574)
  31192.         AX = CX (DR-DOS 5.0)
  31193.     CF set on error
  31194.         AX = error code (01h,02h,03h,05h) (see #0811 at AH=59h)
  31195. Notes:    under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
  31196.     under DR-DOS 3.41 and 5.0, attempts to change the subdirectory bit are
  31197.       simply ignored without an error
  31198. BUG:    Windows for Workgroups returns error code 05h (access denied) instead
  31199.       of error code 02h (file not found) when attempting to get the
  31200.       attributes of a nonexistent file.  This causes open() with O_CREAT
  31201.       and fopen() with the "w" mode to fail in Borland C++.
  31202. SeeAlso: AX=4301h,AX=4310h,AH=71h,AH=B6h,INT 2F/AX=110Fh,INT 60/DI=0517h
  31203. --------D-214301-----------------------------
  31204. INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
  31205.     AX = 4301h
  31206.     CX = new file attributes (see #0574)
  31207.     DS:DX -> ASCIZ filename
  31208. Return: CF clear if successful
  31209.         AX destroyed
  31210.     CF set on error
  31211.         AX = error code (01h,02h,03h,05h) (see #0811 at AH=59h)
  31212. Notes:    will not change volume label or directory attribute bits, but will
  31213.       change the other attribute bits of a directory (the directory
  31214.       bit must be cleared to successfully change the other attributes of a
  31215.       directory, but the directory will not be changed to a normal file as
  31216.       a result)
  31217.     MS-DOS 4.01 reportedly closes the file if it is currently open
  31218.     for security reasons, the Novell NetWare execute-only bit can never
  31219.       be cleared; the file must be deleted and recreated
  31220.     under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
  31221.     DOS 5.0 SHARE will close the file if it is currently open in sharing-
  31222.       compatibility mode, otherwise a sharing violation critical error is
  31223.       generated if the file is currently open
  31224. SeeAlso: AX=4300h,AX=4311h,AH=71h,INT 2F/AX=110Eh
  31225.  
  31226. Bitfields for file attributes:
  31227. Bit(s)    Description    (Table 0574)
  31228.  7    shareable (Novell NetWare)
  31229.  6    unused
  31230.  5    archive
  31231.  4    directory
  31232.  3    volume label
  31233.     execute-only (Novell NetWare)
  31234.  2    system
  31235.  1    hidden
  31236.  0    read-only
  31237. --------D-214302-----------------------------
  31238. INT 21 - DOS 7 (Chicago) - GET VOLUME INFORMATION
  31239.     AX = 4302h
  31240.     details not yet available
  31241. SeeAlso: AH=71h,AH=72h
  31242. --------O-214302-----------------------------
  31243. INT 21 - DR-DOS 3.41+ internal - GET ACCESS RIGHTS
  31244.     AX = 4302h
  31245.     DS:DX -> ASCIZ pathname
  31246. Return: CF clear if successful
  31247.         CX = access rights (see #0575)
  31248.         AX = CX (DR-DOS 5.0)
  31249.     CF set on error
  31250.         AX = error code
  31251. Desc:    Determine which operations the calling program may perform on a
  31252.       specified file without being required to provide a password.
  31253. Notes:    this protection scheme has been coordinated on all current Digital
  31254.       Research/Novell operating systems (DR-DOS 3.41+, DRMDOS 5.x, and
  31255.       FlexOS 2+)
  31256.     this function is documented in DR-DOS 6.0 and corresponds to the
  31257.       "Get/Set File Attributes" function, subfunction 2, documented in
  31258.       Concurrent DOS.
  31259.     only FlexOS actually uses the "execution" bits; DR-DOS 3.41+ treats
  31260.       them as "read" bits.
  31261.     DR-DOS 3.41-5.x only use bits 0-3.  Only DR-DOS 6.0 using a
  31262.       DRMDOS 5.x security system allowing for users and groups uses bits
  31263.       4-11.
  31264. SeeAlso: AX=4303h
  31265.  
  31266. Bitfields for DR-DOS file access rights:
  31267. Bit(s)    Description    (Table 0575)
  31268.  0    owner delete requires password
  31269.  1    owner execution requires password (FlexOS)
  31270.  2    owner write requires password
  31271.  3    owner read requires password
  31272.  4    group delete requires password
  31273.  5    group execution requires password (FlexOS)
  31274.  6    group write requires password
  31275.  7    group read requires password
  31276.  8    world delete requires password
  31277.  9    world execution requires password (FlexOS)
  31278.  10    world write requires password
  31279.  11    world read requires password
  31280. --------O-214303-----------------------------
  31281. INT 21 - DR-DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
  31282.     AX = 4303h
  31283.     CX = access rights
  31284.          bits 11-0: access rights (see #0575)
  31285.          bit 15: new password is to be set
  31286.     DS:DX -> ASCIZ pathname
  31287.     [DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
  31288. Return: CF clear if successful
  31289.     CF set on error
  31290.         AX = error code
  31291. Notes:    if the file is already protected, the old password must be added after
  31292.       the pathname, separated by a ";"
  31293.     this function is documented in DR-DOS 6.0 and corresponds to the
  31294.       "Get/Set File Attributes" function, subfunction 3, documented in
  31295.       Concurrent DOS.
  31296. SeeAlso: AH=0Fh,AH=17h,AX=4302h"DR-DOS",AX=4305h,AX=4454h
  31297. --------O-214304-----------------------------
  31298. INT 21 U - DR-DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
  31299.     AX = 4304h
  31300.     DS:DX -> ASCIZ filename
  31301.     ???
  31302. Return: CF clear if successful
  31303.         CX = AX = 0000h if no password assigned to file
  31304.     CF set on error
  31305.         AX = error code (see #0811 at AH=59h)
  31306. Note:    this function is only supported by DR-DOS 5.0 and 6.0 and DRMDOS 5.1
  31307. SeeAlso: AX=4303h,AX=4305h
  31308. --------O-214305-----------------------------
  31309. INT 21 U - DR-DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
  31310.     AX = 4305h
  31311.     DS:DX -> ASCIZ filename
  31312.     ???
  31313. Return: CF clear if successful
  31314.     CF set on error
  31315.         AX = error code (see #0811 at AH=59h)
  31316. Desc:    this function allows the extended attributes, and optionally the
  31317.       encrypted password, of a file to be set.
  31318. Note:    this function is only supported by DR-DOS 5.0 and 6.0 and DRMDOS 5.1
  31319. SeeAlso: AX=4304h,AX=4311h
  31320. --------O-214306-----------------------------
  31321. INT 21 - DR-DOS 6.0 - GET FILE OWNER
  31322.     AX = 4306h
  31323.     DS:DX -> ASCIZ filename
  31324. Return: CF clear if successful
  31325.         AX = CX = value set with AX=4307h
  31326.     CF set on error
  31327.         AX = error code (see #0811 at AH=59h)
  31328. SeeAlso: AX=4307h
  31329. --------O-214307-----------------------------
  31330. INT 21 - DR-DOS 6.0 - SET FILE OWNER
  31331.     AX = 4307h
  31332.     CX = ??? (owner identification number?)
  31333.     DS:DX -> ASCIZ filename
  31334. Return: CF clear if successful
  31335.     CF set on error
  31336.         AX = error code (see #0811 at AH=59h)
  31337. SeeAlso: AX=4306h
  31338. --------N-214310-----------------------------
  31339. INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
  31340.     AX = 4310h
  31341.     DS:DX -> ASCIZ filename
  31342. Return: CF clear if successful
  31343.         CH = attributes (see #0576)
  31344.     CF set on error
  31345.         AX = error code (01h,02h,03h,05h) (see #0811 at AH=59h)
  31346. Note:    the filename may be a directory but must be on a VINES file service
  31347. SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh
  31348. --------N-214311-----------------------------
  31349. INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
  31350.     AX = 4311h
  31351.     CH = new attributes (see #0576)
  31352.     DS:DX -> ASCIZ filename
  31353. Return: CF clear if successful
  31354.     CF set on error
  31355.         AX = error code (01h,02h,03h,05h) (see #0811 at AH=59h)
  31356. Note:    the filename may be a directory but must be on a VINES file service
  31357. SeeAlso: AX=4301h,AX=4305h,AX=4310h,INT 2F/AX=110Eh
  31358.  
  31359. Bitfields for VINES extended file attributes:
  31360. Bit(s)    Description    (Table 0576)
  31361.  7    unused
  31362.  6    shareable
  31363.  5    execute-only
  31364.  4-0    unused
  31365. --------O-214380-----------------------------
  31366. INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
  31367.     AX = 4380h
  31368.     ???
  31369. Return: ???
  31370. SeeAlso: AH=41h,AX=4381h
  31371. --------O-214381-----------------------------
  31372. INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
  31373.     AX = 4381h
  31374.     ???
  31375. Return: ???
  31376. SeeAlso: AH=41h,AX=4380h
  31377. --------D-214400-----------------------------
  31378. INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
  31379.     AX = 4400h
  31380.     BX = handle
  31381. Return: CF clear if successful
  31382.         DX = device information word (see #0577)
  31383.         AX destroyed
  31384.     CF set on error
  31385.         AX = error code (01h,05h,06h) (see #0811 at AH=59h)
  31386. Notes:    value in DH corresponds to high byte of device driver's attribute word
  31387.       if handle refers to a character device
  31388.     Novell NetWare reportedly does not return a drive number in bits 5-0
  31389.       for a disk file
  31390. SeeAlso: AX=4401h,INT 2F/AX=122Bh
  31391.  
  31392. Bitfields for device information word:
  31393. Bit(s)    Description    (Table 0577)
  31394.  character device
  31395.   14    device driver can process IOCTL requests (see AX=4402h)
  31396.   13    output until busy supported
  31397.   11    driver supports OPEN/CLOSE calls
  31398.    7    set (indicates device)
  31399.    6    EOF on input
  31400.    5    raw (binary) mode
  31401.    4    device is special (uses INT 29)
  31402.    3    clock device
  31403.    2    NUL device
  31404.    1    standard output
  31405.    0    standard input
  31406.  disk file
  31407.   15    file is remote (DOS 3+)
  31408.   14    don't set file date/time on closing (DOS 3+)
  31409.   11    media not removable
  31410.    8    (DOS 4 only) generate INT 24 if no disk space on write or read past
  31411.       end of file
  31412.    7    clear (indicates file)
  31413.    6    file has not been written
  31414.   5-0    drive number (0 = A:)
  31415. --------D-214401-----------------------------
  31416. INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
  31417.     AX = 4401h
  31418.     BX = handle (must refer to character device)
  31419.     DX = device information word (see #0577)
  31420.         (DH must be zero)
  31421. Return: CF clear if successful
  31422.     CF set on error
  31423.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  31424. SeeAlso: AX=4400h,INT 2F/AX=122Bh
  31425. --------D-214402-----------------------------
  31426. INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
  31427.     AX = 4402h
  31428.     BX = file handle referencing character device
  31429.     CX = number of bytes to read
  31430.     DS:DX -> buffer
  31431. Return: CF clear if successful
  31432.         AX = number of bytes actually read
  31433.     CF set on error
  31434.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  31435. Note:    format of data is driver-specific (see below for some specific cases)
  31436. SeeAlso: AX=4400h,AX=4403h,AX=4404h,INT 2F/AX=122Bh
  31437. --------N-214402-----------------------------
  31438. INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
  31439.     AX = 4402h
  31440.     BX = file handle for device "PROTMAN$"
  31441.     CX = 000Eh (size of request block)
  31442.     DS:DX -> request block (see #0578,#0579,#0580,#0581,#0582,#0586,#0587)
  31443. Return: CF clear if successful
  31444.         AX = number of bytes actually read
  31445.     CF set on error
  31446.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  31447. SeeAlso: AX=4402h"FTPSOFT"
  31448.  
  31449. Format of NDIS request block for GetProtocolManagerInfo:
  31450. Offset    Size    Description    (Table 0578)
  31451.  00h    WORD    01h
  31452.  02h    WORD    returned status (see #0588)
  31453.  04h    DWORD    returned pointer to structure representing parsed user config
  31454.  08h    DWORD    unused
  31455.  0Ch    WORD    returned BCD version of NDIS on which Protocol Manager is based
  31456. SeeAlso: #0579,#0580,#0581,#0582,#0583,#0584,#0585,#0586,#0587
  31457.  
  31458. Format of NDIS request block for RegisterModule:
  31459. Offset    Size    Description    (Table 0579)
  31460.  00h    WORD    02h
  31461.  02h    WORD    returned status (see #0588)
  31462.  04h    DWORD    pointer to module's common characteristics table (see #0589)
  31463.  08h    DWORD    pointer to list of modules to which the module is to be bound
  31464.  0Ch    WORD    unused
  31465. SeeAlso: #0578,#0580,#0581,#0582,#0583,#0584,#0585,#0586,#0587
  31466.  
  31467. Format of NDIS request block for BindAndStart:
  31468. Offset    Size    Description    (Table 0580)
  31469.  00h    WORD    03h
  31470.  02h    WORD    returned status (see #0588)
  31471.  04h    DWORD    caller's virtual address in FailingModules structure
  31472.  08h    DWORD    unused
  31473.  0Ch    WORD    unused
  31474. SeeAlso: #0578,#0579,#0581,#0582,#0583,#0584,#0585,#0586,#0587
  31475.  
  31476. Format of NDIS request block for GetProtocolManagerLinkage:
  31477. Offset    Size    Description    (Table 0581)
  31478.  00h    WORD    04h
  31479.  02h    WORD    returned status (see #0588)
  31480.  04h    DWORD    returned dispatch point
  31481.  08h    DWORD    unused
  31482.  0Ch    WORD    returned protocol manager DS
  31483. Note:    the dispatch point may be called as follows instead of using this IOCTL
  31484.     STACK: WORD  protocol manager DS
  31485.            DWORD pointer to request block
  31486.     Return: AX = returned status
  31487.         STACK popped
  31488. SeeAlso: #0578,#0579,#0580,#0582,#0583,#0584,#0585,#0586,#0587
  31489.  
  31490. Format of NDIS request block for GetProtocolIniPath:
  31491. Offset    Size    Description    (Table 0582)
  31492.  00h    WORD    05h
  31493.  02h    WORD    returned status (see #0588)
  31494.  04h    DWORD    pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
  31495.  08h    DWORD    unused
  31496.  0Ch    WORD    buffer length
  31497. SeeAlso: #0578,#0579,#0580,#0581,#0583,#0584,#0585,#0586,#0587
  31498.  
  31499. Format of NDIS request block for RegisterProtocolManagerInfo:
  31500. Offset    Size    Description    (Table 0583)
  31501.  00h    WORD    06h
  31502.  02h    WORD    returned status (see #0588)
  31503.  04h    DWORD    pointer to structure containing parsed user config file
  31504.  08h    DWORD    unused
  31505.  0Ch    WORD    length of structure
  31506. SeeAlso: #0578,#0579,#0580,#0581,#0582,#0584,#0585,#0586,#0587
  31507.  
  31508. Format of NDIS request block for InitAndRegister:
  31509. Offset    Size    Description    (Table 0584)
  31510.  00h    WORD    07h
  31511.  02h    WORD    returned status (see #0588)
  31512.  04h    DWORD    unused
  31513.  08h    DWORD    poitner to ASCIZ name of the module to be prebind initialized
  31514.  0Ch    WORD    unused
  31515. SeeAlso: #0578,#0579,#0580,#0581,#0582,#0583,#0585,#0586,#0587
  31516.  
  31517. Format of NDIS request block for UnbindAndStop:
  31518. Offset    Size    Description    (Table 0585)
  31519.  00h    WORD    08h
  31520.  02h    WORD    returned status (see #0588)
  31521.  04h    DWORD    failing modules as for BindAndStart
  31522.  08h    DWORD    if not 0000h:0000h, pointer to ASCIZ name of module to unbind
  31523.         if 0000h:0000h, terminate a set of previously dynamically
  31524.           bound protocol modules
  31525.  0Ch    WORD    unused
  31526. SeeAlso: #0578,#0579,#0580,#0581,#0582,#0583,#0584,#0586,#0587
  31527.  
  31528. Format of NDIS request block for BindStatus:
  31529. Offset    Size    Description    (Table 0586)
  31530.  00h    WORD    09h
  31531.  02h    WORD    returned status (see #0588)
  31532.  04h    DWORD    must be 0000h:0000h
  31533.         on return, points to root tree
  31534.  08h    DWORD    0000h:0000h
  31535.  0Ch    WORD    unused under DOS
  31536. SeeAlso: #0578,#0579,#0580,#0581,#0582,#0583,#0584,#0585,#0587
  31537.  
  31538. Format of NDIS request block for RegisterStatus:
  31539. Offset    Size    Description    (Table 0587)
  31540.  00h    WORD    0Ah
  31541.  02h    WORD    returned status (0000h, 0008h, 002Ch) (see #0588)
  31542.  04h    DWORD    0000h:0000h
  31543.  08h    DWORD    pointer to 16-byte ASCIZ module name
  31544.  0Ch    WORD    0000h
  31545. Note:    not supported by the 10NET v5.0 PROTMAN$ driver
  31546. SeeAlso: #0578,#0579,#0580,#0581,#0582,#0583,#0584,#0585,#0586
  31547.  
  31548. (Table 0588)
  31549. Values for NDIS status code:
  31550.  0000h    success
  31551.  0001h    wait for release--protocol has retained control of the data buffer
  31552.  0002h    request queued
  31553.  0003h    frame not recognized
  31554.  0004h    frame rejected
  31555.  0005h    frame should be forwarded
  31556.  0006h    out of resource
  31557.  0007h    invalid parameter
  31558.  0008h    invalid function
  31559.  0009h    not supported
  31560.  000Ah    hardware error
  31561.  000Bh    transmit error
  31562.  000Ch    unrecognized destination
  31563.  000Dh    buffer too small
  31564.  0020h    already started
  31565.  0021h    binding incomplete
  31566.  0022h    driver not initialized
  31567.  0023h    hardware not found
  31568.  0024h    hardware failure
  31569.  0025h    configuration failure
  31570.  0026h    interrupt conflict
  31571.  0027h    MAC incompatible
  31572.  0028h    initialization failed
  31573.  0029h    no binding
  31574.  002Ah    network may be disconnected
  31575.  002Bh    incompatible OS version
  31576.  002Ch    already registered
  31577.  002Dh    path not found
  31578.  002Eh    insufficient memory
  31579.  002Fh    info not found
  31580.  00FFh    general failure
  31581.  F000h-FFFFh reserved for vendor-specific codes, treated as general failure
  31582.  
  31583. Format of NDIS common characteristics table:
  31584. Offset    Size    Description    (Table 0589)
  31585.  00h    WORD    size of table in bytes
  31586.  02h    BYTE    NDIS major version
  31587.  03h    BYTE    NDIS minor version
  31588.  04h    WORD    reserved
  31589.  06h    BYTE    module major version
  31590.  07h    BYTE    module minor version
  31591.  08h    DWORD    module function flag bits
  31592.         bit 0: binding at upper boundary supported
  31593.         bit 1: binding at lower boundary supported
  31594.         bit 2: dynamically bound
  31595.         bits 3-31 reserved, must be 0
  31596.  0Ch 16 BYTEs    ASCIZ module name
  31597.  1Ch    BYTE    upper boundary protocol level (see #0590)
  31598.  1Dh    BYTE    upper boundary interface type
  31599.         for MACs: 1 = MAC
  31600.         for data links and transports: to be defined
  31601.         for session: 1 = NCB
  31602.         any level: 0 = private (ISV-defined)
  31603.  1Eh    BYTE    lower boundary protocol level (see #0590)
  31604.  1Fh    BYTE    lower boundary interface type
  31605.         same as offset 1Dh
  31606.  20h    WORD    module ID filled in by protocol manager
  31607.  22h    WORD    module DS
  31608.  24h    DWORD    system request entry point
  31609.  28h    DWORD    pointer to service-specific characteristics (see #0592,#0594)
  31610.         0000h:0000h if none
  31611.  2Ch    DWORD    pointer to service-specific status, or 0000h:0000h if none
  31612.  30h    DWORD    pointer to upper dispatch table (see #0591)
  31613.         0000h:0000h if none
  31614.  34h    DWORD    pointer to lower dispatch table (see #0591)
  31615.         0000h:0000h if none
  31616.  38h  2 DWORDs    reserved, must be 0
  31617. Note:    for compatibility with NDIS 1.x.x, a major version of 00h is
  31618.       interpreted as 01h
  31619.  
  31620. (Table 0590)
  31621. Values for NDIS boundary protocol level:
  31622.  00h    physical
  31623.  01h    Media Access Control
  31624.  02h    Data link
  31625.  03h    network
  31626.  04h    transport
  31627.  05h    session
  31628.  FFh    not specified
  31629.  
  31630. Format of NDIS dispatch table:
  31631. Offset    Size    Description    (Table 0591)
  31632.  00h    DWORD    -> common characteristics table (see #0589)
  31633.  04h  4 BYTEs    ???
  31634.  08h    DWORD    -> ??? function (called with 12 bytes of stack arguments)
  31635.  0Ch    DWORD    -> ??? function (called with 10 bytes of stack arguments)
  31636.  10h    DWORD    -> ??? function (called with 16 bytes of stack arguments)
  31637.  14h    DWORD    -> ??? function (called with 4 bytes of stack arguments)
  31638.  18h    DWORD    -> ??? function (called with 18 bytes of stack arguments)
  31639.  1Ch    DWORD    -> ??? function (called with 12 bytes of stack arguments)
  31640.  
  31641. Format of MAC Service-Specific Characteristics Table:
  31642. Offset    Size    Description    (Table 0592)
  31643.  00h    WORD    length of table in bytes
  31644.  02h 16 BYTEs    ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
  31645.           "DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
  31646.           "HDLC", or "ISDN"
  31647.  12h    WORD    length of station addresses in bytes
  31648.  14h 16 BYTEs    permanent station address
  31649.  24h 16 BYTEs    current station address
  31650.  34h    DWORD    current functional adapter address (00000000h if none)
  31651.  38h    DWORD    pointer to multicast address list
  31652.  3Ch    DWORD    link speed in bits/sec
  31653.  40h    DWORD    service flags (see #0593)
  31654.  44h    WORD    maximum frame size which may be both sent and received
  31655.  46h    DWORD    total transmit buffer capacity in bytes
  31656.  4Ah    WORD    transmit buffer allocation block size in bytes
  31657.  4Ch    DWORD    total receive buffer capacity in bytes
  31658.  50h    WORD    receive buffer allocation block size in bytes
  31659.  52h  3 BYTEs    IEEE vendor code
  31660.  55h    BYTE    vendor adapter code
  31661.  56h    DWORD    pointer to ASCIZ vendor adapter description
  31662.  5Ah    WORD    IRQ used by adapter
  31663.  5Ch    WORD    transmit queue depth
  31664.  5Eh    WORD    maximum supported number of data blocks in buffer descriptors
  31665.  60h  N BYTEs    vendor-specific info
  31666.  
  31667. Bitfields for service flags:
  31668. Bit(s)    Description    (Table 0593)
  31669.  0    supports broadcast
  31670.  1    supports multicast
  31671.  2    supports functional/group addressing
  31672.  3    supports promiscuous mode
  31673.  4    station address software settable
  31674.  5    statistics always current
  31675.  6    supports InitiateDiagnostics
  31676.  7    supports loopback
  31677.  8    MAC does primarily ReceiveChain indications instead of ReceiveLookahead
  31678.     indications
  31679.  9    supports IBM source routing
  31680.  10    supports MAC reset
  31681.  11    supports Open/Close adapter
  31682.  12    supports interrupt request
  31683.  13    supports source routing bridge
  31684.  14    supports GDT virtual addresses (OS/2 version)
  31685.  15    multiple TransferDatas allowed durign a single indication
  31686.  16    MAC normally sets FrameSize = 0 in ReceiveLookahead
  31687.  17-31    reserved, must be 0
  31688.  
  31689. Format of NetBIOS Service-Specific Characteristics Table:
  31690. Offset    Size    Description    (Table 0594)
  31691.  00h    WORD    length of table in bytes
  31692.  02h 16 BYTEs    ASCIZ type name of NetBIOS module
  31693.  12h    WORD    NetBIOS module code
  31694.  14h  N BYTEs    vendor-specific info
  31695.  
  31696. Format of MAC Service-Specific Status Table:
  31697. Offset    Size    Description    (Table 0595)
  31698.  00h    WORD    length of table in bytes
  31699.  02h    DWORD    seconds since 0:00 1/1/70 when diagnostics last run
  31700.         (FFFFFFFFh = never)
  31701.  06h    DWORD    MAC status bits (see #0596)
  31702.  0Ah    WORD    current packet filter flags (see #0597)
  31703.  0Ch    DWORD    pointer to media-specific status table or 0000h:0000h
  31704.  10h    DWORD    seconds past 0:00 1/1/70 of last ClearStatistics
  31705.  14h    DWORD    total frames received (FFFFFFFFh = not counted)
  31706.  18h    DWORD    frames with CRC error (FFFFFFFFh = not counted)
  31707.  1Ch    DWORD    total bytes received (FFFFFFFFh = not counted)
  31708.  20h    DWORD    frames discarded--no buffer space (FFFFFFFFh = not counted)
  31709.  24h    DWORD    multicast frames received (FFFFFFFFh = not counted)
  31710.  28h    DWORD    broadcast frames received (FFFFFFFFh = not counted)
  31711.  2Ch    DWORD    frames with errors (FFFFFFFFh = not counted)
  31712.  30h    DWORD    overly large frames (FFFFFFFFh = not counted)
  31713.  34h    DWORD    frames less than minimum size (FFFFFFFFh = not counted)
  31714.  38h    DWORD    multicast bytes received (FFFFFFFFh = not counted)
  31715.  3Ch    DWORD    broadcast bytes received (FFFFFFFFh = not counted)
  31716.  40h    DWORD    frames discarded--hardware error (FFFFFFFFh = not counted)
  31717.  44h    DWORD    total frames transmitted (FFFFFFFFh = not counted)
  31718.  48h    DWORD    total bytes transmitted (FFFFFFFFh = not counted)
  31719.  4Ch    DWORD    multicast frames transmitted (FFFFFFFFh = not counted)
  31720.  50h    DWORD    broadcast frames transmitted (FFFFFFFFh = not counted)
  31721.  54h    DWORD    broadcast bytes transmitted (FFFFFFFFh = not counted)
  31722.  58h    DWORD    multicast bytes transmitted (FFFFFFFFh = not counted)
  31723.  5Ch    DWORD    frames not transmitted--timeout (FFFFFFFFh = not counted)
  31724.  60h    DWORD    frames not transmitted--hardware error (FFFFFFFFh = not countd)
  31725.  64h  N BYTEs    vendor-specific info
  31726.  
  31727. Bitfields for MAC status bits:
  31728. Bit(s)    Description    (Table 0596)
  31729.  0-2    operational status
  31730.     000 hardware not installed
  31731.     001 hardware failed startup diagnostics
  31732.     010 hardware configuration problem
  31733.     011 hardware fault
  31734.     100 operating marginally due to soft faults
  31735.     101 reserved
  31736.     110 reserved
  31737.     111 hardware fully operational
  31738.  3    MAC bound
  31739.  4    MAC open
  31740.  5    diagnostics in progress
  31741.  6-31    reserved
  31742.  
  31743. Bitfields for packet filter flags:
  31744. Bit(s)    Description    (Table 0597)
  31745.  0    directed/multicast or group/functional
  31746.  1    broadcast
  31747.  2    promiscuous
  31748.  3    all source routing
  31749.  4-15    reserved, must be zero
  31750. --------I-214402-----------------------------
  31751. INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
  31752.     AX = 4402h
  31753.     BX = handle for character device "GDMS"
  31754.     CX = number of bytes to read (>= 4)
  31755.     DS:DX -> buffer (see #0598)
  31756. Return: CF set on error
  31757.         AX = error code (see #0811 at AH=59h)
  31758.     CF clear if successful
  31759.         AX = number of bytes read
  31760.  
  31761. Format of System 36/38 emulator returned data:
  31762. Offset    Size    Description    (Table 0598)
  31763.  00h  4 BYTEs    ???
  31764.  04h    DWORD    pointer to ???
  31765.  08h  4 BYTEs    ???
  31766. --------m-214402-----------------------------
  31767. INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
  31768.     AX = 4402h
  31769.     BX = handle for device "LA$TBYTE"
  31770.     CX = 0004h
  31771.     DS:DX -> DWORD to hold address of 39-byte table of ???
  31772. Return: CF set on error
  31773.         AX = error code (see #0811 at AH=59h)
  31774.     CF clear if successful
  31775.         AX = number of bytes read
  31776. Program: LASTBYTE.SYS is part of the shareware "The Last Byte" memory
  31777.       management package by Key Software Products
  31778. SeeAlso: AX=4402h"HIGHUMM"
  31779. --------m-214402-----------------------------
  31780. INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
  31781.     AX = 4402h
  31782.     BX = handle for device "KSP$UMM"
  31783.     CX = 0004h
  31784.     DS:DX -> DWORD to hold entry point
  31785. Return: CF set on error
  31786.         AX = error code (see #0811 at AH=59h)
  31787.     CF clear if successful
  31788.         AX = number of bytes read
  31789. Program: HIGHUMM.SYS is part of the shareware "The Last Byte" memory management
  31790.       package by Key Software Products
  31791. SeeAlso: AX=4402h"LASTBYTE"
  31792.  
  31793. (Table 0599)
  31794. Call HIGHUMM.SYS entry point with:
  31795.     AH = 00h allocate UMB (same as XMS function 10h) (see INT 2F/AX=4310h)
  31796.         DX = size in paragraphs
  31797.         Return: BX = segment number (if successful)
  31798.             DX = size of requested block/size of largest block
  31799.     AH = 01h deallocate UMB (same as XMS func 11h) (see INT 2F/AX=4310h)
  31800.         DX = segment number of UMB
  31801.     AH = 02h request a bank-switched memory block
  31802.         DX = size in paragraphs
  31803.         Return: BX = segment number (if successful)
  31804.             DX = size of requested block/size of largest block
  31805.     AH = 03h release a bank-switched memory block
  31806.         DX = segment number
  31807.     AH = 04h transfer data to/from high memory
  31808.         DS:SI -> source
  31809.         ES:DI -> destination
  31810.         CX = length in bytes
  31811.         Note: enables bank-switched memory, does the copy, then disables
  31812.         bank-switched memory
  31813.     AH = 05h get a word from bank-switched memory
  31814.         ES:DI -> word to read
  31815.         Return: DX = word
  31816.     AH = 06h put a word to bank-switched memory
  31817.         ES:DI -> word to write
  31818.         DX = word
  31819.     AH = 07h put a byte to bank-switched memory
  31820.         ES:DI -> byte to write
  31821.         DL = byte
  31822.     AH = 08h enable bank-switched memory
  31823.         DS:SI -> 6-byte status save area
  31824.     AH = 09h disable bank-switched memory
  31825.         DS:SI -> 6-byte save area from enable call (AH=08h)
  31826.     AH = 0Ah assign name to UMB or high bank-switched block
  31827.         DX = segment number
  31828.         DS:SI -> 8-byte blank-padded name
  31829.     AH = 0Bh locate UMB block by name
  31830.         DS:SI -> 8-byte blank-padded name
  31831.         Return: BX = segment number (if successful)
  31832.             DX = size of block
  31833.     AH = 0Ch locate bank-switched block by name
  31834.         DS:SI -> 8-byte blank-padded name
  31835.         Return: BX = segment number (if successful)
  31836.             DX = size of block
  31837. Return: AX = status code
  31838.         0001h successful
  31839.         0000h failed
  31840.         BL = error code
  31841.             80h not implemented
  31842.             B0h insufficient memory, smaller block available
  31843.             B1h insufficient memory, no blocks available
  31844.             B2h invalid segment number
  31845. Note:    only functions 00h and 01h are always available; the remaining
  31846.       functions are only enabled if the proper commandline switch is given
  31847. --------c-214402-----------------------------
  31848. INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
  31849.     AX = 4402h
  31850.     BX = file handle for device "SMARTAAR"
  31851.     CX = number of bytes to read (min 28h)
  31852.     DS:DX -> buffer for status record (see #0600)
  31853. Return: CF clear if successful
  31854.         AX = number of bytes actually read
  31855.     CF set on error
  31856.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  31857. SeeAlso: AX=4403h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
  31858.  
  31859. Format of SMARTDRV status record:
  31860. Offset    Size    Description    (Table 0600)
  31861.  00h    BYTE    write-through flag (always 01h)
  31862.  01h    BYTE    writes should be buffered (always 00h)
  31863.  02h    BYTE    cache enabled if 01h
  31864.  03h    BYTE    driver type (01h extended memory, 02h expanded)
  31865.  04h    WORD    clock ticks between cache flushes (currently unused)
  31866.  06h    BYTE    cache contains locked tracks if nonzero
  31867.  07h    BYTE    flush cache on INT 19 reboot if nonzero
  31868.  08h    BYTE    cache full track writes if nonzero
  31869.  09h    BYTE    double buffering (for VDS) state (00h off, 01h on, 02h dynamic)
  31870.  0Ah    DWORD    original INT 13 vector
  31871.  0Eh    BYTE    minor version number
  31872.  0Fh    BYTE    major version number
  31873.  10h    WORD    unused
  31874.  12h    WORD    sectors read            \
  31875.  14h    WORD    sectors already in cache     > may be scaled rather than
  31876.  16h    WORD    sectors already in track buffer /  absolute counts
  31877.  18h    BYTE    cache hit rate in percent
  31878.  19h    BYTE    track buffer hit rate in percent
  31879.  1Ah    WORD    total tracks in cache
  31880.  1Ch    WORD    number of tracks in use
  31881.  1Eh    WORD    number of locked tracks
  31882.  20h    WORD    number of dirty tracks
  31883.  22h    WORD    current cache size in 16K pages
  31884.  24h    WORD    original (maximum) cache size in 16K pages
  31885.  26h    WORD    minimum cache size in 16K pages
  31886.  28h    DWORD    pointer to byte flag to increment for locking cache contents
  31887. --------d-214402-----------------------------
  31888. INT 21 - CD-ROM device driver - IOCTL INPUT
  31889.     AX = 4402h
  31890.     BX = file handle referencing character device for CD-ROM driver
  31891.     CX = number of bytes to read
  31892.     DS:DX -> control block (see #0602)
  31893. Return: CF clear if successful
  31894.         AX = number of bytes actually read
  31895.     CF set on error
  31896.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  31897. Note:    the data returned depends on the first byte of the control block; the
  31898.       remainder of the control block is filled by the driver
  31899. SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h
  31900.  
  31901. (Table 0601)
  31902. Values for CD-ROM data being requested:
  31903.  00h    device driver header address
  31904.  01h    drive head location
  31905.  02h    reserved
  31906.  03h    error statistics
  31907.  04h    audio channel info
  31908.  05h    raw drive bytes (uninterpreted and device-specific)
  31909.  06h    device status
  31910.  07h    sector size
  31911.  08h    volume size
  31912.  09h    media change status
  31913.  0Ah    audio disk info
  31914.  0Bh    audio track info
  31915.  0Ch    audio Q-Channel info
  31916.  0Dh    audio sub-channel info
  31917.  0Eh    UPC code
  31918.  0Fh    audio status info
  31919.  
  31920. Format of CD-ROM control block:
  31921. Offset    Size    Description    (Table 0602)
  31922.  00h    BYTE    data being requested (see #0601)
  31923. ---function 00h---
  31924.  01h    DWORD    device driver header address (see also AH=52h)
  31925. ---function 01h---
  31926.  01h    BYTE    addressing mode
  31927.         00h HSG
  31928.         01h Red Book
  31929.  02h    DWORD    current location of drive's head
  31930.         logical sector number in HSG mode
  31931.         frame/second/minute/unused in Red Book mode
  31932.         (HSG sector = minute * 4500 + second * 75 + frame - 150)
  31933. ---function 03h---
  31934.  01h  N BYTEs    undefined as of 5 Aug 88 specification
  31935. ---function 04h---
  31936.  01h    BYTE    input channel (0-3) for output channel 0
  31937.  02h    BYTE    volume for output channel 0
  31938.  03h    BYTE    input channel (0-3) for output channel 1
  31939.  04h    BYTE    volume for output channel 1
  31940.  05h    BYTE    input channel (0-3) for output channel 2
  31941.  06h    BYTE    volume for output channel 2
  31942.  07h    BYTE    input channel (0-3) for output channel 3
  31943.  08h    BYTE    volume for output channel 3
  31944. Notes:    output channels 0 and 1 are left and right, 2 and 3 are left prime and
  31945.       right prime; a volume of 00h is off
  31946.     the default setting is for each input channel to be assigned to the
  31947.       same-numbered output channel at full (FFh) volume
  31948. ---function 05h---
  31949.  01h    BYTE    number of bytes read
  31950.  02h 128 BYTEs    buffer for drive bytes
  31951. ---function 06h---
  31952.  01h    DWORD    device parameters (see #0603)
  31953. ---function 07h---
  31954.  01h    BYTE    read mode
  31955.         00h cooked
  31956.         01h raw
  31957.  02h    WORD    sector size in bytes
  31958. ---function 08h---
  31959.  01h    DWORD    volume size in sectors
  31960. ---function 09h---
  31961.  01h    BYTE    media change status
  31962.         00h don't know
  31963.         01h media unchanged
  31964.         FFh media has been changed
  31965. ---function 0Ah---
  31966.  01h    BYTE    lowest audio track number
  31967.  02h    BYTE    highest audio track number
  31968.  03h    DWORD    start address of lead-out track (Red Book format)
  31969. --function 0Bh---
  31970.  01h    BYTE    track number (set by caller)
  31971.  02h    DWORD    starting point of track (Red Book format)
  31972.  06h    BYTE    track control info
  31973.         bits 15,14,12: track type (notice: bits not contiguous!)
  31974.             000 two audio channels, no pre-emphasis
  31975.             001 two audio channels with pre-emphasis
  31976.             010 data track
  31977.             100 four audio channels, no pre-emphasis
  31978.             101 four audio channels with pre-emphasis
  31979.             other reserved
  31980.         bit 13: digital copy permitted
  31981. ---function 0Ch---
  31982.  01h    BYTE    CONTROL and ADR byte (as received from drive)
  31983.  02h    BYTE    track number
  31984.  03h    BYTE    point or index
  31985.  04h    BYTE    minute    \
  31986.  05h    BYTE    second     > running time within track
  31987.  06h    BYTE    frame    /
  31988.  07h    BYTE    zero
  31989.  08h    BYTE    "AMIN" or "PMIN"     \
  31990.  09h    BYTE    "ASEC" or "PSEC"      > running time on disk
  31991.  0Ah    BYTE    "AFRAME" or "PFRAME" /
  31992. ---function 0Dh---
  31993.  01h    DWORD    starting frame address (Red Book format)
  31994.  05h    DWORD    transfer address
  31995.  09h    DWORD    number of sectors to read
  31996. Note:    copies 96 bytes of sub-channel info per sector into buffer
  31997. ---function 0Eh---
  31998.  01h    BYTE    CONTROL and ADR byte
  31999.  02h  7 BYTEs    UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
  32000.  09h    BYTE    zero
  32001.  0Ah    BYTE    "AFRAME"
  32002. ---function 0Fh---
  32003.  ??? documentation not yet available
  32004.  01h    WORD    pause status (0000h not paused, 0001h paused)
  32005.  03h    DWORD    audio play start address
  32006.  07h    DWORD    ??? audio play length or end address
  32007.  
  32008. Bitfields for CD-ROM device parameters:
  32009. Bit(s)    Description    (Table 0603)
  32010.  0    door open
  32011.  1    door unlocked
  32012.  2    supports raw reading in addition to cooked
  32013.  3    writable
  32014.  4    can play audio/video tracks
  32015.  5    supports interleaving
  32016.  6    reserved
  32017.  7    supports prefetch requests
  32018.  8    supports audio channel control
  32019.  9    supports Red Book addressing in addition to HSG
  32020.  10    audio is playing
  32021.  11    no disk in drive
  32022.  12    supports R-W subchannels
  32023. --------m-214402-----------------------------
  32024. INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
  32025.     AX = 4402h
  32026.     BX = file handle for device "QEMM386$"
  32027.     CX = 0004h
  32028.     DS:DX -> DWORD buffer for API entry point
  32029. Return: CF clear if successful
  32030.         buffer filled (see INT 67/AH=3Fh for entry point parameters)
  32031.     CF set on error
  32032.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32033. Note:    Quarterdeck recently (June 1993) documented this function, but the
  32034.       documentation incorrectly states that it is only available for
  32035.       QEMM 6+
  32036. SeeAlso: AX=4402h"HOOKROM",INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh
  32037. --------Q-214402-----------------------------
  32038. INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
  32039.     AX = 4402h
  32040.     BX = file handle for device "HOOKROM$"
  32041.     CX = 0004h
  32042.     DS:DX -> DWORD buffer for address of hooked vector table (see #0604)
  32043. Return: CF clear if successful
  32044.         DS:DX buffer filled
  32045.     CF set on error
  32046.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32047. SeeAlso: AX=4402h/SF=01h
  32048.  
  32049. Format of HOOKROM.SYS hooked vector table entry:
  32050. Offset    Size    Description    (Table 0604)
  32051.  00h  5 BYTEs    FAR jump to actual interrupt handler
  32052.         (end of table if first byte is not EAh)
  32053.  05h    BYTE    interrupt vector number
  32054. --------d-214402-----------------------------
  32055. INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
  32056.     AX = 4402h
  32057.     BX = file handle for device "SCSIMGR$"
  32058.     CX = 0004h or 0005h (see notes)
  32059.     DS:DX -> buffer for result (see #0605), set to zeros before call
  32060. Return: CF clear if successful
  32061.         AX = 0004h or 0005h (see notes)
  32062.     CF set on error
  32063.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32064. Note:    the variant of the call requesting five bytes is an UNDOCUMENTED
  32065.       extension supported by Adaptec's ASPI2DOS.SYS, ASPI4DOS.SYS, and
  32066.       ASPI7DOS.SYS; if made of a host manager which does not support the
  32067.       variant, only four bytes will be returned.  If the variant is
  32068.       supported, Adaptec's WINASPI.DLL assumes that the host manager is
  32069.       an "advanced" one which operates in either real or protected mode
  32070.       (and thus does not require a DPMI INT 31/AX=0301h call to be invoked
  32071.       from protected mode).     Support of the five-byte variant also appears
  32072.       to imply that an advanced ASPI host manager uses no temporary storage
  32073.       space except the SRB and the stack, and that it is fully reentrant.
  32074.     if called with a standard request for four bytes, even Adaptec's
  32075.       advanced drivers return only the requested four bytes containing the
  32076.       ASPI entry point address
  32077.     the function address is called with the address of a SCSI Request
  32078.       Block on the stack and the caller must clean up the stack
  32079. SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"
  32080.  
  32081. Format of ASPI IOCTL result:
  32082. Offset    Size    Description    (Table 0605)
  32083.  00h    DWORD    function address
  32084.  04h    BYTE    number of SCSI host adapters supported by host manager
  32085.  
  32086. (Table 0606)
  32087. Values for ASPI request number:
  32088.  00h    "HA_INQ"    host adapter inquiry
  32089.  01h    "GET_TYPE"    get device type
  32090.  02h    "EXEC_SIO"    execute SCSI I/O
  32091.  03h    "ABORT_SRB"    abort SRB
  32092.  04h    "RESET_DEV"    reset SCSI device
  32093.  05h    "SET_HAPRMS"    set host adapter parameters
  32094.  06h    get disk drive information
  32095.  
  32096. Format of SCSI Request Block (64 bytes):
  32097. Offset    Size    Description    (Table 0607)
  32098.  00h    BYTE    request number (see #0606)
  32099.  01h    BYTE    request status (see #0608)
  32100.  02h    BYTE    host adapter ID
  32101.  03h    BYTE    request flags (see #0609)
  32102.  04h    DWORD    reserved
  32103. ---request 00h---
  32104.  08h    BYTE    (return) number of host adapters
  32105.  09h    BYTE    (return) target adapter ID
  32106.  0Ah 16 BYTEs    (return) SCSI manager ID
  32107.  1Ah 16 BYTEs    (return) host adapter ID
  32108.  2Ah 16 BYTEs    (return) host adapter-unique parameters
  32109. ---request 01h---
  32110.  08h    BYTE    target ID
  32111.  09h    BYTE    logical unit number
  32112.  0Ah    BYTE    (return) device type (see #0612)
  32113. ---request 02h---
  32114.  08h    BYTE    target ID
  32115.  09h    BYTE    logical unit number
  32116.  0Ah    DWORD    data allocation length
  32117.  0Eh    BYTE    sense allocation length
  32118.  0Fh    DWORD    data buffer pointer
  32119.  13h    DWORD    next request pointer (for linking)
  32120.  17h    BYTE    CDB length
  32121.  18h    BYTE    (return) host adapter status (see #0607)
  32122.  19h    BYTE    (return) target status (see #0611)
  32123.  1Ah    DWORD    post routine address
  32124.  1Eh    WORD    real mode Post DS
  32125.  20h    DWORD    SRB pointer
  32126.  24h    WORD    reserved
  32127.  26h    DWORD    SRB physical address
  32128.  2Ah 22 BYTEs    SCSIMGR$ workspace
  32129.  40h  N BYTEs    CCB, including sense data (20-24 bytes)
  32130. ---request 03h---
  32131.  08h    DWORD    address of SRB to abort
  32132. ---request 04h---
  32133.  08h    BYTE    target ID
  32134.  09h    BYTE    logical unit number
  32135.  0Ah 14 BYTEs    reserved
  32136.  18h    BYTE    (return) host adapter status (see #0610)
  32137.  19h    BYTE    (return) target status (see #0611)
  32138.  1Ah    DWORD    post routine address
  32139.  1Eh 34 BYTEs    workspace
  32140. ---request 05h---
  32141.  08h 16 BYTEs    host adapter-unique parameters
  32142. ---request 06h---
  32143.  08h    BYTE    target ID
  32144.  09h    BYTE    logical unit number
  32145.  0Ah    BYTE    disk drive flags
  32146.  0Bh    BYTE    INT 13h drive number
  32147.  0Ch    BYTE    preferred head number translation
  32148.  0Dh    BYTE    preferred sector size translation
  32149.  0Eh 10 BYTEs    reserved
  32150.  
  32151. (Table 0608)
  32152. Values for ASPI request status:
  32153.  00h    not done yet
  32154.  01h    completed successfully
  32155.  02h    aborted by host
  32156.  04h    SCSI I/O error
  32157.  80h    invalid
  32158.  81h    no adapter
  32159.  82h    no device attached
  32160.  else    status
  32161.  
  32162. Bitfields for ASPI request flags:
  32163. Bit(s)    Description    (Table 0609)
  32164.  0    posting enabled
  32165.  1    linking enabled
  32166.  2    direction
  32167.  3    transfer from SCSI target to host
  32168.  4    transfer from host to SCSI target
  32169. Note:    no data is transferred if both bits 3 and 4 are set
  32170.  
  32171. (Table 0610)
  32172. Values for host adapter status:
  32173.  00h    no error detected
  32174.  11h    select timeout
  32175.  12h    data overrun
  32176.  13h    bus error
  32177.  14h    bus failure
  32178.  
  32179. (Table 0611)
  32180. Values for target status:
  32181.  00h    no status
  32182.  02h    sense data stored in SRB
  32183.  08h    target busy
  32184.  18h    reservation error
  32185.  
  32186. (Table 0612)
  32187. Values for device type:
  32188.  00h    disk drive
  32189.  01h    tape drive (streamer)
  32190.  02h    printer
  32191.  03h    processor
  32192.  04h    WORM drive
  32193.  05h    CD-ROM drive
  32194.  06h    scanner
  32195.  07h    optical drive
  32196.  08h    autochanger
  32197.  09h    communications device
  32198.  
  32199. (Table 0613)
  32200. Values for disk drive flags:
  32201.  00h    no INT 13 access
  32202.  01h    INT 13 with DOS access
  32203.  02h    INT 13 without DOS access
  32204.  03h    invalid flags
  32205.  
  32206. Format of CCB:
  32207. Offset    Size    Description    (Table 0614)
  32208.  00h    BYTE    command code (see #0615)
  32209.  01h    BYTE    flags
  32210.         bits 4-0: vary by function
  32211.         bits 7-5: logical unit number
  32212.  02h    BYTE    "adr_1"
  32213.  03h    BYTE    "adr_0"
  32214.  04h    BYTE    length
  32215.  05h    BYTE    control
  32216.     ...
  32217.  06h/0Ah 14 BYTEs buffer for sense data (see #0616)
  32218.  
  32219. (Table 0615)
  32220. Values for CCB command code:
  32221.  00h    test unit ready
  32222.  01h    rewind
  32223.  03h    request sense data
  32224.  05h    get block size limits
  32225.  08h    Group 0 read
  32226.  0Ah    Group 0 write
  32227.  10h    write file marks
  32228.  11h    SCSI Space (set position?)
  32229.  12h    SCSI Inquire
  32230.  15h    set mode information
  32231.  16h    reserve SCSI device
  32232.  17h    release SCSI device
  32233.  19h    erase
  32234.  1Ah    request mode information
  32235.  1Bh    load/unload media
  32236.  1Dh    request target self-check
  32237.  24h    set window parameters
  32238.  25h    get window parameters
  32239.  28h    Group 1 read
  32240.  2Ah    Group 1 write
  32241.  31h    document feeder control
  32242.  34h    get scan data status
  32243. ---vendor-specific commands---
  32244.  D3h    get document feeder status
  32245.  D4h    set document feeder mode
  32246.  
  32247. Format of sense data:
  32248. Offset    Size    Description    (Table 0616)
  32249.  00h    BYTE    error code (bit 7 set if valid)
  32250.  01h    BYTE    segment number
  32251.  02h    BYTE    sense key
  32252.         bit 6: EOM
  32253.         bit 5: ILI
  32254.         bits 0-3: sense key (see #0617)
  32255.  03h  4 BYTEs    information bytes
  32256.  07h    BYTE    additional sense length (0Ah)
  32257.  08h  4 BYTEs    command-specific information
  32258.  0Ch    BYTE    additional sense code
  32259.  0Dh    BYTE    additional sense code qualifier
  32260.  0Eh    BYTE    field replaceable unit code
  32261.  0Fh  3 BYTEs    sense key specific bytes
  32262.  
  32263. (Table 0617)
  32264. Values for sense key:
  32265.  00h    no sense data
  32266.  02h    SCSI unit not ready
  32267.  03h    media error
  32268.  04h    unrecoverable hardware error
  32269.  05h    illegal parameter in CDB
  32270.  06h    target has been reset
  32271.  0Bh    target aborted command
  32272. --------m-214402-----------------------------
  32273. INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
  32274.     AX = 4402h
  32275.     BX = file handle for device "386MAX$$"
  32276.     CX = number of bytes to read
  32277.     DS:DX -> BYTE 03h followed by 386MAX state buffer (see #0618)
  32278. Return: CF clear if successful
  32279.         buffer at DS:DX+1 filled
  32280.         AX = number of bytes actually copied
  32281.     CF set on error
  32282.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32283. Notes:    if the value given in CX is less than the size of the state record
  32284.       (5Ah for v6.01, 66h for v7.00), only a partial state record will be
  32285.       returned
  32286.     the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
  32287.       did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
  32288.       56h bytes for v5.11.
  32289.     to invoke 386MAX API functions, push DX onto the stack, load DX with
  32290.       the word at offset 25h in the returned state, load all other
  32291.       registers as needed for the desired function, and execute an
  32292.       OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
  32293.       if it is not otherwise modified by the API function.    For safety,
  32294.       in case a function is not supported or 386MAX is not present, SP
  32295.       should be saved and restored around the API call.
  32296.     Windows 3.1 Standard mode, LAN Manager, and Windows for Workgroups all
  32297.       use the 386MAX API; LAN Manager and Windows for Workgroups reportedly
  32298.       make some calls incorrectly
  32299. SeeAlso: AX=4403h/SF=03h"386MAX",INT 67/AH=3Fh
  32300.  
  32301. Format of 386MAX v6.01+ state:
  32302. Offset    Size    Description    (Table 0618)
  32303.  -1    BYTE    (call) 03h
  32304.  00h  6 BYTEs    signature "386MAX"
  32305.  06h  4 BYTEs    version string "N;NN" or "N.NN" (i.e. "6;01" for v6.01)
  32306.         (';' by default; apparently changed to a period when 386MAX
  32307.         has linked high RAM into DOS's memory chain)
  32308.  0Ah    WORD    segment of low-memory portion of 386MAX.SYS
  32309.  0Ch  2 BYTEs    ???
  32310.  0Eh    WORD    segment of ??? memory block or 0000h
  32311.  10h    WORD    bit flags 1 (see #0619)
  32312.  12h    WORD    starting address of video memory in KB
  32313.  14h  2 BYTEs    ???
  32314.  16h    WORD    total high DOS memory in KB
  32315.  18h  2 BYTEs    ???
  32316.  1Ah    WORD    available shared memory in KB
  32317.  1Ch    WORD    KBytes extended memory used by 386MAX
  32318.  1Eh  2 BYTEs    ???
  32319.  20h    WORD    total extended memory in KB
  32320.  22h    WORD    IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
  32321.  24h    WORD    IO port to write (OUT DX,AL) to invoke 386MAX API functions
  32322.  26h    WORD    ??? (depends on DOS version)
  32323.  28h    WORD    size of ??? in paragraphs
  32324.  2Ah    DWORD    machine type (see #0627)
  32325.  2Eh    DWORD    -> first DOS memory control block
  32326.  32h    WORD    system configuration flags (see #0620)
  32327.  34h    WORD    debugging flags 1 (see #0621)
  32328.  36h    WORD    debugging flags 2 (see #0622)
  32329.  38h  2 BYTEs    ???
  32330.  3Ah    WORD    segment of first MCB in high memory chain
  32331.  3Ch    WORD    feature flags 1 (see #0624)
  32332.  3Eh    WORD    feature flags 2 (see #0625)
  32333.  40h    WORD    feature flags 3 (see #0626)
  32334.  42h    WORD    segment of first 386MAX control block??? (see #0628)
  32335.  44h    WORD    amount of memory to report available on INT 15/AH=88h
  32336.  46h  4 BYTEs    ???
  32337.  4Ah    WORD    number of K at start of address space swapped with fast
  32338.           extended memory (SWAP= parameter)
  32339.  4Ch  2 BYTEs    ???
  32340.  4Eh    WORD    segment address of ???
  32341.  50h    WORD    debugging flags 3 (see #0623)
  32342.  52h    DWORD    old INT 21h
  32343.  56h    DWORD    pointer to 386MAX's EMS (INT 67h) handler
  32344. ---386MAX v7.00---
  32345.  5Ah    DWORD    KB of extended memory managed by 386MAX
  32346.  5Eh    DWORD    bytes of extended memory (EXT= parameter)
  32347.  62h  4 BYTEs    ???
  32348.  
  32349. Bitfields for 386MAX bit flags 1:
  32350. Bit(s)    Description    (Table 0619)
  32351.  1    ???
  32352.  2    allow A20 to be enabled/disabled???
  32353.  3    ??? (cleared by calling INT 67 functions or starting MSWindows)
  32354.  4    high RAM present???
  32355.  5    386MAX in AUTO mode
  32356.  6    386MAX enabled
  32357.  7    386MAX is providing EMS services
  32358.  8    ??? (affects API function 08h)
  32359.  9    A20 gate closed (A20 disabled) (see INT 15/AX=2402h)
  32360.  10    Weitek support enabled
  32361.  11    ???
  32362.  12    ROMs not shadowed???
  32363.  13    QPMS has been used
  32364.  14    ???
  32365.  15    ???
  32366.  
  32367. Bitfields for 386MAX system configuration flags:
  32368. Bit(s)    Description    (Table 0620)
  32369.  1    ROM compressed???
  32370.  3    ???
  32371.  5    386MAX loaded into high memory
  32372.  6    Microchannel bus
  32373.  7    Weitek math coprocessor detected
  32374.  9    ??? (also generates INT 01 on ??? and INT 03 on ???)
  32375.  11    PC/XT (thus only single 8259 interrupt controller present, DMA only
  32376.         in 1st megabyte, etc)
  32377.  13    LMLTOP= specified
  32378.  14    enable A20 control???
  32379.  15    ???
  32380.  
  32381. Bitfields for 386MAX debugging flags 1:
  32382. Bit(s)    Description    (Table 0621)
  32383.  0    DEBUG=LED
  32384.  1    DEBUG=X67
  32385.  2    DEBUG=INV
  32386.  3    DEBUG=EMSPTED
  32387.  4    DEBUG=JMP
  32388.  5    DEBUG=CALL
  32389.  6    DEBUG=HLT
  32390.  7    DEBUG=PMR
  32391.  8    DEBUG=CR3
  32392.  9    DEBUG=CAPS or DEBUG=INT
  32393.  10    DEBUG=RC
  32394.  11    DEBUG=ROM
  32395.  12    DEBUG=XM
  32396.  13    DEBUG=SOR
  32397.  14    DEBUG=XR
  32398.  15    DEBUG=EMSERR (generate INT 01 on returning error from EMS call)
  32399.  
  32400. Bitfields for 386MAX debugging flags 2:
  32401. Bit(s)    Description    (Table 0622)
  32402.  0    DEBUG=ROMSWAP
  32403.  1    DEBUG=UNSHADOWROM
  32404.  2    DEBUG=COMPROM
  32405.  3    DEBUG=DPMIPHYS
  32406.  4    DEBUG=ALLROM
  32407.  5    DEBUG=VMS
  32408.  6    DEBUG=XMS (generate INT 01 on XMS calls)
  32409.  7    DEBUG=I06
  32410.  8    DEBUG=VCPI
  32411.  9    DEBUG=XDMA
  32412.  10    DEBUG=X09
  32413.  13    DEBUG=I67 (generate INT 01 on every INT 67 call)
  32414.  14    DEBUG=EVM (generate INT 01 on entering V86 mode)
  32415.  15    DEBUG=EMSSAVE or DEBUG=VDS
  32416.  
  32417. Bitfields for 386MAX debugging flags 3:
  32418. Bit(s)    Description    (Table 0623)
  32419.  10    DEBUG=EPM
  32420.  12    DEBUG=ABIOS
  32421.  13    DEBUG=XMSPTED
  32422.  14    DEBUG=TIME
  32423.  15    DEBUG=SCRUB
  32424.  
  32425. Bitfields for 386MAX feature flags 1:
  32426. Bit(s)    Description    (Table 0624)
  32427.  1    Weitek present
  32428.  2    no DPMI services
  32429.  3    NODMA
  32430.  4    TERSE
  32431.  5    NOROM
  32432.  6    NOPARITY
  32433.  8    NOFLEX (IGNOREFLEXFRAME)
  32434.  11    don't create UMBs
  32435.  12    don't backfill below video memory (NOLOW)
  32436.  13    FRAME= specified
  32437.  14    EXT= specified
  32438.  15    NOEMS, allow prior expanded memory manager to provide EMS
  32439.  
  32440. Bitfields for 386MAX feature flags 2:
  32441. Bit(s)    Description    (Table 0625)
  32442.  0    UNSHIFT specified (FORCEA20 disabled)
  32443.  1    NOXRAM
  32444.  2    NOSCSI specified
  32445.  3    SCREEN specified
  32446.  4    enabled EISADMA
  32447.  5    slow DMA
  32448.  6    RESETKEYB specified
  32449.  7    ???
  32450.  9    TOP384
  32451.  10    ???
  32452.  11    NOWARMBOOT
  32453.  12    USE= specified
  32454.  13    ROM= specified
  32455.  
  32456. Bitfields for 386MAX feature flags 3:
  32457. Bit(s)    Description    (Table 0626)
  32458.  0    Windows3 support enabled
  32459.  1    SHADOWROM
  32460.  2    don't compress ROM (NOCOMPROM)
  32461.  3    ??? (related to PRGREG=)
  32462.  4    ??? (related to PRGREG=)
  32463.  5    SHADOWRAM
  32464.  6    DOS4 specified
  32465.  7    NOLOADHIGH
  32466.  8    NOPULSE
  32467.  11    FORCEA20
  32468.  12    DMA buffer enabled
  32469.  13    NOSCRUB
  32470.  15    NOFRAME
  32471.  
  32472. Bitfields for 386MAX machine type:
  32473. Bit(s)    Description    (Table 0627)
  32474.  12    Amstrad
  32475.  13    Epson
  32476.  14    Zenith Data Systems
  32477.  15    "ASEM"
  32478.  16    NEC
  32479.  17    "HPRS" model codes 69h and 6Ah
  32480.  18    Dell
  32481.  19    "CA"
  32482.  20    ITT (Xtra Business Systems/Alcatel)
  32483.  21    Toshiba 5100
  32484.  22    Olivetti
  32485.  23    Quadram Quad386 (BIOS model FEh, submodel A6h)
  32486.  24    Tandy???
  32487.  25    AST 386
  32488.  26    INBOARD, ??? version
  32489.  27    INBOARD, ??? version
  32490.  28    INBOARD, ??? version
  32491.  29    "HPRS"
  32492.  30    Compaq 386
  32493.  31    JET386
  32494.  
  32495. Format of 386MAX control block:
  32496. Offset    Size    Description    (Table 0628)
  32497.  00h    WORD    segment of next block (FFFFh if last)
  32498.  02h    WORD    segment of previous block (FFFFh if first)
  32499.  04h 12 BYTEs    filename
  32500.  10h    WORD    resident size in paragraphs
  32501.  12h    WORD    environment size???
  32502.  14h    WORD    real prsent environment size + 1 (0000h if ENVSAVE used)
  32503.  16h  2 BYTEs    ???
  32504.  18h    DWORD    initial size or SIZE=n in 386LOAD commandline
  32505.  1Ch    DWORD    SIZE=-1 ???
  32506.  20h    DWORD    SIZE= ???
  32507.  24h    BYTE    PRGREG= if specified, else FFh
  32508.  25h    BYTE    ENVREG= if specified, else FFh
  32509.  26h    BYTE    FlexFrame (00h not present, 01h present)
  32510.  27h  3 BYTEs    ???
  32511.  2Ah    BYTE    GROUP= or 00h if not present
  32512.  2Bh    BYTE    ???
  32513.  2Ch    WORD    PSP
  32514.  
  32515. Format of 386MAX high memory info record:
  32516. Offset    Size    Description    (Table 0629)
  32517.  00h    WORD    segment address of memory region
  32518.  02h    WORD    size of memory region in paragraphs
  32519.  04h    BYTE    type or flags???
  32520.         00h if locked out
  32521.         02h if EMS page frame
  32522.         04h if high RAM
  32523.         42h if ROM
  32524.  05h    BYTE    ???
  32525.  
  32526. Format of 386MAX ROM shadowing record:
  32527. Offset    Size    Description    (Table 0630)
  32528.  00h    WORD    logical start segment of ROM??? (may be used by BlueMAX when it
  32529.           squeezes together the ROMs to make room)
  32530.  02h    WORD    physical start segment of ROM
  32531.  04h  2 BYTEs    ???
  32532.  06h    WORD    size of shadowed ROM in paragraphs
  32533.  08h  2 BYTEs    ???
  32534.  0Ah    WORD    flags
  32535.         bit 15: shadowing enabled for this ROM???
  32536.         bit 14: ???
  32537.         bit 13: ???
  32538.         bit 12: ???
  32539.         bit 10: ???
  32540.  
  32541. (Table 0631)
  32542. Values for 386MAX memory type:
  32543.  00h    unused by EMS
  32544.  01h    DOS
  32545.  04h    page frame overlapping ROM???
  32546.  80h    high memory
  32547.  84h    page frame???
  32548.  87h    video ROM???
  32549. Note:    the type may be 00h (unused) if the 16K page is split among different
  32550.       uses (such as ROM and high RAM)
  32551.  
  32552. (Table 0632)
  32553. Call 386MAX API (via OUT DX,AL) with:
  32554.     STACK: WORD value for DX
  32555.     AH = 00h unused
  32556.         Return: AH = 84h (unsupported function)
  32557.     AH = 01h get high memory information
  32558.         ES:DI -> buffer for array of high memory info records
  32559.             (see #0629)
  32560.         Return: CX = number of records placed in buffer
  32561.     AH = 02h get shadowed ROM info
  32562.         ES:DI -> buffer for array of ROM shadowing records (see #0630)
  32563.         Return: CX = number of records placed in buffer
  32564.     AH = 03h get 386MAX state
  32565.         ES:DI -> 90-byte buffer for state (see #0618)
  32566.         Return: AH = 00h (successful)
  32567.             buffer filled
  32568.     AH = 04h get memory types???
  32569.         ES:DI -> buffer for memory type info (array of bytes, one per
  32570.             16K page) (see #0631)
  32571.         Return:    CX = number of bytes placed in buffer
  32572.     AH = 05h get page table entries
  32573.         AL = A20 control (00h enable A20 first, 01h leave unchanged)
  32574.         CX = buffer size in bytes (0000h = enough for all memory from
  32575.             given start to end of memory managed by 386MAX)
  32576.         SI = first K to report (rounded down to 4K page)
  32577.         ES:DI -> buffer for returned page table entries
  32578.         Return: CX = number of bytes returned (four per 4K page)
  32579.             ES:DI buffer filled
  32580.     AH = 06h get memory speed info
  32581.         ES:DI -> buffer for memory speed records (see #0633)
  32582.         Return: AH = 00h (successful)
  32583.             CX = number of bytes placed in buffer
  32584.         Note:    this function can take over a second to execute
  32585.     AH = 07h map/unmap multiple handle pages
  32586.         DX = EMS handle (on stack)
  32587.         STACK: DWORD -> EMS mapping record
  32588.         Return:    AH = status (00h,80h,83h,8Ah,8Bh)
  32589.         Format of EMS mapping record:
  32590.         Offset    Size    Description
  32591.          00h    WORD    function
  32592.                 0000h use physical page numbers
  32593.                 0001h use segment addresses
  32594.          02h    WORD    EMS handle
  32595.          04h    WORD    number of mapping entries following
  32596.          06h 2N WORDs    logical page number and physical page/segment
  32597.                 logical page FFFFh means unmap physical page
  32598.         SeeAlso: INT 67/AH=50h
  32599.     AH = 08h "EMM2_GOREAL" check whether possible to disable 386MAX
  32600.         AL = ??? (00h or nonzero)
  32601.         Return: AH = status (00h OK, A4h not possible at this time)
  32602.         Note:    if AL=00h, this function always returns success
  32603.     AH = 09h toggle Bit Flags 1 flags
  32604.         BX = bitmask of bit flags 1's flags to toggle (see #0619)
  32605.         Return: AH = 00h (successful)
  32606.         Note:    enables A20 first
  32607.     AH = 0Ah toggle Debugging Flags 1 flags
  32608.         BX = bitmask of Debugging Flags 1's bits to toggle (see #0621)
  32609.         Return: AH = 00h (successful)
  32610.         Notes:    enables A20 first
  32611.             does ??? if bit 3 on after specified bits are toggled
  32612.     AH = 0Bh toggle Debugging Flags 2 flags
  32613.         BX = bitmask of Debugging Flags 2's bits to toggle (see #0622)
  32614.         Return: AH = 00h (successful)
  32615.         Note:    enables A20 first
  32616.     AH = 0Ch toggle feature flags 3
  32617.         BX = bitmask of feature flags 3's bits to toggle (see #0626)
  32618.         Return: AH = 00h (successful)
  32619.         Note:    enables A20 first
  32620.     AH = 0Dh specify 386MAX high-memory location
  32621.         BX = segment address of high-memory real-mode portion of 386MAX
  32622.         CX = current segment of real-mode stub???
  32623.         Return: AH = status (00h successful)
  32624.             ???
  32625.     AH = 0Eh CRT controller register virtualization
  32626.         AL = subfunction
  32627.             00h allow access to CRTC I/O ports 03B4h/03B5h, 03D4h/03D5h
  32628.             01h trap accesses to CRTC I/O ports
  32629.     AH = 0Fh reboot system
  32630.         Return: never
  32631.     AH = 10h unused
  32632.         Return: AH = 84h (unsupported function)
  32633.     AH = 11h get high memory information
  32634.         ES:DI -> 96-byte buffer for high memory info
  32635.         Return: AH = 00h (successful)
  32636.             ES:DI buffer filled
  32637.         Notes:    each byte in buffer contains bit flags for a 4K page in
  32638.               the A000h-FFFFh region
  32639.                 bit 0: page is writeable
  32640.                 bit 1: physical address same as linear address
  32641.                 bit 2: EMS page frame
  32642.                 bit 6: page is part of the QPMS window
  32643.             this function can take over a second to execute,
  32644.               because it does a 128K read for each page in an
  32645.               attempt to flush any RAM cache the system may have
  32646.     AH = 12h shadow RAM mapping
  32647.         AL = subfunction
  32648.             00h unshadow ROMs (except page FFh if NOWARMBOOT set)
  32649.             01h map shadow RAM into ROM regions???
  32650.         Return: AH = 00h (successful) if AL=00h or 01h
  32651.             AH = 8Fh otherwise
  32652.     AH = 13h shadow RAM page protection
  32653.         AL = subfunction
  32654.             00h set all shadowed ROM 4K pages to read-only
  32655.             01h set all shadowed ROM 4K pages to read-write
  32656.         Return: AH = 00h (successful) if AL=00h or 01h
  32657.             AH = 8Fh otherwise
  32658.     AH = 14h get Programmable Option Select info???
  32659.         ES:DI -> 54-byte buffer for POS data???
  32660.         Return: AH = 00h if successful
  32661.             AH = A4h on error
  32662.         Note:    the buffer consists of nine 6-byte fields; the first
  32663.               eight for slots 1-8, the last for the system board
  32664.     AH = 15h ???
  32665.         ???
  32666.         Return: ???
  32667.     AH = 16h get 386MAX memory usage screen
  32668.         ES:DI -> buffer for memory info display
  32669.         CX = size of buffer in bytes
  32670.         Return:    ES:DI buffer filled with '$'-terminated string (if
  32671.                 large enough to hold entire usage screen)
  32672.         Note:    the screen is 0303h bytes in v7.00
  32673.     AH = 17h Windows 3 startup/termination
  32674.         AL = subfunction
  32675.             00h Windows3 initializing
  32676.             DX (on stack) = Windows startup flags
  32677.             DI = Windows version number (major in upper byte)
  32678.             ES:BX = 0000h:0000h
  32679.             DS:SI = 0000h:0000h
  32680.             Return: CX = 0000h if OK for Windows to load
  32681.                    <> 0 if Windows should not load
  32682.                 ES:BX -> startup info structure
  32683.                 DS:SI -> Virtual86 mode enable/disable callback
  32684.             01h Windows3 terminating
  32685.             ES:BX -> ???
  32686.             DX (on stack) = Windows exit flags
  32687.             Return: ???
  32688.     AH = 18h QPMS (Qualitas Protected Memory Services)
  32689.         AL = subfunction
  32690.             00h get QPMS configuration
  32691.             Return: BX = starting segment of QPMS memory window
  32692.                 CX = number of 4K pages reserved for QPMS???
  32693.                 DX = number of 4K pages in QPMS window???
  32694.             01h map QPMS memory page???
  32695.             BX = 4K page number within memory reserved for QPMS???
  32696.             CL = 4K page number within QPMS memory window???
  32697.             02h mark all QPMS memory read-only
  32698.             03h mark all QPMS memory read-write
  32699.         Return: AH = status (00h,8Ah,8Bh,8Fh)
  32700.     AH = 19h get linear address for physical address
  32701.         EDX = physical address (low word on stack)
  32702.         Return: AH = status
  32703.                 00h successful
  32704.                 EDX = linear address at which physical address
  32705.                     may be accessed
  32706.                 8Bh physical address currently not addressable
  32707.         Note:    enables A20 first
  32708.     AH = 1Ah set page table entry
  32709.         EDX = new page table entry (low word on stack)
  32710.         ESI = linear address of page to map (bits 0-11 clear)
  32711.         Return: AH = status (00h,8Bh)
  32712.         Note:    enables A20 first
  32713.     AH = 1Bh get ???
  32714.         Return: AH = status
  32715.             BX = ???
  32716.             CX = number of ???
  32717.             EDX = physical address of ???
  32718.     AH = 1Ch get original interrupt vector
  32719.         AL = interrupt vector (00h-7Fh)
  32720.         Return: AH = 00h (successful)
  32721.             EDX = original vector before 386MAX loaded (segment in
  32722.                 high word, offset in low word)
  32723.         Note:    no range checking is performed; requests for INTs 80h-
  32724.               FFh will return random values
  32725.     AH = 1Dh display string???
  32726.         SI = ???
  32727.         Return: AH = 00h (successful)
  32728.             ???
  32729.         Note:    this function appears to be broken in v7.00
  32730.     AH = 1Eh get memory info
  32731.         ES:DI -> memory info (see #0634)
  32732.         Return: ???
  32733.     AH = 1Fh get DPMI host information
  32734.         Return: AX = 0000h if successful
  32735.             BX = DPMI flags (see #1689 at INT 31/AX=0400h)
  32736.             CL = CPU type (02h = 80286, 03h = 80386, etc.)
  32737.             DX = DPMI ver supported (DH=major, DL=2-digit minor)
  32738.             SI = ???
  32739.             ES???:DI -> ???
  32740.         Note:    NOP if NODPMI switch specified
  32741.     AH = 20h (v7.00) get ???
  32742.         AL = index of ???
  32743.         Return: EDX = ??? for specified ???
  32744.     AH = 21h (v7.00) STACKS support
  32745.         AL = 00h get STACKS parameters
  32746.         Return: BX = ??? (0060h for v7.00)
  32747.             CX = number of stacks for hardware interrupts
  32748.             DX = size of each stack in bytes
  32749.             SI = ??? (low and high bytes are separate values)
  32750.             DI = ??? (low and high bytes are separate values)
  32751.                 low byte = logical page number set by subfn 02h
  32752.             ES = ???
  32753.         AL = 01h set ??? "EMM2_DSTKS"
  32754.         EBX = ???
  32755.         ECX = ???
  32756.         AL = 02h set ???
  32757.         BL = logical page number for ??? (00h-03h)
  32758.         Return: AH = status (00h,8Ah)
  32759.     AH = 22h (v7.00) call ??? for every load module
  32760.         AL = which function to call
  32761.         00h call ???
  32762.         else call ????
  32763.         Return: AH = 00h
  32764.         Note: if AL=00h, calls the protected-mode function pointed at by
  32765.         the DWORD at offset 22h from the start of each module installed
  32766.         by a LOAD= directive; if AL<>00h, it calls the function
  32767.         pointed at by the DWORD at offset 28h of the load module
  32768.     AH = 23h (v7.00) ???
  32769.         AL = 00h set ???
  32770.         BL = ???
  32771.         Return:    AH = 00h or unchanged (depending on ???)
  32772.         AL = 01h set ???
  32773.         BL = ???
  32774.         BH = ???
  32775.         CX = ???
  32776.         DX = ??? (on top of stack)
  32777.         Return: AH = status (00h if successful, 8Fh once table full)
  32778.         Note:    this call adds one entry to an internal table on each
  32779.               call, until the table is full
  32780.         AL = 02h get ???
  32781.         CX = size of buffer
  32782.         ES:DI -> buffer for ??? (60 bytes total data)
  32783.         Return: CX = number of bytes actually returned
  32784.         Note:    returns the array storing the values set with AX=2301h
  32785.         Format of one entry in array:
  32786.         Offset    Size    Description
  32787.          00h    BYTE    ??? (BL from subfn 01h)
  32788.          01h    WORD    ??? (CX from subfn 01h)
  32789.          03h    BYTE    ??? (BH from subfn 01h)
  32790.          04h    WORD    ??? (DX from subfn 01h)
  32791.         AL = 03h set ??? name/path
  32792.         ES:DI -> buffer containing ASCIZ ???
  32793.         AL = 04h get ???
  32794.         ES:DI -> buffer for ASCIZ ???
  32795.         Note: the ASCIZ string for subfunctions 03h and 04h does not appear
  32796.         to be used by 386MAX, and may serve merely for communication
  32797.         between two other Qualitas programs
  32798.     AH = 24h (v7.00) high memory control
  32799.         AL = 00h get high memory state
  32800.         Return: BX = current state
  32801.                 00h high memory removed from DOS memory chain
  32802.                 01h high memory included in DOS memory chain
  32803.         AL = 01h set high memory state
  32804.         BX = new state
  32805.             00h high memory removed from DOS memory chain
  32806.             01h high memory included in DOS memory chain
  32807.             else
  32808.             Return: ??? (error, but return varies according to ???)
  32809.     AH = 25h (v7.00) remove high RAM from DOS memory chain
  32810.     AH = 26h (v7.00) ???
  32811.         BX = ???
  32812.         CX = ???
  32813.         SI = ???
  32814.         DI = ???
  32815.         Return: AH = status
  32816.             BX = ???
  32817.             CX = ???
  32818.     AH = 27h (v7.00) ???
  32819.         AL = 00h get ???
  32820.         Return: BX = number of paragraphs for ???
  32821.         AL = 01h ???
  32822.         BX = ???
  32823.         ES??? = ???
  32824.         AL = 02h ???
  32825.         ???
  32826.         AL = 03h ???
  32827.         CX = ???
  32828.         DX = ???
  32829.         ES??? = ???
  32830.         Return: ???
  32831.     AH = 28h (v7.00) get ???
  32832.         Return: AH = status (00h,8Fh) (see #2089 at INT 67/AH=40h)
  32833.             if AH=00h,
  32834.                 CX = ???
  32835.                 DX = ???
  32836.     AH = 29h (v7.00) get ???
  32837.         Return: AX = ???
  32838.     AH = 40h-5Dh EMS services (see INT 67/AH=40h etc)
  32839.     AH = DEh VCPI services (see INT 67/AX=DE00h etc)
  32840. Return: AH = status (as for EMS INT 67 calls)
  32841.         00h successful
  32842.         80h internal error
  32843.         81h hardware malfunction
  32844.         83h invalid handle
  32845.         84h    undefined function
  32846.         8Ah invalid logical page nuber
  32847.         8Bh illegal physical page number
  32848.         8Fh undefined subfunction
  32849.         A4h access denied
  32850.         etc.
  32851.     STACK popped (value placed in DX if no specific return value for DX)
  32852.  
  32853. Format of 386MAX memory speed record:
  32854. Offset    Size    Description    (Table 0633)
  32855.  00h    DWORD    page table entry for 4K page
  32856.  04h    WORD    number of microticks (840ns units) required for REP LODSD of
  32857.           entire 4K page
  32858.  
  32859. Format of 386MAX memory info [array]:
  32860. Offset    Size    Description    (Table 0634)
  32861.  00h    DWORD    linear start address
  32862.  04h    DWORD    size in bytes
  32863.  08h    WORD    XMS handle (if next byte = 04h)
  32864.         ??? (if next byte = 05h)
  32865.         ??? (if next byte = 06h)
  32866.         ??? (if next byte = 13h)
  32867.         ??? (if next byte = 14h)
  32868.         ??? (if next byte = 15h)
  32869.         ??? (if next byte = 23h)
  32870.         ??? (if next byte = 24h)
  32871.         ??? (if next byte = 26h)
  32872.         else unused
  32873.  0Ah    BYTE    type
  32874.         00h = ???, 01h = VDISK,
  32875.         02h = INT 15h extended memory, 03h = ??? extended,
  32876.         04h = XMS handle's memory, 05h = ???, 06h = ???, 07h = ???,
  32877.         08h = ???, 09h = ???, 0Ah = ???, 0Bh = ???,
  32878.         11h = ???, 12h = ???, 14h = ???, 15h = ???,
  32879.         19h = ???, 1Ah = ???, 1Bh = ???,
  32880.         1Ch = ???, 1Dh = ???, 1Eh = ???, 1Fh = ???,
  32881.         20h = ???, 21h = ???, 23h = ???, 24h = ???,
  32882.         26h = ???
  32883.  0Bh    BYTE    ??? (00h for types 00h-03h, 07h-0Bh, 19h-21h;
  32884.              80h for types 04h/13h-15h/23h-26h;
  32885.             ??? for type 05h)
  32886. --------V-214402-----------------------------
  32887. INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
  32888.     AX = 4402h
  32889.     BX = file handle for device "PGS1600$"
  32890.     CX = 0018h (size of buffer)
  32891.     DS:DX -> configuration buffer (see #0635)
  32892. Return: CF clear if successful
  32893.         buffer filled
  32894.         AX = number of bytes actually copied
  32895.     CF set on error
  32896.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32897. Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
  32898.       display adapter, which provides a 1600x1200 monochrome display as
  32899.       well as one of two emulations, MDA or CGA.
  32900. SeeAlso: AX=4403h"PGS1600"
  32901.  
  32902. Format of PGS1600.DEV configuration information:
  32903. Offset    Size    Description    (Table 0635)
  32904.  00h    WORD    version (high byte = major, low byte = minor)
  32905.  02h    WORD    board initialisation mode
  32906.  04h    WORD    board I/O address
  32907.         03D0h CGA emulation
  32908.         03B0h MDA emulation
  32909.         0390h no emulation
  32910.         0350h no emulation, alternate
  32911.  06h    WORD    emulation buffer segment
  32912.         B800h    CGA emulation
  32913.         B000h    MDA emulation
  32914.         0000h    no emulation
  32915.  08h    WORD    PG1600 graphics buffer segment
  32916.  0Ah    WORD    number of bytes between consecutive graphic rows
  32917.  0Ch    WORD    horizontal pixel size
  32918.  0Eh    WORD    vertical pixel size
  32919.  10h    WORD    horizontal dots per inch
  32920.  12h    WORD    vertical dots per inch
  32921.  14h    WORD    graphics buffer bits per pixel
  32922.  16h    WORD    monitor bits per pixel
  32923. --------N-214402-----------------------------
  32924. INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
  32925.     AX = 4402h
  32926.     BX = file handle referencing device "$IPCUST"
  32927.     CX, DS:DX ignored
  32928. Return: CF clear if successful
  32929.         AX destroyed
  32930.     CF set on error
  32931.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  32932. Notes:    there are a total of 378h bytes of configuration data for IPCUST.SYS
  32933.       version 2.05.     If less than the entire data is read or written,
  32934.       the next read/write continues where the previous one ended; this
  32935.       call and AX=4403h both reset the location at which the next
  32936.       operation starts to zero
  32937.     v2.1+ uses a new configuration method, but allows the installation
  32938.       of IPCUST.SYS for backward compatibility with other software which
  32939.       must read the PC/TCP configuration
  32940. SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4403h"IPCUST"
  32941. --------N-214402-----------------------------
  32942. INT 21 - WORKGRP.SYS - GET API ENTRY POINT
  32943.     AX = 4402h
  32944.     BX = file handle for device "NET$HLP$"
  32945.     CX = 0008h
  32946.     DS:DX -> buffer for entry point record
  32947. Return: CF clear if successful
  32948.         AX = number of bytes actually read
  32949.     CF set on error
  32950.         AX = error code
  32951. Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
  32952.       permits communication with PCs running Windows for Workgroups or
  32953.       LAN Manager
  32954. SeeAlso: AH=3Fh"WORKGRP.SYS"
  32955.  
  32956. Format of WORKGRP.SYS entry point record:
  32957. Offset    Size    Description    (Table 0636)
  32958.  00h    WORD    3633h  \ signature???
  32959.  02h    WORD    EF6Fh  /
  32960.  04h    DWORD    address of entry point
  32961. Note:    first four bytes of buffer must be 6Fh E9h 33h 36h on entry when using
  32962.       IOCTL rather than READ to get the entry point record
  32963.  
  32964. (Table 0637)
  32965. Call WORKGRP entry point with:
  32966.     STACK:    WORD    function number (0000h-0009h)
  32967. Return: STACK unchanged
  32968.  
  32969. (Table 0638)
  32970. Call WORKGRP function 00h with:
  32971.     STACK:    WORD    0000h (function "get ???")
  32972. Return: DX:AX -> data table
  32973.  
  32974. (Table 0639)
  32975. Call WORKGRP function 01h with:
  32976.     STACK:    WORD    0001h (function "hook ???")
  32977. Return: STACK:    DWORD    pointer to ???
  32978.         WORD    0001h (function number)
  32979.  
  32980. (Table 0640)
  32981. Call WORKGRP function 02h with:
  32982.     STACK:    WORD    0002h (function "unhook ???")
  32983.     ???
  32984. Return: ???
  32985.  
  32986. (Table 0641)
  32987. Call WORKGRP function 03h with:
  32988.     STACK:    WORD    0003h (function "reenable printer port")
  32989.         WORD    LPT port number
  32990. Return: ???
  32991.  
  32992. (Table 0642)
  32993. Call WORKGRP function 04h with:
  32994.     STACK:    WORD    0004h (function "disable printer port")
  32995.         WORD    LPT port number
  32996. Return: ???
  32997.  
  32998. (Table 0643)
  32999. Call WORKGRP function 05h with:
  33000.     STACK:    WORD    0005h (function "???")
  33001.         ???
  33002. Return: ???
  33003.  
  33004. (Table 0644)
  33005. Call WORKGRP function 06h with:
  33006.     STACK:    WORD    0006h (function "???")
  33007. Return: STACK unchanged
  33008.     AX = 0000h
  33009.     DX = 0000h
  33010.  
  33011. (Table 0645)
  33012. Call WORKGRP functions 07h-09h with:
  33013.     STACK:    WORD    0007h-0009h (NOP functions)
  33014. Return: STACK unchanged
  33015.     AX = 0001h
  33016.     DX = 0000h
  33017. --------N-214402-----------------------------
  33018. INT 21 - 10NET v5.0 - 10BEUI.DOS - API
  33019.     AX = 4402h
  33020.     BX = file handle referencing device "10BEUI$"
  33021.     DS:DX -> parameter record (see #0646)
  33022.     CX ignored
  33023. Return: CF clear if successful
  33024.         AX destroyed
  33025.     CF set on error
  33026.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33027. SeeAlso: AX=4402h"10MEMMGR",INT 6F/AH=00h"10NET"
  33028.  
  33029. Format of 10NET 10BEUI.DOS parameter record:
  33030. Offset    Size    Description    (Table 0646)
  33031.  00h    WORD    000Ah (function number???)
  33032.  02h    WORD    ???
  33033.  04h    DWORD    pointer to buffer for ???
  33034.  08h  4 BYTEs    ???
  33035.  0Ch    WORD    transfer size
  33036. --------N-214402-----------------------------
  33037. INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
  33038.     AX = 4402h
  33039.     BX = file handle referencing device "MEMMGR0$"
  33040.     DS:DX -> 6-byte buffer for interface info (see #0647)
  33041.     CX ignored
  33042. Return: CF clear if successful
  33043.         AX destroyed
  33044.     CF set on error
  33045.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33046. SeeAlso: AX=4402h"10BEUI",INT 6F/AH=00h"10NET"
  33047.  
  33048. Format of 10NET 10MEMMGR.SYS interface info:
  33049. Offset    Size    Description    (Table 0647)
  33050.  00h    DWORD    address of entry point (see #0648)
  33051.  04h    WORD    version (0500h for v5.00)
  33052.  
  33053. (Table 0648)
  33054. Call 10NET 10MEMMGR.SYS entry point with:
  33055.     AL = 01h ???
  33056.         BX = ???
  33057.         Return: CF clear if successful
  33058.             CF set on error
  33059.             AX = error code
  33060.     AL = 02h ???
  33061.         ???
  33062.     AL = 03h ???
  33063.         ???
  33064.     AL = 04h set/restore memory allocation strategy
  33065.         BX = subfunction
  33066.         0000h set strategy
  33067.         0001h restore strategy
  33068.         Return: CF clear if successful
  33069.             CF set on error (if function disabled)
  33070.             various registers destroyed
  33071.     AL = other
  33072.         Return: CF set
  33073.             AX = 0000h
  33074.             BL = 01h
  33075. --------V-214402-----------------------------
  33076. INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
  33077.     AX = 4402h
  33078.     BX = file handle for device "$$$$RGDI"
  33079.     CX = 0006h (size of returned data)
  33080.     DS:DX -> location record (see #0649)
  33081. Return: CF clear if successful
  33082.         buffer filled
  33083.     CF set on error
  33084.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33085. Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
  33086. SeeAlso: AX=4403h"RGDI"
  33087.  
  33088. Format of Compaq AG1024.SYS location record:
  33089. Offset    Size    Description    (Table 0649)
  33090.  00h    WORD    signature 55AAh
  33091.  02h    WORD    segment of ???
  33092.  04h    WORD    segment of device driver's code
  33093. --------N-214402-----------------------------
  33094. INT 21 - FTPSOFT.DOS v3.1 - GET ???
  33095.     AX = 4402h
  33096.     BX = file handle for device "FTPSOFT$"
  33097.     CX = size of buffer
  33098.     DS:DX -> buffer for data (see #0650)
  33099. Return: CF clear if successful
  33100.         buffer filled
  33101.     CF set on error
  33102.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33103. Program: FTPSOFT.DOS is a device driver for Protocol Manager support from
  33104.        FTP Software, Inc.
  33105. SeeAlso: AH=3Fh"PC/TCP",AX=4402h"NDIS"
  33106.  
  33107. Format of FTPSOFT.DOS data:
  33108. Offset    Size    Description    (Table 0650)
  33109.  00h    WORD    (call) BA98h (if different, no data returned)
  33110.  02h    DWORD    -> NDIS common characteristics table
  33111.           (see #0589 at AX=4402h"NDIS")
  33112.  06h    DWORD    (call) -> new dispatch table (see #0591 at AX=4402h"NDIS")
  33113.  0Ah    DWORD    -> 28-byte buffer for ??? data
  33114.  0Eh    DWORD    ???
  33115.  12h    DWORD    -> FAR function to reset dispatch jump table to defaults
  33116.  16h    BYTE    ???
  33117. Note:    the addresses in the new dispatch table are copied into an internal
  33118.       jump table which may be reset by calling the function pointed at by
  33119.       offset 12h
  33120. --------n-214402-----------------------------
  33121. INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
  33122.     AX = 4402h
  33123.     BX = file handle for device "$$PENDOS" or "$$PD_REG"
  33124.     CX = size of buffer (4 for $$PENDOS and a 4,8,12, or 16 for $$PD_REG)
  33125.     DS:DX -> buffer for entry point record (see #0651)
  33126. Return: CF clear if successful
  33127.         buffer filled
  33128.     CF set on error
  33129.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33130. Program: A limited version of PenDOS by Communication Intelligence Corporation,
  33131.       which provides pen capability to keyboard-based programs, is bundled
  33132.       with IBM DOS 6.1
  33133. SeeAlso: AX=4403h"PENDEV.SYS"
  33134.  
  33135. Format of PENDEV.SYS entry point record:
  33136. Offset    Size    Description    (Table 0651)
  33137.  00h    DWORD    -> array of jumps
  33138.  04h    WORD    offset of function to retrieve entry point (see #0652)
  33139.  06h  2 BYTEs    signature "Pe"
  33140.  08h    WORD    offset of function to set entry point (see #0653)
  33141.  0Ah  2 BYTEs    signature "nD"
  33142.  0Ch    WORD    offset of function to clear entry point (see #0654)
  33143.  0Eh    WORD    signature "OS"
  33144.  
  33145. (Table 0652)
  33146. Call PENDEV.SYS function to retrieve entry point with:
  33147.     AX = index of entry point (0-9)
  33148. Return: CF clear if successful
  33149.         DX:AX -> desired entry point
  33150.     CF set on error (AX out of range)
  33151.  
  33152. (Table 0653)
  33153. Call PENDEV.SYS function to set entry point with:
  33154.     AX = index of entry point (0-9)
  33155.     DX:SI -> new handler
  33156. Return: CF clear if successful
  33157.     CF set on error (AX out of range)
  33158.  
  33159. (Table 0654)
  33160. Call PENDEV.SYS function to clear entry point with:
  33161.     AX = index of entry point (0-9)
  33162. Return: CF clear if successful
  33163.     CF set on error (AX out of range)
  33164. Note:    resets the jump at the specified entry point to its default target,
  33165.       which simply returns
  33166. --------N-214402-----------------------------
  33167. INT 21 U - LAN Manager - TCPDRV.DOS - API
  33168.     AX = 4402h
  33169.     BX = file handle referencing device "TCPDRV$"
  33170.     CX = 0019h
  33171.     DS:DX -> buffer containing request block
  33172. Return: CF clear if successful
  33173.         buffer filled
  33174.     CF set on error
  33175.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33176. Program: TCPDRV.DOS is the low-level device driver supporting LAN Manager's
  33177.       TCP/IP protocol stack
  33178.  
  33179. Format of TCPDRV.DOS request block:
  33180. Offset    Size    Description    (Table 0655)
  33181.  00h    BYTE    (call) function number
  33182.         00h initialize ???
  33183.         06h get ???
  33184.         07h get ???
  33185.  01h    BYTE    (call) 00h
  33186.         (return) error code if error, unchanged if successful
  33187.  02h    WORD    signature 4354h ('CT')
  33188. ---function 00h---
  33189.  04h    DWORD    (call) pointer to ??? FAR function
  33190.         function is called with ES:BX -> device driver request used to
  33191.           invoke this function
  33192.  08h  4 BYTEs    ???
  33193.  0Ch    DWORD    (call) pointer to ??? record, WORD at offset 22h is read
  33194.  10h    DWORD    (return) -> ??? buffer if 0000h:0000h on call
  33195. ---function 06h---
  33196.  04h  4 BYTEs    ???
  33197.  08h    DWORD    (return) pointer to ???
  33198. ---function 07h---
  33199.  04h    DWORD    (return) pointer to ??? record
  33200. --------y-214402-----------------------------
  33201. INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
  33202.     AX = 4402h
  33203.     BX = file handle referencing device "RECLOWLD"
  33204.     DS:DX -> buffer for address list (see #0656)
  33205.     CX ignored
  33206. Return: CF clear if successful
  33207.         buffer filled
  33208.     CF set on error
  33209.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33210.  
  33211. Format of CPRLOW address list:
  33212. Offset    Size    Description    (Table 0656)
  33213.  00h    WORD    segment of CPRLOW code
  33214.  02h    WORD    offset in code segment of ??? entry point
  33215.         (switches into protected mode)
  33216.  04h    WORD    offset in code segment of jump array (see #0657)
  33217.  06h    WORD    segment of copy of interrupt vector table at CPRLOW load time
  33218. Note:    neither the entry point nor the jump array is valid until after a
  33219.       CPR /LOAD, because CPR.EXE installs the code into CPRLOW at runtime.
  33220.  
  33221. Format of CPRLOW jump array:
  33222. Offset    Size    Description    (Table 0657)
  33223.  00h  3 BYTEs    initialize CPRLOW interrupt hooks
  33224.  03h  3 BYTEs    reset timers and enable CPR (hotkey enable)
  33225.  06h  3 BYTEs    disable CPR (hotkey disable)
  33226.  09h  3 BYTEs    clear ??? flag, hotkey disable, and ???
  33227.  0Ch  3 BYTEs    initialize delay loop counter (destroys AX,BX,CX,DX)
  33228.  0Fh  3 BYTEs    disable CPR completely (commandline /DISABLE)
  33229.  12h  3 BYTEs    enable ??? if CPR enabled by both cmdline and hotkey
  33230.  15h  3 BYTEs    enable CPR (commandline /ENABLE)
  33231. --------m-214402-----------------------------
  33232. INT 21 U - Novell DOS 7 EMM386.EXE - GET STATE RECORD???
  33233.     AX = 4402h
  33234.     BX = file handle for device "EMMXXXX0"
  33235.     CX = 003Eh (size of state record)
  33236.     DS:DX -> buffer for state record (see #0658)
  33237. Return: CF clear if successful
  33238.         buffer filled (see #2044 at INT 67/AH=3Fh)
  33239.     CF set on error
  33240.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33241.  
  33242. Format of Novell DOS 7 EMM386.EXE state record:
  33243. Offset    Size    Description    (Table 0658)
  33244.  00h    WORD    signature EDC0h
  33245.  02h 60 BYTEs    ???
  33246. --------m-214402SF00-------------------------
  33247. INT 21 U - Memory Managers - GET API ENTRY POINT
  33248.     AX = 4402h subfn 00h
  33249.     BX = file handle for device "EMMXXXX0"
  33250.     CX = 0006h (size of buffer in bytes)
  33251.     DS:DX -> buffer for API entry point record (see #0660)
  33252.         first byte must be 00h on entry
  33253. Return: CF clear if successful
  33254.         buffer filled (see #2044 at INT 67/AH=3Fh)
  33255.     CF set on error
  33256.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33257. Notes:    this function is supported by Microsoft EMM386.EXE v4.45+ and
  33258.       CEMM v5.10+, and is intended for use by MS Windows as it starts up
  33259.     if no other program has hooked INT 67, an alternate installation
  33260.       check for CEMM is testing for the string
  33261.       "COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  33262.       handler's segment; if present, the word at offset 12h contains the
  33263.       offset of the API entry point
  33264. SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh
  33265.  
  33266. Format of memory manager API entry point record:
  33267. Offset    Size    Description    (Table 0659)
  33268.  00h    WORD    ??? (0022h for CEMM 5.11, 0025h for MS EMM386 v4.45)
  33269.  02h    DWORD    manager's private API entry point
  33270.         (see #0660,#2107 at INT 67/AX=FFA5h)
  33271.  
  33272. (Table 0660)
  33273. Call CEMM v5.10+ entry point with:
  33274.     AH = 00h get memory manager's state
  33275.         Return: AH = state
  33276.             bit 0: turned OFF
  33277.             bit 1: AUTO mode enabled
  33278.     AH = 01h set memory manager's state
  33279.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  33280.         Return: CF clear if successful
  33281.             CF set on error
  33282.     AH = 02h Weitek coprocessor support
  33283.         AL = subfunction
  33284.         00h get Weitek support state
  33285.             Return: AL = status
  33286.                 bit 0: Weitek coprocessor is present
  33287.                 bit 1: Weitek support is enabled
  33288.         01h turn on Weitek support
  33289.         02h turn off Weitek support
  33290.         Return: CF clear if successful
  33291.             CF set on error
  33292.             AH = error code (01h invalid subfunc, 02h no Weitek)
  33293.     AH = 05h get statistics
  33294.         ???
  33295.     AH > 06h
  33296.         Return: CF set
  33297.             AH = 01h (invalid function)
  33298. Notes:    AH=03h,04h,06h are NOPs which return CF clear, presumably for backwards
  33299.       compatibility with earlier versions of CEMM
  33300.     in v5.11, AH=05h merely prints an error message (using INT 21/AH=09h)
  33301.       stating that a different version of CEMM is installed and it is
  33302.       therefore not possible to display the statistics
  33303. --------m-214402SF01-------------------------
  33304. INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
  33305.     AX = 4402h subfn 01h
  33306.     BX = file handle for device "EMMXXXX0"
  33307.     CX = 0006h (size of buffer in bytes)
  33308.     DS:DX -> buffer for EMM import structure record (see #0661)
  33309.         first byte must be 01h on entry
  33310. Return: CF clear if successful
  33311.         buffer filled (see also #2044 at INT 67/AH=3Fh)
  33312.     CF set on error
  33313.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33314. Notes:    this function is supported by Microsoft EMM386.EXE v4.45+,
  33315.       QEMM-386 v6+, and CEMM v5.10+, and is intended for use by MS Windows
  33316.       as it starts up
  33317.     for QEMM-386, this call always returns an error if Windows3 support
  33318.       has been disabled with the NW3 switch
  33319. SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h
  33320. SeeAlso: INT 67/AH=3Fh
  33321.  
  33322. Format of EMM import structure record:
  33323. Offset    Size    Description    (Table 0661)
  33324.  00h    DWORD    physical address of EMM import structure (see #0662)
  33325.  04h    BYTE    EMM import structure major version
  33326.  05h    BYTE    EMM import structure minor version
  33327. Note:    version 1.00 contains only EMS information (Windows 3.0+)
  33328.     version 1.10 contains UMB/XMS/HMA/EMS information (Windows 3.1)
  33329.     version 1.11 is version 1.10 plus memory manager maker/product name
  33330. SeeAlso: #2084
  33331.  
  33332. Format of Global EMM Import record:
  33333. Offset    Size    Description    (Table 0662)
  33334.  00h    BYTE    bit flags
  33335.         bit 2: ???
  33336.         bit 3: free EMM386 virtual HMA only if hma_page_table_paddr!=0
  33337.         bit 4: no UMB???
  33338.  01h    BYTE    reserved (0)
  33339.  02h    WORD    size of structure in bytes
  33340.  04h    WORD    structure version
  33341.  06h    DWORD    reserved
  33342.  0Ah 384 BYTEs    64 EMS frame status records (see #0663), one per 16K of
  33343.           real-mode 1M address space
  33344. 18Ah    BYTE    ??? (must be at least 3*number_of_EMS_frames+4)
  33345. 18Bh    BYTE    number of UMB frame descriptors following
  33346. 18Ch 4N DWORDs    UMB frame descriptors
  33347.         each is 4 DWORDs giving physical page numbers for the four
  33348.           4K pages of a 16K EMS frame (00000000h if non-UMB page)
  33349. var    BYTE    number of EMS handle info records following
  33350.     16N BYTEs    EMS handle info records (see #0665)
  33351. ---version 1.10+ ---
  33352.     DWORD    realmode INT 67 vector (used by Windows to set breakpoints)
  33353.     DWORD    physical address of HMA page table values
  33354.     BYTE    number of free page entries following
  33355.      2N DWORDs    free page entries
  33356.         each is:
  33357.             DWORD    physical page number
  33358.             DWORD    number of consecutive physical pages
  33359.     BYTE    number of XMS handle info records following
  33360.         00h if memory manager does not emulate XMS or has real mode
  33361.           XMS code which can execute in the Windows environment
  33362.     12N BYTEs    XMS handle info records (see #0666)
  33363.     BYTE    number of free UMB info records following
  33364.      2N WORDs    free UMB info records
  33365.         each is:
  33366.             WORD    real mode start segment
  33367.             WORD    size in paragraphs
  33368. ---version 1.11---    
  33369.      20 BYTEs    blank-padded maker name
  33370.      20 BYTEs    blank-padded product name
  33371.  
  33372. Format of EMS frame status record:
  33373. Offset    Size    Description    (Table 0663)
  33374.  00h    BYTE    frame type (see #0664)
  33375.  01h    BYTE    owner handle (00h/FFh = none) from frame including UMB
  33376.         index to UMB frame descriptors
  33377.  02h    WORD    logical page for frame, 7FFFh if none, FFFFh if non-EMS frame
  33378.  04h    BYTE    EMS physical page number (FFh for non-EMS = don't care???)
  33379.  05h    BYTE    flags for non-EMS frames (00h for EMS frame)
  33380.         bits 0,1 for first 4K, bits 2,3 for second 4K, etc:
  33381.           10: direct mapping (linear address = physical address)
  33382.           01: UMB mapping
  33383.  
  33384. Bitfields for EMS frame type:
  33385. Bit(s)    Description    (Table 0664)
  33386.  0    EMS frame
  33387.  1    (if EMS frame) in standard 64K page frame
  33388.  2    first 4K of frame is UMB
  33389.  3    second 4K of frame is UMB
  33390.  4    third 4K of frame is UMB
  33391.  5    last 4K of frame is UMB
  33392.  
  33393. Format of EMS handle info record:
  33394. Offset    Size    Description    (Table 0665)
  33395.  00h    BYTE    handle number (00h = system handle)
  33396.  01h    BYTE    flags
  33397.         bit 0: normal handle rather than system handle
  33398.         bit 2: ??? (set by some EMS managers)
  33399.  02h  8 BYTEs    EMS handle's name
  33400.  0Ah    WORD    number of 16K pages for handle
  33401.  0Ch    DWORD    physical address of page table entries forming page map
  33402. Note:    all values should be zero for the system handle if no large frame
  33403.       support is present
  33404.  
  33405. Format of XMS handle info record:
  33406. Offset    Size    Description    (Table 0666)
  33407.  00h    WORD    handle
  33408.  02h    WORD    flags
  33409.         bit 0: handle usable by Windows
  33410.             (already in use when Windows started if clear)
  33411.         bit 1: reserved (0)
  33412.  04h    DWORD    size in KB (may be zero, used only if flags bit 0 set)
  33413.  08h    DWORD    physical address (only if flags bit 0 set)
  33414. --------m-214402SF02-------------------------
  33415. INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
  33416.     AX = 4402h subfn 02h
  33417.     BX = file handle for device "EMMXXXX0"
  33418.     CX = 0002h (size of buffer in bytes)
  33419.     DS:DX -> buffer for memory manager version (see #0667)
  33420.         first byte must be 02h on entry
  33421. Return: CF clear if successful
  33422.         buffer filled
  33423.     CF set on error
  33424.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33425. Note:    this function is supported by Microsoft EMM386.EXE v4.45+ and
  33426.       CEMM v5.10+, and is intended for use by MS Windows as it starts up
  33427. SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh
  33428.  
  33429. Format of memory manager version:
  33430. Offset    Size    Description    (Table 0667)
  33431.  00h    BYTE    major version
  33432.  01h    BYTE    minor version (binary)
  33433. --------m-214402-----------------------------
  33434. INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
  33435.     AX = 4402h
  33436.     BX = file handle for device "EMMXXXX0"
  33437.     CX = size of buffer in bytes (varies, see below)
  33438.     DS:DX -> buffer for returned data (see #0668)
  33439.         first byte must be set on entry to indicate desired data
  33440. Return: CF clear if successful
  33441.         buffer filled
  33442.     CF set on error
  33443.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33444. Notes:    an error is returned if the number of bytes to be read does not match
  33445.       the number of bytes returned for the specified data item
  33446.     this function is part of the interface which allows MS Windows to
  33447.       cooperate with memory managers
  33448. SeeAlso: AX=4402h/SF=00h,AX=4402h/SF=01h,AX=4402h/SF=02h,INT 67/AX=FFA5h
  33449.  
  33450. Format of EMM386.EXE data buffer:
  33451. Offset    Size    Description    (Table 0668)
  33452.  00h    BYTE    (call) function
  33453.         03h get ???
  33454.         04h get ???
  33455. ---function 03h---
  33456.  00h    WORD    ???
  33457.  02h    WORD    ???
  33458. ---function 04h---
  33459.  00h    WORD    segment of UMB containing EMM386 code/data
  33460.  02h    WORD    number of paragraphs of EMM386 code/data in UMB
  33461.  04h    WORD    ???
  33462. ----------214402-----------------------------
  33463. INT 21 U - IFSHLP.SYS - GET ENTRY POINT
  33464.     AX = 4402h
  33465.     BX = file handle for device "IFS$HLP$"
  33466.     CX = 0008h (size of buffer in bytes)
  33467.     DS:DX -> buffer for entry point record (see #0570 at AH=3Fh"IFSHLP")
  33468. Return: CF clear if successful
  33469.         buffer filled
  33470.     CF set on error
  33471.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33472. SeeAlso: AH=3Fh"IFSHLP"
  33473. --------D-214403-----------------------------
  33474. INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
  33475.     AX = 4403h
  33476.     BX = file handle referencing character device
  33477.     CX = number of bytes to write
  33478.     DS:DX -> data to write
  33479. Return: CF clear if successful
  33480.         AX = number of bytes actually written
  33481.     CF set on error
  33482.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33483. Notes:    format of data is driver-specific (see below for some specific cases)
  33484.     if the file handle refers to "4DOSSTAK", the 4DOS (v2.x-3.03)
  33485.       KEYSTACK.SYS driver will push the specified characters on the
  33486.       keyboard stack; similarly for "NDOSSTAK", the NDOS KEYSTACK.SYS
  33487.       driver will push the characters onto the keyboard stack
  33488. SeeAlso: AX=4400h,AX=4402h,AX=4405h,INT 2F/AX=122Bh,INT 2F/AX=D44Dh
  33489. SeeAlso: INT 2F/AX=D44Fh
  33490. --------c-214403-----------------------------
  33491. INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
  33492.     AX = 4403h
  33493.     BX = handle for device "SMARTAAR"
  33494.     CX = number of bytes to write
  33495.     DS:DX -> SMARTDRV control block (see #0670)
  33496. Return: CF clear if successful
  33497.         AX = number of bytes actually written
  33498.         0000h if control block too small for given command
  33499.     CF set on error
  33500.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33501. SeeAlso: AX=4402h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
  33502.  
  33503. (Table 0669)
  33504. Values for SMARTDRV function code:
  33505.  00h    flush cache
  33506.  01h    flush and discard cache
  33507.  02h    disable caching (flushes and discards cache first)
  33508.  03h    enable caching
  33509.  04h    control write caching
  33510.  05h    set flushing tick count
  33511.  06h    lock cache contents
  33512.  07h    unlock cache contents
  33513.  08h    set flush-on-reboot flag
  33514.  09h    unused
  33515.  0Ah    control full-track caching
  33516.  0Bh    reduce cache size
  33517.  0Ch    increase cache size
  33518.  0Dh    set INT 13 chain address
  33519.  
  33520. Format of SMARTDRV control block:
  33521. Offset    Size    Description    (Table 0670)
  33522.  00h    BYTE    function code (see #0669)
  33523. ---functions 00h-03h,06h,07h---
  33524.  no additional fields
  33525. ---function 04h---
  33526.  01h    BYTE    write caching control action
  33527.         00h turn off write-through
  33528.         01h turn on write-through
  33529.         02h turn off write buffering (also flushes cache)
  33530.         03h turn on write buffering (also flushes cache)
  33531. ---function 05h---
  33532.  01h    WORD    number of timer ticks between cache flushes
  33533. ---function 08h---
  33534.  01h    BYTE    new flush-on-reboot flag (00h off, 01h on)
  33535. ---function 0Ah---
  33536.  01h    BYTE    full-track writes are
  33537.         00h not cached
  33538.         01h cached
  33539. ---functions 0Bh,0Ch---
  33540.  01h    WORD    number of 16K pages by which to increase/reduce cache size
  33541. ---function 0Dh---
  33542.  01h    DWORD    new address to which to chain on INT 13
  33543. Note:    the previous address is not preserved
  33544. --------d-214403-----------------------------
  33545. INT 21 - CD-ROM device driver - IOCTL OUTPUT
  33546.     AX = 4403h
  33547.     BX = file handle referencing character device for CD-ROM driver
  33548.     CX = number of bytes to write
  33549.     DS:DX -> control block (see #0671)
  33550. Return: CF clear if successful
  33551.         AX = number of bytes actually written
  33552.     CF set on error
  33553.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33554. SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h
  33555.  
  33556. Format of CR-ROM control block:
  33557. Offset    Size    Description    (Table 0671)
  33558.  00h    BYTE    function code
  33559.         00h eject disk
  33560.         01h lock/unlock door
  33561.         02h reset drive
  33562.         03h control audio channel
  33563.         04h write device control string
  33564.         05h close tray
  33565. ---functions 00h,02h,05h---
  33566.  no further fields
  33567. ---function 01h---
  33568.  01h    BYTE    lock function
  33569.         00h unlock door
  33570.         01h lock door
  33571. ---function 03h---
  33572.  01h    BYTE    input channel (0-3) for output channel 0
  33573.  02h    BYTE    volume for output channel 0
  33574.  03h    BYTE    input channel (0-3) for output channel 1
  33575.  04h    BYTE    volume for output channel 1
  33576.  05h    BYTE    input channel (0-3) for output channel 2
  33577.  06h    BYTE    volume for output channel 2
  33578.  07h    BYTE    input channel (0-3) for output channel 3
  33579.  08h    BYTE    volume for output channel 3
  33580. Note:    output channels 0 and 1 are left and right, 2 and 3 are left prime and
  33581.       right prime; a volume of 00h is off
  33582. ---function 04h---
  33583.  01h  N BYTEs    bytes to send directly to the CD-ROM drive without
  33584.           interpretation
  33585. --------d-214403-----------------------------
  33586. INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
  33587.     AX = 4403h
  33588.     BX = handle for device "SCSITAPE"
  33589.     CX = number of bytes to write
  33590.     DS:DX -> SCSITAPE control block (see #0672)
  33591. Return: CF clear if successful
  33592.         AX = number of bytes actually written
  33593.     CF set on error
  33594.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33595. SeeAlso: AX=4405h"ST-01",INT 78/AH=10h
  33596.  
  33597. Format of SCSITAPE control block:
  33598. Offset    Size    Description    (Table 0672)
  33599.  00h    WORD    command type
  33600.         'F' Format (argument 1 = interleave, argument 2 = format type)
  33601.         'E' Erase
  33602.         'R' Rewind
  33603.         'L' Load
  33604.         'N' No Load
  33605.         'S' Space (argument 1 = count, argument 2 = type)
  33606.         'M' File Mark (argument 1 = count)
  33607.         'A' Reassign
  33608.  02h    WORD    argument 1
  33609.  04h    WORD    argument 2
  33610.  06h    WORD    segment of command buffer
  33611.  08h    WORD    offset of command buffer
  33612.  0Ah    WORD    length of command buffer
  33613. --------E-214403-----------------------------
  33614. INT 21 U - AI Architects - OS/x86??? - API
  33615.     AX = 4403h
  33616.     BX = handle for device "AIA_OS"
  33617.     CX = number of bytes to write (ignored)
  33618.     DS:DX -> 12-byte buffer, first byte is command:
  33619.             81h installation check
  33620.             82h get API entry point
  33621.             84h uninstall
  33622. Return: CF clear if successful
  33623.         AX = number of bytes actually written
  33624.     CF set on error
  33625.         AX = error code (01h,05h,06h,0Ch,0Dh) (see #0811 at AH=59h)
  33626. Notes:    these functions are only available if the DOS extender was loaded as a
  33627.       device driver in CONFIG.SYS
  33628.     called by TKERNEL (a licensed version of AI Architects/Ergo OS/x86)
  33629. SeeAlso: INT 2F/AX=FBA1h/BX=0081h,INT 2F/AX=FBA1h/BX=0082h
  33630. Index:    installation check;OS/x86|entry point;OS/x86|uninstall;OS/x86
  33631.  
  33632. Format of buffer on return:
  33633. Offset    Size    Description    (Table 0673)
  33634.  00h  4 BYTEs    signature "IABH"
  33635. ---if func 81h---
  33636.  (no additional fields)
  33637. ---if func 82h---
  33638.  04h    DWORD    pointer to API entry point (see INT 2F/AX=FBA1h/BX=0082h)
  33639. ---if func 84h---
  33640.  04h    WORD    success indicator
  33641.  06h    WORD    segment of ???
  33642.  08h    WORD    segment of ??? memory block to free if nonzero
  33643.  0Ah    WORD    segment of ??? memory block to free if nonzero
  33644. --------V-214403-----------------------------
  33645. INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
  33646.     AX = 4403h
  33647.     BX = file handle for device "PGS1600$"
  33648.     CX = 0018h (size of buffer)
  33649.     DS:DX -> configuration buffer (see #0635 at AX=4402h"PGS1600")
  33650. Return: CF clear if successful
  33651.         AX = number of bytes actually written
  33652.     CF set on error
  33653.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33654. Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
  33655.       display adapter, which provides a 1600x1200 monochrome display as
  33656.       well as one of two emulations, MDA or CGA.
  33657. SeeAlso: AX=4402h"PGS1600"
  33658. --------N-214403-----------------------------
  33659. INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
  33660.     AX = 4403h
  33661.     BX = file handle referencing device "$IPCUST"
  33662.     CX, DS:DX ignored
  33663. Return: CF clear if successful
  33664.         AX destroyed
  33665.     CF set on error
  33666.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33667. Notes:    there are a total of 378h bytes of configuration data for IPCUST.SYS
  33668.       version 2.05.     If less than the entire data is read or written,
  33669.       the next read/write continues where the previous one ended; this
  33670.       call and AX=4402h both reset the location at which the next
  33671.       operation starts to zero
  33672.     v2.1+ uses a new configuration method, but allows the installation
  33673.       of IPCUST.SYS for backward compatibility with other software which
  33674.       must read the PC/TCP configuration
  33675. SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4402h"IPCUST"
  33676. --------V-214403-----------------------------
  33677. INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
  33678.     AX = 4403h
  33679.     BX = file handle referencing device "CPQ_MGES"
  33680.     DS:DX -> request packet (see #0674)
  33681.     CX ignored
  33682. Return: CF clear if successful
  33683.         AX destroyed
  33684.         data buffer filled (if applicable)
  33685.         first word of request packet set to number of bytes of data
  33686.           available (amount returned is smaller of this and requested
  33687.           amount)
  33688.     CF set on error
  33689.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33690. Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
  33691. SeeAlso: AX=4403h"RGDI"
  33692.  
  33693. Format of Compaq AG1024.SYS request packet:
  33694. Offset    Size    Description    (Table 0674)
  33695.  00h    WORD    function
  33696.         0000h get ??? (26h bytes)
  33697.         0001h get ??? (36h bytes)
  33698.         0002h set ??? (same as returned by function 0001h)
  33699.         0003h get ??? (6 bytes)
  33700.         0004h get ???
  33701.         0005h get ???
  33702.         0006h get ??? (10h bytes)
  33703.         0007h set ??? (same as returned by function 0006h)
  33704. ---functions 00h-03h,06h,07h---
  33705.  02h    WORD    size of data buffer
  33706.  04h    DWORD    -> buffer for function's data
  33707.  ---functions 04h,05h---
  33708.  02h    WORD    ???
  33709.  04h    WORD    size of data buffer
  33710.  06h    DWORD    -> buffer to receive data
  33711. --------V-214403-----------------------------
  33712. INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
  33713.     AX = 4403h
  33714.     BX = file handle referencing device "$$$$RGDI"
  33715.     DS:DX -> request packet (see #0675)
  33716.     CX ignored
  33717. Return: CF clear if successful
  33718.         AX destroyed
  33719.         data buffer filled (if applicable)
  33720.         first word of request packet set to number of bytes of data
  33721.           available (amount returned is smaller of this and requested
  33722.           amount)
  33723.     CF set on error
  33724.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33725. Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
  33726. SeeAlso: AX=4402h"RGDI",AX=4403h"CPQ_MGES"
  33727.  
  33728. Format of Compaq AG1024.SYS request packet:
  33729. Offset    Size    Description    (Table 0675)
  33730.  00h    WORD    function
  33731.         0000h get entry points
  33732.         0001h get ???
  33733.  02h    DWORD    address of buffer for returned data
  33734. --------m-214403SF01-------------------------
  33735. INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
  33736.     AX = 4403h subfn 01h
  33737.     BX = handle for device "386MAX$$"
  33738.     DS:DX -> BYTE 01h
  33739.     CX ignored
  33740. Return: DS:DX -> BYTE status (00h = successful)
  33741.     CF clear if successful
  33742.         AX destroyed
  33743.     CF set on error
  33744.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33745. Note:    this function will fail if any EMS or UMBs are in use
  33746. SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=05h
  33747. --------m-214403SF02-------------------------
  33748. INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
  33749.     AX = 4403h subfn 02h
  33750.     BX = handle for device "386MAX$$"
  33751.     DS:DX -> BYTE 02h
  33752.     CX ignored
  33753. Return: DS:DX -> BYTE status (00h = successful)
  33754.     CF clear if successful
  33755.         AX destroyed
  33756.     CF set on error
  33757.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33758. SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
  33759. --------m-214403SF03-------------------------
  33760. INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
  33761.     AX = 4403h subfn 03h
  33762.     BX = handle for device "386MAX$$"
  33763.     CX = number of bytes to copy (up to size of state buffer)
  33764.     DS:DX -> BYTE 03h followed by state buffer
  33765.           (see #0618 at AX=4402h"386MAX")
  33766. Return: CF clear if successful
  33767.         AX = number of bytes actually written
  33768.     CF set on error
  33769.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33770. Note:    the first byte of the buffer must be either 01h, 02h, or 03h
  33771.       (specifying the version of the state record) and the buffer must
  33772.       contain CX bytes AFTER the initial byte
  33773. SeeAlso: AX=4402h"386MAX"
  33774. --------m-214403SF05-------------------------
  33775. INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
  33776.     AX = 4403h subfn 05h
  33777.     BX = handle for device "386MAX$$"
  33778.     DS:DX -> BYTE 05h
  33779.     CX ignored
  33780. Return: CF clear if successful
  33781.         AX destroyed
  33782.     CF set on error
  33783.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33784. Desc:    specifies that 386MAX will only shift from AUTO to ON mode on standard
  33785.       EMS calls INT 67/AH=40h-5Dh
  33786. SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=06h
  33787. --------m-214403SF06-------------------------
  33788. INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
  33789.     AX = 4403h subfn 06h
  33790.     BX = handle for device "386MAX$$"
  33791.     DS:DX -> BYTE 06h
  33792.     CX ignored
  33793. Return: CF clear if successful
  33794.         AX destroyed
  33795.     CF set on error
  33796.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33797. Desc:    specified that 386MAX should shift from AUTO to ON mode on any INT 67
  33798.       call other than INT 67/AH=3Fh
  33799. SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
  33800. --------n-214403-----------------------------
  33801. INT 21 U - PenDOS PENDEV.SYS - ???
  33802.     AX = 4403h
  33803.     BX = file handle for device "$$PENDOS" or "$$PD_REG"
  33804.     CX = size of buffer
  33805.     DS:DX -> buffer containing ???
  33806. Return: CF clear if successful
  33807.         buffer filled
  33808.     CF set on error
  33809.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33810. Program: A limited version of PenDOS by Communication Intelligence Corporation,
  33811.       which provides pen capability to keyboard-based programs, is bundled
  33812.       with IBM DOS 6.1
  33813. Note:    this call sets the WORD at offset 1Ah into the device driver request
  33814.       header used to call the driver to 0000h.
  33815. SeeAlso: AX=4402h"PENDEV.SYS"
  33816. --------D-214404-----------------------------
  33817. INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
  33818.     AX = 4404h
  33819.     BL = drive number (00h = default, 01h = A:, etc.)
  33820.     CX = number of bytes to read
  33821.     DS:DX -> buffer
  33822. Return: CF clear if successful
  33823.         AX = number of bytes actually read
  33824.     CF set on error
  33825.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33826. Note:    format of data is driver-specific
  33827. SeeAlso: AX=4402h,AX=4405h,INT 2F/AX=122Bh
  33828. --------k-214404-----------------------------
  33829. INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
  33830.     AX = 4404h
  33831.     BL = drive number (00h = default, 01h = A:, etc.)
  33832.     CX = 0004h
  33833.     DS:DX -> DWORD buffer to receive device driver address
  33834. Note:    In addition to returning the address of the Stacker device driver,
  33835.       this call also sets the volume number at offset 3Eh in the device
  33836.       driver (see INT 25/AX=CDCDh)
  33837. SeeAlso: INT 25/AX=CDCDh
  33838. --------k-214404-----------------------------
  33839. INT 21 - Stacker - GET STACVOL FILE SECTORS
  33840.     AX = 4404h
  33841.     BL = drive number (0 is current drive)
  33842.     CX = byte count (i.e., 200h = 1 sector)
  33843.     DS:DX -> buffer (see #0676)
  33844. Return: Data Buffer contains the number of sectors requested from the
  33845.       STACVOL physical file for the drive specified.
  33846.  
  33847. Format of Stacker buffer:
  33848. Offset    Size    Description    (Table 0676)
  33849.  00h    WORD    01CDh
  33850.  02h    WORD    sector count
  33851.  04h    DWORD    number of starting sector
  33852.  08h    DWORD    far pointer to Data Buffer
  33853. --------k-214404-----------------------------
  33854. INT 21 - DUBLDISK.SYS v2.6 - GET INFO
  33855.     AX = 4404h
  33856.     BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.)
  33857.     CX = number of bytes (000Ah-0014h, call ignored otherwise)
  33858.     DS:DX -> data record (see #0677)
  33859. Return: CF clear if successful
  33860.         AX = number of bytes read
  33861.     CF set on error
  33862.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33863. Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk
  33864.       expander by Vertisoft Systems, Inc.
  33865. Note:    the installation check for v2.6 consists of scanning memory for the
  33866.       signature "FAT 2.6  byte:", which is immediately followed by a data
  33867.       table (see #0678)
  33868. BUG:    VOPT (a disk optimizer by Golden Bow Software) assumes that any driver
  33869.       which returns the "correct" number of bytes when the first word of
  33870.       the buffer for the data record contains the signature value 4444h is
  33871.       DoubleDisk; a workaround is for the non-DoubleDisk driver to return
  33872.       no data if the signature is present
  33873. SeeAlso: AX=440Dh
  33874. Index:    installation check;DUBLDISK.SYS
  33875.  
  33876. Format of DUBLDISK data record:
  33877. Offset    Size    Description    (Table 0677)
  33878.  00h    WORD    (call) signature 4444h
  33879.  02h    BYTE    (call) function
  33880.             00h ???
  33881.             01h ???
  33882. ---function 00h---
  33883.  02h    BYTE    (return) ???
  33884.  03h    BYTE    (return) ???
  33885. ---function 01h---
  33886.  02h    WORD    (return) 4444h
  33887.  04h    WORD    allocation unit size???
  33888.  06h    WORD    ???
  33889.  08h    WORD    ???
  33890.  0Ah    BYTE    ???
  33891.  
  33892. Format of DUBLDISK signature data table:
  33893. Offset    Size    Description    (Table 0678)
  33894.  00h  5 BYTEs    ???
  33895.  05h    BYTE    first drive number
  33896.  06h    BYTE    number of drives
  33897.  07h    ???
  33898. --------k-214404-----------------------------
  33899. INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
  33900.     AX = 4404h
  33901.     BL = drive number (00h = default, 01h = A:, etc)
  33902.     CX = 000Ah (size of DSPACKET structure)
  33903.     DS:DX -> DSPACKET structure (see #0679)
  33904. Return: CF clear if IOCTL successful -- check DSPACKET for actual status
  33905.         AX = number of bytes actually transferred
  33906.     CF set on error
  33907.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33908. SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
  33909.  
  33910. Format of DoubleSpace DSPACKET structure:
  33911. Offset    Size    Description    (Table 0679)
  33912.  00h    WORD    signature 444Dh ("DM")
  33913.  02h    BYTE    command code
  33914.         46h ('F') flush internal caches
  33915.         49h ('I') flush and invalidate internal caches
  33916.  03h    WORD    result code
  33917.         (return) 4F4Bh ("OK") if successful, else unchanged
  33918.  05h  5 BYTEs    padding
  33919. --------k-214404-----------------------------
  33920. INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
  33921.     AX = 4404h
  33922.     BL = drive number (00h = default, 01h = A:, etc)
  33923.     CX = size of DSPACKET structure (ignored in DOS 6.2)
  33924.     DS:DX -> DSPACKET structure (see #0680)
  33925. Return: CF clear if IOCTL successful -- check DSPACKET for actual status
  33926.         AX = number of bytes actually transferred
  33927.     CF set on error
  33928.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33929. SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
  33930.  
  33931. Format of DoubleSpace DSPACKET structure:
  33932. Offset    Size    Description    (Table 0680)
  33933.  00h    WORD    signature 444Dh ("DM")
  33934.  02h    BYTE    command code
  33935.         53h ('S') get ??? for specified drive
  33936.  03h    WORD    result code
  33937.         (return) 4F4Bh ("OK") if successful, else unchanged
  33938.  05h    DWORD    (return) pointer to 96-byte ??? data
  33939.  09h    DWORD    (return) pointer to ??? data
  33940.  0Dh  3 BYTEs    reserved
  33941. --------d-214404-----------------------------
  33942. INT 21 U - xDISK v3.31 - CONFIGURE
  33943.     AX = 4404h
  33944.     BL = drive number (00h = default, 01h = A:, etc)
  33945.     CX = 0047h (length of version string)
  33946.     DS:DX -> 79-byte buffer for version string and ???
  33947.     DS:0081h = commandline containing new switches for driver
  33948. Return: CF clear if successful
  33949.         AX = number of bytes actually transferred
  33950.     CF set on error
  33951.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33952. Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
  33953. SeeAlso: AX=4405h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
  33954. --------c-214404-----------------------------
  33955. INT 21 - COMBI-disk v1.13 - GET DATA RECORD
  33956.     AX = 4404h
  33957.     BL = drive number (00h = default, 01h = A:, etc)
  33958.     CX = 0032h (length of data packet)
  33959.     DS:DX -> buffer for data packet (see #0681)
  33960. Return: CF clear if successful
  33961.         AX = number of bytes actually transferred
  33962.     CF set on error
  33963.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  33964. Program: COMBI-disk is a shareware combination cache and RAMdisk sharing a
  33965.       single pool of memory by Vadim V. Vlasov
  33966. Note:    the installation check consists of scanning the valid drives for one
  33967.       which returns a correctly-sized data packet with the proper
  33968.       signature in the first field
  33969. SeeAlso: AX=4405h"COMBI"
  33970. Index:    installation check;COMBI-disk
  33971.  
  33972. Format of COMBI-disk data packet:
  33973. Offset    Size    Description    (Table 0681)
  33974.  00h  6 BYTEs    ASCIZ signature "COMBI"
  33975.  06h    WORD    version (high byte = major, low = decimal minor version)
  33976.  08h    BYTE    current options (see below)
  33977.  09h    BYTE    sectors per allocation block
  33978.  0Ah    WORD    maximum buffer in KB
  33979.  0Ch    WORD    current buffer in KB (less than max if XMS memory being lent)
  33980.  0Eh    WORD    total number of allocation blocks
  33981.  10h    WORD    current number of allocation blocks
  33982.  12h    WORD    number of blocks being used by RAM disk
  33983.  14h    WORD    number of blocks being used by cache or unused
  33984.  16h    WORD    number of dirty cache blocks
  33985.  18h    WORD    number of blocks which could not be written out due to errors
  33986.  1Ah    WORD    total number of read requests
  33987.  1Ch    WORD    total number of sectors read
  33988.  1Eh    WORD    number of BIOS read requests (cache misses)
  33989.  20h    WORD    number of sectors read via BIOS (cache misses)
  33990.  22h    WORD    total number of write requests
  33991.  24h    WORD    total number of sectors written
  33992.  26h    WORD    number of BIOS write requests
  33993.  28h    WORD    number of sectors written via BIOS
  33994.  2Ah    WORD    number of RAM disk read requests
  33995.  2Ch    WORD    number of sectors read from RAM disk
  33996.  2Eh    WORD    number of RAM disk write requests
  33997.  30h    WORD    number of sectors written to RAM disk
  33998. --------d-214404-----------------------------
  33999. INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
  34000.     AX = 4404h
  34001.     BL = drive number (00h = default, 01h = A:, etc)
  34002.     CX = 001Ah (length of data packet)
  34003.     DS:DX -> buffer for data packet (see #0682)
  34004. Return: CF clear if successful
  34005.         AX = number of bytes actually transferred
  34006.     CF set on error
  34007.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34008. Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
  34009.       Peter C. Gutmann
  34010. SeeAlso: AX=4405h"SFS"
  34011.  
  34012. Format of SFS data packet:
  34013. Offset    Size    Description    (Table 0682)
  34014.  00h  4 BYTEs    signature string "SFS1"
  34015.  04h    WORD    SFS unit number (0-based)
  34016.  06h    WORD    drive on which the SFS volume is mounted
  34017.  08h    DWORD    sector offset of logical volume from start of physical volume
  34018.         0 if logical volume = physical volume
  34019.  0Ch    WORD    flag: 00h = no disk mounted, 01h = disk mounted
  34020.  0Eh    WORD    flag: 00h read/write, 01h read-only
  34021.  10h    WORD    quick-unmount hotkey (high byte = shift state, low = scan code)
  34022.  12h    WORD    auto-unmount time in minutes, or 0000h if already expired, or
  34023.         FFFFh if not set
  34024.  14h    WORD    time in minutes remaining before auto-unmount
  34025.  16h    WORD    internal driver check code
  34026.         0000h no error
  34027.         0001h driver consistency check failed
  34028.         0002h unit consistency check failed
  34029.  18h    WORD    disk access mode
  34030.         0000h BIOS
  34031.         0001h IDE direct access
  34032.         0002h SCSI direct access
  34033. --------D-214405-----------------------------
  34034. INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
  34035.     AX = 4405h
  34036.     BL = drive number (00h = default, 01h = A:, etc)
  34037.     CX = number of bytes to write
  34038.     DS:DX -> data to write
  34039. Return: CF clear if successful
  34040.         AX = number of bytes actually written
  34041.     CF set on error
  34042.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34043. Note:    format of data is driver-specific
  34044. SeeAlso: AX=4403h,AX=4404h,INT 2F/AX=122Bh
  34045. --------d-214405-----------------------------
  34046. INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
  34047.     AX = 4405h
  34048.     BX = drive number (00h = default, 01h = A:, etc)
  34049.     CX = number of bytes to write
  34050.     DS:DX -> SCSIDISK control block (see also #0672 at AX=4403h"ST-01")
  34051. Return: CF clear if successful
  34052.         AX = number of bytes actually written
  34053.     CF set on error
  34054.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34055. SeeAlso: AX=4403h"ST-01"
  34056. --------k-214405-----------------------------
  34057. INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
  34058.     AX = 4405h
  34059.     BL = drive number (00h = default, 01h = A:, etc)
  34060.     CX = 000Ah (size of DSPACKET structure)
  34061.     DS:DX -> DSPACKET structure (see #0683)
  34062. Return: CF clear if IOCTL successful -- check DSPACKET for actual status
  34063.         AX = number of bytes actually transferred
  34064.     CF set on error
  34065.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34066. Note:    this call is identical to the documented AX=4404h
  34067. SeeAlso: AX=4404h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
  34068.  
  34069. Format of DoubleSpace DSPACKET structure:
  34070. Offset    Size    Description    (Table 0683)
  34071.  00h    WORD    signature 444Dh ("DM")
  34072.  02h    BYTE    command code
  34073.         46h ('F') flush internal caches
  34074.         49h ('I') flush and invalidate internal caches
  34075.  03h    WORD    result code
  34076.         (return) 4F4Bh ("OK") if successful, else unchanged
  34077.  05h  5 BYTEs    padding
  34078. --------d-214405-----------------------------
  34079. INT 21 U - xDISK v3.31 - ???
  34080.     AX = 4405h
  34081.     BL = drive number (00h = default, 01h = A:, etc)
  34082.     CX = number of bytes to write
  34083.     DS:DX -> buffer containing version string
  34084.     ???
  34085. Return: CF clear if successful
  34086.         AX = number of bytes actually transferred
  34087.     CF set on error
  34088.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34089. Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
  34090. SeeAlso: AX=4404h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
  34091. --------d-214405-----------------------------
  34092. INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
  34093.     AX = 4405h
  34094.     BL = drive number (00h = default, 01h = A:, etc) for RAM disk
  34095.     CX = number of bytes to write
  34096.     DS:DX -> buffer containing command packet (see #0685)
  34097. Return: CF clear if successful
  34098.         AX = number of bytes actually transferred
  34099.     CF set on error
  34100.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34101. SeeAlso: AX=4404h"COMBI"
  34102.  
  34103. (Table 0684)
  34104. Values for COMBI-disk command code:
  34105.  80h    flush cache
  34106.  81h    change options byte
  34107.  82h    shrink memory
  34108.  83h    expand memory
  34109.  84h    get dirty block information
  34110.  85h    reset write errors
  34111.  86h    reset counters
  34112.  
  34113. Format of COMBI-disk command packet:
  34114. Offset    Size    Description    (Table 0685)
  34115.  00h    WORD    version
  34116.  02h    BYTE    command code (see #0684)
  34117. ---command code 80h---
  34118.  no additional fields
  34119. ---command code 81h---
  34120.  03h    BYTE    new options byte (see #0686)
  34121. ---command code 82h---
  34122.  03h    WORD    number of KB to release
  34123. ---command code 83h---
  34124.  03h    WORD    number of KB to expand
  34125. ---command code 84h---
  34126.  03h    DWORD    -> buffer for block info (see #0687)
  34127. ---command code 85h---
  34128.  03h    DWORD    block ID
  34129. ---command code 86h---
  34130.  03h    BYTE    which counters to reset
  34131.         bit 0: hard disk read counts
  34132.         bit 1: hard disk write counts
  34133.         bit 2: RAM disk read/write counts
  34134. Note:    multiple commands may be placed in a single packet by stringing
  34135.       together as many command/argument pairs as desired
  34136.  
  34137. Bitfields for COMBI-disk options byte:
  34138. Bit(s)    Description    (Table 0686)
  34139.  0    cache off
  34140.  1    cache frozen
  34141.  2    write caching enabled
  34142.  3    delayed writing disabled
  34143.  5    fix memory allocation (no XMS lending)
  34144.  6    no 'sector not found' error
  34145.  
  34146. Format of COMBI-disk block info:
  34147. Offset    Size    Description    (Table 0687)
  34148.  00h    DWORD    block ID
  34149.  04h    BYTE    bitmask of valid sectors in block
  34150.  05h    BYTE    bitmask of dirty sectors in block
  34151.  06h    BYTE    last error returned by BIOS
  34152.  07h    BYTE    number of errors
  34153. --------D-214405-----------------------------
  34154. INT 21 - SFS v1.00 - DRIVER CONTROL
  34155.     AX = 4405h
  34156.     BL = drive number (00h = default, 01h = A:, etc)
  34157.     CX = number of bytes to write
  34158.     DS:DX -> data to write (see #0689)
  34159. Return: CF clear if successful
  34160.         AX = number of bytes actually written
  34161.     CF set on error
  34162.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34163. Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
  34164.       Peter C. Gutmann
  34165. SeeAlso: AX=4404h"SFS"
  34166.  
  34167. (Table 0688)
  34168. Values for SFS control function:
  34169.  00h    "PACKET_SET_DISKINFO"     set disk parameters
  34170.  01h    "PACKET_SET_KEYINFO"     set keying information
  34171.  02h    "PACKET_SET_READONLY"     select read/write or read-only
  34172.  03h    "PACKET_SET_DRIVENO"     set drive number to mount
  34173.  04h    "PACKET_SET_MOUNTSTATUS" set mount status
  34174.  05h    "PACKET_SET_UNMOUNT"     set/clear quick-unmount hotkey
  34175.  06h    "PACKET_SET_TIMEOUT"     set/clear auto-unmount timeout
  34176.  
  34177. Format of SFS control data packet:
  34178. Offset    Size    Description    (Table 0689)
  34179.  00h    WORD    signature 4330h ('C0')
  34180.  02h    WORD    function (see #0688)
  34181. ---function 00h---
  34182.  04h    WORD    sector size in bytes
  34183.  06h    BYTE    sectors per cluster
  34184.  07h    WORD    number of boot sectors
  34185.  09h    BYTE    number of copies of FAT
  34186.  0Ah    WORD    size of root directory in entries
  34187.  0Ch    WORD    number of sectors on disk, 16-bit
  34188.  0Eh    BYTE    media descriptor byte
  34189.  0Fh    WORD    sectors per FAT
  34190.  11h    WORD    sectors per track
  34191.  13h    WORD    number of heads
  34192.  15h    DWORD    number of hidden sectors
  34193.  19h    DWORD    number of sectors on disk, 32-bit
  34194. ---function 01h---
  34195.  04h 20 BYTEs    master IV for encrypted disk
  34196.  18h 64 BYTEs    NDC/SHS keying information
  34197. ---function 02h---
  34198.  04h    WORD    read-only state: 00h read-only, 01h read/write
  34199. ---function 03h---
  34200.  04h    WORD    drive number (see #0690)
  34201.  06h    DWORD    sector offset of logical volume from start of physical volume
  34202.         0 if logical volume = physical volume
  34203. ---function 04h---
  34204.  04h    WORD    mount status (00h unmounted, 01h mounted)
  34205. ---function 05h---
  34206.  04h    WORD    hotkey (high byte = shift state, low byte = scan code or 00h)
  34207.         0000h to disable hotkey
  34208. ---function 06h---
  34209.  04h    WORD    timeout in minutes before automatic unmount
  34210.         0000h to disable auto-unmount
  34211. Notes:    the data for function 00h corresponds to a DOS BPB (see AH=53h)
  34212.     functions 00h, 01h, and 03h automatically unmount the encrypted drive
  34213.     unmounting a drive with function 04h also destroys the encryption
  34214.       information in the driver and forces all dirty buffers to be flushed
  34215.  
  34216. Bitfields for SFS drive number:
  34217. Bit(s)    Description    (Table 0690)
  34218.  15-12    drive access mode
  34219.     0000 BIOS access
  34220.     0001 direct IDE access
  34221.     0010 direct SCSI access
  34222. ---if BIOS access---
  34223.  11-8    unused (0)
  34224.  7-0    BIOS drive number
  34225. ---if IDE access---
  34226.  11-8    unused (0)
  34227.  7-0    IDE drive number
  34228. ---if SCSI access---
  34229.  11-8    SCSI host number
  34230.  7-4    SCSI target ID
  34231.  3-0    SCSI logical unit number
  34232. --------D-214406-----------------------------
  34233. INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
  34234.     AX = 4406h
  34235.     BX = file handle
  34236. Return: CF clear if successful
  34237.         AL = input status
  34238.         00h not ready (device) or at EOF (file)
  34239.         FFh ready
  34240.     CF set on error
  34241.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34242. Note:    files may not register as being at EOF if positioned there by AH=42h
  34243. SeeAlso: AX=4407h,INT 2F/AX=122Bh
  34244. --------D-214407-----------------------------
  34245. INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
  34246.     AX = 4407h
  34247.     BX = file handle
  34248. Return: CF clear if successful
  34249.         AL = input status
  34250.         00h not ready
  34251.         FFh ready
  34252.     CF set on error
  34253.         AX = error code (01h,05h,06h,0Dh) (see #0811 at AH=59h)
  34254. Note:    for DOS 2+, files are always ready for output, even if the disk is
  34255.       full or no media is in the drive
  34256. SeeAlso: AX=4406h,INT 2F/AX=122Bh
  34257. --------D-214408-----------------------------
  34258. INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
  34259.     AX = 4408h
  34260.     BL = drive number (00h = default, 01h = A:, etc)
  34261. Return: CF clear if successful
  34262.         AX = media type (0000h removable, 0001h fixed)
  34263.     CF set on error
  34264.         AX = error code (01h,0Fh) (see #0811 at AH=59h)
  34265. SeeAlso: AX=4400h,AX=4409h,INT 2F/AX=122Bh
  34266. --------D-214409-----------------------------
  34267. INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
  34268.     AX = 4409h
  34269.     BL = drive number (00h = default, 01h = A:, etc)
  34270. Return: CF clear if successful
  34271.         DX = device attribute word
  34272.         bit 15: drive is SUBSTituted
  34273.         bit 12: drive is remote
  34274.         bit  9: direct I/O not allowed
  34275.     CF set on error
  34276.         AX = error code (01h,0Fh) (see #0811 at AH=59h)
  34277. Note:    on local drives, DX bits not listed above are the attribute word from
  34278.       the device driver header (see #0785 at AH=52h); for remote drives,
  34279.       the other bits appear to be undefined for DOS versions prior to 5.0
  34280.       (they are all cleared in DOS 5+)
  34281.     checking whether DX=0800h on return appears to be a fairly reliable
  34282.       method for detecting Microsoft's RAMDRIVE
  34283. SeeAlso: AX=4400h,AX=4408h,AX=440Ah,INT 2F/AX=122Bh
  34284. --------D-21440A-----------------------------
  34285. INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
  34286.     AX = 440Ah
  34287.     BX = handle
  34288. Return: CF clear if successful
  34289.         DX = attribute word (as stored in SFT)
  34290.         bit 15: set if remote
  34291.         bit 14: date/time not set on close
  34292.     CF set on error
  34293.         AX = error code (01h,06h) (see #0811 at AH=59h)
  34294. Notes:    if file is remote, Novell Advanced NetWare 2.0 returns the number of
  34295.       the file server on which the handle is located in CX
  34296.     DR-DOS 3.41 and 5.0 clear all bits of DX except bit 15
  34297. SeeAlso: AX=4400h,AX=4409h,AH=52h,INT 2F/AX=122Bh
  34298. --------D-21440B-----------------------------
  34299. INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
  34300.     AX = 440Bh
  34301.     CX = pause between retries (default 1)
  34302.     DX = number of retries (default 3)
  34303. Return: CF clear if successful
  34304.     CF set on error
  34305.         AX = error code (01h) (see #0811 at AH=59h)
  34306. Notes:    delay is dependent on processor speed (value in CX specifies number of
  34307.       64K-iteration empty loops to execute)
  34308.     if DX=0000h on entry, the retry count is left unchanged
  34309. SeeAlso: AH=52h,INT 2F/AX=1224h,INT 2F/AX=122Bh
  34310. --------D-21440C-----------------------------
  34311. INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
  34312.     AX = 440Ch
  34313.     BX = device handle
  34314.     CH = category code (see #0691)
  34315.     CL = function number (see #0692)
  34316.     DS:DX -> parameter block (see #0693,#0694,#0695,#0696,#0697,#0698)
  34317.     SI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
  34318.     DI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
  34319. Return: CF set on error
  34320.         AX = error code (see #0811 at AH=59h)
  34321.     CF clear if successful
  34322.         DS:DX -> iteration count if CL=65h
  34323.         SI = returned value (European MS-DOS 4.0, OS/2 comp box)
  34324.         DI = returned value (European MS-DOS 4.0, OS/2 comp box)
  34325. Note:    DR-DOS 3.41 and 5.0 return error code 16h on CL=45h,65h if the device
  34326.       does not support a retry counter
  34327. SeeAlso: AX=440Dh,INT 2F/AX=0802h,INT 2F/AX=122Bh,INT 2F/AX=14FFh
  34328. SeeAlso: INT 2F/AX=1A01h
  34329.  
  34330. (Table 0691)
  34331. Values for IOCTL category code:
  34332.  00h    unknown (DOS 3.3+)
  34333.  01h    COMn: (DOS 3.3+)
  34334.  03h    CON (DOS 3.3+)
  34335.  05h    LPTn:
  34336.  9Eh    Media Access Control driver (STARLITE)
  34337.  00h-7Fh reserved for Microsoft
  34338.  80h-FFh reserved for OEM/user-defined
  34339.  
  34340. (Table 0692)
  34341. Values for generic character IOCTL function:
  34342.  00h    MAC driver Bind (STARLITE)
  34343.  45h    set iteration (retry) count
  34344.  4Ah    select code page
  34345.  4Ch    start code-page preparation
  34346.  4Dh    end code-page preparation
  34347.  5Fh    set display information (DOS 4+)
  34348.  65h    get iteration (retry) count
  34349.  6Ah    query selected code page
  34350.  6Bh    query prepare list
  34351.  7Fh    get display information (DOS 4+)
  34352. Note:    bit assignments for function code:
  34353.         bit 7: set to ignore if unsupported, clear to return error
  34354.         bit 6: set if passed to driver, clear if intercepted by DOS
  34355.         bit 5: set if queries data from device, clear if sends command
  34356.         bits 4-0: subfunction
  34357.  
  34358. Format of parameter block for function 00h:
  34359. Offset    Size    Description    (Table 0693)
  34360.  00h  8 BYTEs    ASCIZ signature "STARMAC"
  34361.  08h    WORD    version
  34362.  0Ah    WORD    flags
  34363.         bit 0: media requires connect or listen request before use
  34364.         bit 1: network is a LAN (broadcast/multicast supported)
  34365.         bit 2: point-to-point network
  34366.  0Ch    WORD    handle for use with MAC driver's private interface (filled in
  34367.         by MAC driver)
  34368.  0Eh    WORD    context
  34369.  10h    WORD    approximate speed in KB/sec (filled in by MAC driver)
  34370.  12h    WORD    approximate cost in cents per hour (filled in by MAC driver)
  34371.  14h    WORD    maximum packet size in bytes (filled in by MAC driver)
  34372.  16h    WORD    addressing format (filled in by MAC driver)
  34373.         0000h general addressing
  34374.         0001h Ethernet addressing
  34375.         0002h Token Ring addressing
  34376.         0003h Token Bus addressing
  34377.  18h    DWORD    Send entry point (filled in by MAC driver)
  34378.  1Ch    DWORD    RegisterEventHandler entry point (filled in by MAC driver)
  34379.  20h    DWORD    SetPacketFilter entry point (filled in by MAC driver)
  34380.  24h    DWORD    UnBind entry point (filled in by MAC driver)
  34381.  
  34382. Format of parameter block for function 45h:
  34383. Offset    Size    Description    (Table 0694)
  34384.  00h    WORD    number of times output is attempted before driver assumes
  34385.           device is busy
  34386.  
  34387. Format of parameter block for functions 4Ah and 6Ah:
  34388. Offset    Size    Description    (Table 0695)
  34389.  00h    WORD    length of data
  34390.  02h    WORD    code page ID
  34391.  04h 2N BYTEs    DCBS (double byte character set) lead byte range
  34392.           start/end for each of N ranges (DOS 4.0)
  34393.     WORD    0000h  end of data (DOS 4.0)
  34394.  
  34395. Format of parameter block for function 4Ch:
  34396. Offset    Size    Description    (Table 0696)
  34397.  00h    WORD    flags
  34398.         DISPLAY.SYS = 0000h
  34399.         PRINTER.SYS bit 0 clear to prepare downloaded font, set to
  34400.             prepare cartridge selection
  34401.  02h    WORD    length of remainder of parameter block
  34402.  04h    WORD    number of code pages following
  34403.  06h  N WORDs    code page 1,...,N
  34404.  
  34405. Format of parameter block for function 4Dh:
  34406. Offset    Size    Description    (Table 0697)
  34407.  00h    WORD    length of data
  34408.  02h    WORD    code page ID
  34409.  
  34410. Format of parameter block for functions 5Fh and 7Fh:
  34411. Offset    Size    Description    (Table 0698)
  34412.  00h    BYTE    level (0 for DOS 4.x-6.0)
  34413.  01h    BYTE    reserved (0)
  34414.  02h    WORD    length of following data (14)
  34415.  04h    WORD    control flags
  34416.         bit 0 set for blink, clear for intensity
  34417.         bits 1-15 reserved
  34418.  06h    BYTE    mode type (1=text, 2=graphics)
  34419.  07h    BYTE    reserved (0)
  34420.  08h    WORD    colors
  34421.         0000h = monochrome
  34422.         else N bits per pixel
  34423.  0Ah    WORD    pixel columns
  34424.  0Ch    WORD    pixel rows
  34425.  0Eh    WORD    character columns
  34426.  10h    WORD    character rows
  34427.  
  34428. Format of parameter block for function 6Bh:
  34429. Offset    Size    Description    (Table 0699)
  34430.  00h    WORD    length of following data
  34431.  02h    WORD    number of hardware code pages
  34432.  04h  N WORDs    hardware code pages 1,...,N
  34433.     WORD    number of prepared code pages
  34434.       N WORDs    prepared code pages 1,...,N
  34435. --------d-21440C-----------------------------
  34436. INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
  34437.     AX = 440Ch
  34438.     BX = device handle
  34439.     CH = category code
  34440.         07h tape (ASPITAPE.SYS)
  34441.     CL = function
  34442.         01h "mtop" - perform tape operation
  34443.         02h "mtget" - get tape status
  34444.         03h ignore end-of-tape errors
  34445.         04h enable end-of-tape errors
  34446.     DS:DX -> parameter block (see #0700,#0701)
  34447. Return: CF set on error
  34448.         AX = error code (see #0811 at AH=59h)
  34449.     CF clear if successful
  34450.         DS:DX -> data block
  34451. Notes:    This device driver is a simple DOS interface to the Adaptec Advanced
  34452.       SCSI Programming Interface (ASPI).  It provides the following device
  34453.       names as access to the SCSI tape, 'RMTx' (rewind on close) and
  34454.       'NRMTx' (NO rewind on close) where x can go from 0 to 3.  There may
  34455.       also be the following names 'MTx' and 'NMTx' which default to 1024
  34456.       byte blocks.    The names may also have a '$' appended to try and make
  34457.       them unique from file names of 'RMT0' etc.
  34458.     once opend these devices must be put into RAW mode
  34459. SeeAlso: AX=4402h"ASPI"
  34460.  
  34461. Format of ASPITAPE.SYS mtop parameter block:
  34462. Offset    Size    Description    (Table 0700)
  34463.  00h    WORD    operation code
  34464.         00h "MTWEOF" - write an end-of-file record
  34465.         01h "MTFSF" - forward space file
  34466.         02h "MTBSF" - backward space file
  34467.         03h "MTFSR" - forward space record
  34468.         04h "MTBSR" - backward space record
  34469.         05h "MTREW" - rewind
  34470.         06h "MTOFFL" - rewind and unload
  34471.         07h "MTNOP" - perform TEST UNIT READY
  34472.  02h    DWORD    repetition count
  34473.  
  34474. Format of ASPITAPE.SYS mtget parameter block:
  34475. Offset    Size    Description    (Table 0701)
  34476.  00h    BYTE    ASPI host ID
  34477.  01h    BYTE    SCSI target ID
  34478.  02h    BYTE    SCSI logical unit number
  34479.  03h    BYTE    device parameters
  34480.         bit 0: drive must use fixed-block read and write
  34481.         bit 7: drive is an ASPI device
  34482.  04h    BYTE    current device state (see #0702)
  34483.  05h    BYTE    unit number within driver
  34484.  06h    WORD    fixed block blocksize
  34485.  08h    BYTE    last SCSI status
  34486.  09h    BYTE    last SCSI sense key
  34487.  0Ah    WORD    last SCSI opcode (packed) (see #0703)
  34488.  0Ch    WORD    residual bytes from SCSI opcode
  34489.  
  34490. Bitfields for ASPITAPE.SYS current device state:
  34491. Bit(s)    Description    (Table 0702)
  34492.  0    device currently opened in buffered mode
  34493.  1    drive currently opened in nonbuffered mode
  34494.  2    rewind drive on last close
  34495.  3    drive has been written on
  34496.  4    drive has been read from
  34497.  5    next read will return 0 bytes
  34498.  6    EOM will resemble EOF
  34499.  7    drive may be busy rewinding
  34500.  
  34501. Bitfields for SCSI opcode:
  34502. Bit(s)    Description    (Table 0703)
  34503.  0-7    SCSI operation (SCSI packet byte 0)
  34504.  8-10    SCSI flags (SCSI packet byte 1)
  34505.  11-12    ASPI "Direction Bits" (ASPI SRB byte 3)
  34506. --------D-21440D-----------------------------
  34507. INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
  34508.     AX = 440Dh
  34509.     BL = drive number (00h=default,01h=A:,etc)
  34510.     CH = category code (see #0704)
  34511.     CL = minor code (function) (see #0705)
  34512.     DS:DX -> (DOS) parameter block (see #0706,#0708,#0709,#0710,#0711)
  34513.     SI:DI -> (OS/2 comp box) parameter block (see #0712,#0713,#0714,#0715)
  34514. Return: CF set on error
  34515.         AX = error code (01h,02h) (see #0811 at AH=59h)
  34516.     CF clear if successful
  34517.         DS:DX -> data block if CL=60h or CL=61h
  34518. Notes:    DOS 4.01 seems to ignore the high byte of the number of directory
  34519.       entries in the BPB for diskettes.
  34520.     functions 46h and 66h undocumented in DOS 4.x, documented for DOS 5+
  34521.     the DUBLDISK.SYS v2.6 driver only supports minor codes 60h and 67h
  34522.     DR-DOS 3.41-6.0 only support minor codes 40h-42h and 60h-62h; all
  34523.       other minor codes return error code 16h
  34524.     some PCMCIA calls reportedly appear to be dangerous for MS-DOS versions
  34525.       prior to 5.0
  34526. SeeAlso: AX=440Ch,AH=69h,INT 2F/AX=0802h,INT 2F/AX=122Bh
  34527.  
  34528. (Table 0704)
  34529. Values for block device IOCTL category code:
  34530.  08h    disk drive
  34531.  00h-7Fh reserved for Microsoft
  34532.  80h-FFh reserved for OEM/user-defined
  34533.  
  34534. (Table 0705)
  34535. Values for generic block IOCTL minor code:
  34536.  00h    (OS/2)    \ used to lock/unlock a drive
  34537.  01h    (OS/2)    /
  34538.  40h    set device parameters
  34539.  41h    write logical device track
  34540.  42h    format and verify logical device track
  34541.  46h    (DOS 4+) set volume serial number (see also AH=69h)
  34542.  47h    (DOS 4+) set access flag
  34543.  50h    (PCMCIA) attribute memory write
  34544.  51h    (PCMCIA) common memory write
  34545.  52h    (PCMCIA) force media change (DOS 5+ ???)
  34546.  53h    (PCMCIA) erase drive
  34547.  54h    (PCMCIA) erase media
  34548.  56h    (PCMCIA) set erase status callback
  34549.  57h    (PCMCIA) append Card Information Structure (CIS) tuple
  34550.  58h    (PCMCIA) erase CIS tuples
  34551.  60h    get device parameters
  34552.  61h    read logical device track
  34553.  62h    verify logical device track
  34554.  66h    (DOS 4+) get volume serial number (see also AH=69h)
  34555.  67h    (DOS 4+) get access flag
  34556.  68h    (DOS 5+) sense media type
  34557.  70h    (PCMCIA) attribute memory read
  34558.  73h    (PCMCIA) get memory media information (DOS 5+ ???)
  34559.  76h    (PCMCIA) get erase status callback
  34560.  77h    (PCMCIA) get first Card Information Structure (CIS) tuple
  34561.  78h    (PCMCIA) get next CIS tuple
  34562.  7Fh    (PCMCIA) get ??? information
  34563.  
  34564. Format of parameter block for functions 40h, 60h:
  34565. Offset    Size    Description    (Table 0706)
  34566.  00h    BYTE    special functions
  34567.         bit 0 set if function to use current BPB, clear if Device
  34568.               BIOS Parameter Block field contains new default BPB
  34569.         bit 1 set if function to use track layout fields only
  34570.             must be clear if CL=60h
  34571.         bit 2 set if all sectors in track same size (should be set)
  34572.         bits 3-7 reserved
  34573.  01h    BYTE    device type (see #0707)
  34574.  02h    WORD    device attributes
  34575.         bit 0 set if nonremovable medium
  34576.         bit 1 set if door lock ("changeline") supported
  34577.         bits 2-15 reserved
  34578.  04h    WORD    number of cylinders
  34579.  06h    BYTE    media type
  34580.         for 1.2M drive
  34581.             00h 1.2M disk (default)
  34582.             01h 320K/360K disk
  34583.         F8h for DUBLDISK.SYS v2.6 expanded drives
  34584.         always 00h for other drive types
  34585.  07h 31 BYTEs    device BPB (see #0801 at AH=53h), bytes after BPB offset 1Eh
  34586.           omitted
  34587. ---function 40h only---
  34588.  26h    WORD    number of sectors per track (start of track layout field)
  34589.         (maximum 63)
  34590.  28h  N word pairs: number,size of each sector in track
  34591.  
  34592. (Table 0707)
  34593. Values for device type:
  34594.  00h    320K/360K disk
  34595.  01h    1.2M disk
  34596.  02h    720K disk
  34597.  03h    single-density 8-inch disk
  34598.  04h    double-density 8-inch disk
  34599.  05h    fixed disk
  34600.  06h    tape drive
  34601.  07h    (DOS 3.3+) other type of block device, normally 1.44M floppy
  34602.  08h    read/write optical disk
  34603.  09h    (DOS 5+) 2.88M floppy
  34604.  
  34605. Format of parameter block for functions 41h, 61h:
  34606. Offset    Size    Description    (Table 0708)
  34607.  00h    BYTE    special functions (reserved, must be zero)
  34608.  01h    WORD    number of disk head
  34609.  03h    WORD    number of disk cylinder
  34610.  05h    WORD    number of first sector to read/write
  34611.  07h    WORD    number of sectors
  34612.  09h    DWORD    transfer address
  34613.  
  34614. Format of parameter block for function 42h:
  34615. Offset    Size    Description    (Table 0709)
  34616.  00h    BYTE    reserved, must be zero (DOS <3.2)
  34617.           bit 0=0: format/verify track
  34618.             1: format status call (DOS 3.2+), don't actually format
  34619.           bits 1-7 reserved, must be zero
  34620.         value on return (DOS 3.3+):
  34621.           00h    specified tracks, sectors/track supported by BIOS
  34622.           01h    function not supported by BIOS
  34623.           02h    specified tracks, sectors/track not allowed for drive
  34624.           03h    no disk in drive
  34625.  01h    WORD    number of disk head
  34626.  03h    WORD    number of disk cylinder
  34627.  
  34628. Format of parameter block for function 62h:
  34629. Offset    Size    Description    (Table 0710)
  34630.  00h    BYTE    reserved, must be zero (DOS <3.2)
  34631.           bit 0=0: verify single track
  34632.             1: verify multiple tracks
  34633.           bits 1-7 reserved, must be zero
  34634.         value on return (DOS 3.3+):
  34635.           00h    specified tracks, sectors/track supported by BIOS
  34636.           01h    function not supported by BIOS
  34637.           02h    specified tracks, sectors/track not allowed for drive
  34638.           03h    no disk in drive
  34639.  01h    WORD    number of disk head
  34640.  03h    WORD    number of disk cylinder
  34641.  05h    WORD    number of tracks to verify (equivalent to 255 or fewer sectors)
  34642.  
  34643. Format of parameter block for functions 46h, 66h:
  34644. Offset    Size    Description    (Table 0711)
  34645.  00h    WORD    (call) info level (should be 0000h)
  34646.  02h    DWORD    disk serial number (binary)
  34647.  06h 11 BYTEs    volume label or "NO NAME    "
  34648.  11h  8 BYTEs    filesystem type "FAT12     " or "FAT16   " (CL=66h only)
  34649.  
  34650. Format of parameter block for functions 47h, 67h:
  34651. Offset    Size    Description    (Table 0712)
  34652.  00h    BYTE    special-function field (must be zero)
  34653.  01h    BYTE    disk-access flag, nonzero if access allowed by driver
  34654.  
  34655. Format of parameter block for function 52h:
  34656.  00h    BYTE    (call) unused???    (Table 0713)
  34657.         (return) 00h if flash/ATA drive but no card inserted
  34658.             unchanged otherwise
  34659. Notes:    the absense of a flash card should be tested by checking the DOS error
  34660.       code rather than the returned byte
  34661.     the parameter byte is cleared to 00h erroneously by the Award
  34662.       PCDISK.EXE v1.02c PCMCIA/ATA driver if no ATA card is inserted
  34663.       (bug corrected in PCDISK.EXE v1.02h and later)
  34664.     not supported by the SystemSoft ATADRV.EXE and the Phoenix PCMATA.SYS
  34665.       PCMCIA/ATA drivers
  34666.  
  34667. Format of parameter block for function 68h:
  34668. Offset    Size    Description    (Table 0714)
  34669.  00h    BYTE    01h for default media type, 00h for any other media type
  34670.         (see also INT 13/AH=20h"Compaq")
  34671.  01h    BYTE    02h for 720K, 07h for 1.44M, 09h for 2.88M
  34672.  
  34673. Format of parameter block for function 73h:
  34674. Offset    Size    Description    (Table 0715)
  34675.  00h    BYTE    ???
  34676.         00h ATA card inserted ???
  34677.         80h ATA card not inserted ???
  34678.  01h    BYTE    length of parameter block ???
  34679.         apparently always 40h
  34680.  02h    BYTE    ???
  34681.         00h ATA card not inserted ???
  34682.         0Dh ATA card inserted ???
  34683.  03h  2 BYTEs    ??? (apparently always 00h)
  34684.  05h    BYTE    drive number (0=first) ???
  34685.  06h    BYTE    total number of drives ???
  34686.  07h    BYTE    ???
  34687.         00h ATA card not inserted ???
  34688.         01h ATA card inserted ???
  34689.  08h 17 BYTEs    ???
  34690.  19h    BYTE    ???
  34691.         00h ATA card not inserted ???
  34692.         01h ATA card inserted ???
  34693.  1Ah    BYTE    ??? (apparently always 01h)
  34694.  1Bh    BYTE    ???
  34695.         00h ATA card not inserted ???
  34696.         01h ATA card inserted ???
  34697.  1Ch  2 BYTEs    ??? (apparently always 0015h)
  34698.  1Eh  2 BYTEs    ???
  34699.  20h  2 BYTEs    ??? (apparently always 0110h)
  34700.  22h 15 BYTEs    ???
  34701.  31h  2 BYTEs    ??? (apparently always 7000h)
  34702.  33h 11 BYTEs    driver signature
  34703.         "AWARD PDISK" for Award PCDISK.EXE PCMCIA/ATA driver
  34704.  3Eh  2 BYTEs    ???
  34705. Note:    this function is not supported by the SystemSoft ATADRV.EXE and the
  34706.       Phoenix PCMATA.SYS PCMCIA/ATA drivers
  34707.  
  34708. Format of parameter block for function 7Fh for SystemSoft ATADRV.EXE:
  34709. Offset    Size    Description    (Table 0716)
  34710.  00h    DWORD    -> unknown location within driver
  34711. Note:    function supported by the SystemSoft ATADRV.EXE PCMCIA/ATA driver
  34712.       but not by the Award PCDISK.EXE PCMCIA/ATA driver
  34713.  
  34714. Format of parameter block for function 7Fh for Phoenix PCMATA.SYS:
  34715. Offset    Size    Description    (Table 0717)
  34716.  00h  8 BYTEs    ???
  34717. Note:    this function supported by the Phoenix PCMATA.SYS PCMCIA/ATA driver
  34718.       but not by the Award PCDISK.EXE PCMCIA/ATA driver
  34719. --------D-21440E-----------------------------
  34720. INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
  34721.     AX = 440Eh
  34722.     BL = drive number (00h=default,01h=A:,etc)
  34723. Return: CF set on error
  34724.         AX = error code (01h,0Fh) (see #0811 at AH=59h)
  34725.     CF clear if successful
  34726.         AL = 00h block device has only one logical drive assigned
  34727.          1..26 the last letter used to reference the drive (1=A:,etc)
  34728. Note:    DR-DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
  34729.       always returns AL=00h
  34730. SeeAlso: AX=440Fh,INT 2F/AX=122Bh
  34731. --------D-21440F-----------------------------
  34732. INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
  34733.     AX = 440Fh
  34734.     BL = physical drive number (00h=default,01h=A:,etc))
  34735. Return: CF set on error
  34736.         AX = error code (01h,0Fh) (see #0811 at AH=59h)
  34737.     CF clear if successful
  34738.         drive now responds to next logical drive number
  34739. Notes:    maps logical drives to physical drives, similar to DOS's treatment of
  34740.       a single physical floppy drive as both A: and B:
  34741.     DR-DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
  34742.       always returns an error on this function
  34743. SeeAlso: AX=440Eh,INT 2F/AX=122Bh
  34744. --------D-214410-----------------------------
  34745. INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
  34746.     AX = 4410h
  34747.     BX = handle for device
  34748.     CH = category code (see #0691)
  34749.     CL = function code (see #0692)
  34750. Return: CF clear if successful
  34751.         AX = 0000h    specified IOCTL function is supported
  34752.     CF set on error
  34753.         AL = 01h    IOCTL capability not available
  34754. Note:    a program which wishes to use Generic IOCTL calls beyond those in the
  34755.       standard DOS 3.2 set may use this call first to see whether a
  34756.       particular call is supported
  34757. SeeAlso: AX=440Ch,AX=440Dh,AX=4411h
  34758. --------d-214410BXFFFF-----------------------
  34759. INT 21 U - NewSpace - ENABLE DRIVER
  34760.     AX = 4410h
  34761.     BX = FFFFh
  34762. Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
  34763.       all files as they are written and decompresses them as they are read
  34764. Note:    compressed files are not accessible unless the driver is enabled
  34765. SeeAlso: AX=4411h/BX=FFFFh
  34766. --------D-214411-----------------------------
  34767. INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
  34768.     AX = 4411h
  34769.     BL = drive number
  34770.     CH = category code (see #0704)
  34771.     CL = function code (see #0705)
  34772. Return: CF clear if successful
  34773.         AX = 0000h    specified IOCTL function is supported
  34774.     CF set on error
  34775.         AL = 01h    IOCTL capability not available
  34776. Note:    a program which wishes to use Generic IOCTL calls beyond those in the
  34777.       standard DOS 3.2 set may use this call first to see whether a
  34778.       particular call is supported
  34779. SeeAlso: AX=440Ch,AX=440Dh,AX=4410h
  34780. --------d-214411BXFFFF-----------------------
  34781. INT 21 U - NewSpace - DISABLE DRIVER
  34782.     AX = 4411h
  34783.     BX = FFFFh
  34784. Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
  34785.       all files as they are written and decompresses them as they are read
  34786. Note:    compressed files are not accessible unless the driver is enabled
  34787. SeeAlso: AX=4410h/BX=FFFFh
  34788. --------O-214412-----------------------------
  34789. INT 21 O - DR-DOS 5.0-6.0 - DETERMINE DOS TYPE
  34790.     AX = 4412h
  34791.     CF set
  34792. Return: CF set if not DR-DOS
  34793.         AX = error code (see #0811 at AH=59h)
  34794.     CF clear if DR-DOS
  34795.         DX = AX = version code (see #0719)
  34796. Note:    this obsolete call, which is no longer supported in Novell DOS 7, is
  34797.       identical to AX=4452h
  34798. SeeAlso: AX=4452h
  34799. --------d-214412BXFFFF-----------------------
  34800. INT 21 U - NewSpace - INSTALLATION CHECK???
  34801.     AX = 4412h
  34802.     BX = FFFFh
  34803. Return: AX = PSP segment of NewRes (resident driver for NewSpace)
  34804.     BX:DX -> ???
  34805.     CX = ???
  34806. SeeAlso: AX=4411h/BX=FFFFh
  34807. --------d-214413BXFFFF-----------------------
  34808. INT 21 U - NewSpace - GET ???
  34809.     AX = 4413h
  34810.     BX = FFFFh
  34811. Return: AX = code segment of NewRes (resident driver for NewSpace)
  34812.     BX = offset of ???
  34813. SeeAlso: AX=4412h/BX=FFFFh
  34814. --------O-214414-----------------------------
  34815. INT 21 OU - DR-DOS 5.0-6.0 - SET GLOBAL PASSWORD
  34816.     AX = 4414h
  34817.     DS:DX -> password string (blank-padded to 8 characters)
  34818. Desc:    Specify the master password for accessing files.
  34819. Note:    this obsolete call, which is no longer supported in Novell DOS 7, is
  34820.       identical to AX=4454h
  34821. SeeAlso: AX=4454h
  34822. --------d-214414BXFFFF-----------------------
  34823. INT 21 U - NewSpace - DEBUGGING DUMP
  34824.     AX = 4414h
  34825.     BX = FFFFh
  34826. Return: debugging dump written to X:\NEWSPACE.SMP
  34827. SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh
  34828. --------O-2144-------------------------------
  34829. INT 21 OU - DR-DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
  34830.     AH = 44h
  34831.     AL = 16h to 18h
  34832. Note:    these obsolete subfunctions (which are no longer supported in Novell
  34833.       DOS 7) are identical to AX=4456h through 4458h
  34834. SeeAlso: AX=4456h,AX=4457h,AX=4458h
  34835. --------O-214451-----------------------------
  34836. INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
  34837.     AX = 4451h
  34838. Return: CF set if not Concurrent DOS
  34839.         AX = error code (see #0811 at AH=59h)
  34840.     CF clear if successful
  34841.         AH = single-user/multiuser nature
  34842.         10h single-user
  34843.             AL = operating system version ID (see #0719)
  34844.         14h multiuser
  34845.             AL = operating system version ID (see #0718)
  34846. Notes:    as of Concurrent DOS/XM 5.0 (possibly earlier), the version is stored
  34847.       in the environment variable VER
  34848.     use this function if you are looking for multiuser capabilities,
  34849.       AX=4452h for single-user
  34850.     this function should never return the single-user values
  34851. SeeAlso: AX=4452h,AX=4459h
  34852.  
  34853. (Table 0718)
  34854. Values for Digital Research operating system version ID:
  34855.  32h    Concurrent PC DOS 3.2
  34856.  41h    Concurrent DOS 4.1
  34857.  50h    Concurrent DOS/XM 5.0 or Concurrent DOS/386 1.1
  34858.  60h    Concurrent DOS/XM 6.0 or Concurrent DOS/386 2.0
  34859.  62h    Concurrent DOS/XM 6.2 or Concurrent DOS/386 3.0
  34860.  66h    DR Multiuser DOS 5.1
  34861.  67h    Concurrent DOS 5.1
  34862. --------O-214452-----------------------------
  34863. INT 21 - DR-DOS 3.41+ - DETERMINE DOS TYPE/GET DR-DOS VERSION
  34864.     AX = 4452h ("DR")
  34865.     CF set
  34866. Return: CF set if not DR-DOS
  34867.         AX = error code (see #0811 at AH=59h)
  34868.     CF clear if DR-DOS
  34869.         AX = version code
  34870.         AH = single-user/multiuser nature
  34871.         10h single-user
  34872.             AL = operating system version ID (see #0719)
  34873.         14h multiuser
  34874.             AL = operating system version ID (see #0718)
  34875.         DX modified (see note)
  34876. Notes:    the DR-DOS version is stored in the environment variable VER
  34877.     use this function if looking for single-user capabilities, AX=4451h
  34878.       if looking for multiuser; this call should never return multiuser
  34879.       values
  34880.     in DR-DOS 3.41-6.0, DX=AX on return; for Novell DOS 7, DH=AH but DL=00h
  34881.       (reportedly, DH=00h when booting NWDOS7 from installation disks)
  34882.     Novell DOS 7 returns error code 0001h if SETVER 255.x is in effect for
  34883.       the calling program
  34884. SeeAlso: AX=4412h,AX=4451h,AX=4459h
  34885.  
  34886. (Table 0719)
  34887. Values for Digital Research operating system version ID:
  34888.  60h    DOS Plus
  34889.  63h    DR-DOS 3.41
  34890.  64h    DR-DOS 3.42
  34891.  65h    DR-DOS 5.00
  34892.  67h    DR-DOS 6.00
  34893.  70h    PalmDOS
  34894.  71h    DR-DOS 6.0 March 1993 "business update"
  34895.  72h    Novell DOS 7.0
  34896. --------O-214454-----------------------------
  34897. INT 21 U - DR-DOS 3.41+ - SET GLOBAL PASSWORD
  34898.     AX = 4454h
  34899.     DS:DX -> password string (blank-padded to 8 characters)
  34900. Desc:    Specify the master password for accessing files.
  34901. SeeAlso: AX=4303h,AX=4414h
  34902. --------O-214456-----------------------------
  34903. INT 21 U - DR-DOS 5.0+ - HISTORY BUFFER CONTROL
  34904.     AX = 4456h
  34905.     DL = control flags (see #0720)
  34906. Return: AL = previous value of state flags (see #0721)
  34907. Note:    DR-DOS 6.0 only checks bit 0 and ignores the rest of DL
  34908. SeeAlso: #0722
  34909.  
  34910. Bitfields for control flags:
  34911. Bit(s)    Description    (Table 0720)
  34912.  0    whose buffer: 0=application, 1=COMMAND.COM
  34913. ---Novell DOS 7---
  34914.  1    toggle HISTORY usage
  34915.  2    toggle INSERT state 
  34916. Note:    only one bit at a time may be used
  34917.  
  34918. Bitfields for state flags:
  34919. Bit(s)    Description    (Table 0721)
  34920.  0    HISTORY buffer enabled
  34921.  1    INSERT enabled
  34922.  2-5    unused
  34923.  7    whose buffer: 0=application, 1=COMMAND.COM
  34924. --------O-214457-----------------------------
  34925. INT 21 U - DR-DOS 5.0+ - SHARE/HILOAD CONTROL
  34926.     AX = 4457h
  34927.     DH = subfunction
  34928.         00h enable/disable SHARE
  34929.         DL = 00h disable
  34930.            = 01h enable
  34931.            else Return: AX = ???
  34932.         01h get HILOAD status
  34933.         Return: AX = status
  34934.                 0000h off
  34935.                 0001h on
  34936.         02h set HILOAD status
  34937.         DL = new state (00h off, 01h on)
  34938.         Return: AX = ???
  34939.         other
  34940.         Return: AX = ???
  34941. Note:    This was seen called by COMMAND.COM of DR-DOS 6.0; it does not seem
  34942.       to be supported by Novell DOS 7
  34943. SeeAlso: AX=4457h/DX=FFFFh
  34944. --------O-214457DXFFFF-----------------------
  34945. INT 21 U - DR-DOS 6.0 - GET SHARE STATUS
  34946.     AX = 4457h
  34947.     DX = FFFFh
  34948. Return: AX = SHARE status
  34949. SeeAlso: INT 2F/AX=1000h
  34950. --------O-214458-----------------------------
  34951. INT 21 U - DR-DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
  34952.     AX = 4458h
  34953. Return: ES:BX -> internal variable table (see #0722,#0723)
  34954.     AX = ??? (0B50h for DR-DOS 5.0, 0A56h for DR-DOS 6.0, 0FE4h for
  34955.           Novell DOS 7)
  34956. SeeAlso: AX=4452h
  34957.  
  34958. Format of DR-DOS 5.0-6.0 internal variable table:
  34959. Offset    Size    Description    (Table 0722)
  34960.  00h    WORD    ???
  34961.  02h    WORD    segment of ???
  34962.  04h    WORD    offset within DOS data segment of history control structure
  34963.           for COMMAND.COM history buffer (see #0724)
  34964.  06h    WORD    offset within DOS data segment of history control structure
  34965.           for application history buffer (see #0724)
  34966.  08h    BYTE    initial history state flags (see #0721)
  34967.  09h  2 BYTEs    ???
  34968.  0Bh    WORD    KB of extended memory at startup
  34969.  0Dh    BYTE    number of far jump entry points
  34970.  0Eh    WORD    segment containing far jumps to DR-DOS entry points (see #0725)
  34971.  10h    WORD    (only if kernel loaded in HMA) offset in HMA of first free HMA
  34972.           memory block (see #0726) or 0000h if none; segment is FFFFh
  34973.  12h    WORD    pointer to segment of environment variables set in CONFIG,
  34974.           or 0000h if already used
  34975. ---DR-DOS 6.0---
  34976.  14h    WORD    (only if kernel loaded in HMA) offset in HMA of first used HMA
  34977.         memory block (see #0726) or 0000h if none; segment is FFFFh
  34978.  16h  8 BYTEs    ???
  34979.  1Eh    WORD    offset in DOS data segment of full COUNTRY.SYS filename
  34980.  20h  8 BYTEs    ???
  34981.  28h    WORD    offset in DOS data segment of SHARE hook table
  34982.  2Ah  2 BYTEs    ???
  34983.  2Ch    WORD    offset in DOS data segment of far pointer to INT 2F/AX=1000h
  34984.           handler
  34985. Note:    the segment used for the DR-DOS 6.0 CONFIG environment variables
  34986.       (excluding COMSPEC, VER and OS) is only useful for programs/drivers
  34987.       called from CONFIG.SYS. The word is set to zero later when the area
  34988.       is copied to the COMMAND.COM environment space.  This allows
  34989.       CONFIG.SYS to pass information to AUTOEXEC.BAT.
  34990.  
  34991. Format of Novell DOS 7 internal variable table:
  34992. Offset    Size    Description    (Table 0723)
  34993.  00h    ???
  34994.  1Eh    WORD    offset of COUNTRY.SYS filename
  34995.  42h 16 DWORDs    pointers to ??? entry points
  34996.     ???
  34997.  
  34998. Format of history control structure:
  34999. Offset    Size    Description    (Table 0724)
  35000.  00h    WORD    segment of buffer
  35001.  02h    WORD    size of buffer in bytes
  35002.  04h    WORD    ???
  35003.  
  35004. Format of kernel entry jump table for DR-DOS 5.0-6.0:
  35005. Offset    Size    Description    (Table 0725)
  35006.  00h  5 BYTEs    far jump to kernel entry point for CP/M CALL 5
  35007.  05h  5 BYTEs    far jump to kernel entry point for INT 20
  35008.  0Ah  5 BYTEs    far jump to kernel entry point for INT 21
  35009.  0Fh  5 BYTEs    far jump to kernel entry point for INT 22 (RETF)
  35010.  14h  5 BYTEs    far jump to kernel entry point for INT 23 (RETF)
  35011.  19h  5 BYTEs    far jump to kernel entry point for INT 24
  35012.  1Eh  5 BYTEs    far jump to kernel entry point for INT 25
  35013.  23h  5 BYTEs    far jump to kernel entry point for INT 26
  35014.  28h  5 BYTEs    far jump to kernel entry point for INT 27
  35015.  2Dh  5 BYTEs    far jump to kernel entry point for INT 28
  35016.  32h  5 BYTEs    far jump to kernel entry point for INT 2A (IRET)
  35017.  37h  5 BYTEs    far jump to kernel entry point for INT 2B (IRET)
  35018.  3Ch  5 BYTEs    far jump to kernel entry point for INT 2C (IRET)
  35019.  41h  5 BYTEs    far jump to kernel entry point for INT 2D (IRET)
  35020.  46h  5 BYTEs    far jump to kernel entry point for INT 2E (IRET)
  35021.  4Bh  5 BYTEs    far jump to kernel entry point for INT 2F
  35022. Notes:    all of these entry points are indirected through this jump table
  35023.       to allow the kernel to be relocated into high memory while leaving
  35024.       the actual entry addresses in low memory for maximum compatibility
  35025.     some of these entry points (22h,23h,24h,2Eh,2Fh) are replaced as soon
  35026.       as COMMAND.COM is loaded, and return immediately to the caller, some
  35027.       returning an error code (the original handler for INT 2F returns
  35028.       AL=03h [fail]).
  35029.  
  35030. Format of HMA Memory Block (DR-DOS 6.0 kernel loaded in HMA):
  35031. Offset    Size    Description    (Table 0726)
  35032.  00h    WORD    offset of next HMA Memory Block (0000h if last block)
  35033.  02h    WORD    size of this block in bytes (at least 10h)
  35034.  04h    BYTE    type of HMA Memory Block (interpreted by MEM)
  35035.         00h system
  35036.         01h KEYB
  35037.         02h NLSFUNC
  35038.         03h SHARE
  35039.         04h TaskMAX
  35040.         05h COMMAND
  35041.  05h    var    TSR (or system) code and data. DR-DOS TSR's, such as KEYB,
  35042.           hooks interrupts using segment FFFEh instead FFFFh.
  35043. --------O-214459-----------------------------
  35044. INT 21 - DR MultiUser DOS 5.0 - API
  35045.     AX = 4459h
  35046.     CL = function (see INT E0"CP/M")
  35047.     DS,DX = parameters
  35048. Notes:    DR-DOS 5.0 and Novell DOS 7 return CF set and AX=0001h
  35049.     this API is also available on INT E0
  35050. SeeAlso: AX=4452h,INT E0"CP/M"
  35051. --------N-2144E0-----------------------------
  35052. INT 21 U - Sun PC-NFS - API???
  35053.     AX = 44E0h
  35054.     DS:DX -> ???
  35055.     SS:BP -> stack frame (see #0727)
  35056. Return: ???
  35057. Note:    this function is also supported by Beame&Whiteside's BWPCNFS shim; the
  35058.       description presented here was derived from that shim
  35059.  
  35060. Format of PC-NFS stack frame:
  35061. Offset    Size    Description    (Table 0727)
  35062.  00h    WORD    -> previous stack frame
  35063.  02h    DWORD    return address
  35064. --------d-2144FFBXFFFF-----------------------
  35065. INT 21 U - NewSpace - ???
  35066.     AX = 44FFh
  35067.     BX = FFFFh
  35068.     DX = ???
  35069. Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
  35070.       all files as they are written and decompresses them as they are read
  35071. SeeAlso: AX=4414h/BX=FFFFh
  35072. --------!---Section--------------------------
  35073. Interrupt List, part 5 of 12
  35074. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  35075. --------D-2145-------------------------------
  35076. INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
  35077.     AH = 45h
  35078.     BX = file handle
  35079. Return: CF clear if successful
  35080.         AX = new handle
  35081.     CF set on error
  35082.         AX = error code (04h,06h) (see #0811 at AH=59h)
  35083. Notes:    moving file pointer for either handle will also move it for the other,
  35084.       because both will refer to the same system file table
  35085.     for DOS versions prior to 3.3, file writes may be forced to disk by
  35086.       duplicating the file handle and closing the duplicate
  35087. SeeAlso: AH=3Dh,AH=46h
  35088. --------D-2146-------------------------------
  35089. INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
  35090.     AH = 46h
  35091.     BX = file handle
  35092.     CX = file handle to become duplicate of first handle
  35093. Return: CF clear if successful
  35094.     CF set on error
  35095.         AX = error code (04h,06h) (see #0811 at AH=59h)
  35096. Notes:    closes file with handle CX if it is still open
  35097.     DOS 3.30 hangs if BX=CX on entry
  35098.     moving file pointer for either handle will also move it for the other,
  35099.       because both will refer to the same system file table
  35100. SeeAlso: AH=3Dh,AH=45h
  35101. --------D-2147-------------------------------
  35102. INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
  35103.     AH = 47h
  35104.     DL = drive number (00h = default, 01h = A:, etc)
  35105.     DS:SI -> 64-byte buffer for ASCIZ pathname
  35106. Return: CF clear if successful
  35107.         AX = 0100h (undocumented)
  35108.     CF set on error
  35109.         AX = error code (0Fh) (see #0811 at AH=59h)
  35110. Notes:    the returned path does not include a drive or the initial backslash
  35111.     many Microsoft products for Windows rely on AX being 0100h on success
  35112.     under the FlashTek X-32 DOS extender, the buffer pointer is in DS:ESI
  35113. SeeAlso: AH=19h,AH=3Bh,AH=71h,INT 15/AX=DE25h
  35114. --------D-2148-------------------------------
  35115. INT 21 - DOS 2+ - ALLOCATE MEMORY
  35116.     AH = 48h
  35117.     BX = number of paragraphs to allocate
  35118. Return: CF clear if successful
  35119.         AX = segment of allocated block
  35120.     CF set on error
  35121.         AX = error code (07h,08h) (see #0811 at AH=59h)
  35122.         BX = size of largest available block
  35123. Notes:    DOS 2.1-6.0 coalesces free blocks while scanning for a block to
  35124.       allocate
  35125.     .COM programs are initially allocated the largest available memory
  35126.       block, and should free some memory with AH=49h before attempting any
  35127.       allocations
  35128.     under the FlashTek X-32 DOS extender, EBX contains a protected-mode
  35129.       near pointer to the allocated block on a successful return
  35130. SeeAlso: AH=49h,AH=4Ah,AH=58h,AH=83h
  35131. --------D-2149-------------------------------
  35132. INT 21 - DOS 2+ - FREE MEMORY
  35133.     AH = 49h
  35134.     ES = segment of block to free
  35135. Return: CF clear if successful
  35136.     CF set on error
  35137.         AX = error code (07h,09h) (see #0811 at AH=59h)
  35138. Notes:    apparently never returns an error 07h, despite official docs; DOS 2.1+
  35139.       code contains only an error 09h exit
  35140.     DOS 2.1-6.0 does not coalesce adjacent free blocks when a block is
  35141.       freed, only when a block is allocated or resized
  35142.     the code for this function is identical in DOS 2.1-6.0 except for
  35143.       calls to start/end a critical section in DOS 3+
  35144. SeeAlso: AH=48h,AH=4Ah
  35145. --------D-214A-------------------------------
  35146. INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
  35147.     AH = 4Ah
  35148.     BX = new size in paragraphs
  35149.     ES = segment of block to resize
  35150. Return: CF clear if successful
  35151.     CF set on error
  35152.         AX = error code (07h,08h,09h) (see #0811 at AH=59h)
  35153.         BX = maximum paragraphs available for specified memory block
  35154. Notes:    under DOS 2.1-6.0, if there is insufficient memory to expand the block
  35155.       as much as requested, the block will be made as large as possible
  35156.     DOS 2.1-6.0 coalesces any free blocks immediately following the block
  35157.       to be resized
  35158. SeeAlso: AH=48h,AH=49h,AH=83h
  35159. --------v-214A--BX00B6-----------------------
  35160. INT 21 - VIRUS???
  35161.     AH = 4Ah
  35162.     BX = 00B6h
  35163.     ES = CX
  35164. Return: ???
  35165. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  35166.       with Novell DOS 7, and is presumably some virus's installation check
  35167. SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=FFFFh,AH=D2h"VIRUS"
  35168. --------v-214A--BXFFFF-----------------------
  35169. INT 21 - VIRUS???
  35170.     AH = 4Ah
  35171.     BX = FFFFh
  35172.     CX = 0568h
  35173.     SI = 0129h
  35174.     DI = 0000h
  35175.     ES = BP
  35176. Return: ???
  35177. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  35178.       with Novell DOS 7, and is presumably some virus's installation check
  35179. SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=00B6h
  35180. --------D-214B-------------------------------
  35181. INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
  35182.     AH = 4Bh
  35183.     AL = type of load
  35184.         00h load and execute
  35185.         01h load but do not execute
  35186.         03h load overlay
  35187.         04h load and execute in background (European MS-DOS 4.0 only)
  35188.         "Exec & Go" (see also AH=80h)
  35189.     DS:DX -> ASCIZ program name (must include extension)
  35190.     ES:BX -> parameter block (see #0728)
  35191.     CX = mode (subfunction 04h only)
  35192.         0000h child placed in zombie mode after termination
  35193.         0001h child's return code discarded on termination
  35194. Return: CF clear if successful
  35195.         BX,DX destroyed
  35196.         if subfunction 01h, process ID set to new program's PSP; get with
  35197.         INT 21/AH=62h
  35198.     CF set on error
  35199.         AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see #0811 at AH=59h)
  35200. Notes:    DOS 2.x destroys all registers, including SS:SP
  35201.     under ROM-based DOS, if no disk path characters (colons or slashes)
  35202.       are included in the program name, the name is searched for in the
  35203.       ROM module headers (see #0733) before searching on disk
  35204.     for functions 00h and 01h, the calling process must ensure that there
  35205.       is enough unallocated memory available; if necessary, by releasing
  35206.       memory with AH=49h or AH=4Ah
  35207.     for function 01h, the AX value to be passed to the child program is put
  35208.       on top of the child's stack
  35209.     for function 03h, DOS assumes that the overlay is being loaded into
  35210.       memory allocated by the caller
  35211.     function 01h was undocumented prior to the release of DOS 5.0
  35212.     some versions (such as DR-DOS 6.0) check the parameters and parameter
  35213.       block and return an error if an invalid value (such as an offset of
  35214.       FFFFh) is found
  35215.     background programs under European MS-DOS 4.0 must use the new
  35216.       executable format
  35217.     .COM-format executables begin running with the following register
  35218.       values:
  35219.         AL = 00h if first FCB has valid drive letter, FFh if not
  35220.         AH = 00h if second FCB has valid drive letter, FFh if not
  35221.         CS,DS,ES,SS = PSP segment
  35222.         SP = offset of last word available in first 64K segment
  35223.         (note: AX is always 0000h under DESQview)
  35224.     old-format executables begin running with the following register
  35225.       values:
  35226.         AL = 00h if first FCB has valid drive letter, FFh if not
  35227.         AH = 00h if second FCB has valid drive letter, FFh if not
  35228.         DS,ES = PSP segment
  35229.         SS:SP as defined in .EXE header
  35230.         (note: AX is always 0000h under DESQview)
  35231.     new executables begin running with the following register values
  35232.         AX = environment segment
  35233.         BX = offset of command tail in environment segment
  35234.         CX = size of automatic data segment (0000h = 64K)
  35235.         ES,BP = 0000h
  35236.         DS = automatic data segment
  35237.         SS:SP = initial stack
  35238.       the command tail corresponds to an old executable's PSP:0081h and
  35239.       following, except that the 0Dh is turned into a NUL (00h); new
  35240.       format executables have no PSP
  35241.     under the FlashTek X-32 DOS extender, only function 00h is supported
  35242.       and the pointers are passed in DS:EDX and ES:EBX
  35243.     DR-DOS 6 always loads .EXE-format programs with no fixups and 
  35244.       .COM-format programs starting with 9Ch 55h (PUSHF/PUSH BP) above the
  35245.       64K mark to avoid the EXEPACK bug, by extending the memory block
  35246.       containing the program's environment; this code is disabled if the
  35247.       name of the parent program as stored in the MCB is 'WIN'.
  35248. BUGS:    DOS 2.00 assumes that DS points at the current program's PSP
  35249.     Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
  35250.       file contains additional data after the actual overlay
  35251. SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,AH=64h"OS/2",AH=8Ah,INT 2E,INT 60/DI=0604h
  35252.  
  35253. Format of EXEC parameter block for AL=00h,01h,04h:
  35254. Offset    Size    Description    (Table 0728)
  35255.  00h    WORD    segment of environment to copy for child process (copy caller's
  35256.           environment if 0000h)
  35257.  02h    DWORD    pointer to command tail to be copied into child's PSP
  35258.  06h    DWORD    pointer to first FCB to be copied into child's PSP
  35259.  0Ah    DWORD    pointer to second FCB to be copied into child's PSP
  35260.  0Eh    DWORD    (AL=01h) will hold subprogram's initial SS:SP on return
  35261.  12h    DWORD    (AL=01h) will hold entry point (CS:IP) on return
  35262.  
  35263. Format of EXEC parameter block for AL=03h:
  35264. Offset    Size    Description    (Table 0729)
  35265.  00h    WORD    segment at which to load overlay
  35266.  02h    WORD    relocation factor to apply to overlay if in .EXE format
  35267.  
  35268. Format of EXEC parameter block for FlashTek X-32:
  35269. Offset    Size    Description    (Table 0730)
  35270.  00h    PWORD    48-bit far pointer to environment string
  35271.  06h    PWORD    48-bit far pointer to command tail string
  35272.  
  35273. (Table 0731)
  35274. Values for the executable types understood by various environments:
  35275.  MZ    old-style DOS executable
  35276.  NE    Windows or OS/2 1.x segmented ("new") executable
  35277.  LE    Windows virtual device driver (VxD) linear executable
  35278.  LX    variant of LE used in OS/2 2.x
  35279.  W3    Windows WIN386.EXE file; a collection of LE files
  35280.  PE    Win32 (Windows NT and Win32s) portable executable based on Unix COFF
  35281.  
  35282. Format of .EXE file header:
  35283. Offset    Size    Description    (Table 0732)
  35284.  00h  2 BYTEs    .EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
  35285.  02h    WORD    number of bytes in last 512-byte page of executable
  35286.  04h    WORD    total number of 512-byte pages in executable (includes any
  35287.         partial last page)
  35288.  06h    WORD    number of relocation entries
  35289.  08h    WORD    header size in paragraphs
  35290.  0Ah    WORD    minimum paragraphs of memory to allocation in addition to
  35291.         executable's size
  35292.  0Ch    WORD    maximum paragraphs to allocate in addition to executable's size
  35293.  0Eh    WORD    initial SS relative to start of executable
  35294.  10h    WORD    initial SP
  35295.  12h    WORD    checksum (one's complement of sum of all words in executable)
  35296.  14h    DWORD    initial CS:IP relative to start of executable
  35297.  18h    WORD    offset within header of relocation table
  35298.         40h or greater for new-format (NE,LE,LX,W3,PE,etc.) executable
  35299.  1Ah    WORD    overlay number (normally 0000h = main program)
  35300. ---new executable---
  35301.  1Ch  4 BYTEs    ???
  35302.  20h    WORD    behavior bits
  35303.  22h 26 BYTEs    reserved for additional behavior info
  35304.  3Ch    DWORD    offset of new executable (NE,LE,etc) header within disk file,
  35305.         or 00000000h if plain MZ executable
  35306. ---Borland TLINK---
  35307.  1Ch  2 BYTEs    ??? (apparently always 01h 00h)
  35308.  1Eh    BYTE    signature FBh
  35309.  1Fh    BYTE    TLINK version (major in high nybble, minor in low nybble)
  35310.  20h  2 BYTEs    ??? (v2.0 apparently always 72h 6Ah, v3.0+ seems always 6Ah 72h)
  35311. ---ARJ self-extracting archive---
  35312.  1Ch  4 BYTEs    signature "RJSX" (older versions, new signature is "aRJsfX" in
  35313.         the first 1000 bytes of the file)
  35314. ---LZEXE 0.90 compressed executable---
  35315.  1Ch  4 BYTEs    signature "LZ09"
  35316. ---LZEXE 0.91 compressed executable---
  35317.  1Ch  4 BYTEs    signature "LZ91"
  35318. ---PKLITE compressed executable---
  35319.  1Ch    BYTE    minor version number
  35320.  1Dh    BYTE    bits 0-3: major version
  35321.         bit 4: extra compression
  35322.         bit 5: huge (multi-segment) file
  35323.  1Eh  6 BYTEs    signature "PKLITE" (followed by copyright message)
  35324. ---LHarc 1.x self-extracting archive---
  35325.  1Ch  4 BYTEs    unused???
  35326.  20h  3 BYTEs    jump to start of extraction code
  35327.  23h  2 BYTEs    ???
  35328.  25h 12 BYTEs    signature "LHarc's SFX "
  35329. ---LHA 2.x self-extracting archive---
  35330.  1Ch  8 BYTEs    ???
  35331.  24h 10 BYTEs    signature "LHa's SFX " (v2.10) or "LHA's SFX " (v2.13)
  35332. ---TopSpeed C 3.0 CRUNCH compressed file---
  35333.  1Ch    DWORD    018A0001h
  35334.  20h    WORD    1565h
  35335. ---PKARCK 3.5 self-extracting archive---
  35336.  1Ch    DWORD    00020001h
  35337.  20h    WORD    0700h
  35338. ---BSA (Soviet archiver) self-extracting archive---
  35339.  1Ch    WORD    000Fh
  35340.  1Eh    BYTE    A7h
  35341. ---LARC self-extracting archive---
  35342.  1Ch  4 BYTEs    ???
  35343.  20h 11 BYTEs    "SFX by LARC "
  35344. ---LH self-extracting archive---
  35345.  1Ch  8 BYTEs    ???
  35346.  24h  8 BYTEs    "LH's SFX "
  35347. ---other linkers---
  35348.  1Ch    var    optional information
  35349. ---
  35350.   N   N DWORDs    relocation items
  35351. Notes:    if word at offset 02h is 4, it should be treated as 00h, since pre-1.10
  35352.       versions of the MS linker set it that way
  35353.     if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
  35354.       program is loaded as high in memory as possible
  35355.     the maximum allocation is set to FFFFh by default
  35356.  
  35357. Format of ROM Module Header:
  35358. Offset    Size    Description    (Table 0733)
  35359.  00h  2 BYTEs    ROM signature 55h, AAh
  35360.  02h    BYTE    size of ROM in 512-byte blocks
  35361.  03h  3 BYTEs    POST initialization entry point (near JMP instruction)
  35362.  06h    ROM Program Name List [array]
  35363.     Offset    Size    Description
  35364.      00h    BYTE    length of ROM program's name (00h if end of name list)
  35365.      01h  N BYTEs    program name
  35366.      N+1  3 BYTEs    program entry point (near JMP instruction)
  35367.  
  35368. Format of new executable header:
  35369. Offset    Size    Description    (Table 0734)
  35370.  00h  2 BYTEs    "NE" (4Eh 45h) signature
  35371.  02h  2 BYTEs    linker version (major, then minor)
  35372.  04h    WORD    offset from start of this header to entry table (see #0741)
  35373.  06h    WORD    length of entry table in bytes
  35374.  08h    DWORD    file load CRC (0 in Borland's TPW)
  35375.  0Ch    BYTE    program flags (see #0735)
  35376.  0Dh    BYTE    application flags (see #0736)
  35377.  0Eh    WORD    auto data segment index
  35378.  10h    WORD    initial local heap size
  35379.  12h    WORD    initial stack size (added to data seg, 0000h if SS <> DS)
  35380.  14h    DWORD    program entry point (CS:IP), "CS" is index into segment table
  35381.  18h    DWORD    initial stack pointer (SS:SP), "SS" is segment index
  35382.         if SS=automatic data segment and SP=0000h, the stack pointer is
  35383.           set to the top of the automatic data segment, just below the
  35384.           local heap
  35385.  1Ch    WORD    segment count
  35386.  1Eh    WORD    module reference count
  35387.  20h    WORD    length of nonresident names table in bytes
  35388.  22h    WORD    offset from start of this header to segment table (see #0739)
  35389.  24h    WORD    offset from start of this header to resource table
  35390.  26h    WORD    offset from start of this header to resident names table
  35391.  28h    WORD    offset from start of this header to module reference table
  35392.  2Ah    WORD    offset from start of this header to imported names table
  35393.         (array of counted strings, terminated with a string of length
  35394.           00h)
  35395.  2Ch    DWORD    offset from start of file to nonresident names table
  35396.  30h    WORD    count of moveable entry point listed in entry table
  35397.  32h    WORD    file alignment size shift count
  35398.         0 is equivalent to 9 (default 512-byte pages)
  35399.  34h    WORD    number of resource table entries
  35400.  36h    BYTE    target operating system
  35401.         00h unknown
  35402.         01h OS/2
  35403.         02h Windows
  35404.         03h European MS-DOS 4.x
  35405.         04h Windows 386
  35406.         05h BOSS (Borland Operating System Services)
  35407.  37h    BYTE    other EXE flags (see #0737)
  35408.  38h    WORD    offset to return thunks or start of gangload area
  35409.  3Ah    WORD    offset to segment reference thunks or length of gangload area
  35410.  3Ch    WORD    minimum code swap area size
  35411.  3Eh  2 BYTEs    expected Windows version (minor version first)
  35412. Note:    this header is documented in detail in the Windows 3.1 SDK Programmer's
  35413.       Reference, Vol 4.
  35414.  
  35415. Bitfields for new executable program flags:
  35416. Bit(s)    Description    (Table 0735)
  35417.  0-1    DGROUP type
  35418.       0 = none
  35419.       1 = single shared
  35420.       2 = multiple (unshared)
  35421.       3 = (null)
  35422.  2    global initialization
  35423.  3    protected mode only
  35424.  4    8086 instructions
  35425.  5    80286 instructions
  35426.  6    80386 instructions
  35427.  7    80x87 instructions
  35428.  
  35429. Bitfields for new executable application flags:
  35430. Bit(s)    Description    (Table 0736)
  35431.  0-2    application type
  35432.     001 full screen (not aware of Windows/P.M. API)
  35433.     010 compatible with Windows/P.M. API
  35434.     011 uses Windows/P.M. API
  35435.  3    is a Family Application (OS/2)
  35436.  5    0=executable, 1=errors in image
  35437.  6    non-conforming program (valid stack is not maintained)
  35438.  7    DLL or driver rather than application
  35439.     (SS:SP info invalid, CS:IP points at FAR init routine called with
  35440.       AX=module handle which returns AX=0000h on failure, AX nonzero on
  35441.       successful initialization)
  35442.  
  35443. Bitfields for other new .EXE flags:
  35444. Bit(s)    Description    (Table 0737)
  35445.  0    supports long filenames
  35446.  1    2.X protected mode
  35447.  2    2.X proportional font
  35448.  3    gangload area
  35449.  
  35450. Format of Codeview trailer (at end of executable):
  35451. Offset    Size    Description    (Table 0738)
  35452.  00h    WORD    signature 4E42h ('NB')
  35453.  02h    WORD    Microsoft debug info version number
  35454.  04h    DWORD    Codeview header offset
  35455.  
  35456. Format of new executable segment table record:
  35457. Offset    Size    Description    (Table 0739)
  35458.  00h    WORD    offset in file (shift left by alignment shift to get byte offs)
  35459.  02h    WORD    length of image in file (0000h = 64K)
  35460.  04h    WORD    segment attributes (see #0740)
  35461.  06h    WORD    number of bytes to allocate for segment (0000h = 64K)
  35462. Note:    the first segment table entry is entry number 1
  35463.  
  35464. Bitfields for segment attributes:
  35465. Bit(s)    Description    (Table 0740)
  35466.  0    data segment rather than code segment
  35467.  1    unused???
  35468.  2    real mode
  35469.  3    iterated
  35470.  4    movable
  35471.  5    sharable
  35472.  6    preloaded rather than demand-loaded
  35473.  7    execute-only (code) or read-only (data)
  35474.  8    relocations (directly following code for this segment)
  35475.  9    debug info present
  35476.  10,11    80286 DPL bits
  35477.  12    discardable
  35478.  13-15    discard priority
  35479.  
  35480. Format of new executable entry table item (list):
  35481. Offset    Size    Description    (Table 0741)
  35482.  00h    BYTE    number of entry points (00h if end of entry table list)
  35483.  01h    BYTE    segment number (00h if end of entry table list)
  35484.  02h 3N BYTEs    entry records
  35485.         Offset    Size    Description
  35486.          00h    BYTE    flags
  35487.                 bit 0: exported
  35488.                 bit 1: single data
  35489.                 bits 2-7: unused???
  35490.          01h    WORD    offset within segment
  35491.  
  35492. Format of new executable relocation data (immediately follows segment image):
  35493. Offset    Size    Description    (Table 0742)
  35494.  00h    WORD    number of relocation items
  35495.  02h 8N BYTEs    relocation items
  35496.         Offset    Size    Description
  35497.          00h    BYTE    relocation type
  35498.                 00h LOBYTE
  35499.                 02h BASE
  35500.                 03h PTR
  35501.                 05h OFFS
  35502.                 0Bh PTR48
  35503.                 0Dh OFFS32
  35504.          01h    BYTE    flags
  35505.                 bit 2: additive
  35506.          02h    WORD    offset within segment
  35507.          04h    WORD    target address segment
  35508.          06h    WORD    target address offset
  35509.  
  35510. Format of new executable resource data:
  35511. Offset    Size    Description    (Table 0743)
  35512.  00h    WORD    alignment shift count for resource data
  35513.  02h  N RECORDs resources
  35514.     Format of resource record:
  35515.     Offset    Size    Description
  35516.      00h    WORD    type ID
  35517.             0000h if end of resource records
  35518.             >= 8000h if integer type
  35519.             else offset from start of resource table to type string
  35520.      02h    WORD    number of resources of this type
  35521.      04h    DWORD    reserved for runtime use
  35522.      08h  N Resources (see #0744)
  35523. Note:    resource type and name strings are stored immediately following the
  35524.       resource table, and are not null-terminated
  35525.  
  35526. Format of new executable resource entry:
  35527. Offset    Size    Description    (Table 0744)
  35528.  00h    WORD    offset in alignment units from start of file to contents of
  35529.         the resource data
  35530.  02h    WORD    length of resource image in bytes
  35531.  04h    WORD    flags
  35532.         bit 4: moveable
  35533.         bit 5: shareable
  35534.         bit 6: preloaded
  35535.  06h    WORD    resource ID
  35536.         >= 8000h if integer resource
  35537.         else offset from start of resource table to resource string
  35538.  08h    DWORD    reserved for runtime use
  35539. Notes:    resource type and name strings are stored immediately following the
  35540.       resource table, and are not null-terminated
  35541.     strings are counted strings, with a string of length 0 indicating the
  35542.       end of the resource table
  35543.  
  35544. Format of new executable module reference table [one bundle of entries]:
  35545. Offset    Size    Description    (Table 0745)
  35546.  00h    BYTE    number of records in this bundle (00h if end of table)
  35547.  01h    BYTE    segment indicator
  35548.         00h unused
  35549.         FFh movable segment, segment number is in entry
  35550.         else segment number of fixed segment
  35551.  02h  N RECORDs
  35552.     Format of segment record
  35553.     Offset    Size    Description
  35554.      00h    BYTE    flags
  35555.             bit 0: entry is exported
  35556.             bit 1: entry uses global (shared) data
  35557.             bits 7-3: number of parameter words
  35558.     ---fixed segment---
  35559.      01h    WORD    offset
  35560.     ---moveable segment---
  35561.      01h  2 BYTEs    INT 3F instruction (CDh 3Fh)
  35562.      03h    BYTE    segment number
  35563.      05h    WORD    offset
  35564. Note:    table entries are numbered starting from 1
  35565.  
  35566. Format of new executable resident/nonresident name table entry:
  35567. Offset    Size    Description    (Table 0746)
  35568.  00h    BYTE    length of string (00h if end of table)
  35569.  01h  N BYTEs    ASCII text of string
  35570.  N+1    WORD    ordinal number (index into entry table)
  35571. Notes:    the first string in the resident name table is the module name; the
  35572.       first entry in the nonresident name table is the module description
  35573.     the strings are case-sensitive; if the executable was linked with
  35574.       /IGNORECASE, all strings are in uppercase
  35575.  
  35576. Format of Linear Executable (enhanced mode executable) header:
  35577. Offset    Size    Description    (Table 0747)
  35578.  00h  2 BYTEs    "LE" (4Ch 45h) signature (Windows)
  35579.         "LX" (4Ch 58h) signature (OS/2)
  35580.  02h    BYTE    byte order (00h = little-endian, nonzero = big-endian)
  35581.  03h    BYTE    word order (00h = little-endian, nonzero = big-endian)
  35582.  04h    DWORD    executable format level
  35583.  08h    WORD    CPU type (see also INT 15/AH=C9h)
  35584.         01h Intel 80286 or upwardly compatible
  35585.         02h Intel 80386 or upwardly compatible
  35586.         03h Intel 80486 or upwardly compatible
  35587.         04h Intel Pentium (80586) or upwardly compatible
  35588.         20h Intel i860 (N10) or compatible
  35589.         21h Intel "N11" or compatible
  35590.         40h MIPS Mark I (R2000, R3000) or compatible
  35591.         41h MIPS Mark II (R6000) or compatible
  35592.         42h MIPS Mark III (R4000) or compatible
  35593.  0Ah    WORD    target operating system
  35594.         01h OS/2
  35595.         02h Windows
  35596.         03h European DOS 4.0
  35597.         04h Windows 386
  35598.  0Ch    DWORD    module version
  35599.  10h    DWORD    module type (see #0748)
  35600.  14h    DWORD    number of memory pages
  35601.  18h    Initial CS:EIP
  35602.     DWORD    object number
  35603.     DWORD    offset
  35604.  20h    Initial SS:ESP
  35605.     DWORD    object number
  35606.     DWORD    offset
  35607.  28h    DWORD    memory page size
  35608.  2Ch    DWORD    (Windows LE) bytes on last page
  35609.         (OS/2 LX) page offset shift count
  35610.  30h    DWORD    fixup section size
  35611.  34h    DWORD    fixup section checksum
  35612.  38h    DWORD    loader section size
  35613.  3Ch    DWORD    loader section checksum
  35614.  40h    DWORD    offset of object table (see #0749)
  35615.  44h    DWORD    object table entries
  35616.  48h    DWORD    object page map table offset
  35617.  4Ch    DWORD    object iterate data map offset
  35618.  50h    DWORD    resource table offset
  35619.  54h    DWORD    resource table entries
  35620.  58h    DWORD    resident names table offset
  35621.  5Ch    DWORD    entry table offset
  35622.  60h    DWORD    module directives table offset
  35623.  64h    DWORD    Module Directives entries
  35624.  68h    DWORD    Fixup page table offset
  35625.  6Ch    DWORD    Fixup record table offset
  35626.  70h    DWORD    imported modules name table offset
  35627.  74h    DWORD    imported modules count
  35628.  78h    DWORD    imported procedures name table offset
  35629.  7Ch    DWORD    per-page checksum table offset
  35630.  80h    DWORD    data pages offset
  35631.  84h    DWORD    preload page count
  35632.  88h    DWORD    non-resident names table offset
  35633.  8Ch    DWORD    non-resident names table length
  35634.  90h    DWORD    non-resident names checksum
  35635.  94h    DWORD    automatic data object
  35636.  98h    DWORD    debug information offset
  35637.  9Ch    DWORD    debug information length
  35638.  A0h    DWORD    preload instance pages number
  35639.  A4h    DWORD    demand instance pages number
  35640.  A8h    DWORD    extra heap allocation
  35641.  ACh 20 BYTEs    reserved
  35642.  C0h    WORD    device ID (MS-Windows VxD only)
  35643.  C2h    WORD    DDK version (MS-Windows VxD only)
  35644. Note:    used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers
  35645.  
  35646. Bitfields for Linear Executable module type:
  35647. Bit(s)    Description    (Table 0748)
  35648.  2    initialization (only for DLLs) 0 = global, 1 = per-process
  35649.  4    no internal fixups in executable image
  35650.  5    no external fixups in executable image
  35651.  8-10    API compatibility
  35652.     0 = unknown
  35653.     1 = incompatible with PM windowing \
  35654.     2 = compatible with PM windowing    > (only for
  35655.     3 = uses PM windowing API       /    programs)
  35656.  13    module not loadable (only for programs)
  35657.  15-17    module type
  35658.     000 program
  35659.     001 library (DLL)
  35660.     011 protected memory library module
  35661.     100 physical device driver
  35662.     110 virtual device driver
  35663.  30    per-process library termination
  35664.     (requires valid CS:EIP, can't be set for .EXE)
  35665.  
  35666. Format of object table entry:
  35667. Offset    Size    Description    (Table 0749)
  35668.  00h    DWORD    virtual size in bytes
  35669.  04h    DWORD    relocation base address
  35670.  08h    DWORD    object flags (see #0750)
  35671.  0Ch    DWORD    page map index
  35672.  10h    DWORD    page map entries
  35673.  14h  4 BYTEs    reserved??? (apparently always zeros)
  35674.  
  35675. Bitfields for object flags:
  35676. Bit(s)    Description    (Table 0750)
  35677.  0    readable
  35678.  1    writable
  35679.  2    executable
  35680.  3    resource
  35681.  4    discardable
  35682.  5    shared
  35683.  6    preloaded
  35684.  7    invalid
  35685.  8-9    type
  35686.     00 normal
  35687.     01 zero-filled
  35688.     10 resident
  35689.     11 resident and contiguous
  35690.  10    resident and long-lockable
  35691.  11    reserved
  35692.  12    16:16 alias required
  35693.  13    "BIG" (Huge: 32-bit)
  35694.  14    conforming
  35695.  15    "OBJECT_I/O_PRIVILEGE_LEVEL"
  35696.  16-31    reserved
  35697.  
  35698. Format of object page map table entry:
  35699. Offset    Size    Description    (Table 0751)
  35700.  00h    BYTE    ??? (usually 00h)
  35701.  01h    WORD    (big-endian) index to fixup table
  35702.         0000h if no relocation info
  35703.  03h    BYTE    type (00h hard copy in file, 03h some relocation needed)
  35704.  
  35705. Format of resident names table entry:
  35706. Offset    Size    Description    (Table 0752)
  35707.  00h    BYTE    length of name
  35708.  01h  N BYTEs    name
  35709.  N+1  3 BYTEs    ???
  35710.  
  35711. Format of LE linear executable entry table:
  35712. Offset    Size    Description    (Table 0753)
  35713.  00h    BYTE    number of entries in table
  35714.  01h 10 BYTEs per entry
  35715.         Offset    Size    Description
  35716.          00h    BYTE    bit flags
  35717.                 bit 0: non-empty bundle
  35718.                 bit 1: 32-bit entry
  35719.          01h    WORD    object number
  35720.          03h    BYTE    entry type flags
  35721.                 bit 0: exported
  35722.                 bit 1: uses single data rather than instance
  35723.                 bit 2: reserved
  35724.                 bits 3-7: number of stack parameters
  35725.          04h    DWORD    offset of entry point
  35726.          08h  2 BYTEs    ???
  35727. Note:    empty bundles (bit flags at 00h = 00h) are used to skip unused indices,
  35728.       and do not contain the remaining nine bytes
  35729.  
  35730. Format of LX linear executable entry table [array]:
  35731. Offset    Size    Description    (Table 0754)
  35732.  00h    BYTE    number of bundles following (00h = end of entry table)
  35733.  01h    BYTE    bundle type
  35734.         00h empty
  35735.         01h 16-bit entry
  35736.         02h 286 callgate entry
  35737.         03h 32-bit entry
  35738.         04h forwarder entry
  35739.         bit 7 set if additional parameter typing information is present
  35740. ---bundle type 00h---
  35741.  no additional fields
  35742. ---bundle type 01h---
  35743.  02h    WORD    object number
  35744.  04h    BYTE    entry flags
  35745.         bit 0: exported
  35746.         bits 7-3: number of stack parameters
  35747.  05h    WORD    offset of entry point in object (shifted by page size shift)
  35748. ---bundle type 02h---
  35749.  02h    WORD    object number
  35750.  04h    BYTE    entry flags
  35751.         bit 0: exported
  35752.         bits 7-3: number of stack parameters
  35753.  05h    WORD    offset of entry point in object
  35754.  07h    WORD    reserved for callgate selector (used by loader)
  35755. ---bundle type 03h---
  35756.  02h    WORD    object number
  35757.  04h    BYTE    entry flags
  35758.         bit 0: exported
  35759.         bits 7-3: number of stack parameters
  35760.  05h    DWORD    offset of entry point in object
  35761. ---bundle type 04h---
  35762.  02h    WORD    reserved
  35763.  04h    BYTE    forwarder flags
  35764.         bit 0: import by ordinal
  35765.         bits 7-1 reserved
  35766.  05h    WORD    module ordinal
  35767.         (forwarder's index into Import Module Name table)
  35768.  07h    DWORD    procedure name offset or import ordinal number
  35769. Note:    all fields after the first two bytes are repeated N times
  35770.  
  35771. Bitfields for linear executable fixup type:
  35772. Bit(s)    Description    (Table 0755)
  35773.  7    ordinal is BYTE rather than WORD
  35774.  6    16-rather than 8-object number/module ordinal
  35775.  5    addition with DWORD rather than WORD
  35776.  4    relocation info has size with new two bytes at end
  35777.  3    reserved (0)
  35778.  2    set if add to destination, clear to replace destination
  35779.  1-0    type
  35780.     00 internal fixup
  35781.     01 external fixup, imported by ordinal
  35782.     10 external fixup, imported by name
  35783.     11 internal fixup via entry table
  35784.  
  35785. Format of linear executable fixup record:
  35786. Offset    Size    Description    (Table 0756)
  35787.  00h    BYTE    type
  35788.         bits 7-4: modifier (0001 single, 0011 multiple)
  35789.         bits 3-0: type
  35790.             0000 byte offset
  35791.             0010 word segment
  35792.             0011 16-bit far pointer (DWORD)
  35793.             0101 16-bit offset
  35794.             0110 32-bit far pointer (PWORD)
  35795.             0111 32-bit offset
  35796.             1000 near call or jump, WORD/DWORD based on seg attrib
  35797.  01h    BYTE    linear executable fixup type (see #0755)
  35798. ---if single type---
  35799.  02h    WORD    offset within page
  35800.  04h    relocation information
  35801.     ---internal fixup---
  35802.     BYTE    object number
  35803.     ---external,ordinal---
  35804.     BYTE    one-based module number in Import Module table
  35805.     BYTE/WORD ordinal number
  35806.     WORD/DWORD value to add (only present if modifier bit 4 set)
  35807.     ---external,name---
  35808.     BYTE    one-based module number in Import Module table
  35809.     WORD    offset in Import Procedure names
  35810.     WORD/DWORD value to add (only present if modifier bit 4 set)
  35811. ---if multiple type---
  35812.  02h    BYTE    number of items
  35813.  03h    var    relocation info as for "single" type (see above)
  35814.       N WORDs    offsets of items to relocate
  35815.  
  35816. Format of old Phar Lap .EXP file header:
  35817. Offset    Size    Description    (Table 0757)
  35818.  00h  2 BYTEs    "MP" (4Dh 50h) signature
  35819.  02h    WORD    remainder of image size / page size (page size = 512h)
  35820.  04h    WORD    size of image in pages
  35821.  06h    WORD    number of relocation items
  35822.  08h    WORD    header size in paragraphs
  35823.  0Ah    WORD    minimum number of extra 4K pages to be allocated at the end
  35824.           of program, when it is loaded
  35825.  0Ch    WORD    maximum number of extra 4K pages to be allocated at the end
  35826.           of program, when it is loaded
  35827.  0Eh    DWORD    initial ESP
  35828.  12h    WORD    word checksum of file
  35829.  14h    DWORD    initial EIP
  35830.  18h    WORD    offset of first relocation item
  35831.  1Ah    WORD    overlay number
  35832.  1Ch    WORD    ??? (wants to be 1)
  35833.  
  35834. Format of new Phar Lap .EXP file header:
  35835. Offset    Size    Description    (Table 0758)
  35836.  00h  2 BYTEs    signature ("P2" for 286 .EXP executable, "P3" for 386 .EXP)
  35837.  02h    WORD    level (01h flat-model file, 02h multisegmented file)
  35838.  04h    WORD    header size
  35839.  06h    DWORD    file size in bytes
  35840.  0Ah    WORD    checksum
  35841.  0Ch    DWORD    offset of run-time parameters within file
  35842.  10h    DWORD    size of run-time parameters in bytes
  35843.  14h    DWORD    offset of relocation table within file
  35844.  18h    DWORD    size of relocation table in bytes
  35845.  1Ch    DWORD    offset of segment information table within file
  35846.  20h    DWORD    size of segment information table in bytes
  35847.  24h    WORD    size of segment information table entry in bytes
  35848.  26h    DWORD    offset of load image within file
  35849.  2Ah    DWORD    size of load image on disk
  35850.  2Eh    DWORD    offset of symbol table within file
  35851.  32h    DWORD    size of symbol table in bytes
  35852.  36h    DWORD    offset of GDT within load image
  35853.  3Ah    DWORD    size of GDT in bytes
  35854.  3Eh    DWORD    offset of LDT within load image
  35855.  42h    DWORD    size of LDT in bytes
  35856.  46h    DWORD    offset of IDT within load image
  35857.  4Ah    DWORD    size of IDT in bytes
  35858.  4Eh    DWORD    offset of TSS within load image
  35859.  52h    DWORD    size of TSS in bytes
  35860.  56h    DWORD    minimum number of extra bytes to be allocated at end of program
  35861.         (level 1 executables only)
  35862.  5Ah    DWORD    maximum number of extra bytes to be allocated at end of program
  35863.         (level 1 executables only)
  35864.  5Eh    DWORD    base load offset (level 1 executables only)
  35865.  62h    DWORD    initial ESP
  35866.  66h    WORD    initial SS
  35867.  68h    DWORD    initial EIP
  35868.  6Ch    WORD    initial CS
  35869.  6Eh    WORD    initial LDT
  35870.  70h    WORD    initial TSS
  35871.  72h    WORD    flags
  35872.         bit 0: load image is packed
  35873.         bit 1: 32-bit checksum is present
  35874.         bits 4-2: type of relocation table
  35875.  74h    DWORD    memory requirements for load image
  35876.  78h    DWORD    32-bit checksum (optional)
  35877.  7Ch    DWORD    size of stack segment in bytes
  35878.  80h 256 BYTEs    reserved (0)
  35879.  
  35880. Format of Phar Lap segment information table entry:
  35881. Offset    Size    Description    (Table 0759)
  35882.  00h    WORD    selector number
  35883.  02h    WORD    flags
  35884.  04h    DWORD    base offset of selector
  35885.  08h    DWORD    minimum number of extra bytes to be allocated to the segment
  35886.  
  35887. Format of 386|DOS-Extender run-time parameters:
  35888. Offset    Size    Description    (Table 0760)
  35889.  00h  2 BYTEs    signature "DX" (44h 58h)
  35890.  02h    WORD    minimum number of real-mode params to leave free at run time
  35891.  04h    WORD    maximum number of real-mode params to leave free at run time
  35892.  06h    WORD    minimum interrupt buffer size in KB
  35893.  08h    WORD    maximum interrupt buffer size in KB
  35894.  0Ah    WORD    number of interrupt stacks
  35895.  0Ch    WORD    size in KB of each interrupt stack
  35896.  0Eh    DWORD    offset of byte past end of real-mode code and data
  35897.  12h    WORD    size in KB of call buffers
  35898.  14h    WORD    flags
  35899.         bit 0: file is virtual memory manager
  35900.         bit 1: file is a debugger
  35901.  16h    WORD    unprivileged flag (if nonzero, executes at ring 1, 2, or 3)
  35902.  18h 104 BYTEs    reserved (0)
  35903.  
  35904. Format of Phar Lap repeat block header:
  35905. Offset    Size    Description    (Table 0761)
  35906.  00h    WORD    byte count
  35907.  02h    BYTE    repeat string length
  35908.  
  35909. Format of Borland debugging information header (following load image):
  35910. Offset    Size    Description    (Table 0762)
  35911.  00h    WORD    signature 52FBh
  35912.  02h    WORD    version ID
  35913.  04h    DWORD    size of name pool in bytes
  35914.  08h    WORD    number of names in namem pool
  35915.  0Ah    WORD    number of type entries
  35916.  0Ch    WORD    number of structure members
  35917.  0Eh    WORD    number of symbols
  35918.  10h    WORD    number of global symbols
  35919.  12h    WORD    number of modules
  35920.  14h    WORD    number of locals (optional)
  35921.  16h    WORD    number of scopes in table
  35922.  18h    WORD    number of line-number entries
  35923.  1Ah    WORD    number of include files
  35924.  1Ch    WORD    number of segment records
  35925.  1Eh    WORD    number of segment/file correlations
  35926.  20h    DWORD    size of load image after removing uninitialized data and debug
  35927.           information
  35928.  24h    DWORD    debugger hook; pointer into debugged program whose meaning
  35929.           depends on program flags
  35930.  28h    BYTE    program flags
  35931.         bit 0: case-sensitive link
  35932.         bit 1: pascal overlay program
  35933.  29h    WORD    no longer used
  35934.  2Bh    WORD    size of data pool in bytes
  35935.  2Dh    BYTE    padding
  35936.  2Eh    WORD    size of following header extension (currently 00h, 10h, or 20h)
  35937.  30h    WORD    number of classes
  35938.  32h    WORD    number of parents
  35939.  34h    WORD    number of global classes (currently unused)
  35940.  36h    WORD    number of overloads (currently unused)
  35941.  38h    WORD    number of scope classes
  35942.  3Ah    WORD    number of module classes
  35943.  3Ch    WORD    number of coverage offsets
  35944.  3Eh    DWORD    offset relative to symbol base of name pool
  35945.  42h    WORD    number of browser information records
  35946.  44h    WORD    number of optimized symbol records
  35947.  46h    WORD    debugging flags
  35948.  48h  8 BYTEs    padding
  35949. Note:    additional information on the Borland debugging info may be found in
  35950.       Borland's Open Architecture Handbook
  35951. --------U-214B-------------------------------
  35952. INT 21 - ELRES v1.0 only - INSTALLATION CHECK
  35953.     AH = 4Bh
  35954.     DS:DX = 0000h:0000h
  35955. Return: ES:BX -> ELRES history structure (see #0538 at AH=2Bh/CX=454Ch)
  35956.     DX = DABEh (signature, DAve BEnnett)
  35957. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  35958.       Bennett
  35959. SeeAlso: AH=2Bh/CX=454Ch
  35960. --------v-214B04-----------------------------
  35961. INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
  35962.     AX = 4B04h
  35963. Return: CF clear if "MG" resident
  35964.     AX = 044Bh if "699"/"Thirteen Minutes" resident
  35965. SeeAlso: AX=4243h,AH=4Ah/BX=FFFFh,AX=4B21h
  35966. --------D-214B05-----------------------------
  35967. INT 21 - DOS 5+ - SET EXECUTION STATE
  35968.     AX = 4B05h
  35969.     DS:DX -> execution state structure (see #0763)
  35970. Return: CF clear if successful
  35971.         AX = 0000h
  35972.     CF set on error
  35973.         AX = error code (see #0811 at AH=59h)
  35974. Note:    used by programs which intercept AX=4B00h to prepare new programs for
  35975.       execution (including setting the DOS version number).     No DOS, BIOS
  35976.       or other software interrupt may be called after return from this call
  35977.       before commencement of the child process.  If DOS is running in the
  35978.       HMA, A20 is turned off on return from this call.
  35979. SeeAlso: AH=4Bh
  35980.  
  35981. Format of execution state structure:
  35982. Offset    Size    Description    (Table 0763)
  35983.  00h    WORD    reserved (00h)
  35984.  02h    WORD    type flags
  35985.         bit 0: program is an .EXE
  35986.         bit 1: program is an overlay
  35987.  04h    DWORD    pointer to ASCIZ name of program file
  35988.  08h    WORD    PSP segment of new program
  35989.  0Ah    DWORD    starting CS:IP of new program
  35990.  0Eh    DWORD    program size including PSP
  35991. --------v-214B20-----------------------------
  35992. INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
  35993.     AX = 4B20h
  35994. SeeAlso: AX=4B04h,AX=4B21h
  35995. --------v-214B21-----------------------------
  35996. INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
  35997.     AX = 4B21h
  35998. Note:    called at completion of virus installation
  35999. SeeAlso: AX=4B04h,AX=4B20h,AX=4B25h
  36000. --------v-214B25-----------------------------
  36001. INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
  36002.     AX = 4B25h
  36003. Return: DI = 1234h if resident
  36004. SeeAlso: AX=4B21h,AX=4B40h
  36005. --------v-214B40-----------------------------
  36006. INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
  36007.     AX = 4B40h
  36008. Return: AX = 5678h if resident
  36009. SeeAlso: AX=4B25h,AX=4B41h,AX=4B4Ah
  36010. --------v-214B41-----------------------------
  36011. INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
  36012.     AX = 4B41h
  36013.     ???
  36014. Return: ???
  36015. SeeAlso: AX=4B40h
  36016. --------v-214B4A-----------------------------
  36017. INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
  36018.     AX = 4B4Ah
  36019. Return: AL = 57h if resident
  36020. SeeAlso: AX=4B40h,AX=4B4Bh
  36021. --------v-214B4B-----------------------------
  36022. INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
  36023.     AX = 4B4Bh
  36024. Return: CF clear if resident
  36025. SeeAlso: AX=4B4Ah,AX=4B4Dh
  36026. --------v-214B4D-----------------------------
  36027. INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
  36028.     AX = 4B4Dh
  36029. Return: CF clear if resident
  36030. SeeAlso: AX=4B4Ah,AX=4B50h
  36031. --------v-214B50-----------------------------
  36032. INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
  36033.     AX = 4B50h
  36034. Return: AX = 1234h if resident
  36035. SeeAlso: AX=4B4Dh,AX=4B53h,AX=4B60h
  36036. --------v-214B53-----------------------------
  36037. INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
  36038.     AX = 4B53h
  36039. Return: CF clear if resident
  36040. SeeAlso: AX=4B50h,AX=4B55h
  36041. --------v-214B55-----------------------------
  36042. INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
  36043.     AX = 4B55h
  36044. Return: AX = 1231h if resident
  36045. SeeAlso: AX=4B53h,AX=4B59h
  36046. --------v-214B59-----------------------------
  36047. INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
  36048.     AX = 4B59h
  36049. Return: CF clear if resident
  36050. SeeAlso: AX=4B50h,AX=4B5Eh
  36051. --------v-214B5E-----------------------------
  36052. INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
  36053.     AX = 4B5Eh
  36054. Return: CF clear if resident
  36055. SeeAlso: AX=4B59h,AX=4B87h
  36056. --------v-214B60-----------------------------
  36057. INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
  36058.     AX = 4B60h
  36059.     ???
  36060. Return: ???
  36061. SeeAlso: AX=4B50h
  36062. --------v-214B87-----------------------------
  36063. INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
  36064.     AX = 4B87h
  36065. Return: AX = 6663h if resident
  36066. SeeAlso: AX=4B5Eh,AX=4B95h
  36067. --------v-214B95-----------------------------
  36068. INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
  36069.     AX = 4B95h
  36070. Return: AX = 1973h if resident
  36071. SeeAlso: AX=4B87h,AX=4BA7h
  36072. --------v-214BA7-----------------------------
  36073. INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
  36074.     AX = 4BA7h
  36075. Return: AX = B459h if resident
  36076. SeeAlso: AX=4B95h,AX=4BAAh
  36077. --------v-214BAA-----------------------------
  36078. INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
  36079.     AX = 4BAAh
  36080. Return: CF clear if resident
  36081. SeeAlso: AX=4BA7h,AX=4BAFh
  36082. --------v-214BAF-----------------------------
  36083. INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
  36084.     AX = 4BAFh
  36085. Return: AL = AFh if "Magnitogorsk" resident
  36086.     AL = FAh if "948"/"Screenplus1" resident
  36087. SeeAlso: AX=4BAAh,AX=4BDDh
  36088. --------v-214BDD-----------------------------
  36089. INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
  36090.     AX = 4BDDh
  36091. Return: AX = 1234h
  36092. SeeAlso: AX=4BAFh,AX=4BFEh
  36093. --------v-214BEE-----------------------------
  36094. INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
  36095.     AX = 4BEEh
  36096. Return: AX = status
  36097.         1234h grab was successful
  36098.         2345h failed (INT 21 grabbed previously)
  36099. Program: F-DRIVER.SYS is part of the shareware F-PROT virus/trojan protection
  36100.       package by Fridrik Skulason
  36101. Note:    when called the first time, this function moves the INT 21 monitoring
  36102.       code from its original location in the INT 21 chain to be the first
  36103.       thing called by INT 21.  This is the mechanism used by F-NET.
  36104. SeeAlso: INT 2F/AX=4653h
  36105. --------k-214BF0-----------------------------
  36106. INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
  36107.     AX = 4BF0h
  36108. Return: CF clear if installed
  36109.         AX = 899Dh
  36110. Program: DIET is an executable-compression program by Teddy Matsumoto
  36111. SeeAlso: AX=37D0h,AX=4BF1h
  36112. --------k-214BF1-----------------------------
  36113. INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
  36114.     AX = 4BF1h
  36115. Return: ???
  36116. SeeAlso: AX=37D0h,AX=4BF0h
  36117. --------v-214BFE-----------------------------
  36118. INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
  36119.     AX = 4BFEh
  36120. Return: AX = 1234h if "Hitchcock" resident
  36121.     AX = ABCDh if "1193"/"Copyright" resident
  36122.     DI = 55BBh if "Dark Avenger-1028" resident
  36123. SeeAlso: AX=4BDDh,AX=4BFFh"Justice"
  36124. --------v-214BFF-----------------------------
  36125. INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
  36126.     AX = 4BFFh
  36127. Return: BL = FFh if "USSR-707" resident
  36128.     DI = 55AAh if "Justice" resident
  36129.     CF clear if "Europe 92" resident
  36130. SeeAlso: AX=4BFEh,AX=4BFFh"Cascade",AX=5252h
  36131. --------v-214BFFSI0000-----------------------
  36132. INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
  36133.     AX = 4BFFh
  36134.     SI = 0000h
  36135.     DI = 0000h
  36136. Return: DI = 55AAh if installed
  36137. SeeAlso: AX=4BFFh"Justice",AX=5252h
  36138. --------D-214C-------------------------------
  36139. INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
  36140.     AH = 4Ch
  36141.     AL = return code
  36142. Return: never returns
  36143. Notes:    unless the process is its own parent (see #0535 at AH=26h, offset 16h
  36144.       in PSP), all open files are closed and all memory belonging to the
  36145.       process is freed
  36146.     all network file locks should be removed before calling this function
  36147. SeeAlso: AH=00h,AH=26h,AH=4Bh,AH=4Dh,INT 15/AH=12h/BH=02h,INT 20,INT 22
  36148. SeeAlso: INT 60/DI=0601h
  36149. ----------214C57-----------------------------
  36150. INT 21 - Headroom - ???
  36151.     AX = 4C57h
  36152.     DS:DX -> target address
  36153. Note:    jumps to target address instead of terminating program
  36154. SeeAlso: AX=5758h
  36155. --------D-214D-------------------------------
  36156. INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
  36157.     AH = 4Dh
  36158. Return: AH = termination type
  36159.         00h normal (INT 20,INT 21/AH=00h, or INT 21/AH=4Ch)
  36160.         01h control-C abort
  36161.         02h critical error abort
  36162.         03h terminate and stay resident (INT 21/AH=31h or INT 27)
  36163.     AL = return code
  36164. Notes:    the word in which DOS stores the return code is cleared after being
  36165.       read by this function, so the return code can only be retrieved once
  36166.     COMMAND.COM stores the return code of the last external command it
  36167.       executed as ERRORLEVEL
  36168.     this call should not be used if the child was started with AX=4B04h;
  36169.       use AH=8Ah instead
  36170.     the following sequence will close a Virtual DOS Machine under OS/2 2.0:
  36171.       MOV    AH,4Dh
  36172.       INT    21h
  36173.       HLT
  36174.       DB    02h,0FDh
  36175.       This sequence is the only way to close a specific VDM which was
  36176.       booted from floppy or a disk image.
  36177. SeeAlso: AH=4Bh,AH=4Ch,AH=8Ah
  36178. --------D-214E-------------------------------
  36179. INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
  36180.     AH = 4Eh
  36181.     AL = special flag for use by APPEND (see note below)
  36182.     CX = file attribute mask (see #0574 at AX=4301h) (bits 0 and 5 ignored)
  36183.         0088h (Novell DOS 7) find first deleted file
  36184.     DS:DX -> ASCIZ file specification (may include path and wildcards)
  36185. Return: CF clear if successful
  36186.         [DTA] = FindFirst data block (see #0764)
  36187.     CF set on error
  36188.         AX = error code (02h,03h,12h) (see #0811 at AH=59h)
  36189. Notes:    for search attributes other than 08h, all files with at MOST the
  36190.       specified combination of hidden, system, and directory attributes
  36191.       will be returned.  Under DOS 2.x, searching for attribute 08h
  36192.       (volume label) will also return normal files, while under DOS 3+
  36193.       only the volume label (if any) will be returned.
  36194.     this call also returns successfully if given the name of a character
  36195.       device without wildcards.  DOS 2.x returns attribute 00h, size 0,
  36196.       and the current date and time.  DOS 3+ returns attribute 40h and the
  36197.       current date and time.
  36198.     immediately after an INT 2F/AX=B711h (APPEND return found name), the
  36199.       name at DS:DX will be overwritten; if AL=00h on entry, the actual
  36200.       found pathname will be stored, otherwise, the actual found path
  36201.       will be prepended to the original filespec without a path.
  36202.     under LANtastic, this call may be used to obtain a list of a server's
  36203.       shared resources by searching for "\\SERVER\*.*"; a list of printer
  36204.       resources may be obtained by searching for "\\SERVER\@*.*"
  36205.     under the FlashTek X-32 DOS extender, the filespec pointer is in DS:EDX
  36206. BUGS:    under DOS 3.x and 4.x, the second and subsequent calls to this function
  36207.       with a character device name (no wildcards) and search attributes
  36208.       which include the volume-label bit (08h) will fail unless there is
  36209.       an intervening DOS call which implicitly or explicity performs a
  36210.       directory search without the volume-label bit.  Such implicit
  36211.       searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK
  36212.       (AH=41h), and RENAME (AH=56h)
  36213.     DR-DOS 3.41 and 5.0 return the Directory attribute for the volume label
  36214. SeeAlso: AH=11h,AH=4Fh,AX=4301h,AH=71h,INT 2F/AX=111Bh,INT 2F/AX=B711h
  36215.  
  36216. Format of FindFirst data block:
  36217. Offset    Size    Description    (Table 0764)
  36218. ---PC-DOS 3.10, PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
  36219.  00h    BYTE    drive letter (bits 0-6), remote if bit 7 set
  36220.  01h 11 BYTEs    search template
  36221.  0Ch    BYTE    search attributes
  36222. ---DOS 2.x (and some DOS 3.x???)---
  36223.  00h    BYTE    search attributes
  36224.  01h    BYTE    drive letter
  36225.  02h 11 BYTEs    search template
  36226. ---WILDUNIX.COM---
  36227.  00h 12 BYTEs    15-character wildcard search pattern and drive letter (packed)
  36228.  0Ch    BYTE    search attributes
  36229. ---DOS 2.x and most 3.x---
  36230.  0Dh    WORD    entry count within directory
  36231.  0Fh    DWORD    pointer to DTA???
  36232.  13h    WORD    cluster number of start of parent directory
  36233. ---PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
  36234.  0Dh    WORD    entry count within directory
  36235.  0Fh    WORD    cluster number of start of parent directory
  36236.  11h  4 BYTEs    reserved
  36237. ---all versions, documented fields---
  36238.  15h    BYTE    attribute of file found
  36239.  16h    WORD    file time (see #0802 at AX=5700h)
  36240.  18h    WORD    file date (see #0803 at AX=5700h)
  36241.  1Ah    DWORD    file size
  36242.  1Eh 13 BYTEs    ASCIZ filename+extension
  36243. --------f-214E-------------------------------
  36244. INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
  36245.     AH = 4Eh
  36246.     DS:DX = 0000h:0000h
  36247. Return: AH = 99h if installed
  36248. Program: WILDUNIX.COM is a resident Unix-style wildcard expander by Steve
  36249.       Hosgood and Terry Barnaby
  36250. --------D-214F-------------------------------
  36251. INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
  36252.     AH = 4Fh
  36253.     [DTA] = data block from previous FindFirst or FindNext call
  36254. Return: CF clear if successful
  36255.     CF set on error
  36256.         AX = error code (12h) (see #0811 at AH=59h)
  36257. Note:    under Novell DOS 7, if the FindFirst call (AH=4Eh) had CX=0088h, then
  36258.       the next matching deleted file will be returned
  36259. BUG:    DR-DOS 3.41 and 5.0 return the Directory attribute for the volume label
  36260. SeeAlso: AH=12h,AH=4Eh,AH=71h,AH=72h
  36261. --------D-2150-------------------------------
  36262. INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
  36263.     AH = 50h
  36264.     BX = segment of PSP for new process
  36265. Notes:    DOS uses the current PSP address to determine which processes own files
  36266.       and memory; it corresponds to process identifiers used by other OSs
  36267.     under DOS 2.x, this function cannot be invoked inside an INT 28h
  36268.       handler without setting the Critical Error flag
  36269.     under MS-DOS 3+ and DR-DOS 3.41+, this function does not use any of
  36270.       the DOS-internal stacks and may thus be called at any time, even
  36271.       during another INT 21h call
  36272.     some Microsoft applications such as Quick C 2.51 use segments of 0000h
  36273.       and FFFFh and direct access to the SDA (see #0818 at AX=5D06h) to
  36274.       test whether they are running under MS-DOS rather than a compatible
  36275.       OS; although one should only call this function with valid PSP
  36276.       addresses, any program hooking it should be prepared to handle
  36277.       invalid addresses
  36278.     this function is supported by the OS/2 compatibility box
  36279.     this call was undocumented prior to the release of DOS 5.0
  36280. SeeAlso: AH=26h,AH=51h,AH=62h
  36281. --------D-2151-------------------------------
  36282. INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
  36283.     AH = 51h
  36284. Return: BX = segment of PSP for current process
  36285. Notes:    DOS uses the current PSP address to determine which processes own files
  36286.       and memory; it corresponds to process identifiers used by other OSs
  36287.     under DOS 2.x, this function cannot be invoked inside an INT 28h
  36288.       handler without setting the Critical Error flag
  36289.     under DOS 3+, this function does not use any of the DOS-internal stacks
  36290.       and may thus be called at any time, even during another INT 21h call
  36291.     supported by OS/2 compatibility box
  36292.     identical to the documented AH=62h
  36293.     this call was undocumented prior to the release of DOS 5.0
  36294. SeeAlso: AH=26h,AH=50h,AH=62h
  36295. --------D-2152-------------------------------
  36296. INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
  36297.     AH = 52h
  36298. Return: ES:BX -> DOS list of lists (see #0765)
  36299. Notes:    partially supported by OS/2 v1.1 compatibility box (however, most
  36300.       pointers are FFFFh:FFFFh, LASTDRIVE is FFh, and the NUL header "next"
  36301.       pointer is FFFFh:FFFFh).
  36302.     partially supported by the Windows NT DOS box; contains only a
  36303.       rudimentary Current Directory Structure (see #0782)
  36304.     on return, ES points at the DOS data segment (see also INT 2F/AX=1203h)
  36305.     Quarterdeck's suggested check for the use of its DOSDATA.SYS or
  36306.       DOS-UP.SYS is to test whether the list-of-lists segment is greater
  36307.       than the segment of the first memory block; a better check for
  36308.       DOS-UP.SYS is INT 21/AX=2B01h/CX=444Dh
  36309. SeeAlso: INT 2F/AX=1203h
  36310.  
  36311. Format of List of Lists:
  36312. Offset    Size    Description    (Table 0765)
  36313.  -24    WORD    (DOS 3.1+) contents of CX from INT 21/AX=5E01h
  36314.  -22    WORD    (DOS ???+) LRU counter for FCB caching
  36315.  -20    WORD    (DOS ???+) LRU counter for FCB opens
  36316.  -18    DWORD    (DOS ???+) address of OEM function handler (see INT 21/AH=F8h)
  36317.             FFFFh:FFFFh if not installed or not available
  36318.  -14    WORD    (DOS ???+) offset in DOS CS of code to return from INT 21 call
  36319.  -12    WORD    (DOS 3.1+) sharing retry count (see AX=440Bh)
  36320.  -10    WORD    (DOS 3.1+) sharing retry delay (see AX=440Bh)
  36321.  -8    DWORD    (DOS 3+) pointer to current disk buffer
  36322.  -4    WORD    (DOS 3+) pointer in DOS data segment of unread CON input
  36323.         when CON is read via a handle, DOS reads an entire line,
  36324.           and returns the requested portion, buffering the rest
  36325.           for the next read.  0000h indicates no unread input
  36326.  -2    WORD    segment of first memory control block
  36327.  00h    DWORD    pointer to first Drive Parameter Block (see #0551 at AH=32h)
  36328.  04h    DWORD    -> first System File Table (see #0776,#0777,#0778,#0779)
  36329.  08h    DWORD    pointer to active CLOCK$ device's header (most recently loaded
  36330.           driver with CLOCK bit set)
  36331.  0Ch    DWORD    pointer to active CON device's header (most recently loaded
  36332.           driver with STDIN bit set)
  36333. ---DOS 2.x---
  36334.  10h    BYTE    number of logical drives in system
  36335.  11h    WORD    maximum bytes/block of any block device
  36336.  13h    DWORD    pointer to first disk buffer (see #0787,#0788)
  36337.  17h 18 BYTEs    actual NUL device driver header (not a pointer!)
  36338.         NUL is always the first device on DOS's linked list of device
  36339.           drivers. (see #0785)
  36340. ---DOS 3.0---
  36341.  10h    BYTE    number of block devices
  36342.  11h    WORD    maximum bytes/block of any block device
  36343.  13h    DWORD    pointer to first disk buffer (see #0788,#0790)
  36344.  17h    DWORD    pointer to array of current directory structures (see #0780)
  36345.  1Bh    BYTE    value of LASTDRIVE command in CONFIG.SYS (default 5)
  36346.  1Ch    DWORD    pointer to STRING= workspace area
  36347.  20h    WORD    size of STRING area (the x in STRING=x from CONFIG.SYS)
  36348.  22h    DWORD    pointer to FCB table
  36349.  26h    WORD    the y in FCBS=x,y from CONFIG.SYS
  36350.  28h 18 BYTEs    actual NUL device driver header (not a pointer!)
  36351.         NUL is always the first device on DOS's linked list of device
  36352.           drivers. (see #0785)
  36353. ---DOS 3.1-3.3---
  36354.  10h    WORD    maximum bytes per sector of any block device
  36355.  12h    DWORD    pointer to first disk buffer in buffer chain (see #0788)
  36356.  16h    DWORD    pointer to array of current directory structures (see #0780)
  36357.  1Ah    DWORD    pointer to system FCB tables (see #0777,#0778,#0779)
  36358.  1Eh    WORD    number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
  36359.  20h    BYTE    number of block devices installed
  36360.  21h    BYTE    number of available drive letters (largest of 5, installed
  36361.           block devices, and CONFIG.SYS LASTDRIVE=).  Also size of
  36362.           current directory structure array.
  36363.  22h 18 BYTEs    actual NUL device driver header (not a pointer!)
  36364.         NUL is always the first device on DOS's linked list of device
  36365.           drivers. (see #0785)
  36366.  34h    BYTE    number of JOIN'ed drives
  36367. ---DOS 4.x---
  36368.  10h    WORD    maximum bytes per sector of any block device
  36369.  12h    DWORD    pointer to disk buffer info record (see #0790,#0791)
  36370.         Note: although the initialization code in IO.SYS uses this
  36371.           pointer, MSDOS.SYS does not, instead using the hardcoded     
  36372.           address of the info record
  36373.  16h    DWORD    pointer to array of current directory structures
  36374.         (see #0780,#0781)
  36375.  1Ah    DWORD    pointer to system FCB tables (see #0777,#0778,#0779)
  36376.  1Eh    WORD    number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
  36377.         (always 00h for DOS 5.0)
  36378.  20h    BYTE    number of block devices installed
  36379.  21h    BYTE    number of available drive letters (largest of 5, installed
  36380.           block devices, and CONFIG.SYS LASTDRIVE=).  Also size of
  36381.           current directory structure array.
  36382.  22h 18 BYTEs    actual NUL device driver header (not a pointer!)
  36383.         NUL is always the first device on DOS's linked list of device
  36384.           drivers. (see #0785)
  36385.  34h    BYTE    number of JOIN'ed drives
  36386.  35h    WORD    pointer within IBMDOS code segment to list of special program
  36387.           names (see #0800)
  36388.         (always 0000h for DOS 5.0)
  36389.  37h    DWORD    pointer to FAR routine for resident IFS utility functions
  36390.         (see #0797)
  36391.         may be called by any IFS driver which does not wish to
  36392.           service functions 20h or 24h-28h itself
  36393.  3Bh    DWORD    pointer to chain of IFS (installable file system) drivers
  36394.  3Fh    WORD    the x in BUFFERS x,y (rounded up to multiple of 30 if in EMS)
  36395.  41h    WORD    number of lookahead buffers (the y in BUFFERS x,y)
  36396.  43h    BYTE    boot drive (1=A:)
  36397.  44h    BYTE    flag: 01h to use DWORD moves (80386+), 00h otherwise
  36398.  45h    WORD    extended memory size in KB
  36399. ---DOS 5.0-6.0---
  36400.  10h 39 BYTEs    as for DOS 4.x (see above)
  36401.  37h    DWORD    pointer to SETVER program list or 0000h:0000h
  36402.  3Bh    WORD    (DOS=HIGH) offset in DOS CS of function to fix A20 control
  36403.           when executing special .COM format
  36404.  3Dh    WORD    PSP of most-recently EXECed program if DOS in HMA, 0000h if low
  36405.         used for maintaining count of INT 21 calls which disable A20
  36406.           on return
  36407.  3Fh  8 BYTEs    as for DOS 4.x (see above)
  36408. ---Windows NT DOS Box---
  36409.  10h  6 BYTEs    ???
  36410.  16h    DWORD    pointer to array of current directory structures (see #0782)
  36411.  1Ah  6 BYTEs    ???
  36412.  20h    BYTE    number of block devices installed
  36413.  21h    BYTE    number of local drive letters (= installed block devices)
  36414.         Also size of current directory structure array.
  36415.  22h 18 BYTEs    actual NUL device driver header (not a pointer!)
  36416.         NUL is always the first device on DOS's linked list of device
  36417.           drivers. (see #0785)
  36418.  
  36419. (Table 0766)
  36420. Values for special flag PSP segments:
  36421.  0000h    free
  36422.  0006h    DR-DOS XMS UMB
  36423.  0007h    DR-DOS excluded upper memory ("hole")
  36424.  0008h    belongs to DOS
  36425.  FFFAh    386MAX UMB control block (see #0628 at AX=4402h"386MAX")
  36426.  FFFDh    386MAX locked-out memory
  36427.  FFFEh    386MAX UMB (immediately follows its control block)
  36428.  FFFFh    386MAX 6.01 device driver
  36429.  
  36430. Format of DOS memory control block (see also below):
  36431. Offset    Size    Description    (Table 0767)
  36432.  00h    BYTE    block type: 5Ah if last block in chain, otherwise 4Dh
  36433.  01h    WORD    PSP segment of owner or special flag value (see #0766)
  36434.  03h    WORD    size of memory block in paragraphs
  36435.  05h  3 BYTEs    unused by MS-DOS
  36436.         (386MAX) if locked-out block, region start/prev region end
  36437. ---DOS 2.x,3.x---
  36438.  08h  8 BYTEs    unused
  36439. ---DOS 4+ ---
  36440.  08h  8 BYTEs    ASCII program name if PSP memory block or DR-DOS UMB,
  36441.           else garbage
  36442.         null-terminated if less than 8 characters
  36443. Notes:    the next MCB is at segment (current + size + 1)
  36444.     under DOS 3.1+, the first memory block is the DOS data segment,
  36445.       containing installable drivers, buffers, etc.     Under DOS 4+ it is
  36446.       divided into subsegments, each with its own memory control block
  36447.       (see #0770), the first of which is at offset 0000h.
  36448.     for DOS 5+, blocks owned by DOS may have either "SC" or "SD" in bytes
  36449.       08h and 09h.    "SC" is system code or locked-out inter-UMB memory,
  36450.       "SD" is system data, device drivers, etc.
  36451.     Some versions of DR-DOS use only seven characters of the program name,
  36452.       placing a NUL in the eighth byte.
  36453. SeeAlso: #0768,#0769,#0770
  36454.  
  36455. Format of MS-DOS 5+ UMB control block:
  36456. Offset    Size    Description    (Table 0768)
  36457.  00h    BYTE    type: 5Ah if last block in chain, 4Dh otherwise
  36458.  01h    WORD    first available paragraph in UMB if control block at start
  36459.           of UMB, 000Ah if control block at end of UMB
  36460.  03h    WORD    length in paragraphs of following UMB or locked-out region
  36461.  05h  3 BYTEs    unused
  36462.  08h  8 BYTEs    block type name: "UMB" if start block, "SM" if end block in UMB
  36463.  
  36464. Format of STARLITE (General Software's Embedded DOS) memory control block:
  36465. Offset    Size    Description    (Table 0769)
  36466.  00h    BYTE    block type: 5Ah if last block in chain, otherwise 4Dh
  36467.  01h    WORD    PSP segment of owner, 0000h if free, 0008h if belongs to DOS
  36468.  03h    WORD    size of memory block in paragraphs
  36469.  05h    BYTE    unused
  36470.  06h    WORD    segment address of next memory control block (0000h if last)
  36471.  08h    WORD    segment address of previous memory control block or 0000h
  36472.  0Ah  6 BYTEs    reserved
  36473.  
  36474. Format of DOS 4+ data segment subsegment control blocks:
  36475. Offset    Size    Description    (Table 0770)
  36476.  00h    BYTE    subsegment type (blocks typically appear in this order)
  36477.         "D"  device driver
  36478.         "E"  device driver appendage
  36479.         "I"  IFS (Installable File System) driver
  36480.         "F"  FILES=  control block storage area (for FILES>5)
  36481.         "X"  FCBS=   control block storage area, if present
  36482.         "C"  BUFFERS EMS workspace area (if BUFFERS /X option used)
  36483.         "B"  BUFFERS=  storage area
  36484.         "L"  LASTDRIVE=     current directory structure array storage area
  36485.         "S"  STACKS=  code and data area, if present (see #0771,#0772)
  36486.         "T"  INSTALL= transient code
  36487.  01h    WORD    paragraph of subsegment start (usually the next paragraph)
  36488.  03h    WORD    size of subsegment in paragraphs
  36489.  05h  3 BYTEs    unused
  36490.  08h  8 BYTEs    for types "D" and "I", base name of file from which the driver
  36491.           was loaded (unused for other types)
  36492.  
  36493. Format of data at start of STACKS code segment (if present):
  36494. Offset    Size    Description    (Table 0771)
  36495.  00h    WORD    ???
  36496.  02h    WORD    number of stacks (the x in STACKS=x,y)
  36497.  04h    WORD    size of stack control block array (should be 8*x)
  36498.  06h    WORD    size of each stack (the y in STACKS=x,y)
  36499.  08h    DWORD    pointer to STACKS data segment
  36500.  0Ch    WORD    offset in STACKS data segment of stack control block array
  36501.  0Eh    WORD    offset in STACKS data segment of last element of that array
  36502.  10h    WORD    offset in STACKS data segment of the entry in that array for
  36503.           the next stack to be allocated (initially same as value in
  36504.           0Eh and works its way down in steps of 8 to the value in
  36505.           0Ch as hardware interrupts pre-empt each other)
  36506. Note:    the STACKS code segment data may, if present, be located as follows:
  36507.     DOS 3.2:    The code segment data is at a paragraph boundary fairly early
  36508.           in the IBMBIO segment (seen at 0070:0190h)
  36509.     DOS 3.3:    The code segment is at a paragraph boundary in the DOS data
  36510.           segment, which may be determined by inspecting the segment
  36511.           pointers of the vectors for those of interrupts 02h, 08h-0Eh,
  36512.           70h, 72-77h which have not been redirected by device drivers
  36513.           or TSRs.
  36514.     DOS 4+    Identified by sub-segment control block type "S" within the DOS
  36515.           data segment.
  36516. SeeAlso: INT B4"STACKMAN"
  36517.  
  36518. Format of array elements in STACKS data segment:
  36519. Offset    Size    Description    (Table 0772)
  36520.  00h    BYTE    status: 00h=free, 01h=in use, 03h=corrupted by overflow of
  36521.           higher stack.
  36522.  01h    BYTE    not used
  36523.  02h    WORD    previous SP
  36524.  04h    WORD    previous SS
  36525.  06h    WORD    ptr to word at top of stack (new value for SP). The word at the
  36526.           top of the stack is preset to point back to this control
  36527.           block.
  36528.  
  36529. Format of SHARE.EXE hooks (DOS 3.1-6.00):
  36530. Offset    Size    Description    (Table 0773)
  36531. (offsets from first system file table--pointed at by ListOfLists+04h)
  36532. -3Ch    DWORD    pointer to FAR routine for ???
  36533.         Note: not called by MS-DOS 3.3, set to 0000h:0000h by
  36534.             SHARE 3.3+
  36535. -38h    DWORD    pointer to FAR routine called on opening file
  36536.         on call, internal DOS location points at filename
  36537.           (see #0818 at AX=5D06h)
  36538.         Return: CF clear if successful
  36539.             CF set on error
  36540.                 AX = DOS error code (24h) (see #0811 at AH=59h)
  36541.         Note: SHARE directly accesses DOS-internal data to get name of
  36542.             file just opened
  36543. -34h    DWORD    pointer to FAR routine called on closing file
  36544.         ES:DI -> system file table
  36545.         Note: does something to every Record Lock Record for file
  36546. -30h    DWORD    pointer to FAR routine to close all files for given computer
  36547.         (called by AX=5D03h)
  36548. -2Ch    DWORD    pointer to FAR routine to close all files for given process
  36549.         (called by AX=5D04h)
  36550. -28h    DWORD    pointer to FAR routine to close file by name
  36551.         (called by AX=5D02h)
  36552.         DS:SI -> DOS parameter list (see #0817 at AX=5D00h)
  36553.            DPL's DS:DX -> name of file to close
  36554.         Return: CF clear if successful
  36555.             CF set on error
  36556.                 AX = DOS error code (03h) (see #0811 at AH=59h)
  36557. -24h    DWORD    pointer to FAR routine to lock region of file
  36558.         call with BX = file handle
  36559.               ---DOS 3.x---
  36560.               CX:DX = starting offset
  36561.               SI:AX = size
  36562.               ---DOS 4+---
  36563.               DS:DX -> lock range
  36564.                     DWORD start offset
  36565.                     DWORD size in bytes
  36566.         Return: CF set on error
  36567.                 AL = DOS error code (21h) (see #0811 at AH=59h)
  36568.         Note: not called if file is marked as remote
  36569. -20h    DWORD    pointer to FAR routine to unlock region of file
  36570.         call with BX = file handle
  36571.               ---DOS 3.x---
  36572.               CX:DX = starting offset
  36573.               SI:AX = size
  36574.               ---DOS 4+---
  36575.               DS:DX -> lock range
  36576.                     DWORD start offset
  36577.                     DWORD size in bytes
  36578.         Return: CF set on error
  36579.                 AL = DOS error code (21h) (see #0811 at AH=59h)
  36580.         Note: not called if file is marked as remote
  36581. -1Ch    DWORD    pointer to FAR routine to check if file region is locked
  36582.         call with ES:DI -> system file table entry for file
  36583.             CX = length of region from current position in file
  36584.         Return: CF set if any portion of region locked
  36585.                 AX = 0021h
  36586. -18h    DWORD    pointer to FAR routine to get open file list entry
  36587.         (called by AX=5D05h)
  36588.         call with DS:SI -> DOS parameter list (see #0817 at AX=5D00h)
  36589.             DPL's BX = index of sharing record
  36590.             DPL's CX = index of SFT in SFT chain of sharing rec
  36591.         Return: CF set on error or not loaded
  36592.                 AX = DOS error code (12h) (see #0811 at AH=59h)
  36593.             CF clear if successful
  36594.                 ES:DI -> filename
  36595.                 CX = number of locks owned by specified SFT
  36596.                 BX = network machine number
  36597.                 DX destroyed
  36598. -14h    DWORD    pointer to FAR routine for updating FCB from SFT???
  36599.         call with DS:SI -> unopened FCB
  36600.               ES:DI -> system file table entry
  36601.         Return: BL = C0h???
  36602.         Note: copies following fields from SFT to FCB:
  36603.            starting cluster of file      0Bh     1Ah
  36604.            sharing record offset      33h     1Ch
  36605.            file attribute          04h     1Eh
  36606. -10h    DWORD    pointer to FAR routine to get first cluster of FCB file ???
  36607.         call with ES:DI -> system file table entry
  36608.               DS:SI -> FCB
  36609.         Return: CF set if SFT closed or sharing record offsets
  36610.                 mismatched
  36611.             CF clear if successful
  36612.                 BX = starting cluster number from FCB
  36613. -0Ch    DWORD    pointer to FAR routine to close file if duplicate for process
  36614.         DS:SI -> system file table
  36615.         Return: AX = number of handle in JFT which already uses SFT
  36616.         Note: called during open/create of a file
  36617.         Note: if SFT was opened with inheritance enabled and sharing
  36618.             mode 111, does something to all other SFTs owned by
  36619.             same process which have the same file open mode and
  36620.             sharing record
  36621. -08h    DWORD    pointer to FAR routine for closing file
  36622.         Note: closes various handles referring to file most-recently
  36623.             opened
  36624. -04h    DWORD    pointer to FAR routine to update directory info in related SFT
  36625.           entries
  36626.         call with ES:DI -> system file table entry for file (see #0778)
  36627.               AX = subfunction (apply to each related SFT)
  36628.                 00h: update time stamp (offset 0Dh) and date
  36629.                      stamp (offset 0Fh)
  36630.                 01h: update file size (offset 11h) and starting
  36631.                      cluster (offset 0Bh).  Sets last-accessed
  36632.                      cluster fields to start of file if file
  36633.                      never accessed
  36634.                 02h: as function 01h, but last-accessed fields
  36635.                      always changed
  36636.                 03h: do both functions 00h and 02h
  36637.         Note: follows ptr at offset 2Bh in system file table entries
  36638.         Note: NOP if opened with no-inherit or via FCB
  36639. Notes:    most of the above hooks (except -04h, -14h, -18h, and -3Ch) assume
  36640.       either that SS=DOS DS or SS=DS=DOS DS and directly access
  36641.       DOS-internal data
  36642.     sharing hooks are not supported by DR-DOS 5-6; they appear to be
  36643.       supported by Novell DOS 7, with a segment of 0000h indicating the
  36644.       DOS data segment
  36645. SeeAlso: #0774,#0775
  36646.  
  36647. Format of sharing record:
  36648. Offset    Size    Description    (Table 0774)
  36649.  00h    BYTE    flag
  36650.         00h free block
  36651.         01h allocated block
  36652.         FFh end marker
  36653.  01h    WORD    size of block
  36654.  03h    BYTE    checksum of pathname (including NUL)
  36655.         if sum of ASCII values is N, checksum is (N/256 + N%256)
  36656.  04h    WORD    offset in SHARE's DS of first Record Lock Record (see #0775)
  36657.  06h    DWORD    pointer to start of system file table chain for file
  36658.  0Ah    WORD    unique sequence number
  36659.  0Ch    var    ASCIZ full pathname
  36660. Note:    not supported by DR-DOS SHARE 1.1 and 2.0; will reportedly be
  36661.       supported by Novell DOS 7
  36662. SeeAlso: #0773,#0775
  36663.  
  36664. Format of SHARE.EXE Record Lock Record:
  36665. Offset    Size    Description    (Table 0775)
  36666.  00h    WORD    offset in SHARE's DS of next lock table in list or 0000h
  36667.  02h    DWORD    offset in file of start of locked region
  36668.  06h    DWORD    offset in file of end of locked region
  36669.  0Ah    DWORD    pointer to System File Table entry for this file
  36670.  0Eh    WORD    PSP segment of lock's owner
  36671. ---DOS 5+ ---
  36672.  10h    WORD    lock type: (00h lock all, 01h lock writes only)
  36673. SeeAlso: #0773,#0774,#0776,#0779
  36674.  
  36675. Format of DOS 2.x system file tables:
  36676. Offset    Size    Description    (Table 0776)
  36677.  00h    DWORD    pointer to next file table (offset FFFFh if last)
  36678.  04h    WORD    number of files in this table
  36679.  06h  28h bytes per file
  36680.     Offset    Size    Description
  36681.      00h    BYTE    number of file handles referring to this file
  36682.      01h    BYTE    file open mode (see #0558 at AH=3Dh)
  36683.      02h    BYTE    file attribute
  36684.      03h    BYTE    drive (0 = character device, 1 = A, 2 = B, etc)
  36685.      04h 11 BYTEs    filename in FCB format (no path,no period,blank-padded)
  36686.      0Fh    WORD    ???
  36687.      11h    WORD    ???
  36688.      13h    DWORD    file size???
  36689.      17h    WORD    file date in packed format (see #0803 at AX=5700h)
  36690.      19h    WORD    file time in packed format (see #0802 at AX=5700h)
  36691.      1Bh    BYTE    device attribute (see #0577 at AX=4400h)
  36692.     ---character device---
  36693.      1Ch    DWORD    pointer to device driver
  36694.     ---block device---
  36695.      1Ch    WORD    starting cluster of file
  36696.      1Eh    WORD    relative cluster in file of last cluster accessed
  36697.     ------
  36698.      20h    WORD    absolute cluster number of current cluster
  36699.      22h    WORD    ???
  36700.      24h    DWORD    current file position???
  36701. SeeAlso: #0777,#0778,#0779
  36702.  
  36703. Format of DOS 3.0 system file tables and FCB tables:
  36704. Offset    Size    Description    (Table 0777)
  36705.  00h    DWORD    pointer to next file table (offset FFFFh if last)
  36706.  04h    WORD    number of files in this table
  36707.  06h  38h bytes per file
  36708.     Offset    Size    Description
  36709.      00h-1Eh as for DOS 3.1+ (see #0778)
  36710.      1Fh    WORD    byte offset of directory entry within sector
  36711.      21h 11 BYTEs    filename in FCB format (no path/period, blank-padded)
  36712.      2Ch    DWORD    (SHARE.EXE) pointer to previous SFT sharing same file
  36713.      30h    WORD    (SHARE.EXE) network machine number which opened file
  36714.             (Windows Enhanced mode DOSMGR uses the virtual machine
  36715.               ID as the machine number; see INT 2F/AX=1683h)
  36716.      32h    WORD    PSP segment of file's owner (first three entries for
  36717.               AUX/CON/PRN contain segment of IO.SYS startup code)
  36718.      34h    WORD    (SHARE.EXE) offset in SHARE code seg of share record
  36719.      36h    WORD    ??? apparently always 0000h
  36720. SeeAlso: #0776,#0778,#0779
  36721.  
  36722. Format of DOS 3.1-3.3x, DR-DOS 5.0-6.0 system file tables and FCB tables:
  36723. Offset    Size    Description    (Table 0778)
  36724.  00h    DWORD    pointer to next file table (offset FFFFh if last)
  36725.  04h    WORD    number of files in this table
  36726.  06h  35h bytes per file
  36727.     Offset    Size    Description
  36728.      00h    WORD    number of file handles referring to this file
  36729.      02h    WORD    file open mode (see #0558 at AH=3Dh)
  36730.             bit 15 set if this file opened via FCB
  36731.      04h    BYTE    file attribute (see #0574 at AX=4301h)
  36732.      05h    WORD    device info word (see #0577 at AX=4400h)
  36733.             bit 15 set if remote file
  36734.             bit 14 set means do not set file date/time on closing
  36735.             bit 12 set means don't inherit on EXEC
  36736.             bits 5-0 drive number for disk files
  36737.      07h    DWORD    pointer to device driver header if character device
  36738.             else pointer to DOS Drive Parameter Block
  36739.               (see #0551 at AH=32h)
  36740.      0Bh    WORD    starting cluster of file
  36741.      0Dh    WORD    file time in packed format (see #0802 at AX=5700h)
  36742.             not used for character devices in DR-DOS
  36743.      0Fh    WORD    file date in packed format (see #0803 at AX=5700h)
  36744.             not used for character devices in DR-DOS
  36745.      11h    DWORD    file size
  36746.     ---system file table---
  36747.      15h    DWORD    current offset in file (may be larger than size of
  36748.               file; INT 21/AH=42h does not check new position)
  36749.     ---FCB table---
  36750.      15h    WORD    counter for last I/O to FCB
  36751.      17h    WORD    counter for last open of FCB
  36752.             (these are separate to determine the times of the
  36753.               latest I/O and open)
  36754.     ---
  36755.      19h    WORD    relative cluster within file of last cluster accessed
  36756.      1Bh    WORD    absolute cluster number of last cluster accessed
  36757.             0000h if file never read or written???
  36758.      1Dh    WORD    number of sector containing directory entry
  36759.      1Fh    BYTE    number of dir entry within sector (byte offset/32)
  36760.      20h 11 BYTEs    filename in FCB format (no path/period, blank-padded)
  36761.      2Bh    DWORD    (SHARE.EXE) pointer to previous SFT sharing same file
  36762.      2Fh    WORD    (SHARE.EXE) network machine number which opened file
  36763.             (Windows Enhanced mode DOSMGR uses the virtual machine
  36764.               ID as the machine number; see INT 2F/AX=1683h)
  36765.      31h    WORD    PSP segment of file's owner (see #0535 at AH=26h)
  36766.               (first three entries for AUX/CON/PRN contain segment
  36767.               of IO.SYS startup code)
  36768.      33h    WORD    offset within SHARE.EXE code segment of
  36769.               sharing record (see #0774)  0000h = none
  36770. SeeAlso: #0776,#0777,#0779
  36771.  
  36772. Format of DOS 4.0-6.0 system file tables and FCB tables:
  36773. Offset    Size    Description    (Table 0779)
  36774.  00h    DWORD    pointer to next file table (offset FFFFh if last)
  36775.  04h    WORD    number of files in this table
  36776.  06h  3Bh bytes per file
  36777.     Offset    Size    Description
  36778.      00h    WORD    number of file handles referring to this file
  36779.             FFFFh if in use but not referenced
  36780.      02h    WORD    file open mode (see #0558 at AH=3Dh)
  36781.             bit 15 set if this file opened via FCB
  36782.      04h    BYTE    file attribute (see #0574 at AX=4301h)
  36783.      05h    WORD    device info word (see also #0577 at AX=4400h)
  36784.             bit 15 set if remote file
  36785.             bit 14 set means do not set file date/time on closing
  36786.             bit 13 set if named pipe
  36787.             bit 12 set if no inherit
  36788.             bit 11 set if network spooler
  36789.             bit 7  set if device, clear if file (only if local)
  36790.             bits 6-0 as for AX=4400h
  36791.      07h    DWORD    pointer to device driver header if character device
  36792.             else pointer to DOS Drive Parameter Block
  36793.               (see #0551 at AH=32h) or REDIR data
  36794.      0Bh    WORD    starting cluster of file (local files only)
  36795.      0Dh    WORD    file time in packed format (see #0802)
  36796.      0Fh    WORD    file date in packed format (see #0803)
  36797.      11h    DWORD    file size
  36798.      15h    DWORD    current offset in file (SFT)
  36799.             LRU counters (FCB table, two WORDs)
  36800.     ---local file---
  36801.      19h    WORD    relative cluster within file of last cluster accessed
  36802.      1Bh    DWORD    number of sector containing directory entry
  36803.      1Fh    BYTE    number of dir entry within sector (byte offset/32)
  36804.     ---network redirector---
  36805.      19h    DWORD    pointer to REDIRIFS record
  36806.      1Dh  3 BYTEs    ???
  36807.     ------
  36808.      20h 11 BYTEs    filename in FCB format (no path/period, blank-padded)
  36809.      2Bh    DWORD    (SHARE.EXE) pointer to previous SFT sharing same file
  36810.      2Fh    WORD    (SHARE.EXE) network machine number which opened file
  36811.             (Windows Enhanced mode DOSMGR uses the virtual machine
  36812.               ID as the machine number; see INT 2F/AX=1683h)
  36813.      31h    WORD    PSP segment of file's owner (see #0535 at AH=26h)
  36814.               (first three entries for AUX/CON/PRN contain segment
  36815.               of IO.SYS startup code)
  36816.      33h    WORD    offset within SHARE.EXE code segment of
  36817.             sharing record (see #0733)  0000h = none
  36818.      35h    WORD    (local) absolute cluster number of last clustr accessed
  36819.             (redirector) ???
  36820.      37h    DWORD    pointer to IFS driver for file, 0000000h if native DOS
  36821. Note:    the OS/2 2.0 DOS Boot Session does not properly fill in the filename
  36822.       field due to incomplete support for SFTs; the OS/2 2.0 DOS Window
  36823.       does not appear to support SFTs at all
  36824. SeeAlso: #0776,#0777,#0778
  36825.  
  36826. Format of current directory structure (CDS) (array, LASTDRIVE entries):
  36827. Offset    Size    Description    (Table 0780)
  36828.  00h 67 BYTEs    ASCIZ path in form X:\PATH (local) or UNC form
  36829.           \\MACH\PATH (network, see notes below)
  36830.  43h    WORD    drive attributes (see also note below and AX=5F07h)
  36831.         bit 15: uses network redirector     \ invalid if 00, installable
  36832.         bit 14: physical drive         / file system if 11
  36833.         bit 13: JOIN'ed      \ path above is true path that would be
  36834.         bit 12: SUBST'ed  / needed if not under SUBST or JOIN
  36835.         bit  7: remote drive hidden from redirector's assign-list and
  36836.               exempt from network connection make/break commands;
  36837.               set for CD-ROM drives
  36838.  45h    DWORD    pointer to Drive Parameter Block for drive
  36839.           (see #0551 at AH=32h)
  36840. ---local drives---
  36841.  49h    WORD    starting cluster of current directory
  36842.         0000h = root, FFFFh = never accessed
  36843.  4Bh    WORD    ??? seems to be FFFFh always
  36844.  4Dh    WORD    ??? seems to be FFFFh always
  36845. ---network drives---
  36846.  49h    DWORD    pointer to redirector or REDIRIFS record, or FFFFh:FFFFh
  36847.         (DOS 4 only) available for use by IFS driver
  36848.  4Dh    WORD    stored user data from INT 21/AX=5F03h
  36849. ------
  36850.  4Fh    WORD    offset in current directory path of backslash corresponding to
  36851.           root directory for drive
  36852.         this value specifies how many characters to hide from the
  36853.           "CHDIR" and "GETDIR" calls; normally set to 2 to hide the
  36854.           drive letter and colon, SUBST, JOIN, and networks change it
  36855.           so that only the appropriate portion of the true path is
  36856.           visible to the user
  36857. ---DOS 4+ ---
  36858.  51h    BYTE    (DOS 4 only, remote drives) device type
  36859.         04h network drive
  36860.  52h    DWORD    pointer to IFS driver (DOS 4) or redirector block (DOS 5+) for
  36861.           this drive, 00000000h if native DOS
  36862.  56h    WORD    available for use by IFS driver
  36863. Notes:    the path for invalid drives is normally set to X:\, but may be empty
  36864.       after JOIN x: /D in DR-DOS 5.0 or NET USE x: /D in older LAN versions
  36865.     normally, only one of bits 13&12 may be set together with bit 14, but
  36866.       DR-DOS 5.0 uses other combinations for bits 15-12: 0111 JOIN,
  36867.       0001 SUBST, 0101 ASSIGN (see #0781)
  36868.     Windows for Workgroups 3.11 network sets the path to the local
  36869.       drive and directory even for network drives; in that case the
  36870.       UNC form \\SERVER\SHARE can be obtained with INT 21/AX=5F02h
  36871.       or INT 21/AX=5F46h
  36872. SeeAlso: #0781
  36873.  
  36874. Format of DR-DOS 5.0-6.0 current directory structure entry (array):
  36875. Offset    Size    Description    (Table 0781)
  36876.  00h 67 BYTEs    ASCIZ pathname of actual root directory for this logical drive
  36877.  43h    WORD    drive attributes
  36878.         1000h SUBSTed drive
  36879.         3000h??? JOINed drive
  36880.         4000h physical drive
  36881.         5000h ASSIGNed drive
  36882.         7000h JOINed drive
  36883.         8000h network drive
  36884.  45h    BYTE    physical drive number (0=A:) if this logical drive is valid
  36885.  46h    BYTE    ??? apparently flags for JOIN and ASSIGN
  36886.  47h    WORD    cluster number of start of parent directory (0000h = root)
  36887.  49h    WORD    entry number of current directory in parent directory
  36888.  4Bh    WORD    cluster number of start of current directory
  36889.  4Dh    WORD    used for media change detection (details not available)
  36890.  4Fh    WORD    cluster number of SUBST/JOIN "root" directory
  36891.         0000h if physical root directory
  36892. SeeAlso: #0780
  36893.  
  36894. Format of Windows NT Current Directory Structure (CDS) (array):
  36895. Offset    Size    Description    (Table 0782)
  36896.  00h 67 BYTEs    ASCIZ path in form X:\ (does not show either current directory
  36897.           or network path)
  36898.  43h  4 BYTEs    ???
  36899. Note:    the WinNT CDS contains only as many entries as there are local drives,
  36900.       not LASTDRIVE entries.
  36901.  
  36902. Bitfields for device attributes (character device):
  36903. Bit(s)    Description    (Table 0783)
  36904.  15    set (indicates character device)
  36905.  14    IOCTL supported (see AH=44h)
  36906.  13    (DOS 3+) output until busy supported
  36907.  12    reserved
  36908.  11    (DOS 3+) OPEN/CLOSE/RemMedia calls supported
  36909.  10-8    reserved
  36910.  7    (DOS 5+) Generic IOCTL check call supported (driver command 19h)
  36911.     (see AX=4410h,AX=4411h)
  36912.  6    (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
  36913.     (see AX=440Ch,AX=440Dh)
  36914.  5    reserved
  36915.  4    device is special (use INT 29 "fast console output")
  36916.  3    device is CLOCK$ (all reads/writes use transfer record described
  36917.       below)
  36918.  2    device is NUL
  36919.  1    device is standard output
  36920.  0    device is standard input
  36921. Note:    for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
  36922.       version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
  36923.       010 = European DOS 4.0)
  36924. SeeAlso: #0784,#0785
  36925.  
  36926. Bitfields for device attributes (block device):
  36927. Bit(s)    Description    (Table 0784)
  36928.  15    clear (indicates block device)
  36929.  14    IOCTL supported
  36930.  13    non-IBM format
  36931.  12    network device (device is remote)
  36932.  11    (DOS 3+) OPEN/CLOSE/RemMedia calls supported
  36933.  10    reserved
  36934.  9    direct I/O not allowed??? (set by DOS 3.3 DRIVER.SYS for "new" drives)
  36935.  8    ??? set by DOS 3.3 DRIVER.SYS for "new" drives
  36936.  7    (DOS 5+) Generic IOCTL check call supported (driver command 19h)
  36937.     (see AX=4410h,AX=4411h)
  36938.  6    (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
  36939.     implies support for commands 17h and 18h
  36940.       (see AX=440Ch,AX=440Dh,AX=440Eh,AX=440Fh)
  36941.  5-2    reserved
  36942.  1    driver supports 32-bit sector addressing (DOS 3.31+)
  36943.  0     reserved
  36944. Note:    for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
  36945.       version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
  36946.       010 = European DOS 4.0)
  36947. SeeAlso: #0783,#0785
  36948.  
  36949. Format of DOS device driver header:
  36950. Offset    Size    Description    (Table 0785)
  36951.  00h    DWORD    pointer to next driver, offset=FFFFh if last driver
  36952.  04h    WORD    device attributes (see #0783,#0784)
  36953.  06h    WORD    device strategy entry point
  36954.         call with ES:BX -> request header (see INT 2F/AX=0802h)
  36955.  08h    WORD    device interrupt entry point
  36956. ---character device---
  36957.  0Ah  8 BYTEs    blank-padded character device name
  36958. ---block device---
  36959.  0Ah    BYTE    number of subunits (drives) supported by driver
  36960.  0Bh  7 BYTEs    unused
  36961. ---
  36962.  12h    WORD    (CD-ROM driver) reserved, must be 0000h
  36963.         appears to be another device chain
  36964.  14h    BYTE    (CD-ROM driver) drive letter (must initially be 00h)
  36965.  15h    BYTE    (CD-ROM driver) number of units
  36966.  16h  6 BYTEs    (CD-ROM driver) signature 'MSCDnn' where 'nn' is version
  36967.             (currently '00')
  36968.  
  36969. Format of CLOCK$ transfer record:
  36970. Offset    Size    Description    (Table 0786)
  36971.  00h    WORD    number of days since 1-Jan-1980
  36972.  02h    BYTE    minutes
  36973.  03h    BYTE    hours
  36974.  04h    BYTE    hundredths of second
  36975.  05h    BYTE    seconds
  36976.  
  36977. Format of DOS 2.x disk buffer:
  36978. Offset    Size    Description    (Table 0787)
  36979.  00h    DWORD    pointer to next disk buffer, offset = FFFFh if last
  36980.         least-recently used buffer is first in chain
  36981.  04h    BYTE    drive (0=A, 1=B, etc), FFh if not in use
  36982.  05h  3 BYTEs    unused??? (seems always to be 00h 00h 01h)
  36983.  08h    WORD    logical sector number
  36984.  0Ah    BYTE    number of copies to write (1 for non-FAT sectors)
  36985.  0Bh    BYTE    sector offset between copies if multiple copies to be written
  36986.  0Ch    DWORD    pointer to DOS Drive Parameter Block (see #0551 at AH=32h)
  36987.  10h        buffered data
  36988. SeeAlso: #0788,#0790,#0791,#0793
  36989.  
  36990. Format of DOS 3.x disk buffer:
  36991. Offset    Size    Description    (Table 0788)
  36992.  00h    DWORD    pointer to next disk buffer, offset = FFFFh if last
  36993.         least-recently used buffer is first in chain
  36994.  04h    BYTE    drive (0=A,1=B, etc), FFh if not in use
  36995.  05h    BYTE    buffer flags (see #0789)
  36996.  06h    WORD    logical sector number
  36997.  08h    BYTE    number of copies to write (1 for non-FAT sectors)
  36998.  09h    BYTE    sector offset between copies if multiple copies to be written
  36999.  0Ah    DWORD    pointer to DOS Drive Parameter Block (see #0551 at AH=32h)
  37000.  0Eh    WORD    unused??? (almost always 0)
  37001.  10h        buffered data
  37002. SeeAlso: #0787,#0790,#0791,#0793
  37003.  
  37004. Bitfields for DOS 3.x disk buffer flags:
  37005. Bit(s)    Description    (Table 0789)
  37006.  7    ???
  37007.  6    buffer dirty
  37008.  5    buffer has been referenced
  37009.  4    ???
  37010.  3    sector in data area
  37011.  2    sector in a directory, either root or subdirectory
  37012.  1    sector in FAT
  37013.  0    boot sector??? (guess)
  37014. SeeAlso: #0794
  37015.  
  37016. Format of DOS 4.00 (pre UR 25066) disk buffer info:
  37017. Offset    Size    Description    (Table 0790)
  37018.  00h    DWORD    pointer to array of disk buffer hash chain heads (see #0792)
  37019.  04h    WORD    number of disk buffer hash chains (referred to as NDBCH below)
  37020.  06h    DWORD    pointer to lookahead buffer, zero if not present
  37021.  0Ah    WORD    number of lookahead sectors, else zero (the y in BUFFERS=x,y)
  37022.  0Ch    BYTE    00h if buffers in EMS (/X), FFh if not
  37023.  0Dh    WORD    EMS handle for buffers, zero if not in EMS
  37024.  0Fh    WORD    EMS physical page number used for buffers (usually 255)
  37025.  11h    WORD    ??? seems always to be 0001h
  37026.  13h    WORD    segment of EMS physical page frame
  37027.  15h    WORD    ??? seems always to be zero
  37028.  17h  4 WORDs    EMS partial page mapping information???
  37029. SeeAlso: #0787,#0788,#0791,#0795
  37030.  
  37031. Format of DOS 4.01 (from UR 25066 Corrctive Services Disk on) disk buffer info:
  37032. Offset    Size    Description    (Table 0791)
  37033.  00h    DWORD    pointer to array of disk buffer hash chain heads (see #0792)
  37034.  04h    WORD    number of disk buffer hash chains (referred to as NDBCH below)
  37035.  06h    DWORD    pointer to lookahead buffer, zero if not present
  37036.  0Ah    WORD    number of lookahead sectors, else zero (the y in BUFFERS=x,y)
  37037.  0Ch    BYTE    01h, possibly to distinguish from pre-UR 25066 format
  37038.  0Dh    WORD    ??? EMS segment for BUFFERS (only with /XD)
  37039.  0Fh    WORD    ??? EMS physical page number of EMS seg above (only with /XD)
  37040.  11h    WORD    ??? EMS segment for ??? (only with /XD)
  37041.  13h    WORD    ??? EMS physical page number of above (only with /XD)
  37042.  15h    BYTE    ??? number of EMS page frames present (only with /XD)
  37043.  16h    WORD    segment of one-sector workspace buffer allocated in main memory
  37044.           if BUFFERS/XS or /XD options in effect, possibly to avoid DMA
  37045.           into EMS
  37046.  18h    WORD    EMS handle for buffers, zero if not in EMS
  37047.  1Ah    WORD    EMS physical page number used for buffers (usually 255)
  37048.  1Ch    WORD    ??? appears always to be 0001h
  37049.  1Eh    WORD    segment of EMS physical page frame
  37050.  20h    WORD    ??? appears always to be zero
  37051.  22h    BYTE    00h if /XS, 01h if /XD, FFh if BUFFERS not in EMS
  37052. SeeAlso: #0787,#0788,#0790,#0795
  37053.  
  37054. Format of DOS 4.x disk buffer hash chain head (array, one entry per chain):
  37055. Offset    Size    Description    (Table 0792)
  37056.  00h    WORD    EMS logical page number in which chain is resident, -1 if not
  37057.           in EMS
  37058.  02h    DWORD    pointer to least recently used buffer header.  All buffers on
  37059.           this chain are in the same segment.
  37060.  06h    BYTE    number of dirty buffers on this chain
  37061.  07h    BYTE    reserved (00h)
  37062. Notes:    buffered disk sectors are assigned to chain N where N is the sector's
  37063.       address modulo NDBCH,     0 <= N <= NDBCH-1
  37064.     each chain resides completely within one EMS page
  37065.     this structure is in main memory even if buffers are in EMS
  37066.  
  37067. Format of DOS 4.0-6.0 disk buffer:
  37068. Offset    Size    Description    (Table 0793)
  37069.  00h    WORD    forward ptr, offset only, to next least recently used buffer
  37070.  02h    WORD    backward pointer, offset only
  37071.  04h    BYTE    drive (0=A,1=B, etc) if bit 7 clear
  37072.         SFT index if bit 7 set
  37073.         FFh if not in use
  37074.  05h    BYTE    buffer flags (see #0794)
  37075.  06h    DWORD    logical sector number (local buffers only)
  37076.  0Ah    BYTE    number of copies to write
  37077.         for FAT sectors, same as number of FATs
  37078.         for data and directory sectors, usually 1
  37079.  0Bh    WORD    offset in sectors between copies to write for FAT sectors
  37080.  0Dh    DWORD    pointer to DOS Drive Parameter Block (see #0551 at AH=32h)
  37081.  11h    WORD    size of data in buffer if remote buffer (see flags above)
  37082.  13h    BYTE    reserved (padding)
  37083.  14h        buffered data
  37084. Note:    for DOS 4.x, all buffered sectors which have the same hash value
  37085.       (computed as the sum of high and low words of the logical sector
  37086.       number divided by the number of disk buffer chains) are on the same
  37087.       doubly-linked circular chain; for DOS 5+, only a single circular
  37088.       chain exists.
  37089.     the links consist of offset addresses only, the segment being the same
  37090.       for all buffers in the chain.
  37091. SeeAlso: #0787,#0788,#0790
  37092.  
  37093. Bitfields for DOS 4.0-6.0 disk buffer flags:
  37094. Bit(s)    Description    (Table 0794)
  37095.  7    remote buffer
  37096.  6    buffer dirty
  37097.  5    buffer has been referenced (reserved in DOS 5+)
  37098.  4    search data buffer (only valid if remote buffer)
  37099.  3    sector in data area
  37100.  2    sector in a directory, either root or subdirectory
  37101.  1    sector in FAT
  37102.  0    reserved
  37103. SeeAlso: #0789
  37104.  
  37105. Format of DOS 5.0-6.0 disk buffer info:
  37106. Offset    Size    Description    (Table 0795)
  37107.  00h    DWORD    pointer to least-recently-used buffer header (may be in HMA)
  37108.         (see #0793)
  37109.  04h    WORD    number of dirty disk buffers
  37110.  06h    DWORD    pointer to lookahead buffer, zero if not present
  37111.  0Ah    WORD    number of lookahead sectors, else zero (the y in BUFFERS=x,y)
  37112.  0Ch    BYTE    buffer location
  37113.         00h base memory, no workspace buffer
  37114.         01h HMA, workspace buffer in base memory
  37115.  0Dh    DWORD    pointer to one-segment workspace buffer in base memory
  37116.  11h  3 BYTEs    unused
  37117.  14h    WORD    ???
  37118.  16h    BYTE    flag: INT 24 fail while making an I/O status call
  37119.  17h    BYTE    temp storage for user memory allocation strategy during EXEC
  37120.  18h    BYTE    counter: number of INT 21 calls for which A20 is off
  37121.  19h    BYTE    bit flags
  37122.         bit 0: ???
  37123.         bit 1: SWITCHES=/W specified in CONFIG.SYS (don't load
  37124.             WINA20.SYS when MS Windows 3.0 starts)
  37125.         bit 2: in EXEC state (INT 21/AX=4B05h)
  37126.  1Ah    WORD    offset of unpack code start (used only during INT 21/AX=4B05h)
  37127.  1Ch    BYTE    bit 0 set iff UMB MCB chain linked to normal MCB chain
  37128.  1Dh    WORD    minimum paragraphs of memory required by program being EXECed
  37129.  1Fh    WORD    segment of first MCB in upper memory blocks or FFFFh if DOS
  37130.           memory chain in base 640K only (first UMB MCB usually at
  37131.           9FFFh, locking out video memory with a DOS-owned memory
  37132.           block)
  37133.  21h    WORD    paragraph from which to start scanning during memory allocation
  37134. SeeAlso: #0790,#0791
  37135.  
  37136. Format of IFS driver list:
  37137. Offset    Size    Description    (Table 0796)
  37138.  00h    DWORD    pointer to next driver header
  37139.  04h  8 BYTEs    IFS driver name (blank padded), as used by FILESYS command
  37140.  0Ch  4 BYTEs    ???
  37141.  10h    DWORD    pointer to IFS utility function entry point (see #0797)
  37142.         call with ES:BX -> IFS request (see #0798)
  37143.  14h    WORD    offset in header's segment of driver entry point
  37144.     ???
  37145. SeeAlso: #0797,#0798
  37146.  
  37147. (Table 0797)
  37148. Call IFS utility function entry point with:
  37149.     AH = 20h miscellaneous functions
  37150.         AL = 00h get date
  37151.         Return: CX = year
  37152.             DH = month
  37153.             DL = day
  37154.         AL = 01h get process ID and computer ID
  37155.         Return: BX = current PSP segment
  37156.             DX = active network machine number
  37157.         AL = 05h get file system info
  37158.         ES:DI -> 16-byte info buffer
  37159.         Return: buffer filled
  37160.             Offset    Size    Description
  37161.              00h  2 BYTEs    unused
  37162.              02h    WORD    number of SFTs (actually counts only
  37163.                     the first two file table arrays)
  37164.              04h    WORD    number of FCB table entries
  37165.              06h    WORD    number of proctected FCBs
  37166.              08h  6 BYTEs    unused
  37167.              0Eh    WORD    largest sector size supported
  37168.         AL = 06h get machine name
  37169.         ES:DI -> 18-byte buffer for name
  37170.         Return: buffer filled with name starting at offset 02h
  37171.         AL = 08h get sharing retry count
  37172.         Return: BX = sharing retry count
  37173.         AL = other
  37174.         Return: CF set
  37175.     AH = 21h get redirection state
  37176.         BH = type (03h disk, 04h printer)
  37177.         Return: BH = state (00h off, 01h on)
  37178.     AH = 22h ??? some sort of time calculation
  37179.         AL = 00h ???
  37180.             nonzero ???
  37181.     AH = 23h ??? some sort of time calculation
  37182.     AH = 24h compare filenames
  37183.         DS:SI -> first ASCIZ filename
  37184.         ES:DI -> second ASCIZ filename
  37185.         Return: ZF set if files are same ignoring case and / vs \
  37186.     AH = 25h normalize filename
  37187.         DS:SI -> ASCIZ filename
  37188.         ES:DI -> buffer for result
  37189.         Return: filename uppercased, forward slashes changed to backslashes
  37190.     AH = 26h get DOS stack
  37191.         Return: DS:SI -> top of stack
  37192.             CX = size of stack in bytes
  37193.     AH = 27h increment InDOS flag
  37194.     AH = 28h decrement InDOS flag
  37195. Note:    IFS drivers which do not wish to implement functions 20h or 24h-28h may
  37196.       pass them on to the default handler pointed at by [LoL+37h]
  37197. SeeAlso: #0796,#0798
  37198.  
  37199. Format of IFS request block:
  37200. Offset    Size    Description    (Table 0798)
  37201.  00h    WORD    total size in bytes of request
  37202.  02h    BYTE    class of request
  37203.         02h ???
  37204.         03h redirection
  37205.         04h ???
  37206.         05h file access
  37207.         06h convert error code to string
  37208.         07h ???
  37209.  03h    WORD    returned DOS error code
  37210.  05h    BYTE    IFS driver exit status
  37211.         00h success
  37212.         01h ???
  37213.         02h ???
  37214.         03h ???
  37215.         04h ???
  37216.         FFh internal failure
  37217.  06h 16 BYTEs    ???
  37218. ---request class 02h---
  37219.  16h    BYTE    function code
  37220.         04h ???
  37221.  17h    BYTE    unused???
  37222.  18h    DWORD    pointer to ???
  37223.  1Ch    DWORD    pointer to ???
  37224.  20h  2 BYTEs    ???
  37225. ---request class 03h---
  37226.  16h    BYTE    function code
  37227.  17h    BYTE    ???
  37228.  18h    DWORD    pointer to ???
  37229.  1Ch    DWORD    pointer to ???
  37230.  22h    WORD    returned ???
  37231.  24h    WORD    returned ???
  37232.  26h    WORD    returned ???
  37233.  28h    BYTE    returned ???
  37234.  29h    BYTE    unused???
  37235. ---request class 04h---
  37236.  16h    DWORD    pointer to ???
  37237.  1Ah    DWORD    pointer to ???
  37238. ---request class 05h---
  37239.  16h    BYTE    function code
  37240.         01h flush disk buffers
  37241.         02h get disk space
  37242.         03h MKDIR
  37243.         04h RMDIR
  37244.         05h CHDIR
  37245.         06h delete file
  37246.         07h rename file
  37247.         08h search directory
  37248.         09h file open/create
  37249.         0Ah LSEEK
  37250.         0Bh read from file
  37251.         0Ch write to file
  37252.         0Dh lock region of file
  37253.         0Eh commit/close file
  37254.         0Fh get/set file attributes
  37255.         10h printer control
  37256.         11h ???
  37257.         12h process termination
  37258.         13h ???
  37259.     ---class 05h function 01h---
  37260.      17h  7 BYTEs    ???
  37261.      1Eh    DWORD    pointer to ???
  37262.      22h  4 BYTEs    ???
  37263.      26h    BYTE    ???
  37264.      27h    BYTE    ???
  37265.     ---class 05h function 02h---
  37266.      17h  7 BYTEs    ???
  37267.      1Eh    DWORD    pointer to ???
  37268.      22h  4 BYTEs    ???
  37269.      26h    WORD    returned total clusters
  37270.      28h    WORD    returned sectors per cluster
  37271.      2Ah    WORD    returned bytes per sector
  37272.      2Ch    WORD    returned available clusters
  37273.      2Eh    BYTE    returned ???
  37274.      2Fh    BYTE    ???
  37275.     ---class 05h functions 03h,04h,05h---
  37276.      17h  7 BYTEs    ???
  37277.      1Eh    DWORD    pointer to ???
  37278.      22h  4 BYTEs    ???
  37279.      26h    DWORD    pointer to directory name
  37280.     ---class 05h function 06h---
  37281.      17h  7 BYTEs    ???
  37282.      1Eh    DWORD    pointer to ???
  37283.      22h  4 BYTEs    ???
  37284.      26h    WORD    attribute mask
  37285.      28h    DWORD    pointer to filename
  37286.     ---class 05h function 07h---
  37287.      17h  7 BYTEs    ???
  37288.      1Eh    DWORD    pointer to ???
  37289.      22h  4 BYTEs    ???
  37290.      26h    WORD    attribute mask
  37291.      28h    DWORD    pointer to source filespec
  37292.      2Ch    DWORD    pointer to destination filespec
  37293.     ---class 05h function 08h---
  37294.      17h  7 BYTEs    ???
  37295.      1Eh    DWORD    pointer to ???
  37296.      22h  4 BYTEs    ???
  37297.      26h    BYTE    00h FINDFIRST
  37298.             01h FINDNEXT
  37299.      28h    DWORD    pointer to FindFirst search data + 01h if FINDNEXT
  37300.      2Ch    WORD    search attribute if FINDFIRST
  37301.      2Eh    DWORD    pointer to filespec if FINDFIRST
  37302.     ---class 05h function 09h---
  37303.      17h  7 BYTEs    ???
  37304.      1Eh    DWORD    pointer to ???
  37305.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37306.      26h    WORD    ???  \ together, specify open vs. create, whether or
  37307.      28h    WORD    ???  / not to truncate
  37308.      2Ah  4 BYTEs    ???
  37309.      2Eh    DWORD    pointer to filename
  37310.      32h  4 BYTEs    ???
  37311.      36h    WORD    file attributes on call
  37312.             returned ???
  37313.      38h    WORD    returned ???
  37314.     ---class 05h function 0Ah---
  37315.      17h  7 BYTEs    ???
  37316.      1Eh    DWORD    pointer to ???
  37317.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37318.      26h    BYTE    seek type (02h = from end)
  37319.      28h    DWORD    offset on call
  37320.             returned new absolute position
  37321.     ---class 05h functions 0Bh,0Ch---
  37322.      17h  7 BYTEs    ???
  37323.      1Eh    DWORD    pointer to ???
  37324.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37325.      28h    WORD    number of bytes to transfer
  37326.             returned bytes actually transferred
  37327.      2Ah    DWORD    transfer address
  37328.     ---class 05h function 0Dh---
  37329.      17h  7 BYTEs    ???
  37330.      1Eh    DWORD    pointer to ???
  37331.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37332.      26h    BYTE    file handle???
  37333.      27h    BYTE    unused???
  37334.      28h    WORD    ???
  37335.      2Ah    WORD    ???
  37336.      2Ch    WORD    ???
  37337.      2Eh    WORD    ???
  37338.     ---class 05h function 0Eh---
  37339.      17h  7 BYTEs    ???
  37340.      1Eh    DWORD    pointer to ???
  37341.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37342.      26h    BYTE    00h commit file
  37343.             01h close file
  37344.      27h    BYTE    unused???
  37345.     ---class 05h function 0Fh---
  37346.      17h  7 BYTEs    ???
  37347.      1Eh    DWORD    pointer to ???
  37348.      22h  4 BYTEs    ???
  37349.      26h    BYTE    02h GET attributes
  37350.             03h PUT attributes
  37351.      27h    BYTE    unused???
  37352.      28h 12 BYTEs    ???
  37353.      34h    WORD    search attributes???
  37354.      36h    DWORD    pointer to filename
  37355.      3Ah    WORD    (GET) returned ???
  37356.      3Ch    WORD    (GET) returned ???
  37357.      3Eh    WORD    (GET) returned ???
  37358.      40h    WORD    (GET) returned ???
  37359.      42h    WORD    (PUT) new attributes
  37360.             (GET) returned attributes
  37361.     ---class 05h function 10h---
  37362.      17h  7 BYTEs    ???
  37363.      1Eh    DWORD    pointer to ???
  37364.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37365.      26h    WORD    ???
  37366.      28h    DWORD    pointer to ???
  37367.      2Ch    WORD    ???
  37368.      2Eh    BYTE    ???
  37369.      2Fh    BYTE    subfunction
  37370.             01h get printer setup
  37371.             03h ???
  37372.             04h ???
  37373.             05h ???
  37374.             06h ???
  37375.             07h ???
  37376.             21h set printer setup
  37377.     ---class 05h function 11h---
  37378.      17h  7 BYTEs    ???
  37379.      1Eh    DWORD    pointer to ???
  37380.      22h    DWORD    pointer to IFS open file structure (see #0799)
  37381.      26h    BYTE    subfunction
  37382.      27h    BYTE    unused???
  37383.      28h    WORD    ???
  37384.      2Ah    WORD    ???
  37385.      2Ch    WORD    ???
  37386.      2Eh    BYTE    ???
  37387.      2Fh    BYTE    ???
  37388.     ---class 05h function 12h---
  37389.      17h 15 BYTEs    unused???
  37390.      26h    WORD    PSP segment
  37391.      28h    BYTE    type of process termination
  37392.      29h    BYTE    unused???
  37393.     ---class 05h function 13h---
  37394.      17h 15 BYTEs    unused???
  37395.      26h    WORD    PSP segment
  37396. ---request class 06h---
  37397.  16h    DWORD    returned pointer to string corresponding to error code at 03h
  37398.  1Ah    BYTE    returned ???
  37399.  1Bh    BYTE    unused
  37400. ---request class 07h---
  37401.  16h    DWORD    pointer to IFS open file structure (see #0799)
  37402.  1Ah    BYTE    ???
  37403.  1Bh    BYTE    unused???
  37404. SeeAlso: #0796,#0797,#0799
  37405.  
  37406. Format of IFS open file structure:
  37407. Offset    Size    Description    (Table 0799)
  37408.  00h    WORD    ???
  37409.  02h    WORD    device info word
  37410.  04h    WORD    file open mode
  37411.  06h    WORD    ???
  37412.  08h    WORD    file attributes
  37413.  0Ah    WORD    owner's network machine number
  37414.  0Ch    WORD    owner's PSP segment
  37415.  0Eh    DWORD    file size
  37416.  12h    DWORD    current offset in file
  37417.  16h    WORD    file time
  37418.  18h    WORD    file date
  37419.  1Ah 11 BYTEs    filename in FCB format
  37420.  25h    WORD    ???
  37421.  27h    WORD    hash value of SFT address
  37422.         (low word of linear address + segment&F000h)
  37423.  29h  3 WORDs    network info from SFT
  37424.  2Fh    WORD    ???
  37425.  
  37426. Format of one item in DOS 4+ list of special program names:
  37427. Offset    Size    Description    (Table 0800)
  37428.  00h    BYTE    length of name (00h = end of list)
  37429.  01h  N BYTEs    name in format name.ext
  37430.  N    2 BYTEs    DOS version to return for program (major,minor)
  37431.         (see AH=30h,INT 2F/AX=122Fh)
  37432. ---DOS 4 only---
  37433.  N+2    BYTE    number of times to return fake version number (FFh = always)
  37434. Note:    if the name of the executable for the program making the DOS "get
  37435.       version" call matches one of the names in this list, DOS returns the
  37436.       specified version rather than the true version number
  37437. --------v-215252-----------------------------
  37438. INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
  37439.     AX = 5252h
  37440. Return: BX = FFEEh if resident
  37441. SeeAlso: AX=4BFFh"Cascade",AX=58CCh
  37442. --------D-2153-------------------------------
  37443. INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
  37444.     AH = 53h
  37445.     DS:SI -> BIOS Parameter Block (see #0801)
  37446.     ES:BP -> buffer for Drive Parameter Block (see #0551 at AH=32h)
  37447. Return: ES:BP buffer filled
  37448. Note:    for DOS 3+, the cluster at which to start searching is set to 0000h
  37449.       and the number of free clusters is set to FFFFh (unknown)
  37450.  
  37451. Format of BIOS Parameter Block:
  37452. Offset    Size    Description    (Table 0801)
  37453.  00h    WORD    number of bytes per sector
  37454.  02h    BYTE    number of sectors per cluster
  37455.  03h    WORD    number of reserved sectors at start of disk
  37456.  05h    BYTE    number of FATs
  37457.  06h    WORD    number of entries in root directory
  37458.  08h    WORD    total number of sectors
  37459.         for DOS 4+, set to zero if partition >32M, then set DWORD at
  37460.           15h to actual number of sectors
  37461.  0Ah    BYTE    media ID byte
  37462.  0Bh    WORD    number of sectors per FAT
  37463. ---DOS 3+---
  37464.  0Dh    WORD    number of sectors per track
  37465.  0Fh    WORD    number of heads
  37466.  11h    DWORD    number of hidden sectors
  37467.  15h 11 BYTEs    reserved
  37468. ---DOS 4+ ---
  37469.  15h    DWORD    total number of sectors if word at 08h contains zero
  37470.  19h  6 BYTEs    ???
  37471.  1Fh    WORD    number of cylinders
  37472.  21h    BYTE    device type
  37473.  22h    WORD    device attributes (removable or not, etc)
  37474. ---DR-DOS 5+ ---
  37475.  15h    DWORD    total number of sectors if word at 08h contains zero
  37476.  19h  6 BYTEs    reserved
  37477. ---European MS-DOS 4.00---
  37478.  15h    DWORD    total number of sectors if word at 08h contains zero
  37479.         (however, this DOS does not actually implement >32M partitions)
  37480. SeeAlso: #0551
  37481. --------D-2154-------------------------------
  37482. INT 21 - DOS 2+ - GET VERIFY FLAG
  37483.     AH = 54h
  37484. Return: AL = verify flag
  37485.         00h off
  37486.         01h on (all disk writes verified after writing)
  37487. SeeAlso: AH=2Eh
  37488. --------D-2155-------------------------------
  37489. INT 21 - DOS 2+ internal - CREATE CHILD PSP
  37490.     AH = 55h
  37491.     DX = segment at which to create new PSP
  37492.     SI = (DOS 3+) value to place in memory size field at DX:[0002h]
  37493. Return: CF clear if successful
  37494. Notes:    creates a "child" PSP rather than making an exact copy of the current
  37495.       PSP; the new PSP's parent pointer is set to the current PSP and the
  37496.       reference count for each inherited file is incremented
  37497.     (DOS 2+) sets current PSP to DX
  37498.     (DOS 3+) marks "no inherit" file handles as closed in child PSP
  37499. SeeAlso: AH=26h,AH=50h
  37500. --------D-2156-------------------------------
  37501. INT 21 - DOS 2+ - "RENAME" - RENAME FILE
  37502.     AH = 56h
  37503.     DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
  37504.     ES:DI -> ASCIZ new filename (no wildcards)
  37505.     CL = attribute mask (server call only, see below)
  37506. Return: CF clear if successful
  37507.     CF set on error
  37508.         AX = error code (02h,03h,05h,11h) (see #0811)
  37509. Notes:    allows move between directories on same logical volume
  37510.     this function does not set the archive attribute
  37511.       (see #0574 at AX=4301h), which results in incremental backups not
  37512.       backing up the file under its new name
  37513.     open files should not be renamed
  37514.     (DOS 3+) allows renaming of directories
  37515.     (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
  37516.       error 12h (no more files) is returned on success, and both source and
  37517.       destination specs must be canonical (as returned by AH=60h).
  37518.       Wildcards in the destination are replaced by the corresponding char
  37519.       of each source file being renamed.  Under DOS 3.x, the call will fail
  37520.       if the destination wildcard is *.* or equivalent; under DR-DOS 5.0,
  37521.       the call will fail if any wildcards are used.     When invoked via
  37522.       AX=5D00h, only those files matching the attribute mask in CL are
  37523.       renamed.
  37524.     under the FlashTek X-32 DOS extender, the old-name pointer is in DS:EDX
  37525.       and the new-name pointer is in ES:EDI (DS must equal ES)
  37526. BUG:    under DR-DOS 3.41, this function will generate a new directory entry
  37527.       with the new name (including any wildcards) which can only be removed
  37528.       with a sector editor when invoked via AX=5D00h
  37529. SeeAlso: AH=17h,AX=4301h,AX=5D00h,AH=60h,AH=71h
  37530. --------D-215700-----------------------------
  37531. INT 21 - DOS 2+ - GET FILE'S DATE AND TIME
  37532.     AX = 5700h
  37533.     BX = file handle
  37534. Return: CF clear if successful
  37535.         CX = file's time (see #0802)
  37536.         DX = file's date (see #0803)
  37537.     CF set on error
  37538.         AX = error code (01h,06h) (see #0811)
  37539. Note:    under DR-DOS 3.41 and 5.0, this function returns 0 (no date/time) for
  37540.       character devices; MS-DOS returns date and time of opening
  37541. SeeAlso: AX=5701h
  37542.  
  37543. Bitfields for file time:
  37544. Bit(s)    Description    (Table 0802)
  37545.  15-11    hours (0-23)
  37546.  10-5    minutes
  37547.  4-0    seconds/2
  37548.  
  37549. Bitfields for file date:
  37550. Bit(s)    Description    (Table 0803)
  37551.  15-9    year - 1980
  37552.  8-5    month
  37553.  4-0    day
  37554. --------D-215701-----------------------------
  37555. INT 21 - DOS 2+ - SET FILE'S DATE AND TIME
  37556.     AX = 5701h
  37557.     BX = file handle
  37558.     CX = new time (see #0802)
  37559.     DX = new date (see #0803)
  37560. Return: CF clear if successful
  37561.     CF set on error
  37562.         AX = error code (01h,06h) (see #0811)
  37563. SeeAlso: AX=5700h
  37564. --------D-215702-----------------------------
  37565. INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
  37566.     AX = 5702h
  37567.     BX = file handle
  37568.     CX = size of result buffer or 0000h
  37569.     DS:SI -> EAP list (see #0804)
  37570.     ES:DI -> buffer for returned EAV list (see #0807)
  37571. Return: CF clear if successful
  37572.         CX = size of returned data
  37573.     CF set on error
  37574.         AX = error code (see #0811)
  37575. Desc:    get the current value of one or more extended attributes
  37576. Notes:    if CX=0000h on entry, ES:DI is ignored and no data is actually
  37577.       returned, only the amount of data which is available
  37578.     the default DOS 4 behavior is to return a single word of 0000h (no
  37579.       structures) in the result buffer if CX>=0002h on entry
  37580. SeeAlso: AX=5703h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
  37581.  
  37582. Format of EAP (extended attribute properties) list:
  37583. Offset    Size    Description    (Table 0804)
  37584.  00h    WORD    number of EAP structures following
  37585.  02h    var    array of EAP structures (see #0805)
  37586. SeeAlso: #0807
  37587.  
  37588. Format of EAP (extended attribute property) structure:
  37589. Offset    Size    Description    (Table 0805)
  37590.  00h    BYTE    attribute type
  37591.         01h boolean (either 00h or 01h)
  37592.         02h number (BYTE, WORD, or DWORD)
  37593.         03h string
  37594.         04h date stamp
  37595.         05h time stamp
  37596.  01h    WORD    EAP flags (see #0806)
  37597.  03h    BYTE    size of reference string (name)
  37598.  04h  N BYTEs    reference string
  37599.  
  37600. Bitfields for EAP flags:
  37601. Bit(s)    Description    (Table 0806)
  37602.  12    unchangeable
  37603.  13    ignore
  37604.  14    unchangeable
  37605.  15    used by COMMAND.COM for code page, but not understood by ATTRIB
  37606.  
  37607. Format of EAV (extended attribute value) list:
  37608. Offset    Size    Description    (Table 0807)
  37609.  00h    WORD    number of EAV structures following
  37610.  02h    var    array of Extended Attribute Value structures (see #0808)
  37611. SeeAlso: #0804
  37612.  
  37613. Format of Extended Attribute Value structures:
  37614. Offset    Size    Description    (Table 0808)
  37615.  00h  4 BYTEs    ???
  37616.  04h    BYTE    size of reference string
  37617.  05h    WORD    size of value
  37618.  07h    var    reference string
  37619.     var    value
  37620. --------O-215702-----------------------------
  37621. INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
  37622.     AX = 5702h
  37623.     BX = file handle
  37624.     CX = size of buffer for information
  37625.     DX = level of information
  37626.     ES:DI -> buffer for information
  37627. Return: CF clear if successful
  37628.     CF set on error
  37629.         AX = error code
  37630. SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2"
  37631. --------O-215702BXFFFF-----------------------
  37632. INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
  37633.     AX = 5702h
  37634.     BX = FFFFh
  37635.     CX = size of buffer for information
  37636.     DX = level of information (0002h)
  37637.     DS:SI -> filename
  37638.     ES:DI -> buffer for FAPI path information (see #0809)
  37639. Return: CF clear if successful
  37640.         AL = 00h
  37641.     CF set on error
  37642.         AX = error code
  37643. SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
  37644.  
  37645. Format of FAPI path information:
  37646. Offset    Size    Description    (Table 0809)
  37647.  00h 22 BYTEs    ???
  37648.  16h    DWORD    extended attribute size (none present if less than 5)
  37649. --------D-215703-----------------------------
  37650. INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
  37651.     AX = 5703h
  37652.     BX = file handle
  37653.     CX = size of result buffer or 0000h
  37654.     ES:DI -> result buffer
  37655. Return: CF clear if successful
  37656.         CX = size of returned data
  37657.     CF set on error
  37658.         AX = error code (see #0811)
  37659.     ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
  37660. Desc:    get a list of the extended attributes which are defined for the
  37661.       specified file
  37662. Notes:    if CX=0000h on entry, ES:DI is ignored and no data is actually
  37663.       returned, only the amount of data which is available
  37664.     the default DOS 4 behavior is to return a trivial EAP list consisting
  37665.       of the single word 0000h (no EAP structures) if CX>=0002h on entry
  37666. SeeAlso: AX=5702h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
  37667. --------O-215703-----------------------------
  37668. INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
  37669.     AX = 5703h
  37670.     BX = file handle
  37671.     CX = size of information buffer
  37672.     DX = level of information
  37673.     ES:DI -> information buffer
  37674. Return: CF clear if successful
  37675.     CF set on error
  37676.         AX = error code
  37677. SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
  37678. --------O-215703BXFFFF-----------------------
  37679. INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
  37680.     AX = 5703h
  37681.     BX = FFFFh
  37682.     CX = size of information buffer
  37683.     DX = level of information
  37684.     DS:SI -> filename
  37685.     ES:DI -> information buffer
  37686. Return: CF clear if successful
  37687.     CF set on error
  37688.         AX = error code
  37689. SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2"
  37690. --------D-215704-----------------------------
  37691. INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
  37692.     AX = 5704h
  37693.     BX = file handle
  37694.     ES:DI -> EAV list (see #0807)
  37695. Return: CF clear if successful
  37696.     CF set on error
  37697.         AX = error code (see #0811)
  37698. Note:    the default DOS 4 behavior is to do nothing and return successfully
  37699. SeeAlso: AX=5702h,AX=5703h,INT 2F/AX=112Dh
  37700. ----------215757BX5757-----------------------
  37701. INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
  37702.     AX = 5757h
  37703.     BX = 5757h
  37704. Return: AX = 0000h if installed
  37705.         BX = ???
  37706.         DX = ???
  37707.         DS:SI -> list of 27 DWORD entry point addresses
  37708. Program: IBM Genie is a set of utility TSRs by Helix Software
  37709. Note:    other functions possible if BX <> 5757h, but details not yet available
  37710. ----------215758-----------------------------
  37711. INT 21 U - Headroom - API
  37712.     AX = 5758h
  37713.     BL = function
  37714.         00h ???
  37715.         01h get Headroom location
  37716.         Return: CF clear if installed
  37717.                 AX = PSP segment of Headroom TSR
  37718.                 BX = paragraphs of memory used by Headroom
  37719.             CF set if not (normal DOS return)
  37720.         Note:    this function is also used as an installation check
  37721.         02h get INT 21 handler
  37722.         Return: CF clear
  37723.             ES:BX -> Headroom's INT 21 handler
  37724.         Note: also sets unknown flag
  37725.         03h launch application???
  37726.         DS:SI -> 233-byte application record
  37727.         Return: ???
  37728.         04h ???
  37729.         ???
  37730.         Return: CF clear
  37731.         05h get swap directory
  37732.         Return: CF clear
  37733.             DX:AX -> ASCIZ swap directory name
  37734.         06h ???
  37735.         DX = ???
  37736.         Return: CF clear
  37737.         07h ???
  37738.         08h ???
  37739.         09h get current application
  37740.         Return: BX = application number
  37741.         0Ah ???
  37742.         DX = application number
  37743.         DS:SI = ???
  37744.         Return: ???
  37745.         0Bh ???
  37746.         0Ch ???
  37747.         DX = application number
  37748.         ???
  37749.         Return: ???
  37750.         0Dh ???
  37751.         DX = application number
  37752.         ???
  37753.         Return: ???
  37754.         0Eh get ???
  37755.         Return: CF clear
  37756.             AX = ???
  37757.         0Fh set ??? flag
  37758.         10h clear ??? flag
  37759.         11h find application by name
  37760.         DS:SI -> ASCIZ application name
  37761.         Return: CF clear
  37762.             AX = application number or FFFFh if not loaded
  37763.         12h ???
  37764.         DX = application number
  37765.         Return: CF clear
  37766.             ???
  37767.         13h ???
  37768.         Return: CF clear
  37769.         14h ???
  37770.         same as function 13h
  37771.         15h set ???
  37772.         DX = ???
  37773.         16h get ???
  37774.         Return: AX = ??? set by function 15h
  37775.         17h get ???
  37776.         Return: BX = ???
  37777.             CX = ??? (may be pointer in BX:CX)
  37778.         18h BUG: branches incorrectly due to fencepost error
  37779. Program: Headroom is a TSR/task switcher by Helix Software
  37780. SeeAlso: AX=4C57h,AX=5757h,INT 2F/AX=5758h
  37781. --------D-2158-------------------------------
  37782. INT 21 - DOS 3+ - GET OR SET MEMORY ALLOCATION STRATEGY
  37783.     AH = 58h
  37784.     AL = subfunction
  37785.         00h get allocation strategy
  37786.         Return: AX = current strategy (see #0810)
  37787.         01h set allocation strategy
  37788.         BL = new allocation strategy (see #0810)
  37789.         BH = 00h (DOS 5+)
  37790. Return: CF clear if successful
  37791.     CF set on error
  37792.         AX = error code (01h) (see #0811)
  37793. Notes:    the Set subfunction accepts any value in BL for DOS 3.x and 4.x;
  37794.       2 or greater means last fit
  37795.     the Get subfunction returns the last value set
  37796.     setting an allocation strategy involving high memory does not
  37797.       automatically link in the UMB memory chain; this must be done
  37798.       explicitly with AX=5803h in order to actually allocate high memory
  37799.     a program which changes the allocation strategy should restore it
  37800.       before terminating
  37801.     Toshiba MS-DOS 2.11 supports subfunctions 00h and 01h
  37802.     DR-DOS 3.41 reportedly reverses subfunctions 00h and 01h
  37803. SeeAlso: AH=48h,AH=49h,AH=4Ah,INT 2F/AX=4310h,INT 67/AH=3Fh
  37804.  
  37805. (Table 0810)
  37806. Values for DOS memory allocation strategy:
  37807.  00h low memory first fit
  37808.  01h low memory best fit
  37809.  02h low memory last fit
  37810. ---DOS 5+ ---
  37811.  40h high memory first fit
  37812.  41h high memory best fit
  37813.  42h high memory last fit
  37814.  80h first fit, try high then low memory
  37815.  81h best fit, try high then low memory
  37816.  82h last fit, try high then low memory
  37817. --------D-2158-------------------------------
  37818. INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
  37819.     AH = 58h
  37820.     AL = subfunction
  37821.         02h get UMB link state
  37822.         Return: AL = current link state
  37823.                 00h UMBs not part of DOS memory chain
  37824.                 01h UMBs in DOS memory chain
  37825.         03h set UMB link state
  37826.         BX = new link state
  37827.             0000h remove UMBs from DOS memory chain
  37828.             0001h add UMBs to DOS memory chain
  37829. Return: CF clear if successful
  37830.     CF set on error
  37831.         AX = error code (01h) (see #0811)
  37832. Note:    a program which changes the UMB link state should restore it before
  37833.       terminating
  37834. --------v-2158CC-----------------------------
  37835. INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
  37836.     AX = 58CCh
  37837. Return: CF clear if resident
  37838. SeeAlso: AX=5252h,AX=58DDh,AX=6969h
  37839. --------v-2158DD-----------------------------
  37840. INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
  37841.     AX = 58DDh
  37842. Return: CX = code segment of virus
  37843.     ES:BX = old INT 21h vector
  37844. SeeAlso: AX=5252h,AX=58CCh,AX=6969h
  37845. --------D-2159--BX0000-----------------------
  37846. INT 21 - DOS 3+ - GET EXTENDED ERROR INFORMATION
  37847.     AH = 59h
  37848.     BX = 0000h
  37849. Return: AX = extended error code (see #0811)
  37850.     BH = error class (see #0813)
  37851.     BL = recommended action (see #0814)
  37852.     CH = error locus (see #0815)
  37853.     ES:DI may be pointer (see #0812, error code list below)
  37854.     CL, DX, SI, BP, and DS destroyed
  37855. Notes:    functions available under DOS 2.x map the true DOS 3+ error code into
  37856.       one supported under DOS 2.x
  37857.     you should call this function to retrieve the true error code when an
  37858.       FCB or DOS 2.x call returns an error
  37859.     under DR-DOS 5.0, this function does not use any of the DOS-internal
  37860.       stacks and may thus be called at any time
  37861. SeeAlso: AH=59h/BX=0001h,AX=5D0Ah,INT 2F/AX=122Dh
  37862.  
  37863. (Table 0811)
  37864. Values for DOS extended error code:
  37865.  00h (0)   no error
  37866.  01h (1)   function number invalid
  37867.  02h (2)   file not found
  37868.  03h (3)   path not found
  37869.  04h (4)   too many open files (no handles available)
  37870.  05h (5)   access denied
  37871.  06h (6)   invalid handle
  37872.  07h (7)   memory control block destroyed
  37873.  08h (8)   insufficient memory
  37874.  09h (9)   memory block address invalid
  37875.  0Ah (10)  environment invalid (usually >32K in length)
  37876.  0Bh (11)  format invalid
  37877.  0Ch (12)  access code invalid
  37878.  0Dh (13)  data invalid
  37879.  0Eh (14)  reserved
  37880.  0Fh (15)  invalid drive
  37881.  10h (16)  attempted to remove current directory
  37882.  11h (17)  not same device
  37883.  12h (18)  no more files
  37884. ---DOS 3+---
  37885.  13h (19)  disk write-protected
  37886.  14h (20)  unknown unit
  37887.  15h (21)  drive not ready
  37888.  16h (22)  unknown command
  37889.  17h (23)  data error (CRC)
  37890.  18h (24)  bad request structure length
  37891.  19h (25)  seek error
  37892.  1Ah (26)  unknown media type (non-DOS disk)
  37893.  1Bh (27)  sector not found
  37894.  1Ch (28)  printer out of paper
  37895.  1Dh (29)  write fault
  37896.  1Eh (30)  read fault
  37897.  1Fh (31)  general failure
  37898.  20h (32)  sharing violation
  37899.  21h (33)  lock violation
  37900.  22h (34)  disk change invalid (ES:DI -> media ID structure)(see #0812)
  37901.  23h (35)  FCB unavailable
  37902.  24h (36)  sharing buffer overflow
  37903.  25h (37)  (DOS 4+) code page mismatch
  37904.  26h (38)  (DOS 4+) cannot complete file operation (out of input)
  37905.  27h (39)  (DOS 4+) insufficient disk space
  37906.  28h-31h   reserved
  37907.  32h (50)  network request not supported
  37908.  33h (51)  remote computer not listening
  37909.  34h (52)  duplicate name on network
  37910.  35h (53)  network name not found
  37911.  36h (54)  network busy
  37912.  37h (55)  network device no longer exists
  37913.  38h (56)  network BIOS command limit exceeded
  37914.  39h (57)  network adapter hardware error
  37915.  3Ah (58)  incorrect response from network
  37916.  3Bh (59)  unexpected network error
  37917.  3Ch (60)  incompatible remote adapter
  37918.  3Dh (61)  print queue full
  37919.  3Eh (62)  queue not full
  37920.  3Fh (63)  not enough space to print file
  37921.  40h (64)  network name was deleted
  37922.  41h (65)  network: Access denied
  37923.  42h (66)  network device type incorrect
  37924.  43h (67)  network name not found
  37925.  44h (68)  network name limit exceeded
  37926.  45h (69)  network BIOS session limit exceeded
  37927.  46h (70)  temporarily paused
  37928.  47h (71)  network request not accepted
  37929.  48h (72)  network print/disk redirection paused
  37930.  49h (73)  network software not installed
  37931.         (LANtastic) invalid network version
  37932.  4Ah (74)  unexpected adapter close
  37933.         (LANtastic) account expired
  37934.  4Bh (75)  (LANtastic) password expired
  37935.  4Ch (76)  (LANtastic) login attempt invalid at this time
  37936.  4Dh (77)  (LANtastic v3+) disk limit exceeded on network node
  37937.  4Eh (78)  (LANtastic v3+) not logged in to network node
  37938.  4Fh (79)  reserved
  37939.  50h (80)  file exists
  37940.  51h (81)  reserved
  37941.  52h (82)  cannot make directory
  37942.  53h (83)  fail on INT 24h
  37943.  54h (84)  (DOS 3.3+) too many redirections
  37944.  55h (85)  (DOS 3.3+) duplicate redirection
  37945.  56h (86)  (DOS 3.3+) invalid password
  37946.  57h (87)  (DOS 3.3+) invalid parameter
  37947.  58h (88)  (DOS 3.3+) network write fault
  37948.  59h (89)  (DOS 4+) function not supported on network
  37949.  5Ah (90)  (DOS 4+) required system component not installed
  37950.  64h (100) (MSCDEX) unknown error
  37951.  65h (101) (MSCDEX) not ready
  37952.  66h (102) (MSCDEX) EMS memory no longer valid
  37953.  67h (103) (MSCDEX) not High Sierra or ISO-9660 format
  37954.  68h (104) (MSCDEX) door open
  37955.  
  37956. Format of media ID structure:
  37957. Offset    Size    Description    (Table 0812)
  37958.  00h 12 BYTEs    ASCIZ volume label of required disk
  37959.  0Ch    DWORD    serial number (DOS 4+)
  37960.  
  37961. (Table 0813)
  37962. Values for DOS Error Class:
  37963.  01h    out of resource (storage space or I/O channels)
  37964.  02h    temporary situation (file or record lock)
  37965.  03h    authorization (denied access)
  37966.  04h    internal (system software bug)
  37967.  05h    hardware failure
  37968.  06h    system failure (configuration file missing or incorrect)
  37969.  07h    application program error
  37970.  08h    not found
  37971.  09h    bad format
  37972.  0Ah    locked
  37973.  0Bh    media error
  37974.  0Ch    already exists
  37975.  0Dh    unknown
  37976.  
  37977. (Table 0814)
  37978. Values for DOS Suggested Action:
  37979.  01h    retry
  37980.  02h    delayed retry
  37981.  03h    prompt user to reenter input
  37982.  04h    abort after cleanup
  37983.  05h    immediate abort
  37984.  06h    ignore
  37985.  07h    retry after user intervention
  37986.  
  37987. (Table 0815)
  37988. Values for DOS Error Locus:
  37989.  01h    unknown or not appropriate
  37990.  02h    block device (disk error)
  37991.  03h    network related
  37992.  04h    serial device (timeout)
  37993.  05h    memory related
  37994. --------D-2159--BX0001-----------------------
  37995. INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
  37996.     AH = 59h
  37997.     BX = 0001h
  37998. Return: ES:DI -> hard error information packet (see #0816) for most recent
  37999.         hard (critical) error
  38000. SeeAlso: AH=59h/BX=0000h,AH=95h,INT 24
  38001.  
  38002. Format of European MS-DOS 4.0 hard error information packet:
  38003. Offset    Size    Description    (Table 0816)
  38004.  00h    WORD    contents of AX at system entry
  38005.  02h    WORD    Process ID which encountered error
  38006.  04h    WORD    contents of AX at time of error
  38007.  06h    BYTE    error type
  38008.         00h physical I/O error
  38009.         01h disk change request
  38010.         02h file sharing violation
  38011.         03h FCB problem
  38012.         04h file locking violation
  38013.         05h bad FAT
  38014.         06h network detected error
  38015.  07h    BYTE    INT 24 error code
  38016.  08h    WORD    extended error code (see #0811)
  38017.  0Ah    DWORD    pointer to associated device
  38018. --------D-215A-------------------------------
  38019. INT 21 - DOS 3+ - CREATE TEMPORARY FILE
  38020.     AH = 5Ah
  38021.     CX = file attribute (see #0574 at AX=4301h)
  38022.     DS:DX -> ASCIZ path ending with a '\' + 13 zero bytes to receive the
  38023.         generated filename
  38024. Return: CF clear if successful
  38025.         AX = file handle opened for read/write in compatibility mode
  38026.         DS:DX pathname extended with generated name for temporary file
  38027.     CF set on error
  38028.         AX = error code (03h,04h,05h) (see #0811)
  38029. Desc:    creates a file with a unique name which must be explicitly deleted
  38030. BUGS:    COMPAQ DOS 3.31 hangs if the pathname is at XXXXh:0000h; it apparently
  38031.       wraps around to the end of the segment
  38032.     MS-DOS 5.00 revisions A and B and PC-DOS 5.00 revision A reportedly
  38033.       hang the system if the specified path is the root directory and the
  38034.       root directory is full (no free directory entries)
  38035. Note:    under the FlashTek X-32 DOS extender, the path pointer is in DS:EDX
  38036. SeeAlso: AH=3Ch,AH=5Bh
  38037. --------D-215B-------------------------------
  38038. INT 21 - DOS 3+ - CREATE NEW FILE
  38039.     AH = 5Bh
  38040.     CX = file attribute (see #0574 at AX=4301h)
  38041.     DS:DX -> ASCIZ filename
  38042. Return: CF clear if successful
  38043.         AX = file handle opened for read/write in compatibility mode
  38044.     CF set on error
  38045.         AX = error code (03h,04h,05h,50h) (see #0811)
  38046. Notes:    unlike AH=3Ch, this function will fail if the specified file exists
  38047.       rather than truncating it; this permits its use in creating semaphore
  38048.       files because it is an atomic "test and set" operation
  38049.     under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
  38050. SeeAlso: AH=3Ch,AH=5Ah
  38051. --------D-215C-------------------------------
  38052. INT 21 - DOS 3+ - "FLOCK" - RECORD LOCKING
  38053.     AH = 5Ch
  38054.     AL = subfunction
  38055.         00h lock region of file
  38056.         01h unlock region of file
  38057.     BX = file handle
  38058.     CX:DX = start offset of region within file
  38059.     SI:DI = length of region in bytes
  38060. Return: CF clear if successful
  38061.     CF set on error
  38062.         AX = error code (01h,06h,21h,24h) (see #0811)
  38063. Notes:    error returned unless SHARE or network installed
  38064.     an unlock call must specify the same region as some prior lock call
  38065.     locked regions become entirely inaccessible to other processes
  38066.     duplicate handles created with AH=45h or AH=46h inherit locks, but
  38067.       handles inherited by child processes (see AH=4Bh) do not
  38068.     under DR-DOS 3.41 and 5.0, if a process opens a file without the no-
  38069.       inherit flag and then starts a child, any locks set by the parent
  38070.       are ignored, and the child will only get an error if it tries to
  38071.       lock an area previously locked by the parent process
  38072. SeeAlso: AX=440Bh,AH=BCh,AH=BEh,INT 2F/AX=110Ah,INT 2F/AX=110Bh
  38073. --------D-215D00-----------------------------
  38074. INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
  38075.     AX = 5D00h
  38076.     DS:DX -> DOS parameter list (see #0817)
  38077.     DPL contains all register values for a call to INT 21h
  38078. Return: as appropriate for function being called
  38079. Notes:    does not check AH.  Out of range values will crash the system
  38080.     executes using specified computer ID and process ID
  38081.     sharing delay loops skipped
  38082.     a special sharing mode is enabled to handle FCBs opened across network
  38083.     wildcards are enabled for DELETE (AH=41h) and RENAME (AH=56h) under
  38084.       MS-DOS; under DR-DOS 3.41, wildcards corrupt the filesystem; and
  38085.       under DR-DOS 5.0-6.0, the call returns error code 03h due to improper
  38086.       support for the server function call (see below)
  38087.     an extra file attribute parameter is enabled for OPEN (AH=3Dh),
  38088.       DELETE (AH=41h), and RENAME (AH=56h)
  38089.     functions which take filenames require canonical names (as returned
  38090.       by AH=60h); this is apparently to prevent multi-hop file forwarding
  38091. BUGS:    the OS/2 2.0 DOS Boot Session incorrectly maps DOS drive letters,
  38092.       seemingly ignoring HPFS drives
  38093.     DR-DOS 5.0-6.0 merely recursively call INT 21 after loading the
  38094.       registers from the DPL, leading to problems for peer-to-peer
  38095.       networks
  38096. SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h
  38097.  
  38098. Format of DOS parameter list:
  38099. Offset    Size    Description    (Table 0817)
  38100.  00h    WORD    AX
  38101.  02h    WORD    BX
  38102.  04h    WORD    CX
  38103.  06h    WORD    DX
  38104.  08h    WORD    SI
  38105.  0Ah    WORD    DI
  38106.  0Ch    WORD    DS
  38107.  0Eh    WORD    ES
  38108.  10h    WORD    reserved (0)
  38109.  12h    WORD    computer ID (0 = current system)
  38110.  14h    WORD    process ID (PSP segment on specified computer)
  38111. Note:    under Windows Enhanced mode, the computer ID is normally the virtual
  38112.       machine ID (see INT 2F/AX=1683h), though this can reportedly be
  38113.       changed by setting UniqueDOSPSP= in SYSTEM.INI
  38114. --------D-215D01-----------------------------
  38115. INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
  38116.     AX = 5D01h
  38117.     DS:DX -> DOS parameter list (see #0817), only computer ID and
  38118.           process ID fields used
  38119. Return: CF set on error
  38120.         AX = error code (see #0811)
  38121.     CF clear if successful
  38122. Notes:    flushes buffers and updates directory entries for each file which has
  38123.       been written to; if remote file, calls INT 2F/AX=1107h
  38124.     the computer ID and process ID are stored but ignored under DOS 3.3
  38125.     not supported by DR-DOS 3.41 and 5.0; returns error code 01h
  38126. SeeAlso: AH=0Dh,AH=68h,INT 2F/AX=1107h
  38127. --------D-215D02-----------------------------
  38128. INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
  38129.     AX = 5D02h
  38130.     DS:DX -> DOS parameter list (see #0817), only fields DX, DS,
  38131.           computer ID, and process ID used
  38132.     DPL's DS:DX -> ASCIZ name of file to close
  38133. Return: CF set on error
  38134.         AX = error code (see #0811)
  38135.     CF clear if successful
  38136. Notes:    error unless SHARE is loaded (calls [SysFileTable-28h])
  38137.       (see #0773 at AH=52h)
  38138.     name must be canonical fully-qualified, such as returned by AH=60h
  38139.     not supported by DR-DOS 3.41 and 5.0; returns error code 01h
  38140. SeeAlso: AX=5D03h,AX=5D04h,AH=3Eh,AH=60h
  38141. --------D-215D03-----------------------------
  38142. INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
  38143.     AX = 5D03h
  38144.     DS:DX -> DOS parameter list (see #0817), only computer ID used
  38145. Return: CF set on error
  38146.         AX = error code (see #0811)
  38147.     CF clear if successful
  38148. Notes:    error unless SHARE is loaded (calls [SysFileTable-30h])
  38149.       (see #0773 at AH=52h)
  38150.     not supported by DR-DOS 3.41 and 5.0; returns error code 01h
  38151. SeeAlso: AX=5D02h,AX=5D04h
  38152. --------D-215D04-----------------------------
  38153. INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
  38154.     AX = 5D04h
  38155.     DS:DX -> DOS parameter list (see #0817), only computer ID and
  38156.           process ID fields used
  38157. Return: CF set on error
  38158.         AX = error code (see #0811)
  38159.     CF clear if successful
  38160. Notes:    error unless SHARE is loaded (calls [SysFileTable-2Ch])
  38161.        (see #0773 at AH=52h)
  38162.     not supported by DR-DOS 3.41 and 5.0; returns error code 01h
  38163. SeeAlso: AX=5D02h,AX=5D03h,INT 2F/AX=111Dh
  38164. --------D-215D05-----------------------------
  38165. INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
  38166.     AX = 5D05h
  38167.     DS:DX -> DOS parameter list (see #0817)
  38168.     DPL's BX = index of sharing record (see #0774 at AH=52h)
  38169.     DPL's CX = index of SFT in sharing record's SFT list
  38170. Return: CF clear if successful
  38171.         ES:DI -> ASCIZ filename
  38172.         BX = network machine number of SFT's owner
  38173.         CX = number of locks held by SFT's owner
  38174.     CF set if either index out of range
  38175.         AX = 0012h (no more files)
  38176. Notes:    error unless SHARE is loaded (calls [SysFileTable-18h])
  38177.       (see #0773 at AH=52h)
  38178.     names are always canonical fully-qualified, such as returned by AH=60h
  38179.     not supported by DR-DOS 3.41 and 5.0, but does not return an error
  38180. SeeAlso: AH=5Ch,AH=60h
  38181. --------D-215D06-----------------------------
  38182. INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
  38183.     AX = 5D06h
  38184. Return: CF set on error
  38185.        AX = error code (see #0811)
  38186.     CF clear if successful
  38187.         DS:SI -> nonreentrant data area (includes all three DOS stacks)
  38188.         (critical error flag is first byte) (see #0818)
  38189.         CX = size in bytes of area which must be swapped while in DOS
  38190.         DX = size in bytes of area which must always be swapped
  38191. Notes:    the Critical Error flag is used in conjunction with the InDOS flag
  38192.       (see AH=34h) to determine when it is safe to enter DOS from a TSR
  38193.     setting CritErr flag allows use of functions 50h/51h from INT 28h under
  38194.       DOS 2.x by forcing use of correct stack
  38195.     swapping the data area allows reentering DOS unless DOS is in a
  38196.       critical section delimited by INT 2A/AH=80h and INT 2A/AH=81h,82h
  38197.     under DOS 4.0, AX=5D0Bh should be used instead of this function
  38198.     SHARE and other DOS utilities consult the byte at offset 04h in the
  38199.       DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
  38200.       in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
  38201.     DR-DOS 3.41+ supports this function, but the SDA format beyond the
  38202.       first 18h bytes is completely different from MS-DOS
  38203. SeeAlso: AX=5D0Bh,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h
  38204.  
  38205. Format of DOS 3.10-3.30 Swappable Data Area:
  38206. Offset    Size    Description    (Table 0818)
  38207.  -34    BYTE    (DOS 3.10+) printer echo flag (00h off, FFh active)
  38208.  -31    BYTE    (DOS 3.30) current switch character
  38209.  -28    BYTE    (DOS 3.30) incremented on each INT 21/AX=5E01h call
  38210.  -27 16 BYTEs    (DOS 3.30) machine name set by INT 21/AX=5E01h
  38211.  -11  5 WORDs    zero-terminated list of offsets which need to be patched to
  38212.           enable critical-section calls (see INT 2A/AH=80h)
  38213.  -1    BYTE    unused padding
  38214. ---start of actual SDA---
  38215.  00h    BYTE    critical error flag ("ErrorMode")
  38216.  01h    BYTE    InDOS flag (count of active INT 21 calls)
  38217.  02h    BYTE    drive on which current critical error occurred, or FFh
  38218.         (DR-DOS sets to drive number during INT 24, 00h otherwise)
  38219.  03h    BYTE    locus of last error
  38220.  04h    WORD    extended error code of last error
  38221.  06h    BYTE    suggested action for last error
  38222.  07h    BYTE    class of last error
  38223.  08h    DWORD    ES:DI pointer for last error
  38224.  0Ch    DWORD    current DTA (Disk Transfer Address)
  38225.         note: may point into SDA during the DOS EXEC function
  38226.           (see AH=4Bh), so programs which swap the SDA must be
  38227.           prepared to move the DTA to a private buffer if they
  38228.           might be invoked during an EXEC
  38229.  10h    WORD    current PSP
  38230.  12h    WORD    stores SP across an INT 23
  38231.  14h    WORD    return code from last process termination (zerod after reading
  38232.           with AH=4Dh)
  38233.  16h    BYTE    current drive
  38234.  17h    BYTE    extended break flag
  38235. ---remainder need only be swapped if in DOS---
  38236.  18h    WORD    value of AX on call to INT 21
  38237.  1Ah    WORD    PSP segment for sharing/network
  38238.  1Ch    WORD    network machine number for sharing/network (0000h = us)
  38239.  1Eh    WORD    first usable memory block found when allocating memory
  38240.  20h    WORD    best usable memory block found when allocating memory
  38241.  22h    WORD    last usable memory block found when allocating memory
  38242.  24h    WORD    memory size in paragraphs (used only during initialization)
  38243.  26h    WORD    last entry checked during directory search
  38244.  28h    BYTE    flag: INT 24 returned Fail
  38245.  29h    BYTE    flags: allowable INT 24 actions (passed to INT 24 in AH)
  38246.  2Ah    BYTE    directory flag (00h directory, 01h file)
  38247.  2Bh    BYTE    flag: FFh if Ctrl-Break termination, 00h otherwise
  38248.  2Ch    BYTE    flag: allow embedded blanks in FCB
  38249.  2Dh    BYTE    padding (unused)
  38250.  2Eh    BYTE    day of month
  38251.  2Fh    BYTE    month
  38252.  30h    WORD    year - 1980
  38253.  32h    WORD    number of days since 1-1-1980
  38254.  34h    BYTE    day of week (0 = Sunday)
  38255.  35h    BYTE    flag: console swapped during read from device
  38256.  36h    BYTE    flag: safe to call INT 28 if nonzero
  38257.  37h    BYTE    flag: if nonzero, INT 24 Abort turned into INT 24 Fail
  38258.         (set only during process termination)
  38259.  38h 26 BYTEs    device driver request header (see INT 2F/AX=0802h)
  38260.  52h    DWORD    pointer to device driver entry point (used in calling driver)
  38261.  56h 22 BYTEs    device driver request header for I/O calls
  38262.  6Ch 14 BYTEs    device driver request header for disk status check
  38263.  7Ah    DWORD    pointer to device I/O buffer???
  38264.  7Eh    WORD    ???
  38265.  80h    WORD    ???
  38266.  82h    BYTE    type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
  38267.  83h    BYTE    padding (unused)
  38268.  84h  3 BYTEs    24-bit user number (see AH=30h)
  38269.  87h    BYTE    OEM number (see #0550 at AH=30h)
  38270.  88h    WORD    offset to error code conversion table for INT 25/INT 26
  38271.  8Ah  6 BYTEs    CLOCK$ transfer record (see #0786 at AH=52h)
  38272.  90h    BYTE    device I/O buffer for single-byte I/O functions
  38273.  91h    BYTE    padding??? (unused)
  38274.  92h 128 BYTEs    buffer for filename
  38275. 112h 128 BYTEs    buffer for filename
  38276. 192h 21 BYTEs    findfirst/findnext search data block (see #0764 at AH=4Eh)
  38277. 1A7h 32 BYTEs    directory entry for found file (see #0512 at AH=11h)
  38278. 1C7h 81 BYTEs    copy of current directory structure for drive being accessed
  38279. 218h 11 BYTEs    FCB-format filename for device name comparison
  38280. 223h    BYTE    terminating NUL for above filename
  38281. 224h 11 BYTEs    wildcard destination specification for rename (FCB format)
  38282. 22Fh    BYTE    terminating NUL for above spec
  38283. 230h    BYTE    ???
  38284. 231h    WORD    destination file/directory starting sector
  38285. 233h  5 BYTEs    ???
  38286. 238h    BYTE    extended FCB file attribute
  38287. 239h    BYTE    type of FCB (00h regular, FFh extended)
  38288. 23Ah    BYTE    directory search attributes
  38289. 23Bh    BYTE    file open/access mode
  38290. 23Ch    BYTE    file found/delete flag
  38291.         bit 0: file found
  38292.         bit 4: file deleted
  38293. 23Dh    BYTE    flag: device name found on rename, or file not found
  38294. 23Eh    BYTE    splice flag (file name and directory name together)
  38295. 23Fh    BYTE    flag indicating how DOS function was invoked
  38296.         (00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
  38297. 240h    BYTE    sector position within cluster
  38298. 241h    BYTE    flag: translate sector/cluster (00h no, 01h yes)
  38299. 242h    BYTE    flag: 00h if read, 01h if write
  38300. 243h    BYTE    current working drive number
  38301. 244h    BYTE    cluster factor
  38302. 245h    BYTE    flag: cluster split mode
  38303. 246h    BYTE    line edit (AH=0Ah) insert mode flag (nonzero = on)
  38304. 247h    BYTE    canonicalized filename referred to existing file/dir if FFh
  38305. 248h    BYTE    volume ID flag
  38306. 249h    BYTE    type of process termination (00h-03h) (see AH=4Dh)
  38307. 24Ah    BYTE    file create flag (00h = no, search only)
  38308. 24Bh    BYTE    value with which to replace first byte of deleted file's name
  38309.           (normally E5h, but 00h as described under INT 21/AH=13h)
  38310. 24Ch    DWORD    pointer to Drive Parameter Block for critical error invocation
  38311.         temp: used during process termination
  38312. 250h    DWORD    pointer to stack frame containing user registers on INT 21
  38313. 254h    WORD    stores SP across INT 24
  38314. 256h    DWORD    pointer to DOS Drive Parameter Block for ???
  38315. 25Ah    WORD    saving partial cluster number
  38316. 25Ch    WORD    temp: sector of work current cluster
  38317. 25Eh    WORD    high part of cluster number (only low byte referenced)
  38318. 260h    WORD    ??? temp
  38319. 262h    BYTE    Media ID byte returned by AH=1Bh,1Ch
  38320. 263h    BYTE    padding (unused)
  38321. 264h    DWORD    pointer to device header when filename is character device
  38322. 268h    DWORD    pointer to current SFT
  38323. 26Ch    DWORD    pointer to current directory structure for drive being accessed
  38324. 270h    DWORD    pointer to caller's FCB
  38325. 274h    WORD    number of SFT to which file being opened will refer
  38326. 276h    WORD    temporary storage for file handle
  38327. 278h    DWORD    pointer to a JFT entry in process handle table
  38328.           (see #0535 at AH=26h)
  38329. 27Ch    WORD    offset in DOS DS of first filename argument
  38330. 27Eh    WORD    offset in DOS DS of second filename argument
  38331. 280h    WORD    offset of last component in pathname or FFFFh
  38332. 282h    WORD    offset of transfer address to add
  38333. 284h    WORD    last relative cluster within file being accessed
  38334. 286h    WORD    temp: absolute cluster number being accessed
  38335. 288h    WORD    directory sector number
  38336. 28Ah    WORD    ??? current cluster number
  38337. 28Ch    WORD    current relative sector number within file
  38338. 28Eh    WORD    current sector number
  38339. 290h    WORD    current byte offset within sector
  38340. 292h    DWORD    current offset in file
  38341. 296h    DWORD    temp: file byte count
  38342. 29Ah    WORD    temp: file byte count
  38343. 29Ch    WORD    free file cluster entry
  38344. 29Eh    WORD    last file cluster entry
  38345. 2A0h    WORD    next file cluster number
  38346. 2A2h    DWORD    number of bytes appended to file
  38347. 2A6h    DWORD    pointer to current work disk buffer
  38348. 2AAh    DWORD    pointer to working SFT
  38349. 2AEh    WORD    used by INT 21 dispatcher to store caller's BX
  38350. 2B0h    WORD    used by INT 21 dispatcher to store caller's DS
  38351. 2B2h    WORD    temporary storage while saving/restoring caller's registers
  38352. 2B4h    DWORD    pointer to prev call frame (offset 250h) if INT 21 reentered
  38353.         also switched to for duration of INT 24
  38354. 2B8h 21 BYTEs    FindFirst search data for source file(s) of a rename operation
  38355.         (see #0764 at AH=4Eh)
  38356. 2CDh 32 BYTEs    directory entry for file being renamed (see #0512 at AH=11h)
  38357. 2EDh 331 BYTEs    critical error stack
  38358.    403h     35 BYTEs scratch SFT
  38359. 438h 384 BYTEs    disk stack (functions greater than 0Ch, INT 25,INT 26)
  38360. 5B8h 384 BYTEs    character I/O stack (functions 01h through 0Ch)
  38361. ---DOS 3.2,3.3x only---
  38362. 738h    BYTE    device driver lookahead flag (usually printer) (see AH=64h)
  38363. 739h    BYTE    volume change flag
  38364. 73Ah    BYTE    flag: virtual open
  38365. 73Bh    BYTE    ???
  38366. SeeAlso: #0820
  38367. --------D-215D07-----------------------------
  38368. INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
  38369.     AX = 5D07h
  38370. Return: DL = mode
  38371.         00h redirected output is combined
  38372.         01h redirected output in separate print jobs
  38373. SeeAlso: AX=5D08h,AX=5D09h,INT 2F/AX=1125h
  38374. --------D-215D08-----------------------------
  38375. INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
  38376.     AX = 5D08h
  38377.     DL = mode
  38378.         00h redirected output is combined
  38379.         01h redirected output placed in separate jobs, start new print job
  38380.         now
  38381. SeeAlso: AX=5D07h,AX=5D09h,INT 2F/AX=1125h
  38382. --------D-215D09-----------------------------
  38383. INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
  38384.     AX = 5D09h
  38385. Notes:    forces redirected printer output to be printed, and starts a new print
  38386.       job
  38387.     this function is also supported by 10Net, which calls it Terminate All
  38388.       Spool Jobs, and does not flush if in "combine" mode
  38389. SeeAlso: AX=5D07h,AX=5D08h,INT 2F/AX=1125h
  38390. --------D-215D0A-----------------------------
  38391. INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
  38392.     AX = 5D0Ah
  38393.     DS:DX -> 11-word DOS parameter list (see #0817)
  38394. Return: nothing.  next call to AH=59h will return values from fields AX,BX,CX,
  38395.       DX,DI, and ES in corresponding registers
  38396. Notes:    documented for DOS 5+, but undocumented in earlier versions
  38397.     the MS-DOS Programmer's Reference incorrectly states that this call was
  38398.       introduced in DOS 4, and fails to mention that the ERROR structure
  38399.       passed to this function is a DOS parameter list.
  38400. BUG:    DR-DOS 3.41 and 5.0 read the value for ES from the DS field of the DPL;
  38401.       fortunately, MS-DOS ignores the DS field, allowing a generic routine
  38402.       which sets both DS and ES fields to the same value
  38403. SeeAlso: AH=59h/BX=0000h
  38404. --------D-215D0B-----------------------------
  38405. INT 21 OU - DOS 4.x only internal - GET DOS SWAPPABLE DATA AREAS
  38406.     AX = 5D0Bh
  38407. Return: CF set on error
  38408.         AX = error code (see #0811)
  38409.     CF clear if successful
  38410.         DS:SI -> swappable data area list (see #0819)
  38411. Notes:    copying and restoring the swappable data areas allows DOS to be
  38412.       reentered unless it is in a critical section delimited by calls to
  38413.       INT 2A/AH=80h and INT 2A/AH=81h,82h
  38414.     SHARE and other DOS utilities consult the byte at offset 04h in the
  38415.       DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
  38416.       in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
  38417.     DOS 5+ use the SDA format listed below, but revert back to the DOS 3.x
  38418.       call for finding the SDA (see #0818)
  38419. SeeAlso: AX=5D06h,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h,INT 2F/AX=1203h
  38420.  
  38421. Format of DOS 4.x swappable data area list:
  38422. Offset    Size    Description    (Table 0819)
  38423.  00h    WORD    count of data areas
  38424.  02h  N BYTEs    "count" copies of data area record
  38425.         Offset    Size    Description
  38426.          00h    DWORD    address
  38427.          04h    WORD    length and type
  38428.                 bit 15 set if swap always, clear if swap in DOS
  38429.                 bits 14-0: length in bytes
  38430. SeeAlso: #0820
  38431.  
  38432. Format of DOS 4.0-6.0 swappable data area:
  38433. Offset    Size    Description    (Table 0820)
  38434.  -34    BYTE    printer echo flag (00h off, FFh active)
  38435.  -31    BYTE    current switch character (ignored by DOS 5+)
  38436.  -28    BYTE    incremented on each INT 21/AX=5E01h call
  38437.  -27 16 BYTEs    machine name set by INT 21/AX=5E01h
  38438.  -11  5 WORDs    zero-terminated list of offsets which need to be patched to
  38439.           enable critical-section calls (see INT 2A/AH=80h)
  38440.         (all offsets are 0D0Ch, but this list is still present for
  38441.           DOS 3.x compatibility)
  38442.  -1    BYTE    unused padding
  38443. ---start of actual SDA---
  38444.  00h    BYTE    critical error flag ("ErrorMode")
  38445.  01h    BYTE    InDOS flag (count of active INT 21 calls)
  38446.  02h    BYTE    drive on which current critical error occurred or FFh
  38447.  03h    BYTE    locus of last error
  38448.  04h    WORD    extended error code of last error
  38449.  06h    BYTE    suggested action for last error
  38450.  07h    BYTE    class of last error
  38451.  08h    DWORD    ES:DI pointer for last error
  38452.  0Ch    DWORD    current DTA (Disk Transfer Address)
  38453.         note: may point into SDA during the DOS EXEC function
  38454.           (see AH=4Bh), so programs which swap the SDA must be
  38455.           prepared to move the DTA to a private buffer if they
  38456.           might be invoked during an EXEC
  38457.  10h    WORD    current PSP
  38458.  12h    WORD    stores SP across an INT 23
  38459.  14h    WORD    return code from last process termination (zerod after reading
  38460.           with AH=4Dh)
  38461.  16h    BYTE    current drive
  38462.  17h    BYTE    extended break flag
  38463.  18h    BYTE    flag: code page switching
  38464.  19h    BYTE    flag: copy of previous byte in case of INT 24 Abort
  38465. ---remainder need only be swapped if in DOS---
  38466.  1Ah    WORD    value of AX on call to INT 21
  38467.  1Ch    WORD    PSP segment for sharing/network
  38468.  1Eh    WORD    network machine number for sharing/network (0000h = us)
  38469.  20h    WORD    first usable memory block found when allocating memory
  38470.  22h    WORD    best usable memory block found when allocating memory
  38471.  24h    WORD    last usable memory block found when allocating memory
  38472.  26h    WORD    memory size in paragraphs (used only during initialization)
  38473.  28h    WORD    last entry checked during directory search
  38474.  2Ah    BYTE    flag: nonzero if INT 24 Fail
  38475.  2Bh    BYTE    flags: allowable INT 24 responses (passed to INT 24 in AH)
  38476.  2Ch    BYTE    flag: do not set directory if nonzero
  38477.  2Dh    BYTE    flag: program aborted by ^C
  38478.  2Eh    BYTE    flag: allow embedded blanks in FCB
  38479.         may also allow use of "*" wildcard in FCBs
  38480.  2Fh    BYTE    padding (unused)
  38481.  30h    BYTE    day of month
  38482.  31h    BYTE    month
  38483.  32h    WORD    year - 1980
  38484.  34h    WORD    number of days since 1-1-1980
  38485.  36h    BYTE    day of week (0 = Sunday)
  38486.  37h    BYTE    flag: console swapped during read from device
  38487.  38h    BYTE    flag: safe to call INT 28 if nonzero
  38488.  39h    BYTE    flag: abort currently in progress, turn INT 24 Abort into Fail
  38489.  3Ah 30 BYTEs    device driver request header (see INT 2F/AX=0802h) for
  38490.           device calls
  38491.  58h    DWORD    pointer to device driver entry point (used in calling driver)
  38492.  5Ch 22 BYTEs    device driver request header for I/O calls
  38493.  72h 14 BYTEs    device driver request header for disk status check
  38494.  80h    DWORD    pointer to device I/O buffer
  38495.  84h    WORD    ???
  38496.  86h    WORD    ??? (0)
  38497.  88h    BYTE    type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
  38498.  89h    DWORD    start offset of file region to lock/unlock
  38499.  8Dh    DWORD    length of file region to lock/unlock
  38500.  91h    BYTE    padding (unused)
  38501.  92h  3 BYTEs    24-bit user number (see AH=30h)
  38502.  95h    BYTE    OEM number (see #0550 at AH=30h)
  38503.  96h  6 BYTEs    CLOCK$ transfer record (see #0786 at AH=52h)
  38504.  9Ch    BYTE    device I/O buffer for single-byte I/O functions
  38505.  9Dh    BYTE    padding???
  38506.  9Eh 128 BYTEs    buffer for filename
  38507. 11Eh 128 BYTEs    buffer for filename
  38508. 19Eh 21 BYTEs    findfirst/findnext search data block (see #0764 at AH=4Eh)
  38509. 1B3h 32 BYTEs    directory entry for found file (see #0550 at AH=11h)
  38510. 1D3h 88 BYTEs    copy of current directory structure for drive being accessed
  38511. 22Bh 11 BYTEs    FCB-format filename for device name comparison
  38512. 236h    BYTE    terminating NUL for above filename
  38513. 237h 11 BYTEs    wildcard destination specification for rename (FCB format)
  38514. 242h    BYTE    terminating NUL for above filespec
  38515. 243h    BYTE    ???
  38516. 244h    WORD    ???
  38517. 246h  5 BYTEs    ???
  38518. 24Bh    BYTE    extended FCB file attributes
  38519. 24Ch    BYTE    type of FCB (00h regular, FFh extended)
  38520. 24Dh    BYTE    directory search attributes
  38521. 24Eh    BYTE    file open/access mode
  38522. 24Fh    BYTE    ??? flag bits
  38523.         reportedly 00h when deleting a file under MSDOS 5.0
  38524. 250h    BYTE    flag: device name found on rename, or file not found
  38525. 251h    BYTE    splice flag??? (file name and directory name together)
  38526. 252h    BYTE    flag indicating how DOS function was invoked
  38527.         (00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
  38528. 253h    BYTE    sector position within cluster
  38529. 254h    BYTE    ??? (flag: translate sector/cluster)
  38530. 255h    BYTE    ??? (flag: 00h if read, 01h if write)
  38531. 256h    BYTE    current working drive number
  38532. 257h    BYTE    cluster factor
  38533. 258h    BYTE    ???
  38534. 259h    BYTE    line edit (AH=0Ah) insert mode flag (nonzero = on)
  38535. 25Ah    BYTE    canonicalized filename referred to existing file/dir if FFh
  38536. 25Bh    BYTE    volume ID flag
  38537. 25Ch    BYTE    type of process termination (00h-03h) (see AH=4Dh)
  38538. 25Dh    BYTE    ???
  38539. 25Eh    BYTE    ??? file create flag (00h = no, search only)
  38540. 25Fh    BYTE    ??? (value for deleted file's first byte)
  38541. 260h    DWORD    pointer to Drive Parameter Block for critical error invocation
  38542. 264h    DWORD    pointer to stack frame containing user registers on INT 21
  38543. 268h    WORD    stores SP across INT 24
  38544. 26Ah    DWORD    pointer to DOS Drive Parameter Block for ???
  38545. 26Eh    WORD    segment of disk buffer
  38546. 270h    WORD    ??? (saving partial cluster number)
  38547. 272h    WORD    ??? (temp: sector of work current cluster)
  38548. 274h    WORD    ??? (high part of cluster number)
  38549. 276h    WORD    ??? (temp)
  38550. 278h    BYTE    Media ID byte returned by AH=1Bh,1Ch
  38551. 279h    BYTE    ??? (doesn't seem to be referenced)
  38552. 27Ah    DWORD    pointer to device header if filename is character device
  38553. 27Eh    DWORD    pointer to current SFT
  38554. 282h    DWORD    pointer to current directory structure for drive being accessed
  38555. 286h    DWORD    pointer to caller's FCB
  38556. 28Ah    WORD    SFT index to which file being opened will refer
  38557. 28Ch    WORD    temporary storage for file handle
  38558. 28Eh    DWORD    pointer to a JFT entry in process handle table
  38559.           (see #0535 at AH=26h)
  38560. 292h    WORD    offset in DOS DS of first filename argument
  38561. 294h    WORD    offset in DOS DS of second filename argument
  38562. 296h    WORD    ??? (offset of last component in pathname or FFFFh)
  38563. 298h    WORD    offset of transfer address to add
  38564. 29Ah    WORD    last relative cluster within file being accessed
  38565. 29Ch    WORD    temp: absolute cluster number being accessed
  38566. 29Eh    WORD    directory sector number
  38567. 2A0h    WORD    ???
  38568. 2A2h    WORD    ??? directory cluster number
  38569. 2A4h    DWORD    current relative sector number within file
  38570. 2A8h    DWORD    ??? (current sector number)
  38571. 2ACh    WORD    ??? (current byte offset within sector)
  38572. 2AEh    DWORD    current offset in file
  38573. 2B2h    WORD    ???
  38574. 2B4h    WORD    bytes in partial sector
  38575. 2B6h    WORD    number of sectors
  38576. 2B8h    WORD    ??? (free file cluster entry)
  38577. 2BAh    WORD    ??? (last file cluster entry)
  38578. 2BCh    WORD    ??? (next file cluster number)
  38579. 2BEh    DWORD    number of bytes appended to file
  38580. 2C2h    DWORD    pointer to current work disk buffer
  38581. 2C6h    DWORD    pointer to working SFT
  38582. 2CAh    WORD    used by INT 21 dispatcher to store caller's BX
  38583. 2CCh    WORD    used by INT 21 dispatcher to store caller's DS
  38584. 2CEh    WORD    temporary storage while saving/restoring caller's registers
  38585. 2D0h    DWORD    pointer to prev call frame (offset 264h) if INT 21 reentered
  38586.         also switched to for duration of INT 24
  38587. 2D4h    WORD    open mode/action for INT 21/AX=6C00h
  38588. 2D6h    BYTE    ??? (set to 00h by INT 21h dispatcher, 02h when a read is
  38589.           performed, and 01h or 03h by INT 21/AX=6C00h)
  38590. 2D7h    WORD    ??? apparently unused
  38591. 2D9h    DWORD    stored ES:DI for AX=6C00h
  38592. 2DDh    WORD    extended file open action code (see #0891 at AX=6C00h)
  38593. 2DFh    WORD    extended file open attributes (see #0890 at AX=6C00h)
  38594. 2E1h    WORD    extended file open file mode (see AX=6C00h)
  38595. 2E3h    DWORD    pointer to filename to open (see AX=6C00h)
  38596. 2E7h    WORD    ??? temp DX storage or 0000h or temp data buffer size from
  38597.           disk buffer
  38598. 2E9h    WORD    ???
  38599. 2EBh    BYTE    ???
  38600. 2ECh    WORD    stores DS during call to [List-of-Lists + 37h]
  38601. 2EEh    WORD    ???
  38602. 2F0h    BYTE    ???
  38603. 2F1h    WORD    ??? bit flags
  38604. 2F3h    DWORD    pointer to user-supplied filename
  38605. 2F7h    DWORD    pointer to ???
  38606. 2FBh    WORD    stores SS during call to [List-of-Lists + 37h]
  38607. 2FDh    WORD    stores SP during call to [List-of-Lists + 37h]
  38608. 2FFh    BYTE    flag, nonzero if stack switched in calling [List-of-Lists+37h]
  38609. 300h 21 BYTEs    FindFirst search data for source file(s) of a rename operation
  38610.         (see #0764 at AH=4Eh)
  38611. 315h 32 BYTEs    directory entry for file being renamed (see #0512 at AH=11h)
  38612. 335h 331 BYTEs    critical error stack
  38613. 480h 384 BYTEs    disk stack (functions greater than 0Ch, INT 25,INT 26)
  38614. 600h 384 BYTEs    character I/O stack (functions 01h through 0Ch)
  38615. 780h    BYTE    device driver lookahead flag (usually printer) (see AH=64h)
  38616. 781h    BYTE    volume change flag
  38617. 782h    BYTE    flag: virtual open
  38618. 783h    BYTE    ???
  38619. 784h    WORD    ???
  38620. 786h    WORD    ???
  38621. 788h    WORD    ???
  38622. 78Ah    WORD    ???
  38623. SeeAlso: #0818,#0819
  38624. --------D-215E00-----------------------------
  38625. INT 21 - DOS 3.1+ network - GET MACHINE NAME
  38626.     AX = 5E00h
  38627.     DS:DX -> 16-byte buffer for ASCIZ machine name
  38628. Return: CF clear if successful
  38629.         CH = validity
  38630.         00h name invalid
  38631.         nonzero valid
  38632.             CL = NetBIOS number for machine name
  38633.             DS:DX buffer filled with blank-paded name
  38634.     CF set on error
  38635.         AX = error code (01h) (see #0811 at AH=59h)
  38636. Note:    supported by OS/2 v1.3+ compatibility box, PC-NFS
  38637. SeeAlso: AX=5E01h
  38638. --------N-215E00-----------------------------
  38639. INT 21 - 10NET v5.0 - GET MACHINE NAME
  38640.     AX = 5E00h
  38641. Return: CL = redirector's NetBIOS name number
  38642.     ES:DI -> network node ID
  38643. SeeAlso: AX=5E01h"10NET"
  38644. --------D-215E01CH00-------------------------
  38645. INT 21 - DOS 3.1+ network - SET MACHINE NAME
  38646.     AX = 5E01h
  38647.     CH = 00h undefine name (make it invalid)
  38648.        <> 0     define name
  38649.     CL = name number
  38650.     DS:DX -> 15-character blank-padded ASCIZ name
  38651. SeeAlso: AX=5E00h
  38652. --------N-215E01-----------------------------
  38653. INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE
  38654.     AX = 5E01h
  38655.     CX = length of buffer
  38656.     DS:DX -> buffer for 10Net configuration table
  38657. SeeAlso: AX=5E00h"10NET",INT 6F/AH=02h,INT 6F/AH=03h
  38658.  
  38659. Format of 10Net Configuration Table:
  38660. Offset    Size    Description    (Table 0821)
  38661.  00h  8 BYTEs    user name
  38662.  08h 15 BYTEs    node ID
  38663.  17h  3 BYTEs    unique portion of Ethernet address
  38664.  1Ah    BYTE    Who group number
  38665.  1Bh    WORD    services mask (see #0823)
  38666.  1Dh    DWORD    serial number
  38667.  21h    BYTE    maximum concurrent users with same serial number allowed on net
  38668.  22h    BYTE    chat mask (see #0824)
  38669.  23h    BYTE    internal system bits (see #0825)
  38670.  24h  9 BYTEs    version number in format MM.mm.xxx
  38671.  2Dh    BYTE    flag: 01h if machine is a PS/2
  38672.  2Eh    BYTE    flag: 03h if 80386
  38673.  2Fh    BYTE    spool termination mode: 01h concatenate, 02h truncate
  38674.         (see AX=5D09h)
  38675.  30h    WORD    autospool timeout in clock ticks
  38676.  32h    WORD    monitor timeout in clock ticks
  38677.  34h    WORD    unused
  38678.  36h    WORD    chat timeout in clock ticks
  38679.  38h    WORD    netBIOS session timeout in half-seconds
  38680.  3Ah    WORD    datagram send timeout in seconds
  38681.  3Ch    WORD    keyboard value for initiating chat mode
  38682.  3Eh    WORD    Who timeout in clock ticks
  38683.  40h    BYTE    flag: 01h if server should process rom NetBIOS Post return
  38684.  41h    BYTE    flag: 01h if FCBs should be recycled
  38685.  42h  3 BYTEs    signature "DBG"
  38686.  45h    BYTE    last interrupt (21h or 6Fh)
  38687.  46h    BYTE    last INT 21 AH value
  38688.  47h    BYTE    last INT 6F AH value
  38689.  48h    WORD    last item posted
  38690.  4Ah    WORD    last item free-posted
  38691.  4Ch    WORD    last item handled by server
  38692.  4Eh    WORD    last redirector send NCB
  38693.  50h    WORD    last redirector receive NCB
  38694.  52h  4 BYTEs    signature "TABL"
  38695.  56h    WORD    offset of datagram buffer table header
  38696.  58h    WORD    offset of chat buffer table header
  38697.  5Ah    WORD    offset of Raw buffer table header
  38698.  5Ch    WORD    offset of Workstation buffer table header
  38699.  5Eh    WORD    offset of server receive-any table header
  38700.  60h    WORD    offset of Tiny buffer table header
  38701.  62h    WORD    offset of zero-length buffer table (NCBs)
  38702.  64h    WORD    offset of Rdr (Redirector Mount) table header
  38703.  66h    WORD    offset of Ntab (Redirector Session) table header
  38704.  68h    WORD    offset of FCB table header
  38705.  6Ah    WORD    offset of user file handle table header
  38706.  6Ch    WORD    offset of workstation printer RDR extension table header
  38707.  6Eh    WORD    offset of server shared device table header
  38708.  70h    WORD    offset of server connection table header
  38709.  72h    WORD    offset of server login table header
  38710.  74h    WORD    offset of server file table header
  38711.  76h    WORD    offset of server shared file table header
  38712.  78h    WORD    offset of server record lock table header
  38713.  7Ah    WORD    offset of remote printer claim table header
  38714.  7Ch    WORD    offset of remote printer device table header
  38715.  7Eh    WORD    offset of print server mount table header
  38716.  80h    WORD    offset of print server sessions table header
  38717.  82h    WORD    offset of print server print job structure table header
  38718.  84h    WORD    offset of print server pooled device table header
  38719.  86h    WORD    size of workstation buffer
  38720.  88h    WORD    size of server receive-any buffer
  38721.  8Ah    WORD    size of server raw I/O buffer
  38722.  8Ch  6 BYTEs    reserved
  38723.  92h    DWORD    pointer to profile pathname
  38724.  96h    BYTE    datagram retry count
  38725.  97h    BYTE    NetBIOS LAN adapter number
  38726.  98h  6 BYTEs    physical Ethernet address
  38727.  9Eh    BYTE    NetBIOS server name number
  38728.  9Fh    BYTE    NetBIOS redirector name number
  38729.  A0h    BYTE    10Net interrupt number
  38730.  A1h    BYTE    flag: chat is loaded
  38731.  A2h    BYTE    flag: INT 6F APIs permanently loaded
  38732.  A3h    BYTE    flag: file security present
  38733.  A4h    WORD    reserved
  38734.  A6h    BYTE    fixed mount bitmask for drives A:-H:
  38735.  A7h    BYTE    reserved
  38736.  A8h    WORD    10Net system flags (see #0826)
  38737.  AAh    BYTE    monitor flags (see #0827)
  38738.  ABh  5 BYTEs    reserved
  38739.  B0h    WORD    offset of monitor timer block
  38740.  B2h    WORD    offset of server timer block
  38741.  B4h    WORD    offset of chat timer block
  38742.  B6h    WORD    timer chain
  38743.  B8h  4 BYTEs    signature "TALS"
  38744.  BCh    WORD    number of 10Net sends
  38745.  BEh    WORD    number of 10Net receives
  38746.  C0h    WORD    number of no-buffer conditions
  38747.  C2h    WORD    number of dropped posted messages
  38748.  C4h    WORD    number of server NCB errors
  38749.  C6h    WORD    number of redirector NCB errors
  38750.  C8h    WORD    number of datagram send/receive errors
  38751.  CAh    WORD    number of dropped Whos
  38752.  CCh    WORD    number of dropped submits
  38753.  CEh    WORD    number of session aborts
  38754.  D0h    BYTE    number of NetBIOS interface-busy errors
  38755.  D1h    BYTE    last NetBIOS bad post command
  38756.  D2h    BYTE    last NetBIOS bad redirector command
  38757.  D3h    BYTE    do send datagram send/receive error command
  38758.  D4h    DWORD    -> DOS system parameter table
  38759.  D8h    WORD    number of DOS physical drives
  38760.  DAh    WORD    offset of DOS PSP field in DOS data segment
  38761.  DCh    WORD    offset of in-DOS flag in DOS data segment
  38762.  DEh    WORD    DOS data segment
  38763.  E0h    WORD    offset of DOS SFT in DOS data segment
  38764.  E2h    WORD    offset of number-of-physical-units field in DOS data segment
  38765.  E4h    WORD    10Net code segment
  38766.  E6h    WORD    10Net data segment
  38767.  E8h    WORD    10Net common server segment
  38768.  EAh    WORD    10Net file server segment
  38769.  ECh    WORD    10Net print server segment
  38770.  EEh    WORD    10Net remote printer segment
  38771. Note:    documentation lists field at offset D0h as a WORD, but all following
  38772.       offsets are as though it were a BYTE; if it is indeed a WORD, all
  38773.       offsets after D0h must be increased by one byte
  38774.  
  38775. Format of 10Net Table Header:
  38776. Offset    Size    Description    (Table 0822)
  38777.  -16  4 BYTEs    table identifier
  38778.  -12    WORD    peak number of tables allocated
  38779.  -10    WORD    number of tables currently in use
  38780.  -8    WORD    total number of tables
  38781.  -6    WORD    size of each table
  38782.  -4    WORD    offset of first allocated table
  38783.  -2    WORD    offset of first free table
  38784.  
  38785. Bitfields for 10NET services mask:
  38786. Bit(s)    Description    (Table 0823)
  38787.  0    workstation
  38788.  1    file server
  38789.  2    print queue server
  38790.  3    de-spool server
  38791.  
  38792. Bitfields for 10NET chat mask:
  38793. Bit(s)    Description    (Table 0824)
  38794.  0    chat permitted
  38795.  1    bell enabled
  38796.  2    chat keyboard initiated
  38797.  3    in INT 16 handler
  38798.  4    in Get Input
  38799.  5    display has timed out
  38800.  6    chat is idle
  38801.  
  38802. Bitfields for 10NET internal system bits:
  38803. Bit(s)    Description    (Table 0825)
  38804.  0    submit permitted
  38805.  1    submit initiated
  38806.  2    submit executing
  38807.  3    internal client call/chat/spool/autospool
  38808.  4    in spool termination
  38809.  5    print permitted
  38810.  6    waiting for keyboard input
  38811.  
  38812. Bitfields for 10NET System Flags:
  38813. Bit(s)    Description    (Table 0826)
  38814.  0    in NetBIOS
  38815.  1    processing INT 28
  38816.  2    is server
  38817.  3    in net user-DOS function
  38818.  4    in DOS user-DOS function
  38819.  5    in net for user non-DOS function
  38820.  6    in server DOS function
  38821.  7    in server non-DOS function
  38822.  8    in terminate
  38823.  10    in user on server request
  38824.  13    in DOS for user on server
  38825.  14    disable critical error handler
  38826.  
  38827. Bitfields for Monitor Flags:
  38828. Bit(s)    Description    (Table 0827)
  38829.  0    waiting for monitor response
  38830.  4    in monitor get-input routine
  38831.  5    monitor display timeout
  38832.  6    sensing for escape key
  38833. --------D-215E02-----------------------------
  38834. INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
  38835.     AX = 5E02h
  38836.     BX = redirection list index (see AX=5F02h)
  38837.     CX = length of setup string
  38838.     DS:SI -> setup string
  38839. Return: CF clear if successful
  38840.     CF set on error
  38841.         AX = error code (01h) (see #0811 at AH=59h)
  38842. Note:    also supported by 10NET v5.0
  38843. SeeAlso: AX=5E03h,INT 2F/AX=111Fh
  38844. --------D-215E03-----------------------------
  38845. INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
  38846.     AX = 5E03h
  38847.     BX = redirection list index (see AX=5F02h)
  38848.     ES:DI -> 64-byte buffer for setup string
  38849. Return: CF clear if successful
  38850.         CX = length of setup string
  38851.         ES:DI buffer filled
  38852.     CF set on error
  38853.         AX = error code (01h) (see #0811 at AH=59h)
  38854. Note:    also supported by 10NET v5.0, but 10NET is documented as using DS:SI
  38855.       instead of ES:DI
  38856. SeeAlso: AX=5E02h,INT 2F/AX=111Fh
  38857. --------D-215E04-----------------------------
  38858. INT 21 - DOS 3.1+ network - SET PRINTER MODE
  38859.     AX = 5E04h
  38860.     BX = redirection list index (see AX=5F02h)
  38861.     DX = mode
  38862.         bit 0: set if binary, clear if text (tabs expanded to blanks)
  38863. Return: CF set on error
  38864.         AX = error code (see #0811 at AH=59h)
  38865.     CF clear if successful
  38866. Note:    calls INT 2F/AX=111Fh with 5E04h on stack
  38867. SeeAlso: AX=5E05h"DOS",INT 2F/AX=111Fh
  38868. --------N-215E04-----------------------------
  38869. INT 21 - 10NET v5.0 - INITIATE PRINT JOB
  38870.     AX = 5E04h
  38871.     BX = zero-based redirection list index (see AX=5F02h)
  38872.     DS:DX -> extended workstation printer setup structure (see #0828)
  38873. Return: CF clear if successful
  38874.     CF set on error
  38875.         AX = error code (see #0811 at AH=59h)
  38876. SeeAlso: AX=5E05h"10NET",AX=5E06h"10NET"
  38877.  
  38878. Format of 10NET extended workstation printer setup structure:
  38879. Offset    Size    Description    (Table 0828)
  38880.  00h    BYTE    notification flags (see #0829)
  38881.  01h    BYTE    job control mask (see #0830)
  38882.  02h    WORD    days to retain file
  38883.  04h    WORD    test print length
  38884.  06h    BYTE    number of copies to print
  38885.  07h    BYTE    compression algorithm
  38886.  08h    BYTE    tab width (00h = don't expand)
  38887.  09h    BYTE    initiation type (00h normal, 01h non-spooled)
  38888.  0Ah 38 BYTEs    job start operation notification instructions
  38889.  30h 32 BYTEs    comment for job
  38890.  50h 64 BYTEs    output filename or non-spooled file
  38891.  
  38892. Bitfields for 10NET notification flags:
  38893. Bit(s)    Description    (Table 0829)
  38894.  0    user at print start
  38895.  1    operator at start, with reply
  38896.  2    user at print completion
  38897.  3    operator at completion, with reply
  38898.  4    user on queue switch
  38899.  5    operator on queue switch, with reply
  38900.  6    user on print error
  38901.  
  38902. Bitfields for 10NET job control mask:
  38903. Bit(s)    Description    (Table 0830)
  38904.  0    print banner page
  38905.  1    eject page at end of job
  38906.  2    mark as "held" (queue but don't print)
  38907.  3    rush job (queue at top)
  38908.  4    overwrite file with zeros before deletion
  38909.  5    hyperspool if possible
  38910. --------D-215E05-----------------------------
  38911. INT 21 - DOS 3.1+ network - GET PRINTER MODE
  38912.     AX = 5E05h
  38913.     BX = redirection list index (see AX=5F02h)
  38914. Return: CF set on error
  38915.         AX = error code (see #0811 at AH=59h)
  38916.     CF clear if successful
  38917.         DX = printer mode (see AX=5E04h)
  38918. Note:    calls INT 2F/AX=111Fh with 5E05h on stack
  38919. SeeAlso: AX=5E04h"DOS",INT 2F/AX=111Fh
  38920. --------N-215E05-----------------------------
  38921. INT 21 - 10NET v5.0 - TERMINATE PRINT JOB
  38922.     AX = 5E05h
  38923.     BX = zero-based redirection list index (see AX=5F02h)
  38924. Return: CF clear if successful
  38925.     CF set on error
  38926.         AX = error code (see #0811 at AH=59h)
  38927. Note:    this call resets the spool termination mode to "truncate"
  38928.       (see AX=5D08h)
  38929. SeeAlso: AX=5E04h"10NET",AX=5E06h
  38930. --------N-215E06-----------------------------
  38931. INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE
  38932.     AX = 5E06h
  38933.     BX = zero-based redirection list index (see AX=5F02h)
  38934.     CX = operation (06h set, 07h get)
  38935.     DS:DX -> buffer for setup structure (same as first nine bytes of
  38936.           workstation printer setup) (see #0828)
  38937. Return: CF clear if successful
  38938.         DS:DX buffer updated on get
  38939.     CF set on error
  38940.         AX = error code (see #0811 at AH=59h)
  38941. SeeAlso: AX=5E04h"10NET",AX=5E05h"10NET"
  38942. --------D-215F00-----------------------------
  38943. INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
  38944.     AX = 5F00h
  38945.     BL = redirection type
  38946.         03h printer
  38947.         04h disk drive
  38948. Return: CF set on error
  38949.         AX = error code (see #0811 at AH=59h)
  38950.     CF clear if successful
  38951.         BH = redirection state
  38952.         00h off
  38953.         01h on
  38954. Note:    calls INT 2F/AX=111Eh with AX on top of the stack
  38955. SeeAlso: AX=5F01h,INT 2F/AX=111Eh
  38956. --------D-215F01-----------------------------
  38957. INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
  38958.     AX = 5F01h
  38959.     BL = redirection type
  38960.         03h printer
  38961.         04h disk drive
  38962.     BH = redirection state
  38963.         00h off
  38964.         01h on
  38965. Return: CF set on error
  38966.         AX = error code (see #0811 at AH=59h)
  38967.     CF clear if successful
  38968. Notes:    when redirection is off, the local device (if any) rather than the
  38969.       remote device is used
  38970.     calls INT 2F/AX=111Eh with AX on top of the stack
  38971. SeeAlso: AX=5F00h,INT 2F/AX=111Eh
  38972. --------D-215F02-----------------------------
  38973. INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
  38974.     AX = 5F02h
  38975.     BX = zero-based redirection list index
  38976.     CX = 0000h (LANtastic)
  38977.     DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
  38978.           followed by colon
  38979.     ES:DI -> 128-byte buffer for ASCIZ network name
  38980. Return: CF clear if successful
  38981.         BH = device status
  38982.         00h valid
  38983.         01h invalid
  38984.         02h valid (connected from inside Windows for Workgroups v3.11)
  38985.         BL = device type
  38986.         03h printer
  38987.         04h disk drive
  38988.         CX = user data previously set with AX=5F03h
  38989.         DS:SI and ES:DI buffers filled
  38990.         DX,BP destroyed
  38991.     CF set on error
  38992.         AX = error code (01h,12h) (see #0811 at AH=59h)
  38993. Notes:    this function is passed through to INT 2F/AX=111Eh by the DOS kernel
  38994.     error code 12h is returned if BX is greater than the size of the list
  38995.     also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
  38996.     the returned device name may or may not include a colon, depending on
  38997.       the network software
  38998. SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh
  38999. --------D-215F03-----------------------------
  39000. INT 21 - DOS 3.1+ network - REDIRECT DEVICE
  39001.     AX = 5F03h
  39002.     BL = device type
  39003.         03h printer
  39004.         04h disk drive
  39005.     CX = user data to save
  39006.         0000h for LANtastic
  39007.         4E57h ("NW") for NetWare 4.0 requester
  39008.     DS:SI -> ASCIZ local device name (16 bytes max)
  39009.     ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
  39010. Return: CF clear if successful
  39011.     CF set on error
  39012.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #0811 at AH=59h)
  39013. Notes:    if device type is disk drive, DS:SI must point at either a null string
  39014.       or a string consisting the drive letter followed by a colon; if a
  39015.       null string, the network attempts to access the destination without
  39016.       redirecting a local drive
  39017.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  39018.     also supported by Banyan VINES, LANtastic, and 10NET
  39019. SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh
  39020. --------D-215F04-----------------------------
  39021. INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
  39022.     AX = 5F04h
  39023.     DS:SI -> ASCIZ local device name or path
  39024.     CX = 4E57h ("NW") for NetWare 4.0 requester
  39025. Return: CF clear if successful
  39026.     CF set on error
  39027.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #0811 at AH=59h)
  39028. Notes:    the DS:SI string must be either a local device name, a drive letter
  39029.       followed by a colon, or a network directory beginning with two
  39030.       backslashes
  39031.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  39032.     also supported by Banyan VINES, LANtastic, and 10NET
  39033. SeeAlso: AX=5F03h,INT 2F/AX=111Eh
  39034. --------D-215F05-----------------------------
  39035. INT 21 - DOS 4+ network - GET EXTENDED REDIRECTION LIST ENTRY
  39036.     AX = 5F05h
  39037.     BX = redirection list index
  39038.     DS:SI -> buffer for ASCIZ source device name
  39039.     ES:DI -> buffer for destination ASCIZ network path
  39040. Return: CF set on error
  39041.         AX = error code (see #0811 at AH=59h)
  39042.     CF clear if successful
  39043.         AX = server's network process ID handle (10NET)
  39044.         BH = device status flag (bit 0 clear if valid)
  39045.         BL = device type (03h if printer, 04h if drive)
  39046.         CX = stored parameter value (user data) from AX=5F03h
  39047.         BP = NETBIOS local session number
  39048.         DS:SI buffer filled
  39049.         ES:DI buffer filled
  39050. Notes:    the local session number allows sharing the redirector's session number
  39051.     if an error is caused on the NETBIOS LSN, the redirector may be unable
  39052.       to correctly recover from errors
  39053.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  39054.     supported by DR-DOS 5.0
  39055.     also supported by 10NET v5.0
  39056. SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
  39057. --------O-215F05-----------------------------
  39058. INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
  39059.     AX = 5F05h
  39060.     DL = drive number (0=A:)
  39061.     DS:SI -> ASCIZ name of the object to map the drive to
  39062. Return: CF set on error
  39063.         AX = error code (see #0811 at AH=59h)
  39064.     CF clear if successful
  39065. SeeAlso: AX=5F06h"STARLITE"
  39066. --------N-215F06-----------------------------
  39067. INT 21 U - Network - GET FULL REDIRECTION LIST
  39068.     AX = 5F06h
  39069.     ???
  39070. Return: ???
  39071. Notes:    similar to AX=5F02h and AX=5F05h, but also returns redirections
  39072.       excluded from those calls for various reasons
  39073.     calls INT 2F/AX=111Eh with AX on top of the stack
  39074. SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
  39075. --------O-215F06-----------------------------
  39076. INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
  39077.     AX = 5F06h
  39078.     DL = drive to be unmapped (0=A:)
  39079. Return: CF set on error
  39080.         AX = error code (see #0811 at AH=59h)
  39081.     CF clear if successful
  39082. SeeAlso: AX=5F05h"STARLITE"
  39083. --------D-215F07-----------------------------
  39084. INT 21 - DOS 5+ - ENABLE DRIVE
  39085.     AX = 5F07h
  39086.     DL = drive number (0=A:)
  39087. Return: CF clear if successful
  39088.     CF set on error
  39089.         AX = error code (0Fh) (see #0811 at AH=59h)
  39090. Notes:    simply sets the "valid" bit in the drive's CDS
  39091.     this function is not supported by Novell DOS 7
  39092. SeeAlso: AH=52h,AX=5F08h"DOS"
  39093. --------O-215F07-----------------------------
  39094. INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
  39095.     AX = 5F07h
  39096.     DS:SI -> ASCIZ name of object to offer to network
  39097.     ES:DI -> ASCIZ name under which object will be known on the network
  39098.         MUST begin with three slashes
  39099. Return: CF set on error
  39100.         AX = error code (see #0811 at AH=59h)
  39101.     CF clear if successful
  39102. SeeAlso: AX=5F08h"STARLITE"
  39103. --------D-215F08-----------------------------
  39104. INT 21 - DOS 5+ - DISABLE DRIVE
  39105.     AX = 5F08h
  39106.     DL = drive number (0=A:)
  39107. Return: CF clear if successful
  39108.     CF set on error
  39109.         AX = error code (0Fh) (see #0811 at AH=59h)
  39110. Notes:    simply clears the "valid" bit in the drive's CDS
  39111.     this function is not supported by Novell DOS 7
  39112. SeeAlso: AH=52h,AX=5F07h"DOS"
  39113. --------O-215F08-----------------------------
  39114. INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
  39115.     AX = 5F08h
  39116.     DS:SI -> ASCIZ network name (not local name) of object to unshare
  39117. Return: CF set on error
  39118.         AX = error code (see #0811 at AH=59h)
  39119.     CF clear if successful
  39120. SeeAlso: AX=5F07h"STARLITE"
  39121. --------O-215F09-----------------------------
  39122. INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
  39123.     AX = 5F09h
  39124.     DS:DX -> ASCIZ name of the device driver to attach to
  39125. Return: CF set on error
  39126.         AX = error code (see #0811 at AH=59h)
  39127.     CF clear if successful
  39128. Note:    the STARLITE distributed file system can attach to multiple networks
  39129.       simultaneously
  39130. SeeAlso: AX=5F0Ah
  39131. --------O-215F0A-----------------------------
  39132. INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
  39133.     AX = 5F0Ah
  39134.     DS:DX -> ASCIZ name of device driver to detach from
  39135. Return: CF set on error
  39136.         AX = error code (see #0811 at AH=59h)
  39137.     CF clear if successful
  39138. SeeAlso: AX=5F09h
  39139. --------N-215F30-----------------------------
  39140. INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
  39141.     AX = 5F30h
  39142. Return: AX = version (AH=major,AL=minor)
  39143. --------N-215F32-----------------------------
  39144. INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
  39145.     AX = 5F32h
  39146.     BX = handle
  39147.     CX = size of _PIPEINFO structure
  39148.     DX = level (must be 0001h)
  39149.     DS:SI -> _PIPEINFO structure (see #0831)
  39150. Return: CF clear if successful
  39151.         _PIPEINFO structure filled in
  39152.     CF set on error
  39153.         AX = error code
  39154. Note:    this function was introduced by LAN Manager but is also supported by
  39155.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39156.       Machines, and others
  39157. SeeAlso: AX=5F33h,AX=5F34h
  39158.  
  39159. Format of Named Pipes _PIPEINFO structure:
  39160. Offset    Size    Description    (Table 0831)
  39161.  00h    WORD    size of outgoing buffer
  39162.  02h    WORD    size of incoming buffer
  39163.  04h    BYTE    maximum number of instances allowed
  39164.  05h    BYTE    current number of instances
  39165.  06h    BYTE    length of the name (including terminating NUL)
  39166.  07h  N BYTEs    name
  39167. --------N-215F33-----------------------------
  39168. INT 21 u - Named Pipes - LOCAL DosQNmPHandState
  39169.     AX = 5F33h
  39170.     BX = handle
  39171. Return: CF clear if successful
  39172.         AH = pipe mode bit mask (see #0832)
  39173.         AL = maximum number of instances
  39174.     CF set on error
  39175.         AX = error code
  39176. Note:    this function was introduced by LAN Manager but is also supported by
  39177.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39178.       Machines, and others
  39179. SeeAlso: AX=5F32h,AX=5F34h
  39180.  
  39181. Bitfields for Named Pipes pipe mode:
  39182. Bit(s)    Description    (Table 0832)
  39183.  7    set if nonblocking, clear if blocking
  39184.  6    set if server end, clear if client end
  39185.  2    set if write in message mode, clear if write in byte mode
  39186.  0    set if read in message mode, clear if read in byte mode
  39187. --------N-215F34-----------------------------
  39188. INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
  39189.     AX = 5F34h
  39190.     BX = handle
  39191.     CX = pipe mode bit mask
  39192.         bit 15: set if nonblocking, clear if blocking
  39193.         bit     8: set if read in message mode, clear if read in byte mode
  39194. Return: CF clear if successful
  39195.     CF set if error
  39196.         AX = error code
  39197. Note:    this function was introduced by LAN Manager but is also supported by
  39198.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39199.       Machines, and others
  39200. SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
  39201. --------N-215F35-----------------------------
  39202. INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
  39203.     AX = 5F35h
  39204.     BX = handle
  39205.     CX = buffer length
  39206.     DS:SI -> buffer
  39207. Return:    CF set on error
  39208.         AX = error code
  39209.     CF clear if successful (LAN Manager v1-v2)
  39210.     AX = 0000h if successful (LAN Manager 3.x)
  39211.     ---if successful---
  39212.         CX = bytes read
  39213.         SI = bytes left in the pipe
  39214.         DX = bytes left in the current message
  39215.         AX = pipe status (v1-v2) (see #0833)
  39216.         DI = pipe status (v3.x)
  39217. Note:    this function was introduced by LAN Manager but is also supported by
  39218.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39219.       Machines, and others
  39220. SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
  39221.  
  39222. (Table 0833)
  39223. Values for pipe status:
  39224.  0001h    disconnected
  39225.  0002h    listening
  39226.  0003h    connected
  39227.  0004h    closing
  39228. --------N-215F36-----------------------------
  39229. INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
  39230.     AX = 5F36h
  39231.     BX = handle
  39232.     CX = in buffer length
  39233.     DS:SI -> in buffer
  39234.     DX = out buffer length
  39235.     ES:DI -> out buffer
  39236. Return: CF clear if successful
  39237.         CX = bytes read
  39238.     CF set on error
  39239.         AX = error code
  39240. Note:    this function was introduced by LAN Manager but is also supported by
  39241.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39242.       Machines, and others
  39243. SeeAlso: AX=5F34h,AX=5F37h
  39244. --------N-215F37-----------------------------
  39245. INT 21 u - Named Pipes - DosCallNmPipe
  39246.     AX = 5F37h
  39247.     DS:SI -> DosCallNmPipe stack frame (see #0834)
  39248. Return: CF clear if successful
  39249.         CX = bytes read
  39250.     CF set on error
  39251.         AX = error code
  39252. Note:    this function was introduced by LAN Manager but is also supported by
  39253.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39254.       Machines, and others
  39255. SeeAlso: AX=5F36h,AX=5F38h
  39256.  
  39257. Format of Named Pipes DosCallNmPipe stack frame:
  39258. Offset    Size    Description    (Table 0834)
  39259.  00h    DWORD    timeout
  39260.  04h    DWORD    -> bytes read WORD (not used!!)
  39261.  08h    WORD    out buffer length
  39262.  0Ah    DWORD    address of out buffer
  39263.  0Eh    WORD    in buffer length
  39264.  10h    DWORD    address of in buffer
  39265.  14h    DWORD    address of pipe name
  39266. --------N-215F38-----------------------------
  39267. INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
  39268.     AX = 5F38h
  39269.     DS:DX -> pipe name
  39270.     BX:CX = timeout value
  39271. Return: CF clear if successful
  39272.     CF set if error
  39273.         AX = error code
  39274. Notes:    when a client gets a return code of ERROR_PIPE_BUSY on attempting to
  39275.       open a pipe, it should issue this call to wait until the pipe
  39276.       instance becomes available again; on return from this call, the
  39277.       client must attempt to open the pipe once again
  39278.     this function was introduced by LAN Manager but is also supported by
  39279.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39280.       Machines, and others
  39281. SeeAlso: AX=5F37h,AX=5F39h
  39282. --------N-215F39-----------------------------
  39283. INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
  39284.     AX = 5F39h
  39285.     BX = handle
  39286.     CX = buffer length
  39287.     DS:DX -> buffer
  39288. Return: CF clear if successful
  39289.         CX = bytes read
  39290.     CF set if error
  39291.         AX = error code
  39292. Notes:    this function was introduced by LAN Manager but is also supported by
  39293.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39294.       Machines, and others
  39295.     not documented in the LAN Manager Toolkit
  39296. SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
  39297. --------N-215F3A-----------------------------
  39298. INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
  39299.     AX = 5F3Ah
  39300.     BX = handle
  39301.     CX = buffer length
  39302.     DS:DX -> buffer
  39303. Return: CF clear if successful
  39304.         CX = bytes written
  39305.     CF set if error
  39306.         AX = error code
  39307. Notes:    this function was introduced by LAN Manager but is also supported by
  39308.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  39309.       Machines, and others
  39310.     not documented in the LAN Manager Toolkit
  39311. SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
  39312. --------N-215F3B-----------------------------
  39313. INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
  39314.     AX = 5F3Bh
  39315.     BX = handle
  39316.     CX = handle_info_1 structure length or sizeof DWORD
  39317.     DI = parameter number to set
  39318.         0000h all
  39319.         0001h number of milliseconds
  39320.         0002h number of characters
  39321.     DS:DX -> handle_info_1 structure (DI=0000h) (see #0835)
  39322.         or DWORD (DI=0001h or 0002h)
  39323.     SI = level of information (0001h)
  39324. Return: CF clear if successful
  39325.         CX = total bytes available
  39326.     CF set if error
  39327.         AX = error code
  39328. SeeAlso: AX=5F3Ch
  39329.  
  39330. Format of LAN Manager handle_info_1 structure:
  39331. Offset    Size    Description    (Table 0835)
  39332.  00h    DWORD    number of milliseconds which workstation collects data before
  39333.           it sends the data to the named pipe
  39334.  04h    DWORD    number of characters which workstation collects before it
  39335.           sends the data to the named pipe
  39336. --------N-215F3C-----------------------------
  39337. INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
  39338.     AX = 5F3Ch
  39339.     BX = handle
  39340.     CX = length of handle_info_1 structure
  39341.     DS:DX -> handle_info_1 structure (see #0835)
  39342.     SI = level of information (must be 0001h)
  39343. Return: CF clear if successful
  39344.         CX = total bytes available
  39345.     CF set if error
  39346.         AX = error code
  39347. SeeAlso: AX=5F3Bh
  39348. --------N-215F3D-----------------------------
  39349. INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
  39350.     AX = 5F3Dh
  39351.     ???
  39352. Return: ???
  39353. --------N-215F3E-----------------------------
  39354. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
  39355.     AX = 5F3Eh
  39356.     ???
  39357. Return: ???
  39358. Note:    This function is not documented anywhere in the LAN Manager 2.x Toolkit
  39359.       but was documented in LAN Manager 1.x manuals.
  39360. --------N-215F3F-----------------------------
  39361. INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
  39362.     AX = 5F3Fh
  39363.     CX = api number
  39364.     ES:DI -> data descriptor
  39365.     ES:SI -> parameter descriptor
  39366.     ES:DX -> auxiliary descriptor (if DX <> 0)
  39367.     ???
  39368. Return: ???
  39369. --------N-215F40-----------------------------
  39370. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
  39371.     AX = 5F40h
  39372.     DS:DX -> NetMessageBufferSend parameter structure (see #0836)
  39373. Return: AX = error code
  39374.  
  39375. Format of LAN Manager NetMessageBufferSend parameter structure:
  39376. Offset    Size    Description    (Table 0836)
  39377.  00h    DWORD    -> recipient name (name for specific user, name* for domain
  39378.               wide name, * for broadcast)
  39379.  04h    DWORD    -> buffer
  39380.  08h    WORD    length of buffer
  39381. --------N-215F41-----------------------------
  39382. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
  39383.     AX = 5F41h
  39384.     BL = level of detail (0000h, 0001h or 0002h)
  39385.     CX = buffer length
  39386.     ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
  39387.         (see #0837,#0838,#0839)
  39388. Return: CF clear if successful
  39389.         CX = entries read
  39390.         DX = total available
  39391.     CF set on error
  39392.         AX = error code
  39393.  
  39394. Format of LAN Manager service_info_0 structure:
  39395. Offset    Size    Description    (Table 0837)
  39396.  00h 16 BYTEs    name
  39397. SeeAlso: #0838,#0839
  39398.  
  39399. Format of service_info_1 structure:
  39400. Offset    Size    Description    (Table 0838)
  39401.  00h 16 BYTEs    name
  39402.  10h    WORD    status bitmask (see #0840)
  39403.  12h    DWORD    status code (see #0841)
  39404.         (also see Microsoft LAN Manager Programmer's Reference)
  39405.  16h    WORD    process id
  39406. SeeAlso: #0837,#0839
  39407.  
  39408. Format of service_info_2 structure:
  39409. Offset    Size    Description    (Table 0839)
  39410.  00h 16 BYTEs    name
  39411.  10h    WORD    status bitmask (see #0840)
  39412.  12h    DWORD    status code (see #0841)
  39413.  16h    WORD    process id
  39414.  18h 64 BYTEs    text
  39415. SeeAlso: #0837,#0838
  39416.  
  39417. Bitfields for LAN Manager status bitmask:
  39418. Bit(s)    Description    (Table 0840)
  39419.  0,1    00 uninstall
  39420.         01 install pending
  39421.         10 uninstall pending
  39422.         11 installed
  39423.  2,3    00 active
  39424.         01 Continue pending
  39425.         10 Pause pending
  39426.         11 paused
  39427.  4    uninstallable
  39428.  5    pausable
  39429.  8    disk redirector paused
  39430.  9    spooled device redirector paused (printing)
  39431.  10    communication device redirector paused
  39432.  
  39433. (Table 0841)
  39434. Values for LAN Manager status code:
  39435.  high word
  39436.     3051 Bad parameter value
  39437.     3052 A parameter is missing
  39438.     3053 An unknown parameter was specified
  39439.     3054 The resource is insufficient
  39440.     3055 Configuration is faulty
  39441.     3056 An MS-DOS or MS OS/2 error occured
  39442.     3057 An internal error occured
  39443.     3058 An ambiguous parameter name was given
  39444.     3059 A duplicate parameter exists
  39445.     3060 The service was terminated by NetSeviceControl when it did not respond
  39446.     3061 The service program file could not be executed
  39447.     3062 The subservice failed to start
  39448.     3063 There is a conflict in the value or use of these parameters
  39449.     3064 There is a problem with the file
  39450.  low word
  39451.     3070 There is insufficient memory
  39452.     3071 There is insufficeient disk space
  39453.     3072 Unable to create thread
  39454.     3073 Unable to create process
  39455.     3074 A security failure occured
  39456.     3075 There is bad or missing default path
  39457.     3076 Network software is not installed
  39458.     3077 Server software is not installed
  39459.     3078 The server could not access the UAS database
  39460.     3079 The action requires user-level security
  39461.     3080 The log directory is invalid
  39462.     3081 The LAN group specificed could not be used
  39463.     3082 The computername is being used as a message alias on another computer
  39464.     3083 The workstation failed to announce the servername
  39465.     3084 The user accounts system is not configured properly
  39466. --------N-215F42-----------------------------
  39467. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
  39468.     AX = 5F42h
  39469.     DH = opcode
  39470.         00h interrogate status
  39471.         01h pause
  39472.         02h continue
  39473.         03h uninstall
  39474.     DL = argument
  39475.         01h disk resource
  39476.         02h print resource
  39477.         04h communications resource (not implemented for DOS)
  39478.     ES:BX -> NetServiceControl parameter structure (see #0842)
  39479. Return: CF clear if successful
  39480.     CF set on error
  39481.         AX = error code
  39482.  
  39483. Format of LAN Manager NetServiceControl parameter structure:
  39484. Offset    Size    Description    (Table 0842)
  39485.  00h    DWORD    -> service name
  39486.  04h    WORD    result buffer size
  39487.  06h    DWORD    -> result buffer as service_info_2 structure
  39488. --------N-215F43-----------------------------
  39489. INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
  39490.     AX = 5F43h
  39491.     BX = handle of remote print job
  39492.     CX = size of PRIDINFO struture
  39493.     ES:DI -> PRIDINFO structure (see #0843)
  39494. Return: CF clear if successful
  39495.         PRIDINFO filled in
  39496.     CF set on error
  39497.         AX = error code
  39498.  
  39499. Format of LAN Manager PRIDINFO structure:
  39500. Offset    Size    Description    (Table 0843)
  39501.  00h    WORD    job id
  39502.  02h 16 BYTEs    server name
  39503.  12h 13 BYTEs    queue name
  39504.  1Fh  1 BYTE    pad
  39505. --------N-215F44-----------------------------
  39506. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
  39507.     AX = 5F44h
  39508.     BX = information level (00h, 01h, or 0Ah)
  39509.     CX = buffer size
  39510.     ES:DI -> buffer in which to store info
  39511. Return: AX = error code
  39512.     DX = amount of buffer used (or required)
  39513. SeeAlso: AX=5F45h,AX=5F49h
  39514. --------N-215F45-----------------------------
  39515. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
  39516.     AX = 5F45h
  39517.     BX = level (0000h or 0001h)
  39518.     CX = buffer size
  39519.     DX = parameter to set
  39520.     ES:DI -> buffer
  39521. Return: CF clear if successful
  39522.     CF set if error
  39523.         AX = error code
  39524. SeeAlso: AX=5F44h
  39525. --------N-215F46-----------------------------
  39526. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
  39527.     AX = 5F46h
  39528.     BX = level (0000h or 0001h)
  39529.     CX = size of buffer
  39530.     ES:DI -> buffer of use_info_0 or use_info_1 structures
  39531.           (see #0844,#0845)
  39532. Return: CF clear if successful
  39533.         CX = entries read
  39534.         DX = total available entries
  39535.     CF set if error
  39536.         AX = error code
  39537. SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
  39538.  
  39539. Format of LAN Manager use_info_0 structure:
  39540. Offset    Size    Description    (Table 0844)
  39541.  00h  9 BYTEs    local device name
  39542.  09h    BYTE    padding
  39543.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  39544. SeeAlso: #0845
  39545.  
  39546. Format of LAN Manager use_info_1 structure:
  39547. Offset    Size    Description    (Table 0845)
  39548.  00h  9 BYTEs    Local device name
  39549.  09h    BYTE    padding
  39550.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  39551.  0Eh    DWORD    -> password
  39552.  12h    WORD    ignored
  39553.  14h    WORD    use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
  39554.  16h    WORD    ignored
  39555.  18h    WORD    ignored
  39556. SeeAlso: #0844
  39557. --------N-215F47-----------------------------
  39558. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
  39559.     AX = 5F47h
  39560.     BX = level (0001h)
  39561.     CX = size of use_info_1 structure
  39562.     ES:DI -> use_info_1 structure (see #0845)
  39563. Return: CF clear on success
  39564.     CF set on error
  39565.         AX = error code
  39566. SeeAlso: AX=5F46h,AX=5F48h
  39567. --------N-215F48-----------------------------
  39568. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
  39569.     AX = 5F48h
  39570.     BX = force level
  39571.         0000h no force
  39572.         0001h force
  39573.         0002h lots of force
  39574.     ES:DI -> buffer as either the local device name or UNC remote name
  39575. Return: CF clear on success
  39576.     CF set on error
  39577.         AX = error code
  39578. SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
  39579. --------N-215F49-----------------------------
  39580. INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
  39581.     AX = 5F49h
  39582.     DS:DX -> NetUseGetInfo parameter structure
  39583. Return: CF clear on success
  39584.         DX = total available
  39585.     CF set on error
  39586.         AX = error code
  39587. SeeAlso: AX=5F44h,AX=5F47h
  39588.  
  39589. Format of LAN Manager NetUseGetInfo parameter structure:
  39590. Offset    Size    Description    (Table 0846)
  39591.  00h    DWORD    pointer to either the local device name or UNC remote name
  39592.  04h    WORD    level of information (0000h or 0001h)
  39593.  06h    DWORD    pointer to buffer of use_info_0 or use_info_1 structures
  39594.  0Ah    WORD    length of buffer
  39595. --------N-215F4A-----------------------------
  39596. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
  39597.     AX = 5F4Ah
  39598.     DS:DX -> NetRemoteCopy parameter structure (see #0847)
  39599. Return: CF clear if successful
  39600.     CF set on error
  39601.         AX = error code
  39602. SeeAlso: AX=5F4Bh
  39603.  
  39604. Format of LAN Manager NetRemoteCopy parameter structure:
  39605. Offset    Size    Description    (Table 0847)
  39606.  00h    DWORD    -> source name as UNC
  39607.  04h    DWORD    -> destination name as UNC
  39608.  08h    DWORD    -> source password
  39609.  0Ch    DWORD    -> destination password
  39610.  10h    WORD    destination open bitmap
  39611.         if destination path exists
  39612.             0000h open fails
  39613.             0001h file is appended
  39614.             0002h file is overwritten
  39615.         if destination path doesn't exist
  39616.             0000h open fails
  39617.             0010h file is created
  39618.  12h    WORD    copy control bitmap (see #0848)
  39619.  14h    DWORD    -> copy_info buffer
  39620.  18h    WORD    length of copy_info buffer
  39621.  
  39622. Bitfields for LAN Manager copy control:
  39623. Bit(s)    Description    (Table 0848)
  39624.  0    destination must be a file
  39625.  1    destination must be a directory
  39626.  2    destination is opened in ascii mode instead of binary
  39627.  3    source is opened in ascii mode instead of binary
  39628.  4    verify all write operations
  39629. --------N-215F4B-----------------------------
  39630. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
  39631.     AX = 5F4Bh
  39632.     DS:DX -> NetRemoteMove parameter structure
  39633. Return: CF clear if successful
  39634.     CF set on error
  39635.         AX = error code
  39636. SeeAlso: AX=5F4Ah
  39637.  
  39638. Format of LAN Manager NetRemoteMove parameter structure:
  39639. Offset    Size    Description    (Table 0849)
  39640.  00h    DWORD    -> source name as UNC
  39641.  04h    DWORD    -> destination name as UNC
  39642.  08h    DWORD    -> source password
  39643.  0Ch    DWORD    -> destination password
  39644.  10h    WORD    destination open bitmap
  39645.         if destination path exists
  39646.             0000h open fails
  39647.             0001h file is appended
  39648.             0002h file is overwritten
  39649.         if destination path doesn't exist
  39650.             0000h open fails
  39651.             0010h file is created
  39652.  12h    WORD    move control bitmap
  39653.             0001h destination must be a file
  39654.             0002h destination must be a directory
  39655.  14h    DWORD    -> move_info buffer
  39656.  18h    WORD    length of move_info buffer
  39657. --------N-215F4C-----------------------------
  39658. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
  39659.     AX = 5F4Ch
  39660.     BX = level (0000h or 0001h)
  39661.     CX = buffer length
  39662.     ES:DI -> buffer in which to store information
  39663. Return: CF clear if successful
  39664.         ES:DI -> server_info_X structures (depending on level)
  39665.           (see #0850,#0851)
  39666.         BX = entries read
  39667.         CX = total entries available
  39668.     CF set on error
  39669.         AX = error code
  39670. Notes:    this function is also supported by the Novell DOS Named Pipe Extender
  39671.     this function has been obseleted by NetServerEnum2
  39672. SeeAlso: AX=5F53h
  39673.  
  39674. Format of LAN Manager server_info_0 structure:
  39675. Offset    Size    Description    (Table 0850)
  39676.  00h 16 BYTEs    name
  39677. SeeAlso: #0851
  39678.  
  39679. Format of LAN Manager server_info_1 structure:
  39680. Offset    Size    Description    (Table 0851)
  39681.  00h 16 BYTEs    name
  39682.  10h    BYTE    major version in lower nibble
  39683.  11h    BYTE    minor version
  39684.  12h    DWORD    server type bitmask (see #0852)
  39685.  16h    DWORD    -> comment string
  39686. SeeAlso: #0850
  39687.  
  39688. Bitfields for LAN Manager server type:
  39689. Bit(s)    Description    (Table 0852)
  39690.  0    workstation
  39691.  1    server
  39692.  2    SQL server
  39693.  3    primary domain controller
  39694.  4    backup domain controller
  39695.  5    time server
  39696.  6    Apple File Protocol (AFP) server
  39697.  7    Novell server
  39698.  8    Domain Member (v2.1+)
  39699.  9    Print Queue server (v2.1+)
  39700.  10    Dialin server (v2.1+)
  39701.  11    Unix server (v2.1+)
  39702. --------N-215F4D-----------------------------
  39703. INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
  39704.     AX = 5F4Dh
  39705.     BX = message size
  39706.     CX = mailslot size (must be bigger than message size by at least 1)
  39707.                (minimum 1000h, maximum FFF6h)
  39708.                (buffer must be 9 bytes bigger than this)
  39709.     DS:SI -> name
  39710.     ES:DI -> memory buffer
  39711. Return: CF clear if successful
  39712.         AX = handle
  39713.     CF set on error
  39714.         AX = error code
  39715. SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
  39716. --------N-215F4E-----------------------------
  39717. INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
  39718.     AX = 5F4Eh
  39719.     BX = handle
  39720. Return: CF clear if successful
  39721.         ES:DI -> memory to be freed (allocated during DosMakeMailslot)
  39722.     CF set on error
  39723.         AX = error code
  39724. SeeAlso: AX=5F4Dh,AX=5F4Fh
  39725. --------N-215F4F-----------------------------
  39726. INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
  39727.     AX = 5F4Fh
  39728.     BX = handle
  39729. Return: CF clear if successful
  39730.         AX = max message size
  39731.         BX = mailslot size
  39732.         CX = next message size
  39733.         DX = next message priority
  39734.         SI = number of messages waiting
  39735.     CF set on error
  39736.         AX = error code
  39737. SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
  39738. --------N-215F50-----------------------------
  39739. INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
  39740.     AX = 5F50h
  39741.     BX = handle
  39742.     DX:CX = timeout
  39743.     ES:DI -> buffer
  39744. Return: CF clear if successful
  39745.         AX = bytes read
  39746.         CX = next item's size
  39747.         DX = next item's priority
  39748.     CF set on error
  39749.         AX = error code
  39750. SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
  39751. --------N-215F51-----------------------------
  39752. INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
  39753.     AX = 5F51h
  39754.     BX = handle
  39755.     ES:DI -> buffer
  39756. Return: CF clear if successful
  39757.         AX = bytes read
  39758.         CX = next item's size
  39759.         DX = next item's priority
  39760.     CF set on error
  39761.         AX = error code
  39762. SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
  39763. --------N-215F52-----------------------------
  39764. INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
  39765.     AX = 5F52h
  39766.     BX = class
  39767.     CX = length of buffer
  39768.     DX = priority
  39769.     ES:DI -> DosWriteMailslot parameter structure (see #0853)
  39770.     DS:SI -> mailslot name
  39771. Return: CF clear if successful
  39772.     CF set on error
  39773.         AX = error code
  39774. SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
  39775.  
  39776. Format of LAN Manager DosWriteMailslot parameter structure:
  39777. Offset    Size    Description    (Table 0853)
  39778.  00h    DWORD    timeout
  39779.  04h    DWORD    -> buffer
  39780. --------N-215F53-----------------------------
  39781. INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
  39782.     AX = 5F53h
  39783.     DS:SI -> NetServerEnum2 parameter structure (see #0854)
  39784. Return: CF clear if successful
  39785.         BX = entries read
  39786.         CX = total entries available
  39787.     CF set on error
  39788.         AX = error code
  39789. SeeAlso: AX=5F4Ch
  39790.  
  39791. Format of LAN Manager NetServerEnum2 parameter structure:
  39792. Offset    Size    Description    (Table 0854)
  39793.  00h    WORD    level (0000h or 0001h)
  39794.  02h    DWORD    -> buffer as array of server_info_??? structures
  39795.  06h    WORD    length of buffer
  39796.  08h    DWORD    server type bitmask (see #0855)
  39797.  0Ch    DWORD    -> Domain name (may be 0000h:0000h for all local domains)
  39798.  
  39799. Bitfields for LAN Manager server type:
  39800. Bit(s)    Description    (Table 0855)
  39801.  0    workstation
  39802.  1    server
  39803.  2    SQL server
  39804.  3    primary domain controller
  39805.  4    backup domain controller
  39806.  5    time server
  39807.  6    Apple File Protocol (AFP) server
  39808.  7    Novell server
  39809.  8    Domain Member (v2.1+)
  39810.  9    Print Queue server (v2.1+)
  39811.  10    Dialin server (v2.1+)
  39812.  11    Unix server (v2.1+)
  39813. Note:    set all (FFFFFFFFh) for All Types
  39814.  
  39815. Format of LAN Manager server_info_0 structure:
  39816. Offset    Size    Description    (Table 0856)
  39817.  00h 16 BYTEs    name
  39818.  
  39819. Format of LAN Manager server_info_1 structure:
  39820. Offset    Size    Description    (Table 0857)
  39821.  00h 16 BYTEs    name
  39822.  10h    BYTE    major version in lower nibble
  39823.  11h    BYTE    minor version
  39824.  12h    DWORD    server type (bits 0-11) (see #0855)
  39825.  16h    DWORD    -> comment string
  39826. --------N-215F55----------------------------
  39827. INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
  39828.     AX = 5F55h
  39829.     BX = ???
  39830. Return: CF clear if successful
  39831.     CF set on error
  39832.         AX = error code
  39833. --------N-215F80-----------------------------
  39834. INT 21 - LANtastic - GET LOGIN ENTRY
  39835.     AX = 5F80h
  39836.     BX = login entry index (0-based)
  39837.     ES:DI -> 16-byte buffer for machine name
  39838. Return: CF clear if successful
  39839.         buffer filled with machine name ("\\" prefix removed)
  39840.         DL = adapter number (v3+)
  39841.     CF set on error
  39842.         AX = error code
  39843. Note:    the login entry index corresponds to the value BX used in AX=5F83h
  39844. SeeAlso: AX=5F83h
  39845. --------N-215F81-----------------------------
  39846. INT 21 - LANtastic - LOGIN TO SERVER
  39847.     AX = 5F81h
  39848.     ES:DI -> ASCIZ login path followed immediately by ASCIZ password
  39849.     BL = adapter number
  39850.         FFh try all valid adapters
  39851.         00h-07h try only specified adapter
  39852. Return: CF clear if successful
  39853.     CF set on error
  39854.         AX = error code
  39855. Notes:    login path is of form "\\machine\username"
  39856.     if no password is used, the string at ES:DI must be terminated with
  39857.       three NULs for compatibility with LANtastic v3.0.
  39858. SeeAlso: AX=5F82h,AX=5F84h
  39859. --------N-215F82-----------------------------
  39860. INT 21 - LANtastic - LOGOUT FROM SERVER
  39861.     AX = 5F82h
  39862.     ES:DI -> ASCIZ server name (in form "\\machine")
  39863. Return: CF clear if successful
  39864.     CF set on error
  39865.         AX = error code
  39866. SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
  39867. --------N-215F83-----------------------------
  39868. INT 21 - LANtastic - GET USERNAME ENTRY
  39869.     AX = 5F83h
  39870.     BX = login entry index (0-based)
  39871.     ES:DI -> 16-byte buffer for username currently logged into
  39872. Return: CF clear if successful
  39873.         DL = adapter number (v3+)
  39874.     CF set on error
  39875.         AX = error code
  39876. Note:    the login entry index corresponds to the value BX used in AX=5F80h
  39877. SeeAlso: AX=5F80h
  39878. --------N-215F84-----------------------------
  39879. INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
  39880.     AX = 5F84h
  39881.     BX = server index not currently logged into
  39882.     ES:DI -> 16-byte buffer for server name which is available for logging
  39883.         in to ("\\" prefix omitted)
  39884. Return: CF clear if successful
  39885.         DL = adapter number to non-logged in server is on
  39886.     CF set on error
  39887.         AX = error code
  39888. SeeAlso: AX=5F81h
  39889. --------N-215F85-----------------------------
  39890. INT 21 - LANtastic - CHANGE PASSWORD
  39891.     AX = 5F85h
  39892.     ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
  39893. Return: CF clear if successful
  39894.     CF set on error
  39895.         AX = error code
  39896. Notes:    must be logged into the named machine
  39897.     this function is illegal for group accounts
  39898. --------N-215F86-----------------------------
  39899. INT 21 - LANtastic - DISABLE ACCOUNT
  39900.     AX = 5F86h
  39901.     ES:DI -> ASCIZ machine name and password in form "\\machine\password"
  39902. Return: CF clear if successful
  39903.     CF set on error
  39904.         AX = error code
  39905. Note:    must be logged into the named machine and concurrent logins set to 1
  39906.       by NET_MGR.  Requires system manager to re-enable account.
  39907. --------N-215F87-----------------------------
  39908. INT 21 - LANtastic v3+ - GET ACCOUNT
  39909.     AX = 5F87h
  39910.     DS:SI -> 128-byte buffer for account information (see #0858)
  39911.     ES:DI -> ASCIZ machine name in form "\\machine"
  39912. Return: CF clear if successful
  39913.     CF set on error
  39914.         AX = error code
  39915.     BX destroyed
  39916. Note:    must be logged into the specified machine
  39917.  
  39918. Format of LANtastic user account structure:
  39919. Offset    Size    Description    (Table 0858)
  39920.  00h 16 BYTEs    blank-padded username (zero-padded for v4.x)
  39921.  10h 16 BYTEs    reserved (00h)
  39922.  20h 32 BYTEs    user description
  39923.  40h    BYTE    privilege bits (see #0859)
  39924.  41h    BYTE    maximum concurrent users
  39925.  42h 42 BYTEs    bit map for disallowed half hours, beginning on Sunday
  39926.         (bit set if half-hour not an allowed time)
  39927.  6Ch    WORD    internal (0002h)
  39928.  6Eh  2 WORDs    last login time
  39929.  72h  2 WORDs    account expiration date (MS-DOS-format year/month:day)
  39930.  76h  2 WORDs    password expiration date (0 = none)
  39931.  7Ah    BYTE    number of days to extend password after change (1-31)
  39932.         00h if no extension required
  39933. ---v3.x---
  39934.  7Bh  5 BYTEs    reserved
  39935. ---v4.x---
  39936.  7Bh    BYTE    storage for first letter of user name when deleted (first
  39937.           character is changed to 00h when deleting account)
  39938.  7Ch    BYTE    extended privileges
  39939.  7Dh  3 BYTEs    reserved
  39940.  
  39941. Bitfields for LANtastic privilege bits:
  39942. Bit(s)    Description    (Table 0859)
  39943.  7    bypass access control lists
  39944.  6    bypass queue protection
  39945.  5    treat as local process
  39946.  4    bypass mail protection
  39947.  3    allow audit entry creation
  39948.  2    system manager
  39949.  0    user cannot change password
  39950. --------N-215F88-----------------------------
  39951. INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
  39952.     AX = 5F88h
  39953. Return: CF clear if successful
  39954.     CF set on error
  39955.         AX = error code
  39956. SeeAlso: AX=5F82h
  39957. --------N-215F97-----------------------------
  39958. INT 21 - LANtastic - COPY FILE
  39959.     AX = 5F97h
  39960.     CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
  39961.     SI = source file handle
  39962.     DI = destination file handle
  39963. Return: CF clear if successful
  39964.         DX:AX = number of bytes copied
  39965.     CF set on error
  39966.         AX = error code
  39967. Note:    copy is performed by server
  39968. --------N-215F98-----------------------------
  39969. INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
  39970.     AX = 5F98h
  39971.     DS:SI -> message buffer (see #0860)
  39972. Return: CF clear if successful
  39973.     CF set on error
  39974.         AX = error code
  39975. Note:    v4.1- return no errors
  39976. SeeAlso: AX=5F99h
  39977.  
  39978. Format of LANtastic message buffer:
  39979. Offset    Size    Description    (Table 0860)
  39980.  00h    BYTE    reserved
  39981.  01h    BYTE    message type
  39982.         00h general
  39983.         01h server warning
  39984.         02h-7Fh reserved
  39985.         80h-FFh user-defined
  39986.  02h 16 BYTEs    ASCIZ destination machine name
  39987.  12h 16 BYTEs    ASCIZ server name which user must be logged into
  39988.  22h 16 BYTEs    ASCIZ user name
  39989.  32h 16 BYTEs    ASCIZ originating machine name (filled in when received)
  39990.  42h 80 BYTEs    message text
  39991. --------N-215F99-----------------------------
  39992. INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
  39993.     AX = 5F99h
  39994.     ES:DI -> messsage buffer (see #0860)
  39995. Return: CF clear if successful
  39996.     CF set on error
  39997.         AX = error code
  39998. SeeAlso: AX=5F98h
  39999. --------N-215F9A-----------------------------
  40000. INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
  40001.     AX = 5F9Ah
  40002. Return: CF clear if successful
  40003.         DL = bits describing processing of received messages (see #0861)
  40004.     CF set on error
  40005.         AX = error code
  40006. SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
  40007.  
  40008. Bitfields for unsolicited message processing flags:
  40009. Bit(s)    Description    (Table 0861)
  40010.  0    beep before message is delivered
  40011.  1    deliver message to message service
  40012.  2    pop up message automatically (v3+)
  40013. --------N-215F9B-----------------------------
  40014. INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
  40015.     AX = 5F9Bh
  40016.     DL = bits describing processing for received unsolicited messages
  40017.          (see #0861)
  40018. Return: CF clear if successful
  40019.     CF set on error
  40020.         AX = error code
  40021. SeeAlso: AX=5F9Ah,AX=5F9Eh
  40022. --------N-215F9C-----------------------------
  40023. INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
  40024.     AX = 5F9Ch
  40025.     CX = time to leave on screen in clock ticks
  40026.     DH = 0-based screen line on which to place message
  40027. Return: CF clear if successful
  40028.     CF set on error
  40029.         AX = error code (0Bh)
  40030. Notes:    the original screen contents are restored when the message is removed
  40031.     the message will not appear, and an error will be returned, if the
  40032.       screen is in a graphics mode
  40033. SeeAlso: AX=5F9Ah
  40034. --------N-215F9D-----------------------------
  40035. INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
  40036.     AX = 5F9Dh
  40037. Return: DL = redirector control bits
  40038.         bit 7: set to notify on print job completion
  40039. SeeAlso: AX=5F9Ah,AX=5F9Eh
  40040. --------N-215F9E-----------------------------
  40041. INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
  40042.     AX = 5F9Eh
  40043.     DL = redirector control bits (see AX=5F9Dh)
  40044. Return: nothing
  40045. SeeAlso: AX=5F9Bh,AX=5F9Dh
  40046. --------N-215FA0-----------------------------
  40047. INT 21 - LANtastic - GET QUEUE ENTRY
  40048.     AX = 5FA0h
  40049.     BX = queue entry index (0000h is first entry)
  40050.     DS:SI -> buffer for queue entry (see #0864)
  40051.     ES:DI -> ASCIZ server name in form "\\name"
  40052. Return: CF clear if successful
  40053.     CF set on error
  40054.         AX = error code
  40055.     BX = entry index for next queue entry (BX-1 is current index)
  40056. SeeAlso: AX=5FA1h,AX=5FA2h
  40057.  
  40058. (Table 0862)
  40059. Values for status of LANtastic queue entry:
  40060.  00h    empty
  40061.  01h    being updated
  40062.  02h    being held
  40063.  03h    waiting for despool
  40064.  04h    being despooled
  40065.  05h    canceled
  40066.  06h    spooled file could not be accessed
  40067.  07h    destination could not be accessed
  40068.  08h    rush job
  40069.  
  40070. (Table 0863)
  40071. Values for type of LANtastic queue entry:
  40072.  00h    printer queue file
  40073.  01h    message
  40074.  02h    local file
  40075.  03h    remote file
  40076.  04h    to remote modem
  40077.  05h    batch processor file
  40078.  
  40079. Format of LANtastic queue entry:
  40080. Offset    Size    Description    (Table 0864)
  40081.  00h    BYTE    status of entry (see #0862)
  40082.  01h    DWORD    size of spooled file
  40083.  05h    BYTE    type of entry (see #0863)
  40084.  06h    BYTE    output control (see #0865)
  40085.  07h    WORD    number of copies
  40086.  09h    DWORD    sequence number of queue entry
  40087.  0Dh 48 BYTEs    pathname of spooled file
  40088.  3Dh 16 BYTEs    user who spooled file
  40089.  4Dh 16 BYTEs    name of machine from which file was spooled
  40090.  5Dh    WORD    date file was spooled (see #0803 at AX=5700h)
  40091.  5Fh    WORD    time file was spooled (see #0802 at AX=5700h)
  40092.  61h 17 BYTEs    ASCIZ destination device or user name
  40093.  72h 48 BYTEs    comment field
  40094.  
  40095. Bitfields for output control:
  40096. Bit(s)    Description    (Table 0865)
  40097.  6    don't delete (for mail)
  40098.  5    mail file contains voice mail (v3+)
  40099.  4    mail message has been read
  40100.  3    response has been requested for this mail
  40101. --------N-215FA1-----------------------------
  40102. INT 21 - LANtastic - SET QUEUE ENTRY
  40103.     AX = 5FA1h
  40104.     BX = handle of opened queue entry
  40105.     DS:SI -> queue entry (see #0864)
  40106. Return: CF clear if successful
  40107.     CF set on error
  40108.         AX = error code
  40109. Notes:    the only queue entry fields which may be changed are output control,
  40110.       number of copies, destination device, and comment
  40111.     the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
  40112.       call on the file "\\server\\@MAIL" or "\\server\@name" (for
  40113.       printer queue entries)
  40114. SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
  40115. --------N-215FA2-----------------------------
  40116. INT 21 - LANtastic - CONTROL QUEUE
  40117.     AX = 5FA2h
  40118.     BL = control command
  40119.         00h start despooling (privileged)
  40120.         01h halt despooling (privileged)
  40121.         02h halt despooling at end of job (privileged)
  40122.         03h pause despooler at end of job (privileged)
  40123.         04h print single job (privileged)
  40124.         05h restart current job (privileged)
  40125.         06h cancel the current job
  40126.         07h hold queue entry
  40127.         08h release a held queue entry
  40128.         09h make queue entry a rushed job (privileged)
  40129.     CX:DX = sequence number to control (commands 06h-09h)
  40130.     DX = physical printer number (commands 00h-05h)
  40131.         00h-02h LPT1-LPT3
  40132.         03h,04h COM1,COM2
  40133.         other    all printers
  40134.     ES:DI -> ASCIZ server name in form "\\machine"
  40135. Return: CF clear if successful
  40136.     CF set on error
  40137.         AX = error code
  40138. --------N-215FA3-----------------------------
  40139. INT 21 - LANtastic v3+ - GET PRINTER STATUS
  40140.     AX = 5FA3h
  40141.     BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
  40142.     DS:SI -> buffer for printer status (see #0866)
  40143.     ES:DI -> ASCIZ server name in form "\\machine"
  40144. Return: CF clear if successful
  40145.     CF set on error
  40146.         AX = error code
  40147.     BX = next physical printer number
  40148. Note:    you must be logged in to the specified server
  40149.  
  40150. Format of LANtastic printer status:
  40151. Offset    Size    Description    (Table 0866)
  40152.  00h    BYTE    printer state (see #0867)
  40153.  01h    WORD    queue index of print job being despooled
  40154.         FFFFh if not despooling--ignore all following fields
  40155.  03h    WORD    actual characters per second being output
  40156.  05h    DWORD    number of characters actually output so far
  40157.  09h    DWORD    number of bytes read from spooled file so far
  40158.  0Dh    WORD    copies remaining to print
  40159.  
  40160. Bitfields for LANtastic printer state:
  40161. Bit(s)    Description    (Table 0867)
  40162.  7    printer paused
  40163.  0-6    0 printer disabled
  40164.     1 will stop at end of job
  40165.     2 print multiple jobs
  40166. --------N-215FA4-----------------------------
  40167. INT 21 - LANtastic v3+ - GET STREAM INFO
  40168.     AX = 5FA4h
  40169.     BX = 0-based stream index number
  40170.     DS:SI -> buffer for stream information (see #0868)
  40171.     ES:DI -> ASCIZ machine name in form "\\machine"
  40172. Return: CF clear if successful
  40173.     CF set on error
  40174.         AX = error code
  40175.     BX = next stream number
  40176. SeeAlso: AX=5FA5h
  40177.  
  40178. Format of LANtastic stream information:
  40179. Offset    Size    Description    (Table 0868)
  40180.  00h    BYTE    queueing of jobs for logical printer (0=disabled,other=enabled)
  40181.  01h 11 BYTEs    logical printer resource template (may contain ? wildcards)
  40182. --------N-215FA5-----------------------------
  40183. INT 21 - LANtastic v3+ - SET STREAM INFO
  40184.     AX = 5FA5h
  40185.     BX = 0-based stream index number
  40186.     DS:SI -> buffer containing stream information (see #0868)
  40187.     ES:DI -> ASCIZ machine name in form "\\machine"
  40188. Return: CF clear if successful
  40189.     CF set on error
  40190.         AX = error code
  40191. SeeAlso: AX=5FA4h
  40192. --------N-215FA7-----------------------------
  40193. INT 21 - LANtastic - CREATE USER AUDIT ENTRY
  40194.     AX = 5FA7h
  40195.     DS:DX -> ASCIZ reason code (max 8 bytes)
  40196.     DS:SI -> ASCIZ variable reason string (max 128 bytes)
  40197.     ES:DI -> ASCIZ machine name in form "\\machine"
  40198. Return: CF clear if successful
  40199.     CF set on error
  40200.         AX = error code
  40201. Note:    you must be logged in to the specified server and have the "U"
  40202.       privilege to execute this call
  40203. --------N-215FA9-----------------------------
  40204. INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
  40205.     AX = 5FA9h
  40206.     BX = handle of opened queue entry
  40207.     DS:SI -> queue entry (see #0864)
  40208. Return: CF clear if successful
  40209.     CF set on error
  40210.         AX = error code
  40211. Note:    functions exactly the same as AX=5FA1h except the spooled filename is
  40212.       also set.  This call supports direct despooling.
  40213. SeeAlso: AX=5FA1h
  40214. --------N-215FB0-----------------------------
  40215. INT 21 - LANtastic - GET ACTIVE USER INFORMATION
  40216.     AX = 5FB0h
  40217.     BX = server login entry index
  40218.     DS:SI -> buffer for active user entry (see #0869)
  40219.     ES:DI -> ASCIZ machine name in form "\\server"
  40220. Return: CF clear if successful
  40221.     CF set on error
  40222.         AX = error code
  40223.     BX = next login index
  40224. SeeAlso: AX=5FB2h
  40225.  
  40226. Format of LANtastic active user entry:
  40227. Offset    Size    Description    (Table 0869)
  40228.  00h    WORD    virtual circuit number
  40229.  02h    BYTE    login state (see #0870)
  40230.  03h    BYTE    last command issued (see #0871)
  40231.  04h  5 BYTEs    number of I/O bytes (40-bit unsigned number)
  40232.  09h  3 BYTEs    number of server requests (24-bit unsigned)
  40233.  0Ch 16 BYTEs    name of user who is logged in
  40234.  1Ch 16 BYTEs    name of remote logged in machine
  40235.  2Ch    BYTE    extended privileges (v4+???)
  40236.         bit 0: user cannot change his password
  40237.  2Dh    WORD    time left in minutes (0000h = unlimited) (v4+???)
  40238.  
  40239. Bitfields for login state:
  40240. Bit(s)    Description    (Table 0870)
  40241.  0    fully logged in
  40242.  1    remote program load login
  40243.  2    user has system manager privileges
  40244.  3    user can create audit entries
  40245.  4    bypass mail protection
  40246.  5    treat as local process
  40247.  6    bypass queue protection
  40248.  7    bypass access control lists
  40249.  
  40250. (Table 0871)
  40251. Values for last LANtastic command:
  40252.  00h    login
  40253.  01h    process termination
  40254.  02h    open file
  40255.  03h    close file
  40256.  04h    create file
  40257.  05h    create new file
  40258.  06h    create unique file
  40259.  07h    commit data to disk
  40260.  08h    read file
  40261.  09h    write file
  40262.  0Ah    delete file
  40263.  0Bh    set file attributes
  40264.  0Ch    lock byte range
  40265.  0Dh    unlock byte range
  40266.  0Eh    create subdirectory
  40267.  0Fh    remove subdirectory
  40268.  10h    rename file
  40269.  11h    find first matching file
  40270.  12h    find next matching file
  40271.  13h    get disk free space
  40272.  14h    get a queue entry
  40273.  15h    set a queue entry
  40274.  16h    control the queue
  40275.  17h    return login information
  40276.  18h    return link description
  40277.  19h    seek on file
  40278.  1Ah    get server's time
  40279.  1Bh    create audit entry
  40280.  1Ch    open file in multitude of modes
  40281.  1Dh    change password
  40282.  1Eh    disable account
  40283.  1Fh    local server file copy
  40284. ---v3+---
  40285.  20h    get username from account file
  40286.  21h    translate server's logical path
  40287.  22h    make indirect file
  40288.  23h    get indirect file contents
  40289.  24h    get physical printer status
  40290.  25h    get logical print stream info
  40291.  26h    set logical print stream info
  40292.  27h    get user's account record
  40293. ---v4+---
  40294.  28h    request server shutdown
  40295.  29h    cancel server shutdown
  40296.  2Ah    stuff server's keyboard
  40297.  2Bh    write then commit data to disk
  40298.  2Ch    set extended queue entry
  40299.  2Dh    terminate user from server
  40300.  2Eh    enable/disable logins
  40301.  2Fh    flush server caches
  40302.  30h    change username
  40303.  31h    get extended queue entry
  40304.     (same as get queue, but can return named fields blanked)
  40305. --------N-215FB1-----------------------------
  40306. INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
  40307.     AX = 5FB1h
  40308.     DS:SI -> 64-byte buffer for link description
  40309.     ES:DI -> ASCIZ machine and shared directory name in form
  40310.          "\\machine\shared-resource"
  40311. Return: CF clear if successful
  40312.         CX = access control list privileges for requesting user (see #0872)
  40313.     CF set on error
  40314.         AX = error code
  40315.  
  40316. Bitfields for LANtastic access control list:
  40317. Bit(s)    Description    (Table 0872)
  40318.  4    (I) allow expansion of indirect files
  40319.  5    (A) allow attribute changing
  40320.  6    (P) allow physical access to device
  40321.  7    (E) allow program execution
  40322.  8    (N) allow file renaming
  40323.  9    (K) allow directory deletion
  40324.  10    (D) allow file deletion
  40325.  11    (L) allow file/directory lookups
  40326.  12    (M) allow directory creation
  40327.  13    (C) allow file creation
  40328.  14    (W) allow open for write and writing
  40329.  15    (R) allow open for read and reading
  40330. --------N-215FB2-----------------------------
  40331. INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
  40332.     AX = 5FB2h
  40333.     BX = username entry index (0 for first)
  40334.     DS:SI -> 16-byte buffer for username
  40335.     ES:DI -> ASCIZ server name in form "\\machine"
  40336. Return: CF clear if successful
  40337.     CF set on error
  40338.         AX = error code
  40339.     BX = next queue entry index
  40340. SeeAlso: AX=5FB0h
  40341. --------N-215FB3-----------------------------
  40342. INT 21 - LANtastic v3+ - TRANSLATE PATH
  40343.     AX = 5FB3h
  40344.     DS:SI -> 128-byte buffer for ASCIZ result
  40345.     ES:DI -> full ASCIZ path, including server name
  40346.     DX = types of translation to be performed
  40347.         bit 0: expand last component as indirect file
  40348.         bit 1: return actual path relative to server's physical disk
  40349. Return: CF clear if successful
  40350.     CF set on error
  40351.         AX = error code
  40352. Note:    always expands any indirect files along the path
  40353. SeeALso: AX=5FB4h,INT 21/AH=60h
  40354. --------N-215FB4-----------------------------
  40355. INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
  40356.     AX = 5FB4h
  40357.     DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
  40358.     ES:DI -> full ASCIZ path of indirect file to create, incl machine name
  40359. Return: CF clear if successful
  40360.     CF set on error
  40361.         AX = error code
  40362. Note:    the contents of the indirect file may be any valid server-relative path
  40363. SeeAlso: AX=5FB3h,AX=5FB5h
  40364. --------N-215FB5-----------------------------
  40365. INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
  40366.     AX = 5FB5h
  40367.     DS:SI -> 128-byte buffer for ASCIZ indirect file contents
  40368.     ES:DI -> full ASCIZ path of indirect file
  40369. Return: CF clear if successful
  40370.     CF set on error
  40371.         AX = error code
  40372. SeeAlso: AX=5FB4h
  40373. --------N-215FB6-----------------------------
  40374. INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
  40375.     AX = 5FB6h
  40376.     ES:DI -> pointer to ASCIZ default user name, immediately followed by
  40377.         ASCIZ password
  40378.     BL = adapter number to use for default login attempt
  40379.         FFh try all valid adapters
  40380.         00h-05h try adapter 0-5 explicitly
  40381. Return: CF clear if successful
  40382.     CF set on error
  40383.         AX = error code
  40384. Notes:    call with ES:DI -> two nulls to disable auto-login
  40385. SeeAlso: AX=5FB7h
  40386. --------N-215FB7-----------------------------
  40387. INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
  40388.     AX = 5FB7h
  40389.     ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
  40390. Return: CF clear if successful
  40391.         DL = adapter number used for default login attempt
  40392.         FFh all valid adapters will be tried
  40393.         00h-05h specified adapter will be tried explicitly
  40394.     CF set on error
  40395.         AX = error code
  40396. SeeAlso: AX=5F81h,AX=5FB6h
  40397. --------N-215FC0-----------------------------
  40398. INT 21 - LANtastic - GET TIME FROM SERVER
  40399.     AX = 5FC0h
  40400.     DS:SI -> time block (see #0873)
  40401.     ES:DI -> ASCIZ server name to get time from
  40402. Return: CF clear if successful
  40403.     CF set on error
  40404.         AX = error code
  40405. SeeAlso: AH=E7h
  40406.  
  40407. Format of LANtastic time block:
  40408. Offset    Size    Description    (Table 0873)
  40409.  00h    WORD    year
  40410.  02h    BYTE    day
  40411.  03h    BYTE    month
  40412.  04h    BYTE    minutes
  40413.  05h    BYTE    hour
  40414.  06h    BYTE    hundredths of second
  40415.  07h    BYTE    second
  40416. --------N-215FC8-----------------------------
  40417. INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
  40418.     AX = 5FC8h
  40419.     ES:DI -> ASCIZ server name in form "\\machine"
  40420.     DS:SI -> ASCIZ reason string (80 characters)
  40421.     CX = number of minutes until shutdown (0 = immediate)
  40422.     DX = option flags (see #0874)
  40423. Return: CF clear if successful
  40424.     CF set on error
  40425.         AX = error code
  40426. SeeAlso: AX=5FC9h
  40427.  
  40428. Bitfields for LANtastic option flags:
  40429. Bit(s)    Description    (Table 0874)
  40430.  0    auto reboot
  40431.  1    do not notify users
  40432.  2    halt after shutdown
  40433.  3    shutdown due to power fail (used by UPS)
  40434.  4-7    reserved
  40435.  8-14    user definable
  40436.  15    reserved
  40437. --------N-215FC9-----------------------------
  40438. INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
  40439.     AX = 5FC9h
  40440.     ES:DI -> ASCIZ server name in form "\\machine"
  40441. Return: CF clear if successful
  40442.     CF set on error
  40443.         AX = error code
  40444. Note:    you must have the "S" privilege to use this call
  40445. SeeAlso: AX=5FC8h
  40446. --------N-215FCA-----------------------------
  40447. INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
  40448.     AX = 5FCAh
  40449.     ES:DI -> ASCIZ server name in form "\\machine"
  40450.     DS:SI -> ASCIZ string to stuff (128 bytes)
  40451. Return: CF clear if successful
  40452.     CF set on error
  40453.         AX = error code
  40454. Note:    you must have the "S" privilege to use this call
  40455.     maximum number of characters that can be stuffed is determined by the
  40456.       server's RUN BUFFER SIZE.
  40457. SeeAlso: INT 16/AH=05h
  40458. --------N-215FCB-----------------------------
  40459. INT 21 - LANtastic v4.1+ - TERMINATE USER
  40460.     AX = 5FCBh
  40461.     ES:DI -> ASCIZ server name in form "\\machine"
  40462.     DS:SI -> blank-padded username.     A null char = wildcard.
  40463.     DS:DX -> blank-padded machine name.  A null char = wildcard.
  40464.     CX = minutes until termination (0 = immediate)
  40465. Return: CF clear if successful
  40466.     CF set on error
  40467.         AX = error code
  40468. Note:    you must have the "S" privilege to use this call
  40469.     you cannot log yourself out using this call
  40470. SeeAlso: AX=5F82h
  40471. --------N-215FCC-----------------------------
  40472. INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
  40473.     AX = 5FCCh
  40474.     ES:DI -> ASCIZ server name in form "\\machine"
  40475.     CX = bit values (value of bits you want to set) (see #0875)
  40476.     DX = bit mask (bits you are interested in, 0 = get only) (see #0875)
  40477. Return: CF clear if successful
  40478.         CX = control bits after call (see #0875)
  40479.     CF set on error
  40480.         AX = error code
  40481. Note:    you must have the "S" privilege to SET, anyone can GET.
  40482.  
  40483. Bitfields for control bits:
  40484. Bit(s)    Description    (Table 0875)
  40485.  0    disable logins
  40486. --------N-215FCD-----------------------------
  40487. INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
  40488.     AX = 5FCDh
  40489.     ES:DI -> ASCIZ server name in form "\\machine"
  40490. Return: CF clear if successful
  40491.     CF set on error
  40492.         AX = error code
  40493. Note:    you must have the "S" privilege to use this call.
  40494. --------N-215FD0-----------------------------
  40495. INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
  40496.     AX = 5FD0h
  40497. Return: CF clear if successful
  40498.         CX = redirected printer timeout in clock ticks of 55ms
  40499.         0000h if timeout disabled
  40500.     CF set on error
  40501.         AX = error code
  40502. SeeAlso: AX=5FD1h
  40503. --------N-215FD1-----------------------------
  40504. INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
  40505.     AX = 5FD1h
  40506.     CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
  40507. Return: CF clear if successful
  40508.     CF set on error
  40509.         AX = error code
  40510. SeeAlso: AX=5FD0h
  40511. --------N-215FE0-----------------------------
  40512. INT 21 C - LANtastic - GET DOS SERVICE VECTOR
  40513.     AX = 5FE0h
  40514. Return: CF clear if successful
  40515.         ES:BX -> current FAR service routine
  40516.     CF set on error
  40517.         AX = error code
  40518. Note:    the service routine is called by the LANtastic redirector whenever DOS
  40519.       may safely be called, permitting external TSRs and drivers to hook
  40520.       into LANtastic's DOS busy flag checking
  40521. SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
  40522. --------N-215FE1-----------------------------
  40523. INT 21 - LANtastic - SET DOS SERVICE VECTOR
  40524.     AX = 5FE1h
  40525.     ES:BX -> FAR routine to call when DOS services are available
  40526. Return: CF clear if successful
  40527.     CF set on error
  40528.         AX = error code
  40529. Note:    new handler must chain to previous handler as its first action
  40530. SeeAlso: AX=5FE0h
  40531. --------N-215FE2-----------------------------
  40532. INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
  40533.     AX = 5FE2h
  40534. Return: CF clear if successful
  40535.         ES:BX -> current FAR message service routine
  40536.     CF set on error
  40537.         AX = error code
  40538. SeeAlso: AX=5FE0h,AX=5FE3h
  40539. --------N-215FE3-----------------------------
  40540. INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
  40541.     AX = 5FE3h
  40542.     ES:BX -> FAR routine for processing network messages
  40543. Return: CF clear if successful
  40544.     CF set on error
  40545.         AX = error code
  40546. Notes:    handler must chain to previous handler as its first action
  40547.     on invocation, ES:BX -> just-received message
  40548. SeeAlso: AX=5FE2h
  40549. --------D-2160-------------------------------
  40550. INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
  40551.     AH = 60h
  40552.     DS:SI -> ASCIZ filename or path
  40553.     ES:DI -> 128-byte buffer for canonicalized name
  40554. Return: CF set on error
  40555.         AX = error code
  40556.         02h invalid component in directory path or drive letter only
  40557.         03h malformed path or invalid drive letter
  40558.         ES:DI buffer unchanged
  40559.     CF clear if successful
  40560.         AH = 00h
  40561.         AL = destroyed (00h or 5Ch or last char of current dir on drive)
  40562.         buffer filled with qualified name of form D:\PATH\FILE.EXT or
  40563.           \\MACHINE\PATH\FILE.EXT
  40564. Desc:    determine the canonical name of the specified filename or path,
  40565.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  40566. Notes:    the input path need not actually exist
  40567.     letters are uppercased, forward slashes converted to backslashes,
  40568.       asterisks converted to appropriate number of question marks, and
  40569.       file and directory names are truncated to 8.3 if necessary.  (DR-DOS
  40570.       3.41 and 5.0 do not expand asterisks)
  40571.     '.' and '..' in the path are resolved
  40572.     filespecs on local drives always start with "d:", those on network
  40573.       drives always start with "\\"
  40574.     if path string is on a JOINed drive, the returned name is the one that
  40575.       would be needed if the drive were not JOINed; similarly for a
  40576.       SUBSTed, ASSIGNed, or network drive letter.    Because of this, it is
  40577.       possible to get a qualified name that is not legal under the current
  40578.       combination of SUBSTs, ASSIGNs, JOINs, and network redirections
  40579.     under DOS 3.3 through 6.00, a device name is translated differently if
  40580.       the device name does not have an explicit directory or the directory
  40581.       is \DEV (relative directory DEV from the root directory works
  40582.       correctly).  In these cases, the returned string consists of the
  40583.       unchanged device name and extension appended to the string X:/
  40584.       (forward slash instead of backward slash as in all other cases) where
  40585.       X is the default or explicit drive letter.
  40586.     functions which take pathnames require canonical paths if invoked via
  40587.       INT 21/AX=5D00h
  40588.     supported by OS/2 v1.1 compatibility box
  40589.     NetWare 2.1x does not support characters with the high bit set; early
  40590.       versions of NetWare 386 support such characters except in this call.
  40591.       In addition, NetWare returns error code 3 for the path "X:\"; one
  40592.       should use "X:\." instead.
  40593.     for DOS 3.3-6.0, the input and output buffers may be the same, as the
  40594.       canonicalized name is built in an internal buffer and copied to the
  40595.       specified output buffer as the very last step
  40596.     for DR DOS 6.0, this function is not automatically called when on a
  40597.       network.  Device drivers reportedly cannot make this call from their
  40598.       INIT function.  Using the same pointer for both input and output
  40599.       buffers is not supported in the April 1992 and earlier versions of
  40600.       DR DOS
  40601. SeeAlso: AX=5FB3h,INT 2F/AX=1123h,INT 2F/AX=1221h
  40602. --------D-2161-------------------------------
  40603. INT 21 - DOS 3+ - UNUSED
  40604.     AH = 61h
  40605. Return: AL = 00h
  40606. Note:    this function does nothing and returns immediately
  40607. --------O-2161--BP6467-----------------------
  40608. INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
  40609.     AH = 61h
  40610.     BP = 6467h ("dg")
  40611.     AL = function
  40612.         00h list
  40613.         01h add
  40614.         02h delete
  40615.     BX = drive number
  40616.     CX = size of buffer
  40617.     SI = type (0002h JOIN, 0003h SUBST)
  40618.     ES:DI -> buffer
  40619. Return: ???
  40620. Notes:    used by JOIN and SUBST to communicate with the OS/2 file system
  40621.     also supported by OS/2 v2.0+ Virtual DOS Machines
  40622. --------D-2162-------------------------------
  40623. INT 21 - DOS 3+ - GET CURRENT PSP ADDRESS
  40624.     AH = 62h
  40625. Return: BX = segment of PSP for current process
  40626. Notes:    under DOS 3+, this function does not use any of the DOS-internal stacks
  40627.       and may thus be called at any time, even during another INT 21h call
  40628.     the current PSP is not necessarily the caller's PSP
  40629.     identical to the undocumented AH=51h
  40630. SeeAlso: AH=50h,AH=51h
  40631. --------D-216300-----------------------------
  40632. INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
  40633.     AX = 6300h
  40634. Return: CF clear if successful
  40635.         DS:SI -> lead byte table (see #0876)
  40636.     CF set on error
  40637.         AX = error code (01h) (see #0811 at AH=59h)
  40638. Notes:    does not preserve any registers other than SS:SP
  40639.     the US version of MS-DOS 3.30 treats this as an unused function,
  40640.       setting AL=00h and returning immediately
  40641. SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
  40642.  
  40643. Format of double-byte character set lead byte table entry:
  40644. Offset    Size    Description    (Table 0876)
  40645.  00h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  40646.  02h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  40647.     ...
  40648.   N   2 BYTEs    00h,00h end flag
  40649. --------D-216300-----------------------------
  40650. INT 21 - Far East DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
  40651.     AX = 6300h
  40652. Return: AL = error code
  40653.         00h successful
  40654.         DS:SI -> DBCS table (see #0877)
  40655.         all other registers except CS:IP and SS:SP destroyed
  40656.         FFh not supported
  40657. Notes:    probably identical to AH=63h/AL=00h for DOS 2.25
  40658.     the US version of MS-DOS 3.30 treats this as an unused function,
  40659.       setting AL=00h and returning immediately
  40660.     the US version of DOS 4.0+ accepts this function, but returns an empty
  40661.       list
  40662. SeeAlso: AX=6300h"DOS 2.25"
  40663.  
  40664. Format of DBCS table:
  40665. Offset    Size    Description    (Table 0877)
  40666.  00h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  40667.  02h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  40668.     ...
  40669.   N   2 BYTEs    00h,00h end flag
  40670. --------D-216301-----------------------------
  40671. INT 21 - DOS 2.25, Far East DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
  40672.     AX = 6301h
  40673.     DL = new mode
  40674.         00h return only full characters on DOS keyboard input functions
  40675.         01h return partially-formed (interim) characters also
  40676. Return: AL = status
  40677.         00h successful
  40678.         FFh invalid mode
  40679. Note:    Novell DOS 7 simply stores DL in the caller's PSP (see #0535 at AH=26h)
  40680. SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6302h
  40681. --------D-216302-----------------------------
  40682. INT 21 - DOS 2.25, Far East DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
  40683.     AX = 6302h
  40684. Return: AL = status
  40685.         00h successful
  40686.         DL = current input mode
  40687.             00h return only full characters (clears interim flag)
  40688.             01h return partial characters (sets interim flag)
  40689.         FFh not supported
  40690. Note:    Novell DOS 7 simply reads the value out of the caller's PSP, so it
  40691.       can return values other than 00h or 01h if the last call to AX=6301h
  40692.       used another value
  40693. SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6301h
  40694. --------D-2164-------------------------------
  40695. INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
  40696.     AH = 64h
  40697.     AL = flag
  40698.         00h (default) call device driver function 5 (non-dest read)
  40699.             before INT 21/AH=01h,08h,0Ah
  40700.         nonzero don't call driver function 5
  40701. Return: nothing (MS-DOS)
  40702.     CF set, AX=error code??? (DR-DOS 5.0, which does not support this call)
  40703. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  40704.     under MS-DOS, this function does not use any of the DOS-internal stacks
  40705.       and may thus be called at any time, even during another DOS call
  40706. SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
  40707. --------O-2164--DX0000-----------------------
  40708. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
  40709.     AH = 64h
  40710.     DX = 0000h (function number)
  40711.     CX = 636Ch (magic value, "cl")
  40712.     BX = 0000h (indicates special request)
  40713. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40714.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40715. SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
  40716. --------O-2164--DX0001-----------------------
  40717. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
  40718.     AH = 64h
  40719.     DX = 0001h (function number)
  40720.     CX = 636Ch (magic value, "cl")
  40721.     BX = 0000h (indicates special request)
  40722.     ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
  40723. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40724.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40725. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
  40726. --------O-2164--DX0002-----------------------
  40727. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
  40728.     AH = 64h
  40729.     DX = 0002h (function number)
  40730.     CX = 636Ch (magic value, "cl")
  40731.     BX = 0000h (indicates special request)
  40732.     ES:DI -> 13-byte buffer for current title
  40733. Return: buffer filled (single 00h if title never changed)
  40734. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40735.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40736. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
  40737. --------O-2164--DX0003-----------------------
  40738. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LASTDRIVE
  40739.     AH = 64h
  40740.     DX = 0003h (function number)
  40741.     CX = 636Ch (magic value, "cl")
  40742.     BX = 0000h (indicates special request)
  40743. Return: AL = highest drive supported
  40744. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40745.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40746.     used by WinOS2
  40747. --------O-2164--DX0004-----------------------
  40748. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
  40749.     AH = 64h
  40750.     DX = 0004h (function number)
  40751.     CX = 636Ch (magic value, "cl")
  40752.     BX = 0000h (indicates special request)
  40753. Return: AX = number of entries in OS/2 JFT for VDM
  40754. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40755.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40756.     in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
  40757.       into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
  40758.       because the OS/2 SFT can contain more than 255 entries
  40759. --------O-2164--DX0005-----------------------
  40760. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
  40761.     AH = 64h
  40762.     DX = 0005h (function number)
  40763.     CX = 636Ch (magic value, "cl")
  40764.     BX = 0000h (indicates special request)
  40765.     DI = DOS file handle
  40766. Return: AX = value of second flags word from OS/2 SFT entry for file
  40767. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40768.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40769.     the OS/2 SFT has two flags words rather than DOS's one word, and this
  40770.       function provides access to the word which is not present in DOS
  40771. --------O-2164--DX0006-----------------------
  40772. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
  40773.     AH = 64h
  40774.     DX = 0006h (function number)
  40775.     CX = 636Ch (magic value, "cl")
  40776.     BX = 0000h (indicates special request)
  40777.     ES:DI -> ASCIZ filespec
  40778.     DS = base address for loading
  40779. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40780.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40781.     this function is only supported by the kernel debugging version of
  40782.       OS2KRNL
  40783. --------O-2164--DX0007-----------------------
  40784. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
  40785.     AH = 64h
  40786.     DX = 0007h (function number)
  40787.     CX = 636Ch (magic value, "cl")
  40788.     BX = 0000h (indicates special request)
  40789. Return: AX = call gate address
  40790. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40791.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40792.     used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
  40793.       of DOSKRNL
  40794. --------O-2164--DX0008-----------------------
  40795. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
  40796.     AH = 64h
  40797.     DX = 0008h (function number)
  40798.     CX = 636Ch (magic value, "cl")
  40799.     BX = 0000h (indicates special request)
  40800. Return: DS:DX -> '$'-terminated message "Loading.  Please wait."
  40801. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  40802.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  40803.     this function permits National Language Support for the initial message
  40804.       displayed while WinOS2 starts a full-screen session
  40805. --------O-2164--CX636C-----------------------
  40806. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
  40807.     AH = 64h
  40808.     CX = 636Ch ("cl")
  40809.     BX = API ordinal (see #0878)
  40810.     other registers as appropriate for API call
  40811. Return: as appropriate for API call
  40812. SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
  40813.  
  40814. (Table 0878)
  40815. Values for OS/2 API ordinal:
  40816.  0025h    DOS32StartSession
  40817.  0082h    DosGetCP
  40818.  00B6h    DosQFSAttach
  40819.  00BFh    DosEditName
  40820.  00CBh    DosForceDelete
  40821.  0144h    Dos32CreateEventSem
  40822.  0145h    Dos32OpenEvenSem
  40823.  0146h    Dos32CloseEventSem
  40824.  0147h    Dos32ResetEventSem
  40825.  0148h    Dos32PostEventSem
  40826.  0149h    Dos32WaitEventSem
  40827.  014Ah    Dos32QueryEventSem
  40828.  014Bh    Dos32CreateMutexSem
  40829.  014Ch    Dos32OpenMutexSem
  40830.  014Dh    Dos32CloseMutexSem
  40831.  014Eh    Dos32RequestMutexSem
  40832.  014Fh    Dos32ReleaseMutexSem
  40833.  0150h    Dos32QueryMutexSem
  40834.  0151h    Dos32CreateMuxWaitSem
  40835.  0152h    Dos32OpenMuxWaitSem
  40836.  0153h    Dos32CloseMuxWaitSem
  40837.  0154h    Dos32WaitMuxWaitSem
  40838.  0155h    Dos32AddMuxWaitSem
  40839.  0156h    Dos32DeleteMuxWaitSem
  40840.  0157h    Dos32QueryMuxWaitSem
  40841. --------O-2164--BX0025-----------------------
  40842. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
  40843.     AH = 64h
  40844.     BX = 0025h (API ordinal)
  40845.     CX = 636Ch ("cl")
  40846.     DS:SI -> STARTDATA structure (see #0879)
  40847. Return: AX = return code
  40848. SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
  40849.  
  40850. Format of OS/2 Virtual DOS Machine STARTDATA structure:
  40851. Offset    Size    Description    (Table 0879)
  40852.  00h    WORD    length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
  40853.  02h    WORD    relation of new process to caller (00h independent, 01h child)
  40854.  04h    WORD    fore/background (00h foreground, 01h background)
  40855.  06h    WORD    trace options (00h-02h, 00h = no trace)
  40856.  08h    DWORD    pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
  40857.  0Ch    DWORD    pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
  40858.  10h    DWORD    pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
  40859.  14h    DWORD    "TermQ" (currently reserved, must be 00000000h)
  40860.  18h    DWORD    pointer to environment (max 486 bytes) or 0000h:0000h
  40861.  1Ch    WORD    inheritance (00h or 01h)
  40862.  1Eh    WORD    session type
  40863.         00h OS/2 session manager determines type (default)
  40864.         01h OS/2 full-screen
  40865.         02h OS/2 window
  40866.         03h PM
  40867.         04h VDM full-screen
  40868.         07h VDM window
  40869.  20h    DWORD    pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
  40870.  24h    DWORD    "PgmHandle" (currently reserved, must be 00000000h)
  40871.  28h    WORD    "PgmControl"
  40872.  2Ah    WORD    initial column
  40873.  2Ch    WORD    initial row
  40874.  2Eh    WORD    initial width
  40875.  30h    WORD    initial height
  40876.  32h    WORD    reserved (0)
  40877.  34h    DWORD    "ObjectBuffer" (currently reserved, must be 00000000h)
  40878.  38h    DWORD    "ObjectBufferLen" (currently reserved, must be 00000000h)
  40879. --------O-2164--BX00B6-----------------------
  40880. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
  40881.     AH = 64h
  40882.     BX = 00B6h (API ordinal)
  40883.     CX = 636Ch (magic value "cl")
  40884.     DS = user's data segment
  40885.     ES:DI -> FSQAttachStruc (see #0880)
  40886. Return: CF set on error
  40887.         AX = error code (see #0811 at AH=59h)
  40888.     CF clear if successful
  40889.         AX = 0000h
  40890.         data buffer filled
  40891. SeeAlso: AH=64h/CX=636Ch
  40892.  
  40893. Format of OS/2 Virtual DOS Machine FSQAttachStruc:
  40894. Offset    Size    Description    (Table 0880)
  40895.  00h    DWORD    reserved
  40896.  04h    DWORD    pointer to the offset of the data buffer length
  40897.  08h    DWORD    pointer to the offset of the data buffer
  40898.  0Ch    WORD    FSA Info level
  40899.  0Eh    WORD    ordinal index into table
  40900.  10h    DWORD    pointer to the offset of the device name
  40901. Notes:    The segment value of the buffer, buffer length, and device
  40902.       name MUST all be the same.  It is defined on entry in the DS
  40903.       register.  The details of each info level are defined in the
  40904.       OS/2 CP Reference.
  40905. --------O-2164--BX00CB-----------------------
  40906. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
  40907.     AH = 64h
  40908.     BX = 00CBh (API ordinal)
  40909.     CX = 636Ch (magic value "cl")
  40910.     DS:DX -> ASCIZ filename
  40911. Return: CF clear if successful
  40912.         AX destroyed
  40913.     CF set on error
  40914.         AX = error code (02h,03h,05h) (see #0811 at AH=59h)
  40915. Desc:    delete a file without saving it to the undelete directory
  40916. SeeAlso: AH=41h,AH=64h/CX=636Ch
  40917. --------D-2165-------------------------------
  40918. INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
  40919.     AH = 65h
  40920.     AL = info ID
  40921.         01h get general internationalization info
  40922.         02h get pointer to uppercase table
  40923.         04h get pointer to filename uppercase table
  40924.         05h get pointer to filename terminator table
  40925.         06h get pointer to collating sequence table
  40926.         07h (DOS 4+) get pointer to Double-Byte Character Set table
  40927.     BX = code page (FFFFh=global code page)
  40928.     DX = country ID (FFFFh=current country)
  40929.     ES:DI -> country information buffer (see #0881)
  40930.     CX = size of buffer (>= 5)
  40931. Return: CF set on error
  40932.         AX = error code (see #0811 at AH=59h)
  40933.     CF clear if successful
  40934.         CX = size of country information returned
  40935.         ES:DI -> country information
  40936. Notes:    AL=05h appears to return same info for all countries and codepages; it
  40937.       has been documented for DOS 5+, but was undocumented in ealier
  40938.       versions
  40939.     NLSFUNC must be installed to get info for countries other than the
  40940.       default
  40941.     subfunctions 02h and 04h are identical under OS/2
  40942. SeeAlso: AH=38h,INT 2F/AX=1401h,INT 2F/AX=1402h,INT 2F/AX=14FEh
  40943.  
  40944. Format of country information:
  40945. Offset    Size    Description    (Table 0881)
  40946.  00h    BYTE    info ID
  40947. ---if info ID = 01h---
  40948.  01h    WORD    size
  40949.  03h    WORD    country ID
  40950.  05h    WORD    code page
  40951.  07h 34 BYTEs    country-dependent info (see AH=38h)
  40952. ---if info ID = 02h---
  40953.  01h    DWORD    pointer to uppercase table (see #0882)
  40954. ---if info ID = 04h---
  40955.  01h    DWORD    pointer to filename uppercase table (see #0883)
  40956. ---if info ID = 05h---
  40957.  01h    DWORD    pointer to filename character table (see #0884)
  40958. ---if info ID = 06h---
  40959.  01h    DWORD    pointer to collating table (see #0885)
  40960. ---if info ID = 07h (DOS 4+)---
  40961.  01h    DWORD    pointer to DBCS lead byte table (see #0886)
  40962.  
  40963. Format of uppercase table:
  40964. Offset    Size    Description    (Table 0882)
  40965.  00h    WORD    table size
  40966.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  40967.  
  40968. Format of filename uppercase table:
  40969. Offset    Size    Description    (Table 0883)
  40970.  00h    WORD    table size
  40971.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  40972.  
  40973. Format of filename terminator table:
  40974. Offset    Size    Description    (Table 0884)
  40975.  00h    WORD    table size (not counting this word)
  40976.  02h    BYTE    ??? (01h for MS-DOS 3.30-6.00)
  40977.  03h    BYTE    lowest permissible character value for filename
  40978.  04h    BYTE    highest permissible character value for filename
  40979.  05h    BYTE    ??? (00h for MS-DOS 3.30-6.00)
  40980.  06h    BYTE    first excluded character in range \ all characters in this
  40981.  07h    BYTE    last excluded character in range  / range are illegal
  40982.  08h    BYTE    ??? (02h for MS-DOS 3.30-6.00)
  40983.  09h    BYTE    number of illegal (terminator) characters
  40984.  0Ah  N BYTEs    characters which terminate a filename:    ."/\[]:|<>+=;,
  40985. Note:    partially documented for DOS 5+, but undocumented for earlier versions
  40986.  
  40987. Format of collating table:
  40988. Offset    Size    Description    (Table 0885)
  40989.  00h    WORD    table size
  40990.  02h 256 BYTEs    values used to sort characters 00h to FFh
  40991.  
  40992. Format of DBCS lead byte table:
  40993. Offset    Size    Description    (Table 0886)
  40994.  00h    WORD    length
  40995.  02h 2N BYTEs    start/end for N lead byte ranges
  40996.     WORD    0000h    (end of table)
  40997. --------D-2165-------------------------------
  40998. INT 21 - DOS 4+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
  40999.     AH = 65h
  41000.     AL = function
  41001.         20h capitalize character
  41002.         DL = character to capitalize
  41003.         Return: DL = capitalized character
  41004.         21h capitalize string
  41005.         DS:DX -> string to capitalize
  41006.         CX = length of string
  41007.         22h capitalize ASCIZ string
  41008.         DS:DX -> ASCIZ string to capitalize
  41009. Return: CF set on error
  41010.         AX = error code (see #0811 at AH=59h)
  41011.     CF clear if successful
  41012. Note:    these calls have been documented for DOS 5+, but were undocumented in
  41013.       DOS 4.x.
  41014. --------D-216523-----------------------------
  41015. INT 21 U - DOS 4+ internal - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
  41016.     AX = 6523h
  41017.     DL = character
  41018.     DH = second character of double-byte character (if applicable)
  41019. Return: CF set on error
  41020.     CF clear if successful
  41021.         AX = type
  41022.         00h no
  41023.         01h yes
  41024.         02h neither yes nor no
  41025. --------D-2165-------------------------------
  41026. INT 21 U - DOS 4+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
  41027.     AH = 65h
  41028.     AL = function
  41029.         A0h capitalize filename character
  41030.         DL = character to capitalize
  41031.         Return: DL = capitalized character
  41032.         A1h capitalize counted filename string
  41033.         DS:DX -> filename string to capitalize
  41034.         CX = length of string
  41035.         A2h capitalize ASCIZ filename
  41036.         DS:DX -> ASCIZ filename to capitalize
  41037. Return: CF set on error
  41038.         AX = error code (see #0811 at AH=59h)
  41039.     CF clear if successful
  41040. Note:    nonfunctional in DOS 4.00 through 6.00 due to a bug (the code sets a
  41041.       pointer depending on the high bit of AL, but doesn't clear the
  41042.       bit before branching by function number).
  41043. --------D-216601-----------------------------
  41044. INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
  41045.     AX = 6601h
  41046. Return: CF set on error
  41047.         AX = error code (see #0811 at AH=59h)
  41048.     CF clear if successful
  41049.         BX = active code page (see #0887)
  41050.         DX = system code page (see #0887)
  41051. SeeAlso: AX=6602h
  41052. --------D-216602-----------------------------
  41053. INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
  41054.     AX = 6602h
  41055.     BX = active code page (see #0887)
  41056.     DX = system code page (active page at boot time)
  41057. Return: CF set on error
  41058.         AX = error code (see #0811 at AH=59h)
  41059.     CF clear if successful
  41060. SeeAlso: AX=6601h,INT 2F/AX=14FFh
  41061.  
  41062. (Table 0887)
  41063. Values for code page:
  41064.  437    US
  41065.  850    Multilingual
  41066.  852    Slavic/Latin II (DOS 5+)
  41067.  857    Turkish
  41068.  860    Portugal
  41069.  861    Iceland
  41070.  863    Canada (French)
  41071.  865    Norway/Denmark
  41072. --------D-2167-------------------------------
  41073. INT 21 - DOS 3.3+ - SET HANDLE COUNT
  41074.     AH = 67h
  41075.     BX = size of new file handle table for process
  41076. Return: CF clear if successful
  41077.     CF set on error
  41078.         AX = error code (see #0811 at AH=59h)
  41079. Desc:    adjust the size of the per-process open file table, thus raising or
  41080.       lowering the limit on the number of files the caller can open
  41081.       simultaneously
  41082. Notes:    if BX <= 20, no action is taken if the handle limit has not yet been
  41083.       increased, and the table is copied back into the PSP if the limit
  41084.       is currently > 20 handles
  41085.     for file handle tables of > 20 handles, DOS 3.30 never reuses the
  41086.       same memory block, even if the limit is being reduced; this can lead
  41087.       to memory fragmentation as a new block is allocated and the existing
  41088.       one freed
  41089.     only the first 20 handles are copied to child processes in DOS 3.3-6.0
  41090.     increasing the file handles here will not, in general, increase the
  41091.       number of files that can be opened using the runtime library of a
  41092.       high-level language such as C
  41093. BUGS:    the original release of DOS 3.30 allocates a full 64K for the handle
  41094.       table on requests for an even number of handles
  41095.     DR-DOS 3.41 and 5.0 will lose track of any open file handles beyond
  41096.       the portion of the JFT retained after the call; MS-DOS will indicate
  41097.       error 04h if any of the JFT entries to be removed are open
  41098. SeeAlso: AH=26h,AH=86h
  41099. --------D-2168-------------------------------
  41100. INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
  41101.     AH = 68h
  41102.     BX = file handle
  41103. Return: CF clear if successful
  41104.         all data still in DOS disk buffers is written to disk immediately,
  41105.           and the file's directory entry is updated
  41106.     CF set on error
  41107.         AX = error code (see #0811 at AH=59h)
  41108. SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
  41109. --------D-2169-------------------------------
  41110. INT 21 U - DOS 4+ internal - GET/SET DISK SERIAL NUMBER
  41111.     AH = 69h
  41112.     AL = subfunction
  41113.         00h get serial number
  41114.         01h set serial number
  41115.     BL = drive (0=default, 1=A, 2=B, etc)
  41116.     BH = info level (00h only for DOS; OS/2 allows other levels)
  41117.     DS:DX -> disk info (see #0888)
  41118. Return: CF set on error
  41119.         AX = error code (see #0811 at AH=59h)
  41120.     CF clear if successful
  41121.         AX destroyed
  41122.         (AL = 00h) buffer filled with appropriate values from extended BPB
  41123.         (AL = 01h) extended BPB on disk set to values from buffer
  41124. Notes:    does not generate a critical error; all errors are returned in AX
  41125.     error 0005h given if no extended BPB on disk
  41126.     does not work on network drives (error 0001h)
  41127.     buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
  41128.       extended BPB on disk
  41129.     this function is supported under Novell NetWare versions 2.0A through
  41130.       3.11; the returned serial number is the one a DIR would display,
  41131.       the volume label is the NetWare volume label, and the file system
  41132.       is set to "FAT16".
  41133.     the serial number is computed from the current date and time when the
  41134.       disk is created; the first part is the sum of the seconds/hundredths
  41135.       and month/day, the second part is the sum of the hours/minutes and
  41136.       year
  41137.     the volume label which is read or set is the one stored in the extended
  41138.       BPB on disks formatted with DOS 4.0+, rather than the special root
  41139.       directory entry used by the DIR command in COMMAND.COM (use AH=11h
  41140.       to find that volume label)
  41141. SeeAlso: AX=440Dh
  41142.  
  41143. Format of disk info:
  41144. Offset    Size    Description    (Table 0888)
  41145.  00h    WORD    info level (zero)
  41146.  02h    DWORD    disk serial number (binary)
  41147.  06h 11 BYTEs    volume label or "NO NAME    " if none present
  41148.  11h  8 BYTEs    (AL=00h only) filesystem type--string "FAT12   " or "FAT16   "
  41149. --------O-2169-------------------------------
  41150. INT 21 - DR-DOS 5.0 - NULL FUNCTION
  41151.     AH = 69h
  41152. Return: AL = 00h
  41153. SeeAlso: AH=18h
  41154. --------v-216969-----------------------------
  41155. INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
  41156.     AX = 6969h
  41157. Return: AX = 0666h if resident
  41158. SeeAlso: AX=58CCh,AH=76h"VIRUS"
  41159. --------d-2169FFDX0000-----------------------
  41160. INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
  41161.     AX = 69FFh
  41162.     DX = 0000h
  41163.     BX = CB00h (magic value)
  41164. Return: ES:BX -> CUBITR.EXE handler for INT 21
  41165. Note:    the installation check consists of testing that the first eight bytes
  41166.       at the returned interrupt handler are EBh 07h "CUBITR" (a short
  41167.       jump around the signature followed by the signature); the byte
  41168.       following the signature (i.e. ES:[BX+8]) indicates whether CUBITR
  41169.       is active (01h) or disabled (00h)
  41170. SeeAlso: AX=69FFh/DX=CFBFh
  41171. Index:    installation check;CUBIT
  41172. --------d-2169FFDXCFBF-----------------------
  41173. INT 21 U - CUBIT v4.00 - UNINSTALL
  41174.     AX = 69FFh
  41175.     DX = CFBFh
  41176.     CX = EFCFh
  41177.     BX = CB00h (magic value)
  41178. Return: ES:BX -> CUBITR.EXE handler for INT 21
  41179.     CX = status
  41180.         2020h successful
  41181.         2222h failed
  41182. Note:    if DX is neither 0000h nor CFBFh on entry, some other code is executed
  41183. SeeAlso: AX=69FFh/DX=0000h
  41184. --------D-216A-------------------------------
  41185. INT 21 U - DOS 4+ - COMMIT FILE
  41186.     AH = 6Ah
  41187.     BX = file handle
  41188. Return: CF clear if successful
  41189.         AH = 68h
  41190.     CF set on error
  41191.         AX = error code (06h) (see #0811 at AH=59h)
  41192. Note:    identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
  41193.       in DOS 4.x
  41194. SeeAlso: AH=68h
  41195. --------D-216B-------------------------------
  41196. INT 21 U - DOS 4.0 internal - IFS IOCTL
  41197.     AH = 6Bh
  41198.     AL = subfunction
  41199.         00h ???
  41200.         DS:SI -> Current Directory Structure???
  41201.         CL = drive (1=A:)
  41202.         01h ???
  41203.         DS:SI -> ???
  41204.         CL = file handle???
  41205.         02h ???
  41206.         DS:SI -> Current Directory Structure???
  41207.         DI = ???
  41208.         CX = drive (1=A:)
  41209. Return: CF set on error
  41210.         AX = error code (see #0811 at INT 21/AH=59h)
  41211.     CF clear if successful
  41212. Note:    passed through to INT 2F/AX=112Fh with AX on top of stack
  41213. SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
  41214. --------D-216B-------------------------------
  41215. INT 21 U - DOS 5+ - NULL FUNCTION
  41216.     AH = 6Bh
  41217. Return: AL = 00h
  41218. Note:    this function does nothing and returns immediately
  41219. SeeAlso: AH=6Bh"DOS 4"
  41220. --------D-216C00-----------------------------
  41221. INT 21 - DOS 4+ - EXTENDED OPEN/CREATE
  41222.     AX = 6C00h
  41223.     BL = open mode as in AL for normal open (see also AH=3Dh)
  41224.         bit 7: inheritance
  41225.         bits 4-6: sharing mode
  41226.         bit 3 reserved
  41227.         bits 0-2: access mode
  41228.     BH = flags
  41229.         bit 6 = auto commit on every write (see also AH=68h)
  41230.         bit 5 = return error rather than doing INT 24h
  41231.     CX = create attribute (see #0890)
  41232.     DL = action if file exists/does not exist (see #0891)
  41233.     DH = 00h (reserved)
  41234.     DS:SI -> ASCIZ file name
  41235. Return: CF set on error
  41236.        AX = error code (see #0811 at AH=59h)
  41237.     CF clear if successful
  41238.        AX = file handle
  41239.        CX = status (see #0889)
  41240. Notes:    the PC LAN Program only supports DL=01h, DL=10h/sharing=compatibility,
  41241.       and DL=12h
  41242.     DR-DOS reportedly does not support this function and does not return
  41243.       an "invalid function call" error when this function is used.
  41244. BUG:    this function has bugs (at least in DOS 5.0 and 6.2) when used with
  41245.       drives handled via the network redirector (INT 2F/AX=112Eh):
  41246.         - CX (attribute) is not passed to the redirector if DL=11h,
  41247.         - CX does not return the status, it is returned unchanged because
  41248.           DOS does a PUSH CX/POP CX when calling the redirector.
  41249. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AH=71h,INT 2F/AX=112Eh
  41250.  
  41251. (Table 0889)
  41252. Values for extended open function status:
  41253.  01h    file opened
  41254.  02h    file created
  41255.  03h    file replaced
  41256.  
  41257. Bitfields for file create attribute:
  41258. Bit(s)    Description    (Table 0890)
  41259.  6-15    reserved
  41260.  5    archive
  41261.  4    reserved
  41262.  3    volume label
  41263.  2    system
  41264.  1    hidden
  41265.  0    readonly
  41266.  
  41267. Bitfields for action:
  41268. Bit(s)    Description    (Table 0891)
  41269.  7-4    action if file does not exist
  41270.     0000 fail
  41271.     0001 create
  41272.  3-0    action if file exists
  41273.     0000 fail
  41274.     0001 open
  41275.     0010 replace/open
  41276. --------O-216C01-----------------------------
  41277. INT 21 U - OS/2 v2.0 - "DosOpen2"
  41278.     AX = 6C01h
  41279.     BL = open mode as in AL for normal open (see also AH=3Dh)
  41280.         bit 7: inheritance
  41281.         bits 4-6: sharing mode
  41282.         bit 3 reserved
  41283.         bits 0-2: access mode
  41284.     BH = flags
  41285.         bit 6 = auto commit on every write (see also AH=68h)
  41286.         bit 5 = return error rather than doing INT 24h
  41287.     CX = create attribute (see #0890)
  41288.     DL = action if file exists/does not exist (see #0891)
  41289.     DH = 00h (reserved)
  41290.     DS:SI -> ASCIZ file name
  41291.     ES:DI -> EAOP structure
  41292. Return: CF set on error
  41293.        AX = error code (see #0811 at AH=59h)
  41294.     CF clear if successful
  41295.        AX = file handle
  41296.        CX = status (see #0889)
  41297. Note:    this function is virtually identical to AX=6C00h, but supports OS/2's
  41298.       extended attributes
  41299. SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
  41300. --------D-216D-------------------------------
  41301. INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
  41302.     AH = 6Dh
  41303.     DS:DX -> ASCIZ program name (may contain wildcrds)
  41304. Return: CF clear if found
  41305.         [DTA] = ROM search structure (see #0892)
  41306.     CF set if not found
  41307.         AX = error code
  41308.         0002h name not found in ROM
  41309.         0003h name contains colon or backslash
  41310. Notes:    the '*' wildcard matches all remaining characters in a ROM program's
  41311.       name; any following characters in the search mask are ignored up to
  41312.       another asterisk, which must be matched by an asterisk in the
  41313.       found program's name.
  41314.     the search mask and program names may contain multiple periods
  41315. SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h
  41316.  
  41317. Format of ROM search structure:
  41318. Offset    Size    Description    (Table 0892)
  41319.  00h 13 BYTEs    ASCIZ name of found ROM program
  41320.  0Dh    DWORD    address at which to resume search (do not modify)
  41321.  11h    var    ASCIZ search mask passed in (do not modify)
  41322. --------O-216D-------------------------------
  41323. INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
  41324.     AH = 6Dh
  41325.     ???
  41326. Return: ???
  41327. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  41328. SeeAlso: AH=39h
  41329. --------O-216D-------------------------------
  41330. INT 21 U - Novell DOS 7 - NOP
  41331.     AH = 6Dh
  41332. Return: AX = 0000h
  41333. Note:    this function invokes the same code as other NOP functions such as
  41334.       AH=18h and AH=61h
  41335. --------D-216E-------------------------------
  41336. INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
  41337.     AH = 6Eh
  41338.     [DTA] = result of previous FindFirst ROM (see AH=6Dh)
  41339. Return: CF clear if found
  41340.         [DTA] = updated ROM search structure (see #0892)
  41341.     CF set if not found
  41342.         AX = 0012h (no more matches)
  41343. SeeAlso: AH=4Fh,AH=6Dh
  41344. --------O-216E-------------------------------
  41345. INT 21 U - OS/2 v1.x FAPI - "DosENumAttrib"
  41346.     AH = 6Eh
  41347.     ???
  41348. Return: ???
  41349. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  41350. SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
  41351. --------O-216F-------------------------------
  41352. INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
  41353.     AH = 6Fh
  41354.     ???
  41355. Return: ???
  41356. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  41357. SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
  41358. --------D-216F00-----------------------------
  41359. INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
  41360.     AX = 6F00h
  41361. Return: CF clear
  41362.     AL = 00h
  41363.     BX = current ROM scan starting segment
  41364. SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
  41365. --------D-216F01-----------------------------
  41366. INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
  41367.     AX = 6F01h
  41368.     BX = new ROM scan starting address
  41369. Return: CF clear
  41370.     AL = 00h
  41371. SeeAlso: AX=6F00h,AX=6F03h
  41372. --------D-216F02-----------------------------
  41373. INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
  41374.     AX = 6F02h
  41375.     ES:BX -> buffer for exclusion region list (see #0893)
  41376. Return: CF clear
  41377.     AL = 00h
  41378.     ES:BX = 0000h:0000h on error, unchanged if buffer filled
  41379. SeeAlso: AX=6F00h,AX=6F03h
  41380.  
  41381. Format of ROM exclusion region list:
  41382. Offset    Size    Description    (Table 0893)
  41383.  00h    WORD    number of entries
  41384.  02h 2N WORDs    start/end segments of N excluded regions
  41385. --------D-216F03-----------------------------
  41386. INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
  41387.     AX = 6F03h
  41388.     DS:DX -> new exclusion region list (see #0893)
  41389. Return: CF clear
  41390.     AL = 00h
  41391. Notes:    DOS saves only the pointer and assumes that the contents of the list
  41392.       are never changed, and that regions do not overlap
  41393.     if AL > 03h on entry, DOS returns CF set/AL=01h
  41394. SeeAlso: AX=6F01h,AX=6F02h
  41395. ----------217070BX6060-----------------------
  41396. INT 21 - PCW Weather Card interface - GET DATA SEGMENT
  41397.     AX = 7070h
  41398.     BX = 6060h
  41399.     CX = 7070h
  41400.     DX = 7070h
  41401.     SI = 7070h
  41402.     DI = 7070h
  41403. Return: AX = segment of data structure (see #0894)
  41404. Notes:    the data structure is at offset 516 from this segment
  41405.     the update byte is at offset 514 from this segment.  Updates are
  41406.       once per second while this byte is nonzero and it is decremented
  41407.       once per second.  While this byte is 0 updates are once per minute.
  41408. SeeAlso: AX=7070h/BX=7070h
  41409.  
  41410. Format of PCW Weather Card data structure:
  41411. Offset    Type    Description    (Table 0894)
  41412.  00h    WORD    hour
  41413.  02h    WORD    minute
  41414.  04h    WORD    second
  41415.  06h    WORD    day
  41416.  08h    WORD    month
  41417.  0Ah    WORD    year
  41418.  0Ch    WORD    ???
  41419.  0Eh    WORD    relative barometric pressure (in 1/100 inches)
  41420.  10h    WORD    ???
  41421.  12h    WORD    ???
  41422.  14h    WORD    temperature 1 (in 1/10 degrees F)
  41423.  16h    WORD    temperature 1 lowest (in 1/10 degrees F)
  41424.  18h    WORD    temperature 1 highest (in 1/10 degrees F)
  41425.  1Ah    WORD    temperature 2 (in 1/10 degrees F)
  41426.  1Ch    WORD    temperature 2 lowest (in 1/10 degrees F)
  41427.  1Eh    WORD    temperature 2 highest (in 1/10 degrees F)
  41428.  20h    WORD    wind speed (in MPH)
  41429.  22h    WORD    average of 60 wind speed samples (in MPH)
  41430.  24h    WORD    highest wind speed (in MPH)
  41431.  26h    WORD    wind chill factor  (in 1/10 degrees F)
  41432.  28h    WORD    lowest wind chill factor (in 1/10 degrees F)
  41433.  2Ah    WORD    ???
  41434.  2Ch    WORD    wind direction (in degrees)
  41435.  2Eh    WORD    accumulated daily rainfall (in 1/10 inches)
  41436.  30h    WORD    accumulated annual rainfall (in 1/10 inches)
  41437. ----------217070BX7070-----------------------
  41438. INT 21 - PCW Weather Card interface - INSTALLATION CHECK
  41439.     AX = 7070h
  41440.     BX = 7070h
  41441.     CX = 7070h
  41442.     DX = 7070h
  41443.     SI = 7070h
  41444.     DI = 7070h
  41445. Return: AX = 0070h
  41446.     BX = 0070h
  41447.     CX = 0070h
  41448.     DX = 0070h
  41449.     SI = 0070h
  41450.     DI = 0070h
  41451. SeeAlso: AX=7070h/BX=6060h,AX=8080h
  41452. --------D-2171-------------------------------
  41453. INT 21 - DOS 7 (Chicago) - LONG FILENAME FUNCTIONS
  41454.     AH = 71h
  41455.     AL = function
  41456.         39h create directory
  41457.         3Ah remove directory
  41458.         3Bh set current directory
  41459.         41h delete file
  41460.         43h get file attributes (BL=00h), set file attributes (BL=01h)
  41461.         47h get current directory
  41462.         4Eh find first file
  41463.         4Fh find next file
  41464.         56h move (rename) file
  41465.         6Ch create/open file
  41466. Return: CF set on error
  41467.         AX = error code
  41468.         7100h if function not supported
  41469.     CF clear if successful
  41470.         other registers as for corresponding "old" DOS function
  41471. Notes:    if error 7100h is returned, the old-style function should be called
  41472.     AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
  41473.       when the search is complete, AH=72h must be called to terminate
  41474.       the search
  41475. SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AH=43h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch
  41476. SeeAlso: AH=72h
  41477. --------D-2172-------------------------------
  41478. INT 21 - DOS 7 (Chicago) - "FindClose" - TERMINATE DIRECTORY SEARCH
  41479.     AH = 72h
  41480.     details not yet available
  41481. Note:    this function must be called after starting a search with AX=714Eh,
  41482.       to indicate that the search handle returned by that function will
  41483.       no longer be used
  41484. SeeAlso: AH=4Eh,AH=71h
  41485. --------v-2176-------------------------------
  41486. INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
  41487.     AH = 76h
  41488. Return: AL = 48h if resident
  41489. SeeAlso: AX=6969h,AX=7700h"VIRUS"
  41490. --------v-217700-----------------------------
  41491. INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
  41492.     AX = 7700h
  41493. Return: AX = 0920h if resident
  41494. SeeAlso: AH=76h,AH=7Fh
  41495. --------V-217734-----------------------------
  41496. INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
  41497.     AX = 7734h
  41498. Return: DX = 3477h if installed
  41499.         AX = segment of resident code
  41500. Program: ScrollIt is a shareware backscroll utility by Bromfield Software
  41501.       Products
  41502. --------U-217761-----------------------------
  41503. INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
  41504.     AX = 7761h ('wa')
  41505. Return: AX = 6177h
  41506. Note:    WATCH.COM is part of the "TSR" package by TurboPower Software
  41507. SeeAlso: INT 16/AX=7761h
  41508. --------v-217F-------------------------------
  41509. INT 21 - VIRUS - "Squeaker" - INSTALLATION CHECK
  41510.     AH = 7Fh
  41511. Return: AH = 80h if resident
  41512. SeeAlso: AX=7700h,AH=83h"VIRUS"
  41513. --------D-2180-------------------------------
  41514. INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
  41515.     AH = 80h
  41516.     CX = mode
  41517.         0000h place child in zombie mode on exit to preserve exit code
  41518.         0001h discard child process and exit code on termination
  41519.     DS:DX -> ASCIZ full program name
  41520.     ES:BX -> parameter block (as for AX=4B00h)
  41521. Return: CF clear if successful
  41522.         AX = Command Subgroup ID (CSID)
  41523.     CF set on error
  41524.         AX = error code (see #0811 at AH=59h)
  41525. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  41526.       by several other European OEMs; its release falls between mainstream
  41527.       versions 3.2 and 3.3
  41528. Desc:    asynchronously execute a program, creating a new process for it
  41529. Notes:    this function is called by the DETACH command
  41530.     there is a system-wide limit of 32 processes
  41531.     the CSID is used to identify all processes that have been spawned by
  41532.       a given process, whether directly or indirectly
  41533.     programs to be run in the background must use the new executable format
  41534.       (see #0734 at AH=4Bh)
  41535.     background processes may only perform asynchronous (background) EXECs,
  41536.       either this function or AX=4B04h
  41537.     background processes may execute INT 11, INT 12, INT 21, INT 2A, and
  41538.       INT 2F at any time; they may execute INT 10 and INT 16 only while
  41539.       they have opened a popup screen via INT 2F/AX=1401h; no other
  41540.       interrupts may be executed from the background
  41541.     background processes may not use drive B: or overlay their code
  41542.       segments
  41543.     see AX=8700h for an installation check
  41544.     the "NE" new executable format made its first appearance in European
  41545.       MS-DOS 4.0
  41546. SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
  41547. ----------218080-----------------------------
  41548. INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
  41549.     AX = 8080h
  41550. Return: ???
  41551. SeeAlso: AX=7070h/BX=7070h
  41552. --------D-2181-------------------------------
  41553. INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
  41554.     AH = 81h
  41555.     BX = flag (00h freeze command subtree, 01h only specified process)
  41556.     CX = Process ID of head of command subtree
  41557. Return: CF clear if successful
  41558.     CF set on error
  41559.         AX = error code (no such process)
  41560. Desc:    temporarily suspend a process or a process and all of its children
  41561. Note:    if BX=0001h, this call will not return until the process is actually
  41562.       frozen, which may not be until after it unblocks from an I/O
  41563.       operation
  41564. SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
  41565. --------D-2182-------------------------------
  41566. INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
  41567.     AH = 82h
  41568.     BX = flag (00h resume command subtree, 01h only specified process)
  41569.     CX = Process ID of head of command subtree
  41570. Return: CF clear if successful
  41571.     CF set on error
  41572.         AX = error code (no such process)
  41573. Desc:    restart a previously-suspended process or a process and all of its
  41574.       children
  41575. SeeAlso: AH=81h,INT 15/AX=101Eh
  41576. --------D-2183-------------------------------
  41577. INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
  41578.     AH = 83h
  41579.     AL = function
  41580.         00h get size
  41581.         01h set new size
  41582.         BX = new size in paragraphs
  41583. Return: CF clear if successful
  41584.         BX = current size (function 00h) or old size (function 01h)
  41585.     CF set on error
  41586.         AX = error code (01h,07h,0Dh)(see #0811 at AH=59h)
  41587. Desc:    specify or determine how much memory may be allocated by the foreground
  41588.       process
  41589. Note:    if the partition size is set to 0000h, no partition management is done
  41590.       and all memory allocation is compatible with DOS 3.2.
  41591.     the partition size can be changed regardless of what use is being made
  41592.       of the changed memory; subsequent allocations will follow the
  41593.       partition rules (foreground processes may allocate only foreground
  41594.       memory; background processes allocate background memory first, then
  41595.       foreground memory)
  41596. SeeAlso: AH=48h,AH=4Ah
  41597. --------v-2183-------------------------------
  41598. INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
  41599.     AH = 83h
  41600. Return: DX = 1990h if resident
  41601. SeeAlso: AH=76h,AH=84h"VIRUS"
  41602. --------v-2184-------------------------------
  41603. INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
  41604.     AH = 84h
  41605. Return: DX = 1990h if resident
  41606.         BH = version number (major in high nybble, minor in low)
  41607. SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
  41608. --------D-218400-----------------------------
  41609. INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
  41610.     AX = 8400h
  41611.     BX = size in bytes (0000h = 65536)
  41612.     CX = flags
  41613.         bit 6: zero-initialize segment
  41614.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  41615. Return: CF clear if successful
  41616.         AX = segment address of shared memory global object
  41617.     CF set on error
  41618.         AX = error code (06h,08h) (see #0811 at AH=59h)
  41619. Desc:    create an area of memory which may be accessed by multiple processes
  41620. Notes:    shared memory objects are created as special files (thus the
  41621.       restriction on the name)
  41622.     on successful creation, the reference count is set to 1
  41623. SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
  41624. --------D-218401-----------------------------
  41625. INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
  41626.     AX = 8401h
  41627.     CX = flags
  41628.         bit 7: writable segment (ignored by MS-DOS 4.0)
  41629.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  41630. Return: CF clear if successful
  41631.         AX = segment address of shared memory global object
  41632.         CX = size in bytes
  41633.     CF set on error
  41634.         AX = error code (invalid name)
  41635. Desc:    get address of a previously-created area of memory which may be
  41636.       accessed by multiple processes
  41637. Note:    this call increments the reference count for the shared memory area
  41638. SeeAlso: AX=8400h,AX=8402h
  41639. --------D-218402-----------------------------
  41640. INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
  41641.     AX = 8402h
  41642.     BX = handle (segment address of shared memory object)
  41643. Return: CF clear if successful
  41644.     CF set on error
  41645.         AX = error code (no such name)
  41646. Desc:    indicate that the specified area of shared memory will no longer be
  41647.       used by the caller
  41648. Note:    the reference count is decremented and the shared memory area is
  41649.       deallocated if the new reference count is zero
  41650. SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
  41651. --------D-2185-------------------------------
  41652. INT 21 U - European MS-DOS 4.0 - ???
  41653.     AH = 85h
  41654.     ???
  41655. Return: ???
  41656. --------D-2186-------------------------------
  41657. INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
  41658.     AH = 86h
  41659.     BX = total number of file handles in new table
  41660. Return: CF clear if successful
  41661.     CF set on error
  41662.         AX = error code (06h,08h) (see #0811 at AH=59h)
  41663. Desc:    adjust the size of the per-process open file table, thus raising or
  41664.       lowering the limit on the number of files the caller can open
  41665.       simultaneously
  41666. Notes:    any currently-open files are copied to the new table
  41667.     if the table is increased beyond the default 20 handles, only the
  41668.       first 20 will be inherited by child processes
  41669.     error 06h is returned if the requested number of handles exceeds
  41670.       system limits or would require closing currently-open files
  41671. SeeAlso: AH=26h,AH=67h
  41672. --------D-2187-------------------------------
  41673. INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
  41674.     AH = 87h
  41675. Return: AX = PID
  41676.     BX = parent process's PID
  41677.     CX = Command Subgroup ID (CSID)
  41678. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  41679.       by several other European OEMs; its release falls between mainstream
  41680.       versions 3.2 and 3.3
  41681. Desc:    determine an identifier by which to access the calling process
  41682. Notes:    called by MS C v5.1 getpid() function
  41683.     this function apparently must return AX=0001h for INT 21/AH=80h to
  41684.       succeed
  41685.     one possible check for European MS-DOS 4.0 is to issue this call with
  41686.       AL=00h and check whether AL is nonzero on return
  41687. SeeAlso: AH=30h,AH=62h,AH=80h
  41688. Index:    installation check;European MS-DOS 4.0
  41689. --------D-2188-------------------------------
  41690. INT 21 U - European MS-DOS 4.0 - ???
  41691.     AH = 88h
  41692.     ???
  41693. Return: ???
  41694. SeeAlso: AH=87h
  41695. --------D-2189-------------------------------
  41696. INT 21 - European MS-DOS 4.0 - SLEEP
  41697.     AH = 89h
  41698.     CX = time in milliseconds or 0000h to give up time slice
  41699. Return: CF clear if successful
  41700.         CX = 0000h
  41701.     CF set on error
  41702.         AX = error code (interrupted system call)
  41703.         CX = sleep time remaining
  41704. Desc:    suspend the calling process for the specified duration
  41705. Notes:    the sleep interval is rounded up to the next higher increment of the
  41706.       scheduler clock, and may be extended further if other processes are
  41707.       running
  41708.     this call may be interrupted by signals (see AH=8Dh)
  41709.     reportedly called by Microsoft C 4.0 startup code
  41710.     background processes have higher priority than the foreground process,
  41711.       and should thus periodically yield the CPU
  41712. SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
  41713. --------v-2189-------------------------------
  41714. INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
  41715.     AH = 89h
  41716. Return: AX = 0123h if resident
  41717. SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
  41718. --------D-218A-------------------------------
  41719. INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
  41720.     AH = 8Ah
  41721.     BL = range (00h command subtree, 01h any child)
  41722.     BH = suspend flag
  41723.         00h suspend if children exist but none are dead
  41724.         01h return if no dead children
  41725.     CX = Process ID of head of command subtree
  41726. Return: CF clear if successful
  41727.         AH = termination type (see #0895)
  41728.         AL = return code from child or aborting signal
  41729.         BX = PID of child (0000h if no dead children)
  41730.     CF set on error
  41731.         AX = error code (no child,interrupted system call)
  41732. Desc:    get return code from an asynchronously-executed child program,
  41733.       optionally waiting if no return code is available
  41734. SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
  41735.  
  41736. (Table 0895)
  41737. Values for termination type:
  41738.  00h    normal termination
  41739.  01h    aborted by Control-C
  41740.  02h    aborted by I/O error
  41741.  03h    terminate and stay resident
  41742.  04h    aborted by signal
  41743.  05h    aborted by program error
  41744. --------D-218B-------------------------------
  41745. INT 21 U - European MS-DOS 4.0 - ???
  41746.     AH = 8Bh
  41747.     ???
  41748. Return: ???
  41749. SeeAlso: AH=87h
  41750. --------D-218C-------------------------------
  41751. INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
  41752.     AH = 8Ch
  41753.     AL = signal number (see #0896)
  41754.     BL = action (see #0897)
  41755.     DS:DX -> signal handler (see #0898)
  41756. Return: CF clear if successful
  41757.         AL = previous action
  41758.         ES:BX -> previous signal handler
  41759.     CF set on error
  41760.         AX = error code (01h,invalid SigNumber or Action)
  41761.           (see #0811 at AH=59h)
  41762. Desc:    set the routine which will be invoked on a number of exceptional
  41763.       conditions
  41764. Note:    all signals will be sent to the most recently installed handler
  41765. SeeAlso: AH=8Dh
  41766.  
  41767. (Table 0896)
  41768. Values for European MS-DOS 4.0 signal number:
  41769.  01h    SIGINTR        Control-C or user defined interrupt key
  41770.  08h    SIGTERM        program termination
  41771.  09h    SIGPIPE        broken pipe
  41772.  0Dh    SIGUSER1    reserved for user definition
  41773.  0Eh    SIGUSER2    reserved for user definition
  41774.  
  41775. (Table 0897)
  41776. Values for signal action:
  41777.  00h    SIG_DFL        terminate process on receipt
  41778.  01h    SIG_IGN        ignore signal
  41779.  02h    SIG_GET        signal is accepted
  41780.  03h    SIG_ERR        sender gets error
  41781.  04h    SIG_ACK        acknowledge received signal and clear it, but don't
  41782.               change current setting
  41783.  
  41784. (Table 0898)
  41785. Values signal handler is called with:
  41786.     AL = signal number (see #0896)
  41787.     AH = signal argument
  41788. Return: RETF, CF set: terminate process
  41789.     RETF, CF clear, ZF set: abort any interrupted system call with an error
  41790.     RETF, CF clear, ZF clear: restart any interrupted system call
  41791.     IRET: restart any interrupted system call
  41792. Note:    the signal handler may also perform a nonlocal GOTO by resetting the
  41793.       stack pointer and jumping; before doing so, it should dismiss the
  41794.       signal by calling this function with BL=04h
  41795. --------D-218D-------------------------------
  41796. INT 21 - European MS-DOS 4.0 - SEND SIGNAL
  41797.     AH = 8Dh
  41798.     AL = signal number (see #0896)
  41799.     BH = signal argument
  41800.     BL = action
  41801.         00h send to entire command subtree
  41802.         01h send only to specified process
  41803.     DX = Process ID
  41804. Return: CF clear if successful
  41805.     CF set on error
  41806.         AX = error code (01h,06h)(see #0811 at AH=59h)
  41807. Desc:    invoke the exceptional-condition handler for the specified process
  41808. Note:    error 06h may be returned if one or more of the affected processes
  41809.       have an error handler for the signal
  41810. SeeAlso: AH=8Ch
  41811. --------D-218E00BH00-------------------------
  41812. INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
  41813.     AX = 8E00h
  41814.     BH = 00h
  41815.     BL = action
  41816.         00h set priority for command subtree
  41817.         01h set priority for specified process only
  41818.     CX = Process ID
  41819.     DH = 00h
  41820.     DL = change in priority (00h to get priority)
  41821. Return: CF clear if successful
  41822.         DL = process priority
  41823.         DH destroyed
  41824.     CF set on error
  41825.         AX = error code (01h,no such process)(see #0811 at AH=59h)
  41826. Desc:    specify or determine the execution priority of the specified process
  41827.       or the process and all of its children
  41828. SeeAlso: AH=81h
  41829. --------D-218F-------------------------------
  41830. INT 21 U - European MS-DOS 4.0 - ???
  41831.     AH = 8Fh
  41832.     ???
  41833. Return: ???
  41834. SeeAlso: AH=87h
  41835. --------D-2190-------------------------------
  41836. INT 21 U - European MS-DOS 4.0 - ???
  41837.     AH = 90h
  41838.     ???
  41839. Return: ???
  41840. SeeAlso: AH=87h
  41841. --------v-2190-------------------------------
  41842. INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
  41843.     AH = 90h
  41844. Return: AH = 01h if resident
  41845. SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
  41846. --------D-2191-------------------------------
  41847. INT 21 U - European MS-DOS 4.0 - ???
  41848.     AH = 91h
  41849.     ???
  41850. Return: ???
  41851. SeeAlso: AH=87h
  41852. --------D-2192-------------------------------
  41853. INT 21 U - European MS-DOS 4.0 - ???
  41854.     AH = 92h
  41855.     ???
  41856. Return: ???
  41857. SeeAlso: AH=87h
  41858. --------D-2193-------------------------------
  41859. INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
  41860.     AH = 93h
  41861.     CX = size in bytes
  41862. Return: CF clear if successful
  41863.         AX = read handle
  41864.         BX = write handle
  41865.     CF set on error
  41866.         AX = error code (08h) (see #0811 at AH=59h)
  41867. Desc:    create a communications channel which may be used for interprocess
  41868.       data and command exchanges
  41869. SeeAlso: AH=3Ch,AH=3Fh,AH=40h,AH=84h
  41870. --------D-2194-------------------------------
  41871. INT 21 U - European MS-DOS 4.0 - ???
  41872.     AH = 94h
  41873.     ???
  41874. Return: ???
  41875. SeeAlso: AH=87h
  41876. --------D-2195-------------------------------
  41877. INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
  41878.     AH = 95h
  41879.     AL = new state
  41880.        00h enabled
  41881.        01h disabled, automatically fail hard errors
  41882. Return: AX = previous setting
  41883. Desc:    specify whether hard (critical) errors should automatically fail the
  41884.       system call or invoke an INT 24
  41885. SeeAlso: INT 24
  41886. --------D-2196-------------------------------
  41887. INT 21 U - European MS-DOS 4.0 - ???
  41888.     AH = 96h
  41889.     ???
  41890. Return: ???
  41891. --------D-2197-------------------------------
  41892. INT 21 U - European MS-DOS 4.0 - ???
  41893.     AH = 97h
  41894.     ???
  41895. Return: ???
  41896. --------v-219753-----------------------------
  41897. INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
  41898.     AX = 9753h
  41899. Return: never (executes original program) if virus resident
  41900. SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS"
  41901. --------D-2198-------------------------------
  41902. INT 21 U - European MS-DOS 4.0 - ???
  41903.     AH = 98h
  41904.     ???
  41905. Return: ???
  41906. --------D-2199-------------------------------
  41907. INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
  41908.     AH = 99h
  41909.     DS:BX -> memory location to block on
  41910.     CX = timeout in milliseconds
  41911.     DH = nonzero if interruptable
  41912. Return: CF clear if awakened by event
  41913.         AX = 0000h
  41914.     CF set if unusual wakeup
  41915.         ZF set if timeout, clear if interrupted by signal
  41916.         AX = nonzero
  41917. Desc:    suspend calling process until another process sends a "restart" signal
  41918.       or a timeout occurs
  41919. SeeAlso: AH=9Ah,INT 2F/AX=0802h
  41920. --------D-219A-------------------------------
  41921. INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
  41922.     AH = 9Ah
  41923.     DS:BX -> memory location processes may have blocked on
  41924. Return: AX = number of processes awakened
  41925.     ZF set if no processes awakened
  41926. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  41927.       by several other European OEMs; its release falls between mainstream
  41928.       versions 3.2 and 3.3
  41929. Desc:    restart all processes waiting for the specified "restart" signal
  41930. SeeAlso: AH=99h,INT 2F/AX=0802h
  41931. --------I-21A0-------------------------------
  41932. INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
  41933.     AH = A0h
  41934. Return: AL = display status (see #0899)
  41935.     BX = host window status (see #0900)
  41936. Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
  41937. SeeAlso: AH=A1h
  41938.  
  41939. Bitfields for Attachmate Extra! display status:
  41940. Bit(s)    Description    (Table 0899)
  41941.  7    0=windowed, 1=enlarged
  41942.  6-3    current screen profile number 0-9
  41943.  2-0    active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
  41944.  
  41945. Bitfields for host window status:
  41946. Bit(s)    Description    (Table 0900)
  41947.  15    reserved
  41948.  14    0=host E window installed, 1=not
  41949.  13    0=host E terminal on, 1=off
  41950.  12    0=host E window displayed, 1=not
  41951.  11    reserved
  41952.  10    0=host D window installed, 1=not
  41953.  9    0=host D terminal on, 1=off
  41954.  8    0=host D window displayed, 1=not
  41955.  7    reserved
  41956.  6    0=host C window installed, 1=not
  41957.  5    0=host C terminal on, 1=off
  41958.  4    0=host C window displayed, 1=not
  41959.  3    reserved
  41960.  2    0=host B window installed, 1=not
  41961.  1    0=host B terminal on, 1=off
  41962.  0    0=host B window displayed, 1=not
  41963. --------I-21A1-------------------------------
  41964. INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
  41965.     AH = A1h
  41966.     AL = new display status byte (see #0899)
  41967. SeeAlso: AH=A0h,AH=A2h
  41968. --------v-21A1D5-----------------------------
  41969. INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
  41970.     AX = A1D5h
  41971. Return: AX = 900Dh if resident
  41972. SeeAlso: AX=9753h,AX=A55Ah
  41973. --------I-21A2-------------------------------
  41974. INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
  41975.     AH = A2h
  41976.     AL = new host window status byte (see #0901)
  41977. SeeAlso: AH=A1h
  41978.  
  41979. Bitfields for Attachmate Extra! host window status:
  41980. Bit(s)    Description    (Table 0901)
  41981.  7    0=power off, 1=power on
  41982.  6    0=not installed, 1=installed
  41983.  5-3    reserved
  41984.  2-0    window number 1-4=host B-E
  41985. --------I-21A3-------------------------------
  41986. INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
  41987.     AH = A3h
  41988.     AL = window number (1-4=host B-E)
  41989.     CX = 0001h
  41990.     DS:BX -> keystroke buffer
  41991.     DL = zero if keystroke buffer contains host function code (see #0902),
  41992.           non-zero if keystroke buffer contains ASCII character
  41993. Return: CX = zero if character sent, non-zero if not
  41994.     BX incremented if CX=0
  41995.  
  41996. (Table 0902)
  41997. Values for Attachmate Extra! host function code:
  41998.  00h=reserved    10h=PF16    20h=Clear    30h=SysReq
  41999.  01h=PF1    11h=PF17    21h=Print    31h=ErInp
  42000.  02h=PF2    12h=PF18    22h=Left    32h=ErEof
  42001.  03h=PF3    13h=PF19    23h=Right    33h=Ident
  42002.  04h=PF4    14h=PF20    24h=Up        34h=Test
  42003.  05h=PF5    15h=PF21    25h=Down    35h=Reset
  42004.  06h=PF6    16h=PF22    26h=Home    36h=DevCncl
  42005.  07h=PF7    17h=PF23    27h=Fast Left    37h=Dup
  42006.  08h=PF8    18h=PF24    28h=Fast Right    38h=FldMark
  42007.  09h=PF9    19h=Alt on    29h=Bksp    39h=Enter
  42008.  0Ah=PF10    1Ah=Alt off    2Ah=Insert    3Ah=CrSel
  42009.  0Bh=PF11    1Bh=Shift on    2Bh=Delete
  42010.  0Ch=PF12    1Ch=Shift off    2Ch=Backtab
  42011.  0Dh=PF13    1Dh=PA1        2Dh=Tab
  42012.  0Eh=PF14    1Eh=PA2        2Eh=Newline
  42013.  0Fh=PF15    1Fh=PA3        2Fh=Attn
  42014. --------I-21A4-------------------------------
  42015. INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
  42016.     AH = A4h
  42017.     AL = window number (1-4=host B-E)
  42018. Return: DS:BX -> 3270 display buffer
  42019. SeeAlso: AH=A5h,AH=B8h
  42020. --------I-21A5-------------------------------
  42021. INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
  42022.     AH = A5h
  42023.     AL = window number (1-4=host B-E)
  42024. Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
  42025. Note:    if the host window is configured with the Extended Attribute (EAB)
  42026.       feature, multiply the cursor position by 2 to obtain the byte offset
  42027.       into the display buffer
  42028. SeeAlso: AH=A4h
  42029. --------v-21A55A-----------------------------
  42030. INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
  42031.     AX = A55Ah
  42032. Return: AX = 5AA5h if resident
  42033. SeeAlso: AX=A1D5h,AX=AA00h
  42034. --------v-21AA00-----------------------------
  42035. INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
  42036.     AX = AA00h
  42037. Return: AX = 00AAh if resident
  42038. SeeAlso: AX=A55Ah,AX=AA03h
  42039. --------v-21AA03-----------------------------
  42040. INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
  42041.     AX = AA03h
  42042. Return: AX = 03AAh if resident
  42043. SeeAlso: AX=AA00h,AH=ABh
  42044. --------v-21AB-------------------------------
  42045. INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
  42046.     AH = ABh
  42047. Return: AX = 5555h if resident
  42048. SeeAlso: AX=AA03h,AX=BBBBh"VIRUS"
  42049. --------I-21AF-------------------------------
  42050. INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
  42051.     AH = AFh
  42052. Return: DS:BX -> translate tables (see #0903)
  42053.  
  42054. Format of Attachmate Extra! translate tables:
  42055. Offset    Size    Description    (Table 0903)
  42056.  00h 256 BYTEs    ASCII to 3270 buffer code translate table
  42057. 100h 256 BYTEs    3270 buffer code to ASCII translate table
  42058. 200h 256 BYTEs    3270 buffer code to EBCDIC translate table
  42059. 300h 256 BYTEs    EBCDIC to 3270 buffer code translate table
  42060. --------N-21B300-----------------------------
  42061. INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
  42062.     AX = B300h
  42063. Return: AX = 0000h if supported???
  42064. Note:    this function appeared with the packet signing/Large Internet Packets/
  42065.       IPX Checksum-aware NetWare shells
  42066. SeeAlso: AX=B301h,AX=B302h
  42067. --------N-21B301-----------------------------
  42068. INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
  42069.     AX = B301h
  42070. Return: AX = 0000h if supported???
  42071.         BX:CX indicate signature level (see #0904)
  42072. Note:    this function appeared with the packet signing/Large Internet Packets/
  42073.       IPX Checksum-aware NetWare shells
  42074. SeeAlso: AX=B300h,AX=B304h,#1477 at INT 2F/AX=7A20h/BX=0000h
  42075.  
  42076. (Table 0904)
  42077. Values for signature level indicator:
  42078.  0000h:0000h = signature level 0
  42079.  0002h:0000h = signature level 1
  42080.  0202h:0000h = signature level 2
  42081.  0202h:0202h = signature level 3
  42082. --------N-21B302-----------------------------
  42083. INT 21 U - Novell NetWare - START PACKET SIGNING
  42084.     AX = B302h
  42085.     CX = server connection (1-8)
  42086.     DS:SI -> 24-byte buffer containing ???
  42087. Return: ???
  42088. Notes:    this function appeared with the packet signing/Large Internet Packets/
  42089.       IPX Checksum-aware NetWare shells
  42090.     if packet signing is active, this call is required if and only if the
  42091.       last call successfully authenticated the workstation to the server
  42092. --------N-21B304-----------------------------
  42093. INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
  42094.     AX = B304h
  42095.     BX:CX = new signature level (see AX=B301h)
  42096. Return: ???
  42097. Note:    this function appeared with the packet signing/Large Internet Packets/
  42098.       IPX Checksum-aware NetWare shells
  42099. SeeAlso: AX=B300h,AX=B301h
  42100. --------N-21B4-------------------------------
  42101. INT 21 U - Novell NetWare - "AttachHandle"
  42102.     AH = B4h
  42103.     DS:SI -> input buffer (see #0905)
  42104. Return: AX = DOS file handle or return code
  42105. Note:    this is an interface provided by NetWare to give DOS file access to
  42106.       NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
  42107. SeeAlso: AX=E909h
  42108.  
  42109. Format of Novell NetWare input buffer:
  42110. Offset    Size    Description    (Table 0905)
  42111.  00h    BYTE    "WorkFileServer"
  42112.  01h    BYTE    access code
  42113.  02h    DWORD    "OpenHandle"
  42114.  06h    WORD    "OpenHandleCount"
  42115.  08h    DWORD    "OpenFileSize"
  42116. Note:    the six bytes at 02h-07h appear to be the six-byte NetWare handle
  42117.       returned by AX=E909h
  42118. --------N-21B500-----------------------------
  42119. INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
  42120.     AX = B500h
  42121. Return: ES:BX -> data
  42122.     CX = length
  42123. SeeAlso: AX=B501h,AX=B502h
  42124. --------N-21B501-----------------------------
  42125. INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
  42126.     AX = B501h
  42127. SeeAlso: AX=B500h,AX=B502h
  42128. --------N-21B502-----------------------------
  42129. INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
  42130.     AX = B502h
  42131. SeeAlso: AX=B500h,AX=B501h
  42132. --------N-21B5-------------------------------
  42133. INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
  42134.     AH = B5h
  42135.     AL = subfunction
  42136.         03h get task mode
  42137.         Return: AH = 00h
  42138.             AL = current task mode byte (see #0906)
  42139.         04h get task mode pointer
  42140.         Return: ES:BX -> task mode byte
  42141. Notes:    the task mode byte specifies how task cleanup should be performed, but
  42142.       is declared to be version-dependent
  42143.     allows a program to disable the automatic cleanup for programs managing
  42144.       task swapping, etc.
  42145.  
  42146. (Table 0906)
  42147. Values for NetWare task mode byte in version 3.01:
  42148.  00h-03h reserved
  42149.  04h     no task cleanup
  42150. --------N-21B505-----------------------------
  42151. INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
  42152.     AX = B505h
  42153.     ???
  42154. Return: ???
  42155. SeeAlso: AX=B502h,AX=B506h
  42156. --------N-21B506-----------------------------
  42157. INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
  42158.     AX = B506h
  42159. Return: AX = ??? (0002h)
  42160. SeeAlso: AX=B505h
  42161. --------N-21B507-----------------------------
  42162. INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
  42163.     AX = B507h
  42164. Return: AL = number of packet burst buffers (configured at shell load time)
  42165. --------N-21B6-------------------------------
  42166. INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
  42167.     AH = B6h
  42168.     AL = subfunction
  42169.         00h get extended file attributes
  42170.         01h set extended file attributes
  42171.         CL = extended file attributes (see #0907)
  42172.     DS:DX -> ASCIZ pathname (max 255 bytes)
  42173. Return: CF set on error
  42174.         AL = error code
  42175.         8Ch caller lacks privileges
  42176.         FEh not permitted to search directory
  42177.         FFh file not found
  42178.     CF clear if successful
  42179.         AL = 00h (success)
  42180.         CL = current extended file attributes (see #0907)
  42181. Note:    this function is supported by Advanced NetWare 2.1+
  42182. SeeAlso: AX=4300h,AH=E3h/SF=0Fh
  42183.  
  42184. Bitfields for NetWare extended file attributes:
  42185. Bit(s)    Description    (Table 0907)
  42186.  2-0    search mode (executables only)
  42187.     000 none (use shell's default search)
  42188.     001 search on all opens without path
  42189.     010 do not search
  42190.     011 search on read-only opens without path
  42191.     100 reserved
  42192.     101 search on all opens
  42193.     110 reserved
  42194.     111 search on all read-only opens
  42195.  3    reserved
  42196.  4    transactions on file tracked
  42197.  5    file's FAT indexed
  42198.  6    read audit (to be implemented)
  42199.  7    write audit (to be implemented)
  42200. --------N-21B7-------------------------------
  42201. INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
  42202.     AH = B7h
  42203.     AL = new value for HoldFileFlag
  42204. Return: AL = previous value of HoldFileFlag
  42205. Note:    this function provided backward compatibility with a bug in early
  42206.       DOS versions and CP/M, but is no longer used or supported
  42207. --------I-21B8-------------------------------
  42208. INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
  42209.     AH = B8h
  42210.     AL = window number (1-4=host B-E)
  42211.     DL = 01h
  42212. Notes:    only valid in CUT mode
  42213.     next AID keystroke (eg Enter) enables host buffer updates
  42214. SeeAlso: AH=A4h
  42215. --------N-21B800-----------------------------
  42216. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
  42217.     AX = B800h
  42218.     CX = size of reply buffer (01h-3Fh)
  42219.     ES:BX -> reply buffer for capture flags table (see #0908)
  42220. Return: AL = status
  42221.         00h successful
  42222. Note:    this function is supported by Advanced NetWare 2.0+
  42223. SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
  42224.  
  42225. Format of NetWare capture flags table:
  42226. Offset    Size    Description    (Table 0908)
  42227.  00h    BYTE    status (used internally, should be set to 00h)
  42228.  01h    BYTE    print flags (see #0909)
  42229.  02h    BYTE    tab size (01h-12h, default 08h)
  42230.  03h    BYTE    printer number on server (00h-04h, default 00h)
  42231.  04h    BYTE    number of copies to print (00h-FFh, default 01h)
  42232.  05h    BYTE    form type required in printer (default 00h)
  42233.  06h    BYTE    reserved
  42234.  07h 13 BYTEs    text to be placed on banner page
  42235.  14h    BYTE    reserved
  42236.  15h    BYTE    default local printer (00h = LPT1)
  42237.  16h    WORD    (big-endian) timeout in clock ticks for flushing capture file
  42238.           on inactivity, or 0000h to disable timeout
  42239.  18h    BYTE    flush capture file on LPT close if nonzero
  42240.  19h    WORD    (big-endian) maximum lines per page
  42241.  1Bh    WORD    (big-endian) maximum characters per line
  42242.  1Dh 13 BYTEs    name of form required in printer
  42243.  2Ah    BYTE    LPT capture flag
  42244.         00h inactive, FFh LPT device is being captured
  42245.  2Bh    BYTE    file capture flag
  42246.         00h if no file specified, FFh if capturing to file
  42247.  2Ch    BYTE    timing out (00h if no timeout in effect, FFh if timeout counter
  42248.           running)
  42249.  2Dh    DWORD    (big-endian) address of printer setup string
  42250.  31h    DWORD    (big-endian) address of printer reset string
  42251.  35h    BYTE    target connection ID
  42252.  36h    BYTE    capture in progress if FFh
  42253.  37h    BYTE    job queued for printing if FFh
  42254.  38h    BYTE    print job valid if FFh
  42255.  39h    DWORD    bindery object ID of print queue if previous byte FFh
  42256.  3Dh    WORD    (big-endian) print job number (1-999)
  42257.  
  42258. Bitfields for NetWare print flags:
  42259. Bit(s)    Description    (Table 0909)
  42260.  2    print capture file if interrupted by loss of connection
  42261.  3    no automatic form feed after print job
  42262.  6    printing control sequences interpreted by print service
  42263.  7    print banner page before capture file
  42264. --------N-21B801-----------------------------
  42265. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
  42266.     AX = B801h
  42267.     CX = size of buffer (01h-3Fh)
  42268.     ES:BX -> buffer containing capture flags table (see #0908)
  42269. Return: AL = status
  42270.         00h successful
  42271. Note:    this function is supported by Advanced NetWare 2.0+
  42272. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  42273. --------N-21B802-----------------------------
  42274. INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
  42275.     AX = B802h
  42276.     CX = size of reply buffer (01h-3Fh)
  42277.     DH = LPT port (00h-02h)
  42278.     ES:BX -> reply buffer for capture flags table (see #0908)
  42279. Return: AL = status
  42280.         00h successful
  42281. Note:    this function is supported by Advanced NetWare 2.1+
  42282. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  42283. --------N-21B803-----------------------------
  42284. INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
  42285.     AX = B803h
  42286.     CX = size of buffer (01h-3Fh)
  42287.     DH = LPT port (00h-02h)
  42288.     ES:BX -> buffer containing capture flags table (see #0908)
  42289. Return: AL = status
  42290.         00h successful
  42291. Note:    this function is supported by Advanced NetWare 2.1+
  42292. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  42293. --------N-21B804-----------------------------
  42294. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
  42295.     AX = B804h
  42296. Return: DH = default LPT port (00h-02h)
  42297. Note:    this function is supported by Advanced NetWare 2.1+
  42298. SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
  42299. --------N-21B805-----------------------------
  42300. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
  42301.     AX = B805h
  42302.     DH = new default LPT port (00h-02h)
  42303. Return: AL = status
  42304.         00h successful
  42305. Note:    this function is supported by Advanced NetWare 2.1+
  42306. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
  42307. --------N-21B806-----------------------------
  42308. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
  42309.     AX = B806h
  42310.     DH = LPT port (00h-02h)
  42311.     BX:CX = print queue's object ID
  42312. Return: AL = status
  42313.         00h successful
  42314.         FFh job already set
  42315. Desc:    specify the print queue on which a print job is to be placed the next
  42316.       time a capture is started on the given printer port
  42317. Note:    this function is supported by Advanced NetWare 2.1+
  42318. SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
  42319. --------N-21B807-----------------------------
  42320. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
  42321.     AX = B807h
  42322.     DH = LPT port (00h-02h)
  42323.     BX = job number (see AH=E3h/SF=68h)
  42324.     SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
  42325. Return: AL = status
  42326.         00h successful
  42327.         FFh job already queued
  42328. Desc:    specify the capture file and print job to be used for subsequent
  42329.       output to the given printer port
  42330. Note:    this function is supported by Advanced NetWare 2.1+
  42331. SeeAlso: AX=B801h,AX=B806h,AH=E0/SF=09h,AH=E3h/SF=68h
  42332. --------N-21B808-----------------------------
  42333. INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
  42334.     AX = B808h
  42335.     ES:BX -> 12-byte buffer for user name
  42336. Return: AL = status
  42337.         00h successful
  42338. Desc:    get the user name which is printed on the banner page
  42339. Notes:    this function is supported by Advanced NetWare 2.1+
  42340.     the default name is the login name of the user
  42341. SeeAlso: AX=B809h
  42342. --------N-21B809-----------------------------
  42343. INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
  42344.     AX = B809h
  42345.     ES:BX -> 12-byte buffer containing user name
  42346. Return: AL = status
  42347.         00h successful
  42348. Desc:    specify the user name which is printed on the banner page
  42349. Notes:    this function is supported by Advanced NetWare 2.1+
  42350.     the default name is the login name of the user
  42351. SeeAlso: AX=B808h
  42352. --------N-21B9-------------------------------
  42353. INT 21 U - Novell NetWare - "SpecialAttachableFunction"
  42354.     AH = B9h
  42355.     AL = FFh to hook this function
  42356.         ES:BX -> function to invoke on AH=B9h when AL<>FFh
  42357. Note:    this function is no longer used or supported by current versions of
  42358.       NetWare
  42359. --------N-21BA-------------------------------
  42360. INT 21 U - Novell NetWare - "ReturnCommandComPointers"
  42361.     AH = BAh
  42362. Return: DX = environment segment
  42363.     ES:DI -> COMMAND.COM drive
  42364. Desc:    used to edit the COMSPEC and PATH variables in the master environment
  42365.       when mapping network drives
  42366. Note:    this function was documented in older Novell documents which are no
  42367.       longer available
  42368. --------N-21BB-------------------------------
  42369. INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
  42370.     AH = BBh
  42371.     AL = new EOJ flag
  42372.         00h disable EOJs
  42373.         01h enable EOJs
  42374. Return: AL = old EOJ flag
  42375. Desc:    specify whether the network shell should automatically generate an
  42376.       End of Job call when the root command processor regains control
  42377. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  42378.       Alloy NTNX
  42379. SeeAlso: AH=19h,AH=D6h
  42380. --------v-21BBBB-----------------------------
  42381. INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
  42382.     AX = BBBBh
  42383. Return: AX = 6969h
  42384. SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
  42385. --------N-21BC-------------------------------
  42386. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
  42387.     AH = BCh
  42388.     AL = flags (see #0911)
  42389.     BX = file handle
  42390.     CX:DX = starting offset in file
  42391.     SI:DI = length of region to lock
  42392.     BP = timeout in timer ticks (1/18 sec)
  42393.         0000h = don't wait if already locked
  42394. Return: AL = status (see #0910)
  42395. Desc:    add the specified physical record to the log table, optionally locking
  42396.       it
  42397. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42398.       Alloy NTNX
  42399. SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
  42400.  
  42401. (Table 0910)
  42402. Values for NetWare status:
  42403.  00h    successful
  42404.  96h    no dynamic memory for file
  42405.  FEh    timed out
  42406.  FFh    failed
  42407.  
  42408. Bitfields for NetWare flags:
  42409. Bit(s)    Description    (Table 0911)
  42410.  0    lock as well as log record
  42411.  1    non-exclusive lock
  42412. --------N-21BD-------------------------------
  42413. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
  42414.     AH = BDh
  42415.     BX = file handle
  42416.     CX:DX = starting offset in file
  42417.     SI:DI = length of record
  42418. Return: AL = status
  42419.         00h successful
  42420.         FFh record not locked
  42421. Desc:    unlock the specified physical record but do not remove it from log
  42422.       table
  42423. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42424.       Alloy NTNX
  42425. SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
  42426. --------N-21BE-------------------------------
  42427. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
  42428.     AH = BEh
  42429.     BX = file handle
  42430.     CX:DX = starting offset within file
  42431.     SI:DI = record length in bytes
  42432. Return: AL = status
  42433.         00h successful
  42434.         FFh specified record not locked
  42435. Desc:    unlock the physical record and remove it from the log table
  42436. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42437.       Alloy NTNX
  42438. SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
  42439. --------v-21BE-------------------------------
  42440. INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
  42441.     AH = BEh
  42442. Return: AX = 1234h if resident
  42443. SeeAlso: AX=BBBBh,AX=BE00h
  42444. --------v-21BE00-----------------------------
  42445. INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
  42446.     AX = BE00h
  42447.     CF set
  42448. Return: CF clear if resident
  42449. SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
  42450. --------N-21BF-------------------------------
  42451. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
  42452.     AH = BFh
  42453.     AL = flags (see #0911)
  42454.     DS:DX -> opened FCB (see #0506 at AH=0Fh)
  42455.     BX:CX = offset
  42456.     BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
  42457.     SI:DI = length
  42458. Return: AL = error code (see #0910)
  42459. Note:    this function was added in NetWare 4.6, but was removed some time prior
  42460.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42461.       documentation
  42462. SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
  42463. --------!---Section--------------------------
  42464. Interrupt List, part 6 of 12
  42465. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  42466. --------N-21C0-------------------------------
  42467. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
  42468.     AH = C0h
  42469.     DS:DX -> non-extended FCB (see #0506 at AH=0Fh)
  42470.     BX:CX = offset
  42471. Return: AL = error code (see #0910)
  42472. Notes:    unlocks record but does not remove it from log table
  42473.     this function was added in NetWare 4.6, but was removed some time prior
  42474.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42475.       documentation
  42476. SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
  42477. --------v-21C0-------------------------------
  42478. INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
  42479.     AH = C0h
  42480. Return: AX = 0300h if "Slow"/"Zerotime" resident
  42481.     AX = 1234h if "Solano" resident
  42482. SeeAlso: AX=BE00h,AH=C1h"VIRUS",AX=C301h"VIRUS"
  42483. --------N-21C1-------------------------------
  42484. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
  42485.     AH = C1h
  42486.     DS:DX -> opened FCB (see #0506 at AH=0Fh)
  42487.     BX:CX = offset
  42488. Return: AL = error code (see #0910)
  42489. Note:    unlocks record and removes it from log table
  42490.     this function was added in NetWare 4.6, but was removed some time prior
  42491.       to Advanced NetWare, and is no longer listed in current Novell
  42492.       documentation
  42493. SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
  42494. --------v-21C1-------------------------------
  42495. INT 21 - VIRUS - "Solano" - ???
  42496.     AH = C1h
  42497.     ???
  42498. Return: ???
  42499. SeeAlso: AH=C0h"VIRUS"
  42500. --------N-21C2-------------------------------
  42501. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
  42502.     AH = C2h
  42503.     AL = flags
  42504.         bit 1: non-exclusive lock
  42505.     BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
  42506. Return: AL = status
  42507.         00h successful
  42508.         FEh timed out
  42509.         FFh failed
  42510. Desc:    attempt to lock all physical records listed in the log table
  42511. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42512.       Alloy NTNX
  42513.     status FFh will be returned if one or more physical records have been
  42514.       exclusively locked by another process
  42515. SeeAlso: AH=BFh,AH=C3h,AH=D1h
  42516. --------v-21C2-------------------------------
  42517. INT 21 - VIRUS - "Scott's Valley" - ???
  42518.     AH = C2h
  42519.     ???
  42520. Return: ???
  42521. SeeAlso: AH=C0h"VIRUS"
  42522. --------N-21C3-------------------------------
  42523. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECRD SET
  42524.     AH = C3h
  42525. Desc:    unlock all currently-locked physical records in the log table, but do
  42526.       not remove them from the table
  42527. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42528.       Alloy NTNX
  42529. SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
  42530. --------v-21C301DXF1F1-----------------------
  42531. INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
  42532.     AX = C301h
  42533.     DX = F1F1h
  42534. Return: DX = 0E0Eh if resident
  42535. SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
  42536. --------N-21C4-------------------------------
  42537. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
  42538.     AH = C4h
  42539. Desc:    unlock all physical records in the log table and remove them from the
  42540.       log table
  42541. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42542.       Alloy NTNX
  42543. SeeAlso: AH=BEh,AH=C1h,AH=D5h
  42544. --------N-21C500-----------------------------
  42545. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
  42546.     AX = C500h
  42547.     DS:DX -> semaphore name (counted string, max 127 bytes)
  42548.     CL = initial value for semaphore
  42549. Return: AL = status
  42550.         00h successful
  42551.         BL = number of processes having semaphore open
  42552.         CX:DX = semaphore handle
  42553.         03h name length greater than 127 (see Novell document FYI.A.4611)
  42554.         FEh invalid name length
  42555.         FFh invalid semaphore value
  42556. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42557.       Alloy NTNX
  42558.     the semaphore's value is incremented by AX=C503h and decremented by
  42559.       AX=C502h
  42560. SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h
  42561. --------v-21C500-----------------------------
  42562. INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
  42563.     AX = C500h
  42564. Return: AX = 6731h if resident
  42565. SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
  42566. --------N-21C501-----------------------------
  42567. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
  42568.     AX = C501h
  42569.     CX:DX = semaphore handle
  42570. Return: AL = status
  42571.         00h successful
  42572.         CX = semaphore value (-127 to 127)
  42573.         DL = count of processes which have the semaphore open
  42574.         FFh invalid handle
  42575. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42576.       Alloy NTNX
  42577. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h
  42578. --------N-21C502-----------------------------
  42579. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
  42580.     AX = C502h
  42581.     CX:DX = semaphore handle
  42582.     BP = timeout limit in timer ticks (1/18 sec)
  42583.         0000h return immediately if semaphore already zero or negative
  42584. Return: AL = status
  42585.         00h successful
  42586.         FEh timeout
  42587.         FFh invalid handle
  42588. Desc:    decrement the semaphore's value, optionally waiting until its value
  42589.       becomes positive before decrementing
  42590. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42591.       Alloy NTNX
  42592. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h
  42593. --------N-21C503-----------------------------
  42594. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
  42595.     AX = C503h
  42596.     CX:DX = semaphore handle
  42597. Return: AL = status
  42598.         00h successful
  42599.         01h semaphore value overflowed
  42600.         FFh invalid handle
  42601. Desc:    increment the semaphore's value and signal the first process (if any)
  42602.       in the queue waiting on the semaphore
  42603. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42604.       Alloy NTNX
  42605. SeeAlso: AX=C500h"NetWare",AX=C502h
  42606. --------N-21C504-----------------------------
  42607. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
  42608.     AX = C504h
  42609.     CX:DX = semaphore handle
  42610. Return: AL = status
  42611.         00h successful
  42612.         FFh invalid handle
  42613. Desc:    decrement the semaphore's open count, and delete the semaphore if the
  42614.       count reaches zero
  42615. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42616.       Alloy NTNX
  42617. SeeAlso: AX=C500h"NetWare",AX=C501h
  42618. --------N-21C6-------------------------------
  42619. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
  42620.     AH = C6h
  42621.     AL = subfunction
  42622.         00h set old "compatibility" mode (default)
  42623.         01h set new extended locks mode
  42624.         02h get lock mode
  42625. Return: AL = current lock mode
  42626. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  42627.       Alloy NTNX
  42628.     the locking mode should be 01h for NetWare 4.61+ and Advanced
  42629.       NetWare 1.0+ locking calls, and 00h for all older calls
  42630. SeeAlso: AH=BCh,AH=C4h,AH=D0h
  42631. --------v-21C6-------------------------------
  42632. INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
  42633.     AH = C6h
  42634. Return: AL = 55h if resident
  42635. SeeAlso: AX=C500h"VIRUS",AX=C603h
  42636. --------v-21C603-----------------------------
  42637. INT 21 - VIRUS - "Yankee" or "MLTI" - INSTALLATION CHECK
  42638.     AX = C603h
  42639.     CF set
  42640. Return: CF clear if resident
  42641. SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
  42642. --------N-21C700-----------------------------
  42643. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
  42644.     AX = C700h
  42645. Return: CF clear if successful
  42646.         AL = 00h
  42647.     CF set on error
  42648.         AL = error code
  42649.         96h out of memory
  42650.         FEh implicit transaction already active, converted to explicit
  42651.         FFh explicit transaction already active
  42652. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42653. SeeAlso: AX=C701h,AX=C702h,AX=C703h
  42654. --------v-21C700-----------------------------
  42655. INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
  42656.     AX = C700h
  42657. Return: AL = 07h if resident
  42658. SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
  42659. --------N-21C701-----------------------------
  42660. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
  42661.     AX = C701h
  42662. Return: AL = status (00h,FDh-FFh) (see #0912)
  42663.         00h successful
  42664.         CX:DX = transaction number
  42665.     CF clear except when AL=FFh
  42666. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42667. SeeAlso: AX=C700h"NetWare",AX=C703h
  42668.  
  42669. (Table 0912)
  42670. Values for NetWare TTS status:
  42671.  00h    successful
  42672.  FDh    transaction tracking disabled
  42673.  FEh    transaction ended records locked
  42674.  FFh    no explicit transaction active
  42675. --------N-21C702-----------------------------
  42676. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
  42677.     AX = C702h
  42678. Return: AL = status
  42679.         00h not available
  42680.         01h available
  42681.         FDh available but disabled
  42682. Desc:    determine whether the default file server supports TTS
  42683. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42684. --------N-21C703-----------------------------
  42685. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
  42686.     AX = C703h
  42687. Return: CF clear if successful
  42688.         AL = 00h
  42689.     CF set on error
  42690.         AL = error code (FDh-FFh) (see #0912)
  42691. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42692. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h
  42693. --------N-21C704-----------------------------
  42694. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
  42695.     AX = C704h
  42696.     CX:DX = transaction number (see AX=C701h)
  42697. Return: AL = status
  42698.         00h successful
  42699.         FFh not yet written to disk
  42700. Desc:    verify that a transaction has actually been written to disk
  42701. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42702.     transactions are written to disk in the order in which they are ended,
  42703.       but it may take as much as five seconds for the data to be written
  42704. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h
  42705. --------N-21C705-----------------------------
  42706. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
  42707.     AX = C705h
  42708. Return: AL = status
  42709.         00h successful
  42710.     CL = maximum logical record locks (default 0)
  42711.     CH = maximum physical record locks (default 0)
  42712. Desc:    get the per-application limits on record locks allowed before an
  42713.       implicit transaction is begun
  42714. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42715.     if either limit is FFh, implicit transactions are disabled for the
  42716.       corresponding lock type
  42717. SeeAlso: AX=C706h,AX=C707h
  42718. --------N-21C706-----------------------------
  42719. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
  42720.     AX = C706h
  42721.     CL = maximum logical record locks (default 0)
  42722.     CH = maximum physical record locks (default 0)
  42723. Return: AL = status
  42724.         00h successful
  42725. Desc:    specify the per-application limits on record locks allowed before an
  42726.       implicit transaction is begun
  42727. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42728.     if either limit is set to FFh, implicit transactions are disabled for
  42729.       the corresponding lock type
  42730. SeeAlso: AX=C705h,AX=C708h
  42731. --------N-21C707-----------------------------
  42732. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
  42733.     AX = C707h
  42734. Return: AL = status
  42735.         00h successful
  42736.     CL = maximum logical record locks (default 0)
  42737.     CH = maximum physical record locks (default 0)
  42738. Desc:    get the per-workstation limits on record locks allowed before an
  42739.       implicit transaction is begun
  42740. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42741.     if either limit is FFh, implicit transactions are disabled for the
  42742.       corresponding lock type
  42743. SeeAlso: AX=C705h,AX=C708h
  42744. --------N-21C708-----------------------------
  42745. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
  42746.     AX = C708h
  42747.     CL = maximum logical record locks (default 0)
  42748.     CH = maximum physical record locks (default 0)
  42749. Return: AL = status
  42750.         00h successful
  42751. Desc:    specify the per-workstation limits on record locks allowed before an
  42752.       implicit transaction is begun
  42753. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  42754.     if either limit is set to FFh, implicit transactions are disabled for
  42755.       the corresponding lock type
  42756. SeeAlso: AX=C706h,AX=C707h
  42757. --------N-21C8-------------------------------
  42758. INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
  42759.     AH = C8h
  42760.     if function C6h lock mode 00h:
  42761.         DL = mode
  42762.         00h no wait
  42763.         01h wait
  42764.     if function C6h lock mode 01h:
  42765.         BP = timeout in timer ticks (1/18 sec)
  42766. Return: AL = error code
  42767. Desc:    used to provide TTS support for applications which are not aware of
  42768.       Novell's Transaction Tracking System
  42769. Note:    this function was added in NetWare 4.0, but was removed some time prior
  42770.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42771.       documentation
  42772. SeeAlso: AH=C9h
  42773. --------N-21C9-------------------------------
  42774. INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
  42775.     AH = C9h
  42776. Return: AL = error code
  42777. Desc:    used to provide TTS support for applications which are not aware of
  42778.       Novell's Transaction Tracking System
  42779. Note:    this function was added in NetWare 4.0, but was removed some time prior
  42780.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42781.       documentation
  42782. SeeAlso: AH=C8h
  42783. --------N-21CA-------------------------------
  42784. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
  42785.     AH = CAh
  42786.     DS:DX -> FCB (see #0506 at AH=0Fh)
  42787.     if function C6h lock mode 01h:
  42788.         AL = log and lock flag
  42789.         00h log file only
  42790.         01h lock as well as log file
  42791.         BP = lock timeout in timer ticks (1/18 sec)
  42792. Return: AL = error code
  42793.         00h successful
  42794.         96h no dynamic memory for file
  42795.         FEh timeout
  42796.         FFh failed
  42797. Desc:    provides file locking support for FCBs
  42798. Note:    this function was added in NetWare 4.0, but was removed some time prior
  42799.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42800.       documentation
  42801. SeeAlso: AH=CBh
  42802. --------v-21CA15-----------------------------
  42803. INT 21 - VIRUS - "Piter" - ???
  42804.     AX = CA15h
  42805.     ???
  42806. Return: ???
  42807. SeeAlso: AH=CCh"VIRUS"
  42808. --------N-21CB-------------------------------
  42809. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
  42810.     AH = CBh
  42811.     if function C6h lock mode 00h:
  42812.         DL = mode (00h no wait, 01h wait)
  42813.     if function C6h lock mode 01h:
  42814.         BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
  42815. Return: AL = status (00h,FEh,FFh) (see #0913)
  42816. Desc:    attempt to lock all files listed in the log table
  42817. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  42818.       Alloy NTNX
  42819.     status FFh will be returned if one or more of the files have already
  42820.       been exclusively locked by another process
  42821. SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
  42822.  
  42823. (Table 0913)
  42824. Values for NetWare status:
  42825.  00h    successful
  42826.  FEh    timed out
  42827.  FFh    failed
  42828. --------v-21CB-------------------------------
  42829. INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
  42830.     AH = CBh
  42831. Return: AL = 07h if resident
  42832. SeeAlso: AX=C700h"VIRUS",AX=CB02h
  42833. --------v-21CB02-----------------------------
  42834. INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
  42835.     AX = CB02h
  42836. Return: AX = 02CBh if resident
  42837. SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
  42838. --------N-21CC-------------------------------
  42839. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
  42840.     AH = CCh
  42841.     DS:DX -> FCB (see #0506 at AH=0Fh)
  42842. Return: none
  42843. Desc:    unlocks file, but does not remove it from the log table or close it
  42844. Note:    this function was added in NetWare 4.0, but was removed some time prior
  42845.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42846.       documentation
  42847. SeeAlso: AH=CAh,AH=CDh
  42848. --------v-21CC-------------------------------
  42849. INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
  42850.     AH = CCh
  42851. Return: AX = 0700h if resident
  42852. SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
  42853. --------N-21CD-------------------------------
  42854. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
  42855.     AH = CDh
  42856. Return: none
  42857. Desc:    unlock all files listed in the log table, but don't remove them from
  42858.       the table
  42859. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  42860.       Alloy NTNX
  42861. SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
  42862. --------v-21CD-------------------------------
  42863. INT 21 - VIRUS - "Westwood" - ???
  42864.     AH = CDh
  42865.     ???
  42866. Return: ???
  42867. SeeAlso: AH=CCh"VIRUS"
  42868. --------N-21CE-------------------------------
  42869. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
  42870.     AH = CEh
  42871.     DS:DX -> FCB (see #0506 at AH=0Fh)
  42872. Return: AL = error code
  42873. Desc:    unlocks file and removes it from log table, then closes all opened and
  42874.       logged occurrences
  42875. Note:    this function was added in NetWare 4.0, but was removed some time prior
  42876.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  42877.       documentation
  42878. SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
  42879. --------N-21CF-------------------------------
  42880. INT 21 - LANstep - ???
  42881.     AH = CFh
  42882.     ???
  42883. Return: ???
  42884. Program: LANstep is a redesign of the Waterloo Microsystems PORT network
  42885. --------N-21CF-------------------------------
  42886. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
  42887.     AH = CFh
  42888. Return: AL = 00h
  42889. Desc:    unlock and remove all files from log table
  42890. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  42891.       Alloy NTNX
  42892. SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
  42893. --------N-21D0-------------------------------
  42894. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
  42895.     AH = D0h
  42896.     DS:DX -> record string (counted string, max 99 data bytes)
  42897.     if function C6h lock mode 01h: (Novell, NTNX only)
  42898.         AL = flags
  42899.         bit 0: lock as well as log the record
  42900.         bit 1: non-exclusive lock
  42901.         BP = lock timeout in timer ticks (1/18 sec)
  42902. Return: AL = status
  42903.         00h successful
  42904.         96h no dynamic memory for file
  42905.         FEh timed out
  42906.         FFh unsuccessful
  42907. Desc:    add the specified logical record name to the log table, and optionally
  42908.       lock the record
  42909. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  42910.       Banyan VINES, and Alloy NTNX
  42911.     locks on logical record names are advisory and may be ignored by other
  42912.       applications
  42913. SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
  42914. --------v-21D000-----------------------------
  42915. INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
  42916.     AX = D000h
  42917. Return: BX = 1234h if resident
  42918. SeeAlso: AH=CCh"VIRUS",AH=D5h"VIRUS",AX=D5AAh
  42919. --------N-21D1-------------------------------
  42920. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
  42921.     AH = D1h
  42922.     AL = lock type (00h exclusive, 01h shareable)
  42923.     if function C6h lock mode 00h:
  42924.         DL = mode (00h no wait, 01h wait)
  42925.     if function C6h lock mode 01h: (Novell only)
  42926.         BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
  42927. Return: AL = status (see #0913)
  42928. Desc:    attempt to lock all logical record names listed in the log table
  42929. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  42930.       Banyan VINES, and Alloy NTNX
  42931.     status FFh will be returned if one or more logical records have been
  42932.       exclusively locked by another process
  42933.     locks on logical record names are advisory and may be ignored by other
  42934.       applications
  42935. SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
  42936. --------N-21D2-------------------------------
  42937. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
  42938.     AH = D2h
  42939.     DS:DX -> semaphore identifier (counted string up to 99 chars long)
  42940. Return: AL = status
  42941.         00h successful
  42942.         FFh no such record
  42943. Desc:    unlock the logical record name but do not remove it from the log table
  42944. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  42945.       Banyan VINES, and Alloy NTNX
  42946.     locks on logical record names are advisory and may be ignored by other
  42947.       applications
  42948. SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
  42949. --------v-21D2-------------------------------
  42950. INT 21 - VIRUS???
  42951.     AH = D2h
  42952.     ???
  42953. Return: ???
  42954. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  42955.       with Novell DOS 7, and is presumably some virus's installation check
  42956. SeeAlso: AH=4Ah/BX=00B6h
  42957. --------N-21D3-------------------------------
  42958. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
  42959.     AH = D3h
  42960. Desc:    unlock all currently-locked logical record names in the log table, but
  42961.       do not remove them from the table
  42962. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  42963.       Banyan VINES, and Alloy NTNX
  42964.     locks on logical record names are advisory and may be ignored by other
  42965.       applications
  42966. SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
  42967. --------N-21D4-------------------------------
  42968. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
  42969.     AH = D4h
  42970.     DS:DX -> logical record name (counted string up to 99 chars long)
  42971. Return: AL = status (00h,FFh) (see #0914)
  42972. Desc:    unlock and remove the logical record name from the log table
  42973. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  42974.       Banyan VINES, and Alloy NTNX
  42975.     locks on logical record names are advisory and may be ignored by other
  42976.       applications
  42977. SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
  42978.  
  42979. (Table 0914)
  42980. Values for NetWare status:
  42981.  00h    successful
  42982.  FFh    no such record name
  42983. --------N-21D5-------------------------------
  42984. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
  42985.     AH = D5h
  42986. Return: AL = error code (00h,FFh) (see #0914)
  42987. Desc:    unlock and remove all logical record name from the log table
  42988. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  42989.       Banyan VINES, and Alloy NTNX
  42990.     locks on logical record names are advisory and may be ignored by other
  42991.       applications
  42992. SeeAlso: AH=D1h,AH=D3h,AH=D4h
  42993. --------v-21D5-------------------------------
  42994. INT 21 - VIRUS - "Carfield" - ???
  42995.     AH = D5h
  42996.     ???
  42997. Return: ???
  42998. SeeAlso: AX=D5AAh,AH=F3h"Carfield"
  42999. --------v-21D5AA-----------------------------
  43000. INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
  43001.     AX = D5AAh
  43002. Return: AX = 2A55h if "Diamond-A" resident
  43003.     AX = 2A03h if "Diamond-B"-family virus resident
  43004. SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
  43005. --------v-21D5AABPDEAA-----------------------
  43006. INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
  43007.     AX = D5AAh
  43008.     BP = DEAAh
  43009. Return: SI = 4321h if resident
  43010. SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
  43011. --------N-21D6-------------------------------
  43012. INT 21 - Novell NetWare - WORKSTATION - END OF JOB
  43013.     AH = D6h
  43014.     BX = job flag (0000h current job, FFFFh all processes on workstation)
  43015. Return: AL = error code
  43016. Desc:    unlocks and clears all locked or logged files and records held by the
  43017.       process(es), closes all files, resets error and lock modes, and
  43018.       releases all network resources
  43019. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43020.       Alloy NTNX
  43021. SeeAlso: AH=BBh,AH=D7h
  43022. --------N-21D7-------------------------------
  43023. INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
  43024.     AH = D7h
  43025. Return: AL = error code
  43026. Desc:    this function closes the caller's open files, logs it out from all
  43027.       file servers, detaches the workstation from all non-default file
  43028.       servers, and maps a drive to the default server's SYS:LOGIN directory
  43029. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43030.       Alloy NTNX
  43031. SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h
  43032. --------N-21D8-------------------------------
  43033. INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
  43034.     AH = D8h
  43035.     DL = resource number
  43036. Return: AL = status (00h successful, FFh unsucessful)
  43037. Note:    this function is no longer used or supported by NetWare, and is not
  43038.       documented in Novell documents
  43039. SeeAlso: AH=D9h
  43040. --------N-21D9-------------------------------
  43041. INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
  43042.     AH = D9h
  43043.     DL = resource number
  43044. Return: AL = status (00h successful, FFh unsucessful)
  43045. Note:    this function is no longer used or supported by NetWare, and is not
  43046.       documented in Novell documents
  43047. SeeAlso: AH=D8h
  43048. --------N-21DA-------------------------------
  43049. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
  43050.     AH = DAh
  43051.     DL = volume number
  43052.     ES:DI -> reply buffer (see #0915)
  43053. Return: AL = 00h
  43054. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43055.     operator console rights are not required to make this call
  43056.     reported total blocks and total unused blocks include the Hot Fix
  43057.       Table; the NetWare shell's implementation of INT 21/AH=36h will
  43058.       report values larger than 268MB as 268MB.
  43059. SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  43060.  
  43061. Format of NetWare reply buffer:
  43062. Offset    Size    Description    (Table 0915)
  43063.  00h    WORD    sectors/block
  43064.  02h    WORD    total blocks on volume
  43065.  04h    WORD    unused blocks
  43066.  06h    WORD    total directory entries
  43067.  08h    WORD    unused directory entries
  43068.  0Ah 16 BYTEs    volume name, null padded
  43069.  1Ah    WORD    removable flag, 0000h = not removable
  43070. Note:    all words are big-endian
  43071. --------v-21DADA-----------------------------
  43072. INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
  43073.     AX = DADAh
  43074. Return: AH = A5h
  43075. SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
  43076. --------v-21DAFE-----------------------------
  43077. INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
  43078.     AX = DAFEh
  43079. Return: AX = 1234h if resident
  43080. SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
  43081. --------N-21DB-------------------------------
  43082. INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
  43083.     AH = DBh
  43084. Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
  43085. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43086.       Alloy NTNX
  43087. SeeAlso: AH=0Eh
  43088. --------N-21DC-------------------------------
  43089. INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
  43090.     AH = DCh
  43091. Return: AL = logical connection number
  43092.         00h if NetWare not loaded or this machine is a non-dedicated server
  43093.     CX = station number in ASCII (CL = first digit)
  43094. Notes:    this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
  43095.       NTNX
  43096.     station number only unique for those PCs connected to same semaphore
  43097.       service
  43098. SeeAlso: AH=F2h"NetWare"
  43099. --------d-21DC-------------------------------
  43100. INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
  43101.     AH = DCh
  43102.     DX = state
  43103.         0000h turn on
  43104.         0001h turn off
  43105. SeeAlso: AX=FEDCh
  43106. --------N-21DD-------------------------------
  43107. INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
  43108.     AH = DDh
  43109.     DL = error mode
  43110.         00h invoke INT 24 on critical I/O errors (default)
  43111.         01h return NetWare extended error code in AL
  43112.         02h return error code in AL, mapped to standard DOS error codes
  43113. Return: AL = previous error mode
  43114. Note:    this function is supported by Advanced NetWare 2.0+
  43115. SeeAlso: INT 24
  43116. --------v-21DD-------------------------------
  43117. INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
  43118.     AH = DDh
  43119.     CX = number of bytes to copy
  43120.     DS:SI -> source of copy
  43121.     ES:DI -> destination of copy
  43122. Return: does not return normally; return address is caller's CS:0100h with
  43123.       AX = ???
  43124. SeeAlso: AH=E0h"VIRUS",AH=EEh"VIRUS"
  43125. --------v-21DE-------------------------------
  43126. INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
  43127.     AH = DEh
  43128. Return: AH = DFh if resident
  43129. SeeAlso: AX=DAFEh,AX=DEDEh"VIRUS"
  43130. --------v-21DE-------------------------------
  43131. INT 21 - VIRUS - "April 1st EXE" - ???
  43132.     AH = DEh
  43133.     ???
  43134. Return: ???
  43135. --------N-21DE-------------------------------
  43136. INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
  43137.     AH = DEh
  43138.     DL = broadcast mode
  43139.         00h receive server and workstation broadcasts (default)
  43140.         01h receive server broadcasts, discard user messages
  43141.         02h store server broadcasts for retrieval
  43142.         03h store all broadcasts for retrieval
  43143. Return: AL = new broadcast mode
  43144. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43145. --------N-21DE--DL04-------------------------
  43146. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
  43147.     AH = DEh
  43148.     DL = 04h
  43149. Return: AL = current broadcast mode
  43150.         00h receive server and workstation broadcasts (default)
  43151.         01h receive server broadcasts, discard user message
  43152.         02h store server broadcasts for retrieval
  43153.         03h store all broadcasts for retrieval
  43154. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43155. --------N-21DE-------------------------------
  43156. INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
  43157.     AH = DEh
  43158.     DL = function
  43159.         05h disable shell timer interrupt checks
  43160.         06h enable shell timer interrupt checks
  43161. Return: ???
  43162. Note:    this function was added in NetWare 4.0, but is not listed in current
  43163.       Novell documentation and is probably no longer supported
  43164. --------v-21DEDE-----------------------------
  43165. INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
  43166.     AX = DEDEh
  43167. Return: AH = 41h if resident
  43168. SeeAlso: AH=DEh"VIRUS",AH=E0h"VIRUS"
  43169. --------N-21DF--DL00-------------------------
  43170. INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
  43171.     AH = DFh
  43172.     DL = 00h
  43173. Return: AL = status
  43174.         00h successful
  43175. Desc:    this function redirects the default LPT to a capture file on the file
  43176.       server
  43177. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43178.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  43179.     a print job is queued when the first character of output is captured
  43180. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
  43181. SeeAlso: AH=DFh/DL=04h,AX=F003h
  43182. --------N-21DF--DL01-------------------------
  43183. INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
  43184.     AH = DFh
  43185.     DL = 01h
  43186. Return: AL = status
  43187.         00h successful
  43188. Desc:    stop redirecting the default LPT, close the capture file, and release
  43189.       the job in the print queue for printing
  43190. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43191.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  43192.     after this call, the default LPT defaults to local printing
  43193. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
  43194. --------N-21DF--DL02-------------------------
  43195. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
  43196.     AH = DFh
  43197.     DL = 02h
  43198. Return: AL = status
  43199.         00h successful
  43200. Desc:    this function ends the capture of the default LPT, removes the job from
  43201.       the print queue, and deletes the capture file unless it is a
  43202.       permanent capture file
  43203. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43204.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  43205.     after this call, the default LPT defaults to local printing
  43206. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
  43207. --------N-21DF--DL03-------------------------
  43208. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
  43209.     AH = DFh
  43210.     DL = 03h
  43211. Return: AL = status
  43212.         00h successful
  43213. Desc:    this function closes the current capture file for the default LPT
  43214.       and starts printing it if it is not a permanent capture file
  43215. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43216.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  43217.     if more data is sent to the LPT port after this call, a new capture
  43218.       file will be opeend
  43219. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
  43220. --------N-21DF--DL04-------------------------
  43221. INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
  43222.     AH = DFh
  43223.     DL = 04h
  43224.     DH = LPT port (00h-02h)
  43225. Return: AL = status
  43226.         00h successful
  43227. Desc:    this function redirects the specified LPT to a capture file on the file
  43228.       server
  43229. Notes:    this function is supported by Advanced NetWare 2.1+
  43230.     a print job is queued when the first character of output is captured
  43231. SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
  43232. SeeAlso: AX=F003h
  43233. --------N-21DF--DL05-------------------------
  43234. INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
  43235.     AH = DFh
  43236.     DL = 05h
  43237.     DH = LPT port (00h-02h)
  43238. Return: AL = status
  43239.         00h successful
  43240. Desc:    stop redirecting the specified LPT, close the capture file, and release
  43241.       the job in the print queue for printing
  43242. Notes:    this function is supported by Advanced NetWare 2.1+
  43243.     after this call, the specified LPT defaults to local printing
  43244. SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
  43245. --------N-21DF--DL06-------------------------
  43246. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
  43247.     AH = DFh
  43248.     DL = 06h
  43249.     DH = LPT port (00h-02h)
  43250. Return: AL = status
  43251.         00h successful
  43252. Desc:    this function ends the capture of the specified LPT, removes the job
  43253.       from the print queue, and deletes the capture file unless it is a
  43254.       permanent capture file
  43255. Notes:    this function is supported by Advanced NetWare 2.1+
  43256.     after this call, the specified LPT defaults to local printing
  43257. SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
  43258. --------N-21DF--DL07-------------------------
  43259. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
  43260.     AH = DFh
  43261.     DL = 07h
  43262.     DH = LPT port (00h-02h)
  43263. Return: AL = status
  43264.         00h successful
  43265. Desc:    this function closes the current capture file for the specified LPT
  43266.       and starts printing it if it is not a permanent capture file
  43267. Notes:    this function is supported by Advanced NetWare 2.1+
  43268.     if more data is sent to the LPT port after this call, a new capture
  43269.       file will be opeend
  43270. SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
  43271. --------T-21DF00DX534C-----------------------
  43272. INT 21 U - Software Carousel - INSTALLATION CHECK
  43273.     AX = DF00h
  43274.     DX = 534Ch ("SL")
  43275.     DI = 534Ch ("SL")
  43276. Return: AX = 00FFh if installed
  43277.         ???
  43278. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  43279. --------T-21DF01-----------------------------
  43280. INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
  43281.     AX = DF01h
  43282.     BL = task number (00h = next task)
  43283. Return: AL = status
  43284.         00h Carousel not running
  43285.         01h successful
  43286.         FFh unsucessful
  43287.         AH = error code (01h,02h) (see #0916)
  43288.  
  43289. (Table 0916)
  43290. Values for Software Carousel error code:
  43291.  00h    invalid subfunction in AL
  43292.  01h    invalid task number
  43293.  02h    tried to switch to task with no memory size
  43294.  03h    tried to kill program in partition with no program running
  43295.  04h    tried to change size of an active memory partition
  43296.  05h    invalid memory size
  43297.  06h    tried to send command to task with a pending previous command
  43298. --------T-21DF02-----------------------------
  43299. INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
  43300.     AX = DF02h
  43301.     BL = task number
  43302. Return: AL = status
  43303.         00h Carousel not running
  43304.         01h successful
  43305.         FFh unsucessful
  43306.         AH = error code (01h,03h) (see #0916)
  43307. --------T-21DF03-----------------------------
  43308. INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
  43309.     AX = DF03h
  43310.     BL = task number
  43311. Return: AL = status
  43312.         00h Carousel not running
  43313.         01h successful
  43314.         BL = partition state (00h no program running, 01h prog running)
  43315.         DX = partition size in KB
  43316.         FFh unsucessful
  43317.         AH = error code (01h) (see #0916)
  43318. SeeAlso: AX=DF05h
  43319. --------T-21DF04-----------------------------
  43320. INT 21 - Software Carousel - GET PARTITION NAME
  43321.     AX = DF04h
  43322.     BL = task number
  43323. Return: AL = status
  43324.         00h Carousel not running
  43325.         01h successful
  43326.         CX = length of name (00h if default partition name)
  43327.         ES:BX -> partition name (if CX nonzero)
  43328.         FFh unsucessful
  43329.         AH = error code (01h) (see #0916)
  43330. SeeAlso: AX=DF06h
  43331. --------T-21DF05-----------------------------
  43332. INT 21 - Software Carousel - CHANGE PARTITION SIZE
  43333.     AX = DF05h
  43334.     BL = task number
  43335.     DX = new size in KB
  43336. Return: AL = status
  43337.         00h Carousel not running
  43338.         01h successful
  43339.         FFh unsucessful
  43340.         AH = error code (01h,04h,05h) (see #0916)
  43341.     BX = minimum size allowed
  43342.     CX = maximum size available
  43343. SeeAlso: AX=DF03h
  43344. --------T-21DF06-----------------------------
  43345. INT 21 - Software Carousel - CHANGE PARTITION NAME
  43346.     AX = DF06h
  43347.     BL = task number
  43348.     CX = length of new name (00h to use default, max 18h)
  43349.     DS:SI -> new name
  43350. Return: AL = status
  43351.         00h Carousel not running
  43352.         01h successful
  43353.         FFh unsucessful
  43354.         AH = error code (01h) (see #0916)
  43355. SeeAlso: AX=DF04h
  43356. --------T-21DF07-----------------------------
  43357. INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
  43358.     AX = DF07h
  43359.     BL = task number
  43360.     CX = length of command (max 8 chars)
  43361.     DS:SI -> command line
  43362. Return: AL = status
  43363.         00h Carousel not running
  43364.         01h successful
  43365.         FFh unsucessful
  43366.         AH = error code (01h,06h) (see #0916)
  43367. Note:    the maximum length seems too small and may be a typo for 80 characters
  43368. --------T-21DF08-----------------------------
  43369. INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
  43370.     AX = DF08h
  43371.     BL = new state of keyboard (00h disabled, 01h enabled)
  43372. Return: AL = status
  43373.         00h Carousel not running
  43374.         01h successful
  43375. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  43376. Note:    when the keyboard is is disabled, the user may neither access the
  43377.       Carousel menu nor switch to another memory section
  43378. --------T-21DF09-----------------------------
  43379. INT 21 - Software Carousel - BOOT THE SYSTEM
  43380.     AX = DF09h
  43381. Return: AL = status
  43382.         00h Carousel not running
  43383.         FFh unsucessful
  43384.         AH = error code (01h,03h) (see #0916)
  43385. Note:    this function never returns is successful
  43386. --------T-21DF0A-----------------------------
  43387. INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
  43388.     AX = DF0Ah
  43389. Return: AL = status
  43390.         00h Carousel not running
  43391.         01h successful
  43392.         BL = task number
  43393.         DX = memory size in KB
  43394.         FFh unsucessful
  43395.         AH = error code (01h,03h) (see #0916)
  43396. --------T-21DF0B-----------------------------
  43397. INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
  43398.     AX = DF0Bh
  43399.     BH = interrupt number or 00h
  43400.     BL = function number to invoke on partition switch
  43401.     CL = function number to call when it is safe for resident programs
  43402.         to perform DOS calls
  43403.     DS:DX -> FAR function to call if BH=00h
  43404. Return: AL = status
  43405.         00h Carousel not running
  43406.         01h successful
  43407.         FFh unsucessful
  43408.         AH = error code (01h,03h) (see #0916)
  43409. Notes:    the specified interrupt or FAR function is called with AH set to the
  43410.       appropriate one of the values specified in BL and CL, and BL set to
  43411.       the new task number
  43412.     the function specified by CL will not be called until the notification
  43413.       is enabled with AX=DF0Ch
  43414. SeeAlso: AX=DF0Ch
  43415. --------T-21DF0C-----------------------------
  43416. INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
  43417.     AX = DF0Ch
  43418. Return: AL = status
  43419.         00h Carousel not running
  43420.         01h successful
  43421. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  43422. SeeAlso: AX=DF0Bh
  43423. --------O-21E0-------------------------------
  43424. INT 21 - Digital Research DOS Plus - CALL BDOS
  43425.     AH = E0h
  43426.     CL = BDOS function number (see INT E0"CP/M")
  43427.     other registers as appropriate for function
  43428. Return: as appropriate for function
  43429. SeeAlso: AX=4459h,INT E0"CP/M"
  43430. --------E-21E0-------------------------------
  43431. INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
  43432.     AH = E0h
  43433.     ???
  43434. Return: ???
  43435. SeeAlso: AH=E1h"OS/286"
  43436. --------T-21E0-------------------------------
  43437. INT 21 - DoubleDOS - MENU CONTROL
  43438.     AH = E0h
  43439.     AL = subfunction
  43440.         01h exchange tasks
  43441.         73h resume invisible job if suspended
  43442.         74h kill other job
  43443.         75h suspend invisible job
  43444. Note:    identical to AH=F0h
  43445. SeeAlso: AH=F0h"DoubleDOS"
  43446. --------v-21E0-------------------------------
  43447. INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
  43448.     AH = E0h
  43449. Return: AX = 0300h if "Jerusalem" resident
  43450.     AX = DADAh if "Armagedon" resident
  43451. SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
  43452. --------N-21E0-------------------------------
  43453. INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
  43454.     AH = E0h
  43455.     DS:SI -> request buffer (see #0917)
  43456.     ES:DI -> reply buffer
  43457. Return: AL = status
  43458. Note:    this function was added in NetWare 4.0, but is no longer listed in
  43459.       current Novell documentation and may no longer be supported
  43460. SeeAlso: AH-E3h/SF=68h
  43461.  
  43462. Format of NetWare request buffer:
  43463. Offset    Size    Description    (Table 0917)
  43464.  00h    WORD    length of following data
  43465.  02h    BYTE    subfunction
  43466.         00h spool data to a capture file
  43467.         01h close and queue capture file
  43468.         02h set spool flags
  43469.         03h spool existing file
  43470.         04h get spool queue entry
  43471.         05h remove entry from spool queue
  43472.  03h    ???
  43473. --------N-21E0--SF06-------------------------
  43474. INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
  43475.     AH = E0h subfn 06h
  43476.     DS:SI -> request buffer (see #0918)
  43477.     ES:DI -> reply buffer (see #0919)
  43478. Return: AL = status
  43479.         00h successful
  43480.         FFh no such printer
  43481. Desc:    get current state of specified printer attached to the server
  43482. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43483.       Alloy NTNX
  43484.  
  43485. Format of NetWare request buffer:
  43486. Offset    Size    Description    (Table 0918)
  43487.  00h    WORD    0002h (length of following data)
  43488.  02h    BYTE    06h (subfunction "Get Printer Status")
  43489.  03h    BYTE    printer number (00h-04h)
  43490.  
  43491. Format of NetWare reply buffer:
  43492. Offset    Size    Description    (Table 0919)
  43493.  00h    WORD    (call) 0004h (size of following results buffer)
  43494.  02h    BYTE    flag: 00h printer active, FFh printer halted
  43495.  03h    BYTE    flag: 00h printer online, 01h printer offline
  43496.  04h    BYTE    current form type
  43497.  05h    BYTE    target printer number (00h-04h)
  43498.         same as number in request buffer unless rerouted by server
  43499.           console
  43500. --------N-21E0--SF09-------------------------
  43501. INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
  43502.     AH = E0h subfn 09h
  43503.     DS:SI -> request buffer (see #0920)
  43504.     ES:DI -> reply buffer (see #0921)
  43505. Return: AL = status
  43506.         00h successful
  43507.         9Ch invalid path
  43508. Desc:    create a permanent capture file for the next print capture to be
  43509.       started
  43510. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43511.       Alloy NTNX
  43512.     the caller must have read, write, and create rights for the directory
  43513.       containing the capture file
  43514.  
  43515. Format of NetWare request buffer:
  43516. Offset    Size    Description    (Table 0920)
  43517.  00h    WORD    length of following data (max 102h)
  43518.  02h    BYTE    09h (subfunction "Specify Capture File")
  43519.  03h    BYTE    directory handle or 00h
  43520.  04h    BYTE    length of filename
  43521.  05h  N BYTEs    name of capture file
  43522.  
  43523. Format of NetWare reply buffer:
  43524. Offset    Size    Description    (Table 0921)
  43525.  00h    WORD    (call) 0000h (no results returned)
  43526. --------v-21E00F-----------------------------
  43527. INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
  43528.     AX = E00Fh
  43529. Return: AX = 4C31h if resident
  43530. SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
  43531. --------E-21E1-------------------------------
  43532. INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
  43533.     AH = E1h
  43534.     ???
  43535. Return: ???
  43536. Note:    protected mode only???
  43537. SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
  43538. --------T-21E1-------------------------------
  43539. INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
  43540.     AH = E1h
  43541. SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  43542. SeeAlso: AH=F1h"DoubleDOS"
  43543. --------v-21E1-------------------------------
  43544. INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
  43545.     AH = E1h
  43546. Return: AX = 0300h if "Mendoza" resident
  43547.     AX = 0400h if "Fu Manchu" resident
  43548. SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
  43549. --------N-21E1--SF00-------------------------
  43550. INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
  43551.     AH = E1h subfn 00h
  43552.     DS:SI -> request buffer (see #0922)
  43553.     ES:DI -> reply buffer (see #0923)
  43554. Return: AL = status
  43555.         00h successful
  43556.         FEh I/O error or out of dynamic workspace
  43557. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43558. SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
  43559. SeeAlso: AH=E1h/SF=09h
  43560.  
  43561. Format of NetWare request buffer:
  43562. Offset    Size    Description    (Table 0922)
  43563.  00h    WORD    length of following data (max 9Eh)
  43564.  02h    BYTE    00h (subfunction "Send Broadcast Message")
  43565.  03h    BYTE    number of connections (01h-64h)
  43566.  04h  N BYTEs    list of connections to receive broadcast message
  43567.     BYTE    length of message (01h-37h)
  43568.       N BYTEs    broadcast message (no control characters or characters > 7Eh)
  43569.  
  43570. Format of NetWare reply buffer:
  43571. Offset    Size    Description    (Table 0923)
  43572.  00h    WORD    (call) size of following results buffer (max 65h)
  43573.  02h    BYTE    number of connections
  43574.  03h  N BYTEs    list of per-connection results
  43575.         00h successful
  43576.         FCh message rejected due to lack of buffer space
  43577.         FDh invalid connection number
  43578.         FFh blocked (see also AH=E1h/SF=02h)
  43579. --------N-21E1--SF01-------------------------
  43580. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE
  43581.     AH = E1h subfn 01h
  43582.     DS:SI -> request buffer (see #0924)
  43583.     ES:DI -> reply buffer (see #0925)
  43584. Return: AL = status
  43585.         00h successful
  43586.         FCh full message queue
  43587.         FEh out of dynamic workspace
  43588. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43589. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
  43590.  
  43591. Format of NetWare request buffer:
  43592. Offset    Size    Description    (Table 0924)
  43593.  00h    WORD    0001h (length of following data)
  43594.  02h    BYTE    01h (subfunction "Get Broadcast Message")
  43595.  
  43596. Format of NetWare reply buffer:
  43597. Offset    Size    Description    (Table 0925)
  43598.  00h    WORD    (call) size of following results buffer (max 38h)
  43599.  02h    BYTE    length of message (00h-37h)
  43600.         00h if no broadcast messages pending
  43601.  03h  N BYTEs    message (no control characters or characters > 7Eh)
  43602. --------N-21E1-------------------------------
  43603. INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE/DISABLE BROADCAST MESSAGES
  43604.     AH = E1h
  43605.     DS:SI -> request buffer (see #0926)
  43606.     ES:DI -> reply buffer (see #0927)
  43607. Return: AL = error code
  43608. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  43609.       _NetWare_System_Calls--DOS_; they may be obsolete
  43610. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=04h,AH=E1h/SF=09h
  43611.  
  43612. Format of NetWare request buffer:
  43613. Offset    Size    Description    (Table 0926)
  43614.  00h    WORD    length of following data (max 9Eh)
  43615.  02h    BYTE    subfunction
  43616.         02h disable station broadcasts
  43617.         03h enable station broadcasts
  43618.  03h    ???
  43619.  
  43620. Format of NetWare reply buffer:
  43621. Offset    Size    Description    (Table 0927)
  43622.  00h    WORD    (call) size of following results buffer
  43623.  02h    ???
  43624. --------N-21E1--SF04-------------------------
  43625. INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
  43626.     AH = E1h subfn 04h
  43627.     DS:SI -> request buffer (see #0928)
  43628.     ES:DI -> reply buffer (see #0929)
  43629. Return: AL = status
  43630.         00h successful
  43631.         FEh I/O error or out of dynamic workspace
  43632. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  43633.     message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
  43634.       connections should be used for peer-to-peer communications as these
  43635.       protocols do not use file server time
  43636. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  43637.  
  43638. Format of NetWare request buffer:
  43639. Offset    Size    Description    (Table 0928)
  43640.  00h    WORD    length of following data (max E5h)
  43641.  02h    BYTE    04h (subfunction "Send Personal Message")
  43642.  03h    BYTE    number of connections (01h-64h)
  43643.  04h  N BYTEs    list of connections to receive broadcast message
  43644.     BYTE    length of message (01h-7Eh)
  43645.       N BYTEs    message (no control characters or characters > 7Eh)
  43646.  
  43647. Format of NetWare reply buffer:
  43648. Offset    Size    Description    (Table 0929)
  43649.  00h    WORD    (call) size of following results buffer (max 65h)
  43650.  02h    BYTE    number of connections
  43651.  03h  N BYTEs    list of per-connection results
  43652.         00h successful
  43653.         FCh message rejected because queue is full (contains 6 msgs)
  43654.         FDh incomplete pipe
  43655.         FFh failed
  43656. --------N-21E1--SF05-------------------------
  43657. INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
  43658.     AH = E1h subfn 05h
  43659.     DS:SI -> request buffer (see #0930)
  43660.     ES:DI -> reply buffer (see #0931)
  43661. Return: AL = status
  43662.         00h successful
  43663.         FEh out of dynamic workspace
  43664. Desc:    return the oldest message in the default file server's message queue
  43665.       for the calling workstation
  43666. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  43667. SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
  43668.  
  43669. Format of NetWare request buffer:
  43670. Offset    Size    Description    (Table 0930)
  43671.  00h    WORD    0001h (length of following data)
  43672.  02h    BYTE    05h (subfunction "Get Personal Message")
  43673.  
  43674. Format of NetWare reply buffer:
  43675. Offset    Size    Description    (Table 0931)
  43676.  00h    WORD    (call) size of following results buffer (max 80h)
  43677.  02h    BYTE    connection number of sending station
  43678.  03h    BYTE    length of message (00h-7Eh)
  43679.         00h if no personal messages pending
  43680.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  43681. --------N-21E1--SF06-------------------------
  43682. INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
  43683.     AH = E1h subfn 06h
  43684.     DS:SI -> request buffer (see #0932)
  43685.     ES:DI -> reply buffer (see #0933)
  43686. Return: AL = status
  43687.         00h successful
  43688.         FEh out of dynamic workspace
  43689. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  43690. SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
  43691.  
  43692. Format of NetWare request buffer:
  43693. Offset    Size    Description    (Table 0932)
  43694.  00h    WORD    length of following data (max 66h)
  43695.  02h    BYTE    06h (subfunction "Open Message Pipe")
  43696.  03h    BYTE    number of pipes to open (01h-64h)
  43697.  04h  N BYTEs    list of connection numbers
  43698.  
  43699. Format of NetWare reply buffer:
  43700. Offset    Size    Description    (Table 0933)
  43701.  00h    WORD    (call) size of following results buffer (max 65h)
  43702.  02h    BYTE    number of connections
  43703.  03h  N BYTEs    list of results
  43704.         00h successful
  43705.         FEh incomplete (target half not yet created)
  43706.         FFh failed
  43707. --------N-21E1--SF07-------------------------
  43708. INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
  43709.     AH = E1h subfn 07h
  43710.     DS:SI -> request buffer (see #0934)
  43711.     ES:DI -> reply buffer (see #0935)
  43712. Return: AL = status
  43713.         00h successful
  43714.         FCh full message queue
  43715.         FEh out of dynamic workspace
  43716. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  43717. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  43718.  
  43719. Format of NetWare request buffer:
  43720. Offset    Size    Description    (Table 0934)
  43721.  00h    WORD    length of following data (max 66h)
  43722.  02h    BYTE    07h (subfunction "Close Message Pipe")
  43723.  03h    BYTE    number of pipes to close (01h-64h)
  43724.  04h  N BYTEs    list of connection numbers
  43725.  
  43726. Format of NetWare reply buffer:
  43727. Offset    Size    Description    (Table 0935)
  43728.  00h    WORD    (call) size of following results buffer (max 65h)
  43729.  02h    BYTE    number of connections
  43730.  03h  N BYTEs    list of results
  43731.         00h successful
  43732.         FDh failed
  43733.         FFh no such pipe
  43734. --------N-21E1--SF08-------------------------
  43735. INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
  43736.     AH = E1h subfn 08h
  43737.     DS:SI -> request buffer (see #0937)
  43738.     ES:DI -> reply buffer (see #0938)
  43739. Return: AL = status (see #0936)
  43740. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  43741. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h
  43742.  
  43743. (Table 0936)
  43744. Values for NetWare function status:
  43745.  00h    successful
  43746.  FCh    full message queue
  43747.  FEh    out of dynamic workspace
  43748.  
  43749. Format of NetWare request buffer:
  43750. Offset    Size    Description    (Table 0937)
  43751.  00h    WORD    length of following data (max 66h)
  43752.  02h    BYTE    08h (subfunction "Check Pipe Status")
  43753.  03h    BYTE    number of pipes to monitor (01h-64h)
  43754.  04h  N BYTEs    list of connection numbers
  43755.  
  43756. Format of NetWare reply buffer:
  43757. Offset    Size    Description    (Table 0938)
  43758.  00h    WORD    (call) size of following results buffer (max 65h)
  43759.  02h    BYTE    number of connections
  43760.  03h  N BYTEs    list of pipe statuses
  43761.         00h open
  43762.         FEh incomplete
  43763.         FFh closed
  43764. --------N-21E1--SF09-------------------------
  43765. INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
  43766.     AH = E1h subfn 09h
  43767.     DS:SI -> request buffer (see #0939)
  43768.     ES:DI -> reply buffer (see #0940)
  43769. Return: AL = status (see #0936)
  43770. Desc:    send a one-line message to the system console on the default file
  43771.       server
  43772. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  43773. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
  43774.  
  43775. Format of NetWare request buffer:
  43776. Offset    Size    Description    (Table 0939)
  43777.  00h    WORD    length of following data (max 3Eh)
  43778.  02h    BYTE    09h (subfunction "Broadcast to Console")
  43779.  03h    BYTE    length of message (01h-3Ch)
  43780.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  43781.  
  43782. Format of NetWare reply buffer:
  43783. Offset    Size    Description    (Table 0940)
  43784.  00h    WORD    (call) 0000h (no results returned)
  43785. --------E-21E2-------------------------------
  43786. INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
  43787.     AH = E2h
  43788.     ???
  43789. Return: ???
  43790. SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
  43791. --------N-21E2-------------------------------
  43792. INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
  43793.     AH = E2h
  43794.     AL = character
  43795. Return: AL = 00h successful
  43796.          01h buffer full (128 characters)
  43797. SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  43798. SeeAlso: AH=F2h"DoubleDOS"
  43799. --------N-21E2--SF00-------------------------
  43800. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
  43801.     AH = E2h subfn 00h
  43802.     DS:SI -> request buffer (see #0942)
  43803.     ES:DI -> reply buffer (see #0943)
  43804. Return: AL = status (00h,98h,9Bh,9Ch) (see #0941)
  43805. Desc:    set the target handle to reference the directory specified by the
  43806.       source handle and the source path; both handles must refer to the
  43807.       same file server
  43808. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43809.       Alloy NTNX
  43810.     the target handle is not changed if this function fails
  43811. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h
  43812.  
  43813. (Table 0941)
  43814. Values for NetWare function status:
  43815.  00h    successful
  43816.  84h    not permitted to create
  43817.  8Ah    not permitted to delete
  43818.  8Bh    not permitted to rename
  43819.  8Ch    not permitted to modify
  43820.  98h    nonexistent volume
  43821.  9Bh    invalid directory handle
  43822.  9Ch    invalid path
  43823.  9Eh    invalid filename
  43824.  9Fh    directory currently in use
  43825.  A0h    directory not empty
  43826.  C6h    no console rights
  43827.  FCh    no such bindery object
  43828.  
  43829. Format of NetWare request buffer:
  43830. Offset    Size    Description    (Table 0942)
  43831.  00h    WORD    length of following data (max 103h)
  43832.  02h    BYTE    00h (subfunction "Set Directory Handle")
  43833.  03h    BYTE    directory handle of target
  43834.  04h    BYTE    directory handle of source
  43835.  05h    BYTE    length of source directory path (01h-FFh)
  43836.  06h  N BYTEs    source directory path
  43837.  
  43838. Format of NetWare reply buffer:
  43839. Offset    Size    Description    (Table 0943)
  43840.  00h    WORD    (call) 0000h (no results returned)
  43841. --------N-21E2--SF01-------------------------
  43842. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
  43843.     AH = E2h subfn 01h
  43844.     DS:SI -> request buffer (see #0944)
  43845.     ES:DI -> reply buffer (see #0945)
  43846. Return: AL = status (00h,9Bh) (see #0941)
  43847. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43848.       Alloy NTNX
  43849. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h
  43850.  
  43851. Format of NetWare request buffer:
  43852. Offset    Size    Description    (Table 0944)
  43853.  00h    WORD    0002h (length of following data)
  43854.  02h    BYTE    01h (subfunction "Get Directory Path")
  43855.  03h    BYTE    directory handle
  43856.  
  43857. Format of NetWare reply buffer:
  43858. Offset    Size    Description    (Table 0945)
  43859.  00h    WORD    (call) length of following data buffer
  43860.  02h    BYTE    length of directory path (01h-FFh)
  43861.  03h  N BYTEs    full directory path including volume
  43862. --------N-21E2--SF02-------------------------
  43863. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
  43864.     AH = E2h subfn 02h
  43865.     DS:SI -> request buffer (see #0946)
  43866.     ES:DI -> reply buffer (see #0947)
  43867. Return: AL = status (00h,98h,9Bh,9Ch) (see #0941)
  43868. Desc:    get information about the first or next subdirectory of the specified
  43869.       directory
  43870. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43871.       Alloy NTNX
  43872. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h
  43873.  
  43874. Format of NetWare request buffer:
  43875. Offset    Size    Description    (Table 0946)
  43876.  00h    WORD    length of following data (max 104h)
  43877.  02h    BYTE    02h (subfunction "Scan Directory Information")
  43878.  03h    BYTE    directory handle
  43879.  04h    WORD    (big-endian) subdirectory number
  43880.         0000h for first call, returned subdir number + 1 on next call
  43881.  06h    BYTE    length of directory path
  43882.  07h  N BYTEs    directory path
  43883.  
  43884. Format of NetWare reply buffer:
  43885. Offset    Size    Description    (Table 0947)
  43886.  00h    WORD    (call) 001Ch (length of following data buffer)
  43887.  02h 16 BYTEs    subdirectory name
  43888.  12h    DWORD    (big-endian) date and time of creation (see #0948)
  43889.  16h    DWORD    (big-endian) object ID of owner
  43890.  1Ah    BYTE    maximum directory rights (see #0951)
  43891.  1Bh    BYTE    unused
  43892.  1Ch    WORD    (big-endian) subdirectory number
  43893.  
  43894. Bitfields for NetWare date and time:
  43895. Bit(s)    Description    (Table 0948)
  43896.  31-25    year-1980
  43897.  24-21    month
  43898.  20-16    day
  43899.  15-11    hour
  43900.  10-5    minute
  43901.  4-0    second
  43902. --------N-21E2--SF03-------------------------
  43903. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
  43904.     AH = E2h subfn 03h
  43905.     DS:SI -> request buffer (see #0949)
  43906.     ES:DI -> reply buffer (see #0950)
  43907. Return: AL = status (00h,98h,9Bh) (see #0941)
  43908. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43909.       Alloy NTNX
  43910. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h
  43911.  
  43912. Format of NetWare request buffer:
  43913. Offset    Size    Description    (Table 0949)
  43914.  00h    WORD    length of following data (max 102h)
  43915.  02h    BYTE    03h (subfunction "Get Effective Directory Rights")
  43916.  03h    BYTE    directory handle
  43917.  04h    BYTE    length of directory path (00h-FFh)
  43918.  05h  N BYTEs    directory path
  43919.  
  43920. Format of NetWare reply buffer:
  43921. Offset    Size    Description    (Table 0950)
  43922.  00h    WORD    (call) 0001h (length of following data buffer)
  43923.  02h    BYTE    effective directory rights (see #0951)
  43924.  
  43925. Bitfields for NetWare directory rights:
  43926. Bit(s)    Description    (Table 0951)
  43927.  0    reading allowed
  43928.  1    writing allowed
  43929.  2    opens allowed
  43930.  3    file creation allowed
  43931.  4    deletion allowed
  43932.  5    "parental" may create/delete subdirectories and grant/revoke trustee
  43933.       rights
  43934.  6    directory search allowed
  43935.  7    file attributes may be changed
  43936. --------N-21E2--SF04-------------------------
  43937. INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
  43938.     AH = E2h subfn 04h
  43939.     DS:SI -> request buffer (see #0952)
  43940.     ES:DI -> reply buffer (see #0953)
  43941. Return: AL = status (00h,8Ch,98h,9Ch) (see #0941)
  43942. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43943.       Alloy NTNX
  43944. SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh
  43945.  
  43946. Format of NetWare request buffer:
  43947. Offset    Size    Description    (Table 0952)
  43948.  00h    WORD    length of following data (max 104h)
  43949.  02h    BYTE    04h (subfunction "Modify Maximum Rights Mask")
  43950.  03h    BYTE    directory handle
  43951.  04h    BYTE    rights to grant (see #0951)
  43952.  05h    BYTE    rights to revoke (see #0951)
  43953.  06h    BYTE    length of directory path (00h-FFh)
  43954.  07h  N BYTEs    directory path
  43955. Note:    the rights specified at offset 05h are revoked first, and then the
  43956.       rights specified at offset 04h are added to the resulting rights
  43957.       mask
  43958.  
  43959. Format of NetWare reply buffer:
  43960. Offset    Size    Description    (Table 0953)
  43961.  00h    WORD    (call) 0000h (no results returned)
  43962. --------N-21E2--SF05-------------------------
  43963. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
  43964.     AH = E2h subfn 05h
  43965.     DS:SI -> request buffer (see #0954)
  43966.     ES:DI -> reply buffer (see #0955)
  43967. Return: AL = status (00h,98h) (see #0941)
  43968. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43969.       Alloy NTNX
  43970. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  43971.  
  43972. Format of NetWare request buffer:
  43973. Offset    Size    Description    (Table 0954)
  43974.  00h    WORD    length of following data (max 12h)
  43975.  02h    BYTE    05h (subfunction "Get Volume Number")
  43976.  03h    BYTE    length of volume name (01h-10h)
  43977.  04h  N BYTEs    volume name
  43978.  
  43979. Format of NetWare reply buffer:
  43980. Offset    Size    Description    (Table 0955)
  43981.  00h    WORD    (call) 0001h (length of following results buffer)
  43982.  02h    BYTE    volume number
  43983. --------N-21E2--SF06-------------------------
  43984. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
  43985.     AH = E2h subfn 06h
  43986.     DS:SI -> request buffer (see #0956)
  43987.     ES:DI -> reply buffer (see #0957)
  43988. Return: AL = status (00h,98h) (see #0941)
  43989. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  43990.       Alloy NTNX
  43991. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
  43992. SeeAlso: AH=E3h/SF=E9h
  43993.  
  43994. Format of NetWare request buffer:
  43995. Offset    Size    Description    (Table 0956)
  43996.  00h    WORD    0002h (length of following data)
  43997.  02h    BYTE    06h (subfunction "Get Volume Name")
  43998.  03h    BYTE    volume number
  43999.  
  44000. Format of NetWare reply buffer:
  44001. Offset    Size    Description    (Table 0957)
  44002.  00h    WORD    (call) 0011h (length of following results buffer)
  44003.  02h    BYTE    length of volume name
  44004.  03h 16 BYTEs    NUL-padded volume name
  44005. --------N-21E2--SF0A-------------------------
  44006. INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
  44007.     AH = E2h subfn 0Ah
  44008.     DS:SI -> request buffer (see #0958)
  44009.     ES:DI -> reply buffer (see #0959)
  44010. Return: AL = status (00h,84h,98h,FCh) (see #0941)
  44011. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44012.       Alloy NTNX
  44013. SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh
  44014.  
  44015. Format of NetWare request buffer:
  44016. Offset    Size    Description    (Table 0958)
  44017.  00h    WORD    length of following data (max 103h)
  44018.  02h    BYTE    0Ah (subfunction "Create Directory")
  44019.  03h    BYTE    directory handle
  44020.  04h    BYTE    maximum directory rights (see #0951)
  44021.  05h    BYTE    length of directory path (00h-FFh)
  44022.  06h  N BYTEs    directory path
  44023.  
  44024. Format of NetWare reply buffer:
  44025. Offset    Size    Description    (Table 0959)
  44026.  00h    WORD    (call) 0000h (no data returned)
  44027. --------N-21E2--SF0B-------------------------
  44028. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
  44029.     AH = E2h subfn 0Bh
  44030.     DS:SI -> request buffer (see #0960)
  44031.     ES:DI -> reply buffer (see #0959)
  44032. Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #0941)
  44033. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44034.       Alloy NTNX
  44035. SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh
  44036.  
  44037. Format of NetWare request buffer:
  44038. Offset    Size    Description    (Table 0960)
  44039.  00h    WORD    length of following data (max 103h)
  44040.  02h    BYTE    0Bh (subfunction "Delete Directory")
  44041.  03h    BYTE    directory handle
  44042.  04h    BYTE    unused
  44043.  05h    BYTE    length of directory path (00h-FFh)
  44044.  06h  N BYTEs    directory path
  44045. --------N-21E2--SF0C-------------------------
  44046. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
  44047.     AH = E2h subfn 0Ch
  44048.     DS:SI -> request buffer (see #0961)
  44049.     ES:DI -> reply buffer (see #0962)
  44050. Return: AL = status (00h,9Ch) (see also #0941)
  44051.         9Ch no more trustees
  44052. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44053. SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h
  44054.  
  44055. Format of NetWare request buffer:
  44056. Offset    Size    Description    (Table 0961)
  44057.  00h    WORD    length of following data (max 103h)
  44058.  02h    BYTE    0Ch (subfunction "Scan Directory For Trustees")
  44059.  03h    BYTE    directory handle
  44060.  04h    BYTE    sequence number
  44061.         00h on first call, increment for each subsequent call
  44062.  05h    BYTE    length of directory path (00h-FFh)
  44063.  06h  N BYTEs    directory path
  44064.  
  44065. Format of NetWare reply buffer:
  44066. Offset    Size    Description    (Table 0962)
  44067.  00h    WORD    (call) 0031h (length of following results buffer)
  44068.  02h 16 BYTEs    directory name
  44069.  12h  4 BYTEs    date and time of creation
  44070.  16h    DWORD    (big-endian) object ID of owner
  44071.  1Ah  5 DWORDs    (big-endian) object IDs of Trustees 0 through 4
  44072.         00000000h = end of group
  44073.  2Eh  5 BYTEs    directory rights for Trustees 0 through 4 (see #0951)
  44074. --------N-21E2--SF0D-------------------------
  44075. INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
  44076.     AH = E2h subfn 0Dh
  44077.     DS:SI -> request buffer (see #0963)
  44078.     ES:DI -> reply buffer (see #0965)
  44079. Return: AL = status (00h,8Ch,FCh) (see #0941)
  44080. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44081.       Alloy NTNX
  44082. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h
  44083.  
  44084. Format of NetWare request buffer:
  44085. Offset    Size    Description    (Table 0963)
  44086.  00h    WORD    length of following data (max 107h)
  44087.  02h    BYTE    0Dh (subfunction "Add Trustee To Directory")
  44088.  03h    BYTE    directory handle
  44089.  04h    DWORD    (big-endian) object ID of trustee
  44090.  08h    BYTE    trustee directory rights (see #0951)
  44091.  09h    BYTE    length of directory path (00h-FFh)
  44092.  0Ah  N BYTEs    directory path
  44093. --------N-21E2--SF0E-------------------------
  44094. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
  44095.     AH = E2h subfn 0Eh
  44096.     DS:SI -> request buffer (see #0964)
  44097.     ES:DI -> reply buffer (see #0965)
  44098. Return: AL = status (00h,98h,9Bh,9Ch) (see #0941)
  44099. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44100.       Alloy NTNX
  44101. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh
  44102.  
  44103. Format of NetWare request buffer:
  44104. Offset    Size    Description    (Table 0964)
  44105.  00h    WORD    length of following data (max 107h)
  44106.  02h    BYTE    0Eh (subfunction "Delete Trustee From Directory")
  44107.  03h    BYTE    directory handle
  44108.  04h    DWORD    (big-endian) object ID of trustee
  44109.  08h    BYTE    unused
  44110.  09h    BYTE    length of directory path (00h-FFh)
  44111.  0Ah  N BYTEs    directory path
  44112.  
  44113. Format of NetWare reply buffer:
  44114. Offset    Size    Description    (Table 0965)
  44115.  00h    WORD    (call) 0000h (no data returned)
  44116. --------N-21E2--SF0F-------------------------
  44117. INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
  44118.     AH = E2h subfn 0Fh
  44119.     DS:SI -> request buffer (see #0966)
  44120.     ES:DI -> reply buffer (see #0965)
  44121. Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #0941)
  44122. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44123.       Alloy NTNX
  44124.     directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
  44125. SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh
  44126.  
  44127. Format of NetWare request buffer:
  44128. Offset    Size    Description    (Table 0966)
  44129.  00h    WORD    length of following data (max 111h)
  44130.  02h    BYTE    0Fh (subfunction "Rename Directory")
  44131.  03h    BYTE    directory handle
  44132.  04h    BYTE    length of directory path (00h-FFh)
  44133.  05h  N BYTEs    directory path
  44134.     BYTE    length of new directory name (01h-0Eh)
  44135.       N BYTEs    new directory name
  44136. --------N-21E2--SF10-------------------------
  44137. INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES
  44138.     AH = E2h subfn 10h
  44139.     DS:SI -> request buffer (see #0967)
  44140.     ES:DI -> reply buffer (see #0965)
  44141. Return: AL = status (00h,C6h) (see #0968)
  44142. Desc:    purges files marked for deletion on the file server by the calling
  44143.       workstation
  44144. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44145.       Alloy NTNX
  44146. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h
  44147.  
  44148. Format of NetWare request buffer:
  44149. Offset    Size    Description    (Table 0967)
  44150.  00h    WORD    0001h (length of following data)
  44151.  02h    BYTE    10h (subfunction "Purge Erased Files")
  44152. --------N-21E2--SF11-------------------------
  44153. INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE
  44154.     AH = E2h subfn 11h
  44155.     DS:SI -> request buffer (see #0969)
  44156.     ES:DI -> reply buffer (see #0970)
  44157. Return: AL = status (00h,98h,FFh) (see #0968)
  44158. Desc:    restores one file marked for deletion which has not yet been purged
  44159. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44160.       Alloy NTNX
  44161. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
  44162.  
  44163. (Table 0968)
  44164. Values for NetWare function status:
  44165.  00h    successful
  44166.  98h    nonexistent volume
  44167.  9Ch    invalid path
  44168.  C6h    no console rights
  44169.  FFh    no more erased files
  44170.  
  44171. Format of NetWare request buffer:
  44172. Offset    Size    Description    (Table 0969)
  44173.  00h    WORD    length of following data (max 13h)
  44174.  02h    BYTE    11h (subfunction "Restore Erased File")
  44175.  03h    BYTE    directory handle or 00h
  44176.  04h    BYTE    length of volume name
  44177.  05h  N BYTEs    volume name (including colon)
  44178. Note:    if both a directory handle and a volume name are specified, the volume
  44179.       name overrides the handle
  44180.  
  44181. Format of NetWare reply buffer:
  44182. Offset    Size    Description    (Table 0970)
  44183.  00h    WORD    (call) 001Eh (size of following results buffer)
  44184.  02h 15 BYTEs    ASCIZ name of erased file
  44185.  11h 15 BYTEs    ASCIZ name under which file was restored
  44186. --------N-21E2--SF12-------------------------
  44187. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
  44188.     AH = E2h subfn 12h
  44189.     DS:SI -> request buffer (see #0971)
  44190.     ES:DI -> reply buffer (see #0972)
  44191. Return: AL = status (00h,98h,9Ch) (see #0968)
  44192. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44193.       Alloy NTNX
  44194. SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h
  44195.  
  44196. Format of NetWare request buffer:
  44197. Offset    Size    Description    (Table 0971)
  44198.  00h    WORD    length of following data (max 103h)
  44199.  02h    BYTE    12h (subfunction "Alloc Permanent Directory Handle")
  44200.  03h    BYTE    directory handle
  44201.  04h    BYTE    drive ('A'-'Z')
  44202.  05h    BYTE    length of directory path
  44203.  06h  N BYTEs    directory path
  44204.  
  44205. Format of NetWare reply buffer:
  44206. Offset    Size    Description    (Table 0972)
  44207.  00h    WORD    (call) 0002h (size of following results buffer)
  44208.  02h    BYTE    new directory handle
  44209.  03h    BYTE    effective directory rights (see #0951)
  44210. --------N-21E2--SF13-------------------------
  44211. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
  44212.     AH = E2h subfn 13h
  44213.     DS:SI -> request buffer (see #0973)
  44214.     ES:DI -> reply buffer (see #0975)
  44215. Return: AL = status (00h,98h,9Ch) (see #0968)
  44216. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44217.       Alloy NTNX
  44218.     this call is the same as AH=E2h/SF=12h except that the directory handle
  44219.       will be automatically deallocated when the calling application
  44220.       executes an End of Job call (AH=D6h) or terminates
  44221. SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
  44222.  
  44223. Format of NetWare request buffer:
  44224. Offset    Size    Description    (Table 0973)
  44225.  00h    WORD    length of following data (max 103h)
  44226.  02h    BYTE    13h (subfunction "Alloc Temporary Directory Handle")
  44227.  03h    BYTE    directory handle
  44228.  04h    BYTE    drive ('A'-'Z')
  44229.  05h    BYTE    length of directory path
  44230.  06h  N BYTEs    directory path
  44231. --------N-21E2--SF14-------------------------
  44232. INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
  44233.     AH = E2h subfn 14h
  44234.     DS:SI -> request buffer (see #0974)
  44235.     ES:DI -> reply buffer (see #0975)
  44236. Return: AL = status (00h,9Bh) (see #0941)
  44237. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44238.       Alloy NTNX
  44239. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h
  44240.  
  44241. Format of NetWare request buffer:
  44242. Offset    Size    Description    (Table 0974)
  44243.  00h    WORD    0002h (length of following data)
  44244.  02h    BYTE    14h (subfunction "Deallocate Directory Handle")
  44245.  03h    BYTE    directory handle
  44246.  
  44247. Format of NetWare reply buffer:
  44248. Offset    Size    Description    (Table 0975)
  44249.  00h    WORD    (call) 0000h (no returned data)
  44250. --------N-21E2--SF15-------------------------
  44251. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
  44252.     AH = E2h subfn 15h
  44253.     DS:SI -> request buffer (see #0976)
  44254.     ES:DI -> reply buffer (see #0977)
  44255. Return: AL = status
  44256.         00h successful
  44257. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44258.       Alloy NTNX
  44259. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
  44260.  
  44261. Format of NetWare request buffer:
  44262. Offset    Size    Description    (Table 0976)
  44263.  00h    WORD    0002h (length of following data)
  44264.  02h    BYTE    15h (subfunction "Get Volume Info With Handle")
  44265.  03h    BYTE    directory handle
  44266.  
  44267. Format of NetWare reply buffer:
  44268. Offset    Size    Description    (Table 0977)
  44269.  00h    WORD    (call) 001Ch (length of following results buffer)
  44270.  02h    WORD    (big-endian) sectors per block
  44271.  04h    WORD    (big-endian) total blocks on volume
  44272.  06h    WORD    (big-endian) blocks available on volume
  44273.  08h    WORD    (big-endian) total directory slots
  44274.  0Ah    WORD    (big-endian) directory slots available
  44275.  0Ch 16 BYTEs    NUL-padded volume name
  44276.  1Ch    WORD    (big-endian) flag: volume removable if nonzero
  44277. --------N-21E2--SF16-------------------------
  44278. INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
  44279.     AH = E2h subfn 16h
  44280.     DS:SI -> request buffer (see #0978)
  44281.     ES:DI -> reply buffer
  44282. Return: AL = status
  44283. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
  44284.       but is not described in _NetWare_System_Calls--DOS_
  44285. SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h
  44286.  
  44287. Format of NetWare request buffer:
  44288. Offset    Size    Description    (Table 0978)
  44289.  00h    WORD    length of following data
  44290.  02h    BYTE    16h (subfunction "Allocate Special Temporary Directory Handle")
  44291.     ???
  44292. --------N-21E2--SF17-------------------------
  44293. INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
  44294.     AH = E2h subfn 17h
  44295.     DS:SI -> request buffer (see #0979)
  44296.     ES:DI -> reply buffer (see #0980)
  44297. Return: AL = status
  44298.         00h successful
  44299.         else network error code
  44300. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  44301. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h
  44302.  
  44303. Format of NetWare request buffer:
  44304. Offset    Size    Description    (Table 0979)
  44305.  00h    WORD    0002h (length of following data)
  44306.  02h    BYTE    18h (subfunction "Restore Directory Handle")
  44307.  03h    BYTE    directory handle
  44308.  
  44309. Format of NetWare reply buffer:
  44310. Offset    Size    Description    (Table 0980)
  44311.  00h    WORD    (call) 0010h (length of following results buffer)
  44312.  02h 16 BYTEs    save buffer
  44313. --------N-21E2--SF18-------------------------
  44314. INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
  44315.     AH = E2h subfn 18h
  44316.     DS:SI -> request buffer (see #0981)
  44317.     ES:DI -> reply buffer (see #0982)
  44318. Return: AL = status
  44319.         00h successful
  44320.         else network error code
  44321. Desc:    restore a previously saved directory handle to reproduce an executing
  44322.       environment, possibly on a different execution site
  44323. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  44324. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h
  44325.  
  44326. Format of NetWare request buffer:
  44327. Offset    Size    Description    (Table 0981)
  44328.  00h    WORD    0011h (length of following data)
  44329.  02h    BYTE    18h (subfunction "Restore Directory Handle")
  44330.  03h 16 BYTEs    save buffer
  44331.  
  44332. Format of NetWare reply buffer:
  44333. Offset    Size    Description    (Table 0982)
  44334.  00h    WORD    (call) 0002h (length of following results buffer)
  44335.  02h    BYTE    new directory handle
  44336.  03h    BYTE    effective rights (see #0951)
  44337. --------N-21E2--SF19-------------------------
  44338. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
  44339.     AH = E2h subfn 19h
  44340.     DS:SI -> request buffer (see #0983)
  44341.     ES:DI -> reply buffer (see #0984)
  44342. Return: AL = status (00h,9Bh,9Ch) (see #0941)
  44343. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44344. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh
  44345.  
  44346. Format of NetWare request buffer:
  44347. Offset    Size    Description    (Table 0983)
  44348.  00h    WORD    length of following data (max 10Bh)
  44349.  02h    BYTE    19h (subfunction "Set Directory Information")
  44350.  03h    BYTE    directory handle
  44351.  04h    DWORD    (big-endian) date and time of creation
  44352.  08h    DWORD    (big-endian) object ID of owner
  44353.  0Ch    BYTE    maximum directory rights (see #0951)
  44354.  0Dh    BYTE    length of directory path
  44355.  0Eh  N BYTEs    directory path
  44356.  
  44357. Format of NetWare reply buffer:
  44358. Offset    Size    Description    (Table 0984)
  44359.  00h    WORD    (call) 0000h (no results returned)
  44360. --------N-21E2--SF1A-------------------------
  44361. INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
  44362.     AH = E2h subfn 1Ah
  44363.     DS:SI -> request buffer (see #0985)
  44364.     ES:DI -> reply buffer (see #0986)
  44365. Return: AL = status
  44366.         00h successful
  44367. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44368.       Alloy NTNX
  44369. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h
  44370.  
  44371. Format of NetWare request buffer:
  44372. Offset    Size    Description    (Table 0985)
  44373.  00h    WORD    0004h (length of following data)
  44374.  02h    BYTE    1Ah (subfunction "Get Path From Directory Entry")
  44375.  03h    BYTE    volume number (00h-1Fh)
  44376.  04h    WORD    (big-endian) directory entry number
  44377.  
  44378. Format of NetWare reply buffer:
  44379. Offset    Size    Description    (Table 0986)
  44380.  00h    WORD    (call) size of following results record (max 200h)
  44381.  02h 256 BYTEs    path
  44382. --------E-21E3-------------------------------
  44383. INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
  44384.     AH = E3h
  44385.     AL = interrupt number
  44386.     ???
  44387. Return: ???
  44388. Note:    protected mode only???
  44389. SeeAlso: AH=E1h"OS/286",INT 31/AX=0300h
  44390. --------T-21E3-------------------------------
  44391. INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
  44392.     AH = E3h
  44393.     AL = character
  44394. Return: AL = status
  44395.         00h successful
  44396.         01h buffer full (128 characters)
  44397. SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
  44398. SeeAlso: AH=F3h"DoubleDOS"
  44399. --------N-21E3-------------------------------
  44400. INT 21 - Novell NetWare - CONNECTION CONTROL
  44401.     AH = E3h
  44402.     DS:SI -> request buffer (see #0987)
  44403.     ES:DI -> reply buffer (see #0988)
  44404. Return: AL = status
  44405.         00h successful
  44406.         else error code
  44407. Note:    supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
  44408. SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
  44409.  
  44410. Format of NetWare request buffer:
  44411. Offset    Size    Description    (Table 0987)
  44412.  00h    WORD    length of following data
  44413.  02h    BYTE    subfunction number
  44414.         00h login
  44415.         01h change password
  44416.         02h map user to station set
  44417.         03h map object to number
  44418.         04h map number to object
  44419.         05h get station's logged information
  44420.         06h get station's root mask (obsolete)
  44421.         07h map group name to number
  44422.         08h map number to group name
  44423.         09h get memberset M of group G
  44424.     var    depends on subfunction
  44425. Notes:    the above subfunctions are not described in _NetWare_System_Calls--DOS_
  44426.     see separate entries below for other subfunctions
  44427.  
  44428. Format of NetWare reply buffer:
  44429. Offset    Size    Description    (Table 0988)
  44430.  00h    WORD    (call) length of following buffer space for results
  44431.     var    depends on subfunction
  44432.  
  44433. Format of NetWare object property:
  44434. Offset    Size    Description    (Table 0989)
  44435.  00h 1-16 BYTEs property name (see also #0990)
  44436.   N    BYTE    flags
  44437.         bit 0: property is dynamic
  44438.         bit 1: property is a set rather than an item
  44439.  N+1    BYTE    security levels (see #0991)
  44440.     ???
  44441.  
  44442. (Table 0990)
  44443. Values for names of well-known NetWare properties:
  44444.  ACCOUNT_BALANCE
  44445.  ACCOUNT_SERVERS
  44446.  GROUP_MEMBERS
  44447.  GROUPS_I'M_IN
  44448.  IDENTIFICATION        user's name
  44449.  LOGIN_CONTROL
  44450.  NET_ADDRESS
  44451.  OPERATORS
  44452.  PASSWORD
  44453.  SECURITY_EQUALS
  44454.  
  44455. (Table 0991)
  44456. Values for NetWare security levels:
  44457.  00h    "anyone" everyone may access
  44458.  01h    "logged" only logged-in clients may access
  44459.  02h    "object" only clients logged-in with object's name, type, and password
  44460.  03h    "supervisor" only clients logged-in with supervisor privileges
  44461.  04h    "NetWare" only NetWare may access
  44462. Note:    the above values are stored in a nybble; the high half-byte is write
  44463.       access and the low half-byte is read access
  44464.  
  44465. (Table 0992)
  44466. Values for NetWare object type:
  44467.  0000h    unknown
  44468.  0001h    user
  44469.  0002h    user group
  44470.  0003h    print queue
  44471.  0004h    file server
  44472.  0005h    job server
  44473.  0006h    gateway
  44474.  0007h    print server
  44475.  0008h    archive queue
  44476.  0009h    archive server
  44477.  000Ah    job queue
  44478.  000Bh    administration
  44479.  0026h    remote bridge server
  44480.  0047h    advertising print server
  44481.  0048h-8000h reserved
  44482.  FFFFh    wild (used only for finding objects)
  44483. --------N-21E3--SF0A-------------------------
  44484. INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
  44485.     AH = E3h subfn 0Ah
  44486.     DS:SI -> request buffer (see #0993)
  44487.     ES:DI -> reply buffer (see #0994)
  44488. Return: AL = status
  44489.         00h successful
  44490. Desc:    change the login directory for the calling workstation
  44491. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44492.       Alloy NTNX
  44493. SeeAlso: AH=D7h,AH=E3h/SF=14h
  44494.  
  44495. Format of NetWare request buffer:
  44496. Offset    Size    Description    (Table 0993)
  44497.  00h    WORD    length of following data (max 102h)
  44498.  02h    BYTE    0Ah (subfunction "Enter Login Area")
  44499.  03h    BYTE    number of local drives
  44500.  04h    BYTE    length of subdirectory name (00h-FFh)
  44501.  05h  N BYTEs    name of subdirectory under SYS:LOGIN where to find the login
  44502.           utility
  44503.  
  44504. Format of NetWare reply buffer:
  44505. Offset    Size    Description    (Table 0994)
  44506.  00h    WORD    (call) 0000h (no data returned)
  44507. --------N-21E3--SF0C-------------------------
  44508. INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
  44509.     AH = E3h subfn 0Ch
  44510.     DS:SI -> request buffer (see #0995)
  44511.     ES:DI -> reply buffer (see #0996)
  44512. Return: AL = status
  44513.         00h successful
  44514. Note:    if the network serial number to be verified is correct, the reply
  44515.       buffer will contain the corresponding application number
  44516. SeeAlso: AH=E3h/SF=12h
  44517.  
  44518. Format of NetWare request buffer:
  44519. Offset    Size    Description    (Table 0995)
  44520.  00h    WORD    0005h (length of following data)
  44521.  02h    BYTE    0Ch (subfunction "Verify Network Serial Number")
  44522.  03h    DWORD    (big-endian) network serial number to verify
  44523.  
  44524. Format of NetWare reply buffer:
  44525. Offset    Size    Description    (Table 0996)
  44526.  00h    WORD    (call) 0002h (size of following results buffer)
  44527.  02h    WORD    (big-endian) application number
  44528. --------N-21E3--SF0D-------------------------
  44529. INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
  44530.     AH = E3h subfn 0Dh
  44531.     DS:SI -> request buffer (see #0997)
  44532.     ES:DI -> reply buffer (see below)
  44533. Return: AL = status
  44534.         00h successful
  44535. Desc:    append a line to the default file server's NET$LOG.MSG file
  44536. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  44537.       Alloy NTNX
  44538. SeeAlso: AH=E1h/SF=09h
  44539.  
  44540. Format of NetWare request buffer:
  44541. Offset    Size    Description    (Table 0997)
  44542.  00h    WORD    length of following data (max 52h)
  44543.  02h    BYTE    0Dh (subfunction "Log Network Message")
  44544.  03h    BYTE    length of message (01h-50h)
  44545.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  44546. --------N-21E3--SF0E-------------------------
  44547. INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
  44548.     AH = E3h subfn 0Eh
  44549.     DS:SI -> request buffer (see #0999)
  44550.     ES:DI -> reply buffer (see #1000)
  44551. Return: AL = status (00h,98h,F2h) (see #0998)
  44552. Notes:    this function is supported by Advanced NetWare 2.1+
  44553.     the caller must have bindery object read privileges
  44554. SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
  44555.  
  44556. (Table 0998)
  44557. Values for NetWare function status:
  44558.  00h    successful
  44559.  98h    nonexistent volume
  44560.  F2h    not permitted to read object
  44561.  
  44562. Format of NetWare request buffer:
  44563. Offset    Size    Description    (Table 0999)
  44564.  00h    WORD    0005h (length of following data)
  44565.  02h    BYTE    0Eh (subfunction "Get Disk Utilization")
  44566.  03h    BYTE    volume number (00h-1Fh)
  44567.  04h    DWORD    (big-endian) object ID
  44568.  
  44569. Format of NetWare reply buffer:
  44570. Offset    Size    Description    (Table 1000)
  44571.  00h    WORD    (call) 000Bh (size of following results buffer)
  44572.  02h    BYTE    volume number (00h-1Fh)
  44573.  03h    DWORD    (big-endian) object ID
  44574.  07h    WORD    (big-endian) directories used by object
  44575.  09h    WORD    (big-endian) files created by object
  44576.  0Bh    WORD    (big-endian) disk blocks used by object-created files
  44577. --------N-21E3--SF0F-------------------------
  44578. INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
  44579.     AH = E3h subfn 0Fh
  44580.     DS:SI -> request buffer (see #1002)
  44581.     ES:DI -> reply buffer (see #1003)
  44582. Return: AL = status (see #1001)
  44583. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44584. SeeAlso: AH=B6h,AH=E3h/SF=10h
  44585.  
  44586. (Table 1001)
  44587. Values for NetWare function status:
  44588.  00h    successful
  44589.  89h    not permitted to search directory
  44590.  FFh    no more matching files
  44591.  
  44592. Format of NetWare request buffer:
  44593. Offset    Size    Description    (Table 1002)
  44594.  00h    WORD    length of following data (max 105h)
  44595.  02h    BYTE    0Fh (subfunction "Scan File Information")
  44596.  03h    WORD    (big-endian) sequence number
  44597.         FFFFh on first call
  44598.  05h    BYTE    directory handle or 00h
  44599.  06h    BYTE    search attributes (see #0574 at AX=4301h)
  44600.  07h    BYTE    length of filespec
  44601.  08h  N BYTEs    ASCIZ uppercase filespec
  44602.  
  44603. Format of NetWare reply buffer:
  44604. Offset    Size    Description    (Table 1003)
  44605.  00h    WORD    (call) 005Eh (size of following results buffer)
  44606.  02h    WORD    next sequence number (place in request buffer for next call)
  44607.  04h 14 BYTEs    ASCIZ filename
  44608.  12h    BYTE    file attributes (see #0574 at AX=4301h)
  44609.  13h    BYTE    extended file attributes (see #0907 at AH=B6h)
  44610.  14h    DWORD    (big-endian) file size in bytes
  44611.  18h    WORD    (big-endian) file's creation date (see #0803 at AX=5700h)
  44612.  1Ah    WORD    (big-endian) date of last access (see #0802 at AX=5700h)
  44613.  1Ch    DWORD    (big-endian) date and time of last update (see #0948)
  44614.  20h    DWORD    (big-endian) object ID of owner
  44615.  24h    DWORD    (big-endian) date and time last archived (see #0948)
  44616.  28h 55 BYTEs    reserved
  44617. Note:    the official documentation erroneously lists the field at offset 04h as
  44618.       15 bytes and thus shifts the remaining fields by one byte
  44619. --------N-21E3--SF10-------------------------
  44620. INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
  44621.     AH = E3h subfn 10h
  44622.     DS:SI -> request buffer (see #1004)
  44623.     ES:DI -> reply buffer (see #1005)
  44624. Return: AL = status
  44625.         00h successful
  44626. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44627.     the caller must have modify privileges on the directory containing the
  44628.       file
  44629. SeeAlso: AH=B6h,AH=E3h/SF=0Fh
  44630.  
  44631. Format of NetWare request buffer:
  44632. Offset    Size    Description    (Table 1004)
  44633.  00h    WORD    length of following data (max 151h)
  44634.  02h    BYTE    10h (subfunction "Set File Information")
  44635.  03h    BYTE    file attributes (see #0574 at AX=4301h)
  44636.  04h    BYTE    extended file attributes (see #0907 at AH=B6h)
  44637.  05h  4 BYTEs    reserved
  44638.  09h    WORD    (big-endian) file's creation date (see #0803 at AX=5700h)
  44639.  0Bh    WORD    (big-endian) date of last access (see #0802 at AX=5700h)
  44640.  0Dh    DWORD    (big-endian) date and time of last update (see #0948)
  44641.  11h    DWORD    (big-endian) object ID of owner
  44642.  15h    DWORD    (big-endian) date and time last archived (see #0948)
  44643.  19h 56 BYTEs    reserved
  44644.  51h    BYTE    directory handle or 00h
  44645.  52h    BYTE    search attributes (see #0574 at AX=4301h)
  44646.  53h    BYTE    length of filename
  44647.  54h  N BYTEs    filename
  44648.  
  44649. Format of NetWare reply buffer:
  44650. Offset    Size    Description    (Table 1005)
  44651.  00h    WORD    (call) 0000h (no results returned)
  44652. --------N-21E3--SF11-------------------------
  44653. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
  44654.     AH = E3h subfn 11h
  44655.     DS:SI -> request buffer (see #1006)
  44656.     ES:DI -> reply buffer (see #1007)
  44657. Return: AL = status
  44658.         00h successful
  44659. Desc:    determine the version of software installed on the file server and
  44660.       how it is configured
  44661. Note:    this function is supported by Advanced NetWare 2.1+
  44662. SeeAlso: AH=E3h/SF=0Eh,AE3h/SF=12h,AH=E3h/SF=CDh,AH=E3h/SF=D3h,AH=E3h/SF=E7h
  44663. SeeAlso: AH=E7h
  44664.  
  44665. Format of NetWare request buffer:
  44666. Offset    Size    Description    (Table 1006)
  44667.  00h    WORD    0001h (length of following data)
  44668.  02h    BYTE    11h (subfunction "Get File Server Information")
  44669.  
  44670. Format of NetWare reply buffer:
  44671. Offset    Size    Description    (Table 1007)
  44672.  00h    WORD    (call) 0080h (size of following results buffer)
  44673.  02h 48 BYTEs    server's name
  44674.  32h    BYTE    NetWare version
  44675.  33h    BYTE    NetWare subversion (0-99)
  44676.  34h    WORD    (big-endian) number of connections supported
  44677.  36h    WORD    (big-endian) number of connections in use
  44678.  38h    WORD    (big-endian) maximum connected volumes
  44679. ---Advanced NetWare 2.1+ ---
  44680.  3Ah    BYTE    operating system revision number
  44681.  3Bh    BYTE    fault tolerance (SFT) level
  44682.  3Ch    BYTE    TTS level
  44683.  3Dh    WORD    (big-endian) maximum simultaneously-used connections
  44684.  3Fh    BYTE    accounting version
  44685.  40h    BYTE    VAP version
  44686.  41h    BYTE    queueing version
  44687.  42h    BYTE    print server version
  44688.  43h    BYTE    virtual console version
  44689.  44h    BYTE    security restrictions level
  44690.  45h    BYTE    internetwork bridge version
  44691.  46h 60 BYTEs    reserved
  44692. --------N-21E3--SF12-------------------------
  44693. INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
  44694.     AH = E3h subfn 12h
  44695.     AL = 00h
  44696.     BX = CX = DX = 0000h
  44697.     DS:SI -> request buffer (see #1008)
  44698.     ES:DI -> reply buffer (see #1009)
  44699. Return: AL = status
  44700.         00h successful
  44701. Desc:    return the serial number and application number for the software
  44702.       installed on the file server
  44703. Notes:    this function is supported by Advanced NetWare 2.1+
  44704.     reportedly, the workstation crashes if AL,BX,CX, and DX are not all
  44705.       zero
  44706. SeeAlso: AH=E3h/SF=0Ch,AH=E3h/SF=11h
  44707.  
  44708. Format of NetWare request buffer:
  44709. offset     size    description    (Table 1008)
  44710.  00h     WORD    0001h (length of following data)
  44711.  02h     BYTE    12h (subfunction "Get Serial Number")
  44712.  
  44713. Format of NetWare reply buffer:
  44714. offset     size    description    (Table 1009)
  44715.  00h     WORD    (call) 0006h (size of following results buffer)
  44716.  02h   4 BYTEs    (big-endian) NetWare server serial number
  44717.  06h   2 BYTEs    (big-endian) NetWare application serial number
  44718. --------N-21E3--SF13-------------------------
  44719. INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS
  44720.     AH = E3h subfn 13h
  44721.     DS:SI -> request buffer (see #1010)
  44722.     ES:DI -> reply buffer (see #1011)
  44723. Return: AL = status
  44724.         00h successful
  44725. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44726. SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AH=EEh"NetWare"
  44727.  
  44728. Format of NetWare request buffer:
  44729. Offset    Size    Description    (Table 1010)
  44730.  00h    WORD    0002h (length of following data)
  44731.  02h    BYTE    13h (subfunction "Get Internet Address")
  44732.  03h    BYTE    logical connection number (01h-64h)
  44733.  
  44734. Format of NetWare reply buffer:
  44735. Offset    Size    Description    (Table 1011)
  44736.  00h    WORD    (call) 000Ch (length of following results buffer)
  44737.  02h  4 BYTEs    network number
  44738.  06h  6 BYTEs    physical node address
  44739.  0Ch  2 BYTEs    socket number
  44740. --------N-21E3--SF14-------------------------
  44741. INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
  44742.     AH = E3h subfn 14h
  44743.     DS:SI -> request buffer (see #1012)
  44744.     ES:DI -> reply buffer (see #1013)
  44745. Return: AL = status
  44746.         00h successful
  44747. Desc:    this function retrieves a list indicating the connection numbers under
  44748.       which a bindery object is logged into the default file server
  44749. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44750. SeeAlso: AH=D7h"NetWare",AH=F1h"NetWare"
  44751.  
  44752. Format of NetWare request buffer:
  44753. Offset    Size    Description    (Table 1012)
  44754.  00h    WORD    length of following data (max B3h)
  44755.  02h    BYTE    14h (subfunction "Login To File Server")
  44756.  03h    WORD    (big-endian) type of object
  44757.  05h    BYTE    length of object's name (01h-2Fh)
  44758.  06h  N BYTEs    object's name
  44759.     BYTE    length of password
  44760.       N BYTEs    password
  44761.  
  44762. Format of NetWare reply buffer:
  44763. Offset    Size    Description    (Table 1013)
  44764.  00h    WORD    (call) 0000h (no data returned)
  44765. --------N-21E3--SF15-------------------------
  44766. INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION NUMBERS
  44767.     AH = E3h subfn 15h
  44768.     DS:SI -> request buffer (see #1014)
  44769.     ES:DI -> reply buffer (see #1015)
  44770. Return: AL = status
  44771.         00h successful
  44772. Desc:    this function retrieves a list indicating the connection numbers under
  44773.       which a bindery object is logged into the default file server
  44774. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44775. SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h
  44776.  
  44777. Format of NetWare request buffer:
  44778. Offset    Size    Description    (Table 1014)
  44779.  00h    WORD    length of following data (max 33h)
  44780.  02h    BYTE    15h (subfunction "Get Object Connection Numbers")
  44781.  03h    WORD    (big-endian) type of object
  44782.  05h    BYTE    length of object's name (01h-2Fh)
  44783.  06h  N BYTEs    object's name
  44784.  
  44785. Format of NetWare reply buffer:
  44786. Offset    Size    Description    (Table 1015)
  44787.  00h    WORD    (call) length of following results buffer (max 65h)
  44788.  02h    BYTE    number of connections
  44789.  03h  N BYTEs    connection list
  44790. --------N-21E3--SF16-------------------------
  44791. INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
  44792.     AH = E3h subfn 16h
  44793.     DS:SI -> request buffer (see #1016)
  44794.     ES:DI -> reply buffer (see #1017)
  44795. Return: AL = status
  44796.         00h successful
  44797. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44798. SeeAlso: AH=D7h,AH=DCh"NetWare",AH=E3h/SF=14h
  44799.  
  44800. Format of NetWare request buffer:
  44801. Offset    Size    Description    (Table 1016)
  44802.  00h    WORD    0002h (length of following data)
  44803.  02h    BYTE    16h (subfunction "Get Connection Information")
  44804.  03h    BYTE    logical connection number (01h-64h)
  44805.  
  44806. Format of NetWare reply buffer:
  44807. Offset    Size    Description    (Table 1017)
  44808.  00h    WORD    (call) 003Eh (length of following results buffer)
  44809.  02h    DWORD    (big-endian) object ID for object logged in on the connection
  44810.         00000000h if no object logged in
  44811.  06h    WORD    (big-endian) type of object
  44812.  08h 48 BYTEs    name of object
  44813.  38h  7 BYTEs    login time (see #1018)
  44814. Note:    much of the Novell documentation incorrectly states the reply buffer
  44815.       length as 3Fh instead of 40h, which corresponds to a results length
  44816.       of 3Dh (61) bytes instead of the correct 3Eh (62) bytes
  44817.  
  44818. Format of NetWare login time:
  44819. Offset    Size    Description    (Table 1018)
  44820.  00h    BYTE    year (80-99 = 1980-1999, 00-79 = 2000-2079)
  44821.  01h    BYTE    month (1-12)
  44822.  02h    BYTE    day (1-31)
  44823.  03h    BYTE    hour (0-23)
  44824.  04h    BYTE    minute (0-59)
  44825.  05h    BYTE    second (0-59)
  44826.  06h    BYTE    day of week (0 = Sunday)
  44827. --------N-21E3--SF32-------------------------
  44828. INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
  44829.     AH = E3h subfn 32h
  44830.     DS:SI -> request buffer (see #1020)
  44831.     ES:DI -> reply buffer (see #1021)
  44832. Return: AL = status (see #1019)
  44833. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44834. SeeAlso: AH=E3h/SF=33h,AH=E3h/SF=34h,AH=E3h/SF=38h,AH=E3h/SF=39h
  44835.  
  44836. (Table 1019)
  44837. Values for NetWare function status:
  44838.  00h    successful
  44839.  96h    server out of memory
  44840.  EEh    object already exists
  44841.  EFh    invalid name
  44842.  F0h    wildcard not allowed
  44843.  F1h    invalid bindery security level
  44844.  F3h    not permitted to rename object
  44845.  F4h    not permitted to delete objects
  44846.  F5h    not permitted to create objects
  44847.  FCh    no such object
  44848.  FEh    server bindery locked
  44849.  FFh    bindery failure
  44850.  
  44851. Format of NetWare request buffer:
  44852. Offset    Size    Description    (Table 1020)
  44853.  00h    WORD    length of following data (max 35h)
  44854.  02h    BYTE    32h (subfunction "Create Bindery Object")
  44855.  03h    BYTE    object flag (00h static, 01h dynamic)
  44856.  04h    BYTE    object security levels
  44857.  05h    WORD    (big-endian) type of object
  44858.  07h    BYTE    length of object's name
  44859.  08h  N BYTEs    object's name
  44860.  
  44861. Format of NetWare reply buffer:
  44862. Offset    Size    Description    (Table 1021)
  44863.  00h    WORD    0000h (no data returned)
  44864. --------N-21E3--SF33-------------------------
  44865. INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
  44866.     AH = E3h subfn 33h
  44867.     DS:SI -> request buffer (see #1022)
  44868.     ES:DI -> reply buffer (see #1021)
  44869. Return: AL = status (see #1019)
  44870. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44871. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=34h
  44872.  
  44873. Format of NetWare request buffer:
  44874. Offset    Size    Description    (Table 1022)
  44875.  00h    WORD    length of following data (max 33h)
  44876.  02h    BYTE    33h (subfunction "Delete Bindery Object")
  44877.  03h    WORD    (big-endian) type of object
  44878.  05h    BYTE    length of object's name (01h-2Fh)
  44879.  06h  N BYTEs    object's name
  44880. --------N-21E3--SF34-------------------------
  44881. INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
  44882.     AH = E3h subfn 34h
  44883.     DS:SI -> request buffer (see #1023)
  44884.     ES:DI -> reply buffer (see #1021)
  44885. Return: AL = status (see #1019)
  44886. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44887. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h
  44888.  
  44889. Format of NetWare request buffer:
  44890. Offset    Size    Description    (Table 1023)
  44891.  00h    WORD    length of following data (max 63h)
  44892.  02h    BYTE    34h (subfunction "Rename Bindery Object")
  44893.  03h    WORD    (big-endian) type of object
  44894.  05h    BYTE    length of object's name (01h-2Fh)
  44895.  06h  N BYTEs    object's name
  44896.     BYTE    length of new name (01h-2Fh)
  44897.       N BYTEs    new name
  44898. --------N-21E3--SF35-------------------------
  44899. INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
  44900.     AH = E3h subfn 35h
  44901.     DS:SI -> request buffer (see #1024)
  44902.     ES:DI -> reply buffer (see #1025)
  44903. Return: AL = status (00h,96h,FCh,FEh,FFh) (see #1026)
  44904. Notes:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44905.     the requesting workstation must be logged into the file server with
  44906.       read access to the bindery object
  44907. SeeAlso: AH=E3h/SF=36h,AH=E3h/SF=44h
  44908.  
  44909. Format of NetWare request buffer:
  44910. Offset    Size    Description    (Table 1024)
  44911.  00h    WORD    length of following data (max 33h)
  44912.  02h    BYTE    35h (subfunction "Get Bindery Object ID")
  44913.  03h    WORD    (big-endian) type of object
  44914.  05h    BYTE    length of object's name
  44915.  06h  N BYTEs    object's name
  44916.  
  44917. Format of NetWare reply buffer:
  44918. Offset    Size    Description    (Table 1025)
  44919.  00h    WORD    (call) 0036h (length of following buffer space)
  44920.  02h    DWORD    (big-endian) object ID
  44921.  06h    WORD    (big-endian) type of object
  44922.  08h 48 BYTEs    object name
  44923. --------N-21E3--SF36-------------------------
  44924. INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
  44925.     AH = E3h subfn 36h
  44926.     DS:SI -> request buffer (see #1027)
  44927.     ES:DI -> reply buffer (see #1028)
  44928. Return: AL = status (see #1026)
  44929. Notes:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44930.     the requesting workstation must be logged into the file server with
  44931.       read access to the bindery object
  44932. SeeAlso: AH=E3h/SF=35h,AH=E3h/SF=44h
  44933.  
  44934. (Table 1026)
  44935. Values for NetWare function status:
  44936.  00h    successful
  44937.  96h    server out of memory
  44938.  EFh    invalid name
  44939.  F0h    wildcard not allowed
  44940.  FCh    no such object
  44941.  FEh    server bindery locked
  44942.  FFh    bindery failure
  44943.  
  44944. Format of NetWare request buffer:
  44945. Offset    Size    Description    (Table 1027)
  44946.  00h    WORD    0005h (length of following data)
  44947.  02h    BYTE    36h (subfunction "Get Bindery Object Name")
  44948.  03h    DWORD    (big-endian) object ID
  44949.  
  44950. Format of NetWare reply buffer:
  44951. Offset    Size    Description    (Table 1028)
  44952.  00h    WORD    (call) 0036h (length of following buffer space)
  44953.  02h    DWORD    (big-endian) object ID
  44954.  06h    WORD    (big-endian) type of object
  44955.  08h 48 BYTEs    object name
  44956. --------N-21E3--SF37-------------------------
  44957. INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
  44958.     AH = E3h subfn 37h
  44959.     DS:SI -> request buffer (see #1029)
  44960.     ES:DI -> reply buffer (see #1030)
  44961. Return: AL = status (see #1026)
  44962. Notes:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44963.     the requesting workstation must be logged into the file server with
  44964.       read access to the bindery object
  44965. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AH=E3h/SF=38h,AH=E3h/SF=3Ch
  44966.  
  44967. Format of NetWare request buffer:
  44968. Offset    Size    Description    (Table 1029)
  44969.  00h    WORD    length of following data (max 37h)
  44970.  02h    BYTE    37h (subfunction "Scan Bindery Object")
  44971.  03h    DWORD    (big-endian) last object ID
  44972.  07h    WORD    (big-endian) type of object
  44973.  09h    BYTE    length of object's name
  44974.  0Ah  N BYTEs    object's name
  44975.  
  44976. Format of NetWare reply buffer:
  44977. Offset    Size    Description    (Table 1030)
  44978.  00h    WORD    (call) 0039h (length of following buffer space)
  44979.  02h    DWORD    (big-endian) object ID
  44980.         FFFFFFFFh for first call
  44981.  06h    WORD    (big-endian) type of object
  44982.  08h 48 BYTEs    object name (counted string)
  44983.  38h    BYTE    object flag (00h static, 01h dynamic)
  44984.  39h    BYTE    object's security levels
  44985.  3Ah    BYTE    object properties flag (00h no, FFh yes)
  44986. --------N-21E3--SF38-------------------------
  44987. INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
  44988.     AH = E3h subfn 38h
  44989.     DS:SI -> request buffer (see #1031)
  44990.     ES:DI -> reply buffer (see #1034)
  44991. Return: AL = status (00h,96h,F0h,F1h,FBh,FCh,FEh,FFh) (see #1032)
  44992. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  44993. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh
  44994.  
  44995. Format of NetWare request buffer:
  44996. Offset    Size    Description    (Table 1031)
  44997.  00h    WORD    length of following data (max 34h)
  44998.  02h    BYTE    38h (subfunction "Change Bindery Object Security")
  44999.  03h    BYTE    new security levels
  45000.  04h    WORD    (big-endian) type of object
  45001.  06h    BYTE    length of object's name (01h-2Fh)
  45002.  07h  N BYTEs    object name
  45003. --------N-21E3--SF39-------------------------
  45004. INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
  45005.     AH = E3h subfn 39h
  45006.     DS:SI -> request buffer (see #1033)
  45007.     ES:DI -> reply buffer (see #1034)
  45008. Return: AL = status (see #1032)
  45009. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45010. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh
  45011.  
  45012. (Table 1032)
  45013. Values for NetWare function status:
  45014.  00h    successful
  45015.  96h    server out of memory
  45016.  EDh    property already exists
  45017.  EFh    invalid name
  45018.  F0h    wildcard not allowed
  45019.  F1h    invalid bindery security level
  45020.  F6h    not permitted to delete properties
  45021.  F7h    not permitted to create properties
  45022.  FBh    no such property
  45023.  FCh    no such object
  45024.  FEh    server bindery locked
  45025.  FFh    bindery failure
  45026.  
  45027. Format of NetWare request buffer:
  45028. Offset    Size    Description    (Table 1033)
  45029.  00h    WORD    length of following data (max 45h)
  45030.  02h    BYTE    39h (subfunction "Create Property")
  45031.  03h    WORD    (big-endian) type of object
  45032.  05h    BYTE    length of object's name (01h-2Fh)
  45033.  06h  N BYTEs    object's name
  45034.     BYTE    property flags
  45035.     BYTE    property security levels
  45036.     BYTE    length of property's name (01h-0Fh)
  45037.       N BYTEs    property's name
  45038.  
  45039. Format of NetWare reply buffer:
  45040. Offset    Size    Description    (Table 1034)
  45041.  00h    WORD    (call) 0000h (no data returned)
  45042. --------N-21E3--SF3A-------------------------
  45043. INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
  45044.     AH = E3h subfn 3Ah
  45045.     DS:SI -> request buffer (see #1035)
  45046.     ES:DI -> reply buffer (see #1034)
  45047. Return: AL = status (see #1032)
  45048. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45049. SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=39h
  45050.  
  45051. Format of NetWare request buffer:
  45052. Offset    Size    Description    (Table 1035)
  45053.  00h    WORD    length of following data (max 43h)
  45054.  02h    BYTE    3Ah (subfunction "Delete Property")
  45055.  03h    WORD    (big-endian) type of object
  45056.  05h    BYTE    length of object's name (01h-2Fh)
  45057.  06h  N BYTEs    object's name
  45058.     BYTE    length of property's name (01h-0Fh)
  45059.       N BYTEs    property's name
  45060. --------N-21E3--SF3B-------------------------
  45061. INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
  45062.     AH = E3h subfn 3Bh
  45063.     DS:SI -> request buffer (see #1037)
  45064.     ES:DI -> reply buffer (see #1034)
  45065. Return: AL = status (see #1036)
  45066. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45067. SeeAlso: AH=E3h/SF=38h
  45068.  
  45069. (Table 1036)
  45070. Values for NetWare function status:
  45071.  00h    successful
  45072.  96h    server out of memory
  45073.  F0h    wildcard not allowed
  45074.  F1h    invalid bindery security level
  45075.  FBh    no such property
  45076.  FCh    no such object
  45077.  FEh    server bindery locked
  45078.  FFh    bindery failure
  45079.  
  45080. Format of NetWare request buffer:
  45081. Offset    Size    Description    (Table 1037)
  45082.  00h    WORD    length of following data (max 44h)
  45083.  02h    BYTE    3Bh (subfunction "Change Property Security")
  45084.  03h    WORD    (big-endian) type of object
  45085.  05h    BYTE    length of object's name (01h-2Fh)
  45086.  06h  N BYTEs    object name
  45087.     BYTE    new property security levels
  45088.     BYTE    length of property's name
  45089.       N BYTEs    property name
  45090. --------N-21E3--SF3C-------------------------
  45091. INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
  45092.     AH = E3h subfn 3Ch
  45093.     DS:SI -> request buffer (see #1038)
  45094.     ES:DI -> reply buffer (see #1039)
  45095. Return: AL = status (00h,96h,F1h,FBh,FCh,FEh,FFh) (see #1036)
  45096. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45097. SeeAlso: AH=E3h/SF=37h,AH=E3h/SF=3Bh
  45098.  
  45099. Format of NetWare request buffer:
  45100. Offset    Size    Description    (Table 1038)
  45101.  00h    WORD    length of following data (max 47h)
  45102.  02h    BYTE    3Ch (subfunction "Scan Property")
  45103.  03h    WORD    (big-endian) type of object
  45104.  05h    BYTE    length of object's name (01h-2Fh)
  45105.  06h  N BYTEs    object name
  45106.     DWORD    (big-endian) sequence number
  45107.         FFFFFFFFh for first call
  45108.     BYTE    length of property's name (01h-0Fh)
  45109.       N BYTEs    property's name
  45110.  
  45111. Format of NetWare reply buffer:
  45112. Offset    Size    Description    (Table 1039)
  45113.  00h    WORD    (call) 0018h (length of following results buffer)
  45114.  02h 16 BYTEs    property name
  45115.  12h    BYTE    property flags
  45116.  13h    BYTE    property security levels
  45117.  14h    DWORD    (big-endian) sequence number
  45118.  18h    BYTE    property value flag (00h no, FFh yes)
  45119.  19h    BYTE    more properties (00h no, FFh yes)
  45120. --------N-21E3--SF3D-------------------------
  45121. INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
  45122.     AH = E3h subfn 3Dh
  45123.     DS:SI -> request buffer (see #1041)
  45124.     ES:DI -> reply buffer (see #1042)
  45125. Return: AL = status (see #1040)
  45126. Desc:    retrieve one 128-byte segment of the specified property's value
  45127. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45128. SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh
  45129.  
  45130. (Table 1040)
  45131. Values for NetWare function status:
  45132.  00h    successful
  45133.  96h    server out of memory
  45134.  E8h    not item property
  45135.  ECh    no such segment
  45136.  F0h    wildcard not allowed
  45137.  F1h    invalid bindery security level
  45138.  F8h    not permitted to write property
  45139.  F9h    not permitted to read property
  45140.  FBh    no such property
  45141.  FCh    no such object
  45142.  FEh    server bindery locked
  45143.  FFh    bindery failure
  45144.  
  45145. Format of NetWare request buffer:
  45146. Offset    Size    Description    (Table 1041)
  45147.  00h    WORD    length of following data (max 44h)
  45148.  02h    BYTE    3Dh (subfunction "Read Property Value")
  45149.  03h    WORD    (big-endian) type of object
  45150.  05h    BYTE    length of object's name (01h-2Fh)
  45151.  06h  N BYTEs    object name
  45152.     BYTE    segment number (01h on first call, increment until done)
  45153.     BYTE    length of property's name (01h-0Fh)
  45154.       N BYTEs    property name
  45155.  
  45156. Format of NetWare reply buffer:
  45157. Offset    Size    Description    (Table 1042)
  45158.  00h    WORD    (call) 0082h (length of following results buffer)
  45159.  02h 128 BYTEs    property's value
  45160.  82h    BYTE    more segments (00h no, FFh yes)
  45161.  83h    BYTE    property's flags
  45162. --------N-21E3--SF3E-------------------------
  45163. INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
  45164.     AH = E3h subfn 3Eh
  45165.     DS:SI -> request buffer (see #1043)
  45166.     ES:DI -> reply buffer (see #1044)
  45167. Return: AL = status (see #1040)
  45168. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45169. SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh
  45170.  
  45171. Format of NetWare request buffer:
  45172. Offset    Size    Description    (Table 1043)
  45173.  00h    WORD    length of following data (max C5h)
  45174.  02h    BYTE    3Eh (subfunction "Write Property Value")
  45175.  03h    WORD    (big-endian) type of object
  45176.  05h    BYTE    length of object's name (01h-2Fh)
  45177.  06h  N BYTEs    object name
  45178.     BYTE    segment number (01h on first call, increment until done)
  45179.     BYTE    erase remaining segments (00h no, FFh yes)
  45180.     BYTE    length of property's name (01h-0Fh)
  45181.       N BYTEs    property name
  45182.     128 BYTEs    property value segment
  45183.  
  45184. Format of NetWare reply buffer:
  45185. Offset    Size    Description    (Table 1044)
  45186.  00h    WORD    (call) 0000h (no data returned)
  45187. --------N-21E3--SF3F-------------------------
  45188. INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
  45189.     AH = E3h subfn 3Fh
  45190.     DS:SI -> request buffer (see #1046)
  45191.     ES:DI -> reply buffer (see #1044)
  45192. Return: AL = status (see #1045)
  45193. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45194. SeeAlso: AH=E3h/SF=40h
  45195.  
  45196. (Table 1045)
  45197. Values for NetWare function status:
  45198.  00h    successful
  45199.  96h    server out of memory
  45200.  F0h    wildcard not allowed
  45201.  FBh    no such property
  45202.  FCh    no such object
  45203.  FEh    server bindery locked
  45204.  FFh    bindery failure: no such object, bad password, no password for object,
  45205.       or invalid old password
  45206.  
  45207. Format of NetWare request buffer:
  45208. Offset    Size    Description    (Table 1046)
  45209.  00h    WORD    length of following data (max 133h)
  45210.  02h    BYTE    3Fh (subfunction "Verify Bindery Object Password")
  45211.  03h    WORD    (big-endian) type of object
  45212.  05h    BYTE    length of object's name (01h-2Fh)
  45213.  06h  N BYTEs    object name
  45214.     BYTE    length of password (00h-7Fh)
  45215.       N BYTEs    password
  45216. --------N-21E3--SF40-------------------------
  45217. INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
  45218.     AH = E3h subfn 40h
  45219.     DS:SI -> request buffer (see #1047)
  45220.     ES:DI -> reply buffer (see #1048)
  45221. Return: AL = status (see #1045)
  45222. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45223. SeeAlso: AH=E3h/SF=3Fh,AH=E3h/SF=41h
  45224.  
  45225. Format of NetWare request buffer:
  45226. Offset    Size    Description    (Table 1047)
  45227.  00h    WORD    length of following data (max 133h)
  45228.  02h    BYTE    40h (subfunction "Change Bindery Object Password")
  45229.  03h    WORD    (big-endian) type of object
  45230.  05h    BYTE    length of object's name (01h-2Fh)
  45231.  06h  N BYTEs    object name
  45232.     BYTE    length of old password (00h-7Fh)
  45233.       N BYTEs    old password
  45234.     BYTE    length of new password (00h-7Fh)
  45235.       N BYTEs    new password
  45236.  
  45237. Format of NetWare reply buffer:
  45238. Offset    Size    Description    (Table 1048)
  45239.  00h    WORD    (call) 0000h (no data returned)
  45240. --------N-21E3--SF41-------------------------
  45241. INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
  45242.     AH = E3h subfn 41h
  45243.     DS:SI -> request buffer (see #1050)
  45244.     ES:DI -> reply buffer (see #1048)
  45245. Return: AL = status (see #1049)
  45246. Desc:    add the specified object to a set property
  45247. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45248. SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h
  45249.  
  45250. (Table 1049)
  45251. Values for NetWare function status:
  45252.  00h    successful
  45253.  96h    server out of memory
  45254.  E9h    member already exists
  45255.  EAh    member does not exist
  45256.  EBh    not a group property
  45257.  F0h    wildcard not allowed
  45258.  F8h    can't write property
  45259.  F9h    not permitted to read property
  45260.  FBh    no such property
  45261.  FCh    no such object
  45262.  FEh    server bindery locked
  45263.  FFh    bindery failure
  45264.  
  45265. Format of NetWare request buffer:
  45266. Offset    Size    Description    (Table 1050)
  45267.  00h    WORD    length of following data (max 75h)
  45268.  02h    BYTE    41h (subfunction "Add Bindery Object to Set")
  45269.  03h    WORD    (big-endian) type of object
  45270.  05h    BYTE    length of object's name
  45271.  06h  N BYTEs    object name
  45272.     BYTE    length of property name (01h-0Fh)
  45273.       N BYTEs    property name
  45274.     WORD    (big-endian) type of member object
  45275.     BYTE    length of member object's name
  45276.       N BYTEs    member object's name
  45277. --------N-21E3--SF42-------------------------
  45278. INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
  45279.     AH = E3h subfn 42h
  45280.     DS:SI -> request buffer (see #1051)
  45281.     ES:DI -> reply buffer (see #1052)
  45282. Return: AL = status (see #1049)
  45283. Desc:    delete the specified object from a set property
  45284. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45285. SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h
  45286.  
  45287. Format of NetWare request buffer:
  45288. Offset    Size    Description    (Table 1051)
  45289.  00h    WORD    length of following data (max 75h)
  45290.  02h    BYTE    42h (subfunction "Delete Bindery Object from Set")
  45291.  03h    WORD    (big-endian) type of object
  45292.  05h    BYTE    length of object's name
  45293.  06h  N BYTEs    object name
  45294.     BYTE    length of property name (01h-0Fh)
  45295.       N BYTEs    property name
  45296.     WORD    (big-endian) type of member object
  45297.     BYTE    length of member object's name
  45298.       N BYTEs    member object's name
  45299.  
  45300. Format of NetWare reply buffer:
  45301. Offset    Size    Description    (Table 1052)
  45302.  00h    WORD    (call) 0000h (no data returned)
  45303. --------N-21E3--SF43-------------------------
  45304. INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
  45305.     AH = E3h subfn 43h
  45306.     DS:SI -> request buffer (see #1053)
  45307.     ES:DI -> reply buffer (see #1052)
  45308. Return: AL = status (see #1049)
  45309. Desc:    determine whether the specified object is a member of the given set
  45310.       property
  45311. Notes:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45312.     the caller must have read access to the property
  45313. SeeAlso: AH=E3h/SF=41h,AH=E3h/SF=42h
  45314.  
  45315. Format of NetWare request buffer:
  45316. Offset    Size    Description    (Table 1053)
  45317.  00h    WORD    length of following data (max 75h)
  45318.  02h    BYTE    43h (subfunction "Is Bindery Object In Set")
  45319.  03h    WORD    (big-endian) type of object
  45320.  05h    BYTE    length of object's name
  45321.  06h  N BYTEs    object's name
  45322.     BYTE    length of property's name
  45323.       N BYTEs    property's name
  45324.     WORD    (big-endian) type of member object
  45325.     BYTE    length of member object's name
  45326.       N BYTEs    member object's name
  45327. --------N-21E3--SF44-------------------------
  45328. INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
  45329.     AH = E3h subfn 44h
  45330.     DS:SI -> request buffer (see #1054)
  45331.     ES:DI -> reply buffer (see #1052)
  45332. Return: AL = status
  45333.         00h successful
  45334. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45335. SeeAlso: AH=E3h/SF=45h
  45336.  
  45337. Format of NetWare request buffer:
  45338. Offset    Size    Description    (Table 1054)
  45339.  00h    WORD    0001h (length of following data)
  45340.  02h    BYTE    44h (subfunction "Close Bindery")
  45341. --------N-21E3--SF45-------------------------
  45342. INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
  45343.     AH = E3h subfn 45h
  45344.     DS:SI -> request buffer (see #1055)
  45345.     ES:DI -> reply buffer (see #1052)
  45346. Return: AL = status
  45347.         00h successful
  45348. Notes:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45349.     the bindery may only be opened by the supervisor or an object with
  45350.       equivalent privileges
  45351. SeeAlso: AH=E3h/SF=44h
  45352.  
  45353. Format of NetWare request buffer:
  45354. Offset    Size    Description    (Table 1055)
  45355.  00h    WORD    0001h (length of following data)
  45356.  02h    BYTE    45h (subfunction "Open Bindery")
  45357. --------N-21E3--SF46-------------------------
  45358. INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
  45359.     AH = E3h subfn 46h
  45360.     DS:SI -> request buffer (see #1056)
  45361.     ES:DI -> reply buffer (see #1057)
  45362. Return: AL = status
  45363.         00h successful
  45364. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45365.  
  45366. Format of NetWare request buffer:
  45367. Offset    Size    Description    (Table 1056)
  45368.  00h    WORD    0001h (length of following data)
  45369.  02h    BYTE    46h (subfunction "Get Bindery Access Level")
  45370.  
  45371. Format of NetWare reply buffer:
  45372. Offset    Size    Description    (Table 1057)
  45373.  00h    WORD    0005h (length of following buffer)
  45374.  02h    BYTE    security levels
  45375.  03h    DWORD    (big-endian) object ID
  45376. --------N-21E3--SF47-------------------------
  45377. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
  45378.     AH = E3h subfn 47h
  45379.     DS:SI -> request buffer (see #1058)
  45380.     ES:DI -> reply buffer (see #1059)
  45381. Return: AL = status (00h,96h,F0h,F1h,FCh,FEh,FFh) (see #1060)
  45382. Desc:    iterate through the directories to which an object is a trustee
  45383. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  45384. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AH=E2h/SF=0Eh
  45385.  
  45386. Format of NetWare request buffer:
  45387. Offset    Size    Description    (Table 1058)
  45388.  00h    WORD    0008h (length of following data)
  45389.  02h    BYTE    47h (subfunction "Scan Bindery Object Trustee Paths")
  45390.  03h    BYTE    volume number (00h-1Fh)
  45391.  04h    WORD    (big-endian) last sequence number (FFFFh on first call)
  45392.  06h    DWORD    (big-endian) object ID
  45393.  
  45394. Format of NetWare reply buffer:
  45395. Offset    Size    Description    (Table 1059)
  45396.  00h    WORD    (call) length of following results buffer (max 107h)
  45397.  02h    WORD    (big-endian) next sequence number
  45398.  04h    DWORD    (big-endian) object ID
  45399.  08h    BYTE    trustee directory rights (see #0951 at AH=E2h/SF=03h)
  45400.  09h    BYTE    length of trustee path
  45401.  0Ah  N BYTEs    trustee path
  45402. --------N-21E3--SF64-------------------------
  45403. INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
  45404.     AH = E3h subfn 64h
  45405.     DS:SI -> request buffer (see #1061)
  45406.     ES:DI -> reply buffer (see #1062)
  45407. Return: AL = status (00h,96h,99h,9Bh,9Ch,EDh-F1h,F5h,F7h,FCh,FEh,FFh)
  45408.         (see #1060)
  45409. Notes:    this function is supported by Advanced NetWare 2.1+
  45410.     caller must be on a workstation with supervisor privileges
  45411. SeeAlso: AH=E3h/SF=65h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Bh
  45412.  
  45413. (Table 1060)
  45414. Values for NetWare function status:
  45415.  00h    successful
  45416.  96h    server out of memory
  45417.  99h    directory full
  45418.  9Bh    invalid directory handle
  45419.  9Ch    invalid path
  45420.  D0h    queue error
  45421.  D1h    no such queue
  45422.  D2h    no server for queue
  45423.  D3h    no queue rights
  45424.  D4h    queue full
  45425.  D5h    no queue job
  45426.  D6h    no job rights
  45427.  D7h    queue servicing error
  45428.  D9h    station is not a server
  45429.  DAh    queue halted
  45430.  DBh    too many queue servers
  45431.  EDh    property already exists
  45432.  EEh    object already exists
  45433.  EFh    invalid name
  45434.  F0h    wildcard not allowed
  45435.  F1h    invalid bindery security level
  45436.  F5h    not permitted to create object
  45437.  F7h    not permitted to create property
  45438.  FCh    no such object
  45439.  FEh    server bindery locked
  45440.  FFh    bindery failure
  45441.  
  45442. Format of NetWare request buffer:
  45443. Offset    Size    Description    (Table 1061)
  45444.  00h    WORD    length of following data (max ABh)
  45445.  02h    BYTE    64h (subfunction "Create Queue")
  45446.  03h    WORD    (big-endian) queue type
  45447.  05h    BYTE    length of queue's name (01h-2Fh)
  45448.  06h  N BYTEs    queue's name
  45449.     BYTE    directory handle or 00h
  45450.     BYTE    length of path name (01h-76h)
  45451.       N BYTEs    path name of directory in which to create queue subdirectory
  45452.  
  45453. Format of NetWare reply buffer:
  45454. Offset    Size    Description    (Table 1062)
  45455.  00h    WORD    (call) 0004h (size of following results buffer)
  45456.  02h    DWORD    (big-endian) object ID of queue
  45457. --------N-21E3--SF65-------------------------
  45458. INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
  45459.     AH = E3h subfn 65h
  45460.     DS:SI -> request buffer (see #1063)
  45461.     ES:DI -> reply buffer (see #1068)
  45462. Return: AL = status (00h,96h,9Ch,D0h,D1h,FFh) (see also AH=E3h/SF=64h)
  45463.         FFh hardware failure
  45464. Desc:    abort all active jobs, detach all job servers, remove all job entries,
  45465.       delete all job files, remove the queue object and its properties
  45466.       from the bindery, and delete the queue's subdirectory
  45467. Notes:    this function is supported by Advanced NetWare 2.1+
  45468.     caller must have SUPERVISOR privileges
  45469. SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=70h
  45470.  
  45471. Format of NetWare request buffer:
  45472. Offset    Size    Description    (Table 1063)
  45473.  00h    WORD    0005h (length of following data)
  45474.  02h    BYTE    65h (subfunction "Destroy Queue")
  45475.  03h    DWORD    (big-endian) object ID of queue
  45476. --------N-21E3--SF66-------------------------
  45477. INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS
  45478.     AH = E3h subfn 66h
  45479.     DS:SI -> request buffer (see #1064)
  45480.     ES:DI -> reply buffer (see #1065)
  45481. Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #1060)
  45482. Notes:    this function is supported by Advanced NetWare 2.1+
  45483.     caller must be on a workstation which is security-equivalent to a
  45484.       member of the queue's Q_USERS or Q_OPERATORS properties
  45485. SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=67h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
  45486.  
  45487. Format of NetWare request buffer:
  45488. Offset    Size    Description    (Table 1064)
  45489.  00h    WORD    0005h (length of following data)
  45490.  02h    BYTE    66h (subfunction "Read Queue Current Status")
  45491.  03h    DWORD    (big-endian) object ID of queue
  45492.  
  45493. Format of NetWare reply buffer:
  45494. Offset    Size    Description    (Table 1065)
  45495.  00h    WORD    (call) 0085h (size of following results)
  45496.  02h    DWORD    (big-endian) object ID of queue
  45497.  06h    BYTE    status of queue (see #1066)
  45498.  07h    BYTE    number of jobs in queue (00h-FAh)
  45499.  08h    BYTE    number of servers attached to queue (00h-19h)
  45500.  09h 25 DWORDs    list of object IDs of attached servers
  45501.  6Dh 25 BYTEs    list of attached servers' stations
  45502.  86h    BYTE    (call) maximum number of servers to return
  45503.  
  45504. Bitfields for NetWare queue status:
  45505. Bit(s)    Description    (Table 1066)
  45506.  0    operator disabled addition of new jobs
  45507.  1    operator refuses additional job servers attaching
  45508.  2    operator disabled job servicing
  45509. --------N-21E3--SF67-------------------------
  45510. INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS
  45511.     AH = E3h subfn 67h
  45512.     DS:SI -> request buffer (see #1067)
  45513.     ES:DI -> reply buffer (see #1068)
  45514. Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,FEh,FFh) (see #1060)
  45515. Notes:    this function is supported by Advanced NetWare 2.1+
  45516.     caller must have operator privileges
  45517. SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
  45518.  
  45519. Format of NetWare request buffer:
  45520. Offset    Size    Description    (Table 1067)
  45521.  00h    WORD    0006h (length of following data)
  45522.  02h    BYTE    67h (subfunction "Set Queue Current Status")
  45523.  03h    DWORD    (big-endian) object ID of queue
  45524.  07h    BYTE    queue status (see #1066)
  45525.  
  45526. Format of NetWare reply buffer:
  45527. Offset    Size    Description    (Table 1068)
  45528.  00h    WORD    (call) 0000h (no results returned)
  45529. --------N-21E3--SF68-------------------------
  45530. INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
  45531.     AH = E3h subfn 68h
  45532.     DS:SI -> request buffer (see #1069)
  45533.     ES:DI -> reply buffer (see #1070)
  45534. Return: AL = status (00h,96h,99h,9Ch,D0h-D4h,DAh,EDh,EFh-F1h,F7h,FCh,FEh,FFh)
  45535.         (see #1060)
  45536. Notes:    this function is supported by Advanced NetWare 2.1+
  45537.     caller must be on a workstation which is security-equivalent to a
  45538.       member of the queue's Q_USER property
  45539. SeeAlso: AX=B807h,AH=E0h"SPOOLING",AH=E3h/SF=69h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
  45540.  
  45541. Format of NetWare request buffer:
  45542. Offset    Size    Description    (Table 1069)
  45543.  00h    WORD    0107h (length of following data)
  45544.  02h    BYTE    68h (subfunction "Close File and Start Queue Job")
  45545.  03h    DWORD    (big-endian) object ID of queue
  45546.  07h    BYTE    client station
  45547.  08h    BYTE    client task number
  45548.  09h    DWORD    (big-endian) object ID of client
  45549.  0Dh    DWORD    (big-endian) object ID of target server
  45550.         FFFFFFFh if any server acceptable
  45551.  11h  6 BYTEs    target execution time (year,month,day,hour,minute,second)
  45552.         FFFFFFFFFFFFh to execute as soon as possible
  45553.  17h  6 BYTEs    job entry time (year,month,day,hour,minute,second)
  45554.  1Dh    WORD    (big-endian) job number
  45555.  1Fh    WORD    (big-endian) job type
  45556.  21h    BYTE    job position
  45557.  22h    BYTE    job control flags
  45558.  23h 14 BYTEs    ASCIZ job file name
  45559.  31h  6 BYTEs    job file handle
  45560.  37h    BYTE    server station
  45561.  38h    BYTE    server task number
  45562.  39h    DWORD    (big-endian) object ID of server
  45563.  3Dh 50 BYTEs    ASCIZ job description string
  45564.  6Fh 152 BYTEs    client record area
  45565.  
  45566. Format of NetWare reply buffer:
  45567. Offset    Size    Description    (Table 1070)
  45568.  00h    WORD    (call) 0036h (size of following results buffer)
  45569.  02h    BYTE    client station
  45570.  03h    BYTE    client task number
  45571.  04h    DWORD    (big-endian) object ID of client
  45572.  08h    DWORD    (big-endian) object ID of target server
  45573.  0Ch  6 BYTEs    target execution time (year,month,day,hour,minute,second)
  45574.  12h  6 BYTEs    job entry time (year,month,day,hour,minute,second)
  45575.  18h    WORD    (big-endian) job number
  45576.  1Ah    WORD    (big-endian) job type
  45577.  1Ch    BYTE    job position
  45578.  1Dh    BYTE    job control flags
  45579.  1Eh 14 BYTEs    ASCIZ job file name
  45580.  2Ch  6 BYTEs    job file handle
  45581.  32h    BYTE    server station
  45582.  33h    BYTE    server task number
  45583.  34h    DWORD    (big-endian) object ID of server or 00000000h
  45584. --------N-21E3--SF69-------------------------
  45585. INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB
  45586.     AH = E3h subfn 69h
  45587.     DS:SI -> request buffer (see #1071)
  45588.     ES:DI -> reply buffer (see #1072)
  45589. Return: AL = status (00h,96h,D0h,D1h,D3h,D5h,D6h,FEh,FFh) (see #1060)
  45590. Notes:    this function is supported by Advanced NetWare 2.1+
  45591.     caller must be on the workstation which created the job
  45592. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
  45593.  
  45594. Format of NetWare request buffer:
  45595. Offset    Size    Description    (Table 1071)
  45596.  00h    WORD    0007h (length of following data)
  45597.  02h    BYTE    69h (subfunction "Close File and Start Queue Job")
  45598.  03h    DWORD    (big-endian) object ID of queue
  45599.  07h    WORD    (big-endian) job number
  45600.  
  45601. Format of NetWare reply buffer:
  45602. Offset    Size    Description    (Table 1072)
  45603.  00h    WORD    (call) 0000h (no results returned)
  45604. --------N-21E3--SF6A-------------------------
  45605. INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE
  45606.     AH = E3h subfn 6Ah
  45607.     DS:SI -> request buffer (see #1073)
  45608.     ES:DI -> reply buffer (see #1072)
  45609. Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #1060)
  45610. Notes:    this function is supported by Advanced NetWare 2.1+
  45611.     caller must have created the job or be an operator
  45612. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
  45613.  
  45614. Format of NetWare request buffer:
  45615. Offset    Size    Description    (Table 1073)
  45616.  00h    WORD    0007h (length of following data)
  45617.  02h    BYTE    6Ah (subfunction "Remove Job From Queue")
  45618.  03h    DWORD    (big-endian) object ID of queue
  45619.  07h    WORD    (big-endian) job number
  45620. --------N-21E3--SF6B-------------------------
  45621. INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST
  45622.     AH = E3h subfn 6Bh
  45623.     DS:SI -> request buffer (see #1074)
  45624.     ES:DI -> reply buffer (see #1075)
  45625. Return: AL = status (00h,96h,9Ch,D0h-D3h,FCh,FEh,FFh) (see #1060)
  45626. Notes:    this function is supported by Advanced NetWare 2.1+
  45627.     caller must be on a workstation which is security-equivalent to a
  45628.       member of the Q_USERS or Q_OPERATORS properties
  45629. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
  45630.  
  45631. Format of NetWare request buffer:
  45632. Offset    Size    Description    (Table 1074)
  45633.  00h    WORD    0005h (length of following data)
  45634.  02h    BYTE    6Bh (subfunction "Get Queue Job List")
  45635.  03h    DWORD    (big-endian) object ID of queue
  45636.  
  45637. Format of NetWare reply buffer:
  45638. Offset    Size    Description    (Table 1075)
  45639.  00h    WORD    (call) size of following results buffer (max 1F6h)
  45640.  02h    WORD    (big-endian) job count
  45641.  04h  N WORDs    (big-endian) list of job numbers by position in queue
  45642.     WORD    maximum job numbers
  45643. --------N-21E3--SF6C-------------------------
  45644. INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY
  45645.     AH = E3h subfn 6Ch
  45646.     DS:SI -> request buffer (see #1076)
  45647.     ES:DI -> reply buffer (see #1077)
  45648. Return: AL = status (00h,96h,D0h-D3h,D5h,FCh,FEh,FFh) (see #1060)
  45649. Notes:    this function is supported by Advanced NetWare 2.1+
  45650.     caller must be on a workstation which is security-equivalent to a
  45651.       member of the Q_USERS, Q_OPERATORS, or Q_SERVERS properties
  45652. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
  45653.  
  45654. Format of NetWare request buffer:
  45655. Offset    Size    Description    (Table 1076)
  45656.  00h    WORD    0007h (length of following data)
  45657.  02h    BYTE    6Ch (subfunction "Read Queue Job Entry")
  45658.  03h    DWORD    (big-endian) object ID of queue
  45659.  07h    WORD    (big-endian) job number
  45660.  
  45661. Format of NetWare reply buffer:
  45662. Offset    Size    Description    (Table 1077)
  45663.  00h    WORD    (call) 0100h (size of following results)
  45664.  02h    BYTE    client station number
  45665.  03h    BYTE    client task number
  45666.  04h    DWORD    object ID of client
  45667.  08h    DWORD    (big-endian) object ID of target server
  45668.         FFFFFFFFh if any server acceptable
  45669.  0Ch  6 BYTEs    target execution time (year,month,day,hour,minute,second)
  45670.         FFFFFFFFFFFFh if serviced as soon as possible
  45671.  12h  6 BYTEs    job entry time (year,month,day,hour,minute,second)
  45672.  18h    WORD    (big-endian) job number
  45673.  1Ah    WORD    (big-endian) job type
  45674.  1Ch    BYTE    job position
  45675.  1Dh    BYTE    job control flags (see #1078)
  45676.  1Eh 14 BYTEs    ASCIZ job filename
  45677.  2Ch  6 BYTEs    job file handle
  45678.  32h    BYTE    server station
  45679.  33h    BYTE    server task number
  45680.  34h    DWORD    object ID of server
  45681.  38h 50 BYTEs    ASCIZ job description string
  45682.  6Ah 152 BYTEs    client record area
  45683.  
  45684. Bitfields for NetWare job control flags:
  45685. Bit(s)    Description    (Table 1078)
  45686.  3    job will be serviced automatically if connection broken
  45687.  4    job remains in queue after server aborts job
  45688.  5    client has not filled associated job file
  45689.  6    User Hold--job advances, but cannot be serviced until this is
  45690.       cleared by user or operator
  45691.  7    Operator Hold--job advances, but cannot be serviced until this is
  45692.       cleared by an operator
  45693. --------N-21E3--SF6D-------------------------
  45694. INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY
  45695.     AH = E3h subfn 6Dh
  45696.     DS:SI -> request buffer (see #1079)
  45697.     ES:DI -> reply buffer (see #1081)
  45698. Return: AL = status (00h,96h,D0h,D1h,D5h,D7h,FEh,FFh) (see #1060)
  45699. Notes:    this function is supported by Advanced NetWare 2.1+
  45700.     caller must be an operator or the user who created the job
  45701. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Eh
  45702.  
  45703. Format of NetWare request buffer:
  45704. Offset    Size    Description    (Table 1079)
  45705.  00h    WORD    0105h (length of following data)
  45706.  02h    BYTE    6Dh (subfunction "Change Queue Job Entry")
  45707.  03h    DWORD    (big-endian) object ID of queue
  45708.  07h    BYTE    client station number
  45709.  08h    BYTE    client task number
  45710.  09h    DWORD    (big-endian) object ID of client
  45711.  0Dh    DWORD    (big-endian) object ID of target server
  45712.  11h  6 BYTEs    target execution time (year,month,day,hour,minute,second)
  45713.  17h  6 BYTEs    job entry time (year,month,day,hour,minute,second)
  45714.  1Dh    WORD    (big-endian) job number
  45715.  1Fh    WORD    (big-endian) job type
  45716.  21h    BYTE    job position
  45717.  22h    BYTE    job control flags (see #1078)
  45718.  23h 14 BYTEs    ASCIZ job filename
  45719.  31h  6 BYTEs    job file handle
  45720.  37h    BYTE    server station
  45721.  38h    BYTE    server task number
  45722.  39h    DWORD    object ID of server
  45723.  3Dh 50 BYTEs    ASCIZ job description string
  45724.  6Fh 152 BYTEs    client record area
  45725. --------N-21E3--SF6E-------------------------
  45726. INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
  45727.     AH = E3h subfn 6Eh
  45728.     DS:SI -> request buffer (see #1080)
  45729.     ES:DI -> reply buffer (see #1081)
  45730. Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #1060)
  45731. Notes:    this function is supported by Advanced NetWare 2.1+
  45732.     caller must be an operator
  45733.     if the specified position is greater than the number of jobs in the
  45734.       queue, the job is placed at the end of the queue
  45735. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Dh
  45736.  
  45737. Format of NetWare request buffer:
  45738. Offset    Size    Description    (Table 1080)
  45739.  00h    WORD    0008h (length of following data)
  45740.  02h    BYTE    6Eh (subfunction "Change Queue Job Position")
  45741.  03h    DWORD    (big-endian) object ID of queue
  45742.  07h    WORD    (big-endian) job number
  45743.  09h    BYTE    new position in queue (01h-FAh)
  45744.  
  45745. Format of NetWare reply buffer:
  45746. Offset    Size    Description    (Table 1081)
  45747.  00h    WORD    (call) 0000h (no results returned)
  45748. --------N-21E3--SF6F-------------------------
  45749. INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
  45750.     AH = E3h subfn 6Fh
  45751.     DS:SI -> request buffer (see #1082)
  45752.     ES:DI -> reply buffer (see #1081)
  45753. Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,DAh,DBh,FEh,FFh)
  45754.         (see also AH=E3h/SF=64h)
  45755.         FFh bindery failure, or no such property, or no such member
  45756. Desc:    attach the calling job server to the specified queue
  45757. Notes:    this function is supported by Advanced NetWare 2.1+
  45758.     a queue may have up to 25 job servers attached
  45759.     the calling workstation must be security-equivalent to a member of the
  45760.       queue's Q_SERVERS property
  45761. SeeAlso: AH=E3h/SF=70h,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
  45762.  
  45763. Format of NetWare request buffer:
  45764. Offset    Size    Description    (Table 1082)
  45765.  00h    WORD    0005h (length of following data)
  45766.  02h    BYTE    6Fh (subfunction "Attach Queue Server To Queue")
  45767.  03h    DWORD    (big-endian) object ID of queue
  45768. --------N-21E3--SF70-------------------------
  45769. INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
  45770.     AH = E3h subfn 70h
  45771.     DS:SI -> request buffer (see #1083)
  45772.     ES:DI -> reply buffer (see #1081)
  45773. Return: AL = status (00h,96h,9Ch,D0h,D1h,D2h,FEh,FFh) (see #1060)
  45774. Desc:    remove the calling job server from the specified queue's list of
  45775.       servers
  45776. Notes:    this function is supported by Advanced NetWare 2.1+
  45777.     the caller must have previously attached itself to the queue
  45778. SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
  45779.  
  45780. Format of NetWare request buffer:
  45781. Offset    Size    Description    (Table 1083)
  45782.  00h    WORD    0005h (length of following data)
  45783.  02h    BYTE    70h (subfunction "Detach Queue Server From Queue")
  45784.  03h    DWORD    (big-endian) object ID of queue
  45785. --------N-21E3--SF71-------------------------
  45786. INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
  45787.     AH = E3h subfn 71h
  45788.     DS:SI -> request buffer (see #1084)
  45789.     ES:DI -> reply buffer (see #1070)
  45790. Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
  45791.         (see #1060)
  45792. Notes:    this function is supported by Advanced NetWare 2.1+
  45793.     the caller must be on a workstation which is security-equivalent to a
  45794.       member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
  45795. SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
  45796.  
  45797. Format of NetWare request buffer:
  45798. Offset    Size    Description    (Table 1084)
  45799.  00h    WORD    0007h (length of following data)
  45800.  02h    BYTE    71h (subfunction "Service Queue Job and Open File")
  45801.  03h    DWORD    (big-endian) object ID of queue
  45802.  07h    WORD    (big-endian) target job type
  45803.         FFFFh any
  45804. --------N-21E3--SF72-------------------------
  45805. INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
  45806.     AH = E3h subfn 72h
  45807.     DS:SI -> request buffer (see #1085)
  45808.     ES:DI -> reply buffer (see #1087)
  45809. Return: AL = status (00h,96h,D0h,D1h,D6h) (see #1060)
  45810. Desc:    inform the Queue Management System (QMS) that the queue server has
  45811.       completed a job
  45812. Notes:    this function is supported by Advanced NetWare 2.1+
  45813.     the caller must be a job server which has previously obtained a job
  45814.       for servicing
  45815. SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=73h,AH=E3h/SF=76h
  45816.  
  45817. Format of NetWare request buffer:
  45818. Offset    Size    Description    (Table 1085)
  45819.  00h    WORD    000Bh (length of following data)
  45820.  02h    BYTE    72h (subfunction "Finish Servicing Queue Job and File")
  45821.  03h    DWORD    (big-endian) object ID of queue
  45822.  07h    WORD    (big-endian) job number
  45823.  09h    DWORD    (big-endian) charge
  45824. --------N-21E3--SF73-------------------------
  45825. INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
  45826.     AH = E3h subfn 73h
  45827.     DS:SI -> request buffer (see #1086)
  45828.     ES:DI -> reply buffer (see #1087)
  45829. Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #1060)
  45830. Desc:    inform the Queue Management System (QMS) that the queue server is
  45831.       unable to service a previously-accepted job
  45832. Note:    this function is supported by Advanced NetWare 2.1+
  45833. SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=76h
  45834.  
  45835. Format of NetWare request buffer:
  45836. Offset    Size    Description    (Table 1086)
  45837.  00h    WORD    0007h (length of following data)
  45838.  02h    BYTE    73h (subfunction "Abort Servicing Queue Job and File")
  45839.  03h    DWORD    (big-endian) object ID of queue
  45840.  07h    WORD    (big-endian) job number
  45841.  
  45842. Format of NetWare reply buffer:
  45843. Offset    Size    Description    (Table 1087)
  45844.  00h    WORD    (call) 0000h (no results returned)
  45845. --------N-21E3--SF74-------------------------
  45846. INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS
  45847.     AH = E3h subfn 74h
  45848.     DS:SI -> request buffer (see #1088)
  45849.     ES:DI -> reply buffer (see #1087)
  45850. Return: AL = status (00h,96h,D0h,D1h,D5h,D9h) (see #1060)
  45851. Desc:    temporarily assume the login identity of the client submitting the
  45852.       job being serviced
  45853. Notes:    this function is supported by Advanced NetWare 2.1+
  45854.     caller must be a job server which has obtained a job for servicing
  45855. SeeAlso: AH=E3h/SF=75h
  45856.  
  45857. Format of NetWare request buffer:
  45858. Offset    Size    Description    (Table 1088)
  45859.  00h    WORD    0007h (length of following data)
  45860.  02h    BYTE    74h (subfunction "Change To Client Rights")
  45861.  03h    DWORD    (big-endian) object ID of queue
  45862.  07h    WORD    (big-endian) job number
  45863. --------N-21E3--SF75-------------------------
  45864. INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
  45865.     AH = E3h subfn 75h
  45866.     DS:SI -> request buffer (see #1089)
  45867.     ES:DI -> reply buffer (see #1087)
  45868. Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh) (see #1060)
  45869. Desc:    restore server's own identity after assuming the login identity of the
  45870.       client submitting the job being serviced
  45871. Notes:    this function is supported by Advanced NetWare 2.1+
  45872.     caller must be a job server which has previously changed its identity
  45873. SeeAlso: AH=E3h/SF=74h
  45874.  
  45875. Format of NetWare request buffer:
  45876. Offset    Size    Description    (Table 1089)
  45877.  00h    WORD    0001h (length of following data)
  45878.  02h    BYTE    75h (subfunction "Change To Client Rights")
  45879. --------N-21E3--SF76-------------------------
  45880. INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS
  45881.     AH = E3h subfn 76h
  45882.     DS:SI -> request buffer (see #1090)
  45883.     ES:DI -> reply buffer (see #1091)
  45884. Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #1060)
  45885. Notes:    this function is supported by Advanced NetWare 2.1+
  45886.     caller must be on a workstation which is security-equivalent to a
  45887.       member of the Q_USERS or Q_OPERATORS properties
  45888. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=77h,AH=E3h/SF=78h
  45889.  
  45890. Format of NetWare request buffer:
  45891. Offset    Size    Description    (Table 1090)
  45892.  00h    WORD    000Ah (length of following data)
  45893.  02h    BYTE    76h (subfunction "Read Queue Server Current Status")
  45894.  03h    DWORD    (big-endian) object ID of queue
  45895.  07h    DWORD    (big-endian) object ID of server
  45896.  0Bh    BYTE    server station
  45897.  
  45898. Format of NetWare reply buffer:
  45899. Offset    Size    Description    (Table 1091)
  45900.  00h    WORD    (call) 0040h (size of following results)
  45901.  02h 64 BYTEs    server status record (format depends on server)
  45902.         first four bytes should contain estimated "price" for an
  45903.           average job
  45904. --------N-21E3--SF77-------------------------
  45905. INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
  45906.     AH = E3h subfn 77h
  45907.     DS:SI -> request buffer (see #1092)
  45908.     ES:DI -> reply buffer (see #1093)
  45909. Return: AL = status (00h,96h,9Ch,D0h,D1h,FEh,FFh) (see #1060)
  45910. Notes:    this function is supported by Advanced NetWare 2.1+
  45911.     caller must be a job server which has attached itself to the queue
  45912. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=76h,AH=E3h/SF=78h
  45913.  
  45914. Format of NetWare request buffer:
  45915. Offset    Size    Description    (Table 1092)
  45916.  00h    WORD    0045h (length of following data)
  45917.  02h    BYTE    77h (subfunction "Set Queue Server Current Status")
  45918.  03h    DWORD    (big-endian) object ID of queue
  45919.  02h 64 BYTEs    server status record (format depends on server)
  45920.         first four bytes should contain estimated "price" for an
  45921.           average job
  45922.  
  45923. Format of NetWare reply buffer:
  45924. Offset    Size    Description    (Table 1093)
  45925.  00h    WORD    (call) 0000h (no results returned)
  45926. --------N-21E3--SF78-------------------------
  45927. INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE
  45928.     AH = E3h subfn 78h
  45929.     DS:SI -> request buffer (see #1094)
  45930.     ES:DI -> reply buffer (see #1095)
  45931. Return: AL = status (see also #1060)
  45932.         00h successful
  45933. Notes:    this function is supported by Advanced NetWare 2.1+
  45934.     caller must be on a workstation which is security-equivalent to a
  45935.       member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
  45936. SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=71h
  45937.  
  45938. Format of NetWare request buffer:
  45939. Offset    Size    Description    (Table 1094)
  45940.  00h    WORD    0007h (length of following data)
  45941.  02h    BYTE    78h (subfunction "Get Queue Job's File Size")
  45942.  03h    DWORD    (big-endian) object ID of queue
  45943.  07h    WORD    (big-endian) job number
  45944.  
  45945. Format of NetWare reply buffer:
  45946. Offset    Size    Description    (Table 1095)
  45947.  00h    WORD    (call) 000Ah (size of following results)
  45948.  02h    DWORD    (big-endian) object ID of queue
  45949.  06h    WORD    (big-endian) job number
  45950.  08h    DWORD    (big-endian) size of job file in bytes
  45951. --------N-21E3--SF96-------------------------
  45952. INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
  45953.     AH = E3h subfn 96h
  45954.     DS:SI -> request buffer (see #1097)
  45955.     ES:DI -> reply buffer (see #1098)
  45956. Return: AL = status (00h,C0h,C1h) (see #1096)
  45957. Note:    this function is supported by Advanced NetWare 2.1+
  45958. SeeAlso: AH=E3h/SF=97h,AH=E3h/SF=98h,AH=E3h/SF=99h
  45959.  
  45960. (Table 1096)
  45961. Values for NetWare function status:
  45962.  00h    successful
  45963.  C0h    no account privileges
  45964.  C1h    no account balance
  45965.  C2h    credit limit exceeded
  45966.  C3h    too many holds on account
  45967.  
  45968. Format of NetWare request buffer:
  45969. Offset    Size    Description    (Table 1097)
  45970.  00h    WORD    length of following data (max 33h)
  45971.  02h    BYTE    96h (subfunction "Get Account Status")
  45972.  03h    WORD    (big-endian) type of bindery object
  45973.  05h    BYTE    length of object name (01h to 2Fh)
  45974.  06h  N BYTEs    object name
  45975.  
  45976. Format of NetWare reply buffer:
  45977. Offset    Size    Description    (Table 1098)
  45978.  00h    WORD    (call) length of following buffer space
  45979.  02h    DWORD    (big-endian) account balance
  45980.  06h    DWORD    (big-endian) credit limit
  45981.         signed number indicating lowest allowable account balance
  45982.  0Ah 120 BYTEs    reserved
  45983.  82h    DWORD    (big-endian) object ID, server 1
  45984.  86h    DWORD    (big-endian) hold amount, server 1
  45985.     ...
  45986.  F8h    DWORD    (big-endian) object ID, server 16
  45987.  FCh    DWORD    (big-endian) hold amount, server 16
  45988. Note:    the reply buffer lists the servers which have placed holds on a portion
  45989.       of the account balance, and the amount reserved by each
  45990. --------N-21E3--SF97-------------------------
  45991. INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
  45992.     AH = E3h subfn 97h
  45993.     DS:SI -> request buffer (see #1099)
  45994.     ES:DI -> reply buffer (see #1101)
  45995. Return: AL = status (00h,C0h-C2h) (see #1096)
  45996. Note:    this function is supported by Advanced NetWare 2.1+
  45997. SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=98h
  45998.  
  45999. Format of NetWare request buffer:
  46000. Offset    Size    Description    (Table 1099)
  46001.  00h    WORD    length of following data (max 13Fh)
  46002.  02h    BYTE    97h (subfunction "Submit Account Charge")
  46003.  03h    WORD    (big-endian) service type
  46004.  05h    DWORD    (big-endian) amount to be charged to account
  46005.  09h    DWORD    (big-endian) amount of prior hold to be cancelled
  46006.  0Dh    WORD    (big-endian) type of bindery object
  46007.  0Fh    WORD    (big-endian) type of comment
  46008.         8000h-FFFFh reserved for experimental use
  46009.  11h    BYTE    length of object's name
  46010.  12h  N BYTEs    object name
  46011.     BYTE    length of comment
  46012.       N BYTEs    comment
  46013. --------N-21E3--SF98-------------------------
  46014. INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
  46015.     AH = E3h subfn 98h
  46016.     DS:SI -> request buffer (see #1100)
  46017.     ES:DI -> reply buffer (see #1101)
  46018. Return: AL = status (00h,C0h-C3h) (see #1096)
  46019. Note:    this function is supported by Advanced NetWare 2.1+
  46020. SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=97h
  46021.  
  46022. Format of NetWare request buffer:
  46023. Offset    Size    Description    (Table 1100)
  46024.  00h    WORD    length of following data (max 37h)
  46025.  02h    BYTE    98h (subfunction "Submit Account Hold")
  46026.  03h    DWORD    (big-endian) amount of account balance to reserve
  46027.  07h    WORD    (big-endian) type of bindery object
  46028.  09h    BYTE    length of object's name
  46029.  0Ah  N BYTEs    object name
  46030.  
  46031. Format of NetWare reply buffer:
  46032. Offset    Size    Description    (Table 1101)
  46033.  00h    WORD    0000h (no data returned)
  46034. --------N-21E3--SF99-------------------------
  46035. INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
  46036.     AH = E3h subfn 99h
  46037.     DS:SI -> request buffer (see #1102)
  46038.     ES:DI -> reply buffer (see #1101)
  46039. Return: AL = status (00h,C0h) (see #1096)
  46040. Note:    this function is supported by Advanced NetWare 2.1+
  46041. SeeAlso: AH=E3h/SF=96h
  46042.  
  46043. Format of NetWare request buffer:
  46044. Offset    Size    Description    (Table 1102)
  46045.  00h    WORD    length of following data (max 137h)
  46046.  02h    BYTE    99h (subfunction "Submit Account Note")
  46047.  03h    WORD    (big-endian) type of service
  46048.  05h    WORD    (big-endian) type of bindery object
  46049.  07h    WORD    (big-endian) type of comment
  46050.         8000h-FFFFh reserved for experimental use
  46051.  09h    BYTE    length of object's name
  46052.  0Ah  N BYTEs    object name
  46053.     BYTE    length of comment
  46054.       N BYTEs    comment
  46055. --------N-21E3--SFC8-------------------------
  46056. INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
  46057.     AH = E3h subfn C8h
  46058.     DS:SI -> request buffer (see #1103)
  46059.     ES:DI -> reply buffer (see #1101)
  46060. Return: AL = status (00h,C6h) (see #1106)
  46061. Desc:    determine whether the caller is a console operator
  46062. Notes:    this function is supported by Advanced NetWare 2.1+
  46063.     NetWare determines console privileges by checking the file server's
  46064.       OPERATOR property for the caller's object ID
  46065. SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h
  46066.  
  46067. Format of NetWare request buffer:
  46068. Offset    Size    Description    (Table 1103)
  46069.  00h    WORD    0001h (length of following data)
  46070.  02h    BYTE    C8h (subfunction "Check Console Privileges")
  46071. --------N-21E3--SFC9-------------------------
  46072. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
  46073.     AH = E3h subfn C9h
  46074.     DS:SI -> request buffer (see #1104)
  46075.     ES:DI -> reply buffer (see #1105)
  46076. Return: AL = status
  46077.         00h successful
  46078. Notes:    this function is supported by Advanced NetWare 2.1+
  46079.     the calling workstation must be attached to the file server
  46080. SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E8h
  46081.  
  46082. Format of NetWare request buffer:
  46083. Offset    Size    Description    (Table 1104)
  46084.  00h    WORD    0001h (length of following data)
  46085.  02h    BYTE    C9h (subfunction "Get File Server Description Strings")
  46086.  
  46087. Format of NetWare reply buffer:
  46088. Offset    Size    Description    (Table 1105)
  46089.  00h    WORD    (call) 0200h (size of following results buffer)
  46090.  02h    var    ASCIZ name of company distributing this copy of NetWare
  46091.     var    ASCIZ version and revision
  46092.       9 BYTEs    ASCIZ revision date (mm/dd/yy)
  46093.     var    ASCIZ copyright notice
  46094. --------N-21E3--SFCA-------------------------
  46095. INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
  46096.     AH = E3h subfn CAh
  46097.     DS:SI -> request buffer (see #1107)
  46098.     ES:DI -> reply buffer (see below)
  46099. Return: AL = status (00h,C6h) (see #1106)
  46100. Notes:    this function is supported by Advanced NetWare 2.1+
  46101.     the calling workstation must have console operator privileges
  46102. SeeAlso: AH=2Bh,AH=2Dh,AH=E3h/SF=C8h,AH=E7h
  46103.  
  46104. (Table 1106)
  46105. Values for NetWare function status:
  46106.  00h    successful
  46107.  C6h    no console rights
  46108.  
  46109. Format of NetWare request buffer:
  46110. Offset    Size    Description    (Table 1107)
  46111.  00h    WORD    0007h (length of following data)
  46112.  02h    BYTE    CAh (subfunction "Set File Server Date And Time")
  46113.  03h    BYTE    year (00-79 = 2000-2079, 80-99 = 1980-1999)
  46114.  04h    BYTE    month (1-12)
  46115.  05h    BYTE    day (1-31)
  46116.  06h    BYTE    hour (0-23)
  46117.  07h    BYTE    minute
  46118.  08h    BYTR    second
  46119. --------N-21E3--SFCB-------------------------
  46120. INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
  46121.     AH = E3h subfn CBh
  46122.     DS:SI -> request buffer (see #1108)
  46123.     ES:DI -> reply buffer (see #1109)
  46124. Return: AL = status (00h,C6h) (see #1106)
  46125. Notes:    this function is supported by Advanced NetWare 2.1+
  46126.     the calling workstation must have console operator privileges
  46127. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CCh,AH=E3h/SF=D3h
  46128.  
  46129. Format of NetWare request buffer:
  46130. Offset    Size    Description    (Table 1108)
  46131.  00h    WORD    0001h (length of following data)
  46132.  02h    BYTE    CBh (subfunction "Disable File Server Login")
  46133.  
  46134. Format of NetWare reply buffer:
  46135. Offset    Size    Description    (Table 1109)
  46136.  00h    WORD    (call) 0000h (no results returned)
  46137. --------N-21E3--SFCC-------------------------
  46138. INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
  46139.     AH = E3h subfn CCh
  46140.     DS:SI -> request buffer (see #1110)
  46141.     ES:DI -> reply buffer (see #1109)
  46142. Return: AL = status (00h,C6h) (see #1106)
  46143. Notes:    this function is supported by Advanced NetWare 2.1+
  46144.     the calling workstation must have console operator privileges
  46145. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh
  46146.  
  46147. Format of NetWare request buffer:
  46148. Offset    Size    Description    (Table 1110)
  46149.  00h    WORD    0001h (length of following data)
  46150.  02h    BYTE    CCh (subfunction "Enable File Server Login")
  46151. --------N-21E3--SFCD-------------------------
  46152. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
  46153.     AH = E3h subfn CDh
  46154.     DS:SI -> request buffer (see #1111)
  46155.     ES:DI -> reply buffer (see #1112)
  46156. Return: AL = status (00h,C6h) (see #1106)
  46157. Notes:    this function is supported by Advanced NetWare 2.1+
  46158.     the calling workstation must have console operator privileges
  46159. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CCh
  46160.  
  46161. Format of NetWare request buffer:
  46162. Offset    Size    Description    (Table 1111)
  46163.  00h    WORD    0001h (length of following data)
  46164.  02h    BYTE    CDh (subfunction "Get File Server Login Status")
  46165.  
  46166. Format of NetWare reply buffer:
  46167. Offset    Size    Description    (Table 1112)
  46168.  00h    WORD    (call) 0001h (size of following results buffer)
  46169.  02h    BYTE    login state (00h disabled, 01h enabled)
  46170. --------N-21E3--SFCE-------------------------
  46171. INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
  46172.     AH = E3h subfn CEh
  46173.     DS:SI -> request buffer (see #1113)
  46174.     ES:DI -> reply buffer (see #1115)
  46175. Return: AL = status (00h,C6h) (see #1106)
  46176. Desc:    all files marked for deletion on the file server are purged, regardless
  46177.       of which workstation actually erased them
  46178. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  46179.       Alloy NTNX
  46180.     the calling workstation must have console operator privileges
  46181. SeeAlso: AH=13h,AH=E2h/SF=10h,AH=E3h/SF=C8h,AX=F244h
  46182.  
  46183. Format of NetWare request buffer:
  46184. Offset    Size    Description    (Table 1113)
  46185.  00h    WORD    0001h (length of following data)
  46186.  02h    BYTE    CEh (subfunction "Purge All Erased Files")
  46187. --------N-21E3--SFCF-------------------------
  46188. INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
  46189.     AH = E3h subfn CFh
  46190.     DS:SI -> request buffer (see #1114)
  46191.     ES:DI -> reply buffer (see #1115)
  46192. Return: AL = status (00h,C6h) (see #1106)
  46193. Notes:    this function is supported by Advanced NetWare 2.1+
  46194.     the calling workstation must have console operator privileges
  46195. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D0h
  46196.  
  46197. Format of NetWare request buffer:
  46198. Offset    Size    Description    (Table 1114)
  46199.  00h    WORD    0001h (length of following data)
  46200.  02h    BYTE    CFh (subfunction "Disable Transaction Tracking")
  46201.  
  46202. Format of NetWare reply buffer:
  46203. Offset    Size    Description    (Table 1115)
  46204.  00h    WORD    (call) 0000h (no results returned)
  46205. --------N-21E3--SFD0-------------------------
  46206. INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
  46207.     AH = E3h subfn D0h
  46208.     DS:SI -> request buffer (see #1116)
  46209.     ES:DI -> reply buffer (see #1115)
  46210. Return: AL = status (00h,C6h) (see #1120)
  46211. Desc:    restart transaction tracking after being stopped either explicitly by
  46212.       AH=E3h/SF=CFh or automatically due to a full transaction volume
  46213. Notes:    this function is supported by Advanced NetWare 2.1+
  46214.     the calling workstation must have console operator privileges
  46215. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh
  46216.  
  46217. Format of NetWare request buffer:
  46218. Offset    Size    Description    (Table 1116)
  46219.  00h    WORD    0001h (length of following data)
  46220.  02h    BYTE    D0h (subfunction "Enable Transaction Tracking")
  46221. --------N-21E3--SFD1-------------------------
  46222. INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
  46223.     AH = E3h subfn D1h
  46224.     DS:SI -> request buffer (see #1117)
  46225.     ES:DI -> reply buffer (see #1119)
  46226. Return: AL = status (00h,C6h) (see #1120)
  46227. Notes:    this function is supported by Advanced NetWare 2.1+
  46228.     the calling workstation must have console operator privileges
  46229.     the broadcast message will not be received by workstations which have
  46230.       disabled broadcasts with AH=E1h/SF=02h
  46231. SeeAlso: AH=E1h/SF=02h,AH=E1h/SF=09h,AH=E3h/SF=C8h,AH=E3h/SF=D3h
  46232.  
  46233. Format of NetWare request buffer:
  46234. Offset    Size    Description    (Table 1117)
  46235.  00h    WORD    length of following data (max A2h)
  46236.  02h    BYTE    D1h (subfunction "Send Console Broadcast")
  46237.  03h    BYTE    number of connections to receive message
  46238.         00h = all, else specific list below
  46239.  04h  N BYTEs    connection list
  46240.     BYTE    length of message (max 3Ch)
  46241.       N BYTEs    message
  46242. --------N-21E3--SFD2-------------------------
  46243. INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
  46244.     AH = E3h subfn D2h
  46245.     DS:SI -> request buffer (see #1118)
  46246.     ES:DI -> reply buffer (see #1119)
  46247. Return: AL = status (00h,C6h) (see #1120)
  46248. Desc:    close the open files and release all file locks for a connection,
  46249.       abort transactions if a TTS file server, and detach from the file
  46250.       server
  46251. Notes:    this function is supported by Advanced NetWare 2.1+
  46252.     the caller must have SUPERVISOR privileges
  46253. SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h
  46254.  
  46255. Format of NetWare request buffer:
  46256. Offset    Size    Description    (Table 1118)
  46257.  00h    WORD    0002h (length of following data)
  46258.  02h    BYTE    D2h (subfunction "Clear Connection Number")
  46259.  03h    BYTE    connection number
  46260.  
  46261. Format of NetWare reply buffer:
  46262. Offset    Size    Description    (Table 1119)
  46263.  00h    WORD    (call) 0000h (no results returned)
  46264. --------N-21E3--SFD3-------------------------
  46265. INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
  46266.     AH = E3h subfn D3h
  46267.     DS:SI -> request buffer (see #1121)
  46268.     ES:DI -> reply buffer (see #1119)
  46269. Return: AL = status (00h,C6h,FFh) (see #1120)
  46270. Desc:    take down the file server
  46271. Notes:    this function is supported by Advanced NetWare 2.1+
  46272.     the calling workstation must have SUPERVISOR privileges
  46273. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CFh,AH=E3h/SF=D1h
  46274.  
  46275. (Table 1120)
  46276. Values for NetWare function status:
  46277.  00h    successful
  46278.  C6h    no console rights
  46279.  FFh    files open
  46280.  
  46281. Format of NetWare request buffer:
  46282. Offset    Size    Description    (Table 1121)
  46283.  00h    WORD    0002h (length of following data)
  46284.  02h    BYTE    D3h (subfunction "Down File Server")
  46285.  03h    BYTE    flag: force down even if files open if nonzero
  46286. --------N-21E3--SFD4-------------------------
  46287. INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
  46288.     AH = E3h subfn D4h
  46289.     DS:SI -> request buffer (see #1122)
  46290.     ES:DI -> reply buffer (see #1123)
  46291. Return: AL = status (00h,C6h) (see #1120)
  46292. Notes:    this function is supported by Advanced NetWare 2.1+
  46293.     the calling workstation must have console operator privileges
  46294. SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
  46295.  
  46296. Format of NetWare request buffer:
  46297. Offset    Size    Description    (Table 1122)
  46298.  00h    WORD    0001h (length of following data)
  46299.  02h    BYTE    D4h (subfunction "Get File System Statistics")
  46300.  
  46301. Format of NetWare reply buffer:
  46302. Offset    Size    Description    (Table 1123)
  46303.  00h    WORD    (call) 0028h (size of following results buffer)
  46304.  02h    DWORD    clock ticks since system started
  46305.  06h    WORD    maximum open files set by configuration
  46306.  08h    WORD    maximum files open concurrently
  46307.  0Ah    WORD    current number of open files
  46308.  0Ch    DWORD    total files opened
  46309.  10h    DWORD    total file read requests
  46310.  14h    DWORD    total file write requests
  46311.  18h    WORD    current changed FATs
  46312.  1Ah    WORD    total changed FATs
  46313.  1Ch    WORD    number of FAT write errors
  46314.  1Eh    WORD    number of fatal FAT write errors
  46315.  20h    WORD    number of FAT scan errors
  46316.  22h    WORD    maximum concurrently-indexed files
  46317.  24h    WORD    current number of indexed files
  46318.  26h    WORD    number of attached indexed files
  46319.  28h    WORD    number of indexed files available
  46320. Note:    all fields except the first are big-endian
  46321. --------N-21E3--SFD5-------------------------
  46322. INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
  46323.     AH = E3h subfn D5h
  46324.     DS:SI -> request buffer (see #1124)
  46325.     ES:DI -> reply buffer (see #1125)
  46326. Return: AL = status (00h,C6h) (see #1120)
  46327. Notes:    this function is supported by Advanced NetWare 2.1+
  46328.     the calling workstation must have console operator privileges
  46329. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AH=E3h/SF=D0h,AH=E3h/SF=E8h
  46330.  
  46331. Format of NetWare request buffer:
  46332. Offset    Size    Description    (Table 1124)
  46333.  00h    WORD    0001h (length of following data)
  46334.  02h    BYTE    D5h (subfunction "TTS Get Statistics")
  46335.  
  46336. Format of NetWare reply buffer:
  46337. Offset    Size    Description    (Table 1125)
  46338.  00h    WORD    (call) length of following results buffer (max 1BCh)
  46339.  02h    DWORD    (big-endian) clock ticks since system started
  46340.  06h    BYTE    transaction tracking supported if nonzero
  46341.         (all following fields are invalid if zero)
  46342.  07h    BYTE    transaction tracking enabled
  46343.  08h    WORD    (big-endian) transaction volume number
  46344.  0Ah    WORD    (big-endian) maximum simultaneous transactions configured
  46345.  0Ch    WORD    (big-endian) maximum simultaneous transactions since startup
  46346.  0Eh    WORD    (big-endian) current transactions in progress
  46347.  10h    DWORD    (big-endian) total transactions performed
  46348.  14h    DWORD    (big-endian) total write transactions
  46349.  18h    DWORD    (big-endian) total transactions backed out
  46350.  1Ch    WORD    (big-endian) number of unfilled backout requests
  46351.  1Eh    WORD    (big-endian) disk blocks used for transaction tracking
  46352.  20h    DWORD    (big-endian) blocks allocated for tracked-file FATs
  46353.  24h    DWORD    (big-endian) number of file size changes during a transaction
  46354.  28h    DWORD    (big-endian) number of file truncations during a transaction
  46355.  2Ch    BYTE    number of records following
  46356.  2Dh    Active Transaction Records [array]
  46357.     Offset    Size    Description
  46358.      00h    BYTE    logical connection number
  46359.      01h    BYTE    task number
  46360. --------N-21E3--SFD6-------------------------
  46361. INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
  46362.     AH = E3h subfn D6h
  46363.     DS:SI -> request buffer (see #1126)
  46364.     ES:DI -> reply buffer (see #1127)
  46365. Return: AL = status (00h,C6h) (see #1120)
  46366. Notes:    this function is supported by Advanced NetWare 2.1+
  46367.     the calling workstation must have console operator privileges
  46368. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D5h,AH=E3h/SF=D8h,AH=E3h/SF=D9h,AH=E3h/SF=E6h
  46369.  
  46370. Format of NetWare request buffer:
  46371. Offset    Size    Description    (Table 1126)
  46372.  00h    WORD    0001h (length of following data)
  46373.  02h    BYTE    D6h (subfunction "Get Disk Cache Statistics")
  46374.  
  46375. Format of NetWare reply buffer:
  46376. Offset    Size    Description    (Table 1127)
  46377.  00h    WORD    (call) 004Eh (length of following results buffer)
  46378.  02h    DWORD    clock ticks since system started
  46379.  06h    WORD    number of cache buffers
  46380.  08h    WORD    size of cache buffer in bytes
  46381.  0Ah    WORD    number of dirty cache buffers
  46382.  0Ch    DWORD    number of cache read requests
  46383.  10h    DWORD    number of cache write requests
  46384.  14h    DWORD    number of cache hits
  46385.  18h    DWORD    number of cache misses
  46386.  1Ch    DWORD    number of physical read requests
  46387.  20h    DWORD    number of physical write requests
  46388.  24h    WORD    number of physical read errors
  46389.  26h    WORD    number of physical write errors
  46390.  28h    DWORD    cache get requests
  46391.  2Ch    DWORD    cache full write requests
  46392.  30h    DWORD    cache partial write requests
  46393.  34h    DWORD    background dirty writes
  46394.  38h    DWORD    background aged writes
  46395.  3Ch    DWORD    total cache writes
  46396.  40h    DWORD    number of cache allocations
  46397.  44h    WORD    thrashing count
  46398.  46h    WORD    number of times LRU block was dirty
  46399.  48h    WORD    number of reads on cache blocks not yet filled by writes
  46400.  4Ah    WORD    number of times a fragmented write occurred
  46401.  4Ch    WORD    number of cache hits on unavailable block
  46402.  4Eh    WORD    number of times a cache block was scrapped
  46403. Note:    all fields except the first are big-endian
  46404. --------N-21E3--SFD7-------------------------
  46405. INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
  46406.     AH = E3h subfn D7h
  46407.     DS:SI -> request buffer (see #1128)
  46408.     ES:DI -> reply buffer (see #1129)
  46409. Return: AL = status (00h,C6h) (see #1120)
  46410. Notes:    this function is supported by Advanced NetWare 2.1+
  46411.     the calling workstation must have console operator privileges
  46412. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
  46413.  
  46414. Format of NetWare request buffer:
  46415. Offset    Size    Description    (Table 1128)
  46416.  00h    WORD    0001h (length of following data)
  46417.  02h    BYTE    D7h (subfunction "Get Drive Mapping Table")
  46418.  
  46419. Format of NetWare reply buffer:
  46420. Offset    Size    Description    (Table 1129)
  46421.  00h    WORD    (call) 00ECh (length of following results buffer)
  46422.  02h    DWORD    (big-endian) clock tick elapsed since system started
  46423.  06h    BYTE    fault tolerance (SFT) level
  46424.  07h    BYTE    number of logical drives attached to server
  46425.  08h    BYTE    number of physical drives attached to server
  46426.  09h  5 BYTEs    disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
  46427.           04h disk coprocessor drive, 32h-FFh value-added drive types)
  46428.  0Eh    WORD    (big-endian) number of outstanding controller commands
  46429.  10h 32 BYTEs    drive mapping table (FFh = no such drive)
  46430.  30h 32 BYTEs    drive mirror table (secondary physical drive, FFh = none)
  46431.  50h 32 BYTEs    dead mirror table (last drive mapped to, FFh if never mirrored)
  46432.  70h    BYTE    physical drive being remirrored (FFh = none)
  46433.  71h    BYTE    reserved
  46434.  72h    DWORD    (big-endian) remirrored block
  46435.  76h 60 BYTEs    SFT error table (internal error counters)
  46436. --------N-21E3--SFD8-------------------------
  46437. INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
  46438.     AH = E3h subfn D8h
  46439.     DS:SI -> request buffer (see #1130)
  46440.     ES:DI -> reply buffer (see #1131)
  46441. Return: AL = status (00h,C6h) (see #1120)
  46442. Notes:    this function is supported by Advanced NetWare 2.1+
  46443.     the calling workstation must have console operator privileges
  46444. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E9h
  46445.  
  46446. Format of NetWare request buffer:
  46447. Offset    Size    Description    (Table 1130)
  46448.  00h    WORD    0002h (length of following data)
  46449.  02h    BYTE    D8h (subfunction "Get Physical Disk Statistics")
  46450.  03h    BYTE    physical disk number
  46451.  
  46452. Format of NetWare reply buffer:
  46453. Offset    Size    Description    (Table 1131)
  46454.  00h    WORD    (call) 005Dh (size of following results record)
  46455.  02h    DWORD    (big-endian) clock ticks since system started
  46456.  06h    BYTE    physical disk channel
  46457.  07h    BYTE    flag: drive removable if nonzero
  46458.  08h    BYTE    physical drive type
  46459.  09h    BYTE    drive number within controller
  46460.  0Ah    BYTE    controller number
  46461.  0Bh    BYTE    controller type
  46462.  0Ch    DWORD    (big-endian) size of drive in 4K disk blocks
  46463.  10h    WORD    (big-endian) number of cylinders on drive
  46464.  12h    BYTE    number of heads
  46465.  13h    BYTE    number of sectors per track
  46466.  14h 64 BYTEs    ASCIZ drive make and model
  46467.  54h    WORD    (big-endian) number of I/O errors
  46468.  56h    DWORD    (big-endian) start of Hot Fix table
  46469.  5Ah    WORD    (big-endian) size of Hot Fix table
  46470.  5Ch    WORD    (big-endian) number of Hot Fix blocks available
  46471.  5Eh    BYTE    flag: Hot Fix disabled if nonzero
  46472. --------N-21E3--SFD9-------------------------
  46473. INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
  46474.     AH = E3h subfn D9h
  46475.     DS:SI -> request buffer (see #1132)
  46476.     ES:DI -> reply buffer (see #1133)
  46477. Return: AL = status (00h,C6h) (see #1120)
  46478. Notes:    this function is supported by Advanced NetWare 2.1+
  46479.     the calling workstation must have console operator privileges
  46480. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D8h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
  46481.  
  46482. Format of NetWare request buffer:
  46483. Offset    Size    Description    (Table 1132)
  46484.  00h    WORD    0002h (length of following data)
  46485.  02h    BYTE    D9h (subfunction "Get Disk Channel Statistics")
  46486.  03h    BYTE    channel number
  46487.  
  46488. Format of NetWare reply buffer:
  46489. Offset    Size    Description    (Table 1133)
  46490.  00h    WORD    (call) 00A8h (size of following results record)
  46491.  02h    DWORD    (big-endian) clock ticks since system started
  46492.  06h    WORD    (big-endian) channel run state (see #1134)
  46493.  08h    WORD    (big-endian) channel synchronization state (see #1135)
  46494.  0Ah    BYTE    driver type
  46495.  0Bh    BYTE    major version of driver
  46496.  0Ch    BYTE    minor version of driver
  46497.  0Dh 65 BYTEs    ASCIZ driver description
  46498.  4Eh    WORD    (big-endian) first I/O address used
  46499.  50h    WORD    (big-endian) length of first I/O address
  46500.  52h    WORD    (big-endian) second I/O address used
  46501.  54h    WORD    (big-endian) length of second I/O address
  46502.  56h  3 BYTEs    first shared memory address
  46503.  59h  2 BYTEs    length of first shared memory address
  46504.  5Bh  3 BYTEs    second shared memory address
  46505.  5Eh  2 BYTEs    length of second shared memory address
  46506.  60h    BYTE    first interrupt number in-use flag
  46507.  61h    BYTE    first interrupt number used
  46508.  62h    BYTE    second interrupt number in-use flag
  46509.  63h    BYTE    second interrupt number used
  46510.  64h    BYTE    first DMA channel in-use flag
  46511.  65h    BYTE    first DMA channel used
  46512.  66h    BYTE    second DMA channel in-use flag
  46513.  67h    BYTE    second DMA channel used
  46514.  68h    BYTE    flags
  46515.  69h    BYTE    reserved
  46516.  6Ah 80 BYTEs    ASCIZ configuration description
  46517.  
  46518. (Table 1134)
  46519. Values for channel run state:
  46520.  0000h    running
  46521.  0001h    being stopped
  46522.  0002h    stopped
  46523.  0003h    nonfunctional
  46524.  
  46525. (Table 1135)
  46526. Values for channel synchronization state:
  46527.  0000h    not in use
  46528.  0002h    used by NetWare, no other requests
  46529.  0004h    used by NetWare, other requests
  46530.  0006h    in use, not needed by NetWare
  46531.  0008h    in use, needed by NetWare
  46532.  000Ah    channel released, NetWare should use it
  46533. --------N-21E3--SFDA-------------------------
  46534. INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
  46535.     AH = E3h subfn DAh
  46536.     DS:SI -> request buffer (see #1136)
  46537.     ES:DI -> reply buffer (see #1137)
  46538. Return: AL = status (00h,C6h) (see #1148)
  46539. Notes:    this function is supported by Advanced NetWare 2.1+
  46540.     the calling workstation must have console operator privileges
  46541. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h,AH=E3h/SF=E5h
  46542.  
  46543. Format of NetWare request buffer:
  46544. Offset    Size    Description    (Table 1136)
  46545.  00h    WORD    0003h (length of following data)
  46546.  02h    BYTE    DAh (subfunction "Get Connection's Task Information")
  46547.  03h    WORD    (big-endian) logical connection number
  46548.  
  46549. Format of NetWare reply buffer:
  46550. Offset    Size    Description    (Table 1137)
  46551.  00h    WORD    (call) size of following results record (max 1FEh)
  46552.  02h    BYTE    lock status of connection (see #1138)
  46553.  03h    var    Lock Status Information (see #1139)
  46554.  N    BYTE    number of records following
  46555.  N+1    Active Task Information Records [array]
  46556.     Offset    Size    Description
  46557.      00h    BYTE    task number (01h-FFh)
  46558.      01h    BYTE    task state
  46559.             01h in TTS explicit transaction
  46560.             02h in TTS implicit transaction
  46561.             04h shared fileset lock active
  46562.  
  46563. (Table 1138)
  46564. Values for lock status of connection:
  46565.  00h    no locks
  46566.  01h    waiting on physical record lock
  46567.  02h    waiting on file lock
  46568.  03h    waiting on logical record lock
  46569.  04h    waiting on semaphore
  46570.  
  46571. Format of Lock Status Information:
  46572. Offset    Size    Description    (Table 1139)
  46573. ---lock status 00h---
  46574.  no fields
  46575. ---lock status 01h---
  46576.  00h    BYTE    number of waiting task
  46577.  01h    DWORD    start address
  46578.  05h    DWORD    end address
  46579.  09h    BYTE    volume number
  46580.  0Ah    WORD    directory entry number
  46581.  0Ch 14 BYTEs    ASCIZ filename
  46582. ---lock status 02h---
  46583.  00h    BYTE    number of waiting task
  46584.  01h    BYTE    volume number
  46585.  02h    WORD    directory entry number
  46586.  04h 14 BYTEs    ASCIZ filename
  46587. ---lock status 03h---
  46588.  00h    BYTE    number of waiting task
  46589.  01h    BYTE    length of record name
  46590.  02h  N BYTEs    ASCIZ record name
  46591. ---lock status 04h---
  46592.  00h    BYTE    number of waiting task
  46593.  01h    BYTE    length of semaphore's name
  46594.  02h  N BYTEs    ASCIZ semaphore name
  46595. --------N-21E3--SFDB-------------------------
  46596. INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES
  46597.     AH = E3h subfn DBh
  46598.     DS:SI -> request buffer (see #1140)
  46599.     ES:DI -> reply buffer (see #1141)
  46600. Return: AL = status (00h,C6h) (see #1148)
  46601. Notes:    this function is supported by Advanced NetWare 2.1+
  46602.     the calling workstation must have console operator privileges
  46603. SeeAlso: AH=E2h/SF=1Ah,AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DCh,AH=E3h/SF=DFh
  46604. SeeAlso: AH=E3h/SF=E1h
  46605.  
  46606. Format of NetWare request buffer:
  46607. Offset    Size    Description    (Table 1140)
  46608.  00h    WORD    0005h (length of following data)
  46609.  02h    BYTE    DBh (subfunction "Get Connection's Open Files")
  46610.  03h    WORD    (big-endian) logical connection number
  46611.  05h    WORD    (big-endian) last record seen (0000h on first call)
  46612.  
  46613. Format of NetWare reply buffer:
  46614. Offset    Size    Description    (Table 1141)
  46615.  00h    WORD    (call) size of following results record (max 1FEh)
  46616.  02h    WORD    next request record (place in "last record" field on next call)
  46617.         0000h if no more records
  46618.  04h    BYTE    number of records following
  46619.  05h    var    array of File Information Records (see #1142)
  46620.  
  46621. Format of NetWare File Information Record:
  46622. Offset    Size    Description    (Table 1142)
  46623.  00h    BYTE    task number
  46624.  01h    BYTE    lock flags (see #1143)
  46625.  02h    BYTE    access flags (see #1144)
  46626.  03h    BYTE    lock type
  46627.         00h no lock
  46628.         FEh file lock
  46629.         FFh locked by Begin Share File Set
  46630.  04h    BYTE    volume number (00h-1Fh)
  46631.  05h    WORD    (big-endian) directory entry
  46632.  07h 14 BYTEs    ASCIZ filename
  46633.  
  46634. Bitfields for lock flags:
  46635. Bit(s)    Description    (Table 1143)
  46636.  0    file is locked
  46637.  1    file opened Shareable
  46638.  2    logged
  46639.  3    file opened Normal
  46640.  6    TTS holding lock
  46641.  7    Transaction Flag set on file
  46642.  
  46643. Bitfields for access flags:
  46644. Bit(s)    Description    (Table 1144)
  46645.  0    file open for reading by calling station
  46646.  1    file open for writing by calling station
  46647.  2    deny reads by other stations
  46648.  3    deny writes by other stations
  46649.  4    file detached
  46650.  5    TTS Holding Detach
  46651.  6    TTS Holding Open
  46652. --------N-21E3--SFDC-------------------------
  46653. INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
  46654.     AH = E3h subfn DCh
  46655.     DS:SI -> request buffer (see #1145)
  46656.     ES:DI -> reply buffer (see #1146)
  46657. Return: AL = status (00h,C6h) (see #1148)
  46658. Notes:    this function is supported by Advanced NetWare 2.1+
  46659.     the calling workstation must have console operator privileges
  46660. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h
  46661.  
  46662. Format of NetWare request buffer:
  46663. Offset    Size    Description    (Table 1145)
  46664.  00h    WORD    length of following data (max 104h)
  46665.  02h    BYTE    DCh (subfunction "Get Connections Using a File")
  46666.  03h    WORD    (big-endian) last record (0000h on first call)
  46667.  05h    BYTE    directory handle
  46668.  06h    BYTE    length of file path
  46669.  07h  N BYTEs    ASCIZ file path
  46670.  
  46671. Format of NetWare reply buffer:
  46672. Offset    Size    Description    (Table 1146)
  46673.  00h    WORD    (call) size of following results record (max 1FEh)
  46674.  02h    WORD    (big-endian) count of tasks which have opened or logged file
  46675.  04h    WORD    (big-endian) count of tasks which have opened file
  46676.  06h    WORD    (big-endian) count of opens for reading
  46677.  08h    WORD    (big-endian) count of opens for writing
  46678.  0Ah    WORD    (big-endian) deny read count
  46679.  0Ch    WORD    (big-endian) deny write count
  46680.  0Eh    WORD    next request record (place in "last record" field on next call)
  46681.         0000h if no more records
  46682.  10h    BYTE    locked flag
  46683.         00h not locked exclusively
  46684.         else locked exclusively
  46685.  11h    BYTE    number of records following
  46686.  12h    var    array of File Usage Information Records (see #1147)
  46687.  
  46688. Format of NetWare File Usage Information Record:
  46689. Offset    Size    Description    (Table 1147)
  46690.  00h    WORD    (big-endian) logical connection number
  46691.  02h    BYTE    task number
  46692.  03h    BYTE    lock flags (see #1143)
  46693.  04h    BYTE    access flags (see #1144)
  46694.  05h    BYTE    lock type
  46695.         00h no lock
  46696.         FEh file lock
  46697.         FFh locked by Begin Share File Set
  46698. --------N-21E3--SFDD-------------------------
  46699. INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
  46700.     AH = E3h subfn DDh
  46701.     DS:SI -> request buffer (see #1149)
  46702.     ES:DI -> reply buffer (see #1150)
  46703. Return: AL = status (00h,C6h,FFh) (see #1148)
  46704. Notes:    this function is supported by Advanced NetWare 2.1+
  46705.     the calling workstation must have console operator privileges
  46706. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DEh,AH=E3h/SF=DFh
  46707.  
  46708. (Table 1148)
  46709. Values for NetWare function status:
  46710.  00h    successful
  46711.  C6h    no console rights
  46712.  FFh    file not open
  46713.  
  46714. Format of NetWare request buffer:
  46715. Offset    Size    Description    (Table 1149)
  46716.  00h    WORD    0016h (length of following data)
  46717.  02h    BYTE    DDh (subfunction "Get Physical Record Locks by Connection and
  46718.           File")
  46719.  03h    WORD    (big-endian) logical connection number
  46720.  05h    WORD    (big-endian) last record seen (0000h on first call)
  46721.  07h    BYTE    volume number (00h-1Fh)
  46722.  08h    WORD    (big-endian) directory handle
  46723.  0Ah 14 BYTEs    ASCIZ filename
  46724.  
  46725. Format of NetWare reply buffer:
  46726. Offset    Size    Description    (Table 1150)
  46727.  00h    WORD    (call) size of following results record (max 1FEh)
  46728.  02h    WORD    next request record (place in "last record" on next call)
  46729.         0000h if no more records
  46730.  04h    BYTE    number of physical record locks
  46731.  05h    BYTE    number of records following
  46732.  06h    var    array of Physical Record Lock Info records (see #1151)
  46733.  
  46734. Format of NetWare Physical Record Lock Info:
  46735. Offset    Size    Description    (Table 1151)
  46736.  00h    BYTE    task number
  46737.  01h    BYTE    lock status (see #1152)
  46738.  02h    DWORD    (big-endian) starting offset of record in file
  46739.  06h    DWORD    (big-endian) ending offset of record in file
  46740.  
  46741. Bitfields for lock status:
  46742. Bit(s)    Description    (Table 1152)
  46743.  0    exclusive lock
  46744.  1    shareable lock
  46745.  2    logged
  46746.  6    lock held by TTS
  46747. --------N-21E3--SFDE-------------------------
  46748. INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
  46749.     AH = E3h subfn DEh
  46750.     DS:SI -> request buffer (see #1153)
  46751.     ES:DI -> reply buffer (see #1154)
  46752. Return: AL = status (00h,C6h,FFh) (see #1148)
  46753. Notes:    this function is supported by Advanced NetWare 2.1+
  46754.     the calling workstation must have console operator privileges
  46755. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh
  46756.  
  46757. Format of NetWare request buffer:
  46758. Offset    Size    Description    (Table 1153)
  46759.  00h    WORD    length of following data (max 104h)
  46760.  02h    BYTE    DEh (subfunction "Get Physical Record Locks by File")
  46761.  03h    WORD    (big-endian) last record seen (0000h on first call)
  46762.  05h    BYTE    directory handle
  46763.  06h    BYTE    length of filename
  46764.  07h  N BYTEs    ASCIZ filename
  46765.  
  46766. Format of NetWare reply buffer:
  46767. Offset    Size    Description    (Table 1154)
  46768.  00h    WORD    (call) size of following results record (max 1FEh)
  46769.  02h    WORD    next request record (place in "last record" on next call)
  46770.         0000h if no more records
  46771.  04h    BYTE    number of physical record locks
  46772.  05h    BYTE    number of records following
  46773.  06h    var    array of Physical Record Lock Info records (see #1155)
  46774.  
  46775. Format of NetWare Physical Record Lock Info:
  46776. Offset    Size    Description    (Table 1155)
  46777.  00h    WORD    (big-endian) number of tasks logging record
  46778.  02h    WORD    (big-endian) number of tasks with shareable lock
  46779.  04h    DWORD    (big-endian) starting offset of record in file
  46780.  08h    DWORD    (big-endian) ending offset of record in file
  46781.  0Ch    WORD    (big-endian) logical connection number
  46782.  0Eh    BYTE    task number
  46783.  0Fh    BYTE    lock type
  46784.         00h none
  46785.         FEh file lock
  46786.         FFh Begin Share File Set lock
  46787. --------N-21E3--SFDF-------------------------
  46788. INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
  46789.     AH = E3h subfn DFh
  46790.     DS:SI -> request buffer (see #1156)
  46791.     ES:DI -> reply buffer (see #1157)
  46792. Return: AL = status (00h,C6h) (see #1148)
  46793. Notes:    this function is supported by Advanced NetWare 2.1+
  46794.     the calling workstation must have console operator privileges
  46795. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=E0h,AH=E3h/SF=E2h
  46796.  
  46797. Format of NetWare request buffer:
  46798. Offset    Size    Description    (Table 1156)
  46799.  00h    WORD    0005h (length of following data)
  46800.  02h    BYTE    DFh (subfunction "Get Logical Records By Connection")
  46801.  03h    WORD    (big-endian) logical connection number
  46802.  05h    WORD    (big-endian) last record seen (0000h on first call)
  46803.  
  46804. Format of NetWare reply buffer:
  46805. Offset    Size    Description    (Table 1157)
  46806.  00h    WORD    (call) size of following results record (max 1FEh)
  46807.  02h    WORD    next request record (place in "last record" field on next call)
  46808.         0000h if no more locked records
  46809.  09h    BYTE    number of records following
  46810.  0Ah    var    array of Logical Lock Information Records (see #1158)
  46811.  
  46812. Format of NetWare Logical Lock Information Record:
  46813. Offset    Size    Description    (Table 1158)
  46814.  00h    BYTE    task number
  46815.  01h    BYTE    lock status (see #1152)
  46816.  02h    BYTE    length of logical lock's name
  46817.  03h  N BYTEs    logical lock's name
  46818. --------N-21E3--SFE0-------------------------
  46819. INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
  46820.     AH = E3h subfn E0h
  46821.     DS:SI -> request buffer (see #1159)
  46822.     ES:DI -> reply buffer (see #1160)
  46823. Return: AL = status (00h,C6h) (see #1148)
  46824. Notes:    this function is supported by Advanced NetWare 2.1+
  46825.     the calling workstation must have console operator privileges
  46826. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
  46827.  
  46828. Format of NetWare request buffer:
  46829. Offset    Size    Description    (Table 1159)
  46830.  00h    WORD    length of following data (max 67h)
  46831.  02h    BYTE    E0h (subfunction "Get Logical Record Information")
  46832.  03h    WORD    (big-endian) last record seen (0000h on first call)
  46833.  05h    BYTE    length of logical record's name
  46834.  06h  N BYTEs    logical record's name
  46835.  
  46836. Format of NetWare reply buffer:
  46837. Offset    Size    Description    (Table 1160)
  46838.  00h    WORD    (call) size of following results record (max 200h)
  46839.  02h    WORD    (big-endian) number of logical connections logging the record
  46840.  04h    WORD    (big-endian) number of logical connections with shareable lock
  46841.  06h    WORD    (big-endian) next request record (place in "last record" field
  46842.           on next call)
  46843.  08h    BYTE    locked exclusively if nonzero
  46844.  09h    BYTE    number of records following
  46845.  0Ah    var    array of Task Information Records (see #1161)
  46846.  
  46847. Format of NetWare Task Information Record:
  46848. Offset    Size    Description    (Table 1161)
  46849.  00h    WORD    (big-endian) logical connection number
  46850.  02h    BYTE    task number
  46851.  03h    BYTE    lock status (see #1152)
  46852. --------N-21E3--SFE1-------------------------
  46853. INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
  46854.     AH = E3h subfn E1h
  46855.     DS:SI -> request buffer (see #1162)
  46856.     ES:DI -> reply buffer (see #1163)
  46857. Return: AL = status (00h,C6h) (see #1148)
  46858. Notes:    this function is supported by Advanced NetWare 2.1+
  46859.     the calling workstation must have console operator privileges
  46860. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
  46861.  
  46862. Format of NetWare request buffer:
  46863. Offset    Size    Description    (Table 1162)
  46864.  00h    WORD    0005h (length of following data)
  46865.  02h    BYTE    E1h (subfunction "Get Connection's Semaphores")
  46866.  03h    WORD    (big-endian) logical connection number
  46867.  05h    WORD    (big-endian) last record seen (0000h on first call)
  46868.  
  46869. Format of NetWare reply buffer:
  46870. Offset    Size    Description    (Table 1163)
  46871.  00h    WORD    (call) size of following results record (max 1FEh)
  46872.  02h    WORD    next request record (place in "last record" field on next call)
  46873.  04h    BYTE    number of records following
  46874.  05h    var    array of Semaphore Information Records (see #1164)
  46875.  
  46876. Format of NetWare Semaphore Information Record:
  46877. Offset    Size    Description    (Table 1164)
  46878.  00h    WORD    (big-endian) open count
  46879.  02h    BYTE    semaphore value (-128 to 127)
  46880.  03h    BYTE    task number
  46881.  04h    BYTE    lock type
  46882.  05h    BYTE    length of semaphore's name
  46883.  06h  N BYTEs    semaphore's name
  46884.      14 BYTEs    filename
  46885. --------N-21E3--SFE2-------------------------
  46886. INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
  46887.     AH = E3h subfn E2h
  46888.     DS:SI -> request buffer (see #1165)
  46889.     ES:DI -> reply buffer (see #1166)
  46890. Return: AL = status (00h,C6h) (see #1170)
  46891. Notes:    this function is supported by Advanced NetWare 2.1+
  46892.     the calling workstation must have console operator privileges
  46893. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E1h
  46894.  
  46895. Format of NetWare request buffer:
  46896. Offset    Size    Description    (Table 1165)
  46897.  00h    WORD    length of following data (max 83h)
  46898.  02h    BYTE    E2h (subfunction "Get LAN Driver's Configuration Information")
  46899.  03h    WORD    (big-endian) last record seen (0000h on first call)
  46900.  05h    BYTE    length of semaphore's name (01h-7Fh)
  46901.  06h  N BYTEs    semaphore's name
  46902.  
  46903. Format of NetWare reply buffer:
  46904. Offset    Size    Description    (Table 1166)
  46905.  00h    WORD    (call) size of following results buffer (max 1FEh)
  46906.  02h    WORD    next request record (place in "last record" on next call)
  46907.         0000h if no more
  46908.  04h    WORD    (big-endian) number of logical connections opening semaphore
  46909.  06h    BYTE    semaphore value (-127 to 128)
  46910.  07h    BYTE    number of records following
  46911.  08h    var    array of Semaphore Information records (see #1167)
  46912.  
  46913. Format of NetWare Semaphore Information:
  46914. Offset    Size    Description    (Table 1167)
  46915.  00h    WORD    (big-endian) logical connection number
  46916.  02h    BYTE    task number
  46917. --------N-21E3--SFE3-------------------------
  46918. INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
  46919.     AH = E3h subfn E3h
  46920.     DS:SI -> request buffer (see #1168)
  46921.     ES:DI -> reply buffer (see #1169)
  46922. Return: AL = status (00h,C6h) (see #1170)
  46923. Notes:    this function is supported by Advanced NetWare 2.1+
  46924.     the calling workstation must have console operator privileges
  46925. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
  46926.  
  46927. Format of NetWare request buffer:
  46928. Offset    Size    Description    (Table 1168)
  46929.  00h    WORD    0002h (length of following data)
  46930.  02h    BYTE    E3h (subfunction "Get LAN Driver's Configuration Information")
  46931.  03h    BYTE    LAN board (00h-03h)
  46932.  
  46933. Format of NetWare reply buffer:
  46934. Offset    Size    Description    (Table 1169)
  46935.  00h    WORD    (call) 00ACh (size of following results buffer)
  46936.  02h  4 BYTEs    network number
  46937.  06h  6 BYTEs    node number
  46938.  0Ch    BYTE    LAN driver installed (00h no--remaining fields invalid)
  46939.  0Dh    BYTE    option number selected at configuration time
  46940.  0Eh 160 BYTEs    configuration text
  46941.         ASCIZ hardware type
  46942.         ASCIZ hardware settings
  46943. --------N-21E3--SFE5-------------------------
  46944. INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
  46945.     AH = E3h subfn E5h
  46946.     DS:SI -> request buffer (see #1171)
  46947.     ES:DI -> reply buffer (see #1172)
  46948. Return: AL = status (00h,C6h) (see #1170)
  46949. Notes:    this function is supported by Advanced NetWare 2.1+
  46950.     one must have console operator privileges to get statistics for logical
  46951.       connections other than one's own
  46952. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=E1h
  46953.  
  46954. (Table 1170)
  46955. Values for NetWare function status:
  46956.  00h    successful
  46957.  C6h    no console rights
  46958.  
  46959. Format of NetWare request buffer:
  46960. Offset    Size    Description    (Table 1171)
  46961.  00h    WORD    0003h (length of following data)
  46962.  02h    BYTE    E5h (subfunction "Get Connection's Usage Statistics")
  46963.  03h    WORD    (big-endian) logical connection number
  46964.  
  46965. Format of NetWare reply buffer:
  46966. Offset    Size    Description    (Table 1172)
  46967.  00h    WORD    (call) 0014h (size of following results record)
  46968.  02h    DWORD    (big-endian) clock ticks since server started
  46969.  06h  6 BYTEs    bytes read
  46970.  0Ch  6 BYTEs    bytes written
  46971.  12h    DWORD    (big-endian) total request packets
  46972. --------N-21E3--SFE6-------------------------
  46973. INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
  46974.     AH = E3h subfn E6h
  46975.     DS:SI -> request buffer (see #1173)
  46976.     ES:DI -> reply buffer (see #1174)
  46977. Return: AL = status (00h,C6h) (see #1170)
  46978. Notes:    this function is supported by Advanced NetWare 2.1+
  46979.     one must have console operator privileges to get the free space for
  46980.       other bindery objects
  46981. SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E8h,AH=E3h/SF=E9h
  46982.  
  46983. Format of NetWare request buffer:
  46984. Offset    Size    Description    (Table 1173)
  46985.  00h    WORD    0005h (length of following data)
  46986.  02h    BYTE    E6h (subfunction "Get Bindery Object Disk Space Left")
  46987.  03h    DWORD    (big-endian) object ID
  46988.  
  46989. Format of NetWare reply buffer:
  46990. Offset    Size    Description    (Table 1174)
  46991.  00h    WORD    (call) 000Fh (size of following results buffer)
  46992.  02h    DWORD    (big-endian) clock ticks elapsed since server started
  46993.  06h    DWORD    (big-endian) object ID
  46994.  0Ah    DWORD    (big-endian) 4K disk blocks available to user
  46995.  0Eh    BYTE    restrictions (00h enforced, FFh not enforced)
  46996. --------N-21E3--SFE7-------------------------
  46997. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
  46998.     AH = E3h subfn E7h
  46999.     DS:SI -> request buffer (see #1175)
  47000.     ES:DI -> reply buffer (see #1176)
  47001. Return: AL = status
  47002.         00h successful
  47003. Note:    this function is supported by Advanced NetWare 2.1+
  47004. SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=D3h,AH=E3h/SF=E8h,AH=E7h
  47005.  
  47006. Format of NetWare request buffer:
  47007. Offset    Size    Description    (Table 1175)
  47008.  00h    WORD    0001h (length of following data)
  47009.  02h    BYTE    E7h (subfunction "Get File Server LAN I/O Statistics")
  47010.  
  47011. Format of NetWare reply buffer:
  47012. Offset    Size    Description    (Table 1176)
  47013.  00h    WORD    (call) 0042h (size of following results buffer)
  47014.  02h    DWORD    clock ticks since system started
  47015.  06h    WORD    total routing buffers
  47016.  08h    WORD    maximum routing buffers used
  47017.  0Ah    WORD    current routing buffers used
  47018.  0Ch    DWORD    total file service packets
  47019.  10h    WORD    number of file service packets buffered
  47020.  12h    WORD    number of invalid connection packets
  47021.  14h    WORD    packets with bad logical connection numbers
  47022.  16h    WORD    number of packets received during processing
  47023.  18h    WORD    number of requests reprocessed
  47024.  1Ah    WORD    packets with bad sequence numbers
  47025.  1Ch    WORD    number of duplicate replies sent
  47026.  1Eh    WORD    number of acknowledgements sent
  47027.  20h    WORD    number of packets with bad request types
  47028.  22h    WORD    requests to attach to ws for which a request is being processed
  47029.  24h    WORD    requests to attach from ws which is already attaching
  47030.  26h    WORD    number of forged detach requests
  47031.  28h    WORD    detach requests with bad connection number
  47032.  2Ah    WORD    requests to detach from ws for which requests pending
  47033.  2Ch    WORD    number of cancelled replies
  47034.  2Eh    WORD    packets discarded due to excessive hop count
  47035.  30h    WORD    packets discarded due to unknown net
  47036.  32h    WORD    incoming packets discarded for lack of DGroup buffer
  47037.  34h    WORD    outgoing packets discarded due to lack of buffer
  47038.  36h    WORD    received packets destined for B,C, or D side drivers
  47039.  38h    DWORD    number of NetBIOS packets propagated through net
  47040.  3Ch    DWORD    total number of non-file-service packets
  47041.  40h    DWORD    total number of routed packets
  47042. Note:    all fields except the first are big-endian
  47043. --------N-21E3--SFE8-------------------------
  47044. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
  47045.     AH = E3h subfn E8h
  47046.     DS:SI -> request buffer (see #1177)
  47047.     ES:DI -> reply buffer (see #1178)
  47048. Return: AL = status (00h,C6h) (see #1170)
  47049. Note:    this function is supported by Advanced NetWare 2.1+
  47050. SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E7h
  47051.  
  47052. Format of NetWare request buffer:
  47053. Offset    Size    Description    (Table 1177)
  47054.  00h    WORD    0001h (length of following data)
  47055.  02h    BYTE    E8h (subfunction "Get File Server Misc Information")
  47056.  
  47057. Format of NetWare reply buffer:
  47058. Offset    Size    Description    (Table 1178)
  47059.  00h    WORD    (call) size of following results buffer (max 0048h)
  47060.  02h    DWORD    (big-endian) clock ticks since system started
  47061.  06h    BYTE    CPU type
  47062.         00h Motorola 68000
  47063.         01h Intel 8086, 8088, or V20
  47064.         02h Intel 80286+
  47065.  07h    BYTE    reserved
  47066.  08h    BYTE    number of service processes in server
  47067.  09h    BYTE    server utilization in percent
  47068.  0Ah    WORD    (big-endian) maximum bindery objects set by configuration
  47069.         0000h = unlimited
  47070.  0Ch    WORD    (big-endian) maximum number of bindery objects used
  47071.  0Eh    WORD    (big-endian) current number of bindery objects in use
  47072.  10h    WORD    (big-endian) total server memory in KB
  47073.  12h    WORD    (big-endian) wasted server memory in KB
  47074.         normally 0000h
  47075.  14h    WORD    number of records following (01h-03h)
  47076.  16h    var    array of Dynamic Memory Information records (see #1179)
  47077.  
  47078. Format of NetWare Dynamic Memory Information:
  47079. Offset    Size    Description    (Table 1179)
  47080.  00h    DWORD    (big-endian) total dynamic space
  47081.  04h    DWORD    (big-endian) maximum dynamic space used
  47082.  08h    DWORD    (big-endian) current dynamic space usage
  47083. --------N-21E3--SFE9-------------------------
  47084. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
  47085.     AH = E3h subfn E9h
  47086.     DS:SI -> request buffer (see #1180)
  47087.     ES:DI -> reply buffer (see #1181)
  47088. Return: AL = status
  47089.         00h successful
  47090. Notes:    this function is supported by Advanced NetWare 2.1+
  47091. SeeAlso: AH=DAh,AH=E2h/SF=15h
  47092.  
  47093. Format of NetWare request buffer:
  47094. Offset    Size    Description    (Table 1180)
  47095.  00h    WORD    0002h (length of following data)
  47096.  02h    BYTE    E9h (subfunction "Get Volume Information")
  47097.  03h    BYTE    directory handle
  47098.  
  47099. Format of NetWare reply buffer:
  47100. Offset    Size    Description    (Table 1181)
  47101.  00h    WORD    (call) 0028h (length of following results buffer)
  47102.  02h    DWORD    (big-endian) elapsed system time
  47103.  06h    BYTE    volume number
  47104.  07h    BYTE    logical drive number
  47105.  08h    WORD    (big-endian) sectors per block
  47106.  0Ah    WORD    (big-endian) starting block
  47107.  0Ch    WORD    (big-endian) total blocks on volume
  47108.  0Eh    WORD    (big-endian) blocks available on volume
  47109.  10h    WORD    (big-endian) total directory slots
  47110.  12h    WORD    (big-endian) directory slots available
  47111.  14h    WORD    (big-endian) maximum directory entries actually used
  47112.  16h    BYTE    flag: volume hashed if nonzero
  47113.  17h    BYTE    flag: volume cached if nonzero
  47114.  18h    BYTE    flag: volume removable if nonzero
  47115.  19h    BYTE    flag: volume mounted if nonzero
  47116.  1Ah 16 BYTEs    NUL-padded volume name
  47117. --------N-21E4-------------------------------
  47118. INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
  47119.     AH = E4h
  47120.     CL = file attributes (see #1182)
  47121.     DX:DX -> FCB (see #0506 at AH=0Fh)
  47122. Return: AL = error code
  47123. Note:    this function was added in NetWare 4.0, but was removed some time prior
  47124.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  47125.       documentation
  47126. SeeAlso: AX=4301h
  47127.  
  47128. Bitfields for NetWare file attributes:
  47129. Bit(s)    Description    (Table 1182)
  47130.  0    read only
  47131.  1    hidden
  47132.  2    system
  47133.  7    shareable
  47134. --------v-21E4-------------------------------
  47135. INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
  47136.     AH = E4h
  47137. Return: AH = 04h if resident
  47138. SeeAlso: AH=E1h"VIRUS",AH=E7h"VIRUS"
  47139. --------T-21E400-----------------------------
  47140. INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
  47141.     AX = E400h
  47142. Return: AL = program status
  47143.         00h if DoubleDOS not present
  47144.         01h if running in visible DoubleDOS partition
  47145.         02h if running in the invisible DoubleDOS partition
  47146. SeeAlso: AH=E5h"DoubleDOS",AX=F400h
  47147. --------E-21E400-----------------------------
  47148. INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
  47149.     AX = E400h
  47150.     ???
  47151. Return: ???
  47152. Note:    protected mode only???
  47153. --------E-21E402-----------------------------
  47154. INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
  47155.     AX = E402h
  47156.     ???
  47157. Return: ???
  47158. Note:    protected mode only???
  47159. SeeAlso: AX=E403h
  47160. --------E-21E403-----------------------------
  47161. INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
  47162.     AX = E403h
  47163.     ???
  47164. Return: ???
  47165. Note:    protected mode only???
  47166. SeeAlso: AX=E402h
  47167. --------N-21E5-------------------------------
  47168. INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
  47169.     AH = E5h
  47170.     DS:DX -> FCB (see #0506 at AH=0Fh)
  47171. Return: AL = (unreliable) return code
  47172. Notes:    this function was added in NetWare 4.0, but was removed some time prior
  47173.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  47174.       documentation
  47175.     on success, NetWare sets AL to zero; on errors it restores AL
  47176. --------T-21E5-------------------------------
  47177. INT 21 - DoubleDOS - OTHER PROGRAM STATUS
  47178.     AH = E5h
  47179. Return: AL = status
  47180.         00h no program in other partition
  47181.         01h program in other partition is running
  47182.         02h program in other partition is suspended
  47183. SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"
  47184. --------E-21E500-----------------------------
  47185. INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
  47186.     AX = E500h
  47187.     ???
  47188. Return: ???
  47189. SeeAlso: AX=E501h
  47190. --------E-21E501-----------------------------
  47191. INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
  47192.     AX = E501h
  47193.     ???
  47194. Return: ???
  47195. SeeAlso: AX=E500h
  47196. --------N-21E6-------------------------------
  47197. INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
  47198.     AH = E6h
  47199.     CX:DX = number of bytes to copy
  47200.     DS:SI -> opened source FCB
  47201.     ES:DI -> opened destination FCB
  47202. Return: AL = error code
  47203.     CX = ???
  47204.     DX = ???
  47205. Note:    this function was added in NetWare 4.0, but was removed some time prior
  47206.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  47207.       documentation
  47208. --------E-21E6-------------------------------
  47209. INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
  47210.     AH = E6h
  47211.     ???
  47212. Return: ???
  47213. SeeAlso: AH=E2h"OS/286"
  47214. --------N-21E7-------------------------------
  47215. INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
  47216.     AH = E7h
  47217.     DS:DX -> date/time buffer (see #1183)
  47218. Return: AL = error code
  47219.         00h successful
  47220.         FFh unsuccessful
  47221. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  47222.       Alloy NTNX, and Banyan VINES
  47223. SeeAlso: AH=2Ah,AH=2Ch,AX=5FC0h,AH=E3h/SF=CAh
  47224.  
  47225. Format of NetWare date/time buffer:
  47226. Offset    Size    Description    (Table 1183)
  47227.  00h    BYTE    year (80-99 = 1980-1999, 0-79 = 2000-2079)
  47228.  01h    BYTE    month (1=Jan)
  47229.  02h    BYTE    day
  47230.  03h    BYTE    hours
  47231.  04h    BYTE    minutes
  47232.  05h    BYTE    seconds
  47233.  06h    BYTE    day of week (0 = Sunday) (Novell and NTNX only)
  47234. --------E-21E7-------------------------------
  47235. INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
  47236.     AH = E7h
  47237.     ???
  47238. Return: ???
  47239. SeeAlso: AH=E8h"OS/286",AH=E9h"OS/286",AH=EAh"OS/286"
  47240. --------v-21E7-------------------------------
  47241. INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
  47242.     AH = E7h
  47243. Return: AH = 78h if resident
  47244. SeeAlso: AH=E4h"VIRUS",AX=EC59h
  47245. --------N-21E8-------------------------------
  47246. INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
  47247.     AH = E8h
  47248.     DL = mode
  47249.         00h no automatic re-open
  47250.         01h auto re-open
  47251. Return: AL = error code
  47252. Desc:    provided backward compatibility with a bug in CP/M and early DOS vers
  47253. Note:    this function was added in NetWare 4.6, but was removed some time prior
  47254.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  47255.       documentation
  47256. --------E-21E8-------------------------------
  47257. INT 21 - OS/286, OS/386 - SEGMENT CREATION
  47258.     AH = E8h
  47259.     AL = type
  47260.         00h data segment
  47261.         01h data window/alias
  47262.         02h real segment
  47263.         03h real window/alias
  47264.         CX:DX = size in bytes
  47265.         SI:BX -> start of desired memory block
  47266.         Return:    AX = selector
  47267.         06h shareable segment
  47268.     ???
  47269. Return: ???
  47270. SeeAlso: AH=E7h"OS/286",AH=E9h"OS/286"
  47271. --------T-21E8-------------------------------
  47272. INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
  47273.     AH = E8h
  47274.     AL = program for which to set flags (00h this program, 01h other)
  47275.     DX = keyboard control flags (see #1184)
  47276. Return: DX = previous flags
  47277. Notes:    disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
  47278.       disabling any of the other keystrokes disables them completely
  47279.     identical to AH=F8h
  47280. SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
  47281. SeeAlso: AH=F8h"DoubleDOS"
  47282.  
  47283. Bitfields for DoubleDOS keyboard control flags:
  47284. Bit(s)    Description    (Table 1184)
  47285.  0    menu
  47286.  1    exchange
  47287.  2    entire keyboard enable/disable
  47288.  3    Ctrl-C
  47289.  4    Ctrl-PrtSc
  47290.  5    Alt/Erase
  47291.  6    Ctrl-Break
  47292.  7    Ctrl-NumLock
  47293.  8    shift-PrtSc
  47294.  9-13    undefined
  47295.  14    cancel key (clear keyboard buffer)
  47296.  15    suspend key
  47297. Note:    setting a enables the corresponding key or operatin, clearing a
  47298.       disables it
  47299. --------E-21E9-------------------------------
  47300. INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
  47301.     AH = E9h
  47302.     AL = function
  47303.         01h change code segment parameters
  47304.         02h change data segment parameters
  47305.         05h adjust segment limit
  47306.         06h change segment base address
  47307.     ???
  47308. Return: ???
  47309. SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=EAh"OS/286",AH=EDh"OS/286"
  47310. SeeAlso: INT 31/AX=0007h,INT 31/AX=0008h
  47311. --------T-21E9-------------------------------
  47312. INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
  47313.     AH = E9h
  47314.     AL = new priority (see #1185)
  47315. Return: AL = priority setting if AL=05h on entry
  47316. Note:    identical to AH=F9h
  47317. SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"
  47318.  
  47319. (Table 1185)
  47320. Values for DoubleDOS timesharing priority:
  47321.  00h    visible program gets 70%, invisible gets 30% (default)
  47322.  01h    visible program gets 50%, invisible gets 50%
  47323.  02h    visible program gets 30%, invisible gets 70%
  47324.  03h    Top program gets 70%, bottom program gets 30%
  47325.  04h    Top program gets 30%, bottom program gets 70%
  47326.  05h    get current priority
  47327. --------N-21E900-----------------------------
  47328. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
  47329.     AX = E900h
  47330.     DX = drive number to check (0 = A:, ..., 25 = Z:, 26 ... 31)
  47331. Return: AL = directory handle
  47332.     AH = flags (drive not mapped if none set)
  47333.         bit 0: permanent handle
  47334.         bit 1: temporary handle
  47335.         bit 7: mapped to local drive
  47336. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  47337.       Alloy NTNX
  47338. SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=01h,AH=E2h/SF=0Ah
  47339. --------N-21E905-----------------------------
  47340. INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
  47341.     AX = E905h
  47342.     BL = drive number (0=default, 1=A:, ...)
  47343.     DS:DX -> ASCIZ path for fake root (may include server name or be empty)
  47344. Return: CF set on error
  47345.         AL = error code (03h,0Fh,11h) (see #0811 at AH=59h)
  47346.     CF clear if successful
  47347. Note:    if drive is not currently mapped, a drive mapping will be created
  47348. SeeAlso: AX=E906h
  47349. --------N-21E906-----------------------------
  47350. INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
  47351.     AX = E906h
  47352.     BL = drive number (0=default, 1=A:, ...)
  47353. Note:    drive remains mapped
  47354. SeeAlso: AX=E905h
  47355. --------N-21E907-----------------------------
  47356. INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
  47357.     AX = E907h
  47358.     BL = drive number (0=default, 1=A:, ...)
  47359. Return: AL = number of directories below the fake root
  47360.         FFh if no fake root assigned
  47361. SeeAlso: AX=E905h
  47362. --------N-21E908BL00-------------------------
  47363. INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
  47364.     AX = E908h
  47365.     BL = 00h    don't return '.' or '..' during directory scans
  47366.        = nonzero    directory scans will return '.' or '..' entries
  47367. Return: BL = previous show-dots setting
  47368. --------N-21E909-----------------------------
  47369. INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
  47370.     AX = E909h
  47371.     BX = DOS file handle
  47372. Return: AX = 0000h if successful
  47373.         BX:CX:DX = NetWare file handle
  47374. Notes:    this function is partially a reverse of "AttachHandle" (AH=B4h)
  47375.     many NetWare 3.x functions use a four-byte file handle, which appears
  47376.       to be the high four bytes of the six-byte NetWare handle
  47377. SeeAlso: AH=B4h"NetWare"
  47378. --------N-21EA-------------------------------
  47379. INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
  47380.     AH = EAh
  47381.     AL = return version environment string
  47382.         00h        don't return string
  47383.         nonzero    return string in 40-byte buffer pointed to by ES:DI
  47384.         Return: buffer filled with three null-terminated entries:
  47385.             major operating system
  47386.             version
  47387.             hardware type
  47388. Return: AH = operating system (00h = MS-DOS)
  47389.     AL = hardware type
  47390.         00h IBM PC
  47391.         01h Victor 9000
  47392.     BH = major shell version
  47393.     BL = minor shell version
  47394.     CH = (v3.01+) shell type
  47395.         00h conventional memory
  47396.         01h expanded memory
  47397.         02h extended memory
  47398.     CL = shell revision number
  47399. Note:    this function is supported by NetWare 4.6 and Advanced NetWare 1.0+
  47400. --------T-21EA-------------------------------
  47401. INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
  47402.     AH = EAh
  47403. Return: task switching turned off
  47404. SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
  47405. SeeAlso: INT FA"DoubleDOS"
  47406. --------E-21EA-------------------------------
  47407. INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
  47408.     AH = EAh
  47409.     ???
  47410. Return: ???
  47411. Note:    protected mode only???
  47412. SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=E9h"OS/286"
  47413. --------N-21EB-------------------------------
  47414. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
  47415.     AH = EBh
  47416.     DS:DX -> ASCIZ filename
  47417.     if function C6h lock mode 01h:
  47418.         AL = flags
  47419.         00h log file only
  47420.         01h lock as well as log file
  47421.             BP = lock timeout in timer ticks (1/18 second)
  47422.             0000h = don't wait if file already locked
  47423. Return: AL = status (see #1186)
  47424. Desc:    add the location and size of the specified file to the log table and
  47425.       optionally lock the file
  47426. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  47427.       Alloy NTNX
  47428. SeeAlso: AH=BCh"NetWare",AH=CAh,AH=D0h,AH=ECh"NetWare",AH=EDh"NetWare"
  47429.  
  47430. (Table 1186)
  47431. Values for NetWare status:
  47432.  00h    successful
  47433.  96h    no dynamic memory for file
  47434.  FEh    timed out
  47435.  FFh    failed
  47436. --------T-21EB-------------------------------
  47437. INT 21 - DoubleDOS - TURN ON TASK SWITCHING
  47438.     AH = EBh
  47439. Return: task switching turned on
  47440. SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
  47441. SeeAlso: INT FB"DoubleDOS"
  47442. --------E-21EB00-----------------------------
  47443. INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
  47444.     AX = EB00h
  47445.     ???
  47446. Return: ???
  47447. Note:    protected mode only???
  47448. SeeAlso: AX=EB02h,AX=EB04h,INT 31/AX=0506h
  47449. --------E-21EB02-----------------------------
  47450. INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
  47451.     AX = EB02h
  47452.     ???
  47453. Return: ???
  47454. Note:    protected mode only???
  47455. SeeAlso: AX=EB00h,AX=EB04h
  47456. --------E-21EB03-----------------------------
  47457. INT 21 - OS/386 VMM - FREE MAPPED PAGES
  47458.     AX = EB03h
  47459.     ???
  47460. Return: ???
  47461. Note:    protected mode only???
  47462. SeeAlso: AX=EB05h,INT 31/AX=0801h
  47463. --------E-21EB04-----------------------------
  47464. INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
  47465.     AX = EB04h
  47466.     ???
  47467. Return: ???
  47468. Note:    protected mode only???
  47469. SeeAlso: AX=EB00h,AX=EB02h
  47470. --------E-21EB05-----------------------------
  47471. INT 21 - OS/386 VMM - MAP PAGES
  47472.     AX = EB05h
  47473.     ???
  47474. Return: ???
  47475. Note:    protected mode only???
  47476. SeeAlso: AX=EB03h,INT 31/AX=0800h
  47477. --------E-21EB06-----------------------------
  47478. INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
  47479.     AX = EB06h
  47480.     ???
  47481. Return: ???
  47482. Note:    protected mode only???
  47483. SeeAlso: AX=EB07h,INT 31/AX=0600h
  47484. --------E-21EB07-----------------------------
  47485. INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
  47486.     AX = EB07h
  47487.     ???
  47488. Return: ???
  47489. Note:    protected mode only???
  47490. SeeAlso: AX=EB06h,INT 31/AX=0601h
  47491. --------N-21EC-------------------------------
  47492. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
  47493.     AH = ECh
  47494.     DS:DX -> ASCIZ filename
  47495. Return: AL = status
  47496.         00h successful
  47497.         FFh file not found
  47498. Desc:    unlock the specified file but retain it in the log table
  47499. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  47500.       Alloy NTNX
  47501. SeeAlso: AH=CDh,AH=EBh"NetWare",AH=EDh"NetWare"
  47502. --------T-21EC-------------------------------
  47503. INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
  47504.     AH = ECh
  47505. Return: ES = segment of virtual screen
  47506. Desc:    determine the address of the virtual screen to which the program
  47507.       should write instead of the actual video memory, so that the
  47508.       multitasked programs do not interfere with each other's output
  47509. Notes:    screen address can change if task-switching is on!!
  47510.     identical to AH=FCh
  47511. SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"
  47512. --------E-21EC-------------------------------
  47513. INT 21 - OS/286, OS/386 - BLOCK TRANSFER
  47514.     AH = ECh
  47515.     ???
  47516. Return: ???
  47517. --------v-21EC59-----------------------------
  47518. INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
  47519.     AX = EC59h
  47520. Return: BP = EC59h if resident
  47521. SeeAlso: AH=E7h"VIRUS",AH=EEh"VIRUS"
  47522. --------N-21ED-------------------------------
  47523. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
  47524.     AH = EDh
  47525.     DS:DX -> ASCIZ filename
  47526. Return: AL = status
  47527.         00h successful
  47528.         FFh no files found
  47529. Desc:    unlock the file and remove it from the log table
  47530. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  47531.       Alloy NTNX
  47532. SeeAlso: AH=CBh"NetWare",AH=CEh,AH=CFh,AH=EBh"NetWare",AH=ECh"NetWare"
  47533. --------E-21ED-------------------------------
  47534. INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
  47535.     AH = EDh
  47536.     ???
  47537. Return: ???
  47538. Note:    protected mode only???
  47539. SeeAlso: AH=E9h"OS/286"
  47540. --------N-21EE-------------------------------
  47541. INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
  47542.     AH = EEh
  47543. Return: CX:BX:AX = six-byte physical address
  47544. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  47545.       Alloy NTNX
  47546. SeeAlso: AH=E3h/SF=13h
  47547. --------T-21EE-------------------------------
  47548. INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
  47549.     AH = EEh
  47550.     AL = number of 55ms time slices to give away
  47551. Return: returns after giving away time slices
  47552. SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"
  47553. --------v-21EE-------------------------------
  47554. INT 21 - VIRUS - "Jerusalem-G", "Pregnant" - INSTALLATION CHECK
  47555.     AH = EEh
  47556. Return: AX = 0300h if "Jerusalem-G" resident
  47557.     AL = 05h if "Pregnant" resident
  47558. SeeAlso: AH=DDh"VIRUS",AX=EC59h,AH=F0h"VIRUS"
  47559. --------N-21EF00-----------------------------
  47560. INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
  47561.     AX = EF00h
  47562. Return: ES:SI -> network shell's 32-byte drive handle table
  47563.     AX = 0000h
  47564. Notes:    this function is supported by Advanced NetWare 1.0+
  47565.     each byte in the drive handle table contains the directory handle for
  47566.       the corresponding drive, or 00h if not mapped to a directory
  47567. SeeAlso: AX=EF01h,AX=EF02h,AX=EF03h,AX=EF04h
  47568. --------N-21EF01-----------------------------
  47569. INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
  47570.     AX = EF01h
  47571. Return: ES:SI -> network shell's 32-byte drive flag table (see #1187)
  47572.     AX = 0000h
  47573. Notes:    this function is supported by Advanced NetWare 1.0+
  47574.     each byte in the drive flag table corresponds to a drive
  47575. SeeAlso: AX=EF00h,AX=EF02h,AX=EF03h
  47576.  
  47577. (Table 1187)
  47578. Values in NetWare drive flag table:
  47579.  00h    drive is not mapped
  47580.  01h    permanent network drive
  47581.  02h    temporary network drive
  47582.  80h    mapped to local drive
  47583.  81h    local drive used as permanent network drive
  47584.  82h    local drive used as temporary network drive
  47585. --------N-21EF02-----------------------------
  47586. INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
  47587.     AX = EF02h
  47588. Return: ES:SI -> network shell's 32-byte drive conection ID table
  47589.     AX = 0000h
  47590. Notes:    this function is supported by Advanced NetWare 1.0+
  47591.     each byte in the connection ID table corresponds to a drive and
  47592.       contains either the connection ID (1-8) of the server for that drive
  47593.       or 00h if the drive is not mapped to a file server
  47594. SeeAlso: AX=EF01h,AX=EF03h,AX=F002h
  47595. --------N-21EF03-----------------------------
  47596. INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
  47597.     AX = EF03h
  47598. Return: ES:SI -> network shell's connection ID table (see #1188)
  47599.     AX = 0000h
  47600. Note:    this function is supported by Advanced NetWare 1.0+
  47601. SeeAlso: AX=EF00h,AX=EF02h,AX=EF04h,AX=F002h
  47602.  
  47603. Format of NetWare connection ID table [one entry of eight-element array]:
  47604. Offset    Size    Description    (Table 1188)
  47605.  00h    BYTE    in-use flag
  47606.         E0h AES temporary
  47607.         F8h IPX in critical section
  47608.         FAh processing
  47609.         FBh holding
  47610.         FCh AES waiting
  47611.         FDh waiting
  47612.         FEh receiving
  47613.         FFh sending
  47614.  01h    BYTE    order number assigned to server (1-8)
  47615.  02h    DWORD    (big-endian) file server's network address
  47616.  06h  6 BYTEs    (big-endian) file server's node address
  47617.  0Ch    WORD    (big-endian) socket number
  47618.  0Eh    WORD    (big-endian) base receive timeout in clock ticks
  47619.  10h  6 BYTEs    (big-endian) preferred routing node
  47620.  16h    BYTE    packet sequence number
  47621.  17h    BYTE    connection number (FFh = no connection)
  47622.  18h    BYTE    connection status (00h if active)
  47623.  19h    WORD    (big-endian) maximum receive timeout in clock ticks
  47624.  1Bh  5 BYTEs    reserved
  47625. --------N-21EF04-----------------------------
  47626. INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
  47627.     AX = EF04h
  47628. Return: ES:SI -> network shell's file server name table (see #1189)
  47629.     AX = 0000h
  47630. Note:    this function is supported by Advanced NetWare 1.0+
  47631. SeeAlso: AX=EF03h
  47632.  
  47633. Format of file server name table:
  47634. Offset    Size    Description    (Table 1189)
  47635.  00h 48 BYTEs    ASCIZ server name for first entry in connection ID table
  47636.  30h 48 BYTEs    ASCIZ server name for second entry in connection ID table
  47637.     ...
  47638. 150h 48 BYTEs    ASCIZ server name for eighth entry in connection ID table
  47639. --------T-21F0-------------------------------
  47640. INT 21 - DoubleDOS - MENU CONTROL
  47641.     AH = F0h
  47642.     AL = subfunction
  47643.         01h exchange tasks
  47644.         73h resume invisible job if suspended
  47645.         74h kill other job
  47646.         75h suspend invisible job
  47647. Note:    identical to AH=E0h
  47648. SeeAlso: AH=E0h"DoubleDOS"
  47649. --------v-21F0-------------------------------
  47650. INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
  47651.     AH = F0h
  47652. Return: AX = 0300h if resident
  47653. SeeAlso: AH=EEh"VIRUS",AH=F1h"VIRUS"
  47654. --------N-21F000-----------------------------
  47655. INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
  47656.     AX = F000h
  47657.     DL = connection ID of prefered file server (1-8) or 00h for none
  47658. Notes:    this function is supported by Advanced NetWare 1.0+
  47659.     the preferred connection ID is set to 00h by the shell on EOJ
  47660. SeeAlso: AH=D6h,AX=EF03h,AX=F001h,AX=F002h,AX=F005h
  47661. --------N-21F001-----------------------------
  47662. INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
  47663.     AX = F001h
  47664. Return: AL = connection ID of preferred file server (1-8), 00h if not set
  47665. Notes:    this function is supported by Advanced NetWare 1.0+
  47666.     the preferred connection ID is set to 00h by the shell on EOJ
  47667. SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
  47668. --------N-21F002-----------------------------
  47669. INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
  47670.     AX = F002h
  47671. Return: AL = connection ID of current default file server (1-8) (see AX=EF03h)
  47672. Note:    this function is supported by Advanced NetWare 1.0+
  47673. SeeAlso: AX=EF03h,AX=F000h,AX=F004h
  47674. --------N-21F003-----------------------------
  47675. INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
  47676.     AX = F003h
  47677. Return: AH = status
  47678.         00h not active
  47679.         FFh active
  47680.         AL = connection ID (01h-08h)
  47681. Note:    this function is supported by Advanced NetWare 1.0+
  47682. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h,AH=DFh/DL=04h
  47683. --------N-21F004-----------------------------
  47684. INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
  47685.     AX = F004h
  47686.     DL = connection ID of primary file server (1-8) or 00h for none
  47687. Note:    this function is supported by Advanced NetWare 2.0+
  47688. SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
  47689. --------N-21F005-----------------------------
  47690. INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
  47691.     AX = F005h
  47692. Return: AL = connection ID of primary file server (1-8), 00h if not set
  47693. Notes:    this function is supported by Advanced NetWare 2.0+
  47694.     by default, the primary file server is the one from which the login
  47695.       script executed; it is set to 00h if the workstation is not logged in
  47696.       and when it detaches from its primary file server
  47697. SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F004h
  47698. --------N-21F1-------------------------------
  47699. INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
  47700.     AH = F1h
  47701.     AL = subfunction
  47702.         00h attach to file server
  47703.         DL = preferred file server (01h-08h)
  47704.         01h detach from file server
  47705.         DL = connection ID
  47706.         02h logout from file server
  47707.         DL = connection ID
  47708. Return: AL = status (see #1190)
  47709. Note:    these functions are supported by Advanced NetWare 1.0+
  47710. SeeAlso: AH=D7h"NetWare",AH=E3h/SF=14h
  47711.  
  47712. (Table 1190)
  47713. Values for NetWare function status:
  47714.  00h    successful
  47715.  F8h    already attached to server
  47716.  F9h    connection table full
  47717.  FAh    no more server slots
  47718.  FCh    unknown file server
  47719.  FEh    server bindery locked
  47720.  FFh    no response from server, or connection does not exist
  47721. --------T-21F1-------------------------------
  47722. INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
  47723.     AH = F1h
  47724. SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
  47725. SeeAlso: AH=F8h"DoubleDOS"
  47726. --------v-21F1-------------------------------
  47727. INT 21 - VIRUS - "F1-337" - ???
  47728.     AH = F1h
  47729.     ???
  47730. Return: ???
  47731. SeeAlso: AH=F0h"VIRUS",AX=F1E9h
  47732. --------v-21F1E9-----------------------------
  47733. INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
  47734.     AX = F1E9h
  47735. Return: AX = installation state
  47736.         CADEh installed, and calling program is infected
  47737.         F100h not installed (normal DOS return value)
  47738.         else  installed, but calling program is not infected
  47739. SeeAlso: AH=F1h"VIRUS",AX=F2AAh
  47740. --------N-21F2-------------------------------
  47741. INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
  47742.     AH = F2h
  47743.     AL = function (see #1191)
  47744.         (subfunction stored at DS:SI for AL=56h,57h,
  47745.           DS:SI+2 for AL=15h-17h,23h, DS:SI+11h for AL=68h)
  47746.     CX = length of request buffer in bytes
  47747.     DX = length of reply buffer in bytes
  47748.     DS:SI -> request buffer (contents vary by function)
  47749.     ES:DI -> reply buffer (contents vary by function)
  47750. Return: AL = status
  47751.     reply buffer filled as appropriate for function
  47752. Note:    this is a multiplexor providing a "raw" interface to the underlying
  47753.       NetWare Core Protocol.  Many functions which were accessed via a
  47754.       separate AH function in older versions can also be accessed here,
  47755.       but some NetWare 3.x calls appear to be available only here.
  47756. SeeAlso: AX=F244h,AX=F268h/SF=3Dh
  47757.  
  47758. (Table 1191)
  47759. Values for NetWare Core Protocol functions:
  47760. Fnc/Subfn    Description
  47761. 01h    File Set Lock
  47762. 02h    File Release Lock
  47763. 03h    Log File (see AH=EBh"NetWare")
  47764. 04h    Lock File Set (see AH=CBh"NetWare")
  47765. 05h    Release File (see AH=CCh,AH=ECh"NetWare")
  47766. 06h    Release File Set (see AH=CDh"NetWare")
  47767. 07h    Clear File (see AH=CEh,AH=EDh"NetWare")
  47768. 08h    Clear File Set (see AH=CFh"NetWare")
  47769. 09h    Log Logical Record (see AH=D0h"NetWare")
  47770. 0Ah    Lock Logical Record Set (see AH=D1h"NetWare")
  47771. 0Bh    Clear Logical Record (see AH=D4h"NetWare")
  47772. 0Ch    Release Logical Record (see AH=D2h"NetWare")
  47773. 0Dh    Release Logical Record Set (see AH=D3h"NetWare")
  47774. 0Eh    Clear Logical Record Set (see AH=D5h"NetWare")
  47775. 0Fh    Allocate Resource (see AH=D8h"NetWare")
  47776. 10h    Deallocate Resource (see AH=D9h"NetWare")
  47777. 11h/0Ah    Get Printer Queue
  47778. 11h/xxh    print spooling (see AX=E0xxh"NetWare")
  47779. 12h    Get Volume Info with Number (see AH=DAh"NetWare")
  47780. 13h    Get Station Number (see AH=DCh"NetWare")
  47781. 14h    Get File Server Date and Time (see AH=E7h"NetWare")
  47782. 15h/xxh    broadcast services (see AX=E1xxh"NetWare")
  47783. 16h/0Fh    Rename Directory
  47784. 16h/1Bh    Scan Salvagable Files
  47785. 16h/1Ch    Recover Salvagable File
  47786. 16h/1Dh    Purge Salvagable File
  47787. 16h/1Eh    Scan Dir Entry
  47788. 16h/1Fh    Get Dir ENtry
  47789. 16h/20h    Scan Volume for Restrictions
  47790. 16h/21h    Add User Disk Space Restriction (see AX=F216h/SF=21h)
  47791. 16h/22h    Clear Volume Restrictions
  47792. 16h/23h    Scan Dir Restrictions
  47793. 16h/24h    Set Directory Disk Space Restriction (see AX=F216h/SF=24h)
  47794. 16h/25h    Set Entry
  47795. 16h/26h    Scan File or Directory For Extended Trustees (see AX=F216h/SF=26h)
  47796. 16h/27h    Add Extended Trustee to Directory or File (see AX=F216h/SF=27h)
  47797. 16h/28h    Scan File Physical
  47798. 16h/29h    Get Object Disk Restrictions (see AX=F216h/SF=29h)
  47799. 16h/2Ah    Get Effective Rights
  47800. 16h/2Bh    Delete Trustee
  47801. 16h/2Ch    Get Volume Usage
  47802. 16h/2Dh    Get Dir Info
  47803. 16h/2Eh    Move Entry
  47804. 16h/2Fh    Fill Name Space Buffer
  47805. 16h/30h    Get Name Space Entry
  47806. 16h/31h    Open Data Stream
  47807. 16h/32h    Get Object Effective Rights
  47808. 16h/33h    Get Extended Volume Info
  47809. 16h/F3h    Map Directory Number to Path
  47810. 16h/xxh file/directory services (see AX=E2xxh"NetWare")
  47811. 17h/17h    Get Encryption Key
  47812. 17h/18h    Login Object Encrypted
  47813. 17h/1Ch    Get Connection Information (see AX=F217h/SF=1Ch)
  47814. 17h/1Fh    Get Connection List from Object
  47815. 17h/48h    Get Bindery Object Access Level
  47816. 17h/49h    Is Station a Manager?
  47817. 17h/4Ah    Verify Bindery Object Password Encrypted
  47818. 17h/4Bh    Change Bindery Object Password Encrypted
  47819. 17h/4Ch    Get Relation of an Object
  47820. 17h/D2h Clear Connection Number (Logout Station) (see AX=F217h/SF=D2h)
  47821. 17h/EBh    Get Connection's Open Files (see AX=F217h/SF=EBh)
  47822. 17h/ECh    Get Connections Using a File (see AX=F217h/SF=ECh)
  47823. 17h/EEh    Get Physical Record Locks by File (see AX=F217h/SF=EEh)
  47824. 17h/F2h Get Semaphore Information (see AX=F217h/SF=F2h)
  47825. 17h/F3h Map Directory Number to Path (see AX=F217h/SF=F3h)
  47826. 17h/F4h    Convert Path to Directory Entry (see AX=F217h/SF=F4h)
  47827. 17h/xxh    connection control (see AX=E3xxh"NetWare")
  47828. 18h    End of Job (see AH=D6h"NetWare")
  47829. 19h    Logout (see AH=D7h"NetWare")
  47830. 1Ah    Log Physical Record (see AH=BCh"NetWare")
  47831. 1Bh    Lock Physical Record Set (see AH=C2h"NetWare")
  47832. 1Ch    Release Physical Record (see AH=BDh"NetWare")
  47833. 1Dh    Release Physical Record Set (see AH=C3h"NetWare")
  47834. 1Eh    Clear Physical Record (see AH=BEh"NetWare")
  47835. 1Fh    Clear Physical Record Set (see AH=C4h"NetWare")
  47836. 20h/xxh    semaphore services (see AX=C5xxh"NetWare")
  47837. 21h    Negotiate Buffer
  47838. 22h/00h    TTS Is Available (see AX=C702h"NetWare")
  47839. 22h/01h    TTS Begin Transaction (see AX=C700h"NetWare")
  47840. 22h/02h    TTS End Transaction (see AX=C701h"NetWare")
  47841. 22h/03h    TTS Abort Transaction (see AX=C703h"NetWare")
  47842. 22h/04h    TTS Transaction Status (see AX=C704h"NetWare")
  47843. 22h/05h    TTS Get Application Thresholds (see AX=C705h"NetWare")
  47844. 22h/06h    TTS Set Application Thresholds (see AX=C706h"NetWare")
  47845. 22h/07h    TTS Get Workstation Thresholds (see AX=C707h"NetWare")
  47846. 22h/08h    TTS Set Workstation Thresholds (see AX=C708h"NetWare")
  47847. 22h/09h    TTS Get Control Flags
  47848. 22h/0Ah    TTS Set Control Flags
  47849. 23h/01h    AFP Create Directory
  47850. 23h/02h    AFP Create File
  47851. 23h/03h    AFP Delete
  47852. 23h/04h    AFP Get Entry ID From Name
  47853. 23h/05h    AFP Get FIle Infomration
  47854. 23h/06h    AFP Get Entry ID From NetWare Handle
  47855. 23h/07h    AFP Rename
  47856. 23h/08h    AFP Open File Fork
  47857. 23h/09h    AFP Set File Information
  47858. 23h/0Ah    AFP Scan File Information
  47859. 23h/0Bh    AFP Alloc Temporary Dir Handle
  47860. 23h/0Ch    AFP Get Entry ID From Path Name
  47861. 3Dh    Commit File
  47862. 3Eh    File Search Initialize (FindFirst)
  47863. 3Fh    File Search Continue (FindNext)
  47864. 40h    Search File
  47865. 42h    File Close
  47866. 43h    File Create
  47867. 44h    Erase Files
  47868. 45h    File Rename
  47869. 46h    Set File Attributes
  47870. 47h    Get File Size
  47871. 48h    File Read
  47872. 49h    File Write
  47873. 4Ah    File Server Copy (see AH=F3h"NetWare")
  47874. 4Bh    Set File Time and Date
  47875. 4Ch    File Open
  47876. 4Dh    Create New File
  47877. 4Eh    Allow Task Access to File
  47878. 4Fh    Set Extended File Attributes (see AH=B6h"NetWare")
  47879. 55h    Get File Bit Map
  47880. 56h/xx    extended attribute services (OS/2)
  47881. 56h/01h    close extended attribute
  47882. 56h/02h    write extended attribute
  47883. 56h/03h    read extended attribute
  47884. 56h/04h    enumerate extended attribute
  47885. 56h/05h    duplicate EA
  47886. 57h/01h    open/create file/directory
  47887. 57h/02h    init search, continue with 57h/03h
  47888. 57h/03h    Scan NS Entry Info
  47889. 57h/04h    rename file/directory
  47890. 57h/05h    scan for trustees
  47891. 57h/06h    Get NS Entry Info (see AX=F257h/SF=06h)
  47892. 57h/07h    Set NS Entry DOS Info
  47893. 57h/08h    delete file/directory
  47894. 57h/09h    set short directory handle
  47895. 57h/0Ah    Add Trustee
  47896. 57h/0Bh    Delete Trustee
  47897. 57h/0Ch    Allocate Temp NS Dir Handle
  47898. 57h/13h    Read NS Info
  47899. 57h/15h    get path string for short directory handle
  47900. 57h/16h    Get Directory Base
  47901. 57h/17h    Get NS Info
  47902. 57h/19h    Write NS Info
  47903. 57h/1Ah    Read Extended NS Info
  47904. 57h/1Bh    Write Extended NS Infor
  47905. 57h/1Ch    Get NS Path
  47906. 57h/1Dh    Get Effective Rights
  47907. 58h/01h    Get Volume Audit Statistics
  47908. 58h/02h    Add Audit Property
  47909. 58h/03h    Login as Volume Auditor
  47910. 58h/04h Change Auditor Password
  47911. 58h/05h Check Audit Access
  47912. 58h/06h    Remove Audit Property
  47913. 58h/07h    Disable Auditing on Volume
  47914. 58h/08h    Enable Auditing on Volume
  47915. 58h/09h    Is User Audited?
  47916. 58h/0Ah    Read Auditing Bit Map
  47917. 58h/0Bh    Read Audit Config Header
  47918. 58h/0Dh    Logout as Volume Auditor
  47919. 58h/0Eh    Reset Auditing File
  47920. 58h/0Fh    Reset Audit History File
  47921. 58h/10h    Write Auditing Bit Map
  47922. 58h/11h    Write Audit Config Header
  47923. 58h/13h    Get Auditing Flags
  47924. 58h/14h    Close Old Auditing File
  47925. 58h/15h    Delete Old Auditing File
  47926. 58h/16h    Check Audit Level Two Access
  47927. 5Ah/01h    Get DM Info
  47928. 61h    Negotiate LIP Buffer, packet signing, and IPX checksums
  47929. 65h    Packet Burst Connection
  47930. 68h/xxh NetWare 4.x directory services (subfn at DS:[SI+11h])
  47931. 68h/01h NDS resolve name
  47932. 68h/03h    NDS read property
  47933. 68h/35h NDS get server address
  47934. 68h/36h NDS set keys
  47935. 68h/39h NDS begin login
  47936. 68h/3Ah NDS finish login
  47937. 68h/3Bh NDS begin authenticate
  47938. 68h/3Ch NDS finish authenticate
  47939. 68h/3Dh NDS Logout
  47940. 7Bh/01h    Get Cache Information
  47941. 7Bh/02h    Get File Server Information
  47942. 7Bh/03h    Get NetWare File Systems Information
  47943. 7Bh/04h    Get User Information
  47944. 7Bh/05h    Get Packet Burst Information
  47945. 7Bh/06h    Get IPX/SPX Information
  47946. 7Bh/07h    Get Garbage Collection Information
  47947. 7Bh/08h    Get CPU Information
  47948. 7Bh/09h    Get Volume Switch Information
  47949. 7Bh/0Ah    Get NLM Loaded List
  47950. 7Bh/0Bh    Get NLM Information
  47951. 7Bh/0Ch    Get Directory Cache Information
  47952. 7Bh/0Dh    Get OS Version Information
  47953. 7Bh/0Eh    Get Active Connection List by Type
  47954. 7Bh/0Fh    Get NLM's Resource Tag List
  47955. 7Bh/14h    Get Active LAN Board List
  47956. 7Bh/15h    Get LAN Configuration Information
  47957. 7Bh/16h    Get LAN Common Counters Information
  47958. 7Bh/17h    Get LAN Custom Counters Information
  47959. 7Bh/18h    Get LAN Config Strings
  47960. 7Bh/19h    Get LSL Informatino
  47961. 7Bh/1Ah    Get LSL Logical Board Statistics
  47962. 7Bh/1Eh    Get Media Manager Object Information
  47963. 7Bh/1Fh    Get Media Manager Object List
  47964. 7Bh/20h    Get Media Manager Object Children List
  47965. 7Bh/21h    Get Volume Segment List
  47966. 7Bh/28h    Get Active Protocol Stacks
  47967. 7Bh/29h    Get Protocol Stack Configuration Information
  47968. 7Bh/2Ah    Get Protocol Stack Statistics Information
  47969. 7Bh/2Bh    Get Protocol Stack Custom Information
  47970. 7Bh/2Ch    Get Protocol Stack Numbers By Media Number
  47971. 7Bh/2Dh    Get Protocol Stack Numbers By LAN Board Number
  47972. 7Bh/2Eh    Get Media Name by Media Number
  47973. 7Bh/2Fh    Get Loaded Media Number List
  47974. 7Bh/32h    Get General Router and SAP Information
  47975. 7Bh/33h    Get Network Router Information
  47976. 7Bh/34h    Get Network Routers Information
  47977. 7Bh/35h    Get Known Networks Information
  47978. 7Bh/36h    Get Server Information
  47979. 7Bh/38h    Get Known Servers Information
  47980. 7Bh/3Ch    Get Server Set Commands Information
  47981. 7Bh/3Dh    Get Server Set Categories
  47982. Note:    the subfunction is stored at DS:SI for AL=56h,57h, DS:SI+2 for
  47983.       AL=15h-17h,23h
  47984. --------T-21F2-------------------------------
  47985. INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
  47986.     AH = F2h
  47987.     AL = character
  47988. Return: AL = status
  47989.         00h successful
  47990.         01h buffer full (128 characters)
  47991. SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
  47992. SeeAlso: AH=F8h"DoubleDOS"
  47993. --------N-21F216SF21-------------------------
  47994. INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
  47995.     AX = F216h subfn 21h
  47996.     CX = length of request buffer in bytes
  47997.     DX = length of reply buffer in bytes
  47998.     DS:SI -> request buffer (see #1192)
  47999.     ES:DI -> reply buffer (ignored)
  48000. Return: AL = status
  48001. SeeAlso: AX=F216h/SF=24h
  48002.  
  48003. Format of NetWare request buffer:
  48004. Offset    Size    Description    (Table 1192)
  48005.  00h    WORD    000Ah (length of following data)
  48006.  02h    BYTE    21h (subfunction "Add User Disk Space Restriction")
  48007.  03h    BYTE    volume number
  48008.  04h    DWORD    (big-endian) object ID
  48009.  08h    DWORD    (big-endian) disk space limit in 4K blocks
  48010.         00000000h to 40000000h
  48011. --------N-21F216SF24-------------------------
  48012. INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
  48013.     AX = F216h subfn 24h
  48014.     CX = length of request buffer in bytes
  48015.     DX = length of reply buffer in bytes
  48016.     DS:SI -> request buffer (see #1193)
  48017.     ES:DI -> reply buffer (ignored)
  48018. Return: AL = status
  48019. SeeAlso: AX=F216h/SF=21h
  48020.  
  48021. Format of NetWare request buffer:
  48022. Offset    Size    Description    (Table 1193)
  48023.  00h    WORD    0006h (length of following data)
  48024.  02h    BYTE    24h (subfunction "Set Directory Disk Space Restriction")
  48025.  03h    BYTE    directory handle
  48026.  04h    DWORD    (big-endian) disk space limit in 4K blocks
  48027.         00000000h to remove restriction, negative to set to 0 blocks
  48028. --------N-21F216SF26-------------------------
  48029. INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
  48030.     AX = F216h subfn 26h
  48031.     CX = length of request buffer in bytes
  48032.     DX = length of reply buffer in bytes
  48033.     DS:SI -> request buffer (see #1194)
  48034.     ES:DI -> reply buffer (see #1195)
  48035. Return: AL = status
  48036. Desc:    get up to 20 extended trustee entries per call for a file or directory
  48037.  
  48038. Format of NetWare request buffer:
  48039. Offset    Size    Description    (Table 1194)
  48040.  00h    WORD    length of following data
  48041.  02h    BYTE    26h (subfunc "Scan File or Directory For Extended Trustees")
  48042.  03h    BYTE    directory handle
  48043.  04h    BYTE    sequence number
  48044.         00h for first call, increment by number of returned entries
  48045.  05h    BYTE    length of path
  48046.  06h  N BYTEs    pathname
  48047.  
  48048. Format of NetWare reply buffer:
  48049. Offset    Size    Description    (Table 1195)
  48050.  00h    BYTE    number of entries returned (max 20)
  48051.  01h 20 DWORDs    (big-endian) list of object IDs
  48052.  51h 20 WORDs    list of associated trustee rights
  48053. --------N-21F216SF27-------------------------
  48054. INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
  48055.     AX = F216h subfn 27h
  48056.     CX = length of request buffer in bytes
  48057.     DX = length of reply buffer in bytes
  48058.     DS:SI -> request buffer (see #1196)
  48059.     ES:DI -> reply buffer (ignored)
  48060. Return: AL = status
  48061.  
  48062. Format of NetWare request buffer:
  48063. Offset    Size    Description    (Table 1196)
  48064.  00h    WORD    length of following data
  48065.  02h    BYTE    27h (subfunction "Add Extended Trustee to Directory or File")
  48066.  03h    BYTE    directory handle
  48067.  04h    DWORD    (big-endian) object ID
  48068.  08h    WORD    trustee rights (see #1197)
  48069.  0Ah    BYTE    path length
  48070.  0Bh  N BYTEs    path name
  48071.  
  48072. Bitfields for NetWare trustee rights:
  48073. Bit(s)    Description    (Table 1197)
  48074.  0    read
  48075.  1    write
  48076.  3    create
  48077.  4    delete
  48078.  5    access
  48079.  6    file
  48080.  7    modify
  48081.  8    supervisor
  48082. --------N-21F216SF29-------------------------
  48083. INT 21 - Novell NetWare v3+ - GET OBJECT DISK RESTRICTIONS
  48084.     AX = F216h subfn 29h
  48085.     CX = length of request buffer in bytes
  48086.     DX = length of reply buffer in bytes
  48087.     DS:SI -> request buffer (see #1198)
  48088.     ES:DI -> reply buffer (see #1199)
  48089. Return: AL = status
  48090.     reply buffer filled
  48091. Note:    this function returns successfully, showing no restriction, if an
  48092.       invalid object ID is specified
  48093. SeeAlso: AX=F216h/SF=24h
  48094.  
  48095. Format of NetWare request buffer:
  48096. Offset    Size    Description    (Table 1198)
  48097.  00h    WORD    0006h (length of following data)
  48098.  02h    BYTE    21h (subfunction "Get Object Disk Restrictions")
  48099.  03h    BYTE    volume number
  48100.  04h    DWORD    (big-endian) object ID
  48101.  
  48102. Format of NetWare reply buffer:
  48103. Offset    Size    Description    (Table 1199)
  48104.  00h    DWORD    disk space limit
  48105.  04h    DWORD    disk space currently in use by object
  48106. --------N-21F217SF1C-------------------------
  48107. INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
  48108.     AX = F217h subfn 1Ch
  48109.     CX = length of request buffer in bytes
  48110.     DX = length of reply buffer in bytes
  48111.     DS:SI -> request buffer (see #1200)
  48112.     ES:DI -> reply buffer (see #1201)
  48113. Return: AL = status
  48114.     reply buffer filled
  48115.  
  48116. Format of NetWare request buffer:
  48117. Offset    Size    Description    (Table 1200)
  48118.  00h    WORD    0005h (length of following data)
  48119.  02h    BYTE    1Ch (subfunction "Get Connection Information")
  48120.  03h    DWORD    target connection number
  48121. Note:    connection numbers greater than the maximum supported by the server
  48122.       can cause ABENDs
  48123.  
  48124. Format of NetWare reply buffer:
  48125. Offset    Size    Description    (Table 1201)
  48126.  00h    DWORD    (big-endian) unique user ID, 00000000h if no one logged in
  48127.  04h    WORD    (big-endian) user type
  48128.  06h 48 BYTEs    user name
  48129.  36h  7 BYTEs    login time (see #1183)
  48130.  3Dh    BYTE    reserved
  48131. --------N-21F217SFD2-------------------------
  48132. INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
  48133.     AX = F217h subfn D2h
  48134.     CX = length of request buffer in bytes
  48135.     DX = length of reply buffer in bytes
  48136.     DS:SI -> request buffer (see #1202)
  48137.     ES:DI -> reply buffer (ignored)
  48138. Return: AL = status
  48139.     reply buffer filled
  48140.  
  48141. Format of NetWare request buffer:
  48142. Offset    Size    Description    (Table 1202)
  48143.  00h    WORD    0002h (length of following data)
  48144.  02h    BYTE    D2h (subfunction "Clear Connection Number")
  48145.  03h    BYTE    connection number
  48146. --------N-21F217SFEB-------------------------
  48147. INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
  48148.     AX = F217h subfn EBh
  48149.     CX = length of request buffer in bytes
  48150.     DX = length of reply buffer in bytes
  48151.     DS:SI -> request buffer (see #1203)
  48152.     ES:DI -> reply buffer (see #1204)
  48153. Return: AL = status
  48154.     reply buffer filled
  48155.  
  48156. Format of NetWare request buffer:
  48157. Offset    Size    Description    (Table 1203)
  48158.  00h    WORD    0005h (length of following data)
  48159.  02h    BYTE    EBh (subfunction "Get Connection's Open Files")
  48160.  03h    WORD    target connection number
  48161.  05h    WORD    last record seen (set to 0000h for first call)
  48162. Note:    connection numbers greater than the maximum supported by the server
  48163.       can cause ABENDs
  48164.  
  48165. Format of NetWare reply buffer:
  48166. Offset    Size    Description    (Table 1204)
  48167.  00h    WORD    next request record
  48168.  02h    WORD    number of records returned (max 28)
  48169.  04h 29N BYTEs    array of connection records (see #1205)
  48170.  
  48171. Format of NetWare connection record:
  48172. Offset    Size    Description    (Table 1205)
  48173.  00h    WORD    task number
  48174.  02h    BYTE    lock type
  48175.  03h    BYTE    access control
  48176.  04h    BYTE    lock flag
  48177.  05h    BYTE    volume number
  48178.  06h    DWORD    parent directory entry number
  48179.  0Ah    DWORD    directory entry number
  48180.  0Eh    BYTE    reserved
  48181.  0Fh    BYTE    data stream type
  48182.  10h    BYTE    file name length
  48183.  11h 12 BYTEs    file name
  48184. --------N-21F217SFEC-------------------------
  48185. INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
  48186.     AX = F217h subfn ECh
  48187.     CX = length of request buffer in bytes
  48188.     DX = length of reply buffer in bytes
  48189.     DS:SI -> request buffer (see #1206)
  48190.     ES:DI -> reply buffer (see #1207)
  48191. Return: AL = status
  48192.     reply buffer filled
  48193.  
  48194. Format of NetWare request buffer:
  48195. Offset    Size    Description    (Table 1206)
  48196.  00h    WORD    0009h (length of following data)
  48197.  02h    BYTE    ECh (subfunction "Get Connections Using a File")
  48198.  03h    BYTE    data stream type
  48199.  04h    BYTE    volume number
  48200.  05h    DWORD    directory entry number
  48201.  09h    WORD    last record seen (0000h for first call)
  48202.  
  48203. Format of NetWare reply buffer:
  48204. Offset    Size    Description    (Table 1207)
  48205.  00h    WORD    next request record
  48206.  02h    WORD    use count
  48207.  04h    WORD    open count
  48208.  06h    WORD    number of times open for reading
  48209.  08h    WORD    number of times open for writing
  48210.  0Ah    WORD    Deny Read count
  48211.  0Ch    WORD    Deny Write count
  48212.  0Eh    BYTE    flag: locked
  48213.  0Fh    BYTE    data stream type
  48214.  10h    WORD    number of records returned (max 70)
  48215.  12h 7N BYTEs    returned records (see #1208)
  48216.  
  48217. Format of returned record:
  48218. Offset    Size    Description    (Table 1208)
  48219.  00h    WORD    connection number
  48220.  02h    WORD    task number
  48221.  04h    BYTE    lock type
  48222.  05h    BYTE    access flag
  48223.  06h    BYTE    lock flag
  48224. --------N-21F217SFEE-------------------------
  48225. INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
  48226.     AX = F217h subfn EEh
  48227.     CX = length of request buffer in bytes
  48228.     DX = length of reply buffer in bytes
  48229.     DS:SI -> request buffer (see #1209)
  48230.     ES:DI -> reply buffer (see #1210)
  48231. Return: AL = status
  48232.     reply buffer filled
  48233.  
  48234. Format of NetWare request buffer:
  48235. Offset    Size    Description    (Table 1209)
  48236.  00h    WORD    0009h (length of following data)
  48237.  02h    BYTE    EEh (subfunction "Get Physical Record Locks by File")
  48238.  03h    BYTE    data stream number
  48239.  04h    BYTE    volume number
  48240.  05h    DWORD    directory entry number
  48241.  09h    WORD    last record seen (0000h for first call)
  48242.  
  48243. Format of NetWare reply buffer:
  48244. Offset    Size    Description    (Table 1210)
  48245.  00h    WORD    next request record
  48246.  02h    WORD    number of locks
  48247.  04h 17N BYTEs    array of lock records, one per lock (see #1211)
  48248.  
  48249. Format of NetWare lock record:
  48250. Offset    Size    Description    (Table 1211)
  48251.  00h    WORD    logged count
  48252.  02h    WORD    number of shareable locks
  48253.  04h    DWORD    start offset of record
  48254.  08h    DWORD    end offset of record
  48255.  0Ch    WORD    logical connection number
  48256.  0Eh    WORD    task number
  48257.  10h    BYTE    lock type
  48258. --------N-21F217SFF2-------------------------
  48259. INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
  48260.     AX = F217h subfn F2h
  48261.     CX = length of request buffer in bytes
  48262.     DX = length of reply buffer in bytes
  48263.     DS:SI -> request buffer (see #1212)
  48264.     ES:DI -> reply buffer (see #1213)
  48265. Return: AL = status
  48266.     reply buffer filled
  48267.  
  48268. Format of NetWare request buffer:
  48269. Offset    Size    Description    (Table 1212)
  48270.  00h    WORD    length of following data (max 84h)
  48271.  02h    BYTE    F2h (subfunction "Get Semaphore Information")
  48272.  03h    WORD    last record seen (0000h on first call)
  48273.  05h    BYTE    length of semaphore name (max 128)
  48274.  06h  N BYTEs    semaphore name
  48275.  
  48276. Format of NetWare reply buffer:
  48277. Offset    Size    Description    (Table 1213)
  48278.  00h    WORD    next request record
  48279.  02h    WORD    open count
  48280.  04h    BYTE    value of semaphore
  48281.  05h    WORD    number of records returned
  48282.  07h 2N WORDs    list of logical connection number/task number pairs
  48283. --------N-21F217SFF3-------------------------
  48284. INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
  48285.     AX = F217h subfn F3h
  48286.     CX = length of request buffer in bytes
  48287.     DX = length of reply buffer in bytes
  48288.     DS:SI -> request buffer (see #1214)
  48289.     ES:DI -> reply buffer (see #1215)
  48290. Return: AL = status
  48291.     reply buffer filled
  48292. SeeAlso: AX=F217h/SF=F4h
  48293.  
  48294. Format of NetWare request buffer:
  48295. Offset    Size    Description    (Table 1214)
  48296.  00h    WORD    0007h (length of following data)
  48297.  02h    BYTE    F3h (subfunction "Map Directory Number to Path")
  48298.  03h    BYTE    volume number
  48299.  04h    DWORD    directory entry number
  48300.  08h    BYTE    name space type
  48301.  
  48302. Format of NetWare reply buffer:
  48303. Offset    Size    Description    (Table 1215)
  48304.  00h    BYTE    directory path length
  48305.  01h  N BYTEs    directory path (NetWare style, separated by length descriptors
  48306.           rather than slashes or backslashes)
  48307. --------N-21F217SFF4-------------------------
  48308. INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
  48309.     AX = F217h subfn F4h
  48310.     CX = length of request buffer in bytes
  48311.     DX = length of reply buffer in bytes
  48312.     DS:SI -> request buffer (see #1216)
  48313.     ES:DI -> reply buffer (see #1217)
  48314. Return: AL = status
  48315.     reply buffer filled
  48316. SeeAlso: AX=F217h/SF=F3h
  48317.  
  48318. Format of NetWare request buffer:
  48319. Offset    Size    Description    (Table 1216)
  48320.  00h    WORD    length of following data
  48321.  02h    BYTE    F4h (subfunction "Convert Path to Directory Entry")
  48322.  03h    BYTE    directory handle or 00h for none
  48323.  04h    BYTE    length of directory path
  48324.  05h  N BYTEs    directory path (must be fully qualified if no handle specified)
  48325.  
  48326. Format of NetWare reply buffer:
  48327. Offset    Size    Description    (Table 1217)
  48328.  00h    BYTE    (return) volume number
  48329.  01h    DWORD    (return) directory entry number
  48330. --------N-21F244-----------------------------
  48331. INT 21 - Novell NetWare - FILE SERVICES - ERASE FILES
  48332.     AX = F244h
  48333.     DS:SI -> request buffer (see #1219)
  48334.     ES:DI -> reply buffer (ignored???)
  48335. Return: AL = status (see #1218)
  48336. Note:    this function only marks the file for deletion; use AH=E2h/SF=CEh to
  48337.       actually delete all marked files
  48338. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=0Bh,AH=E3h/SF=CEh
  48339.  
  48340. (Table 1218)
  48341. Values for NetWare function status:
  48342.  00h    successful
  48343.  98h    nonexistent volume
  48344.  9Bh    invaid directory handle
  48345.  9Ch    invalid path
  48346.  FFh    no files found
  48347.  
  48348. Format of NetWare request buffer:
  48349. Offset    Size    Description    (Table 1219)
  48350.  00h    BYTE    directory handle
  48351.  01h    BYTE    search attributes (see #0574 at AX=4301h)
  48352.  02h    BYTE    length of filespec
  48353.  03h  N BYTEs    ASCIZ filespec (may include wildcards)
  48354. --------N-21F257SF06-------------------------
  48355. INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
  48356.     AX = F257h subfn 06h
  48357.     CX = length of request buffer in bytes
  48358.     DX = length of reply buffer in bytes
  48359.     DS:SI -> request buffer (see #1220)
  48360.     ES:DI -> reply buffer (see #1222)
  48361. Return: AL = status
  48362.     reply buffer filled
  48363.  
  48364. Format of NetWare request buffer:
  48365. Offset    Size    Description    (Table 1220)
  48366.  00h    BYTE    06h (subfunction "Get NS Entry Info")
  48367.  01h    BYTE    name space
  48368.  02h    BYTE    destination name space
  48369.  03h    WORD    search attributes
  48370.  05h    DWORD    return information mask (see #1221)
  48371.  09h    BYTE    volume number
  48372.  0Ah    DWORD    directory base
  48373.  0Eh    BYTE    handle flag
  48374.         00h first byte of dir base is dir handle; ignore volume number
  48375.         01h dir base = unique ID, volume number set
  48376.         FFh volume number and dir base ignored, volume part of path
  48377.  0Fh    BYTE    number of path components
  48378.  10h  N BYTEs    list of path components (each a counted string)
  48379.  
  48380. Bitfields for return information mask:
  48381. Bit(s)    Description    (Table 1221)
  48382.  0    include filename
  48383.  1    data stream space allocated info
  48384.  2    attributes info
  48385.  3    data stream size info
  48386.  4    total space allocated for all data streams
  48387.  5    extended attributes info
  48388.  6    archive info
  48389.  7    modify info
  48390.  8    create info
  48391.  9    name space info
  48392.  10    directory info
  48393.  11    rights info
  48394.  
  48395. Format of NetWare reply buffer for name space info:
  48396. Offset    Size    Description    (Table 1222)
  48397.  00h 72 BYTEs    reserved
  48398.  48h    DWORD    creator's name space number
  48399.  4Ch 257 BYTEs    reserved
  48400. ----------21F268SF3D-------------------------
  48401. INT 21 - Novell NetWare v3+ - NDS LOGOUT
  48402.     AX = F268h subfn 3Dh
  48403.     CX = length of request buffer in bytes
  48404.     DX = length of reply buffer in bytes
  48405.     DS:SI -> request buffer (see #1223)
  48406.     ES:DI -> reply buffer (see #1224)
  48407. Return: AL = status
  48408.     reply buffer filled
  48409.  
  48410. Format of NetWare "NDS Logout" request buffer:
  48411. Offset    Size    Description    (Table 1223)
  48412.  00h    BYTE    02h
  48413.  01h    DWORD    ??? (FFFFFFFFh)
  48414.  05h    DWORD    ??? (00000202h)
  48415.  09h    DWORD    length
  48416.  0Dh    DWORD    ??? (00000000h)
  48417.  11h    DWORD    function (0000003Dh) (subfunction "NDS Logout")
  48418.  15h    DWORD    ??? (00000000h)
  48419.  19h 1000 BYTEs    data
  48420.  
  48421. Format of NetWare "NDS Logout" reply buffer:
  48422. Offset    Size    Description    (Table 1224)
  48423.  00h    DWORD    length
  48424.  04h    DWORD    ???
  48425.  08h    DWORD    return code
  48426.  0Ch 1000 BYTEs    returned data
  48427. --------v-21F2AA-----------------------------
  48428. INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
  48429.     AX = F2AAh
  48430. Return: AH = AAh if resident
  48431. SeeAlso: AH=F1h"VIRUS",AH=F3h"VIRUS"
  48432. --------N-21F3-------------------------------
  48433. INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
  48434.     AH = F3h
  48435.     ES:DI -> request buffer (see #1225)
  48436. Return: AL = status/error code
  48437.     CX:DX = number of bytes copied
  48438. Notes:    this function is supported by Advanced NetWare 2.0+
  48439.     both source and destination must be on the same file server
  48440. SeeAlso: AH=3Ch,AH=3Fh
  48441.  
  48442. Format of NetWare request buffer:
  48443. Offset    Size    Description    (Table 1225)
  48444.  00h    WORD    source file handle (as returned by AH=3Ch or AH=3Dh)
  48445.  02h    WORD    destination file handle
  48446.  04h    DWORD    starting offset in source
  48447.  08h    DWORD    starting offset in destination
  48448.  0Ch    DWORD    number of bytes to copy
  48449. --------T-21F3-------------------------------
  48450. INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
  48451.     AH = F3h
  48452.     AL = character
  48453. Return: AL = 00h successful
  48454.          01h buffer full (128 characters)
  48455. SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
  48456. SeeAlso: AH=F8h"DoubleDOS"
  48457. --------v-21F3-------------------------------
  48458. INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
  48459.     AH = F3h
  48460. Return: AX = 0400h if resident
  48461. SeeAlso: AH=D5h"Carfield",AX=F2AAh,AH=F7h"VIRUS"
  48462. --------T-21F400-----------------------------
  48463. INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
  48464.     AX = F400h
  48465. Return: AL = program status
  48466.         00h if DoubleDOS not present
  48467.         01h if running in visible DoubleDOS partition
  48468.         02h if running in the invisible DoubleDOS partition
  48469. SeeAlso: AX=E400h,AH=F5h"DoubleDOS"
  48470. --------T-21F5-------------------------------
  48471. INT 21 - DoubleDOS - OTHER PROGRAM STATUS
  48472.     AH = F5h
  48473. Return: AL = program status
  48474.         00h no program in other partition
  48475.         01h program in other partition is running
  48476.         02h program in other partition is suspended
  48477. SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"
  48478. --------v-21F7-------------------------------
  48479. INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
  48480.     AH = F7h
  48481. Return: AX = 0300h if resident
  48482. SeeAlso: AH=F0h"VIRUS",AH=FBh"VIRUS"
  48483. --------D-21F8-------------------------------
  48484. INT 21 - DOS v2.11 - SET OEM INT 21 HANDLER
  48485.     AH = F8h
  48486.     DS:DX -> OEM INT 21 handler for functions F9h to FFh
  48487.          FFFFh:FFFFh disables OEM handler
  48488. Notes:    this function is supported by Toshiba T1000 ROM MS-DOS 2.11
  48489.     calls to AH=F9h through AH=FFH will return AL=00h if no handler set
  48490.     handler is called with all registers exactly as set by caller, and
  48491.       should exit with IRET
  48492. SeeAlso: AH=F9h"OEM"
  48493. --------T-21F8-------------------------------
  48494. INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
  48495.     AH = F8h
  48496.     AL = program for which to set flags
  48497.         00h this program
  48498.         01h other program
  48499.     DX = keyboard control flags (see #1184 at AH=E8h"DoubleDOS")
  48500. Return: DX = previous flags
  48501. Notes:    disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
  48502.       disabling any of the other keystrokes disables them completely
  48503.     this function is identical to AH=E8h
  48504. SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
  48505. SeeAlso: AH=F3h"DoubleDOS"
  48506. --------D-21F9-------------------------------
  48507. INT 21 - DOS v2.11 - OEM FUNCTION
  48508.     AH = F9h
  48509. SeeAlso: AH=F8h"OEM",AH=FAh"OEM"
  48510. --------T-21F9-------------------------------
  48511. INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
  48512.     AH = F9h
  48513.     AL = priority
  48514.         00h visible program gets 70%, invisible gets 30% (default)
  48515.         01h visible program gets 50%, invisible gets 50%
  48516.         02h visible program gets 30%, invisible gets 70%
  48517.         03h Top program gets 70%, bottom program gets 30%
  48518.         04h Top program gets 30%, bottom program gets 70%
  48519.         05h get current priority
  48520.         Return: AL = priority setting
  48521. Note:    identical to AH=E9h
  48522. SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"
  48523. --------D-21FA-------------------------------
  48524. INT 21 - DOS v2.11 - OEM FUNCTION
  48525.     AH = FAh
  48526. SeeAlso: AH=F8h"OEM",AH=F9h"OEM",AH=FBh"OEM"
  48527. --------T-21FA-------------------------------
  48528. INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
  48529.     AH = FAh
  48530. Return: task switching turned off
  48531. SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
  48532. SeeAlso: INT FA"DoubleDOS"
  48533. --------v-21FA--DX5945-----------------------
  48534. INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
  48535.     AH = FAh
  48536.     DX = 5945h
  48537.     AL = function (00h-02h for VDEFEND, 00h-07h for VSAFE and VWATCH)
  48538. Return: varies by function
  48539. Note:    this API is identical to the API on INT 13/AH=FAh and INT 16/AH=FAh,
  48540.       so it is listed in its entirety only under INT 16/AX=FA00h and
  48541.       following
  48542. SeeAlso: INT 13/AX=FA00h,INT 16/AX=FA00h
  48543. --------D-21FB-------------------------------
  48544. INT 21 - DOS v2.11 - OEM FUNCTION
  48545.     AH = FBh
  48546. SeeAlso: AH=F8h"OEM",AH=FAh"OEM",AH=FCh"OEM"
  48547. --------T-21FB-------------------------------
  48548. INT 21 - DoubleDOS - TURN ON TASK SWITCHING
  48549.     AH = FBh
  48550. Return: task switching turned on
  48551. SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
  48552. SeeAlso: INT FB"DoubleDOS"
  48553. --------v-21FB-------------------------------
  48554. INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
  48555.     AH = FBh
  48556. Return: AH = 00h if resident
  48557. SeeAlso: AH=F7h"VIRUS",AX=FB0Ah
  48558. --------v-21FB0A-----------------------------
  48559. INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
  48560.     AX = FB0Ah
  48561. Return: AX = 0AFBh if resident
  48562. SeeAlso: AH=FBh"VIRUS",AH=FCh"VIRUS"
  48563. --------D-21FC-------------------------------
  48564. INT 21 - DOS v2.11 - OEM FUNCTION
  48565.     AH = FCh
  48566. SeeAlso: AH=F8h"OEM",AH=FBh"OEM",AH=FDh"OEM"
  48567. --------T-21FC-------------------------------
  48568. INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
  48569.     AH = FCh
  48570. Return: ES = segment of virtual screen
  48571. Desc:    Determine the address of the virtual screen to which the program
  48572.       should write instead of the actual video memory, so that the
  48573.       multitasked programs do not interfere with each other's output.
  48574. Notes:    screen address can change if task-switching is on!!
  48575.     identical to AH=ECh
  48576. SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"
  48577. --------v-21FC-------------------------------
  48578. INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
  48579.     AH = FCh
  48580. Return: AL = A5h if resident
  48581. SeeAlso: AX=FB0Ah"VIRUS",AH=FDh"VIRUS"
  48582. --------D-21FD-------------------------------
  48583. INT 21 - DOS v2.11 - OEM FUNCTION
  48584.     AH = FDh
  48585. SeeAlso: AH=F8h"OEM",AH=FCh"OEM",AH=FEh"OEM"
  48586. --------v-21FD-------------------------------
  48587. INT 21 - VIRUS - "Border" - INSTALLATION CHECK
  48588.     AH = FDh
  48589. Return: AH = 13h if resident
  48590. SeeAlso: AH=FCh"VIRUS",AH=FEh"VIRUS"
  48591. --------s-21FD12BX3457-----------------------
  48592. INT 21 - Gravis UltraSound - MegaEm - INSTALLATION CHECK
  48593.     AX = FD12h
  48594.     BX = 3457h
  48595. Return: AX = 5678h if installed
  48596.     BX = 1235h if installed
  48597. Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
  48598.       emulator for the Gravis UltraSound
  48599. SeeAlso: INT 2F/AX=CD00h/BX=464Fh,INT 7E/AX=00FEh"SBOS"
  48600. --------D-21FE-------------------------------
  48601. INT 21 - DOS v2.11 - OEM FUNCTION
  48602.     AH = FEh
  48603. SeeAlso: AH=F8h"OEM",AH=FDh"OEM",AH=FFh"OEM"
  48604. --------T-21FE-------------------------------
  48605. INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
  48606.     AH = FEh
  48607.     AL = number of 55ms time slices to give away
  48608. Return: returns after giving away time slices
  48609. SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  48610. --------v-21FE-------------------------------
  48611. INT 21 - VIRUS - "483" - INSTALLATION CHECK
  48612.     AH = FEh
  48613. Return: AH = 00h if resident
  48614. SeeAlso: AH=FDh"VIRUS",AX=FE01h
  48615. --------v-21FE01-----------------------------
  48616. INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
  48617.     AX = FE01h
  48618. Return: AX = 01FEh if resident
  48619. SeeAlso: AH=FEh"VIRUS",AX=FE02h
  48620. --------v-21FE02-----------------------------
  48621. INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
  48622.     AX = FE02h
  48623. Return: AX = 01FDh if resident
  48624. SeeAlso: AX=FE01h,AX=FE03h,AX=FEDCh"VIRUS"
  48625. --------v-21FE03-----------------------------
  48626. INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
  48627.     AX = FE03h
  48628. SeeAlso: AX=FE02h
  48629. --------d-21FEDC-----------------------------
  48630. INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
  48631.     AX = FEDCh
  48632. Return: AX = CDEFh if installed
  48633. Program: the PCMANAGE/DCOMPRES combination from PC Magazine permits
  48634.       infrequently-used files to be compressed to save space and
  48635.       transparently expanded when accessed
  48636. SeeAlso: AH=DCh,INT 2D/AL=10h"dLite"
  48637. --------v-21FEDC-----------------------------
  48638. INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
  48639.     AX = FEDCh
  48640. Return: AL = DCh if resident
  48641. SeeAlso: AX=FE02h,AX=FEFEh
  48642. --------v-21FEFE-----------------------------
  48643. INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
  48644.     AX = FEFEh
  48645. Return: SI = 1994h if resident
  48646. SeeAlso: AX=FEDCh"VIRUS",AH=FFh"VIRUS"
  48647. --------D-21FF-------------------------------
  48648. INT 21 - DOS v2.11 - OEM FUNCTION
  48649.     AH = FFh
  48650. SeeAlso: AH=F8h"OEM",AH=FEh"OEM"
  48651. --------K-21FF-------------------------------
  48652. INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
  48653.     AH = FFh
  48654.     AL = subfunction
  48655.         00h add installable command
  48656.         BL = mode
  48657.             bit 0 = 1 callable from DOS prompt
  48658.             bit 1 = 1 callable from application
  48659.         DS:SI -> CR-terminated command name
  48660.         ES:DI -> FAR routine entry point
  48661.         01h remove installable command
  48662.         DS:SI -> CR-terminated command name
  48663.         02h reserved, may be used to test for CED installation
  48664. Return: CF clear if successful
  48665.     CF set on error
  48666.         AX = error code
  48667.         01h invalid function
  48668.         02h command not found (subfunction 01h only)
  48669.         08h insufficient memory (subfunction 00h only)
  48670.         0Eh bad data (subfunction 00h only)
  48671.     AH = FFh if CED not installed
  48672. Program: CED is a shareware DOS command-line enhancer by Christopher J. Dunford
  48673. SeeAlso: AX=0A00h
  48674. --------E-21FF-------------------------------
  48675. INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
  48676.     AH = FFh
  48677.     AL = function
  48678.         01h create file
  48679.         02h open file
  48680.         03h get file statistics
  48681.         04h get time of day
  48682.         05h set time of day
  48683.         06h stat
  48684.         07h system
  48685. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  48686.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  48687. SeeAlso: INT 10/AH=FFh"GO32"
  48688. --------K-21FF-------------------------------
  48689. INT 21 - DOSED.COM - INSTALLATION CHECK
  48690.     AH = FFh
  48691.     DS:SI -> "DOSED"
  48692.     ES = 0000h
  48693. Return: ES:DI -> "DOSED" if installed
  48694. Program: DOSED is a free DOS commandline editor/history buffer by Sverre H.
  48695.       Huseby
  48696. --------v-21FF-------------------------------
  48697. INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
  48698.     AH = FFh
  48699. Return: AH = 00h if "Tumen 0.5" or "Hero" resident
  48700.     AX = 0400h if "Sunday" resident
  48701. SeeAlso: AX=FEDCh"VIRUS",AX=FF0Fh
  48702. --------E-21FF-------------------------------
  48703. INT 21 UP - Rational Systems DOS/4GW - API
  48704.     AH = FFh
  48705.     DH = function (00h-17h) (see also separate entries below)
  48706.     DL = subfunction or argument
  48707. Return: CF clear if valid function number
  48708.         AX = status???
  48709.     CF set if invalid function
  48710. SeeAlso: INT 15/AX=BFDCh
  48711. --------E-21FF--DH02-------------------------
  48712. INT 21 UP - Rational Systems DOS/4GW - SET ???
  48713.     AH = FFh
  48714.     DH = 02h
  48715.     DL = ???
  48716. Return: CF clear
  48717. --------E-21FF--DH05-------------------------
  48718. INT 21 UP - Rational Systems DOS/4GW - ???
  48719.     AH = FFh
  48720.     DH = 05h
  48721.     BX = ???
  48722. Return: ???
  48723. --------E-21FF--DH06-------------------------
  48724. INT 21 UP - Rational Systems DOS/4GW - ???
  48725.     AH = FFh
  48726.     DH = 06h
  48727.     BX = ???
  48728. Return: ???
  48729. --------E-21FF--DH07-------------------------
  48730. INT 21 UP - Rational Systems DOS/4GW - ???
  48731.     AH = FFh
  48732.     DH = 07h
  48733.     BX = ???
  48734. Return: ???
  48735. --------E-21FF--DH08-------------------------
  48736. INT 21 UP - Rational Systems DOS/4GW - ???
  48737.     AH = FFh
  48738.     DH = 08h
  48739.     BX = ???
  48740.     CX = ???
  48741.     ES = ???
  48742. Return: ???
  48743. --------E-21FF--DH09-------------------------
  48744. INT 21 UP - Rational Systems DOS/4GW - GET ???
  48745.     AH = FFh
  48746.     DH = 09h
  48747. Return: ES:BX -> ???
  48748. --------E-21FF--DH0A-------------------------
  48749. INT 21 UP - Rational Systems DOS/4GW - ???
  48750.     AH = FFh
  48751.     DH = 0Ah
  48752.     AL = ???
  48753.     BX = ???
  48754.     CX = ???
  48755. Return: ES = ??? or 0000h
  48756. --------E-21FF--DH0B-------------------------
  48757. INT 21 UP - Rational Systems DOS/4GW - ???
  48758.     AH = FFh
  48759.     DH = 0Bh
  48760.     AL = ???
  48761.     BX = ???
  48762.     CX = ???
  48763. Return: ???
  48764. --------E-21FF--DH0C-------------------------
  48765. INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
  48766.     AH = FFh
  48767.     DH = 0Ch
  48768.     DL = ??? (00h or 01h)
  48769. Return: CF clear if successful
  48770.         AL = previous value of ???
  48771.     CF set on error (DL out of range)
  48772.         AX = FFFFh
  48773. --------E-21FF--DH0D-------------------------
  48774. INT 21 UP - Rational Systems DOS/4GW - ???
  48775.     AH = FFh
  48776.     DH = 0Dh
  48777.     ???
  48778. Return: ???
  48779. --------E-21FF--DH0E-------------------------
  48780. INT 21 UP - Rational Systems DOS/4GW - ???
  48781.     AH = FFh
  48782.     DH = 0Eh
  48783. Return: DX:AX -> XBRK structure (see INT 15/AX=BF02h)
  48784.     BX = ???
  48785.     CX = ???
  48786. SeeAlso: INT 15/AX=BF02h
  48787. --------E-21FF--DH0F-------------------------
  48788. INT 21 UP - Rational Systems DOS/4GW - ???
  48789.     AH = FFh
  48790.     DH = 0Fh
  48791.     ???
  48792. Return: ???
  48793. --------E-21FF--DH10-------------------------
  48794. INT 21 UP - Rational Systems DOS/4GW - ???
  48795.     AH = FFh
  48796.     DH = 10h
  48797.     AL = ???
  48798.     BX = ???
  48799.     CX = ???
  48800.     DI = ???
  48801.     SI = ???
  48802. Return: ???
  48803. Note:    among other things, frees two memory blocks via INT 21/AH=49h
  48804. --------E-21FF--DH11-------------------------
  48805. INT 21 UP - Rational Systems DOS/4GW - NOP
  48806.     AH = FFh
  48807.     DH = 11h
  48808. --------E-21FF--DH12-------------------------
  48809. INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
  48810.     AH = FFh
  48811.     DH = 12h
  48812.     DS:SI -> new ???
  48813.     ES:DI -> new ???
  48814. Return: DS:SI -> previous ???
  48815.     ES:DI -> previous ???
  48816. --------E-21FF--DH13-------------------------
  48817. INT 21 UP - Rational Systems DOS/4GW - ???
  48818.     AH = FFh
  48819.     DH = 13h
  48820.     AL = ???
  48821.     ES = ???
  48822. Return: ???
  48823. --------E-21FF--DH14-------------------------
  48824. INT 21 UP - Rational Systems DOS/4GW - ???
  48825.     AH = FFh
  48826.     DH = 14h
  48827.     BX = ???
  48828.     CX = ???
  48829. Return: CF clear
  48830.         AX = ???
  48831.         DX = ???
  48832. --------E-21FF--DH15-------------------------
  48833. INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
  48834.     AH = FFh
  48835.     DH = 15h
  48836. Return: CF clear
  48837.         DX:AX -> FAR function for ???
  48838.         CX:BX -> FAR function for ???
  48839.         SI:DI -> FAR function for ???
  48840. --------E-21FF--DH16-------------------------
  48841. INT 21 UP - Rational Systems DOS/4GW - GET ???
  48842.     AH = FFh
  48843.     DH = 16h
  48844. Return: AX = ???
  48845. --------E-21FF--DH17-------------------------
  48846. INT 21 UP - Rational Systems DOS/4GW - ???
  48847.     AH = FFh
  48848.     DH = 17h
  48849.     AL = ???
  48850.     DL = ???
  48851. Return: ???
  48852. --------N-21FF00-----------------------------
  48853. INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
  48854.     AX = FF00h
  48855.     CL = what to get
  48856.         00h user information
  48857.         01h drive mapping
  48858.         02h printer server(s)
  48859.         05h local DOS drive number
  48860. Return: ES:BX -> desired information (see #1226)
  48861. Program: TopWare Network Operating System is manufactured by Grand Computer
  48862.       Company
  48863. Note:    this call is only supported on Workstations, not on the server
  48864. SeeAlso: AX=FF04h,INT 2F/AX=FF00h
  48865.  
  48866. Format of TopWare user information:
  48867. Offset    Size    Description    (Table 1226)
  48868.  00h    BYTE    node ID
  48869.  01h 15 BYTEs    user name
  48870.  10h    WORD    user number
  48871.  12h    BYTE    group number
  48872.  
  48873. Format of TopWare drive mapping [array]:
  48874. Offset    Size    Description    (Table 1227)
  48875.  00h    BYTE    bits 6-0: drive number (1=A:, etc.)
  48876.         bit 7: this is a server drive
  48877.  01h  3 BYTEs    mapping drive (for example, "C:\")
  48878.  04h 64 BYTEs    current directory
  48879. --------E-21FF00DX0078-----------------------
  48880. INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
  48881.     AX = FF00h
  48882.     DX = 0078h
  48883. Return: AL <> 00h if installed
  48884.         GS = segment of kernel if nonzero
  48885. SeeAlso: INT 15/AX=BF02h
  48886. --------N-21FF04-----------------------------
  48887. INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
  48888.     AX = FF04h
  48889.     CL = function
  48890.         00h get protections
  48891.         Return: BH = read attribute
  48892.             BL = write attribute
  48893.         01h set protections
  48894.         BH = read attribute
  48895.         BL = write attribute
  48896. Note:    this function is supported only on Workstations, not on the server
  48897. SeeAlso: AX=FF00h"TopWare"
  48898. --------v-21FF0F-----------------------------
  48899. INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
  48900.     AX = FF0Fh
  48901. Return: AX = 0101h if resident
  48902. Program: FLU_SHOT+ is an antivirus/antitrojan program by Ross M. Greenberg and
  48903.       Software Concepts Design
  48904. Note:    the "PSQR/1720" virus calls this function to determine whether
  48905.       FLU_SHOT+ is present
  48906. SeeAlso: AH=FFh"VIRUS",AX=FF10h
  48907. --------v-21FF10-----------------------------
  48908. INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
  48909.     AX = FF10h
  48910. Return: AL = 07h if resident
  48911. SeeAlso: AX=FF0Fh,AX=FFFEh
  48912. --------N-21FF80DHFF-------------------------
  48913. INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
  48914.     AX = FF80h
  48915.     DH = FFh
  48916.     DL = destination address (FFh for broadcast)
  48917.     CX = message length (max 2000)
  48918.     DS:SI -> message to be sent (see #1228)
  48919. Return: nothing
  48920. Program: TopWare Network Operating System is manufactured by Grand Computer
  48921.       Company
  48922. Notes:    this function is supported on both Workstations and the server
  48923.     there is no guarantee that the message will be received correctly, or
  48924.       at all, by the destination
  48925.  
  48926. Format of TopWare message:
  48927. Offset    Size    Description    (Table 1228)
  48928.  00h    BYTE    type code
  48929.         07h TopSend
  48930.         11h user application
  48931.         other reserved for TopWare
  48932.  01h    var    data
  48933. Note:    sending messages with a type code other than 11h will cause
  48934.       unpredictable results
  48935. --------N-21FF82-----------------------------
  48936. INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
  48937.     AX = FF82h
  48938. Return: AL = station address
  48939. Note:    this function is supported on both Workstations and the server
  48940. SeeAlso: AX=FF91h
  48941. --------N-21FF8C-----------------------------
  48942. INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
  48943.     AX = FF8Ch
  48944.     BL = subfunction
  48945.         00h get TopShow status
  48946.         FFh get Emulated status
  48947. Return: AL = status
  48948.         00h not installed
  48949.         01h already installed
  48950. --------N-21FF8D-----------------------------
  48951. INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
  48952.     AX = FF8Dh
  48953.     CH = monochrome flag (01h monochrome, 00h not monochrome)
  48954.     CL = screen mode of station to be viewed (see #1229)
  48955.     BL = graphic page number for monochrome
  48956. Return: AL = status (00h successful, else failed)
  48957. SeeAlso: AX=FF8Eh,AX=FFCFh
  48958.  
  48959. (Table 1229)
  48960. Values for TopWare screen mode:
  48961.  00h    text mode
  48962.  01h    720x348
  48963.  02h    640x408
  48964.  03h    720x352
  48965.  04h    640x390
  48966.  05h    reserved
  48967. --------N-21FF8E-----------------------------
  48968. INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
  48969.     AX = FF8Eh
  48970. Return: AL = 00h (successful, TopShow removed)
  48971. SeeAlso: AX=FF8Dh
  48972. --------N-21FF91-----------------------------
  48973. INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
  48974.     AX = FF91h
  48975. Return: AL = station number of file server
  48976. SeeAlso: AX=FF82h
  48977. --------N-21FF97-----------------------------
  48978. INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
  48979.     AX = FF97h
  48980. Return: AL = maximum station number
  48981. SeeAlso: AX=FF98h
  48982. --------N-21FF98-----------------------------
  48983. INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
  48984.     AX = FF98h
  48985. Return: AL = maximum file
  48986. SeeAlso: AX=FF97h
  48987. --------N-21FF9A-----------------------------
  48988. INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
  48989.     AX = FF9Ah
  48990.     ES:BX -> buffer for user-defined packet (see #1230)
  48991. Return: nothing
  48992.  
  48993. Format of TopWare user-defined packet:
  48994. Offset    Size    Description    (Table 1230)
  48995.  00h    BYTE    FFh
  48996.  01h    WORD    (call) length of data field plus 3
  48997.         (return) length of received message (0000h if none received)
  48998.  03h    BYTE    destination ID (FFh for broadcast message)
  48999.  04h    BYTE    sending station ID
  49000.  05h    BYTE    type code (11h; all other codes reserved for TopWare)
  49001.  06h  N BYTEs    received message
  49002. --------N-21FF9F-----------------------------
  49003. INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
  49004.     AX = FF9Fh
  49005.     CL = new state (00h disable [disregard TopTerm packets], 01h enable)
  49006. Return: AL = status (00h successful, FFh failed)
  49007. Note:    this function is only supported by Workstations, not the server
  49008. --------N-21FFB0-----------------------------
  49009. INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
  49010.     AX = FFB0h
  49011. Return: AL = priority status (see #1231)
  49012. SeeAlso: AX=FFB1h
  49013.  
  49014. Bitfields for TopWare printer priority status:
  49015. Bit(s)    Description    (Table 1231)
  49016.  2    LPT3 has high priority
  49017.  1    LPT2 has high priority
  49018.  0    LPT1 has high priority
  49019. --------N-21FFB1-----------------------------
  49020. INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
  49021.     AX = FFB1h
  49022.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49023.     CH = new priority (00h normal, 01h high)
  49024. Return: nothing
  49025. SeeAlso: AX=FFB0h
  49026. --------N-21FFB3-----------------------------
  49027. INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
  49028.     AX = FFB3h
  49029. Return: AL = starting formfeed status (see #1232)
  49030. SeeAlso: AX=FFB4h,AX=FFC0h
  49031.  
  49032. Bitfields for TopWare printer start-of-job formfeed status:
  49033. Bit(s)    Description    (Table 1232)
  49034.  2    LPT3 has formfeed enabled
  49035.  1    LPT2 has formfeed enabled
  49036.  0    LPT1 has formfeed enabled
  49037. --------N-21FFB4-----------------------------
  49038. INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
  49039.     AX = FFB4h
  49040.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49041.     CH = new formfeed status (00h off, 01h on)
  49042. Return: nothing
  49043. SeeAlso: AX=FFB3h,AX=FFC1h
  49044. --------N-21FFBB-----------------------------
  49045. INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
  49046.     AX = FFBBh
  49047.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49048. Return: AL = current mapping printer server station number
  49049.         00h if local
  49050. SeeAlso: AX=FFBCh
  49051. --------N-21FFBC-----------------------------
  49052. INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
  49053.     AX = FFBCh
  49054.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49055.     CL = printer server station address or 00h for local printer
  49056. Return: AL = status (00h successful, else failed)
  49057. SeeAlso: AX=FFBBh
  49058. --------N-21FFBD-----------------------------
  49059. INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
  49060.     AX = FFBDh
  49061.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49062. Return: AX = current AutoPrint timeout in clock ticks
  49063. SeeAlso: AX=FFBEh
  49064. --------N-21FFBE-----------------------------
  49065. INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
  49066.     AX = FFBEh
  49067.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49068.     BX = timeout in clock ticks
  49069. SeeAlso: AX=FFBDh
  49070. --------N-21FFBF-----------------------------
  49071. INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
  49072.     AX = FFBFh
  49073.     DX:BX -> buffer for logon information (see #1233)
  49074. Return: AL = status (00h successful, else failed)
  49075.     AH = number of logged-in stations
  49076.  
  49077. Format of TopWare logon information:
  49078. Offset    Size    Description    (Table 1233)
  49079.  00h    BYTE    station address
  49080.  01h 15 BYTEs    username
  49081. --------N-21FFC0-----------------------------
  49082. INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
  49083.     AX = FFC0h
  49084. Return: AL = ending formfeed status (see #1234)
  49085. SeeAlso: AX=FFB3h,AX=FFC1h
  49086.  
  49087. Bitfields for TopWare printer end-of-job formfeed status:
  49088. Bit(s)    Description    (Table 1234)
  49089.  2    LPT3 has formfeed enabled
  49090.  1    LPT2 has formfeed enabled
  49091.  0    LPT1 has formfeed enabled
  49092. --------N-21FFC1-----------------------------
  49093. INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
  49094.     AX = FFC1h
  49095.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49096.     CH = new formfeed status (00h off, 01h on)
  49097. Return: nothing
  49098. SeeAlso: AX=FFB4h,AX=FFC0h
  49099. --------N-21FFC2-----------------------------
  49100. INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
  49101.     AX = FFC2h
  49102.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49103. Return: AL = default number of copies printed
  49104. SeeAlso: AX=FFC7h
  49105. --------N-21FFC3-----------------------------
  49106. INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
  49107.     AX = FFC3h
  49108. Return: AL = sharing status of printers (see #1235)
  49109.         FFh if not a printer server
  49110.  
  49111. Bitfields for TopWare printer sharing status:
  49112. Bit(s)    Description    (Table 1235)
  49113.  2    LPT3 is shared
  49114.  1    LPT2 is shared
  49115.  0    LPT1 is shared
  49116. --------N-21FFC4-----------------------------
  49117. INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
  49118.     AX = FFC4h
  49119.     BL = subfunction
  49120.         00h get
  49121.         Return: AL = mapped printer port on print server
  49122.         01h set
  49123.         CL = network printer port (00h LPT1, 01h LPT2, 02h LPT3)
  49124.     CH = local printer (00h LPT1, 01h LPT2, 02h LPT3)
  49125. --------N-21FFC6-----------------------------
  49126. INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
  49127.     AX = FFC6h
  49128.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49129.     CL = header state (00h off, 01h on)
  49130. SeeAlso: AX=FFC8h
  49131. --------N-21FFC7-----------------------------
  49132. INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
  49133.     AX = FFC7h
  49134.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49135.     CL = new default number of copies to print
  49136. SeeAlso: AX=FFC2h
  49137. --------N-21FFC8-----------------------------
  49138. INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
  49139.     AX = FFC8h
  49140. Return: AL = header status for printers (see #1236)
  49141. SeeAlso: AX=FFC6h
  49142.  
  49143. Bitfields for TopWare print header status:
  49144. Bit(s)    Description    (Table 1236)
  49145.  2    LPT3 has headers enabled
  49146.  1    LPT2 has headers enabled
  49147.  0    LPT1 has headers enabled
  49148. --------N-21FFC9-----------------------------
  49149. INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
  49150.     AX = FFC9h
  49151.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49152.     CL = new sharing state (00h off, 01h on)
  49153. Return: AL = status (00h successful, FFh not printer server)
  49154. --------N-21FFCA-----------------------------
  49155. INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
  49156.     AX = FFCAh
  49157.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49158.     CL = original printer server station address
  49159.     BL = target printer server station address
  49160.     DS:DX -> filename (12 bytes)
  49161. Return: AL = status (00h successful, else failed)
  49162. SeeAlso: AX=FFCBh
  49163. --------N-21FFCB-----------------------------
  49164. INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
  49165.     AX = FFCBh
  49166.     CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
  49167.     CL = printer server station address
  49168.     DS:DX -> filename (12 bytes)
  49169. Return: AL = status (00h successful, else failed)
  49170. SeeAlso: AX=FFCAh
  49171. --------N-21FFCC-----------------------------
  49172. INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
  49173.     AX = FFCCh
  49174.     CL = printer server station address
  49175.     BH = start item number of spooling file for print server
  49176.     BL = number of the item to be retrieved
  49177.     DS:DX -> buffer for queued file information (see #1237)
  49178. Return: AL = status
  49179.         00h successful
  49180.         AH = number of spool files
  49181.         DS:DX buffer filled
  49182.         nonzero failed
  49183.  
  49184. Format of TopWare queued file information buffer [16-item array, one element]:
  49185. Offset    Size    Description    (Table 1237)
  49186.  00h 12 BYTEs    filename
  49187.  0Ch    DWORD    size
  49188.  10h    WORD    date
  49189.  12h    WORD    time
  49190.  14h 15 BYTEs    username
  49191.  23h    BYTE    count
  49192.  24h    BYTE    flag: header
  49193.  25h    BYTE    print number
  49194. --------N-21FFCD-----------------------------
  49195. INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
  49196.     AX = FFCDh
  49197.     DS:DX -> buffer for server status (see #1238)
  49198. Return: AL = status
  49199.         00h successful
  49200.         AH = number of print servers
  49201.         nonzero failed
  49202.  
  49203. Format of TopWare server status:
  49204. Offset    Size    Description    (Table 1238)
  49205.  00h    BYTE    station address
  49206.  01h 15 BYTEs    username
  49207.  10h    BYTE    flag: 01h printer is shared, 00h sharing disabled
  49208.  11h    BYTE    number of files pending in queue
  49209. --------N-21FFCF-----------------------------
  49210. INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
  49211.     AX = FFCFh
  49212.     DH = page number (0-2, 2 is text mode)
  49213.     DL = type
  49214.         00h look at specific screen
  49215.         01h AutoLook on
  49216.         FFh AutoLook off
  49217.     BH = station number wishing to look
  49218.     BL = station number to be looked at
  49219.     CH = monochrome flag (01h monochrome, 00h not monochrome)
  49220.     CL = screen mode (see #1229)
  49221. Return: AL = status (00h successful, nonzero failed)
  49222. SeeAlso: AX=FF8Dh
  49223. --------N-21FFD6-----------------------------
  49224. INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
  49225.     AX = FFD6h
  49226.     ES:BX -> 12-byte buffer for keycard serial number
  49227. Return: CX = maximum number of users
  49228.     ES:BX buffer filled
  49229. --------N-21FFD7-----------------------------
  49230. INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
  49231.     AX = FFD7h
  49232. Return: AL = status (00h disabled, 01h enabled)
  49233. --------N-21FFE3DL00-------------------------
  49234. INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
  49235.     AX = FFE3h
  49236.     DL = 00h
  49237.     BX = packet type for Ethernet header (IP = 0800h, ARP = 0806h, etc.)
  49238.     ES:DI -> receive routine (see #1240)
  49239. Return: CF clear if successful
  49240.         AX = handle number
  49241.     CF set on error
  49242.         DH = error code (03h,05h,09h,0Ah,11h) (see #1239)
  49243. SeeAlso: AX=FFE3h/DL=01h
  49244.  
  49245. (Table 1239)
  49246. Values for TopWare error code:
  49247.  01h    invalid handle
  49248.  03h    no interfaces of the specified type found
  49249.  05h    bad packet type
  49250.  09h    insufficient space
  49251.  0Ah    type already being accessed
  49252.  0Ch    unable to send packet (usually hardware error)
  49253.  11h    invalid function
  49254.  
  49255. (Table 1240)
  49256. Values TopWare receive routine is called with:
  49257.     AX = function
  49258.         0000h request packet buffer
  49259.         CX = packet size
  49260.         Return: ES:DI -> buffer or 0000h:0000h to discard packet
  49261.         0001h packet copied
  49262.         CX = packet size
  49263.         DS:SI -> copied packet (same as returned ES:DI above)
  49264. --------N-21FFE3DL01-------------------------
  49265. INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
  49266.     AX = FFE3h
  49267.     DL = 01h
  49268.     BX = handle returned by AX=FFE3h/DL=00h
  49269. Return: CF clear if successful
  49270.     CF set on error
  49271.         DH = error code (01h,11h) (see #1239)
  49272. Note:    the specified access handle will no longer be valid after this call
  49273. SeeAlso: AX=FFE3h/DL=00h
  49274. --------N-21FFE3DL02-------------------------
  49275. INT 21 - TopWare Network OS v5.10+ - SEND PACKET
  49276.     AX = FFE3h
  49277.     DL = 02h
  49278.     CX = length of data buffer
  49279.     DS:SI -> buffer containing data
  49280. Return: CF clear if successful
  49281.     CF set on error
  49282.         DH = error code (0Ch,11h) (see #1239)
  49283. --------N-21FFE3DL03-------------------------
  49284. INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
  49285.     AX = FFE3h
  49286.     DL = 03h
  49287.     ES:DI -> 6-byte buffer for address
  49288. SeeAlso: AX=FFE3h/DL=00h
  49289. --------v-21FFFE-----------------------------
  49290. INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
  49291.     AX = FFFEh
  49292. Return: AX = 0815h if resident
  49293. SeeAlso: AX=FF10h,AX=FFFFh
  49294. --------v-21FFFF-----------------------------
  49295. INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
  49296.     AX = FFFFh
  49297. Return: AX = 0000h if "Ontario" resident
  49298.     AX = 1992h if "Year 1992"/"B1M92" resident
  49299. SeeAlso: AX=FF0Fh,AX=FFFFh/CX=0000h,INT 6B"VIRUS"
  49300. --------v-21FFFFCX0000-----------------------
  49301. INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
  49302.     AX = FFFFh
  49303.     CX = 0000h
  49304. Return: CX = 0006h if resident
  49305. SeeAlso: AX=FFFFh,INT 6B"VIRUS"
  49306. --------D-22---------------------------------
  49307. INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS
  49308. Desc:    this vector specifies the address of the routine which is to be given
  49309.       control after a program is terminated; it should never be called
  49310.       directly, since it does not point at an interrupt handler
  49311. Notes:    this vector is restored from the DWORD at offset 0Ah in the PSP during
  49312.       termination, and then a FAR JMP is performed to the address in INT 22
  49313.     normally points at the instruction immediately following INT 21/AH=4Bh
  49314.       call which loaded the current program
  49315. SeeAlso: INT 20,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  49316. --------G-22---------------------------------
  49317. INT 22 - COMTROL HOSTESS i/ISA DEBUGGER - CHANGE FIRMWARE DEBUGGING PORT
  49318.     AL = new firmware debugging port
  49319. Return: ???
  49320. SeeAlso: INT 21"COMTROL",INT 23"COMTROL"
  49321. --------D-23---------------------------------
  49322. INT 23 - DOS 1+ - CONTROL-C/CONTROL-BREAK HANDLER
  49323. ---DOS 1.x---
  49324. Return: AH = 00h abort program
  49325.     if all registers preserved, restart DOS call
  49326. ---DOS 2+---
  49327.     CF clear
  49328. Return: all registers preserved
  49329.     return via RETF with CF set or (MS-DOS 1,DR-DOS) RETF 2 with CF set
  49330.         DOS will abort program with errorlevel 0
  49331.     else (RETF/RETF 2 with CF clear or IRET with CF ignored)
  49332.         interrupted DOS call is restarted
  49333. Notes:    this interrupt is invoked whenever DOS detects a ^C or ^Break; it
  49334.       should never be called directly
  49335.     MS-DOS 1.25 also invokes INT 23 on a divide overflow (INT 00)
  49336.     MS-DOS remembers the stack pointer before calling INT 23, and if it is
  49337.       not the same on return, pops and discards the top word; this is what
  49338.       permits a return with RETF as well as IRET or RETF 2
  49339.     MS-DOS 2.1+ ignores the returned CF if SP is the same on return as it
  49340.       was when DOS called INT 23, so RETF 2 will not terminate the program
  49341.     Novell DOS 7 always pops a word if CF is set on return, so one should
  49342.       not return with RETF 2 and CF set or IRET with the stored flags' CF
  49343.       set
  49344.     any DOS call may safely be made within the INT 23 handler, although
  49345.       the handler must check for a recursive invocation if it does
  49346.       call DOS
  49347. SeeAlso: INT 1B
  49348. --------G-23---------------------------------
  49349. INT 23 - COMTROL HOSTESS i/ISA DEBUGGER - GET CONFIGURATION INFORMATION
  49350.     AL = query type
  49351.         00h get old config map
  49352.         Return: AX = old config map
  49353.         01h get dual-ported RAM map
  49354.         Return: BX:AX = dual-ported RAM map
  49355.         02h get SCC port map
  49356.         Return: BX:AX = SCC port map
  49357. SeeAlso: INT 22"COMTROL",INT 26"COMTROL"
  49358. --------D-24---------------------------------
  49359. INT 24 C - DOS 1+ - CRITICAL ERROR HANDLER
  49360. Notes:    invoked when a critical (usually hardware) error is encountered; should
  49361.       never be called directly
  49362.     when DOS terminates a program, it copies the previous value of the
  49363.       INT 24 vector out of the PSP (see #0535) and into the interrupt
  49364.       vector table
  49365. SeeAlso: INT 21/AH=95h
  49366.  
  49367. (Table 1241)
  49368. Values critical error handler is called with:
  49369.     AH = type and processing flags (see #1242)
  49370.     AL = drive number if AH bit 7 clear
  49371.     BP:SI -> device driver header (BP:[SI+4] bit 15 set if char device)
  49372.     DI low byte contains error code if AH bit 7 set (see #1243)
  49373.     STACK:    DWORD    return address for INT 24 call
  49374.         WORD    flags pushed by INT 24
  49375.         WORD    original AX on entry to INT 21
  49376.         WORD    BX
  49377.         WORD    CX
  49378.         WORD    DX
  49379.         WORD    SI
  49380.         WORD    DI
  49381.         WORD    BP
  49382.         WORD    DS
  49383.         WORD    ES
  49384.         DWORD    return address for INT 21 call
  49385.         WORD    flags pushed by INT 21
  49386. Return:    AL = action code (see #1244)
  49387.     SS,SP,DS,ES,BX,CX,DX preserved
  49388. Notes:    the only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h
  49389.     if the handler returns to the application by popping the stack, DOS
  49390.       will be in an unstable state until the first call with AH > 0Ch
  49391.     for DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network
  49392.       critical errors
  49393.     if IGNORE specified but not allowed, it is turned into FAIL
  49394.     if RETRY specified but not allowed, it is turned into FAIL
  49395.     if FAIL specified but not allowed, it is turned into ABORT
  49396.     (DOS 3+) if a critical error occurs inside the critical error handler,
  49397.       the DOS call is automatically failed
  49398.  
  49399. Bitfields for critical error type and processing flags:
  49400. Bit(s)    Description    (Table 1242)
  49401.  7    clear = disk I/O error
  49402.     set   = -- if block device, bad FAT image in memory
  49403.         -- if char device, error code in DI
  49404.  6    unused
  49405.  5    Ignore allowed (DOS 3+)
  49406.  4    Retry allowed (DOS 3+)
  49407.  3    Fail allowed (DOS 3+)
  49408.  2-1    disk area of error
  49409.     00 = DOS area    01 = FAT
  49410.     10 = root dir    11 = data area
  49411.  0    set if write, clear if read
  49412.  
  49413. (Table 1243)
  49414. Values for critical error code:
  49415.  00h    write-protection violation attempted
  49416.  01h    unknown unit for driver
  49417.  02h    drive not ready
  49418.  03h    unknown command given to driver
  49419.  04h    data error (bad CRC)
  49420.  05h    bad device driver request structure length
  49421.  06h    seek error
  49422.  07h    unknown media type
  49423.  08h    sector not found
  49424.  09h    printer out of paper
  49425.  0Ah    write fault
  49426.  0Bh    read fault
  49427.  0Ch    general failure
  49428.  0Dh    (DOS 3+) sharing violation
  49429.  0Eh    (DOS 3+) lock violation
  49430.  0Fh    invalid disk change
  49431.  10h    (DOS 3+) FCB unavailable
  49432.  11h    (DOS 3+) sharing buffer overflow
  49433.  12h    (DOS 4+) code page mismatch
  49434.  13h    (DOS 4+) out of input
  49435.  14h    (DOS 4+) insufficient disk space
  49436.  
  49437. (Table 1244)
  49438. Values for critical error handler action code:
  49439.  00h    ignore error and continue processing request
  49440.  01h    retry operation
  49441.  02h    terminate program as though INT 21/AH=4Ch called (INT 20h for DOS 1.x)
  49442.  03h    fail system call in progress
  49443. --------D-25---------------------------------
  49444. INT 25 - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M)
  49445.     AL = drive number (00h = A:, 01h = B:, etc)
  49446.     CX = number of sectors to read (not FFFFh)
  49447.     DX = starting logical sector number (0000h - highest sector on drive)
  49448.     DS:BX -> buffer for data
  49449. Return: CF clear if successful
  49450.     CF set on error
  49451.         AH = status (see #1245)
  49452.         AL = error code (same as passed to INT 24 in DI)
  49453.         AX = 0207h if more than 64K sectors on drive -- use new-style call
  49454.     may destroy all other registers except segment registers
  49455. Notes:    original flags are left on stack, and must be popped by caller
  49456.     this call bypasses the DOS filesystem
  49457.     examination of CPWIN386.CPL indicates that if this call fails with
  49458.       error 0408h on an old-style (<32M) call, one should retry the
  49459.       call with the high bit of the drive number in AL set
  49460. BUGS:    DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
  49461.       invalid drive number
  49462.     DR-DOS 3.41 will return with a jump instead of RETF, leaving the
  49463.       wrong number of bytes on the stack; use the huge-partition version
  49464.       (INT 25/CX=FFFFh) for all partition sizes under DR-DOS 3.41
  49465. SeeAlso: INT 13/AH=02h,INT 25/CX=FFFFh,INT 26
  49466.  
  49467. (Table 1245)
  49468. Values for disk I/O status:
  49469.  80h    device failed to respond (timeout)
  49470.  40h    seek operation failed
  49471.  20h    controller failed
  49472.  10h    data error (bad CRC)
  49473.  08h    DMA failure
  49474.  04h    requested sector not found
  49475.  03h    write-protected disk (INT 26 only)
  49476.  02h    bad address mark
  49477.  01h    bad command
  49478. --------D-25----CXFFFF-----------------------
  49479. INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (>32M hard-disk partition)
  49480.     CX = FFFFh
  49481.     AL = drive number (0=A, 1=B, etc)
  49482.     DS:BX -> disk read packet (see #1246)
  49483. Return: CF clear if successful
  49484.     CF set on error
  49485.         AH = status (see #1245)
  49486.         AL = error code (same as passed to INT 24 in DI)
  49487.         AX = 0207h if more than 64K sectors on drive -- use new-style call
  49488.     may destroy all other registers except segment registers
  49489. Notes:    partition is potentially >32M (and requires this form of the call) if
  49490.       bit 1 of the device attribute word in the device driver is set
  49491.     original flags are left on stack, and must be removed by caller
  49492.     this call bypasses the DOS filesystem
  49493. SeeAlso: INT 13/AH=02h,INT 25,INT 26/CX=FFFFh
  49494.  
  49495. Format of disk read packet:
  49496. Offset    Size    Description    (Table 1246)
  49497.  00h    DWORD    sector number
  49498.  04h    WORD    number of sectors to read
  49499.  06h    DWORD    transfer address
  49500. --------k-25CDCD-----------------------------
  49501. INT 25 - Stacker - GET DEVICE DRIVER ADDRESS
  49502.     AX = CDCDh
  49503.     DS:BX -> buffer for address (see #1247)
  49504.     CX = 0001h
  49505.     DX = 0000h
  49506. Return: AX = CDCDh if Stacker installed
  49507.         DS:BX buffer filled
  49508.  
  49509. Format of Stacker driver address buffer:
  49510. Offset    Size    Description    (Table 1247)
  49511.  00h    WORD    signature CDCDh
  49512.  02h    WORD    ??? 0001h
  49513.  04h    DWORD    pointer to start of Stacker device driver (see #1248)
  49514.  
  49515. Format of Stacker device driver:
  49516. Offset    Size    Description    (Table 1248)
  49517.  00h    WORD    signature A55Ah
  49518.  02h    WORD    Stacker version * 64h
  49519.  04h    WORD    offset of volume-specific information offset table
  49520.         (list of WORDs, one per drive, containing offsets to various
  49521.           information)
  49522.  06h 56 BYTEs    n/a
  49523.  3Eh    BYTE    volume number, set after INT 21/AX=4404h
  49524.         (use to index into volume-specific info offset table)
  49525.  3Fh 19 BYTEs    n/a
  49526.  52h  4 BYTEs    ASCII string "SWAP"
  49527.  56h 26 BYTEs    drive mapping table (one byte for each drive A: through Z:)
  49528.  
  49529. Format of Stacker boot record:
  49530. Offset    Size    Description    (Table 1249)
  49531. 1F0h  8 BYTEs    Stacker signature (first byte is CDh)
  49532. 1F8h    DWORD    pointer to start of Stacker device driver
  49533. 1FCh    WORD    Stacker volume number
  49534. 1FEh    WORD    ???
  49535. --------c-25--FFSI4358-----------------------
  49536. INT 25 - PC-CACHE.SYS - INSTALLATION CHECK
  49537.     AL = FFh
  49538.     SI = 4358h
  49539. Return: SI = 6378h if installed
  49540.         CX = segment of device driver PC-CACHE.SYS
  49541.         DX = version (major in DH, minor in DL)
  49542. Program: PC-CACHE.SYS is a small device driver used by PC-Cache v5.x to obtain
  49543.       access to certain disk drivers for devices such as Bernoulli drives
  49544. SeeAlso: INT 13/AH=A0h
  49545. --------D-26---------------------------------
  49546. INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M)
  49547.     AL = drive number (00h = A:, 01h = B:, etc)
  49548.     CX = number of sectors to write (not FFFFh)
  49549.     DX = starting logical sector number (0000h - highest sector on drive)
  49550.     DS:BX -> data to write
  49551. Return: CF clear if successful
  49552.     CF set on error
  49553.         AH = status (see #1245)
  49554.         AL = error code (same as passed to INT 24 in DI)
  49555.         AX = 0207h if more than 64K sectors on drive -- use new-style call
  49556.     may destroy all other registers except segment registers
  49557. Notes:    original flags are left on stack, and must be popped by caller
  49558.     this call bypasses the DOS filesystem, though DOS 5+ invalidates any
  49559.       disk buffers referencing sectors which are written with this call
  49560.     examination of CPWIN386.CPL indicates that if this call fails with
  49561.       error 0408h on an old-style (<32M) call, one should retry the
  49562.       call with the high bit of the drive number in AL set
  49563. BUGS:    DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
  49564.       invalid drive number
  49565.     DR-DOS 3.41 will return with a jump instead of RETF, leaving the
  49566.       wrong number of bytes on the stack; use the huge-partition version
  49567.       (INT 26/CX=FFFFh) for all partition sizes under DR-DOS 3.41
  49568. SeeAlso: INT 13/AH=03h,INT 25,INT 26/CX=FFFFh
  49569. --------D-26----CXFFFF-----------------------
  49570. INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (>32M hard-disk partition)
  49571.     CX = FFFFh
  49572.     AL = drive number (0=A, 1=B, etc)
  49573.     DS:BX -> disk write packet (see #1250)
  49574. Return: CF clear if successful
  49575.     CF set on error
  49576.         AH = status (see #1245)
  49577.         AL = error code (same as passed to INT 24 in DI)
  49578.         AX = 0207h if more than 64K sectors on drive -- use new-style call
  49579.     may destroy all other registers except segment registers
  49580. Notes:    partition is potentially >32M (and requires this form of the call) if
  49581.       bit 1 of the device attribute word in the device driver is set
  49582.     original flags are left on stack, and must be removed by caller
  49583.     this call bypasses the DOS filesystem, though DOS 5+ invalidates any
  49584.       disk buffers referencing sectors which are written with this call
  49585. SeeAlso: INT 13/AH=03h,INT 25/CX=FFFFh,INT 26
  49586.  
  49587. Format of disk write packet:
  49588. Offset    Size    Description    (Table 1250)
  49589.  00h    DWORD    sector number
  49590.  04h    WORD    number of sectors to read
  49591.  06h    DWORD    transfer address
  49592. --------G-26---------------------------------
  49593. INT 26 - COMTROL HOSTESS i/ISA DEBUGGER - ENTER/EXIT EXTENDED ADDRESSING MODE
  49594.     ???
  49595. Return: ???
  49596. SeeAlso: INT 23"COMTROL",INT 27"COMTROL"
  49597. --------D-27---------------------------------
  49598. INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT
  49599.     DX = number of bytes to keep resident (max FFF0h)
  49600.     CS = segment of PSP
  49601. Return: never
  49602. Notes:    this is an obsolete call
  49603.     INT 22, INT 23, and INT 24 are restored from the PSP
  49604.     does not close any open files
  49605.     the minimum number of bytes which will remain resident is 110h for
  49606.       DOS 2.x and 60h for DOS 3+; there is no minimum for DOS 1.x, which
  49607.       implements this service in COMMAND.COM rather than the DOS kernel
  49608. SeeAlso: INT 21/AH=31h
  49609. --------G-27---------------------------------
  49610. INT 27 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE REMOTE TURBO DEBUGGER KERNEL
  49611.     ???
  49612. Return: ???
  49613. Desc:    invoke a copy of the remote Turbo Debugger kernel on the Hostess i
  49614.       controller
  49615. SeeAlso: INT 20"COMTROL",INT 26"COMTROL"
  49616. --------D-28---------------------------------
  49617. INT 28 C - DOS 2+ - DOS IDLE INTERRUPT
  49618.     SS:SP = top of MS-DOS stack for I/O functions
  49619. Return: all registers preserved
  49620. Desc:    This interrupt is invoked each time one of the DOS character input
  49621.       functions loops while waiting for input.  Since a DOS call is in
  49622.       progress even though DOS is actually idle during such input waits,
  49623.       hooking this function is necessary to allow a TSR to perform DOS
  49624.       calls while the foreground program is waiting for user input.     The
  49625.       INT 28h handler may invoke any INT 21h function except functions
  49626.       00h through 0Ch.
  49627. Notes:    under DOS 2.x, the critical error flag (the byte immediately after the
  49628.       InDOS flag) must be set in order to call DOS functions 50h/51h from
  49629.       the INT 28h handler without destroying the DOS stacks.
  49630.     calls to INT 21/AH=3Fh,40h from within an INT 28 handler may not use a
  49631.       handle which refers to CON
  49632.     at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally
  49633.       set to 01h; if larger, DOS is truly busy and should not be reentered
  49634.     the default handler is an IRET instruction
  49635.     supported in OS/2 compatibility box
  49636.     the _MS-DOS_Programmer's_Reference_ for DOS 5.0 incorrectly documents
  49637.       this interrupt as superseded
  49638. SeeAlso: INT 21/AH=34h,INT 2A/AH=84h,INT 2F/AX=1680h
  49639. --------D-29---------------------------------
  49640. INT 29 C - DOS 2+ - FAST CONSOLE OUTPUT
  49641.     AL = character to display
  49642. Return: nothing
  49643. Notes:    automatically called when writing to a device with bit 4 of its device
  49644.       driver header set (see also INT 21/AH=52h)
  49645.     COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20
  49646.       vector and assume that ANSI.SYS is installed if the segment is larger
  49647.     the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh
  49648.     the default handler under DESQview 2.2 understands the <Esc>[2J
  49649.       screen-clearing sequence, calls INT 10/AH=0Eh for all others
  49650. SeeAlso: INT 21/AH=52h,INT 2F/AX=0802h,INT 79
  49651. --------N-2A00-------------------------------
  49652. INT 2A - NETWORK (Microsoft, LANtastic) - INSTALLATION CHECK
  49653.     AH = 00h
  49654. Return: AH <> 00h if installed
  49655.     CF set if NetWare v2.15 NetBIOS emulator installed
  49656. Note:    also supported by Lantastic, NetWare, 10NET, etc.
  49657. SeeAlso: INT 5C
  49658. --------N-2A0000-----------------------------
  49659. INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK
  49660.     AX = 0000h
  49661. Return: AH = DDh
  49662. SeeAlso: INT 5B
  49663. --------N-2A01-------------------------------
  49664. INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NETBIOS REQUEST,NO ERROR RETRY
  49665.     AH = 01h
  49666.     ES:BX -> NCB (see INT 5C)
  49667. Return: AL = NetBIOS error code
  49668.     AH = status
  49669.         00h no error
  49670.         01h error occurred
  49671. SeeAlso: AH=04h,AX=0500h,INT 5B,INT 5C"NetBIOS"
  49672. --------N-2A02-------------------------------
  49673. INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE
  49674.     AH = 02h
  49675.     ???
  49676. Return: ???
  49677. --------N-2A0300-----------------------------
  49678. INT 2A - NETWORK (Microsoft,LANtastic) - CHECK DIRECT I/O
  49679.     AX = 0300h
  49680.     DS:SI -> ASCIZ device name (may be full path or only drive specifier--
  49681.           must include the colon)
  49682. Return: CF clear if direct physical addressing (INT 13,INT 25) permissible
  49683.     CF set if access via files only
  49684. Notes:    do not use direct disk accesses if this function returns CF set or the
  49685.       device is redirected (INT 21/AX=5F02h)
  49686.     may take some time to execute
  49687.     this function is called by the DOS kernel on INT 25 and INT 26
  49688.     also supported by Lantastic, NetWare, 10NET, etc.
  49689. SeeAlso: INT 13,INT 25,INT 26,INT 21/AX=5F02h
  49690. --------N-2A04-------------------------------
  49691. INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NetBIOS REQUEST
  49692.     AH = 04h
  49693.     AL = error retry
  49694.         00h automatically retry request on errors 09h, 12h, and 21h
  49695.         01h no retry
  49696.         02h ???
  49697.     ES:BX -> Network Control Block (see INT 5C"NetBIOS")
  49698. Return: AX = 0000h if successful
  49699.     AH = 01h on error
  49700.         AL = error code
  49701. Notes:    invokes either INT 5B or INT 5C as appropriate
  49702.     also supported by Lantastic, NetWare, 10NET, etc.
  49703.     NetWare 2.15 NetBIOS emulator returns CF clear if successful, CF set
  49704.       on error
  49705. SeeAlso: AH=01h,AX=0500h,INT 5B,INT 5C"NetBIOS"
  49706. --------N-2A0500-----------------------------
  49707. INT 2A - NETWORK (Microsoft,LANtastic) - GET NETWORK RESOURCE AVAILABILITY
  49708.     AX = 0500h
  49709. Return: AX reserved
  49710.     BX = number of network names available
  49711.     CX = number of network control blocks available
  49712.     DX = number of network sessions available
  49713. Note:    also supported by Lantastic, NetWare, 10NET, etc.
  49714. SeeAlso: AH=01h,AH=04h,INT 5C"NetBIOS"
  49715. --------N-2A06-------------------------------
  49716. INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL
  49717.     AH = 06h
  49718.     AL = function
  49719.         01h set concatenation mode (all printer output put in one job)
  49720.         02h set truncation mode (default)
  49721.         printer open/close starts new print job
  49722.         03h flush printer output and start new print job
  49723. Return: CF set on error
  49724.         AX = error code
  49725.     CF clear if successful
  49726. Notes:    subfunction 03h is equivalent to Ctrl/Alt/keypad-*
  49727.     also supported by LANtastic, NetWare, 10NET, etc.
  49728.     LANtastic v4.x no longer supports this call
  49729. SeeAlso: INT 21/AX=5D08h,INT 21/AX=5D09h,INT 2F/AX=1125h
  49730. --------N-2A07-------------------------------
  49731. INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
  49732.     AH = 07h
  49733.     ???
  49734. Return: ???
  49735. Program: PC Network is an early networking package which was renamed the
  49736.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  49737. SeeAlso: AH=86h
  49738. --------N-2A2001-----------------------------
  49739. INT 2A - MS Networks or NETBIOS - ???
  49740.     AX = 2001h
  49741.     ???
  49742. Return: ???
  49743. Note:    intercepted by DESQview 2.x
  49744. --------N-2A2002-----------------------------
  49745. INT 2A - NETWORK - ???
  49746.     AX = 2002h
  49747.     ???
  49748. Return: ???
  49749. Note:    called by MS-DOS 3.30-6.00 APPEND
  49750. --------N-2A2003-----------------------------
  49751. INT 2A - NETWORK - ???
  49752.     AX = 2003h
  49753.     ???
  49754. Return: ???
  49755. Note:    called by MS-DOS 3.30-6.00 APPEND
  49756. --------N-2A7802-----------------------------
  49757. INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME
  49758.     AX = 7802h
  49759.     ES:DI -> 8-byte buffer to be filled
  49760. Return: AL = 00h if no user logged on to Extended Services
  49761.     AL <> 00h if user logged on to Extended Services
  49762.         buffer at ES:DI filled with name, padded to 8 chars with blanks.
  49763. --------D-2A80-------------------------------
  49764. INT 2A CU - NETWORK - BEGIN DOS CRITICAL SECTION
  49765.     AH = 80h
  49766.     AL = critical section number (00h-0Fh) (see #1251)
  49767. Notes:    normally hooked to avoid interrupting a critical section, rather than
  49768.       called
  49769.     the handler should ensure that none of the critical sections are
  49770.       reentered, usually by suspending a task which attempts to reenter
  49771.       an active critical section
  49772.     the DOS kernel does not invoke critical sections 01h and 02h unless it
  49773.       is patched.  DOS 3.1+ contains a zero-terminated list of words
  49774.       beginning at offset -11 from the Swappable Data Area
  49775.       (see INT 21/AX=5D06h); each word contains the offset within the
  49776.       DOS data segment of a byte which must be changed from C3h (RET)
  49777.       to 50h (POP AX) under DOS 3.x or from 00h to a nonzero value under
  49778.       DOS 4+ to enable use of critical sections.  For DOS 4+, all words in
  49779.       this list point at the byte at offset 0D0Ch.
  49780. SeeAlso: AH=81h,AH=82h,AX=8700h,INT 21/AX=5D06h,INT 21/AX=5D0Bh
  49781.  
  49782. (Table 1251)
  49783. Values for DOS critical section number:
  49784.  01h    DOS kernel, SHARE.EXE, DOSMGR
  49785.     apparently for maintaining the integrity of DOS/SHARE/NET
  49786.       data structures
  49787.  02h    DOS kernel, DOSMGR
  49788.     ensures that no multitasking occurs while DOS is calling an
  49789.       installable device driver
  49790.  05h    network redirector
  49791.  06h    DOS 4.x only IFSFUNC
  49792.  08h    ASSIGN.COM
  49793.  0Ah    MSCDEX
  49794.  0Fh    IBM PC LAN server (while intercepting INT 10/AH=06h,07h,0Eh)
  49795. --------D-2A81-------------------------------
  49796. INT 2A CU - NETWORK - END DOS CRITICAL SECTION
  49797.     AH = 81h
  49798.     AL = critical section number (00h-0Fh) (see #1251)
  49799. Notes:    normally hooked rather than called
  49800.     the handler should reawaken any tasks which were suspended due to an
  49801.       attempt to enter the specified critical section
  49802. SeeAlso: AH=80h,AH=82h,AX=8700h
  49803. --------D-2A82-------------------------------
  49804. INT 2A CU - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7
  49805.     AH = 82h
  49806. Notes:    called by the INT 21h function dispatcher for function 0 and functions
  49807.       greater than 0Ch except 59h, and on process termination
  49808.     the handler should reawaken any tasks which were suspended due to an
  49809.       attempt to enter one of the critical sections 0 through 7
  49810. SeeAlso: AH=81h
  49811. --------N-2A84-------------------------------
  49812. INT 2A CU - NETWORK - KEYBOARD BUSY LOOP
  49813.     AH = 84h
  49814. Note:    similar to DOS's INT 28h, called from inside the DOS keyboard input
  49815.       loop (i.e. INT 21/AH=07h or INT 21/AH=08h) to allow the network
  49816.       software to process requests
  49817. SeeAlso: INT 28
  49818. --------N-2A86-------------------------------
  49819. INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
  49820.     AH = 86h
  49821.     ???
  49822. Return: ???
  49823. SeeAlso: AH=07h,AH=C4h
  49824. --------P-2A8700-----------------------------
  49825. INT 2A CU - PRINT - BEGIN BACKGROUND PRINTING
  49826.     AX = 8700h
  49827.     CF clear
  49828. Return: CF clear if OK to print in background now
  49829.     CF set if background printing not allowed at this time
  49830. Desc:    used to inform interested programs that PRINT is about to start its
  49831.       background processing, and allow those programs to postpone the
  49832.       processing if necessary
  49833. Notes:    when PRINT gains control and wants to begin printing, it calls this
  49834.       function.  If CF is clear on return, PRINT begins its background
  49835.       processing, and calls AX=8701h when it is done.  If CF is set on
  49836.       return, PRINT will relinquish control immediately, and will not
  49837.       call AX=8701h
  49838.     PCVENUS (an early network shell by IBM and CMU) hooks this call to
  49839.       prevent background printing while its own code is active
  49840. SeeAlso: AH=80h,AH=81h,AX=8701h
  49841. --------P-2A8701-----------------------------
  49842. INT 2A CU - PRINT - END BACKGROUND PRINTING
  49843.     AX = 8701h
  49844. Desc:    used to inform interested programs that PRINT has completed its
  49845.       background processing
  49846. Note:    called by PRINT after it has performed some background printing; not
  49847.       called if AX=8700h returned with CF set.
  49848. SeeAlso: AX=8700h
  49849. --------N-2A89-------------------------------
  49850. INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
  49851.     AH = 89h
  49852.     AL = ???  (ASSIGN uses 08h)
  49853.     ???
  49854. Return: ???
  49855. --------I-2A90-------------------------------
  49856. INT 2A U - IBM PC 3270 EMULATION PROGRAM - ???
  49857.     AH = 90h
  49858.     ???
  49859. Return: ???
  49860. Note:    the LANtastic redirector and SERVER.EXE use this function with AL=01h,
  49861.       03h-07h,0Ch-11h
  49862. --------N-2AC2-------------------------------
  49863. INT 2A U - Network - ???
  49864.     AH = C2h
  49865.     AL = subfunction
  49866.         07h ???
  49867.         08h ???
  49868.     BX = 0001h
  49869.     ???
  49870. Return: ???
  49871. Note:    this function is called by the DOS 3.30-6.00 APPEND
  49872. --------N-2AC4-------------------------------
  49873. INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
  49874.     AH = C4h
  49875.     AL = subfunction
  49876.         07h ???
  49877.         08h ???
  49878.     BX = ???
  49879.     ???
  49880. Return: ???
  49881. SeeAlso: AH=86h
  49882. --------N-2AD800-----------------------------
  49883. INT 2A U - Novell NetWare Lite - SERVER - SET ???
  49884.     AX = D800h
  49885. Return: nothing
  49886. Desc:    sets ??? flag, and sets ??? to initial value
  49887. Note:    called by CLIENT
  49888. SeeAlso: AX=D801h,AX=D850h
  49889. --------N-2AD801-----------------------------
  49890. INT 2A U - Novell NetWare Lite - SERVER - RESET ???
  49891.     AX = D801h
  49892. Return: nothing
  49893. Desc:    clears the ??? flag set by AX=D800h
  49894. Note:    called by CLIENT
  49895. SeeAlso: AX=D800h,AX=D850h
  49896. --------N-2AD850-----------------------------
  49897. INT 2A U - Novell NetWare Lite - CLIENT - INCREMENT ???
  49898.     AX = D850h
  49899. Return: nothing
  49900. Desc:    increments an internal byte-sized counter
  49901. Note:    this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
  49902.       Advanced NetWare 4.0 DOS Requester
  49903. SeeAlso: AX=D851h
  49904. --------N-2AD851-----------------------------
  49905. INT 2A U - Novell NetWare Lite - CLIENT - RESET ???
  49906.     AX = D851h
  49907. Return: nothing
  49908. Desc:    resets an internal byte-sized counter to zero
  49909. Note:    this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
  49910.       Advanced NetWare 4.0 DOS Requester
  49911. SeeAlso: AX=D850h
  49912. --------N-2AD852-----------------------------
  49913. INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
  49914.     AX = D852h
  49915. Return: ???
  49916. Note:    calls the NetWare Lite SERVER installation check, and sets ??? pointer
  49917. SeeAlso: AX=D853h,INT 2F/AX=D880h
  49918. --------N-2AD853-----------------------------
  49919. INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
  49920.     AX = D853h
  49921. Return: ???
  49922. Note:    clears the pointer set by AX=D852h
  49923. SeeAlso: AX=D852h
  49924. --------N-2AE0-------------------------------
  49925. INT 2A U - PC Network 1.00 - ???
  49926.     AH = E0h
  49927.     AL = subfunction??? (01h,02h, maybe others)
  49928.     ???
  49929. Return: ???
  49930. Note:    called by PCNet 1.00 NET.COM, a shell program from which others are run
  49931. --------N-2AFF90-----------------------------
  49932. INT 2A - PC/TCP PREDIR.EXE - ???
  49933.     AX = FF90h
  49934. Return: AX = ???
  49935. Note:    PREDIR.EXE is the network printer redirector included as part of the
  49936.       PC/TCP system by FTP Software, Inc.
  49937. --------N-2AFF91-----------------------------
  49938. INT 2A - PC/TCP PREDIR.EXE - ???
  49939.     AX = FF91h
  49940.     BX = ???
  49941. Return: AX = status???
  49942. --------N-2AFF92-----------------------------
  49943. INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK
  49944.     AX = FF92h
  49945. Return: AX = 0000h if installed
  49946.        BX = redirected printer port (FFFFh if no printers redirected)
  49947.        CX = version (CH = major, CL = minor)
  49948. Note:    PREDIR.EXE is the network printer redirector included as part of the
  49949.       PC/TCP system by FTP Software, Inc.
  49950. --------N-2AFF93-----------------------------
  49951. INT 2A - PC/TCP PREDIR.EXE - ???
  49952.     AX = FF93h
  49953. Return: AX = ???
  49954. --------N-2AFF94-----------------------------
  49955. INT 2A - PC/TCP PREDIR.EXE - ???
  49956.     AX = FF94h
  49957.     BX = ???
  49958.     CX = ???
  49959.     DX = ???
  49960. Return: AX = ???
  49961. Note:    PREDIR.EXE is the network printer redirector included as part of the
  49962.       PC/TCP system by FTP Software, Inc.
  49963. --------N-2AFF95-----------------------------
  49964. INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS
  49965.     AX = FF95h
  49966.     CX = what to get
  49967.         0000h ??? (returned pointer to "C:\COMMAND.COM")
  49968.         0001h spooling program
  49969.         0002h ???
  49970.         0003h spool file name
  49971.         0004h swap file name
  49972. Return: AX = status
  49973.         0000h successful
  49974.     BX:DX -> ASCIZ configuration string
  49975. --------N-2AFF96-----------------------------
  49976. INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION
  49977.     AX = FF96h
  49978.     CX = what to set
  49979.         0000h ???
  49980.         0001h print-on-hotkey state
  49981.         0002h print-on-exit state
  49982.         0003h print job timeout in clock ticks
  49983.         0004h print-on-EOF state
  49984.     BX = new value (0000h disabled, 0001h enabled except for timeout)
  49985. Return: AX = ???
  49986. SeeAlso: AX=FF97h
  49987. Note:    PREDIR.EXE is the network printer redirector included as part of the
  49988.       PC/TCP system by FTP Software, Inc.
  49989. --------N-2AFF97-----------------------------
  49990. INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION
  49991.     AX = FF97h
  49992.     CX = what to get
  49993.         0000h ???
  49994.         0001h print-on-hotkey state
  49995.         0002h print-on-exit state
  49996.         0003h print job timeout in clock ticks
  49997.         0004h print-on-EOF state
  49998. Return: AX = status
  49999.         0000h successful
  50000.     BX = old value (0000h disabled, 0001 enabled except for timeout)
  50001. SeeAlso: AX=FF96h
  50002. --------D-2B---------------------------------
  50003. INT 2B - DOS 2+ - RESERVED
  50004. Note:    this vector is not used in DOS versions <= 6.00, and points at an IRET
  50005. --------D-2C---------------------------------
  50006. INT 2C - DOS 2+ - RESERVED
  50007. Note:    this vector is not used in DOS versions <= 6.00, and points at an IRET
  50008. --------O-2C---------------------------------
  50009. INT 2C - STARLITE architecture - KERNEL API
  50010. Note:    STARLITE is an architecture by General Software for a series of MS-DOS
  50011.       compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to
  50012.       be released in 1991.    The interrupt number is subject to change
  50013.       before the actual release.
  50014. --------m-2C---------------------------------
  50015. INT 2C R - Cloaking - CALL PROTECTED-MODE PASSALONG CHAIN
  50016. Notes:    when this interrupt is invoked in V86 mode, RM386 will invoke the first
  50017.       in a chain of protected-mode handlers, and will only pass execution
  50018.       to the V86-mode INT 2C handler if none of the handlers in the
  50019.       passalong chain handle the call instead.  This is the method by which
  50020.       the real-mode stub of a cloaked application communicates with the
  50021.       protected-mode portion.
  50022.     the cloaking host calls the passalong chain with EAX=58494E33h ('WIN3')
  50023.       when MS Windows starts up and with EAX=334E4958h ('3NIW') when
  50024.       Windows shuts down; between these two broadcasts, the additional
  50025.       Windows-only Cloaking services are available
  50026.     this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
  50027.       memory manager included in Helix Software's Netroom
  50028. SeeAlso: INT 2C/AX=0009h,INT 2F/AX=4310h"Cloaking"
  50029. --------m-2C0000-----------------------------
  50030. INT 2C P - Cloaking - ALLOCATE GDT SELECTOR
  50031.     AX = 0000h
  50032.     EBX = base address
  50033.     CL = access mode byte
  50034.     CH = extended access mode byte (omit limit field)
  50035.     EDX = segment limit
  50036. Return: CF clear if successful
  50037.         AX = selector
  50038.     CF set on error
  50039.         AX = error code (see #1252)
  50040. Notes:    this INT 2C interface is used by Netroom's DPMI.EXE v3.00
  50041.     to access extended memory, set the base address to the desired
  50042.       physical address plus 400000h (4M)
  50043.     this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
  50044.       memory manager included in Helix Software's Netroom
  50045. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0004h,AX=0005h,INT 31/AH=57h
  50046.  
  50047. (Table 1252)
  50048. Values for Cloaking error code:
  50049.  0001h    no more selectors
  50050.  0002h    not a GDT ring 0 selector
  50051.  0003h    invalid selector (out of range, not user selector)
  50052.  0004h    selector not allocated
  50053. --------m-2C0001-----------------------------
  50054. INT 2C P - Cloaking - FREE GDT SELECTOR
  50055.     AX = 0001h
  50056.     SI = selector
  50057. Return: CF clear if successful
  50058.     CF set on error
  50059.         AX = error code (see #1252)
  50060. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50061. SeeAlso: AX=0000h,INT 2F/AX=4310h"Cloaking"
  50062. --------m-2C0002-----------------------------
  50063. INT 2C P - Cloaking - SET SEGMENT BASE ADDRESS
  50064.     AX = 0002h
  50065.     SI = selector
  50066.     EBX = new physical base addres
  50067. Return: CF clear if successful
  50068.     CF set on error
  50069.         AX = error code (see #1252)
  50070. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50071. SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 31/AX=0007h
  50072. --------m-2C0003-----------------------------
  50073. INT 2C P - Cloaking - SET SEGMENT LIMIT
  50074.     AX = 0003h
  50075.     SI = selector
  50076.     EBX = new limit
  50077. Return: CF clear if successful
  50078.     CF set on error
  50079.         AX = error code (see #1252)
  50080. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50081. SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 31/AX=0008h
  50082. --------m-2C0004-----------------------------
  50083. INT 2C P - Cloaking - SET SEGMENT ACCESS MODE
  50084.     AX = 0004h
  50085.     SI = selector
  50086.     CL = new access mode byte
  50087. Return: CF clear if successful
  50088.     CF set on error
  50089.         AX = error code (see #1252)
  50090. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50091. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0005h,INT 31/AX=0009h
  50092. --------m-2C0005-----------------------------
  50093. INT 2C P - Cloaking - SET SEGMENT EXTENDED ACCESS MODE
  50094.     AX = 0005h
  50095.     SI = selector
  50096.     CL = new extended access mode byte (limit field ignored) (see #1253)
  50097. Return: CF clear if successful
  50098.     CF set on error
  50099.         AX = error code (see #1252)
  50100. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50101. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0004h,INT 31/AX=0009h
  50102.  
  50103. Bitfields for extended access mode byte:
  50104. Bit(s)    Description    (Table 1253)
  50105.  7    4K granularity instead of byte granularity
  50106.  6    32-bit code segment
  50107.  5    reserved (0)
  50108.  4    segment available to system
  50109. --------m-2C0006-----------------------------
  50110. INT 2C P - Cloaking - GET PROTECTED-MODE INTERRUPT VECTOR
  50111.     AX = 0006h
  50112.     CL = vector (00h-7Fh)
  50113. Return: CF clear
  50114.     DX:EBX -> current interrupt handler
  50115. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50116. SeeAlso: AX=0007h,INT 31/AX=0204h
  50117. --------m-2C0007-----------------------------
  50118. INT 2C P - Cloaking - SET PROTECTED-MODE INTERRUPT VECTOR
  50119.     AX = 0007h
  50120.     CL = vector (00h-7Fh)
  50121.     DX:EBX -> interrupt handler
  50122. Return: CF clear
  50123. Notes:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50124.     the IDT entry's type remains unchanged
  50125. SeeAlso: AX=0006h,INT 31/AX=0205h
  50126. --------m-2C0008-----------------------------
  50127. INT 2C P - Cloaking - GET PASSALONG ADDRESS
  50128.     AX = 0008h
  50129. Return: CF clear
  50130.     DX:EBX = current passalong address
  50131. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50132. SeeAlso: AX=0009h,AX=002Ch,INT 2F/AX=4310h"Cloaking"
  50133. --------m-2C0009-----------------------------
  50134. INT 2C P - Cloaking - SET PASSALONG ADDRESS
  50135.     AX = 0009h
  50136.     DX:EBX = new value for passalong address
  50137. Return: CF clear
  50138. Notes:    when an INT 2C instruction is executed in V86 mode, the Cloaking host
  50139.       calls the passalong address.    The handler should check whether the
  50140.       upcall is of interest to it, and if not it should jump to the old
  50141.       passalong address (retrieved with AX=0008h before the handler was
  50142.       installed).  The final handler should return with CF clear to cause
  50143.       the interrupt to be reflected back to V86 mode if none of the
  50144.       passalong handlers is triggered
  50145.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50146. SeeAlso: AX=0008h,AX=002Dh,INT 2C"CLOAKING"
  50147.  
  50148. (Table 1254)
  50149. Values Cloaking passalong address is called with:
  50150.     EAX = CS:IP of byte following INT 2C instruction invoking passalong
  50151.     SS:EBX -> caller registers (see #1255)
  50152.     CF clear
  50153.     others undefined
  50154. Return: CF clear: pass along to V86-mode INT 2C handler
  50155.     CF set: return immediately to V86 mode
  50156.  
  50157. Format of Cloaking caller registers:
  50158. Offset    Size    Description    (Table 1255)
  50159.  00h    DWORD    EDI
  50160.  04h    DWORD    ESI
  50161.  08h    DWORD    EBP
  50162.  0Ch    DWORD    reserved (ESP from PUSHAD instruction)
  50163.  10h    DWORD    EBX
  50164.  14h    DWORD    EDX
  50165.  18h    DWORD    ECX
  50166.  1Ch    DWORD    EAX
  50167.  20h    DWORD    error code
  50168.  24h    DWORD    EIP
  50169.  28h    WORD    CS
  50170.  2Ah    WORD    padding
  50171.  2Ch    DWORD    EFLAGS
  50172.  30h    DWORD    ESP
  50173.  34h    WORD    SS
  50174.  36h    WORD    padding
  50175. --remainder not available if protected-mode ring3 trap---
  50176.  38h    WORD    ES
  50177.  3Ah    WORD    padding
  50178.  3Ch    WORD    DS
  50179.  3Eh    WORD    padding
  50180.  40h    WORD    FS
  50181.  42h    WORD    padding
  50182.  44h    WORD    GS
  50183.  46h    WORD    padding
  50184. --------m-2C000A-----------------------------
  50185. INT 2C P - Cloaking - GET BASE ADDRESS OF GDT SELECTOR
  50186.     AX = 000Ah
  50187.     SI = selector
  50188. Return: CF clear if successful
  50189.         EBX = segment base address
  50190.     CF set on error
  50191.         AX = error code (see #1252)
  50192. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
  50193.       memory manager included in Helix Software's Netroom
  50194. SeeAlso: AX=0000h,AX=0002h,AX=000Bh
  50195. --------m-2C000B-----------------------------
  50196. INT 2C P - Cloaking - GET SELECTOR LIMIT
  50197.     AX = 000Bh
  50198.     SI = selector
  50199. Return: CF clear if successful
  50200.         EBX = segment base address
  50201.     CF set on error
  50202.         AX = error code (see #1252)
  50203. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50204. SeeAlso: AX=000Ah,INT 2F/AX=4310h"Cloaking"
  50205. --------m-2C---------------------------------
  50206. INT 2C P - RM386 v6.00 - CLOAKING - RESERVED FOR CLOAKED BIOS USE UNDER WINDOWS
  50207.     AX = function (000Ch-001Fh)
  50208. --------m-2C000F-----------------------------
  50209. INT 2C P - Cloaking v1.01 - "Simulate_Shell_Event"
  50210.     AX = 000Fh
  50211.     ECX = event code (see #1256)
  50212.     DX = subfunction for event
  50213.     EDX high word = boost value (see #1257)
  50214.     SI:EDI -> completion procedure
  50215. Return: CF clear if successful (event scheduled)
  50216.     CF set on error
  50217. Note:    this function is only available while MS Windows is running
  50218. SeeAlso: AX=0011h,AX=0012h,INT 2F/AX=1605h,INT 2F/AX=4310h"Cloaking"
  50219.  
  50220. (Table 1256)
  50221. Values for Cloaking shell event code:
  50222.  0414h    Hot key event
  50223.     subevent 0000h: Alt-Space
  50224.     subevent 0001h: Alt-Enter
  50225.     subevent 0002h: Dir-VM
  50226.  0415h    Switch context
  50227.     subevent 0000h for DOS VM context, nonzero for System VM context
  50228.  0416h    Clipboard event
  50229.  0417h    Termination event
  50230.     subevent 0000h for normal termination, nonzero for error
  50231.  0418h    Display message
  50232.     subevent 0000h for normal message, nonzero for system model ASAP
  50233.  0419h    Crash
  50234.  041Ah    Paste complete
  50235.     subevent 0000h: normal
  50236.     subevent 0001h: cancelled by user
  50237.     subevent 0002h: cancelled
  50238.  041Bh    Contention event
  50239.  041Ch    Screen switch
  50240.     subevent 0000h: forward
  50241.     subevent 0001h: back
  50242.  041Dh    Filesystem change
  50243.  041Eh    Check Focus
  50244.  041Fh    Panic
  50245.  
  50246. Bitfields for boost value:
  50247. Bit(s)    Description    (Table 1257)
  50248.  0    boost system VM until focus changes
  50249.  1    boost system VM on Switcher screen
  50250.  2    boost system VM until response
  50251.  3    boost system VM during clipboard activity
  50252.  4    boost system VM during print screen
  50253.  5    boost system VM during update
  50254. --------m-2C0011-----------------------------
  50255. INT 2C P - Cloaking v1.01 - "Switch_VMs_and_Call_back"
  50256.     AX = 0011h
  50257.     EBX = handle of VM to be made active
  50258.     SI:EDI -> 32-bit FAR completion procedure
  50259. Return: CF clear if successful (scheduled)
  50260.     CF set on error
  50261. Notes:    this function is only available while MS Windows is running
  50262.     the completion procedure is called with CF clear if the specified
  50263.       VM has been made active, or with CF set on error
  50264. SeeAlso: AX=000Fh,AX=0012h
  50265. --------m-2C0012-----------------------------
  50266. INT 2C P - Cloaking v1.01 - "Query_Current_VM"
  50267.     AX = 0012h
  50268. Return: CF clear
  50269.     EBX = handle of active VM
  50270.     ESI = handle of system VM
  50271.     ECX = VM status flags (see #1258)
  50272.     EDX = shell flags (see #1259)
  50273. Note:    this function is only available while MS Windows is running in enhanced
  50274.       mode
  50275. SeeAlso: AX=000Fh,AX=0011h,AX=0013h
  50276.  
  50277. Bitfields for VM status flags:
  50278. Bit(s)    Description    (Table 1258)
  50279.  0    in exclusive mode
  50280.  1    runs in background
  50281.  2    being created
  50282.  3    suspended
  50283.  4    not executable
  50284.  5    executing in protected mode
  50285.  6    contains PM application
  50286.  7    32-bit PM application
  50287.  8    called from VxD
  50288.  9    high priority background
  50289.  10    blocked on semaphore
  50290.  11    awakening
  50291.  12    has pageable V86
  50292.  13    has locked V86
  50293.  14    is scheduled
  50294.  15    idle
  50295.  16    closing
  50296.  
  50297. Bitfields for shell flags:
  50298. Bit(s)    Description    (Table 1259)
  50299.  2    windowed
  50300.  5    Alt-Tab reserved
  50301.  6    Alt-Esc reserved
  50302.  7    Alt-Space reserved
  50303.  8    Alt-PrtSc reserved
  50304.  9    Alt-Enter reserved
  50305.  10    Alt-PrtSc reserved
  50306.  11    PrtSc reserved
  50307.  12    polling enabled
  50308.  13    no HMA
  50309.  14    has shortcut key
  50310.  15    locked EMS handles
  50311.  16    locked XMS handles
  50312.  17    fast paste enabled
  50313.  18    locked V86 memory
  50314.  30    close-on-exit enabled    
  50315. --------m-2C0013-----------------------------
  50316. INT 2C P - Cloaking v1.01 - "Issue_System_Modal_Message"
  50317.     AX = 0013h
  50318.     EDX = message box flags (see #1260)
  50319.     DS:ECX -> ASCIZ message text
  50320.     DS:EDI -> ASCIZ caption
  50321. Return: CF clear
  50322.     EAX = response code
  50323. Note:    this function is only available while MS Windows is running in enhanced
  50324.       mode
  50325. SeeAlso: AX=000Fh,AX=0012h
  50326.  
  50327. Bitfields for message box flags:
  50328. Bit(s)    Description    (Table 1260)
  50329.  3-0    response codes (see #1261)
  50330.  7-4    icon codes
  50331.     1 = Warning hand
  50332.     2 = exclamation mark
  50333.     4 = asterisk
  50334.  9-8    default response (0 = first button, 1 = second, 2 = third)
  50335.  12    message is system model
  50336.  15    don't change focus
  50337.  29    hang with interrupts enabled
  50338.  30    do not window
  50339.  31    execute ASAP
  50340.  
  50341. (Table 1261)
  50342. Values for response codes:
  50343.  00h    OK
  50344.  01h    OK, Cancel
  50345.  02h    Abort, Retry, Ignore
  50346.  03h    Yes, No, Cancel
  50347.  04h    Yes, No
  50348.  05h    Retry, Cancel
  50349. --------m-2C001D-----------------------------
  50350. INT 2C P - Cloaking v1.01 - GET INT 2C API HANDLER ENTRY POINT
  50351.     AX = 001Dh
  50352. Return: CF clear
  50353.     DX:EBX = selector:offset of Cloaking host INT 2C handler
  50354. Desc:    get the Cloaking host's entry point to bypass any other programs
  50355.       which may have hooked INT 2C in protected mode
  50356. Note:    the returned entry point must be called with a simulated INT, i.e.
  50357.       a PUSHD must precede the far call to the handler
  50358. SeeAlso: INT 2F/AX=4310h"Cloaking"
  50359. --------m-2C001E-----------------------------
  50360. INT 2C P - Cloaking v1.01 - CLEAR CRITICAL SECTION
  50361.     AX = 001Eh
  50362. Return: CF clear
  50363. Desc:    allow MS Windows to switch to another VM after having prevented it
  50364.       by invoking a critical section
  50365. SeeAlso: AX=001Fh,INT 15/AX=101Ch,INT 2F/AX=1682h
  50366. --------m-2C001F-----------------------------
  50367. INT 2C P - Cloaking v1.01 - SET CRITICAL SECTION
  50368.     AX = 001Fh
  50369. Return: CF clear
  50370. Desc:    prevent MS Windows from switching to another VM
  50371. SeeAlso: AX=001Eh,INT 15/AX=101Bh,INT 2F/AX=1681h
  50372. --------m-2C0020-----------------------------
  50373. INT 2C P - Cloaking - GET SIZE OF PROTECTED-MODE STATE
  50374.     AX = 0020h
  50375. Return: EAX = number of bytes required for storing state
  50376. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50377. SeeAlso: AX=0021h,AX=0022h
  50378. --------m-2C0021-----------------------------
  50379. INT 2C P - Cloaking - SAVE PROTECTED-MODE STATE
  50380.     AX = 0021h
  50381.     ES:EDI -> buffer for protected-mode state
  50382. Return: CF clear
  50383.     buffer filled
  50384. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50385. SeeAlso: AX=0020h,AX=0022h
  50386. --------m-2C0022-----------------------------
  50387. INT 2C P - Cloaking - RESTORE PROTECTED-MODE STATE
  50388.     AX = 0022h
  50389.     DS:ESI -> buffer containing previously-saved protected-mode state
  50390. Return: CF clear if successful
  50391.         state restored
  50392.     CF set on error (invalid buffer contents)
  50393. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50394. SeeAlso: AX=0020h,AX=0021h
  50395. --------m-2C0023-----------------------------
  50396. INT 2C P - Cloaking - ISSUE PROTECTED-MODE XMS CALL
  50397.     AX = 0023h
  50398. Notes:    not currently implemented--NOP in RM386 v6.00
  50399.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50400. --------m-2C0024-----------------------------
  50401. INT 2C P - Cloaking - SET V86-MODE STACK
  50402.     AX = 0024h
  50403.     DX:EBX = new value for V86-mode SS:ESP
  50404. Return: nothing
  50405. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50406. --------m-2C0025-----------------------------
  50407. INT 2C P - Cloaking - CALL V86-MODE PROCEDURE
  50408.     AX = 0025h
  50409.     DS:EBX -> client register structure (see #1255)
  50410. Return: CF clear if successful
  50411.         client register structure updated
  50412.     CF set if no more nested procedure call space available
  50413. Notes:    this call uses the V86-mode stack supplied in the client structure, and
  50414.       calls the routine specified by CS:IP in the client structure
  50415.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50416. SeeAlso: AX=0026h,AX=0027h,INT 31/AX=0301h
  50417. --------m-2C0026-----------------------------
  50418. INT 2C P - Cloaking - CALL V86-MODE INTERRUPT HANDLER
  50419.     AX = 0026h
  50420.     DS:EBX -> client register structure (see #1255)
  50421.     CX = interrupt number
  50422. Return: CF clear if successful
  50423.         client register structure updated
  50424.     CF set if no more nested procedure call space available
  50425. Notes:    this call uses the V86-mode stack supplied in the client structure
  50426.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50427. SeeAlso: AX=0025h,AX=0027h,INT 31/AX=0300h
  50428. --------m-2C0027-----------------------------
  50429. INT 2C P - Cloaking - CHAIN TO V86-MODE INTERRUPT HANDLER
  50430.     AX = 0027h
  50431.     DS:EBX -> client register structure (see #1255)
  50432. Return: CF clear if successful
  50433.         client register structure updated
  50434.     CF set if no more nested procedure call space available
  50435. Notes:    this call uses the V86-mode stack supplied in the client structure,
  50436.       and jumps to the address specified by CS:IP in the client structure
  50437.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50438. SeeAlso: AX=0025h,AX=0026h
  50439. --------m-2C0028-----------------------------
  50440. INT 2C P - Cloaking - GET ESP0 FROM TSS
  50441.     AX = 0028h
  50442. Return: CF clear
  50443.     EAX = TSS's ESP0
  50444. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
  50445.       memory manager included in Helix Software's Netroom
  50446. --------m-2C0029-----------------------------
  50447. INT 2C P - Cloaking - SET SECONDARY STACK
  50448.     AX = 0029h
  50449.     DX:EBX = new value for SS:ESP of ring 3 secondary stack
  50450. Return: CF clear
  50451. Desc:    inform RM386 of the ring 3 interrupt stack location
  50452. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50453. --------m-2C002A-----------------------------
  50454. INT 2C P - Cloaking - SET 8259 IRQ BASE VECTORS
  50455.     AX = 002Ah
  50456.     BL = base vector of master interrupt controller
  50457.     CL = base vector of slave interrupt controller
  50458. Notes:    this call merely informs RM386 that the caller has changed the
  50459.       interrupt mappings
  50460.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50461. SeeAlso: INT 67/AX=DE0Bh
  50462. --------m-2C002BCH81-------------------------
  50463. INT 2C P - Cloaking - PROTECTED-MODE VIRTUAL DMA SERVICES
  50464.     AX = 002Bh
  50465.     CH = 81h
  50466.     CL = subfunction (02h-0Ch)
  50467.     other registers as appropriate for subfunction
  50468. Return: varies by function
  50469.     CF set on error
  50470. Notes:    these functions are equivalent to the INT 4B/AX=81xxh subfunctions
  50471.       with the same numbers
  50472.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50473. SeeAlso: INT 4B/AX=8102h,INT 4B/AX=810Ch
  50474. --------m-2C002C-----------------------------
  50475. INT 2C P - Cloaking - GET PORT-TRAPPING PASSALONG
  50476.     AX = 002Ch
  50477. Return: CF clear
  50478.     DX:EBX = current I/O trapping passalong address
  50479. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50480. SeeAlso: AX=0008h,AX=002Dh
  50481. --------m-2C002D-----------------------------
  50482. INT 2C P - Cloaking - SET PORT-TRAPPING PASSALONG
  50483.     AX = 002Dh
  50484.     DX:EBX = new I/O trapping passalong address
  50485. Return: CF clear
  50486. Notes:    RM386 calls the passalong address whenever an access to a monitored
  50487.       I/O port is attempted; the handler should check whether it is a port
  50488.       that it is interested in, and if not call the previous passalong
  50489.       address (which was retrieved with AX=002Ch before installing the
  50490.       new handler)
  50491.     this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50492. SeeAlso: AX=0009h,AX=002Ch,INT 67/AX=5DEAh
  50493.  
  50494. (Table 1262)
  50495. Values Cloaking port-trapping passalong address is called with:
  50496.     EAX = CS:IP of faulting instruction (unless executing in protected-mode
  50497.         ring 3)
  50498.     SS:EBX -> caller register structure (see #1255)
  50499.         check EFLAGS V86-mode bit for type
  50500.     CX = first two bytes of I/O instruction which was trapped
  50501.     DX = port to which I/O is being performed
  50502.     CF clear
  50503. Return: CF clear if RM386 should perform I/O operation
  50504.     CF set if I/O should be skipped
  50505. Note:    RM386 skips the trapped I/O instruction, so the passalong handler
  50506.       should not modify the client CS:EIP
  50507. --------m-2C002E-----------------------------
  50508. INT 2C P - Cloaking - TRAP I/O PORT
  50509.     AX = 002Eh
  50510.     DX = port number to trap
  50511. Return: CF clear if successful
  50512.     CF set on error (port out of range or reserved)
  50513. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50514. SeeAlso: AX=002Fh,AX=0030h
  50515. --------m-2C002F-----------------------------
  50516. INT 2C PU - Cloaking - UNTRAP I/O PORT
  50517.     AX = 002Fh
  50518.     DX = port number for which to cancel trapping
  50519. Return: CF clear if successful
  50520.     CF set on error (port out of range or reserved)
  50521. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50522. SeeAlso: AX=002Eh,AX=0030h
  50523. --------m-2C0030-----------------------------
  50524. INT 2C PU - Cloaking - GET TRAPPING STATE OF SPECIFIED PORT
  50525.     AX = 0030h
  50526.     DX = port number
  50527. Return: CF clear if successful
  50528.        BX = current state (0000h not trapped, 0001h trapped)
  50529.     CF set on error (port out of range or reserved)
  50530. Note:    this function was first introduced with RM386 (RAM-MAN/386) v6.00
  50531. SeeAlso: AX=002Eh,AX=002Fh
  50532. --------m-2C0031-----------------------------
  50533. INT 2C PU - RM386 v6.00 - BUG
  50534.     AX = 0031h
  50535. Program: RM386 (RAM-MAN/386) is the memory manager included in Helix Software's
  50536.       Netroom
  50537. Note:    due to a fencepost error, RM386 v6.00 will branch unpredictably if
  50538.       invoked with this function
  50539. --------m-2C0031-----------------------------
  50540. INT 2C P - Cloaking v1.01 - ALLOCATE V86 CALLBACK
  50541.     AX = 0031h
  50542.     DX:EBX = CS:EIP of protected-mode routine to be invoked by callback
  50543. Return: CF clear if successful
  50544.         EBX = CS:IP of V86-mode callback handler
  50545.     CF set on error
  50546. SeeAlso: AX=0032h
  50547. --------m-2C0032-----------------------------
  50548. INT 2C P - Cloaking v1.01 - FREE V86 CALLBACK
  50549.     AX = 0032h
  50550.     EBX = CS:IP of V86-mode callback handler
  50551. Return: CF clear if successful
  50552.     CF set on error
  50553.         AX = error code
  50554.         0005h invalid callback address
  50555.         0006h callback already free
  50556. SeeAlso: AX=0032h
  50557. ----------2C0033-----------------------------
  50558. INT 2C P - Cloaking v1.01 - REGISTER CLOAKING CLIENT
  50559.     AX = 0033h
  50560.     DS:EDX -> client registration structure (see #1263)
  50561. Return: CF clear if successful
  50562.     CF set on error (linked list corrupt)
  50563. SeeAlso: AX=0034h,#1402 at INT 2F/AX=4310h"Cloaking"
  50564.  
  50565. Format of client registration structure:
  50566. Offset    Size    Description    (Table 1263)
  50567.  00h    PWORD    link to next structure
  50568.  06h    PWORD    link to previous structure
  50569.  0Ch  2 BYTEs    client version (major, minor)
  50570.  0Eh 20 BYTEs    client name
  50571.  22h    DWORD    physical address of client start
  50572.  26h    DWORD    client's total size in bytes
  50573. Note:    the link area should not be modified once the structure has been
  50574.       used for the registration call
  50575. ----------2C0034-----------------------------
  50576. INT 2C P - Cloaking v1.01 - UNREGISTER CLOAKING CLIENT
  50577.     AX = 0034h
  50578.     DS:EDX -> client registration structure (see #1263)
  50579. Return: CF clear if successful
  50580.     CF set on error (linked list corrupt)
  50581. Note:    the client must unregister before freeing the XMS block containing
  50582.       its registration structure(s)
  50583. SeeAlso: AX=0033h,#1402 at INT 2F/AX=4310h"Cloaking"
  50584. --------D-2D---------------------------------
  50585. INT 2D - DOS 2+ - RESERVED
  50586. Note:    this vector is not used in DOS versions <= 6.00, and points at an IRET
  50587. --------t-2D---------------------------------
  50588. INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.5.1]
  50589.     AH = multiplex number
  50590.     AL = function
  50591.         00h installation check
  50592.         Return: AL = 00h if free
  50593.             AL = FFh if multiplex number in use
  50594.                 CX = binary version number (CH = major, CL = minor)
  50595.                 DX:DI -> signature string (see #1264) identifying
  50596.                     the program using the multiplex number
  50597.         01h get entry point
  50598.         Return: AL = 00h if all API calls via INT 2D
  50599.             AL = FFh if entry point supported
  50600.                 DX:BX -> entry point for bypassing interrupt chain
  50601.         02h uninstall
  50602.         DX:BX = return address for successful uninstall (may be
  50603.             ignored by TSR)
  50604.         Return: AL = status
  50605.                 00h not implemented
  50606.                 01h unsuccessful
  50607.                 02h can not uninstall yet, will do so when able
  50608.                 03h safe to remove, but no resident uninstaller
  50609.                 (TSR still enabled)
  50610.                 BX = segment of memory block with resident code
  50611.                 04h safe to remove, but no resident uninstaller
  50612.                 (TSR now disabled)
  50613.                 BX = segment of memory block with resident code
  50614.                 05h not safe to remove now, try again later
  50615.                 FFh successful
  50616.             return at DX:BX with AX destroyed if successful and
  50617.               TSR honors specific return address
  50618.         03h request pop-up
  50619.         Return: AL = status
  50620.                 00h not implemented or TSR is not a pop-up
  50621.                 01h can not pop up at this time, try again later
  50622.                 02h can not pop up yet, will do so when able
  50623.                 03h already popped up
  50624.                 04h unable to pop up, user intervention required
  50625.                 BX = standard reason code
  50626.                     0000h unknown failure
  50627.                     0001h interrupt chain passes through memory
  50628.                       which must be swapped out to pop up
  50629.                     0002h swap-in failed
  50630.                 CX = application's reason code if nonzero
  50631.                 FFh TSR popped up and was exited by user
  50632.                 BX = return value
  50633.                     0000h no return value
  50634.                     0001h TSR unloaded
  50635.                     0002h-00FFh reserved
  50636.                     0100h-FFFFh application-dependent
  50637.         04h determine chained interrupts
  50638.         BL = interrupt number (except 2Dh)
  50639.         Return: AL = status
  50640.                 00h not implemented
  50641.                 01h (obsolete) unable to determine
  50642.                 02h (obsolete) interrupt hooked
  50643.                 03h (obsolete) interrupt hooked, address returned
  50644.                 DX:BX -> TSR's interrupt BL handler
  50645.                 04h list of hooked interrupts returned
  50646.                 DX:BX -> interrupt hook list (see #1265)
  50647.                 FFh interrupt not hooked
  50648.         Notes:    since INT 2D is known to be hooked, the resident code
  50649.               need not test for BL=2Dh (to minimize its size), and
  50650.               the return value is therefore undefined in that case.
  50651.             BL is ignored if the TSR returns AL=04h; in that case,
  50652.               the caller needs to scan the return list rather than
  50653.               making additional calls to this function.  If the
  50654.               return is not 00h or 04h, then the caller must cycle
  50655.               through the remaining interrupt numbers it wishes to
  50656.               check.
  50657.             return values 01h thru 03h are disparaged and will be
  50658.               removed from the next version of this specification;
  50659.               they are included for compatibility with version 3.3,
  50660.               though they were probably never used in any
  50661.               implementation
  50662.         05h get hotkeys
  50663.         Return: AL = status
  50664.                 00h not implemented
  50665.                 FFh supported
  50666.                 DX:BX -> hotkey list (see #1266)
  50667.         06h-0Fh reserved for future enhancements
  50668.         Return: AL = 00h (not implemented)
  50669.         other  application-dependent
  50670. Notes:    programs should not use fixed multiplex numbers; rather, a program
  50671.       should scan all multiplex numbers from 00h to FFh, remembering the
  50672.       first unused multiplex in case the program is not yet installed.
  50673.       For multiplex numbers which are in use, the program should compare
  50674.       the first 16 bytes of the signature string to determine whether it
  50675.       is already installed on that multiplex number.  If not previously
  50676.       installed, it should use the first free multiplex number.
  50677.     functions other than 00h are not valid unless a program is installed
  50678.       on the selected multiplex number
  50679.     to be considered fully compliant with version 3.5 of the specification,
  50680.       programs must implement at least functions 00h, 02h (no resident
  50681.       uninstall code required), and 04h (return value 04h).     TSRs that
  50682.       provide hotkeys with which the user can activate them must also
  50683.       implement function 05h.  The absolute minimum fully-compliant
  50684.       implementation has an overhead of 64 bytes (80 bytes with function
  50685.       05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
  50686.       protocol header and hook list entry).
  50687.     the signature string and description may be used by memory mappers
  50688.       to display the installed programs
  50689.     users of this proposal should adhere to the IBM interrupt sharing
  50690.       protocol (see #1270), which will permit removal of TSRs in
  50691.       arbitrary order and interrupt handler reordering.  All TSRs
  50692.       following this proposal should be removable, though they need not
  50693.       keep the code for removing themselves resident; it is acceptable
  50694.       for a separate program to perform the removal.
  50695.     A sample implementation including example TSRs and utility programs
  50696.       may be found in a separate package distributed as AMISLnnn.ZIP
  50697.       (AMISL091.ZIP as of this writing).
  50698.     Please let me know if you choose to follow this proposal.  The
  50699.       signature and a list of the private API calls you use would be
  50700.       appreciated, as well.
  50701. SeeAlso: INT 2F
  50702. Index:    installation check;Alternate Multiplex Interrupt Specification
  50703. Index:    installation check;AMIS|installation check;FASTMOUS
  50704. Index:    installation check;SPELLER|installation check;Monitor
  50705. Index:    installation check;NOLPT|installation check;NOTE
  50706. Index:    installation check;RBkeyswp|installation check;SWITCHAR
  50707. Index:    installation check;VGABLANK|installation check;EATMEM
  50708. Index:    installation check;RECALL|installation check;XPTR2
  50709. Index:    uninstall;Alternate Multiplex Interrupt Specification|uninstall;AMIS
  50710. Index:    entry point;Alternate Multiplex Interrupt|entry point;AMIS
  50711.  
  50712. Format of AMIS signature string:
  50713. Offset    Size    Description    (Table 1264)
  50714.  00h  8 BYTEs    blank-padded manufacturer's name (possibly abbreviated)
  50715.  08h  8 BYTEs    blank-padded product name
  50716.  10h 64 BYTEs    ASCIZ product description (optional, may be a single 00h)
  50717. Note:    it is not necessary to reserve a full 64 bytes for the description,
  50718.       just enough to store the actual ASCIZ string
  50719.  
  50720. Format of AMIS interrupt hook list [array]:
  50721. Offset    Size    Description    (Table 1265)
  50722.  00h    BYTE    interrupt number (last entry in array is 2Dh)
  50723.  01h    WORD    offset within hook list's segment of the interrupt handler
  50724.         this will point at the initial short jump of the interrupt
  50725.           sharing protocol header (see #1270)
  50726.  
  50727. Format of AMIS hotkey list:
  50728. Offset    Size    Description    (Table 1266)
  50729.  00h    BYTE    type of hotkey checking (see #1267)
  50730.  01h    BYTE    number of hotkeys (may be zero if TSR can disable hotkeys)
  50731.  02h 6N BYTEs    array of hotkey definitions
  50732.         (one per hotkey, first should be primary hotkey)
  50733.         Offset    Size    Description
  50734.          00h    BYTE    hotkey scan code (00h/80h if shift states only)
  50735.                 hotkey triggers on release if bit 7 set
  50736.          01h    WORD    required shift states (see #1268)
  50737.          03h    WORD    disallowed shift states (see #1268)
  50738.          05h    BYTE    hotkey flags (see #1269)
  50739. Notes:    except for bit 7, the shift states correspond exactly to the return
  50740.       values from INT 16/AH=12h.  A set bit in the required states word
  50741.       indicates that the corresponding shift state must be active when the
  50742.       hotkey's scan code is received for the hotkey to be recognized; a
  50743.       clear bit means that the corresponding state may be ignored.    A set
  50744.       bit in the disallowed shift states word indicates that the
  50745.       corresponding shift state must be inactive.
  50746.     for the disallowed-states word, if one of the "either" bits is set,
  50747.       then both the corresponding left bit and right bit must be set
  50748.     examples:
  50749.         Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
  50750.         Alt-key tap (DESQview):     B8h 0000h 0007h 08h
  50751.         Shf-Shf-N (NOTE.COM):     31h 0003h 000Ch 00h
  50752. Index:    hotkeys;AMIS
  50753.  
  50754. Bitfields for type of AMIS hotkey checking:
  50755. Bit(s)    Description    (Table 1267)
  50756.  0    checks before chaining INT 09
  50757.  1    checks after chaining INT 09
  50758.  2    checks before chaining INT 15/AH=4Fh
  50759.  3    checks after chaining INT 15/AH=4Fh
  50760.  4    checks on INT 16/AH=00h,01h,02h
  50761.  5    checks on INT 16/AH=10h,11h,12h
  50762.  6    checks on INT 16/AH=20h,21h,22h
  50763.  7    reserved (0)
  50764.  
  50765. Bitfields for AMIS shift states:
  50766. Bit(s)    Description    (Table 1268)
  50767.  0    right shift pressed
  50768.  1    left shift pressed
  50769.  2    either control key pressed
  50770.  3    either Alt key pressed
  50771.  4    ScrollLock active
  50772.  5    NumLock active
  50773.  6    CapsLock active
  50774.  7    either shift key pressed
  50775.  8    left control key pressed
  50776.  9    left Alt key pressed
  50777.  10    right control key pressed
  50778.  11    right Alt key pressed
  50779.  12    ScrollLock pressed
  50780.  13    NumLock pressed
  50781.  14    CapsLock pressed
  50782.  15    SysReq key pressed
  50783. Notes:    if bit 2 is set, either control key may be pressed for the hotkey; if
  50784.       bits 8 and 10 are both set, then both control keys must be pressed.
  50785.       Similarly for bits 3 and 9/11, as well as 7 and 0/1.
  50786.     the SysReq key is often labeled SysRq
  50787.  
  50788. Bitfields for AMIS hotkey flags:
  50789. Bit(s)    Description    (Table 1269)
  50790.  0    hotkey chained before processing
  50791.  1    hotkey chained after processing
  50792.  2    others should pass through this hotkey so that it can be monitored
  50793.  3    hotkey will not activate if other keys pressed/released before hotkey
  50794.       press is completed
  50795.  4    this key is remapped into some other key
  50796.  5-7    reserved (0)
  50797.  
  50798. Format of interrupt sharing protocol interrupt handler entry point:
  50799. Offset    Size    Description    (Table 1270)
  50800.  00h  2 BYTEs    short jump to actual start of interrupt handler, immediately
  50801.           following this data block (EBh 10h)
  50802.  02h    DWORD    address of next handler in chain
  50803.  06h    WORD    signature 424Bh
  50804.  08h    BYTE    EOI flag
  50805.         00h software interrupt or secondary hardware interrupt handler
  50806.         80h primary hardware interrupt handler (will issue EOI)
  50807.  09h  2 BYTEs    short jump to hardware reset routine
  50808.         must point at a valid FAR procedure (may be just RETF)
  50809.  0Bh  7 BYTEs    reserved (0)
  50810.  
  50811. (Table 1271)
  50812. Values of AMIS signatures known to be in use:
  50813.  'Byrial J' 'EKLAVO  '    permits keyboard entry of Esperanto accented letters
  50814.  'CoveSoft' 'Burnout+'    shareware screen saver Burnout Plus
  50815.  'Crynwr  ' 'SPELLER '    TSR spelling-checker
  50816.  'CSJewell' 'Modula3L'    Curtis Jewell's Modula-3 compiler (non-TSR)
  50817.  'DAISYCHA' 'INDRIVER'    Advanced Parallel Port daisy chain driver (vendor name
  50818.               in product description field, if desired)
  50819.             (see also INT 2D/AL=DCh)
  50820.  'ECLIPSE ' 'PLUMP   '    Eclipse Software's printer and plotter spooler
  50821.  'GraySoft' 'GIPC    '    GraySoft's Inter-Process Communications driver
  50822.  'heathh  ' 'Monitor '
  50823.  'Helge O '        TSRs by Helge Olav Helgesen
  50824.  'J. Berry' 'RATSR   '    RemoteAccess Network Manager workstation module
  50825.  'JWB      ' 'RAMLIGHT'    James Birdsall's on-screen RAMdisk activity indicator
  50826.  'M Better' 'iHPFS   '    Marcus Better's HPFS filesystem driver for DOS
  50827.  'Nildram ' 'ST         '    Screen Thief graphics screen grabber
  50828.  'R-Ware  ' 'dLite   '    run-time data decompression TSR
  50829.  'Ralf B  ' 'FASTMOUS'    example TSR included with sample AMIS library code
  50830.  'Ralf B  ' 'NOLPT n '    example TSR -- turn LPTn into bit-bucket
  50831.  'Ralf B  ' 'NOTE    '    example TSR -- popup note-taker
  50832.  'Ralf B  ' 'RBkeyswp'    RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
  50833.  'Ralf B  ' 'SWITCHAR'    example TSR -- add switchar() support removed from DOS5
  50834.  'Ralf B  ' 'VGABLANK'    example TSR -- VGA-only screen blanker
  50835.  'Sally IS' 'Mdisk   '    removeable, resizeable RAMdisk
  50836.  'Sally IS' 'Scr2Tex '    screen dumper with output in (La)Tex format
  50837.  'Thaco      ' 'NEST    '    Eirik Pedersen's programmer's delimiter matcher
  50838.  'TifaWARE' 'EATMEM  '    George A. Theall's public domain memory restrictor for
  50839.             testing programs (v1.1+)
  50840.  'TifaWARE' 'RECALL  '    public domain commandline editor and history (v1.2+)
  50841.  'Todd      ' 'XPTR2   '    PC-to-Transputer interface by Todd Radel
  50842. --------N-2D--10-----------------------------
  50843. INT 2D - RATSR 2.0+ - GET STATUS
  50844.     AL = 10h
  50845.     AH = AMIS multiplex number for RATSR
  50846. Return: AL = status
  50847.         01h listening (no connection)
  50848.         02h receiving          \
  50849.         03h sending               > station being monitored
  50850.         04h initializing receive  /
  50851.     AH = keyboard lock status (00h unlocked, 01h locked)
  50852. Program: RATSR is a utility by James Berry provided with
  50853.       RemoteAccess/Professional, a commercial bulletin board system, that
  50854.       allows remote control of a station over a network
  50855. SeeAlso: INT 2D"AMIS"
  50856. --------d-2D--10-----------------------------
  50857. INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
  50858.     AL = 10h
  50859.     AH = AMIS multiplex number for dLite
  50860. Return: CF clear if successful
  50861.         ES:BX -> parameter block (see #1272)
  50862.     CF set on error
  50863. Program: dLite is a shareware TSR by Rainer Schuetze which transparently
  50864.       expands compressed files when they are read
  50865. SeeAlso: AL=11h"dLite",AL=12h"dLite",INT 21/AX=FEDCh"PCMANAGE"
  50866.  
  50867. Format of dLite parameter block:
  50868. Offset    Size    Description    (Table 1272)
  50869.  00h    BYTE    TSR flags (see #1273)
  50870.  01h    WORD    maximum number of programs needing original filesize
  50871.  03h    WORD    current number of programs needing original filesize
  50872.  05h    WORD    maximum number of files that can be handled by dLite (should
  50873.           be the same as FILES= in CONFIG.SYS)
  50874.  07h    WORD    offset (in the same segment as the parameter block) of the
  50875.           table of programs needing the original filesize (8 bytes
  50876.           each,    without path or extension, uppercase, and zero \
  50877.           terminated if    shorter than 8 bytes)
  50878.  
  50879. Bitfields for dLite TSR flags:
  50880. Bit(s)    Description    (Table 1273)
  50881.  0    deny FCB access
  50882.  1    dLite sleeping rather than activated
  50883.  2    always indicate original filesize when reading directory entries,
  50884.       rather than only for specified programs
  50885.  3-7    reserved
  50886. --------V-2D--10-----------------------------
  50887. INT 2D - Burnout Plus v3.00 - GET STATE/CONTROL INFORMATION
  50888.     AL = 10h
  50889.     AH = AMIS multiplex number for Burnout Plus
  50890. Return: AL = 01h
  50891.     BX = Burnout Plus status (see #1274)
  50892.     CX = record of features loaded (see #1275)
  50893.     ES:DI -> Burnout Plus control structure (see #1276)
  50894. Program: Burnout Plus is a DOS screen saver from Cove Software
  50895. SeeAlso: INT 14/AX=AA01h,INT 2D"AMIS"
  50896. Index:    screen saver;Burnout Plus
  50897.  
  50898. Bitfields for Burnout Plus status:
  50899. Bit(s)    Description    (Table 1274)
  50900.  0    screen is blanked
  50901.  1    MS Windows is active (Burnout Plus deactivated)
  50902.  2-15    reserved
  50903.  
  50904. Bitfields for Burnout Plus features loaded/features enabled:
  50905. Bit(s)    Description    (Table 1275)
  50906.  0    mouse activity monitor
  50907.  1    passkey support
  50908.  2    password support
  50909.  3    continuous clear
  50910.  4    software blanking
  50911.  5    video activity monitor
  50912.  6    disk activity monitor
  50913.  7    activating keystroke suppression
  50914.  
  50915. Format of Burnout Plus control structure:
  50916. Offset    Size    Description    (Table 1276)
  50917.  00h    BYTE    size of structure in bytes
  50918.  01h    WORD    Burnout Plus version
  50919.  03h    WORD    screen blanking reset count in clock ticks
  50920.  05h    WORD    current countdown value in clock ticks
  50921.  07h    BYTE    type of timeout specification
  50922.  08h    BYTE    instant-blank hotkey
  50923.  09h    WORD    extended status information (see #1277)
  50924.         the bits for password, passkey, and software blanking are
  50925.           ignored and cannot be enabled or disabled externally
  50926.  0Bh    WORD    features enabled (see #1275)
  50927. Note:    all fields except the first two may be modified by external programs
  50928.       to affect the operation of Burnout Plus
  50929. Index:    hotkeys;Burnout Plus
  50930.  
  50931. Bitfields for extended Burnout Plus status information:
  50932. Bit(s)    Description    (Table 1277)
  50933.  0    Burnout Plus disabled
  50934.  1    force screen to blank on next clock tick
  50935.  2    restore screen if currently blanked
  50936.  3-15    reserved
  50937. Note:    1 and 2 are automatically cleared by Burnout Plus after blanking
  50938.       or restoring the screen
  50939. --------V-2D--10-----------------------------
  50940. INT 2D U - Screen Thief v1.00 - FREE HIGH MEMORY BUFFERS
  50941.     AL = 10h
  50942.     AH = AMIS multiplex number for Screen Thief
  50943. Return: nothing
  50944. Program: Screen Thief is a graphics screen grabber
  50945. Note:    releases any code and data stored in EMS, DOS UMBs, or XMS UMBs, but
  50946.       does not release the low-memory stub; this may be used to effect a
  50947.       partial uninstall if INT 2D/AL=02h fails
  50948. SeeAlso: INT D8"Screen Thief"
  50949. --------i-2D--10-----------------------------
  50950. INT 2D U - RAMLIGHT v1.0 - GET MONITORING INFORMATION
  50951.     AL = 10h
  50952.     AH = AMIS multiplex number for RAMLIGHT
  50953. Return: ES:BX -> array of fake device driver headers used in monitoring
  50954.     CX = number of drives being monitored???
  50955. --------d-2D--11-----------------------------
  50956. INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
  50957.     AL = 11h
  50958.     AH = AMIS multiplex number for dLite
  50959.     BX = file handle
  50960. Return: CF clear if successful
  50961.         DX:AX = size of uncompressed file
  50962.     CF set on error (not dPressed file)
  50963. SeeAlso: AL=10h"dLite",AL=12h"dLite"
  50964. --------d-2D--12-----------------------------
  50965. INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
  50966.     AL = 12h
  50967.     AH = AMIS multiplex number for dLite
  50968.     BX = file handle
  50969. Return: CF clear if successful
  50970.         DX:AX = size of compressed file
  50971.     CF set on error (not dPressed file)
  50972. SeeAlso: AL=10h"dLite",AL=11h"dLite"
  50973. --------b-2D--DC-----------------------------
  50974. INT 2D C - DAISY.SYS - BROADCAST: CHAIN RESCANNED
  50975.     AL = DCh
  50976.     AH = AMIS multiplex number for signature 'DAISYCHA' 'INDRIVER'
  50977.     DL = LPT Port Rescanned
  50978. Program: DAISY.SYS is a daisy chain manager for parallel port peripherals
  50979.       conforming to the Advanced Parallel Port Committee's daisy chain
  50980.       specification.
  50981. Desc:    This Broadcast is sent whenever daisy chain IDs are reassigned to
  50982.       warn parallel port device drivers that their daisy chain ID may
  50983.       have been changed.
  50984. Note:    This function is a callout from DAISY.SYS, NOT a call into DAISY.SYS
  50985. SeeAlso: INT 17/AX=0200h"Advanced Parallel Port"
  50986. --------!---Section--------------------------
  50987. Interrupt List, part 7 of 12
  50988. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  50989. --------l-2E---------------------------------
  50990. INT 2E U - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION
  50991.     DS:SI -> commandline to execute (see #1278)
  50992. Return: all registers except CS:IP destroyed
  50993.     AX = status (4DOS v4.0)
  50994.        0000h successful
  50995.        FFFFh error before processing command (not enough memory, etc)
  50996.        other error number returned by command
  50997. Notes:    this call allows execution of arbitrary commands (including COMMAND.COM
  50998.       internal commands) without loading another copy of COMMAND.COM
  50999.     if COMMAND.COM is the user's command interpreter, the primary copy
  51000.       executes the command; this allows the master environment to be
  51001.       modified by issuing a "SET" command, but changes in the master
  51002.       environment will not become effective until all programs descended
  51003.       from the primary COMMAND.COM terminate
  51004.     since COMMAND.COM processes the string as if typed from the keyboard,
  51005.       the transient portion needs to be present, and the calling program
  51006.       must ensure that sufficient memory to load the transient portion can
  51007.       be allocated by DOS if necessary
  51008.     results are unpredictable if invoked by a program run from a batch file
  51009.       because this call is not reentrant and COMMAND.COM uses the same
  51010.       internal variables when processing a batch file
  51011.     hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E
  51012.       has been loaded
  51013.     the MS-DOS 5 Programmer's Reference calls this "Reload Transient"
  51014.  
  51015. Format of DOS commandline:
  51016. Offset    Size    Description    (Table 1278)
  51017.  00h    BYTE    length of command string, not counting trailing CR
  51018.  01h    var    command string
  51019.   N    BYTE    0Dh (CR)
  51020. --------O-2E---------------------------------
  51021. INT 2E UP - Windows NT - NATIVE API
  51022.     EAX = function number
  51023.     EDX = address of parameter block
  51024. Return: ???
  51025. --------l-2E----BXE22E-----------------------
  51026. INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL
  51027.     BX = E22Eh
  51028.     DS:SI -> zero byte
  51029. Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch
  51030. ----------2F---------------------------------
  51031. INT 2F - Multiplex - NOTES
  51032.     AH = identifier of program which is to handle the interrupt
  51033.        00h-7Fh reserved for DOS
  51034.        B8h-BFh reserved for networks
  51035.        C0h-FFh reserved for applications
  51036.     AL is the function code
  51037.    This is a general mechanism for verifying the presence of a TSR and
  51038.    communicating with it.  When searching for a free identifier code for AH
  51039.    using the installation check (AL=00h), the calling program should set
  51040.    BX/CX/DX to 0000h and must not depend on any registers other than CS:IP
  51041.    and SS:SP to be valid on return, since numerous programs now use additional
  51042.    registers on input and/or output for the installation check.
  51043. Notes:    Since the multiplex chain is growing so long, and beginning to
  51044.       experience multiplex number collisions, I am proposing an alternate
  51045.       multiplex interrupt on INT 2D.  If you decide to use the alternate
  51046.       multiplex, please let me know.
  51047.     DOS and some other programs return values in the flags register, so
  51048.       any TSR which chains by calling the previous handler rather than
  51049.       jumping to it should ensure that the returned flags are preserved
  51050.       and passed back to the original caller
  51051. SeeAlso: INT 2D
  51052. --------t-2F---------------------------------
  51053. INT 2F - BMB Compuscience Canada Utilities Interface - INSTALLATION CHECK
  51054.     AH = xx (dynamically assigned based upon a search for a multiplex
  51055.          number which doesn't answer installed)
  51056.     AL = 00h installation check
  51057.     ES:DI = EBEBh:BEBEh
  51058. Return: AL = 00h not installed
  51059.          01h not installed, not OK to install
  51060.          FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point
  51061.          to a string of the form 'MMMMPPPPPPPPvNNNN' where MMMM is a
  51062.          short form of the manufacturer's name, PPPPPPPP is a product
  51063.          name and NNNN is the product's version number
  51064. --------t-2F---------------------------------
  51065. INT 2F - Ross Wentworth's Turbo Pascal POPUP LIBRARY
  51066.     AH = programmer-selected multiplex number
  51067.     AL = function
  51068.         00h installation check
  51069.         Return: AL = FFh if installed
  51070.         01h get TSR interrupt vectors
  51071.         Return: DX:AX -> vector table (see #1279)
  51072.         02h get TSR code segment
  51073.         Return: AX = code segment for all interrupt handlers
  51074.         03h call user exit routine and release TSR's memory
  51075.         04h get signature string
  51076.         Return: DX:AX -> counted string containing signature
  51077.         05h get TSR's INT 2F handler
  51078.         Return: DX:AX -> INT 2F handler
  51079.         06h enable/disable TSR
  51080.         BL = new state (00h disabled, 01h enabled)
  51081.         07h activate TSR (popup if not disabled)
  51082.         08h get hotkeys
  51083.         BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
  51084.         Return: AX = hotkey (AH = keyflags, AL = scancode)
  51085.         09h set hotkey
  51086.         BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
  51087.         CX = new hotkey (CH = keyflags, CL = scancode)
  51088.         0Ah-1Fh reserved
  51089. Index:    installation check;Ross Wentworth POPUP library
  51090. Index:    hotkeys;Ross Wentworth POPUP library
  51091.  
  51092. Format of POPUP vector table entry:
  51093. Offset    Size    Description    (Table 1279)
  51094.  00h    BYTE    vector number (00h = end of table)
  51095.  01h    DWORD    original vector
  51096.  05h    WORD    offset of interrupt handler in TSR's code segment
  51097. --------t-2F---------------------------------
  51098. INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
  51099.     AH = xx (dynamically assigned based upon a search for a multiplex
  51100.          number from C0h to FFh which doesn't answer installed)
  51101.     AL = 00h installation check
  51102.     ES:DI = 1492h:1992h
  51103. Return: AL = 00h not installed
  51104.          01h not installed, not OK to install
  51105.          FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
  51106.          point to author_name_ver table (see #1280)
  51107.     AH = FFh
  51108. Note:    this interface permits advanced communication with TSRs: it is possible
  51109.       to make a generic uninstall utility, advanced TSR relocator programs
  51110.       in order to fit fragmented memory areas, etc.
  51111. See also: INT 2D"AMIS",INT 2F"Compuscience"
  51112. Index:    installation check;CiriSOFT TSR interface
  51113. Index:    uninstall;CiriSOFT TSR interface
  51114.  
  51115. Format of CiriSOFT author_name_ver table:
  51116. Offset    Size    Description    (Table 1280)
  51117.  -16    WORD    segment of the start of the resident TSR code (CS in programs
  51118.           with PSP, XMS upper memory segment if installed as UMB...)
  51119.  -14    WORD    offset of the start of the resident TSR code (frequently 100h
  51120.           in *.COM programs and 0 in upper memory TSR's).
  51121.  -12    WORD    memory used by TSR (in paragraphs). Knowing the memory area
  51122.           used by TSR is possible to determine if hooked vectors are
  51123.           still pointing it (and if it is safe to uninstall).
  51124.  -10    BYTE    characteristics byte (see #1281)
  51125.  -9    BYTE    number of multiplex entry used (redefinition available). Note
  51126.           that the TSR must use THIS variable in it's INT 2Fh handler.
  51127.  -8    WORD    offset to vector_area table (see #1282)
  51128.  -6    WORD    offset to extra_area table (see bit 7 in offset -10 and below)
  51129.  -4   4 BYTEs    signature string "*##*"
  51130.  00h    var    "AUTHOR:PROGRAM_NAME:VERSION",0     (variable length, this area
  51131.           is used in order to determine if the TSR is already resident
  51132.           and it's version code; the ':' char is used as delimiter)
  51133.  
  51134. Bitfields for CiriSOFT characteristics byte:
  51135. Bit(s)    Description    (Table 1281)
  51136.  0-2    type
  51137.     000 normal program (with PSP)
  51138.     001 upper XMS memory block (needed HIMEM.SYS function to free memory
  51139.           when uninstalling)
  51140.     010 device driver (*.SYS)
  51141.     011 device driver in EXE format
  51142.     1xx others (reserved)
  51143.  3-6    reserved
  51144.  7    set if extra_table defined and supported
  51145.  
  51146. Format of CiriSOFT vector_area table:
  51147. Offset    Size    Description    (Table 1282)
  51148.  -1    BYTE    number of vectors intercepted by TSR
  51149.  00h    BYTE    first vector number
  51150.  01h    DWORD    first vector pointer before installing the TSR
  51151.  05h    BYTE    second vector number
  51152.  06h    DWORD    second vector pointer before installing the TSR
  51153.  0Ah    ...    (and so on)
  51154. Note:    the TSR must use these variables to invoke the previous interrupt
  51155.       handler routines
  51156.  
  51157. Format of extra_area table (needed only to improve relocation feature):
  51158. Offset    Size    Description    (Table 1283)
  51159.  00h    WORD    offset to external_ctrl table (0 if not supported)
  51160.  02h    WORD    reserved for future use (0)
  51161.  
  51162. Format of CiriSOFT external_ctrl table:
  51163. Offset    Size    Description    (Table 1284)
  51164.  00h    BYTE    bit 0: TSR is relocatable (no absolute segment references)
  51165.  01h    WORD    offset to a variable which can activate/inhibit the TSR
  51166.  ---And if bit 0 in offset 00h is off:
  51167.  03h    DWORD    pointer to ASCIZ pathname for executable file which supports
  51168.           /SR parameter (silent installation & inhibit)
  51169.  07h    DWORD    pointer to first variable to initialize on the copy reloaded
  51170.           from the previous TSR still resident
  51171.  0Bh    DWORD    pointer to last variable (all variables packed in one block)
  51172. --------c-2F00-------------------------------
  51173. INT 2F U - DOS 2.x only PRINT.COM - ???
  51174.     AH = 00h
  51175.     ???
  51176. Return: ???
  51177. Notes:    DOS 2.x PRINT.COM does not chain to previous INT 2F handler
  51178.     values in AH other than 00h or 01h cause PRINT to return the number of
  51179.       files in the queue in AH
  51180. SeeAlso: AH=01h
  51181. --------P-2F00-------------------------------
  51182. INT 2F U - PSPRINT - PRINT JOB CONTROL
  51183.     AH = 00h
  51184.     ???
  51185. Return: ???
  51186. --------c-2F0080-----------------------------
  51187. INT 2F - DOS 3.1+ PRINT - GIVE PRINT A TIME SLICE
  51188.     AX = 0080h
  51189. Return: after PRINT executes
  51190. Notes:    PRINT returns AL=01h if AH=00h but AL is not 80h on entry
  51191.     this function is not supported by the Novell DOS 7 PRINT.COM
  51192. --------N-2F00D8-----------------------------
  51193. INT 2F - Personal NetWare - VLM - ???
  51194.     AX = 00D8h
  51195.     ???
  51196. Return: ???
  51197. Note:    hooked by one of the .VLMs loaded by VLM.EXE v1.10, but apparently a
  51198.       NOP
  51199. --------c-2F01-------------------------------
  51200. INT 2F U - DOS 2.x only PRINT.COM - ???
  51201.     AH = 01h
  51202.     ???
  51203. Return: ???
  51204. Notes:    DOS 2.x PRINT.COM does not chain to previous INT 2F handler
  51205.     values in AH other than 00h or 01h cause PRINT to return the number of
  51206.       files in the queue in AH
  51207. SeeAlso: AH=00h
  51208. --------c-2F0100-----------------------------
  51209. INT 2F - DOS 3+ PRINT - INSTALLATION CHECK
  51210.     AX = 0100h
  51211. Return: AL = status
  51212.         00h not installed
  51213.         01h not installed, but not OK to install
  51214.         FFh installed
  51215.         AH = 00h (Novell DOS 7)
  51216. SeeAlso: AX=0101h
  51217. --------c-2F0100SI20D6-----------------------
  51218. INT 2F U - PrintCache 3.1 PRINT.COM - INSTALLATION CHECK
  51219.     AX = 0100h
  51220.     SI = 20D6h
  51221.     DI = 8761h
  51222. Return: AX = 00FFh if installed
  51223.     DI = 0001h if PrintCache's PRINT.COM installed and magic values match
  51224.         SI = resident code segment
  51225. Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
  51226.       LaserTools' PrintCache memory/disk-based print spooler package
  51227. Note:    if either of SI or DI differ from the indicated magic values, only AX
  51228.       will be modified on return, for compatibility with DOS PRINT
  51229. SeeAlso: AX=0101h/SI=20D6h,AX=C000h"PCACHE"
  51230. --------c-2F0101-----------------------------
  51231. INT 2F - DOS 3+ PRINT - SUBMIT FILE FOR PRINTING
  51232.     AX = 0101h
  51233.     DS:DX -> submit packet (see #1285)
  51234. Return: CF clear if successful
  51235.         AL = status
  51236.         01h added to queue
  51237.         9Eh now printing
  51238.     CF set on error
  51239.         AX = error code (see #1286,#0811 at INT 21/AH=59h)
  51240. SeeAlso: AX=0102h
  51241.  
  51242. Format of PRINT submit packet:
  51243. Offset    Size    Description    (Table 1285)
  51244.  00h    BYTE    level (must be 00h)
  51245.  01h    DWORD    pointer to ASCIZ filename (no wildcards)
  51246.  
  51247. (Table 1286)
  51248. Values for PRINT error code:
  51249.  0001h    invalid function
  51250.  0002h    file not found
  51251.  0003h    path not found
  51252.  0004h    out of file handles
  51253.  0005h    access denied
  51254.  0008h    print queue full
  51255.  0009h    spooler busy
  51256.  000Ch    name too long
  51257.  000Fh    invalid drive
  51258. --------c-2F0101SI20D6-----------------------
  51259. INT 2F U - PrintCache v3.1 PRINT.COM - SUBMIT FILE FOR PRINTING
  51260.     AX = 0101h
  51261.     SI = 20D6h
  51262.     DI = 8761h
  51263.     DS:DX -> submit packet (see #1285)
  51264.     CL = print options
  51265.         bit 4: use default options
  51266. Return: CF clear if successful
  51267.         AL = status
  51268.         01h added to queue
  51269.         9Eh now printing
  51270.     CF set on error
  51271.         AX = error code (see #1286)
  51272. Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
  51273.       LaserTools' PrintCache memory/disk-based print spooler package
  51274. Note:    if either SI or DI differs from the indicated magic values on entry,
  51275.       PrintCache will use the default print options for the file for
  51276.       compatibility with DOS PRINT
  51277. SeeAlso: AX=0100h/SI=20D6h,AX=0101h,AX=0107h"PrintCache"
  51278. --------c-2F0102-----------------------------
  51279. INT 2F - DOS 3+ PRINT - REMOVE FILE FROM PRINT QUEUE
  51280.     AX = 0102h
  51281.     DS:DX -> ASCIZ filename (wildcards allowed)
  51282. Return: CF clear if successful
  51283.     CF set on error
  51284.         AX = error code (see #1286)
  51285. SeeAlso: AX=0101h,AX=0103h
  51286. --------c-2F0103-----------------------------
  51287. INT 2F - DOS 3+ PRINT - CANCEL ALL FILES IN PRINT QUEUE
  51288.     AX = 0103h
  51289. Return: CF clear if successful
  51290.     CF set on error
  51291.         AX = error code (see #1286)
  51292. SeeAlso: AX=0102h
  51293. --------c-2F0104-----------------------------
  51294. INT 2F - DOS 3+ PRINT - FREEZE PRINT QUEUE TO READ JOB STATUS
  51295.     AX = 0104h
  51296. Return: CF clear if successful
  51297.         DX = error count since status last read
  51298.         DS:SI -> print queue
  51299.     CF set on error
  51300.         AX = error code (see #1286)
  51301. Desc:    get the list of print jobs, temporarily suspending PRINT's activities
  51302.       to avoid changing the list while it is being examined
  51303. Notes:    the print queue is an array of 64-byte ASCIZ filenames terminated by
  51304.       an empty filename; the first name is the file currently being printed
  51305.     printing is stopped until AX=0105h is called to prevent the queue
  51306.       from changing while the filenames are being read
  51307. SeeAlso: AX=0101h,AX=0105h
  51308. --------c-2F0105-----------------------------
  51309. INT 2F - DOS 3+ PRINT - RESTART PRINT QUEUE AFTER STATUS READ
  51310.     AX = 0105h
  51311. Return: CF clear if successful
  51312.     CF set on error
  51313.         AX = error code (see #1286)
  51314. Desc:    restart PRINT's activities once an application finishes examining the
  51315.       print queue
  51316. SeeAlso: AX=0104h
  51317. --------c-2F0106-----------------------------
  51318. INT 2F - DOS 3.3+ PRINT - GET PRINTER DEVICE
  51319.     AX = 0106h
  51320. Return: CF set if files in print queue
  51321.         AX = error code 0008h (queue full)
  51322.         DS:SI -> device driver header
  51323.     CF clear if print queue empty
  51324.         AX = 0000h
  51325. Desc:    determine which device, if any, PRINT is currently using for output
  51326. Notes:    undocumented prior to the release of MS-DOS 5.0
  51327.     this function can be used to allow a program to avoid printing to the
  51328.       printer on which PRINT is currently performing output
  51329. SeeAlso: AX=0104h
  51330. --------c-2F0107-----------------------------
  51331. INT 2F U - PrintCache v3.1 PRINT.COM - SET TRAILING FORM FEEDS
  51332.     AX = 0107h
  51333.     CL bit 0: output form feed between print jobs
  51334. Return: AL destroyed
  51335. SeeAlso: AX=0100h/SI=20D6h,AX=0101h/SI=20D6h
  51336. --------N-2F0200-----------------------------
  51337. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - INSTALLATION CHECK
  51338.     AX = 0200h
  51339. Return: AL = FFh if installed
  51340. Desc:    determine whether the PC LAN Program redirector is installed
  51341. SeeAlso: AX=0201h,AX=0203h
  51342. --------N-2F0201-----------------------------
  51343. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
  51344.     AX = 0201h
  51345. Return: nothing???
  51346. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  51347.     AX=0202h appears to be the opposite function
  51348.     these functions are supposedly used to signal opening and closing of
  51349.       printers
  51350. SeeAlso: AX=0202h
  51351. --------N-2F0202-----------------------------
  51352. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
  51353.     AX = 0202h
  51354.     ???
  51355. Return: nothing???
  51356. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  51357.     these functions are supposedly used to signal opening and closing of
  51358.       printers
  51359. SeeAlso: AX=0201h
  51360. --------N-2F0203-----------------------------
  51361. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
  51362.     AX = 0203h
  51363. Return: nothing???
  51364. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  51365.     AX=0204h appears to be the opposite function
  51366.     these functions are supposedly used to signal opening and closing of
  51367.       printers
  51368. SeeAlso: AX=0200h,AX=0204h
  51369. --------N-2F0204-----------------------------
  51370. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
  51371.     AX = 0204h
  51372.     ???
  51373. Return: nothing???
  51374. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  51375.     AX=0203h appears to be the opposite function
  51376.     these functions are supposedly used to signal opening and closing of
  51377.       printers
  51378. SeeAlso: AX=0200h,AX=0203h
  51379. --------N-2F---------------------------------
  51380. INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
  51381.     AX = 02xxh
  51382.     ???
  51383. Return: ???
  51384. --------l-2F0500-----------------------------
  51385. INT 2F U - DOS 3+ CRITICAL ERROR HANDLER - INSTALLATION CHECK
  51386.     AX = 0500h
  51387. Return: AL = 00h not installed, OK to install
  51388.          01h not installed, can't install
  51389.          FFh installed
  51390. Desc:    determine whether a critical error message override is installed
  51391. Note:    this set of functions allows a user program to partially or completely
  51392.       override the default critical error handler's message in COMMAND.COM
  51393. SeeAlso: AH=05h,INT 24
  51394. --------l-2F05-------------------------------
  51395. INT 2F CU - DOS 3+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING
  51396.     AH = 05h
  51397. ---DOS 3.x---
  51398.     AL = extended error code (not zero)
  51399. ---DOS 4+ ---
  51400.     AL = error type
  51401.         01h DOS extended error code
  51402.         02h parameter error
  51403.     BX = error code
  51404. Return: CF clear if successful
  51405.         ES:DI -> ASCIZ error message (read-only)
  51406.         AL = completion state
  51407.         00h message requires completion with device name, drive, etc.
  51408.         01h message is complete as returned
  51409.     CF set if error code can't be converted to string
  51410.         AX,DI,ES destroyed
  51411.     other flags corrupted
  51412. Notes:    called at start of COMMAND.COM's default critical error handler if
  51413.       installed by a user program, allowing partial or complete overriding
  51414.       of the default error messages
  51415.     subfunction 02h is called by many DOS 4 external programs
  51416.     DR-DOS's COMMAND.COM appends additional info ("0 files copied") to the
  51417.       returned string
  51418. SeeAlso: AX=0500h,AX=122Eh,INT 24
  51419. --------U-2F0600-----------------------------
  51420. INT 2F - DOS 3+ ASSIGN - INSTALLATION CHECK
  51421.     AX = 0600h
  51422. Return: AL = status
  51423.         00h not installed
  51424.         01h not installed, but not OK to install
  51425.         FFh installed
  51426. Notes:    ASSIGN is not a TSR in DR-DOS 5.0; it is internally replaced by SUBST
  51427.       (see INT 21/AH=52h)
  51428.     undocumented prior to the release of DOS 5.0
  51429. SeeAlso: AX=0601h,INT 21/AH=52h
  51430. --------U-2F0601-----------------------------
  51431. INT 2F U - DOS 3+ ASSIGN - GET DRIVE ASSIGNMENT TABLE
  51432.     AX = 0601h
  51433. Return: ES = segment of ASSIGN work area and assignment table
  51434. Note:    under DOS 3+, the 26 bytes starting at ES:0103h specify which drive
  51435.       each of A: to Z: is mapped to.  Initially set to 01h 02h 03h....
  51436. SeeAlso: AX=0600h
  51437. --------D-2F0800-----------------------------
  51438. INT 2F U - DRIVER.SYS support - INSTALLATION CHECK
  51439.     AX = 0800h
  51440. Return: AL = status
  51441.         00h not installed, OK to install
  51442.         01h not installed, not OK to install
  51443.         FFh installed
  51444. Desc:    determine whether the internal support code used by DRIVER.SYS is
  51445.       present; it is always present in DOS 3.2+
  51446. Note:    supported by DR-DOS 5.0
  51447. --------D-2F0801-----------------------------
  51448. INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE
  51449.     AX = 0801h
  51450.     DS:DI -> drive data table (see #1293,#1294,#1295)
  51451. Return: AX,BX,SI,ES destroyed
  51452. Notes:    moves down internal list of drive data tables, copying and modifying
  51453.       the drive description flags word for tables referencing same physical
  51454.       drive
  51455.     the data table is appended to the chain of tables
  51456.     supported by DR-DOS 5.0
  51457. SeeAlso: AX=0803h
  51458. --------D-2F0802-----------------------------
  51459. INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST
  51460.     AX = 0802h
  51461.     ES:BX -> device driver request header (see #1289)
  51462. Return: request header updated as per requested operation
  51463. Notes:    supported by DR-DOS 5.0
  51464.     DOS 3.2 executes this function on any AL value from 02h through F7h;
  51465.       DOS 4+ executes this function on AL=02h and AL=04h-F7h
  51466.     the command codes and structures described below apply to all drivers
  51467.       which support the appropriate commands; this call is just one of a
  51468.       number of ways in which a device driver request may be invoked
  51469. SeeAlso: AX=0800h,AX=0801h,AX=0803h,INT 21/AH=52h,INT 21/AH=99h,INT 21/AH=9Ah
  51470.  
  51471. (Table 1287)
  51472. Values for device driver command code:
  51473.  00h    INIT
  51474.  01h    MEDIA CHECK (block devices)
  51475.  02h    BUILD BPB (block devices)
  51476.  03h    IOCTL INPUT
  51477.  04h    INPUT
  51478.  05h    NONDESTRUCTIVE INPUT, NO WAIT (character devices)
  51479.  06h    INPUT STATUS (character devices)
  51480.  07h    INPUT FLUSH (character devices)
  51481.  08h    OUTPUT
  51482.  09h    OUTPUT WITH VERIFY
  51483.  0Ah    OUTPUT STATUS (character devices)
  51484.  0Bh    OUTPUT FLUSH (character devices)
  51485.  0Ch    IOCTL OUTPUT
  51486.  0Dh    (DOS 3+) DEVICE OPEN
  51487.  0Eh    (DOS 3+) DEVICE CLOSE
  51488.  0Fh    (DOS 3+) REMOVABLE MEDIA (block devices)
  51489.  10h    (DOS 3+) OUTPUT UNTIL BUSY (character devices)
  51490.  11h    (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only)
  51491.  12h    (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only)
  51492.  13h    (DOS 3.2+) GENERIC IOCTL
  51493.  14h    unused
  51494.  15h    (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG
  51495.  16h    unused
  51496.  17h    (DOS 3.2+) GET LOGICAL DEVICE
  51497.  18h    (DOS 3.2+) SET LOGICAL DEVICE
  51498.  19h    (DOS 5+) CHECK GENERIC IOCTL SUPPORT
  51499.  80h    (CD-ROM) READ LONG
  51500.  81h    (CD-ROM) reserved
  51501.  82h    (CD-ROM) READ LONG PREFETCH
  51502.  83h    (CD-ROM) SEEK
  51503.  84h    (CD-ROM) PLAY AUDIO
  51504.  85h    (CD-ROM) STOP AUDIO
  51505.  86h    (CD-ROM) WRITE LONG
  51506.  87h    (CD-ROM) WRITE LONG VERIFY
  51507.  88h    (CD-ROM) RESUME AUDIO
  51508.  
  51509. Bitfields for device request status:
  51510. Bit(s)    Description    (Table 1288)
  51511.  15    error
  51512.  14-11    reserved
  51513.  10    ??? set by DOS kernel on entry to some driver calls
  51514.  9    busy
  51515.  8    done (may be clear on return under European MS-DOS 4.0)
  51516.  7-0    error code if bit 15 set (see #1290)
  51517.  
  51518. Format of device driver request header:
  51519. Offset    Size    Description    (Table 1289)
  51520.  00h    BYTE    length of request header
  51521.  01h    BYTE    subunit within device driver
  51522.  02h    BYTE    command code (see #1287)
  51523.  03h    WORD    status (filled in by device driver) (see #1288)
  51524. ---DOS---
  51525.  05h  4 BYTEs    reserved (unused in DOS 2.x and 3.x)
  51526.  09h    DWORD    (European MS-DOS 4.0 only) pointer to next request header in
  51527.               device's request queue
  51528.         (other versions) reserved (unused in DOS 2.x and 3.x)
  51529. ---STARLITE architecture---
  51530.  05h    DWORD    pointer to next request header
  51531.  09h  4 BYTEs    reserved
  51532. ---command code 00h---
  51533.  0Dh    BYTE    (return) number of units
  51534.  0Eh    DWORD    (call) pointer to DOS device helper function (see #1291)
  51535.               (European MS-DOS 4.0 only)
  51536.         (call) pointer past end of memory available to driver (DOS 5+)
  51537.         (return) address of first free byte following driver
  51538.  12h    DWORD    (call) pointer to commandline arguments
  51539.         (return) pointer to BPB array (block drivers) or
  51540.               0000h:0000h (character drivers)
  51541.  16h    BYTE    (DOS 3+) drive number for first unit of block driver (0=A)
  51542.    ---European MS-DOS 4.0---
  51543.  17h    DWORD    pointer to function to save registers on stack
  51544.    ---DOS 5+ ---
  51545.  17h    WORD    (return) error-message flag
  51546.         0001h MS-DOS should display error msg on init failure
  51547. ---command code 01h---
  51548.  0Dh    BYTE    media descriptor
  51549.  0Eh    BYTE    (return) media status
  51550.         00h don't know
  51551.         01h media has not changed
  51552.         FFh media has been changed
  51553.  0Fh    DWORD    (return, DOS 3+) pointer to previous volume ID if OPEN/CLOSE/RM
  51554.           bit in device header is set and disk changed
  51555. ---command code 02h---
  51556.  0Dh    BYTE    media descriptor
  51557.  0Eh    DWORD    transfer address
  51558.         -> scratch sector if NON-IBM FORMAT bit in device header set
  51559.         -> first FAT sector otherwise
  51560.  12h    DWORD    pointer to BPB (set by driver) (see INT 21/AH=53h)
  51561. ---command codes 03h,0Ch--- (see also INT 21/AX=4402h,INT 21/AX=4403h)
  51562.  0Dh    BYTE    media descriptor (block devices only)
  51563.  0Eh    DWORD    transfer address
  51564.  12h    WORD    (call) number of bytes to read/write
  51565.         (return) actual number of bytes read or written
  51566. ---command codes 04h,08h,09h---
  51567.  0Dh    BYTE    media descriptor (block devices only)
  51568.  0Eh    DWORD    transfer address
  51569.  12h    WORD    byte count (character devices) or sector count (block devices)
  51570.  14h    WORD    starting sector number (block devices only)
  51571.  16h    DWORD    (DOS 3+) pointer to volume ID if error 0Fh returned
  51572.  1Ah    DWORD    (DOS 4+) 32-bit starting sector number (block devices with
  51573.           device attribute word bit 1 set only) if starting sector
  51574.           number above is FFFFh (see INT 21/AH=52h)
  51575. ---command code 05h---
  51576.  0Dh    BYTE    byte read from device if BUSY bit clear on return
  51577. ---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
  51578.  no further fields
  51579. ---command code 10h---
  51580.  0Dh    BYTE    unused
  51581.  0Eh    DWORD    transfer address
  51582.  12h    WORD    (call) number of bytes to write
  51583.         (return) actual number of bytes written
  51584. ---command codes 11h,12h---
  51585.  0Dh    BYTE    reserved
  51586. ---command code 15h---
  51587.  no further fields
  51588. ---command codes 13h,19h---
  51589.  0Dh    BYTE    category code
  51590.         00h unknown
  51591.         01h COMn:
  51592.         03h CON
  51593.         05h LPTn:
  51594.         07h mouse (European MS-DOS 4.0)
  51595.         08h disk
  51596.         9Eh (STARLITE) Media Access Control driver
  51597.  0Eh    BYTE    function code
  51598.         00h (STARLITE) MAC Bind request
  51599.  0Fh    WORD    copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
  51600.         SI contents (European MS-DOS 4.0)
  51601.  11h    WORD    offset of device driver header
  51602.         DI contents (European MS-DOS 4.0)
  51603.  13h    DWORD    pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
  51604. ---command codes 80h,82h---
  51605.  0Dh    BYTE    addressing mode
  51606.         00h HSG (default)
  51607.         01h Phillips/Sony Red Book
  51608.  0Eh    DWORD    transfer address (ignored for command 82h)
  51609.  12h    WORD    number of sectors to read
  51610.         (if 0 for command 82h, request is an advisory seek)
  51611.  14h    DWORD    starting sector number
  51612.         logical sector number in HSG mode
  51613.         frame/second/minute/unused in Red Book mode
  51614.         (HSG sector = minute * 4500 + second * 75 + frame - 150)
  51615.  18h    BYTE    data read mode
  51616.         00h cooked (2048 bytes per frame)
  51617.         01h raw (2352 bytes per frame, including EDC/ECC)
  51618.  19h    BYTE    interleave size (number of sectors stored consecutively)
  51619.  1Ah    BYTE    interleave skip factor
  51620.         (number of sectors between consecutive portions)
  51621. ---command code 83h---
  51622.  0Dh    BYTE    addressing mode (see above)
  51623.  0Eh    DWORD    transfer address (ignored)
  51624.  12h    WORD    number of sectors to read (ignored)
  51625.  14h    DWORD    starting sector number (see also above)
  51626. ---command code 84h---
  51627.  0Dh    BYTE    addressing mode (see above)
  51628.  0Eh    DWORD    starting sector number (see also above)
  51629.  12h    DWORD    number of sectors to play
  51630. ---command codes 85h,88h---
  51631.  no further fields
  51632. ---command codes 86h,87h---
  51633.  0Dh    BYTE    addressing mode (see above)
  51634.  0Eh    DWORD    transfer address (ignored in write mode 0)
  51635.  12h    WORD    number of sectors to write
  51636.  14h    DWORD    starting sector number (see also above)
  51637.  18h    BYTE    write mode
  51638.         00h mode 0 (write all zeros)
  51639.         01h mode 1 (default) (2048 bytes per sector)
  51640.         02h mode 2 form 1 (2048 bytes per sector)
  51641.         03h mode 2 form 2 (2336 bytes per sector)
  51642.  19h    BYTE    interleave size (number of sectors stored consecutively)
  51643.  1Ah    BYTE    interleave skip factor
  51644.         (number of sectors between consecutive portions)
  51645.  
  51646. (Table 1290)
  51647. Values for device driver error code:
  51648.  00h    write-protect violation
  51649.  01h    unknown unit
  51650.  02h    drive not ready
  51651.  03h    unknown command
  51652.  04h    CRC error
  51653.  05h    bad drive request structure length
  51654.  06h    seek error
  51655.  07h    unknown media
  51656.  08h    sector not found
  51657.  09h    printer out of paper
  51658.  0Ah    write fault
  51659.  0Bh    read fault
  51660.  0Ch    general failure
  51661.  0Dh    reserved
  51662.  0Eh    (CD-ROM) media unavailable
  51663.  0Fh    invalid disk change
  51664.  
  51665. (Table 1291)
  51666. Call European MS-DOS 4.0 device helper function with:
  51667.     DL = function
  51668.         00h "SchedClock" called on each timer tick
  51669.         AL = tick interval in milliseconds
  51670.         01h "DevDone" device I/O complete
  51671.         ES:BX -> request header
  51672.         Note:    must update status word first; may be called from
  51673.               an interrupt handler
  51674.         02h "PullRequest" pull next request from queue
  51675.         DS:SI -> DWORD pointer to start of device's request queue
  51676.         Return: ZF clear if pending request
  51677.                 ES:BX -> request header
  51678.             ZF set if no more requests
  51679.         03h "PullParticular" remove specific request from queue
  51680.         DS:SI -> DWORD pointer to start of device's request queue
  51681.         ES:BX -> request header
  51682.         Return: ZF set if request header not found
  51683.         04h "PushRequest" push the request onto the queue
  51684.         DS:SI -> DWORD pointer to start of device's request queue
  51685.         ES:BX -> request header
  51686.         interrupts disabled
  51687.         05h "ConsInputFilter" keyboard input check
  51688.         AX = character (high byte 00h if PC ASCII character)
  51689.         Return: ZF set if character should be discarded
  51690.             ZF clear if character should be handled normally
  51691.         Note:    called by keyboard interrupt handler so DOS can scan
  51692.               for special input characters
  51693.         06h "SortRequest" push request in sorted order by starting sector
  51694.         DS:SI -> DWORD pointer to start of device's request queue
  51695.         ES:BX -> request header
  51696.         interrupts disabled
  51697.         07h "SigEvent" send signal on keyboard event
  51698.         AH = event identifier
  51699.         Return: AL,FLAGS destroyed
  51700.         09h "ProcBlock" block on event
  51701.         AX:BX = event identifier (typically a pointer)
  51702.         CX = timeout in ms or 0000h for never
  51703.         DH = interruptable flag (nonzero if pause may be interrupted)
  51704.         interrupts disabled
  51705.         Return: after corresponding ProcRun call
  51706.             CF clear if event wakeup, set if unusual wakeup
  51707.             ZF set if timeout wakeup, clear if interrupted
  51708.             AL = wakeup code, nonzero if unusual wakeup
  51709.             interrupts enabled
  51710.             BX,CX,DX destroyed
  51711.         Note:    block process and schedules another to run
  51712.         0Ah "ProcRun" unblock process
  51713.         AX:BX = event identifier (typically a pointer)
  51714.         Return: AX = number of processes awakened
  51715.             ZF set if no processes awakened
  51716.             BX,CX,DX destroyed
  51717.         0Bh "QueueInit" initialize/clear character queue
  51718.         DS:BX -> character queue structure (see #1292)
  51719.         Note:    the queue size field must be set before calling
  51720.         0Dh "QueueWrite" put a character in the queue
  51721.         DS:BX -> character queue (see #1292)
  51722.         AL = character to append to end of queue
  51723.         Return: ZF set if queue is full
  51724.             ZF clear if character stored
  51725.         0Eh "QueueRead" get a character from the queue
  51726.         DS:BX -> character queue (see #1292)
  51727.         Return: ZF set if queue is empty
  51728.             ZF clear if characters in queue
  51729.                 AL = first character in queue
  51730.         10h "GetDOSVar" return pointer to DOS variable
  51731.         AL = index of variable
  51732.             03h current process ID
  51733.         BX = index into variable if AL specifies an array
  51734.         CX = expected length of variable
  51735.         Return: CF clear if successful
  51736.                 DX:AX -> variable
  51737.             CF set on error
  51738.                 AX,DX destroyed
  51739.             BX,CX destroyed
  51740.         Note:    the variables may not be modified
  51741.         14h "Yield" yield CPU if higher-priority task ready to run
  51742.         Return: FLAGS destroyed
  51743.         1Bh "CritEnter" begin system critical section
  51744.         DS:BX -> semaphore (6 BYTEs, initialized to zero)
  51745.         Return: AX,BX,CX,DX destroyed
  51746.         1Ch "CritLeave" end system critical section
  51747.         DS:BX -> semaphore (6 BYTEs, initialized to zero)
  51748.         Return: AX,BX,CX,DX destroyed
  51749.         Note:    must be called in the context of the process which
  51750.               called CritEnter on the semaphore
  51751. Note:    the DWORD pointing at the request queue must be allocated by the driver
  51752.       and initialized to 0000h:0000h.  It always points at the next request
  51753.       to be executed
  51754.  
  51755. Format of European MS-DOS 4.0 character queue:
  51756. Offset    Size    Description    (Table 1292)
  51757.  00h    WORD    size of queue in bytes
  51758.  02h    WORD    index of next character out
  51759.  04h    WORD    count of characters in the queue
  51760.  06h  N BYTEs    queue buffer
  51761. --------D-2F0803-----------------------------
  51762. INT 2F U - DOS 4+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
  51763.     AX = 0803h
  51764. Return: DS:DI -> first drive data table in list
  51765. Note:    not available under DR-DOS 5.0
  51766. SeeAlso: AX=0801h
  51767.  
  51768. Format of DOS 3.30 drive data table:
  51769. Offset    Size    Description    (Table 1293)
  51770.  00h    DWORD    pointer to next table (offset FFFFh if last table)
  51771.  04h    BYTE    physical unit number (for INT 13)
  51772.  05h    BYTE    logical drive number (0=A:)
  51773.  06h 19 BYTEs    BIOS Parameter Block (see also INT 21/AH=53h)
  51774.         Offset    Size    Description
  51775.          00h    WORD    bytes per sector
  51776.          02h    BYTE    sectors per cluster, FFh if unknown
  51777.          03h    WORD    number of reserved sectors
  51778.          05h    BYTE    number of FATs
  51779.          06h    WORD    number of root dir entries
  51780.          08h    WORD    total sectors
  51781.          0Ah    BYTE    media descriptor, 00h if unknown
  51782.          0Bh    WORD    sectors per FAT
  51783.          0Dh    WORD    sectors per track
  51784.          0Fh    WORD    number of heads
  51785.          11h    WORD    number of hidden sectors
  51786.  19h    BYTE    flags
  51787.         bit 6: 16-bit FAT instead of 12-bit FAT
  51788.  1Ah    WORD    number of DEVICE OPEN calls without corresponding DEVICE CLOSE
  51789.  1Ch 11 BYTEs    volume label or "NO NAME    " if none (always "NO NAME" for
  51790.           fixed media)
  51791.  27h    BYTE    terminating null for volume label???
  51792.  28h    BYTE    device type (see INT 21/AX=440Dh)
  51793.  29h    WORD    bit flags describing drive (see #1296)
  51794.  2Bh    WORD    number of cylinders
  51795.  2Dh 19 BYTEs    BIOS Parameter Block for highest capacity supported
  51796.  40h  3 BYTEs    ???
  51797.  43h  9 BYTEs    filesystem type???, default = "NO NAME    "
  51798.         (apparently only MS-DOS 3.30 fixed media, nulls for removable
  51799.           media and PC-DOS 3.30)
  51800.  4Ch    BYTE    least-significant byte of last-accessed cylinder number
  51801. ---removable media---
  51802.  4Dh    DWORD    time of last access in clock ticks (FFFFFFFFh if never)
  51803. ---fixed media---
  51804.  4Dh    WORD    partition (FFFFh = primary, 0001h = extended)
  51805.  4Fh    WORD    absolute cylinder number of partition's start on physical
  51806.           drive (always FFFFh if primary partition)
  51807.  
  51808. Format of COMPAQ DOS 3.31 drive data table:
  51809. Offset    Size    Description    (Table 1294)
  51810.  00h    DWORD    pointer to next table (offset FFFFh if last table)
  51811.  04h    BYTE    physical unit number (for INT 13)
  51812.  05h    BYTE    logical drive number (0=A:)
  51813.  06h 25 BYTEs    BIOS Parameter Block (see DOS 4.0-6.0 drive data table below)
  51814.  1Fh  6 BYTEs    reserved fields from BPB above???
  51815.  25h    BYTE    flags
  51816.         bit 6: 16-bit FAT instead of 12-bit FAT
  51817.         bit 5: large volume???
  51818.  26h    WORD    device-open count???
  51819.  28h 11 BYTEs    volume label or "NO NAME    " if none (always "NO NAME" for
  51820.           fixed media)
  51821.  33h    BYTE    terminating null for volume label
  51822.  34h    BYTE    device type (see INT 21/AX=440Dh)
  51823.  35h    WORD    bit flags describing drive (see #1296)
  51824.  37h    WORD    number of cylinders
  51825.  39h 25 BYTEs    BIOS parameter block for highest capacity drive supports
  51826.  52h  6 BYTEs    ??? apparently always zeros
  51827.  58h    BYTE    least-significant byte of last-accessed cylinder number
  51828. ---removable media---
  51829.  59h    DWORD    time of last access in clock ticks (FFFFFFFFh if never)
  51830. ---fixed media---
  51831.  59h    WORD    partition (FFFFh = primary, 0001h = extended)
  51832.  5Bh    WORD    absolute cylinder number of partition's start on physical
  51833.           drive (always FFFFh if primary partition)
  51834.  
  51835. Format of DOS 4.0-6.0 drive data table:
  51836. Offset    Size    Description    (Table 1295)
  51837.  00h    DWORD    pointer to next table (offset FFFFh if last table)
  51838.  04h    BYTE    physical unit number (for INT 13)
  51839.  05h    BYTE    logical drive number (0=A:)
  51840.  06h 25 BYTEs    BIOS Parameter Block (see also INT 21/AH=53h)
  51841.         Offset    Size    Description
  51842.          00h    WORD    bytes per sector
  51843.          02h    BYTE    sectors per cluster, FFh if unknown
  51844.          03h    WORD    number of reserved sectors
  51845.          05h    BYTE    number of FATs
  51846.          06h    WORD    number of root dir entries
  51847.          08h    WORD    total sectors (see offset 15h if zero)
  51848.          0Ah    BYTE    media descriptor, 00h if unknown
  51849.          0Bh    WORD    sectors per FAT
  51850.          0Dh    WORD    sectors per track
  51851.          0Fh    WORD    number of heads
  51852.          11h    DWORD    number of hidden sectors
  51853.          15h    DWORD    total sectors if WORD at 08h is zero
  51854.  1Fh    BYTE    flags
  51855.         bit 6: 16-bit FAT instead of 12-bit
  51856.         bit 7: unsupportable disk (all accesses will return Not Ready)
  51857.  20h    WORD    device-open count
  51858.  22h    BYTE    device type (see INT 21/AX=440Dh)
  51859.  23h    WORD    bit flags describing drive (see #1296)
  51860.  25h    WORD    number of cylinders (for partition only, if hard disk)
  51861.  27h 25 BYTEs    BIOS Parameter Block for default (highest) capacity supported
  51862.  40h  6 BYTEs    reserved (part of BPB above)
  51863.  46h    BYTE    last track accessed
  51864. ---removable media---
  51865.  47h    DWORD    time of last access in clock ticks (FFFFFFFFh if never)
  51866. ---fixed media---
  51867.  47h    WORD    partition (FFFFh = primary, 0001h = extended)
  51868.         always 0001h for DOS 5+
  51869.  49h    WORD    absolute cylinder number of partition's start on physical drive
  51870.         (FFFFh if primary partition in DOS 4.x)
  51871. ------
  51872.  4Bh 11 BYTEs    volume label or "NO NAME    " if none (apparently taken from
  51873.           extended boot record rather than root directory)
  51874.  56h    BYTE    terminating null for volume label
  51875.  57h    DWORD    serial number
  51876.  5Bh  8 BYTEs    filesystem type ("FAT12      " or "FAT16    ")
  51877.  63h    BYTE    terminating null for filesystem type
  51878.  
  51879. Bitfields for flags describing drive:
  51880. Bit(s)    Description    (Table 1296)
  51881.  0    fixed media
  51882.  1    door lock ("changeline") supported
  51883.  2    current BPB locked
  51884.  3    all sectors in a track are the same size
  51885.  4    physical drive has multiple logical units
  51886.  5    current logical drive for shared physical drive
  51887.  6    disk change detected
  51888.  7    device parameters were changed (set DASD before formatting)
  51889.     (see #0706 at INT 21/AX=440Dh)
  51890.  8    disk reformatted (BPB of current media was changed)
  51891.  9    access flag (fixed media only, disables reads and writes)
  51892.     (see #0712 at INT 21/AX=440Dh)
  51893. --------f-2F1000-----------------------------
  51894. INT 2F - SHARE - INSTALLATION CHECK
  51895.     AX = 1000h
  51896. Return: AL = status
  51897.         00h not installed, OK to install
  51898.         01h not installed, not OK to install
  51899.         FFh installed
  51900. BUGS:    values of AL other than 00h put DOS 3.x SHARE into an infinite loop
  51901.       (08E9: OR  AL,AL
  51902.        08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3)
  51903.     values of AL other than described here put PC-DOS 4.00 into the same
  51904.       loop (the buggy instructions are the same)
  51905. Notes:    supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
  51906.     if DOS 4.01 SHARE was automatically loaded, file sharing is in an
  51907.       inactive state (due to the undocumented /NC flag used by the autoload
  51908.       code) until this call is made
  51909.     DOS 5+ chains to the previous handler if AL <> 00h on entry
  51910.     Windows Enhanced mode hooks this call and reports that SHARE is
  51911.       installed even when it is not
  51912. SeeAlso: AX=1080h,INT 21/AH=52h
  51913. --------d-2F1001-----------------------------
  51914. INT 2F U - DR-DOS 6.0 SHARE internal - SET ???
  51915.     AX = 1001h
  51916.     DX:BX -> ???function
  51917. Notes:    this function is also supported by SuperStor, a disk-compression
  51918.       program by Addstor which is bundled with DR-DOS 6.0, and the
  51919.       Novell DOS 7 DELWATCH.EXE
  51920.     the default handler for the pointer set by this call under DELWATCH
  51921.       simply returns with CF set
  51922. SeeAlso: AX=1000h,AX=F800h
  51923. --------f-2F1040-----------------------------
  51924. INT 2F U - DOS 4 only SHARE internal - ???
  51925.     AX = 1040h
  51926.     ???
  51927. Return: AL = FFh???
  51928. SeeAlso: AX=1000h
  51929. --------f-2F1080-----------------------------
  51930. INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS
  51931.     AX = 1080h
  51932. Return: AL = status
  51933.         F0h successful
  51934.         FFh checking was already on
  51935. Note:    DOS 4.x SHARE has dual functions: FCB support for large (>32M) media
  51936.       and file sharing checks.  The undocumented commandline flag /NC can
  51937.       be used to disable the sharing code.
  51938. SeeAlso: AX=1000h,AX=1081h
  51939. --------f-2F1081-----------------------------
  51940. INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS
  51941.     AX = 1081h
  51942. Return: AL = status
  51943.         F0h successful
  51944.         FFh checking was already off
  51945. Note:    (see AX=1080h)
  51946. SeeAlso: AX=1000h,AX=1080h
  51947. ----------2F10FE-----------------------------
  51948. INT 2F U - Novell DOS 7 DELWATCH.EXE - INSTALLATION CHECK
  51949.     AX = 10FEh
  51950. Return: AX = 20FFh if installed and active
  51951.         DX:BX -> private entry point
  51952.  
  51953. (Table 1297)
  51954. Call DELWATCH private entry point with:
  51955.     AH = function
  51956.         00h NOP???
  51957.         Return: AX = 0000h
  51958.             CX = 0004h (unsupported function)
  51959.         01h disable DELWATCH on drive
  51960.         AL = drive number (00h = A:)
  51961.         Return: AX = status (0000h if failed, FFFFh if successful)
  51962.         02h ???
  51963.         AL = drive number (00h = A:)
  51964.         ???
  51965.         Return: ???
  51966.         03h    ???
  51967.         AL = drive number (00h = A:)
  51968.         CX = ??? (0000h/0001h)
  51969.         ???
  51970.         Return: ???
  51971.         04h ???
  51972.         AL = drive number (00h = A:)
  51973.         ???
  51974.         Return: ???
  51975.         05h ???
  51976.         AL = drive number (00h = A:)
  51977.         ???
  51978.         Return: ???
  51979.         06h enable DELWATCH on drive
  51980.         AL = drive number with bit 7 set (80h = A:, etc.)
  51981.         BX = maximum files of same name in one directory to save
  51982.         CX = maximum files to save on this disk
  51983.         ???
  51984.         Return: AX = status
  51985.                 0000h failed
  51986.                 FFFFh successful
  51987.             CX = error code on failure
  51988.                 (0004h if AL < 80h on entry)
  51989.         07h ???
  51990.         08h set file extensions list
  51991.         AL = sense (00h exclude named extensions, 01h only named ext.)
  51992.         DS:BX -> 31-byte ASCIZ extension list (three blank-padded bytes
  51993.               per extension)
  51994.         Return: AX = FFFFh (successful)
  51995.         09h    ???
  51996.         AL = drive number (00h = A:)
  51997.         ???
  51998.         Return: ???
  51999.         0Ah ???
  52000.         AL = drive number (00h = A:)
  52001.         ???
  52002.         Return: ???
  52003.         0Bh reset ???
  52004.         Return: AX = FFFFh (successful)
  52005.         see also function 0Dh
  52006.         0Ch check if drive enabled
  52007.         AL = drive number with bit 7 set (80h = A:, etc.)
  52008.         Return: AX = state
  52009.                 0000h disabled or error (check CX)
  52010.                 0001h drive enabled
  52011.             CX = error code (0004h invalid drive number)
  52012.         0Dh set ???
  52013.         BX = ???
  52014.         Return: AX = FFFFh (successful)
  52015.         see also function 0Bh
  52016.         0Eh ???
  52017.         AL = drive number (00h = A:)
  52018.         ???
  52019.         Return: ???
  52020. Return: AX = 0000h, CX = 0001h if DELWATCH busy
  52021.     registers unchanged if AH >= 0Fh on entry
  52022. --------O-2F10FF-----------------------------
  52023. INT 2F U - Multiplex - DR-DOS 5.0 - ???
  52024.     AX = 10FFh
  52025.     ES:BX -> ???
  52026. Note:    sets pointer in kernel
  52027. --------N-2F1100-----------------------------
  52028. INT 2F C - NETWORK REDIRECTOR - INSTALLATION CHECK
  52029.     AX = 1100h
  52030. Return: AL = status
  52031.         00h not installed, OK to install
  52032.         01h not installed, not OK to install
  52033.         FFh installed
  52034.         AH = product identifier (ad hoc by various manufacturers)
  52035.             00h if PC Tools v8 DRIVEMAP
  52036.             42h ('B') for Beame&Whiteside BWNFS v3.0a
  52037.             6Eh ('n') for NetWare Lite v1.1 CLIENT
  52038. Notes:    this function is called by the DOS 3.1+ kernel
  52039.     in DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, not in the
  52040.       PC LAN Program redirector; DOS 5+ moves the calls back into the
  52041.       redirector
  52042.     the PC Network 1.00 redirector (renamed to PC LAN Program in 1.1-1.3)
  52043.       only supports AL=00h-27h
  52044. --------d-2F1100SFDADA-----------------------
  52045. INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
  52046.     AX = 1100h subfn DADAh
  52047.     STACK: WORD DADAh
  52048. Return: AL = status
  52049.         00h not installed, OK to install
  52050.         STACK unchanged
  52051.         01h not installed, not OK to install
  52052.         STACK unchanged
  52053.         FFh installed
  52054.         STACK: WORD    ADADh if MSCDEX installed
  52055.                 DADBh if Lotus CD/Networker installed
  52056. Note:    although MSCDEX sets the stack word to ADADh on return, any value other
  52057.       than DADAh is considered to mean that MSCDEX is already installed;
  52058.       Lotus CD/Networker v4+ uses this feature to fool MSCDEX into
  52059.       thinking it is already installed when it is in fact CD/Networker
  52060.       that is installed
  52061. Index:    installation check;Lotus CD/Networker
  52062. Index:    Lotus CD/Networker;installation check
  52063. --------N-2F1101-----------------------------
  52064. INT 2F CU - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY
  52065.     AX = 1101h
  52066.     SS = DOS DS
  52067.     SDA first filename pointer -> fully-qualified directory name
  52068.     SDA CDS pointer -> current directory structure for drive with dir
  52069. Return: CF set on error
  52070.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52071.     CF clear if successful
  52072. Note:    this function is called by the DOS 3.1+ kernel
  52073. SeeAlso: AX=1103h,AX=1105h,INT 21/AH=3Ah,INT 21/AH=60h
  52074. --------N-2F1102-----------------------------
  52075. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY
  52076.     AX = 1102h
  52077.     SS = DOS DS
  52078.     SDA first filename pointer -> fully-qualified directory name
  52079.     SDA CDS pointer -> current directory structure for drive with dir
  52080. Return: CF set on error
  52081.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52082.     CF clear if successful
  52083. Note:    appears to be identical to AX=1101h; MS internal documentation calls
  52084.       this function "SEQ_RMDIR"
  52085. SeeAlso: AX=1101h
  52086. --------N-2F1103-----------------------------
  52087. INT 2F CU - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY
  52088.     AX = 1103h
  52089.     SS = DOS DS
  52090.     SDA first filename pointer -> fully-qualified directory name
  52091.     SDA CDS pointer -> current directory structure for drive with dir
  52092. Return: CF set on error
  52093.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52094.     CF clear if successful
  52095. Note:    this function is called by the DOS 3.1+ kernel
  52096. SeeAlso: AX=1101h,AX=1105h,INT 21/AH=39h,INT 21/AH=60h
  52097. --------N-2F1104-----------------------------
  52098. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY
  52099.     AX = 1104h
  52100.     SS = DOS DS
  52101.     SDA first filename pointer -> fully-qualified directory name
  52102.     SDA CDS pointer -> current directory structure for drive with dir
  52103. Return: CF set on error
  52104.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52105.     CF clear if successful
  52106. Note:    appears to be identical to AX=1103h
  52107. SeeAlso: AX=1103h
  52108. --------N-2F1105-----------------------------
  52109. INT 2F CU - NETWORK REDIRECTOR - CHDIR
  52110.     AX = 1105h
  52111.     SS = DOS DS
  52112.     SDA first filename pointer -> fully-qualified directory name
  52113.     SDA CDS pointer -> current directory structure for drive with dir
  52114. Return: CF set on error
  52115.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52116.     CF clear if successful
  52117.         CDS updated with new path
  52118. Notes:    this function is called by the DOS 3.1+ kernel
  52119.     directory string in CDS should not have a terminating backslash unless
  52120.       the current directory is the root
  52121. SeeAlso: AX=1101h,AX=1103h,INT 21/AH=3Bh,INT 21/AH=60h
  52122. --------N-2F1106-----------------------------
  52123. INT 2F CU - NETWORK REDIRECTOR - CLOSE REMOTE FILE
  52124.     AX = 1106h
  52125.     BX = device info word from SFT
  52126.     ES:DI -> SFT
  52127.         SFT DPB field -> DPB of drive containing file
  52128. Return: CF set on error
  52129.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52130.     CF clear if successful
  52131.         SFT updated (redirector must decrement open count, which may be
  52132.           done with INT 2F/AX=1208h)
  52133. Note:    this function is called by the DOS 3.1+ kernel
  52134. SeeAlso: AX=1116h,AX=1201h,AX=1208h,AX=1227h,INT 21/AH=3Eh
  52135. --------N-2F1107-----------------------------
  52136. INT 2F CU - NETWORK REDIRECTOR - COMMIT REMOTE FILE
  52137.     AX = 1107h
  52138.     ES:DI -> SFT
  52139.         SFT DPB field -> DPB of drive containing file
  52140. Return: CF set on error
  52141.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52142.     CF clear if successful
  52143.         all buffers for file flushed
  52144.         directory entry updated
  52145. Note:    this function is called by the DOS 3.1+ kernel
  52146. SeeAlso: INT 21/AH=68h,INT 21/AX=5D01h
  52147. --------N-2F1108-----------------------------
  52148. INT 2F CU - NETWORK REDIRECTOR - READ FROM REMOTE FILE
  52149.     AX = 1108h
  52150.     ES:DI -> SFT
  52151.         SFT DPB field -> DPB of drive containing file
  52152.     CX = number of bytes
  52153.     SS = DOS DS
  52154.     SDA DTA field -> user buffer
  52155. Return: CF set on error
  52156.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52157.     CF clear if successful
  52158.         CX = number of bytes read (0000h = end of file)
  52159.         SFT updated
  52160. Note:    this function is called by the DOS 3.1+ kernel
  52161. SeeAlso: AX=1109h,AX=1229h,INT 21/AH=3Fh,INT 21/AX=5D06h
  52162. --------N-2F1109-----------------------------
  52163. INT 2F CU - NETWORK REDIRECTOR - WRITE TO REMOTE FILE
  52164.     AX = 1109h
  52165.     ES:DI -> SFT
  52166.         SFT DPB field -> DPB of drive containing file
  52167.     CX = number of bytes
  52168.     SS = DOS DS
  52169.     SDA DTA field -> user buffer
  52170. Return: CF set on error
  52171.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52172.     CF clear if successful
  52173.         CX = number of bytes written
  52174.         SFT updated
  52175. Notes:    this function is called by the DOS 3.1+ kernel
  52176.     PrintCache v3.1 PCACHE.EXE intercepts this function for SFTs where
  52177.       the Device Driver Header field points at PCACHE, but does not
  52178.       intercept any other network redirector functions
  52179. SeeAlso: AX=1107h,AX=1108h,INT 21/AH=40h,INT 21/AX=5D06h
  52180. --------N-2F110A-----------------------------
  52181. INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE
  52182.     AX = 110Ah
  52183.     BX = file handle
  52184.     CX:DX = starting offset
  52185.     SI = high word of size
  52186.     STACK: WORD low word of size
  52187.     ES:DI -> SFT
  52188.         SFT DPB field -> DPB of drive containing file
  52189.     SS = DOS DS
  52190. Return: CF set on error
  52191.        AL = DOS error code (see #0811 at INT 21/AH=59h)
  52192.     STACK unchanged
  52193. Notes:    this function is called by the DOS 3.10-3.31 kernel
  52194.     the redirector is expected to resolve lock conflicts
  52195. SeeAlso: AX=110Bh,INT 21/AH=5Ch
  52196. --------N-2F110A-----------------------------
  52197. INT 2F CU - NETWORK REDIRECTOR (DOS 4+) - LOCK/UNLOCK REGION OF FILE
  52198.     AX = 110Ah
  52199.     BL = function
  52200.         00h lock
  52201.         01h unlock
  52202.     CX = number of lock/unlock parameters (0001h for DOS 4.0-6.1)
  52203.     DS:DX -> parameter block (see #1298)
  52204.     ES:DI -> SFT
  52205.         SFT DPB field -> DPB of drive containing file
  52206.     SS = DOS DS
  52207. Return: CF set on error
  52208.        AL = DOS error code (see #0811 at INT 21/AH=59h)
  52209. Notes:    this function is called by the DOS 4.0+ kernel
  52210.     the redirector is expected to resolve lock conflicts
  52211. SeeAlso: AX=110Bh,INT 21/AH=5Ch
  52212.  
  52213. Format of parameter block entry [array, but currently limited to single entry]:
  52214. Offset    Size    Description    (Table 1298)
  52215.  00h    DWORD    start offset
  52216.  04h    DWORD    size of region
  52217. --------N-2F110B-----------------------------
  52218. INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE
  52219.     AX = 110Bh
  52220.     BX = file handle
  52221.     CX:DX = starting offset
  52222.     SI = high word of size
  52223.     STACK: WORD low word of size
  52224.     ES:DI -> SFT for file
  52225.         SFT DPB field -> DPB of drive containing file
  52226. Return: CF set on error
  52227.        AL = DOS error code (see #0811 at INT 21/AH=59h)
  52228.     STACK unchanged
  52229. Note:    this function is called by the DOS 3.1-3.31 kernel; DOS 4.0+ calls AX=110Ah instead
  52230. SeeAlso: AX=110Ah,INT 21/AH=5Ch
  52231. --------N-2F110C-----------------------------
  52232. INT 2F CU - NETWORK REDIRECTOR - GET DISK INFORMATION
  52233.     AX = 110Ch
  52234.     ES:DI -> current directory structure for desired drive
  52235. Return: CF clear if data valid
  52236.         AL = sectors per cluster
  52237.         AH = media ID byte
  52238.         BX = total clusters
  52239.         CX = bytes per sector
  52240.         DX = number of available clusters
  52241.     CF set if data invalid
  52242. Note:    this function is called by the DOS 3.1+ kernel
  52243. SeeAlso: INT 21/AH=36h
  52244. --------N-2F110D-----------------------------
  52245. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - SET REMOTE FILE'S ATTRIBUTES
  52246.     AX = 110Dh
  52247.     SDA first filename pointer -> name of file
  52248.     ???
  52249. Return: ???
  52250. Note:    similar to AX=110Eh
  52251. SeeAlso: AX=110Eh
  52252. --------N-2F110E-----------------------------
  52253. INT 2F CU - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES
  52254.     AX = 110Eh
  52255.     SS = DOS DS
  52256.     SDA first filename pointer -> fully-qualified name of file
  52257.     SDA CDS pointer -> current directory structure for drive with file
  52258.     STACK: WORD new file attributes
  52259. Return: CF set on error
  52260.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52261.     CF clear if successful
  52262.     STACK unchanged
  52263. Note:    this function is called by the DOS 3.1+ kernel
  52264. SeeAlso: AX=110Dh,AX=110Fh,INT 21/AX=4301h,INT 21/AH=60h
  52265. --------N-2F110F-----------------------------
  52266. INT 2F CU - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE
  52267.     AX = 110Fh
  52268.     SS = DOS DS
  52269.     SDA first filename pointer -> fully-qualified name of file
  52270.     SDA CDS pointer -> current directory structure for drive with file
  52271. Return: CF set on error
  52272.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52273.     CF clear if successful
  52274.         AX = file attributes
  52275.         BX:DI = file size
  52276. Note:    this function is called by the DOS 3.1+ kernel
  52277. SeeAlso: AX=110Eh,INT 21/AX=4300h,INT 21/AH=60h
  52278. --------N-2F1110-----------------------------
  52279. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET REMOTE FILE'S ATTRIBUTES AND SIZE
  52280.     AX = 1110h
  52281.     SDA first filename pointer -> name of file
  52282.     ???
  52283. Return: ???
  52284. Note:    appears to be similar to AX=110Fh
  52285. SeeAlso: AX=110Eh
  52286. --------N-2F1111-----------------------------
  52287. INT 2F CU - NETWORK REDIRECTOR - RENAME REMOTE FILE
  52288.     AX = 1111h
  52289.     SS = DS = DOS DS
  52290.     SDA first filename pointer = offset of fully-qualified old name
  52291.     SDA second filename pointer = offset of fully-qualified new name
  52292.     SDA CDS pointer -> current directory structure for drive with file
  52293. Return: CF set on error
  52294.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52295.     CF clear if successful
  52296. Note:    this function is called by the DOS 3.1+ kernel
  52297. SeeAlso: AX=1112h,INT 21/AH=56h,INT 21/AH=60h
  52298. --------N-2F1112-----------------------------
  52299. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - RENAME REMOTE FILE
  52300.     AX = 1112h
  52301.     SS = DS = DOS DS
  52302.     SDA first filename pointer -> name of file
  52303.     ???
  52304. Return: ???
  52305. Note:    similar to AX=1111h
  52306. SeeAlso: AX=1111h
  52307. --------N-2F1113-----------------------------
  52308. INT 2F CU - NETWORK REDIRECTOR - DELETE REMOTE FILE
  52309.     AX = 1113h
  52310.     SS = DS = DOS DS
  52311.     SDA first filename pointer -> fully-qualified filename in DOS DS
  52312.     SDA CDS pointer -> current directory structure for drive with file
  52313. Return: CF set on error
  52314.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52315.     CF clear if successful
  52316. Notes:    this function is called by the DOS 3.1+ kernel
  52317.     the filespec may contain wildcards
  52318. SeeAlso: AX=1114h,INT 21/AH=41h,INT 21/AH=60h
  52319. --------N-2F1114-----------------------------
  52320. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - DELETE REMOTE FILE
  52321.     AX = 1114h
  52322.     SDA first filename pointer -> name of file
  52323.     ???
  52324. Return: ???
  52325. Note:    similar to AX=1113h
  52326. SeeAlso: AX=1113h
  52327. --------N-2F1115-----------------------------
  52328. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - OPEN REMOTE FILE
  52329.     AX = 1115h
  52330.     SS = DOS DS
  52331.     ES:DI -> SFT ???
  52332.     ???
  52333. Return: ???
  52334. Note:    similar to AX=1116h
  52335. SeeAlso: AX=1116h,AX=112Eh
  52336. --------N-2F1116-----------------------------
  52337. INT 2F CU - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE
  52338.     AX = 1116h
  52339.     ES:DI -> uninitialized SFT
  52340.     SS = DOS DS
  52341.     SDA first filename pointer -> fully-qualified name of file to open
  52342.     STACK: WORD file access and sharing modes (see INT 21/AH=3Dh)
  52343. Return: CF set on error
  52344.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52345.     CF clear if successful
  52346.         SFT filled (except handle count, which DOS manages itself)
  52347.     STACK unchanged
  52348. Note:    this function is called by the DOS 3.1+ kernel
  52349. SeeAlso: AX=1106h,AX=1115h,AX=1117h,AX=1118h,AX=112Eh,INT 21/AH=3Dh
  52350. SeeAlso: INT 21/AH=60h
  52351. --------N-2F1117-----------------------------
  52352. INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE REMOTE FILE
  52353.     AX = 1117h
  52354.     ES:DI -> uninitialized SFT
  52355.     SS = DOS DS
  52356.     SDA first filename pointer -> fully-qualified name of file to open
  52357.     SDA CDS pointer -> current directory structure for drive with file
  52358.     STACK: WORD file creation mode
  52359.             low byte = file attributes (see INT 21/AH=3Ch)
  52360.             high byte = 00h normal create, 01h create new file
  52361. Return: CF set on error
  52362.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52363.     CF clear if successful
  52364.         SFT filled (except handle count, which DOS manages itself)
  52365.     STACK unchanged
  52366. Note:    this function is called by the DOS 3.1+ kernel
  52367. SeeAlso: AX=1106h,AX=1116h,AX=1118h,AX=112Eh,INT 21/AH=3Ch,INT 21/AH=60h
  52368. --------N-2F1118-----------------------------
  52369. INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE FILE WITHOUT CDS
  52370.     AX = 1118h
  52371.     ES:DI -> uninitialized SFT
  52372.     SS = DOS DS
  52373.     SDA first filename pointer -> fully-qualified name of file
  52374.     STACK: WORD file creation mode
  52375.             low byte = file attributes
  52376.             high byte = 00h normal create, 01h create new file
  52377. Return: ???
  52378.     STACK unchanged
  52379. Note:    this function is called by the DOS 3.1+ kernel when creating a file
  52380.       on a drive for which the SDA CDS pointer has offset FFFFh
  52381. SeeAlso: AX=1106h,AX=1116h,AX=1117h,AX=112Eh,INT 21/AH=60h
  52382. --------N-2F1119-----------------------------
  52383. INT 2F CU - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS
  52384.     AX = 1119h
  52385.     SS = DS = DOS DS
  52386.     [DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh)
  52387.     SDA first filename pointer -> fully-qualified search template
  52388.     SDA search attribute = attribute mask for search
  52389. Return: CF set on error
  52390.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52391.     CF clear if successful
  52392.         [DTA] = updated findfirst search data
  52393.             (bit 7 of first byte must be set)
  52394.         [DTA+15h] = standard directory entry for file
  52395. Notes:    this function is called by the DOS 3.1+ kernel
  52396.     DOS 4.x IFSFUNC returns CF set, AX=0003h
  52397. SeeAlso: AX=111Ah,AX=111Bh
  52398. --------N-2F111A-----------------------------
  52399. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - FIND NEXT FILE WITHOUT CDS
  52400.     AX = 111Ah
  52401.     ???
  52402. Return: CF set
  52403.         AX = error code (03h for DOS 4.01 IFSFUNC)
  52404. Note:    use AX=111Ch for DOS 5+
  52405. SeeAlso: AX=1119h,AX=111Ch
  52406. --------N-2F111B-----------------------------
  52407. INT 2F CU - NETWORK REDIRECTOR - FINDFIRST
  52408.     AX = 111Bh
  52409.     SS = DS = DOS DS
  52410.     [DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh)
  52411.     SDA first filename pointer -> fully-qualified search template
  52412.     SDA CDS pointer -> current directory structure for drive with file
  52413.     SDA search attribute = attribute mask for search
  52414. Return: CF set on error
  52415.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52416.     CF clear if successful
  52417.         [DTA] = updated findfirst search data
  52418.             (bit 7 of first byte must be set)
  52419.         [DTA+15h] = standard directory entry for file
  52420. Note:    this function is called by the DOS 3.1+ kernel
  52421. SeeAlso: AX=1119h,AX=111Ch,INT 21/AH=4Eh,INT 21/AH=60h
  52422. --------N-2F111C-----------------------------
  52423. INT 2F CU - NETWORK REDIRECTOR - FINDNEXT
  52424.     AX = 111Ch
  52425.     SS = DS = DOS DS
  52426.     ES:DI -> CDS
  52427.     [DTA] = 21-byte findfirst search data (see INT 21/AH=4Eh)
  52428. Return: CF set on error
  52429.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52430.     CF clear if successful
  52431.         [DTA] = updated findfirst search data
  52432.             (bit 7 of first byte must be set)
  52433.         [DTA+15h] = standard directory entry for file
  52434. Note:    this function is called by the DOS 3.1+ kernel
  52435. SeeAlso: AX=1119h,AX=111Bh,INT 21/AH=4Fh
  52436. --------N-2F111D-----------------------------
  52437. INT 2F CU - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS (ABORT)
  52438.     AX = 111Dh
  52439.     SS = DOS DS
  52440.     SDA PSP segment field = PSP of terminating process
  52441. Return: nothing
  52442. Notes:    used when a process is aborted; the process being terminated is
  52443.       indicated by the "sharing PSP" field in the SDA (offset 1Ah/1Ch)
  52444.     this function is called by the DOS 3.1+ kernel
  52445.     closes all FCBs opened by process
  52446. SeeAlso: INT 21/AX=5D04h
  52447. --------N-2F111E-----------------------------
  52448. INT 2F CU - NETWORK REDIRECTOR - DO REDIRECTION
  52449.     AX = 111Eh
  52450.     SS = DOS DS
  52451.     STACK: WORD function to execute
  52452.         5F00h  get redirection mode
  52453.             BL = type (03h printer, 04h disk)
  52454.             Return: BH = state (00h off, 01h on)
  52455.         5F01h  set redirection mode
  52456.             BL = type (03h printer, 04h disk)
  52457.             BH = state (00h off, 01h on)
  52458.         5F02h  get redirection list entry
  52459.             BX = redirection list index
  52460.             DS:SI -> 16-byte local device name buffer
  52461.             ES:DI -> 128-byte network name buffer
  52462.             Return: must set user's BX to device type and CX to
  52463.                 stored parameter value, using AX=1218h to get
  52464.                 stack frame address
  52465.         5F03h  redirect device
  52466.             BL = device type (see INT 21/AX=5F03h)
  52467.             CX = stored parameter value
  52468.             DS:SI -> ASCIZ source device name
  52469.             ES:DI -> destination ASCIZ network path + ASCIZ passwd
  52470.         5F04h  cancel redirection
  52471.             DS:SI -> ASCIZ device name or network path
  52472.         5F05h  get redirection list extended entry
  52473.             BX = redirection list index
  52474.             DS:SI -> buffer for ASCIZ source device name
  52475.             ES:DI -> buffer for destination ASCIZ network path
  52476.             Return: BH = status flag
  52477.                 BL = type (03h printer, 04h disk)
  52478.                 CX = stored parameter value
  52479.                 BP = NETBIOS local session number
  52480.         5F06h  similar to 5F05h???
  52481. Return: CF set on error
  52482.         AX = error code (see #0811 at INT 21/AH=59h)
  52483.     STACK unchanged
  52484. Notes:    this function is called by the DOS 3.1+ kernel on INT 21/AH=5Fh
  52485.       (including LAN Manager calls)
  52486.     the PC Network 1.00 redirector does not support function 5F06h
  52487. SeeAlso: INT 21/AX=5F00h,INT 21/AX=5F01h,INT 21/AX=5F02h,INT 21/AX=5F03h
  52488. SeeAlso: INT 21/AX=5F04h,INT 21/AX=5F05h,INT 21/AX=5F06h
  52489. --------N-2F111F-----------------------------
  52490. INT 2F CU - NETWORK REDIRECTOR - PRINTER SETUP
  52491.     AX = 111Fh
  52492.     STACK: WORD function
  52493.         5E02h  set printer setup
  52494.         5E03h  get printer setup
  52495.         5E04h  set printer mode
  52496.         5E05h  get printer mode
  52497. Return: CF set on error
  52498.         AX = error code (see #0811 at INT 21/AH=59h)
  52499.     STACK unchanged
  52500. Note:    this function is called by the DOS 3.1+ kernel
  52501. SeeAlso: INT 21/AX=5E02h,INT 21/AX=5E03h,INT 21/AX=5E04h,INT 21/AX=5E05h
  52502. --------N-2F1120-----------------------------
  52503. INT 2F CU - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS
  52504.     AX = 1120h
  52505.     DS = DOS DS
  52506.     ???
  52507. Return: CF clear (successful)
  52508. Notes:    this function is called by the DOS 3.1+ kernel
  52509.     uses CDS array pointer and LASTDRIVE= entries in DOS list of lists
  52510. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h
  52511. --------N-2F1121-----------------------------
  52512. INT 2F CU - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE
  52513.     AX = 1121h
  52514.     CX:DX = offset (in bytes) from end
  52515.     ES:DI -> SFT
  52516.         SFT DPB field -> DPB of drive with file
  52517.     SS = DOS DS
  52518. Return: CF set on error
  52519.         AL = DOS error code (see #0811 at INT 21/AH=59h)
  52520.     CF clear if successful
  52521.         DX:AX = new file position
  52522. Note:    this function is called by the DOS 3.1+ kernel, but only when seeking
  52523.       from the end of a file opened with sharing modes set in such a
  52524.       manner that another process is able to change the size of the file
  52525.       while it is already open
  52526. SeeAlso: AX=1228h,INT 21/AH=42h
  52527. --------N-2F1122-----------------------------
  52528. INT 2F CU - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK
  52529.     AX = 1122h
  52530.     SS = DOS DS
  52531.     DS = PSP of process about to terminate
  52532. Return: ???
  52533. Notes:    this function is called by the DOS 3.1+ kernel
  52534.     after calling this function, the kernel calls INT 2F/AX=111Dh
  52535. SeeAlso: AX=111Dh,INT 21/AH=4Ch,INT 60/DI=0601h
  52536. --------N-2F1123-----------------------------
  52537. INT 2F CU - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME
  52538.     AX = 1123h
  52539.     DS:SI -> ASCIZ filename to canonicalize
  52540.     ES:DI -> 128-byte buffer for qualified name
  52541. Return: CF set if not resolved
  52542. Notes:    called by MS-DOS 3.1+ kernel, but not called by DR-DOS 5.0 unless the
  52543.       filename matches the name of a character device
  52544.     called first when DOS attempts to resolve a filename (unless inside an
  52545.       AX=5D00h server call); if this fails, DOS resolves the name locally
  52546. SeeAlso: AX=1221h,INT 21/AH=60h
  52547. --------N-2F1124-----------------------------
  52548. INT 2F CU - NETWORK REDIRECTOR - TURN OFF REMOTE PRINTER
  52549.     AX = 1124h
  52550.     ES:DI -> SFT
  52551.     SS = DOS DS
  52552.     ???
  52553. Return: CX = ???
  52554. Note:    this function is called by the DOS 3.1+ kernel if AX=1126h returns CF set
  52555. SeeAlso: AX=1126h
  52556. --------N-2F1125-----------------------------
  52557. INT 2F CU - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE
  52558.     AX = 1125h
  52559.     STACK: WORD subfunction
  52560.         5D07h get print stream state
  52561.             Return: DL = current state
  52562.         5D08h set print stream state
  52563.             DL = new state
  52564.         5D09h finish print job
  52565. Return: CF set on error
  52566.         AX = error code (see #0811 at INT 21/AH=59h)
  52567.     STACK unchanged
  52568. Note:    this function is called by the DOS 3.1+ kernel
  52569. SeeAlso: INT 21/AX=5D07h,INT 21/AX=5D08h,INT 21/AX=5D09h
  52570. --------N-2F1126-----------------------------
  52571. INT 2F CU - NETWORK REDIRECTOR - REMOTE PRINTER ECHO ON/OFF
  52572.     AX = 1126h
  52573.     ES:DI -> SFT for file handle 4???
  52574.     SS = DOS DS???
  52575.     ???
  52576. Return: CF set on error
  52577. Notes:    this function is called by the DOS 3.1+ kernel
  52578.     called when print echoing (^P, ^PrtSc) changes state and STDPRN has
  52579.       bit 11 of the device information word in the SFT set
  52580. SeeAlso: AX=1124h
  52581. --------N-2F1127-----------------------------
  52582. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
  52583.     AX = 1127h
  52584. Return: CF set
  52585.         AX = 0001h (invalid function) (see #0811 at INT 21/AH=59h)
  52586. --------N-2F1128-----------------------------
  52587. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
  52588.     AX = 1128h
  52589. Return: CF set
  52590.         AX = 0001h (invalid function) (see #0811 at INT 21/AH=59h)
  52591. --------N-2F1129-----------------------------
  52592. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
  52593.     AX = 1129h
  52594. Return: CF set
  52595.         AX = 0001h (invalid function) (see #0811 at INT 21/AH=59h)
  52596. --------N-2F112A-----------------------------
  52597. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - CLOSE ALL FILES FOR PROCESS
  52598.     AX = 112Ah
  52599.     DS = DOS DS
  52600.     ???
  52601. Return: ???
  52602. Note:    does something to each IFS driver
  52603. --------N-2F112B-----------------------------
  52604. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL
  52605.     AX = 112Bh
  52606.     SS = DOS DS
  52607.     CX = function/category
  52608.     DS:DX -> parameter block
  52609.     STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh)
  52610.     ???
  52611. Return: CF set on error
  52612.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52613.     CF clear if successful
  52614. Note:    this function is called by the DOS 4.0 kernel
  52615. --------N-2F112C-----------------------------
  52616. INT 2F CU - NETWORK REDIRECTOR (DOS 4+) - "UPDATE_CB" - ???
  52617.     AX = 112Ch
  52618.     SS = DOS DS
  52619.     SDA current SFT pointer -> SFT for file
  52620.     ???
  52621. Return: CF set on error
  52622. Note:    called by SHARE in DOS 5.0-6.0
  52623. --------N-2F112D-----------------------------
  52624. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - EXTENDED ATTRIBUTES
  52625.     AX = 112Dh
  52626.     BL = subfunction (value of AL on INT 21)
  52627.         02h get extended attributes
  52628.         03h get extended attribute properties
  52629.         04h set extended attributes
  52630.         Return: CF clear
  52631.         else ???
  52632.         Return: CX = ??? (00h or 02h for DOS 4.01)
  52633.     ES:DI -> SFT for file
  52634.     SS = DOS DS
  52635. Return: DS = DOS DS
  52636. Note:    this function is called by the DOS 4.0 kernel on INT 21/AX=5702h,
  52637.       INT 21/AX=5703h, and INT 21/AX=5704h
  52638. SeeAlso: INT 21/AX=5702h,INT 21/AX=5703h,INT 21/AX=5704h,INT 21/AH=6Eh
  52639. --------N-2F112E-----------------------------
  52640. INT 2F CU - NETWORK REDIRECTOR (DOS 4+) - EXTENDED OPEN/CREATE FILE
  52641.     AX = 112Eh
  52642.     SS = DS = DOS DS
  52643.     ES:DI -> uninitialized SFT for file
  52644.     STACK: WORD file attribute for created/truncated file
  52645.             low byte = file attributes
  52646.             high byte = 00h normal create/open, 01h create new file
  52647.     SDA first filename pointer -> fully-qualified filename
  52648.     SDA extended file open action = action code (see INT 21/AX=6C00h)
  52649.     SDA extended file open mode = open mode for file (see INT 21/AX=6C00h)
  52650. Return: CF set on error
  52651.         AX = error code
  52652.     CF clear if successful
  52653.         CX = result code
  52654.         01h file opened
  52655.         02h file created
  52656.         03h file replaced (truncated)
  52657.         SFT initialized (except handle count, which DOS manages itself)
  52658. Note:    this function is called by the DOS 4+ kernel
  52659. BUG:    this function is not called correctly under some DOS versions
  52660.       (at least 5.0 and 6.2):
  52661.         the file attribute on the stack is not correct if the action 
  52662.           code is 11h,
  52663.         the result code in CX is not passed back to the application.
  52664. SeeAlso: AX=1115h,AX=1116h,AX=1117h,INT 21/AX=6C00h
  52665. --------N-2F112F-----------------------------
  52666. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - IFS IOCTL
  52667.     AX = 112Fh
  52668.     SS = DOS DS
  52669.     STACK: WORD function in low byte
  52670.         00h ???
  52671.             DS:SI -> Current Directory Structure???
  52672.             CL = drive (1=A:)
  52673.         01h ???
  52674.             DS:SI -> ???
  52675.             CL = file handle???
  52676.         02h ???
  52677.             DS:SI -> Current Directory Structure???
  52678.             DI = ???
  52679.             CX = drive (1=A:)
  52680.     ???
  52681. Return: CF set on error
  52682.         AX = DOS error code (see #0811 at INT 21/AH=59h)
  52683.     CF clear if successful
  52684. Note:    this function is called by the DOS 4.0 kernel
  52685. SeeAlso: INT 21/AH=6Bh
  52686. --------N-2F1130-----------------------------
  52687. INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT
  52688.     AX = 1130h
  52689. Return: ES = CS of resident IFSFUNC
  52690. --------N-2F1180-----------------------------
  52691. INT 2F - LAN Manager Enhanced DOS Services - ???
  52692.     AX = 1180h
  52693.     ???
  52694. Return: ???
  52695. --------N-2F1182-----------------------------
  52696. INT 2F - LAN Manager Enhanced DOS Services - INSTALL SERVICE
  52697.     AX = 1182h
  52698.     ???
  52699. Return: ???
  52700. --------N-2F1184-----------------------------
  52701. INT 2F - LAN Manager Enhanced DOS - ???
  52702.     AX = 1184h
  52703.     ???
  52704. Return: ???
  52705. --------N-2F1186-----------------------------
  52706. INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe
  52707.     AX = 1186h
  52708.     DS:SI -> stack frame (see #1299)
  52709. Return: CF clear if successful
  52710.     CF set if error
  52711.         AX = error code
  52712. Note:    LAN Manager enhance mode adds features beyond the standard redirector
  52713.       file/printer services
  52714. SeeAlso: AX=118Fh,AX=1190h,AX=1191h,INT 21/AX=5F39h
  52715.  
  52716. Format of LAN Manager DosReadAsynchNmPipe stack frame:
  52717. Offset    Size    Description    (Table 1299)
  52718.  00h    DWORD    -> number of bytes read
  52719.  04h    WORD    size of buffer
  52720.  06h    DWORD    -> buffer
  52721.  0Ah    DWORD    -> return code
  52722.  0Eh    DWORD    function to call on completion as function( char far *buffer )
  52723.  12h    WORD    handle
  52724. --------N-2F118A-----------------------------
  52725. INT 2F - LAN Manager 2.0+ DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE
  52726.     AX = 118Ah
  52727.     BX = function (0000h or 0001h)
  52728. Return: CF clear if successful
  52729.         AX = 1100h success
  52730.     CF set if error
  52731.         AX = 0001h, etc.
  52732. SeeAlso: AX=1186h,AH=41h,AH=42h,AH=4Bh
  52733. --------N-2F118B-----------------------------
  52734. INT 2F - LAN Manager Enhanced DOS - ???
  52735.     AX = 118Bh
  52736.     ???
  52737. Return: ???
  52738. --------N-2F118C-----------------------------
  52739. INT 2F - LAN Manager Enhanced DOS - ???
  52740.     AX = 118Ch
  52741.     ???
  52742. Return: ???
  52743. --------N-2F118E-----------------------------
  52744. INT 2F - LAN Manager Enhanced DOS - ???
  52745.     AX = 118Eh
  52746.     ???
  52747. Return: ???
  52748. --------N-2F118F-----------------------------
  52749. INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe
  52750.     AX = 118Fh
  52751.     DS:SI -> stack frame (see #1300)
  52752. Return: CF clear if successful
  52753.     CF set if error
  52754.         AX = error code
  52755. SeeAlso: AX=1186h,AX=1191h,INT 21/AX=5F3Ah
  52756.  
  52757. Format of LAN Manager DosReadAsynchNmPipe stack frame:
  52758. Offset    Size    Description    (Table 1300)
  52759.  00h    DWORD    -> number of bytes read
  52760.  04h    WORD    Size of buffer
  52761.  06h    DWORD    -> buffer
  52762.  0Ah    DWORD    -> return code
  52763.  0Eh    DWORD    function to call on completion as function( char far *buffer )
  52764.  12h    WORD    handle
  52765. --------N-2F1190-----------------------------
  52766. INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe2
  52767.     AX = 1190h
  52768.     DS:SI -> stack frame (see #1301)
  52769. Return: CF clear if successful
  52770.     CF set if error
  52771.         AX = error code
  52772. SeeAlso: AX=1186h,AX=1191h
  52773.  
  52774. Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
  52775. Offset    Size    Description    (Table 1301)
  52776.  00h    DWORD    -> number of bytes read
  52777.  04h    WORD    size of buffer
  52778.  06h    DWORD    -> buffer
  52779.  0Ah    DWORD    -> return code
  52780.  0Eh    DWORD    function to call on completion as function( char far *buffer )
  52781.  12h    WORD    handle
  52782.  14h    DWORD    ???
  52783. --------N-2F1191-----------------------------
  52784. INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe2
  52785.     AX = 1191h
  52786.     DS:SI -> stack frame (see #1302)
  52787. Return: CF clear if successful
  52788.     CF set if error
  52789.         AX = error code
  52790. SeeAlso: AX=118Fh,AX=1190h,INT 21/AX=5F3Ah
  52791.  
  52792. Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
  52793. Offset    Size    Description    (Table 1302)
  52794.  00h    DWORD    -> number of bytes read
  52795.  04h    WORD    size of buffer
  52796.  06h    DWORD    -> buffer
  52797.  0Ah    DWORD    -> return code
  52798.  0Eh    DWORD    function to call on completion as function( char far *buffer )
  52799.  12h    WORD    handle
  52800.  14h    DWORD    ???
  52801. --------D-2F1200-----------------------------
  52802. INT 2F U - DOS 3+ internal - INSTALLATION CHECK
  52803.     AX = 1200h
  52804. Return: AL = FFh (for compatibility with other INT 2F functions)
  52805. --------D-2F1201-----------------------------
  52806. INT 2F U - DOS 3+ internal - CLOSE CURRENT FILE
  52807.     AX = 1201h
  52808.     SS = DOS DS (must be using a DOS internal stack)
  52809.     SDA current SFT pointer -> SFT of file to close
  52810. Return: CF set on error
  52811.     BX???
  52812.     CX new reference count of SFT
  52813.     ES:DI -> SFT for file
  52814. SeeAlso: AX=1106h,AX=1227h,INT 21/AH=3Eh
  52815. --------D-2F1202-----------------------------
  52816. INT 2F U - DOS 3+ internal - GET INTERRUPT ADDRESS
  52817.     AX = 1202h
  52818.     STACK: WORD vector number
  52819. Return: ES:BX -> interrupt vector
  52820.     STACK unchanged
  52821. --------D-2F1203-----------------------------
  52822. INT 2F U - DOS 3+ internal - GET DOS DATA SEGMENT
  52823.     AX = 1203h
  52824. Return: DS = data segment of IBMDOS.COM/MSDOS.SYS
  52825. Note:    for DOS prior to version 5.0, the data segment is the same as the code
  52826.       segment
  52827. --------D-2F1204-----------------------------
  52828. INT 2F U - DOS 3+ internal - NORMALIZE PATH SEPARATOR
  52829.     AX = 1204h
  52830.     STACK: WORD character to normalize
  52831. Return: AL = normalized character (forward slash turned to backslash, all
  52832.           others unchanged)
  52833.     ZF set if path separator
  52834.     STACK unchanged
  52835. --------D-2F1205-----------------------------
  52836. INT 2F U - DOS 3+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT
  52837.     AX = 1205h
  52838.     STACK: WORD character to output
  52839. Return: STACK unchanged
  52840. Note:    can be called only from within DOS
  52841. --------D-2F1206-----------------------------
  52842. INT 2F U - DOS 3+ internal - INVOKE CRITICAL ERROR
  52843.     AX = 1206h
  52844.     DI = error code
  52845.     BP:SI -> device driver header
  52846.     SS = DOS DS (must be using a DOS internal stack)
  52847.     STACK: WORD value to be passed to INT 24 in AX
  52848. Return: AL = 0-3 for Abort, Retry, Ignore, Fail
  52849.     STACK unchanged
  52850. SeeAlso: INT 24
  52851. --------D-2F1207-----------------------------
  52852. INT 2F U - DOS 3+ internal - MAKE DISK BUFFER MOST-RECENTLY USED
  52853.     AX = 1207h
  52854.     DS:DI -> disk buffer
  52855. Return: nothing
  52856. Desc:    move the indicated buffer to the end of the disk buffer chain (least-
  52857.       recently used is first); under DOS 3.3, the buffer is then moved to
  52858.       the start of the disk buffer chain if it was marked unused
  52859. Notes:    can be called only from within DOS
  52860.     this function is nearly the same as AX=120Fh
  52861. SeeAlso: AX=120Fh
  52862. --------D-2F1208-----------------------------
  52863. INT 2F U - DOS 3+ internal - DECREMENT SFT REFERENCE COUNT
  52864.     AX = 1208h
  52865.     ES:DI -> SFT
  52866. Return: AX = original value of reference count
  52867. Notes:    if the reference count was 1, it is set to FFFFh (since 0 indicates
  52868.       that the SFT is not in use).    It is the caller's responsibility to
  52869.       set the reference count to zero after cleaning up.
  52870.     used by network redirectors such as MSCDEX
  52871. SeeAlso: AX=1106h
  52872. --------D-2F1209-----------------------------
  52873. INT 2F U - DOS 3+ internal - FLUSH AND FREE DISK BUFFER
  52874.     AX = 1209h
  52875.     DS:DI -> disk buffer
  52876. Return: disk buffer marked unused, contents written to disk if buffer dirty
  52877. Note:    can be called only from within DOS
  52878. SeeAlso: AX=120Eh,AX=1215h
  52879. --------D-2F120A-----------------------------
  52880. INT 2F U - DOS 3+ internal - PERFORM CRITICAL ERROR INTERRUPT
  52881.     AX = 120Ah
  52882.     DS = SS = DOS DS (must be using a DOS internal stack)
  52883.     STACK: WORD extended error code
  52884. Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail)
  52885.     CF clear if retry, set otherwise
  52886.     STACK unchanged
  52887. Notes:    can only be called during a DOS function call, as it uses various
  52888.       fields in the SDA to set up the registers for the INT 24
  52889.     reportedly sets current DPB's first root directory sector to 1
  52890. SeeAlso: INT 24
  52891. --------D-2F120B-----------------------------
  52892. INT 2F U - DOS 3+ internal - SIGNAL SHARING VIOLATION TO USER
  52893.     AX = 120Bh
  52894.     ES:DI -> system file table entry for previous open of file
  52895.     STACK: WORD extended error code (should be 20h--sharing violation)
  52896. Return: CF clear if operation should be retried
  52897.     CF set if operation should not be retried
  52898.         AX = error code (20h) (see #0811 at INT 21/AH=59h)
  52899.     STACK unchanged
  52900. Notes:    can only be called during a DOS function call
  52901.     should only be called if an attempt was made to open an already-open
  52902.       file contrary to the sharing rules
  52903.     invokes INT 24 if SFT file opened via FCB or in compatibility mode with
  52904.       inheritance allowed
  52905. --------D-2F120C-----------------------------
  52906. INT 2F U - DOS 3+ internal - OPEN DEVICE AND SET SFT OWNER/MODE
  52907.     AX = 120Ch
  52908.     SDA current SFT pointer -> SFT for file
  52909.     DS = DOS DS
  52910.     SS = DOS DS (must be using a DOS internal stack)
  52911. Return: ES, DI, AX destroyed
  52912. Notes:    invokes "device open" call on device driver for SFT
  52913.     changes owner of last-accessed SFT to calling process if it was opened
  52914.       via FCB
  52915.     called by network redirectors such as MSCDEX
  52916. --------D-2F120D-----------------------------
  52917. INT 2F U - DOS 3+ internal - GET DATE AND TIME
  52918.     AX = 120Dh
  52919.     SS = DOS DS (must be using a DOS internal stack)
  52920. Return: AX = current date in packed format (see #0803 at INT 21/AX=5700h)
  52921.     DX = current time in packed format (see #0802 at INT 21/AX=5700h)
  52922. SeeAlso: INT 21/AH=2Ah,INT 21/AH=2Ch
  52923. --------D-2F120E-----------------------------
  52924. INT 2F U - DOS 3+ internal - MARK ALL DISK BUFFERS UNREFERENCED
  52925.     AX = 120Eh
  52926.     SS = DOS DS (must be using a DOS internal stack)
  52927. Return: DS:DI -> first disk buffer
  52928. Notes:    clears "referenced" flag on all disk buffers
  52929.     in DOS 5+, this has become essentially a NOP, invoking the same code
  52930.       used by AX=1224h (SHARING DELAY)
  52931. SeeAlso: AX=1209h,AX=1210h,INT 21/AH=0Dh
  52932. --------D-2F120F-----------------------------
  52933. INT 2F U - DOS 3+ internal - MAKE BUFFER MOST RECENTLY USED
  52934.     AX = 120Fh
  52935.     DS:DI -> disk buffer
  52936.     SS = DOS DS (must be using a DOS internal stack)
  52937. Return: DS:DI -> next buffer in buffer list
  52938. Desc:    move the indicated buffer to the end of the disk buffer chain (least-
  52939.       recently used is first); under DOS 3.3, the buffer is then moved to
  52940.       the start of the disk buffer chain if it was marked unused
  52941. Note:    this function is the same as AX=1207h except that it returns a
  52942.       pointer to the buffer following the specified buffer in the buffer
  52943.       chain
  52944. SeeAlso: AX=1207h
  52945. --------D-2F1210-----------------------------
  52946. INT 2F U - DOS 3+ internal - FIND UNREFERENCED DISK BUFFER
  52947.     AX = 1210h
  52948.     DS:DI -> first disk buffer to check
  52949. Return: ZF clear if found
  52950.         DS:DI -> first unreferenced disk buffer
  52951.     ZF set if not found
  52952. Note:    in DOS 5+, this has become essentially a NOP, invoking the same code
  52953.       used by AX=1224h (SHARING DELAY)
  52954. SeeAlso: AX=120Eh
  52955. --------D-2F1211-----------------------------
  52956. INT 2F U - DOS 3+ internal - NORMALIZE ASCIZ FILENAME
  52957.     AX = 1211h
  52958.     DS:SI -> ASCIZ filename to normalize
  52959.     ES:DI -> buffer for normalized filename
  52960. Return: destination buffer filled with uppercase filename, with slashes turned
  52961.     to backslashes
  52962. SeeAlso: AX=121Eh,AX=1221h
  52963. --------D-2F1212-----------------------------
  52964. INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING
  52965.     AX = 1212h
  52966.     ES:DI -> ASCIZ string
  52967. Return: CX = length of string
  52968. SeeAlso: AX=1225h
  52969. --------D-2F1213-----------------------------
  52970. INT 2F U - DOS 3+ internal - UPPERCASE CHARACTER
  52971.     AX = 1213h
  52972.     STACK: WORD character to convert to uppercase
  52973. Return: AL = uppercase character
  52974.     STACK unchanged
  52975. --------D-2F1214-----------------------------
  52976. INT 2F U - DOS 3+ internal - COMPARE FAR POINTERS
  52977.     AX = 1214h
  52978.     DS:SI = first pointer
  52979.     ES:DI = second pointer
  52980. Return: ZF set if pointers are equal, ZF clear if not equal
  52981. --------D-2F1215-----------------------------
  52982. INT 2F U - DOS 3+ internal - FLUSH BUFFER
  52983.     AX = 1215h
  52984.     DS:DI -> disk buffer
  52985.     SS = DOS DS (must be using a DOS internal stack)
  52986.     STACK: WORD drives for which to skip buffer
  52987.         ignore buffer if drive same as high byte, or bytes differ and
  52988.           the buffer is for a drive OTHER than that given in low byte
  52989. Return: STACK unchanged
  52990. Note:    can be called only from within DOS
  52991. SeeAlso: AX=1209h
  52992. --------D-2F1216-----------------------------
  52993. INT 2F U - DOS 3+ internal - GET ADDRESS OF SYSTEM FILE TABLE ENTRY
  52994.     AX = 1216h
  52995.     BX = system file table entry number
  52996. Return: CF clear if successful
  52997.         ES:DI -> system file table entry
  52998.     CF set if BX greater than FILES=
  52999. Note:    supported by DR-DOS 5+
  53000. SeeAlso: AX=1220h
  53001. --------D-2F1217-----------------------------
  53002. INT 2F U - DOS 3+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE
  53003.     AX = 1217h
  53004.     SS = DOS DS (must be using a DOS internal stack)
  53005.     STACK: WORD drive (0 = A:, 1 = B:, etc)
  53006. Return: CF set on error
  53007.         (drive > LASTDRIVE)
  53008.     CF clear if successful
  53009.         DS:SI -> current directory structure for specified drive
  53010.     STACK unchanged
  53011. SeeAlso: AX=1219h
  53012. --------D-2F1218-----------------------------
  53013. INT 2F U - DOS 3+ internal - GET CALLER'S REGISTERS
  53014.     AX = 1218h
  53015. Return: DS:SI -> saved caller's AX,BX,CX,DX,SI,DI,BP,DS,ES (on stack)
  53016. Note:    only valid while within DOS
  53017. --------D-2F1219-----------------------------
  53018. INT 2F U - DOS 3+ internal - SET DRIVE???
  53019.     AX = 1219h
  53020.     SS = DOS DS (must be using a DOS internal stack)
  53021.     STACK: WORD drive (0 = default, 1 = A:, etc)
  53022. Return: ???
  53023.     STACK unchanged
  53024. Notes:    calls AX=1217h
  53025.     builds a current directory structure if inside server call
  53026.       (INT 21/AX=5D00h)
  53027. SeeAlso: AX=1217h,AX=121Fh
  53028. --------D-2F121A-----------------------------
  53029. INT 2F U - DOS 3+ internal - GET FILE'S DRIVE
  53030.     AX = 121Ah
  53031.     DS:SI -> filename
  53032. Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
  53033.     DS:SI -> filename without leading X: (if present)
  53034. SeeAlso: INT 21/AH=19h,INT 21/AH=60h
  53035. --------D-2F121B-----------------------------
  53036. INT 2F U - DOS 3+ internal - SET YEAR/LENGTH OF FEBRUARY
  53037.     AX = 121Bh
  53038.     CL = year - 1980
  53039. Return: AL = number of days in February
  53040. Note:    requires DS to be set to the DOS data segment
  53041. SeeAlso: INT 21/AH=2Bh
  53042. --------D-2F121C-----------------------------
  53043. INT 2F U - DOS 3+ internal - CHECKSUM MEMORY
  53044.     AX = 121Ch
  53045.     DS:SI -> start of memory to checksum
  53046.     CX = number of bytes
  53047.     DX = initial checksum
  53048.     SS = DOS DS (must be using a DOS internal stack)
  53049. Return: AX, CX destroyed
  53050.     DX = checksum
  53051.     DS:SI -> first byte after checksummed range
  53052. Notes:    used by DOS to determine day count since 1/1/80 given a date
  53053.     supported by DR-DOS 5.0+
  53054. SeeAlso: AX=121Dh
  53055. --------D-2F121D-----------------------------
  53056. INT 2F U - DOS 3+ internal - SUM MEMORY
  53057.     AX = 121Dh
  53058.     DS:SI -> memory to add up
  53059.     CX = 0000h
  53060.     DX = limit
  53061. Return: AL = byte which exceeded limit
  53062.     CX = number of bytes before limit exceeded
  53063.     DX = remainder after adding first CX bytes
  53064.     DS:SI -> byte beyond the one which exceeded the limit
  53065. Notes:    used by DOS to determine year or month given day count since 1/1/80
  53066.     supported by DR-DOS 5.0+
  53067. SeeAlso: AX=121Ch
  53068. --------D-2F121E-----------------------------
  53069. INT 2F U - DOS 3+ internal - COMPARE FILENAMES
  53070.     AX = 121Eh
  53071.     DS:SI -> first ASCIZ filename
  53072.     ES:DI -> second ASCIZ filename
  53073. Return: ZF set if filenames equivalent, ZF clear if not
  53074. Note:    supported by DR-DOS 5.0+
  53075. SeeAlso: AX=1211h,AX=1221h
  53076. --------D-2F121F-----------------------------
  53077. INT 2F U - DOS 3+ internal - BUILD CURRENT DIRECTORY STRUCTURE
  53078.     AX = 121Fh
  53079.     SS = DOS DS (must be using a DOS internal stack)
  53080.     STACK: WORD drive letter
  53081. Return: ES:DI -> current directory structure (will be overwritten by next call)
  53082.     STACK unchanged
  53083. --------D-2F1220-----------------------------
  53084. INT 2F U - DOS 3+ internal - GET JOB FILE TABLE ENTRY
  53085.     AX = 1220h
  53086.     BX = file handle
  53087. Return: CF set on error
  53088.         AL = 6 (invalid file handle)
  53089.     CF clear if successful
  53090.         ES:DI -> JFT entry for file handle in current process
  53091. Notes:    the byte pointed at by ES:DI contains the number of the SFT for the
  53092.       file handle, or FFh if the handle is not open
  53093.     supported by DR-DOS 5.0+
  53094. SeeAlso: AX=1216h,AX=1229h
  53095. --------D-2F1221-----------------------------
  53096. INT 2F U - DOS 3+ internal - CANONICALIZE FILE NAME
  53097.     AX = 1221h
  53098.     DS:SI -> file name to be fully qualified
  53099.     ES:DI -> 128-byte buffer for resulting canonical file name
  53100.     SS = DOS DS (must be using a DOS internal stack)
  53101. Return: (see INT 21/AH=60h)
  53102. Note:    identical to INT 21/AH=60h
  53103. SeeAlso: AX=1123h,INT 21/AH=60h
  53104. --------D-2F1222-----------------------------
  53105. INT 2F U - DOS 3+ internal - SET EXTENDED ERROR INFO
  53106.     AX = 1222h
  53107.     SS = DOS data segment
  53108.     SS:SI -> 4-byte records
  53109.         BYTE    error code, FFh = last record
  53110.         BYTE    error class, FFh = don't change
  53111.         BYTE    suggested action, FFh = don't change
  53112.         BYTE    error locus, FFh = don't change
  53113.     SDA error code set
  53114. Return: SI destroyed
  53115.     SDA error class, error locus, and suggested action fields set
  53116. Note:    can be called only from within DOS
  53117. SeeAlso: AX=122Dh,INT 21/AH=59h,INT 21/AX=5D0Ah
  53118. --------D-2F1223-----------------------------
  53119. INT 2F U - DOS 3+ internal - CHECK IF CHARACTER DEVICE
  53120.     AX = 1223h
  53121.     DS = DOS DS
  53122.     SS = DOS DS (must be using a DOS internal stack)
  53123.     SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name
  53124.     SDA+22Bh (DOS 4.0-6.0) = eight-character blank-padded name
  53125. Return: CF set if no character device by that name found
  53126.     CF clear if found
  53127.         BH = low byte of device attribute word
  53128. Note:    can only be called from within DOS
  53129. SeeAlso: INT 21/AX=5D06h,INT 21/AX=5D0Bh
  53130. --------D-2F1224-----------------------------
  53131. INT 2F U - DOS 3+ internal - SHARING RETRY DELAY
  53132.     AX = 1224h
  53133.     SS = DOS DS (must be using a DOS internal stack)
  53134. Return: after delay set by INT 21/AX=440Bh, unless in server call
  53135.       (INT 21/AX=5D00h)
  53136. Note:    delay is dependent on the processor speed, and is skipped entirely if
  53137.       inside a server call
  53138. SeeAlso: INT 21/AX=440Bh,INT 21/AH=52h,INT 62/AX=0097h
  53139. --------D-2F1225-----------------------------
  53140. INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING
  53141.     AX = 1225h
  53142.     DS:SI -> ASCIZ string
  53143. Return: CX = length of string
  53144. Note:    supported by DR-DOS 5.0+
  53145. SeeAlso: AX=1212h
  53146. --------D-2F1226-----------------------------
  53147. INT 2F U - DOS 3.3+ internal - OPEN FILE
  53148.     AX = 1226h
  53149.     CL = access mode
  53150.     DS:DX -> ASCIZ filename
  53151.     SS = DOS DS (must be using a DOS internal stack)
  53152. Return: CF set on error
  53153.         AL = error code (see #0811 at INT 21/AH=59h)
  53154.     CF clear if successful
  53155.         AX = file handle
  53156. Notes:    can only be called from within DOS
  53157.     equivalent to INT 21/AH=3Dh
  53158.     used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
  53159. SeeAlso: AX=1227h,INT 21/AH=3Dh
  53160. --------D-2F1227-----------------------------
  53161. INT 2F U - DOS 3.3+ internal - CLOSE FILE
  53162.     AX = 1227h
  53163.     BX = file handle
  53164.     SS = DOS DS (must be using a DOS internal stack)
  53165. Return: CF set on error
  53166.         AL = 06h invalid file handle
  53167.     CF clear if successful
  53168. Notes:    can only be called from within DOS
  53169.     equivalent to INT 21/AH=3Eh
  53170.     used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
  53171. SeeAlso: AX=1106h,AX=1201h,AX=1226h,INT 21/AH=3Eh
  53172. --------D-2F1228BP4200-----------------------
  53173. INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER
  53174.     AX = 1228h
  53175.     BP = 4200h, 4201h, 4202h (see INT 21/AH=42h)
  53176.     BX = file handle
  53177.     CX:DX = offset in bytes
  53178.     SS = DOS DS (must be using a DOS internal stack)
  53179. Return: as for INT 21/AH=42h
  53180. Notes:    equivalent to INT 21/AH=42h, but may only be called from inside a DOS
  53181.       function call
  53182.     sets user stack frame pointer to dummy buffer, moves BP to AX, performs
  53183.       LSEEK, and restores frame pointer
  53184.     used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
  53185. SeeAlso: INT 21/AH=42h
  53186. --------D-2F1229-----------------------------
  53187. INT 2F U - DOS 3.3+ internal - READ FROM FILE
  53188.     AX = 1229h
  53189.     BX = file handle
  53190.     CX = number of bytes to read
  53191.     DS:DX -> buffer
  53192.     SS = DOS DS (must be using a DOS internal stack)
  53193. Return: as for INT 21/AH=3Fh
  53194. Notes:    equivalent to INT 21/AH=3Fh, but may only be called when already inside
  53195.       a DOS function call
  53196.     used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
  53197. SeeAlso: AX=1226h,INT 21/AH=3Fh
  53198. --------D-2F122A-----------------------------
  53199. INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT
  53200.     AX = 122Ah
  53201.     BX = entry point to set (0001h or 0002h)
  53202.     DS:SI -> FASTOPEN entry point
  53203.         (entry point not set if SI = FFFFh for DOS 4+)
  53204. Return: CF set if specified entry point already set
  53205. Notes:    entry point in BX is ignored under DOS 3.30
  53206.     both entry points set to same handler by DOS 4.01
  53207.     DOS 5.0 and 6.0 only set entry point 1
  53208.  
  53209. (Table 1303)
  53210. Values DOS 3.30+ FASTOPEN is called with:
  53211.     AL = 01h  Lookup
  53212.         CX = ??? seems to be offset
  53213.         DI = ??? seems to be offset
  53214.         SI = offset in DOS DS of filename
  53215.     AL = 02h  insert file into FASTOPEN cache
  53216.     AL = 03h  delete file from FASTOPEN cache
  53217.         SI = offset in DOS DS of filename
  53218.     AL = 04h  purge FASTOPEN cache
  53219.         AH = subfunction (00h,01h,02h)
  53220.         ES:DI -> ???
  53221.         CX = ??? (subfunctions 01h and 02h only)
  53222. Returns: CF set on error or not installed
  53223. Note: function 03h calls function 01h first
  53224.  
  53225. (Table 1304)
  53226. Values PC-DOS 4.01 FASTOPEN is additionally called with:
  53227.     AL = 04h ???
  53228.         AH = 03h
  53229.         ???
  53230.     AL = 05h ???
  53231.     AL = 0Bh ???
  53232.     AL = 0Ch ???
  53233.     AL = 0Dh ???
  53234.     AL = 0Eh ???
  53235.     AL = 0Fh ???
  53236.     AL = 10h ???
  53237.  
  53238. (Table 1305)
  53239. Values MS-DOS 5.0-6.0 FASTOPEN is additionally called with:
  53240.     AL = 04h  purge FASTOPEN cache
  53241.         AH = 03h
  53242.         ???
  53243.     AL = 05h ???
  53244.         DL = drive (00h = A:)
  53245.         ???
  53246.     AL = 06h ???
  53247.         ???
  53248. --------D-2F122B-----------------------------
  53249. INT 2F U - DOS 3.3+ internal - IOCTL
  53250.     AX = 122Bh
  53251.     BP = 44xxh
  53252.     SS = DOS DS (must be using a DOS internal stack)
  53253.     additional registers as appropriate for INT 21/AX=44xxh
  53254. Return: as for INT 21/AH=44h
  53255. Notes:    equivalent to INT 21/AH=44h, but may only be called when already inside
  53256.       a DOS function call
  53257.     sets user stack frame pointer to dummy buffer, moves BP to AX, performs
  53258.       IOCTL, and restores frame pointer
  53259.     used by NLSFUNC in accessing COUNTRY.SYS when invoked by the DOS kernel
  53260. SeeAlso: INT 21/AH=44h
  53261. --------D-2F122C-----------------------------
  53262. INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN
  53263.     AX = 122Ch
  53264. Return: BX:AX -> header of second device driver (NUL is first) in driver chain
  53265. Note:    although this function exists in DR-DOS 5.0, it returns 0000h:0000h
  53266. SeeAlso: INT 21/AH=52h
  53267. --------D-2F122D-----------------------------
  53268. INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE
  53269.     AX = 122Dh
  53270. Return: AX = current extended error code
  53271. SeeAlso: AX=1222h,INT 21/AH=59h
  53272. --------D-2F122E-----------------------------
  53273. INT 2F U - DOS 4+ internal - GET OR SET ERROR TABLE ADDRESSES
  53274.     AX = 122Eh
  53275.     DL = subfunction
  53276.         00h get standard DOS error table (see #1306)
  53277.         Return: ES:DI -> error table
  53278.                  (DOS 4: errors 00h-12h,50h-5Bh)
  53279.                  (DOS 5: errors 00h-26h,4Fh,51h-59h)
  53280.         01h set standard DOS error table
  53281.         ES:DI -> error table
  53282.         02h get parameter error table (errors 00h-0Ah)
  53283.         Return: ES:DI -> error table
  53284.         03h set parameter error table
  53285.         ES:DI -> error table
  53286.         04h get critical/SHARE error table (errors 13h-2Bh)
  53287.         Return: ES:DI -> error table
  53288.         05h set critical/SHARE error table
  53289.         ES:DI -> error table
  53290.         06h get ??? error table
  53291.         Return: ES:DI -> error table or 0000h:0000h
  53292.         07h set ??? error table
  53293.         ES:DI -> error table
  53294.         08h get error message retriever (see #1307)
  53295.         Return: ES:DI -> FAR procedure to fetch error message
  53296.         09h set ??? error table
  53297.         ES:DI -> error table
  53298. Notes:    if the returned segment on a "get" is 0001h, then the offset specifies
  53299.       the offset of the error message table within COMMAND.COM, and the
  53300.       procedure returned by DL=08h should be called
  53301.     DOS 5+ COMMAND.COM does not allow setting any of the addresses (calls
  53302.       with DL odd are ignored); they are always returned with segment 0001h
  53303.     for DOS 5.0, the standard and critical/SHARE error tables are combined
  53304.       into a single error table
  53305. SeeAlso: AX=0500h,INT 21/AH=59h
  53306.  
  53307. Format of DOS 4.x error table:
  53308. Offset    Size    Description    (Table 1306)
  53309.  00h    BYTE    FFh
  53310.  01h  2 BYTEs    04h,00h (DOS version???)
  53311.  03h    BYTE    number of error headers following
  53312.  04h 2N WORDs    table of all error headers for table
  53313.         Offset    Size    Description
  53314.          00h    WORD    error message number
  53315.          02h    WORD    offset of error message from start of header
  53316.                 error messages are count byte followed by msg
  53317. Note:    DOS 5 error tables consist of one word per error number; each word
  53318.       contains either the offset of a counted string or 0000h
  53319.  
  53320. (Table 1307)
  53321. Call error retrieval function with:
  53322.     AX = error number
  53323.     DI = offset of error table
  53324. Return: ES:DI -> error message (counted string)
  53325. Notes:    this function needs to access COMMAND.COM if the messages were not
  53326.       loaded into memory permanently with /MSG; the caller should assume
  53327.       that the returned message will be overwritten by the next call of
  53328.       the function
  53329.     supported by DR-DOS 5.0
  53330.  
  53331. (Table 1308)
  53332. Values for parameter errors:
  53333.  01h    Too many parameters
  53334.  02h    Required Parameter missing
  53335.  03h    Invalid switch
  53336.  04h    Invalid keyword
  53337.  06h    Parameter value not in allowed range
  53338.  07h    Parameter value not allowed
  53339.  08h    Parameter value not allowed
  53340.  09h    Parameter format not correct
  53341.  0Ah    Invalid parameter
  53342.  0Bh    Invalid parameter combination
  53343. --------D-2F122F-----------------------------
  53344. INT 2F U - DOS 4.x internal - SET DOS VERSION NUMBER TO RETURN
  53345.     AX = 122Fh
  53346.     DX = DOS version number (0000h = return true DOS version)
  53347. Note:    not available under DR-DOS 5.0 or 6.0
  53348. SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
  53349. --------m-2F12FFBX0006-----------------------
  53350. INT 2F U - DR-DOS 6, Novell DOS 7 - EMM386.EXE - VIDEO MEMORY SPACE CONTROL
  53351.     AX = 12FFh
  53352.     BX = 0006h
  53353.     DX = 0000h
  53354.     CX = function
  53355.         0000h get status of video memory space (MEMMAX /V)
  53356.         0001h map memory into video memory space (MEMMAX +V)
  53357.         0002h unmap memory from video memory space (MEMMAX -V)
  53358. Return: CF clear if successful
  53359.         AX = 0000h (successful)
  53360.         BX = segment of reserved video RAM
  53361.         CX = segment of used video RAM
  53362.         DX = segment of first upper MCB
  53363. Notes:    this functionality is provided by EMM386, and partially supported by
  53364.       HIDOS.SYS
  53365.     BL specifies which program handles the call, BH is the function number
  53366. SeeAlso: AX=D201h/BX=4849h
  53367. --------O-2F12FFBX0007-----------------------
  53368. INT 2F U - Novell DOS 7 - SCRIPT.EXE - GET ???
  53369.     AX = 12FFh
  53370.     BX = 0007h
  53371.     CX = 0000h
  53372. Return: CF clear if installed
  53373.         AX = 0000h
  53374.         BX = ??? (4426h)
  53375.         CX = ??? (0068h)
  53376.         DX = PSP segment of resident code???
  53377.         SI = ??? (4AFAh)
  53378.         ES = resident code segment
  53379. --------m-2F12FFBX0106-----------------------
  53380. INT 2F U - Novell DOS 7 - EMM386.EXE - GET VERSION???
  53381.     AX = 12FFh
  53382.     BX = 0106h
  53383. Return:    CF clear if successful
  53384.         AX = 0000h (successful)
  53385.         BX = EDC0h (signature)
  53386.         CL = memory manager variant (02h,03h)
  53387.         (02h when DPMI/VCPI disabled, 03h when DPMI/VCPI loaded)
  53388.         CH = ??? (00h)
  53389.         DX = version??? (0300h for v3.0)
  53390.         ES = segment of EMM386 low-memory stub
  53391. Notes:    BL specifies which program handles the call, BH is the function number
  53392.     if the word at ES:0012h is nonzero, if contains the offset within
  53393.       segment ES of the CEMM-compatible entry point (see #1309)
  53394.     if no other program has hooked INT 67, an alternate installation
  53395.       check is to test for the string
  53396.       "NOVELL EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  53397.       handler's segment; the word immediately preceding this string
  53398.       contains the offset of the API entry point if it is nonzero
  53399. Index:    entry point;Novell EMM386
  53400.  
  53401. (Table 1309)
  53402. Call Novell EMM386.EXE entry point with:
  53403.     AH = 00h get memory manager's status???
  53404.         ???
  53405.     AH = 01h set memory manager's status???
  53406.         ???
  53407.     AH = 02h Weitek coprocessor support???
  53408.         AL = subfunction???
  53409.     more functions???
  53410. SeeAlso: #0660 at INT 21/AX=4402h/SF=02h,#2107 at INT 67/AX=FFA5h
  53411. --------m-2F12FFBL06-------------------------
  53412. INT 2F U - Novell DOS 7 - EMM386.EXE - ???
  53413.     AX = 12FFh
  53414.     BL = 06h
  53415.     BH = function (02h-09h)
  53416.     ???
  53417. Return: ???
  53418. --------O-2F12FFBX0EDC-----------------------
  53419. INT 2F U - Novell DOS 7 - EMM386.EXE - CHECK IF MULTITASKING SUPPORT LOADED???
  53420.     AX = 12FFh
  53421.     BX = 0EDCh
  53422. Return: AX = 0000h if ??? loaded
  53423.         CF clear
  53424.         BX = 0000h
  53425. Notes:    called by Novell DOS 7 TaskMgr
  53426.     if this function returns with AX=0000h, then the code necessary to
  53427.       support the API on INT 2F/AX=2780h is loaded and that API becomes
  53428.       available for use
  53429.     because the request is handled on the initial trap to the memory
  53430.       manager caused by INT instructions, this function must be invoked
  53431.       with an actual INT 2F instruction instead of some simulation such
  53432.       as a far call to the address in the interrupt vector table
  53433. SeeAlso: AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
  53434. --------D-2F13-------------------------------
  53435. INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER
  53436.     AH = 13h
  53437.     DS:DX -> interrupt handler disk driver calls on read/write
  53438.     ES:BX = address to restore INT 13 to on system halt (exit from root
  53439.          shell) or warm boot (INT 19)
  53440. Return: DS:DX set by previous invocation of this function
  53441.     ES:BX set by previous invocation of this function
  53442. Notes:    IO.SYS hooks INT 13 and inserts one or more filters ahead of the
  53443.       original INT 13 handler.  The first is for disk change detection
  53444.       on floppy drives, the second is for tracking formatting calls and
  53445.       correcting DMA boundary errors, the third is for working around
  53446.       problems in a particular version of IBM's ROM BIOS
  53447.     before the first call, ES:BX points at the original BIOS INT 13; DS:DX
  53448.       also points there unless IO.SYS has installed a special filter for
  53449.       hard disk reads (on systems with model byte FCh and BIOS date
  53450.       "01/10/84" only), in which case it points at the special filter
  53451.     most DOS 3.2+ disk access is via the vector in DS:DX, although a few
  53452.       functions are still invoked via an INT 13 instruction
  53453.     this is a dangerous security loophole for any virus-monitoring software
  53454.       which does not trap this call ("INT13", "Nomenklatura", and many
  53455.       Bulgarian viruses are known to use it to get the original ROM entry
  53456.       point)
  53457. SeeAlso: INT 13/AH=01h,INT 19,INT 9D"VIRUS"
  53458. --------N-2F13-------------------------------
  53459. INT 2F U - MS-NET - ???
  53460.     AH = 13h
  53461.     ???
  53462. Return: ???
  53463. Note:    supposedly used to move (or control the movement of) NCBs
  53464. --------U-2F1400-----------------------------
  53465. INT 2F C - NLSFUNC.COM - INSTALLATION CHECK
  53466.     AX = 1400h
  53467. Return: AL = 00h not installed, OK to install
  53468.          01h not installed, not OK
  53469.          FFh installed
  53470. Notes:    this function is called by the DOS v3.3+ kernel
  53471.     supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
  53472.     supported by DR-DOS 5.0
  53473.     documented for MS-DOS 5+, but undocumented in prior versions
  53474. SeeAlso: AX=1401h"NLSFUNC",AX=1402h"NLSFUNC"
  53475. --------D-2F1400-----------------------------
  53476. INT 2F - European MS-DOS 4.0 POPUP - "CheckPu" - INSTALLATION CHECK
  53477.     AX = 1400h
  53478. Return: AX = FFFFh if installed
  53479.         BX = maximum memory required to save screen and keyboard info
  53480.     CF clear if successful
  53481.     CF set on error
  53482.         AX = error code
  53483.         0002h invalid function
  53484.         0004h unknown error
  53485. Note:    the POPUP interface is used by background programs (see INT 21/AH=80h)
  53486.       to communicate with the user
  53487. SeeAlso: AX=1401h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
  53488. --------U-2F1401-----------------------------
  53489. INT 2F CU - NLSFUNC.COM - CHANGE CODE PAGE
  53490.     AX = 1401h
  53491.     DS:SI -> internal code page structure (see #1310)
  53492.     BX = new code page (see INT 21/AX=6602h)
  53493.     DX = country code???
  53494. Return: AL = status
  53495.          00h successful
  53496.          else DOS error code
  53497. Note:    this function is called by the DOS v3.3+ kernel
  53498. SeeAlso: AX=1400h"NLSFUNC",AX=1402h"NLSFUNC",INT 21/AH=66h
  53499.  
  53500. Format of DOS 3.30 internal code page structure:
  53501. Offset    Size    Description    (Table 1310)
  53502.  00h  8 BYTEs    ???
  53503.  08h 64 BYTEs    name of country information file
  53504.  48h    WORD    system code page
  53505.  4Ah    WORD    number of supported subfunctions
  53506.  4Ch  5 BYTEs    data to return for INT 21/AX=6502h
  53507.  51h  5 BYTEs    data to return for INT 21/AX=6504h
  53508.  56h  5 BYTEs    data to return for INT 21/AX=6505h
  53509.  5Bh  5 BYTEs    data to return for INT 21/AX=6506h
  53510.  60h 41 BYTEs    data to return for INT 21/AX=6501h
  53511. --------D-2F1401-----------------------------
  53512. INT 2F - European MS-DOS 4.0 POPUP - "PostPu" - OPEN/CLOSE POPUP SCREEN
  53513.     AX = 1401h
  53514.     DL = function (00h open, 01h close)
  53515.     DH = wait flag
  53516.         00h block until screen opens
  53517.         01h return error if screen is not available
  53518.         02h urgent--always open screen immediately
  53519. Return: CF clear if successful
  53520.         BX = amount of memory needed to save screen and keyboard info,
  53521.         0000h if default save location can be used (only if DH was 02h)
  53522.     CF set on error
  53523. Note:    the application using the screen is frozen until the popup screen is
  53524.       closed
  53525. SeeAlso: AX=1400h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
  53526. --------U-2F1402-----------------------------
  53527. INT 2F CU - NLSFUNC.COM - GET EXTENDED COUNTRY INFO
  53528.     AX = 1402h
  53529.     BP = subfunction (same as AL for INT 21/AH=65h)
  53530.     BX = code page (see INT 21/AX=6602h)
  53531.     DX = country code (see INT 21/AH=38h)
  53532.     DS:SI -> internal code page structure (see #1310)
  53533.     ES:DI -> user buffer
  53534.     CX = size of user buffer
  53535. Return: AL = status
  53536.         00h successful
  53537.         else DOS error code
  53538. Notes:    this function is called by the DOS v3.3+ kernel on INT 21/AH=65h
  53539.     code page structure apparently only needed for COUNTRY.SYS pathname
  53540. SeeAlso: AX=1401h"NLSFUNC",AX=1403h"NLSFUNC",AX=1404h,INT 21/AH=65h
  53541. --------D-2F1402-----------------------------
  53542. INT 2F - European MS-DOS 4.0 POPUP - "SavePu" - SAVE POPUP SCREEN
  53543.     AX = 1402h
  53544.     ES:DI -> save buffer (0000h:0000h for default buffer in POPUP)
  53545. Return: CF clear if successful
  53546.     CF set on error
  53547.         AX = error code (see #1311)
  53548. SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1403h"POPUP"
  53549.  
  53550. (Table 1311)
  53551. Values for POPUP error code:
  53552.  0001h    process does not own screen
  53553.  0004h    unknown error
  53554.  0005h    invalid pointer
  53555. --------U-2F1403-----------------------------
  53556. INT 2F CU - NLSFUNC.COM - SET CODE PAGE
  53557.     AX = 1403h
  53558.     DS:SI -> internal code page structure (see #1310)
  53559.     BX = code page (see INT 21/AX=6602h)
  53560.     DX = country code (see INT 21/AH=38h)
  53561. Return: AL = status
  53562.          ???
  53563. Note:    this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
  53564. SeeAlso: AX=1402h"NLSFUNC",AX=1404h,INT 21/AH=38h"SET"
  53565. --------D-2F1403-----------------------------
  53566. INT 2F - European MS-DOS 4.0 POPUP - "RestorePu" - RESTORE SCREEN
  53567.     AX = 1403h
  53568.     ES:DI -> buffer containing saved screen
  53569.         (0000h:0000h for default buffer in POPUP)
  53570. Return: CF clear if successful
  53571.     CF set on error
  53572.         AX = error code (see #1311)
  53573. SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1402h"POPUP"
  53574. --------U-2F1404-----------------------------
  53575. INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
  53576.     AX = 1404h
  53577.     BX = code page (see INT 21/AX=6602h)
  53578.     DX = country code (see INT 21/AH=38h)
  53579.     DS:SI -> internal code page structure (see #1310)
  53580.     ES:DI -> user buffer
  53581. Return: AL = status
  53582.          ???
  53583. Notes:    this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
  53584.     code page structure apparently only needed for COUNTRY.SYS pathname
  53585. SeeAlso: AX=1402h,AX=1403h,INT 21/AH=38h"GET"
  53586. --------U-2F14FE-----------------------------
  53587. INT 2F U - DR-DOS 5.0 NLSFUNC - GET EXTENDED COUNTRY INFORMATION
  53588.     AX = 14FEh
  53589.     BX = code page (FFFFh=global code page) (see INT 21/AX=6602h)
  53590.     DX = country ID (FFFFh=current country) (see INT 21/AH=38h)
  53591.     ES:DI -> country information buffer
  53592.     CL = info ID
  53593.         01h get general internationalization info
  53594.         02h get pointer to uppercase table
  53595.         04h get pointer to filename uppercase table
  53596.         05h get pointer to filename terminator table
  53597.         06h get pointer to collating sequence table
  53598.         07h get pointer to Double-Byte Character Set table
  53599.     CF set (used to return error if not installed)
  53600. Return: CF clear if successful
  53601.         DS:SI -> requested information
  53602.     CF set on error
  53603. Notes:    DR-DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
  53604.       or FFh on entry.
  53605.     the DR-DOS kernel calls this function on INT 21/AX=6501h
  53606.     the value in CL is not range-checked by the DR-DOS 5.0 NLSFUNC
  53607. SeeAlso: AX=14FFh,INT 21/AH=65h
  53608.  
  53609. Format of DR-DOS COUNTRY.SYS file:
  53610. Offset    Size    Description    (Table 1312)
  53611.  00h 126 BYTEs    copyright notice (terminated with Ctrl-Z, padded with NULs)
  53612.  7Eh    WORD    signature EDC1h
  53613.  80h    var    country pointer records
  53614.     Offset    Size    Description
  53615.      00h    WORD    country code (0000h if end of array)
  53616.      02h    WORD    code page
  53617.      04h    WORD    ??? (0000h)
  53618.      06h  7 WORDs    offsets in file for data tables for subfunctions
  53619.               01h-07h
  53620.  var    var    country information
  53621. --------U-2F14FF-----------------------------
  53622. INT 2F U - DR-DOS 5.0 NLSFUNC - PREPARE CODE PAGE
  53623.     AX = 14FFh
  53624.     BX = code page
  53625. Return: AX = ???
  53626.     ZF set if AX=0000h
  53627. Notes:    DR-DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
  53628.       or FFh on entry.
  53629.     passes codepage preparation request to each character device supporting
  53630.       the generic IOCTL call
  53631. SeeAlso: AX=14FEh,INT 21/AX=440Ch,INT 21/AX=6602h
  53632. --------U-2F1500-----------------------------
  53633. INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK
  53634.     AX = 1500h
  53635. Return: AX = FFFFh
  53636.     ES:DI -> ??? (graphics data?)
  53637. Note:    this installation check conflicts with the CD-ROM Extensions
  53638.       installation check; moved to AX=AC00h in later versions
  53639. SeeAlso: AX=AC00h
  53640. --------d-2F1500BX0000-----------------------
  53641. INT 2F - CD-ROM - INSTALLATION CHECK
  53642.     AX = 1500h
  53643.     BX = 0000h
  53644. Return: BX = number of CD-ROM drive letters used
  53645.     CX = starting drive letter (0=A:)
  53646. Notes:    this installation check DOES NOT follow the format used by other
  53647.       software
  53648.     this installation check conflicts with the DOS 4.00 GRAPHICS.COM
  53649.       installation check
  53650. SeeAlso: INT 2F/AX=D000h/BX=4D44h"Lotus"
  53651. --------d-2F1501-----------------------------
  53652. INT 2F - CD-ROM - GET DRIVE DEVICE LIST
  53653.     AX = 1501h
  53654.     ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
  53655. Return: buffer filled, for each drive letter
  53656.       BYTE    subunit number in driver
  53657.       DWORD address of device driver header
  53658. --------d-2F1502-----------------------------
  53659. INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
  53660.     AX = 1502h
  53661.     ES:BX -> 38-byte buffer for name of copyright file
  53662.     CX = drive number (0=A:)
  53663. Return: CF set if drive is not a CD-ROM drive
  53664.         AX = 000Fh (invalid drive)
  53665.     CF clear if successful
  53666. SeeAlso: AX=1503h
  53667. --------d-2F1503-----------------------------
  53668. INT 2F - CD-ROM - GET ABSTRACT FILE NAME
  53669.     AX = 1503h
  53670.     ES:BX -> 38-byte buffer for name of abstract file
  53671.     CX = drive number (0=A:)
  53672. Return: CF set if drive is not a CD-ROM drive
  53673.         AX = 000Fh (invalid drive)
  53674.     CF clear if successful
  53675. SeeAlso: AX=1502h,AX=1504h
  53676. --------d-2F1504-----------------------------
  53677. INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
  53678.     AX = 1504h
  53679.     ES:BX -> 38-byte buffer for name of bibliographic documentation file
  53680.     CX = drive number (0=A:)
  53681. Return: CF set if drive is not a CD-ROM drive
  53682.         AX = 000Fh (invalid drive)
  53683.     CF clear if successful
  53684. SeeAlso: AX=1502h,AX=1503h
  53685. --------d-2F1505-----------------------------
  53686. INT 2F - CD-ROM - READ VTOC
  53687.     AX = 1505h
  53688.     ES:BX -> 2048-byte buffer
  53689.     CX = drive number (0=A:)
  53690.     DX = sector index (0=first volume descriptor,1=second,...)
  53691. Return: CF set on error
  53692.         AX = error code (15=invalid drive,21=not ready)
  53693.     CF clear if successful
  53694.         AX = volume descriptor type (1=standard,FFh=terminator,0=other)
  53695. --------d-2F1506-----------------------------
  53696. INT 2F - CD-ROM - TURN DEBUGGING ON
  53697.     AX = 1506h
  53698.     BX = debugging function to enable
  53699. Note:    reserved for development
  53700. SeeAlso: AX=1507h
  53701. --------d-2F1507-----------------------------
  53702. INT 2F - CD-ROM - TURN DEBUGGING OFF
  53703.     AX = 1507h
  53704.     BX = debugging function to disable
  53705. Note:    reserved for development
  53706. SeeAlso: AX=1506h
  53707. --------d-2F1508-----------------------------
  53708. INT 2F - CD-ROM - ABSOLUTE DISK READ
  53709.     AX = 1508h
  53710.     ES:BX -> buffer
  53711.     CX = drive number (0=A:)
  53712.     SI:DI = starting sector number
  53713.     DX = number of sectors to read
  53714. Return: CF set on error
  53715.         AL = error code (15=invalid drive,21=not ready)
  53716.     CF clear if successful
  53717. SeeAlso: AX=1509h
  53718. --------d-2F1509-----------------------------
  53719. INT 2F - CD-ROM - ABSOLUTE DISK WRITE
  53720.     AX = 1509h
  53721.     ES:BX -> buffer
  53722.     CX = drive number (0=A:)
  53723.     SI:DI = starting sector number
  53724.     DX = number of sectors to write
  53725. Note:    corresponds to INT 26h and is currently reserved and nonfunctional
  53726. SeeAlso: AX=1508h
  53727. --------d-2F150A-----------------------------
  53728. INT 2F - CD-ROM - RESERVED
  53729.     AX = 150Ah
  53730. --------d-2F150B-----------------------------
  53731. INT 2F - CD-ROM v2.00+ - DRIVE CHECK
  53732.     AX = 150Bh
  53733.     CX = drive number (0=A:)
  53734. Return: BX = ADADh if MSCDEX.EXE installed
  53735.         AX = support status
  53736.         0000h if drive not supported
  53737.         nonzero if supported
  53738. SeeAlso: AX=150Dh
  53739. --------d-2F150C-----------------------------
  53740. INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION
  53741.     AX = 150Ch
  53742. Return: BH = major version
  53743.     BL = minor version
  53744. Note:    MSCDEX.EXE versions prior to 2.00 return BX=0
  53745. --------d-2F150D-----------------------------
  53746. INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
  53747.     AX = 150Dh
  53748.     ES:BX -> buffer for drive letter list (1 byte per drive)
  53749. Return: buffer filled with drive numbers (0=A:).  Each byte corresponds
  53750.     to the drive in the same position for function 1501h
  53751. SeeAlso: AX=150Bh
  53752. --------d-2F150E-----------------------------
  53753. INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
  53754.     AX = 150Eh
  53755.     BX = subfunction
  53756.         00h get preference
  53757.         DX = 0000h
  53758.         Return: DX = preference settings
  53759.         01h set preference
  53760.         DH = volume descriptor preference
  53761.             01h = primary volume descriptor
  53762.             02h = supplementary volume descriptor
  53763.         DL = supplementary volume descriptor preference
  53764.             01h = shift-Kanji
  53765.     CX = drive number (0=A:)
  53766. Return: CF set on error
  53767.         AX = error code (15=invalid drive,1=invalid function)
  53768.     CF clear if successful
  53769. --------d-2F150F-----------------------------
  53770. INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
  53771.     AX = 150Fh
  53772.     CL = drive number (0=A:)
  53773.     CH bit 0 = copy flag
  53774.         clear if direct copy
  53775.         set if copy to structure which removes ISO/High Sierra diffs
  53776.     ES:BX -> ASCIZ path name
  53777.     SI:DI -> buffer for directory entry (see #1313)
  53778.          minimum 255 bytes for direct copy
  53779. Return: CF set on error
  53780.         AX = error code
  53781.     CF clear if successful
  53782.         AX = disk format (0=High Sierra,1=ISO 9660)
  53783.  
  53784. Format of CD-ROM directory entry (direct copy):
  53785. Offset    Size    Description    (Table 1313)
  53786.  00h    BYTE  length of directory entry
  53787.  01h    BYTE  length of XAR in Logical Block Numbers
  53788.  02h    DWORD LBN of data, Intel (little-endian) format
  53789.  06h    DWORD LBN of data, Motorola (big-endian) format
  53790.  0Ah    DWORD length of file, Intel format
  53791.  0Eh    DWORD length of file, Motorola format
  53792. ---High Sierra---
  53793.  12h  6 BYTEs date and time
  53794.  18h    BYTE  bit flags
  53795.  19h    BYTE  reserved
  53796. ---ISO 9660---
  53797.  12h  7 BYTEs date and time
  53798.  19h    BYTE  bit flags
  53799. ---both formats---
  53800.  1Ah    BYTE  interleave size
  53801.  1Bh    BYTE  interleave skip factor
  53802.  1Ch    WORD  volume set sequence number, Intel format
  53803.  1Eh    WORD  volume set sequence number, Motorola format
  53804.  20h    BYTE  length of file name
  53805.  21h  N BYTEs file name
  53806.     BYTE (optional) padding if filename is odd length
  53807.       N BYTEs system data
  53808.  
  53809. Format of CD-ROM directory entry (canonicalized):
  53810. Offset    Size    Description    (Table 1314)
  53811.  00h    BYTE    length of XAR in Logical Block Numbers
  53812.  01h    DWORD    Logical Block Number of file start
  53813.  05h    WORD    size of disk in logical blocks
  53814.  07h    DWORD    file length in bytes
  53815.  0Bh  7 BYTEs    date and time
  53816.  12h    BYTE    bit flags
  53817.  13h    BYTE    interleave size
  53818.  14h    BYTE    interleave skip factor
  53819.  15h    WORD    volume set sequence number
  53820.  17h    BYTE    length of file name
  53821.  18h 38 BYTEs    ASCIZ filename
  53822.  3Eh    WORD    file version number
  53823.  40h    BYTE    number of bytes of system use data
  53824.  41h 220 BYTEs    system use data
  53825. --------d-2F1510-----------------------------
  53826. INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
  53827.     AX = 1510h
  53828.     CX = CD-ROM drive letter (0 = A, 1 = B, etc)
  53829.     ES:BX -> CD-ROM device driver request header (see #1289 at AX=0802h)
  53830. --------W-2F1600-----------------------------
  53831. INT 2F - MS Windows - WINDOWS ENHANCED MODE INSTALLATION CHECK
  53832.     AX = 1600h
  53833. Return: AL = status
  53834.         00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
  53835.         01h Windows/386 2.x running
  53836.         80h XMS version 1 driver installed (neither Windows 3.x enhanced
  53837.           mode nor Windows/386 2.x running) (obsolete--see note)
  53838.         FFh Windows/386 2.x running
  53839.     AL = anything else
  53840.         AL = Windows major version number >= 3
  53841.         AH = Windows minor version number
  53842. Notes:    INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
  53843.       drivers, TSRs, and applications) to cooperate with multitasking
  53844.       Windows/386 2.x and Windows 3.x and higher enhanced mode.
  53845.     certain calls are also supported in the Microsoft 80286 DOS extender in
  53846.       Windows standard mode
  53847.     this function served as the installation check and AX=1610h served to
  53848.       get the driver entry point for XMS version 1, which is now obsolete.
  53849.       Use AX=4300h and AX=4310h instead
  53850. SeeAlso: AX=160Ah,AX=1610h,AX=4300h,AX=4680h
  53851. Index:    installation check;XMS version 1
  53852. --------W-2F1602-----------------------------
  53853. INT 2F - MS Windows/386 2.x - GET API ENTRY POINT
  53854.     AX = 1602h
  53855. Return: ES:DI -> Windows/386 2.x API procedure entry point
  53856. Notes:    this interface is supported in Windows 3.x only for 2.x compatibility
  53857.     to get the current virtual machine (VM) ID in Windows/386 2.x:
  53858.         AX = 0000h
  53859.         ES:DI -> return address
  53860.         JUMP to address returned from INT 2F/AX=1602h
  53861.     After JUMP, at return address:
  53862.         BX = current VM ID.
  53863. SeeAlso: AX=C020h
  53864. --------W-2F1603-----------------------------
  53865. INT 2F - MS Windows/386 - GET INSTANCE DATA
  53866.     AX = 1603h
  53867. Return: AX = 5248h ('RH') if supported
  53868.         DS:SI -> Windows/386 instance data (see #1315)
  53869. Notes:    reportedly supported by RM Nimbus MS-DOS 3.3 kernel
  53870.     this function is called by DOSMGR when AX=1607h/BX=0015h is not
  53871.       supported, as is the case in DOS versions prior to 5.0
  53872.     see Geoff Chappell's book _DOS_Internals_ for additional discussions of
  53873.       this function, DOSMGR's behavior, and instancing in general
  53874. SeeAlso: AX=1607h/BX=0015h
  53875.  
  53876. Format of Windows/386 instance data:
  53877. Offset    Size    Description    (Table 1315)
  53878.  00h    WORD    segment of IO.SYS (0000h = default 0070h)
  53879.  02h    WORD    offset in IO.SYS of STACKS data structure (DOS 3.2x)
  53880.         0000h if not applicable
  53881.  04h    WORD    number of instance data entries (max 32)
  53882.  06h    Array of instance data entries
  53883.     Offset    Size    Description
  53884.      00h    WORD    segment (0002h = DOS kernel)
  53885.      02h    WORD    offset
  53886.      04h    WORD    size
  53887. --------W-2F1605-----------------------------
  53888. INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX INIT BROADCAST
  53889.     AX = 1605h
  53890.     ES:BX = 0000h:0000h
  53891.     DS:SI = 0000h:0000h
  53892.     CX = 0000h
  53893.     DX = flags
  53894.         bit 0 = 0 if Windows enhanced-mode initialization
  53895.         bit 0 = 1 if Microsoft 286 DOS extender initialization
  53896.         bits 1-15 reserved (undefined)
  53897.     DI = version number (major in upper byte, minor in lower)
  53898. Return: CX = 0000h if okay for Windows to load
  53899.     CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
  53900.     CX <> 0 if Windows should not load
  53901.     ES:BX -> startup info structure (see #1316)
  53902.     DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
  53903. Notes:    the Windows enhanced mode loader and Microsoft 286 DOS extender will
  53904.       broadcast an INT 2F/AX=1605h call when initializing.    Any DOS device
  53905.       driver or TSR can watch for this broadcast and return the appropriate
  53906.       values.  If the driver or TSR returns CX <> 0, it is also its
  53907.       responsibility to display an error message.
  53908.     each handler must first chain to the prior INT 2F handler with
  53909.       registers unchanged before processing the call
  53910.     if the handler requires local data on a per-VM basis, it must store the
  53911.       returned ES:BX in the "next" field of a startup info structure and
  53912.       return a pointer to that structure in ES:BX
  53913.     a single TSR may set the V86 mode enable/disable callback; if DS:SI is
  53914.       already nonzero, the TSR must fail the initialization by setting CX
  53915.       nonzero
  53916.     MSD checks for Windows 3.0 running in standard mode by testing whether
  53917.       CX=FFFFh and other registers are unchanged on return
  53918. SeeAlso: AX=1606h,AX=1608h,AX=4B05h
  53919.  
  53920. Format of Windows Startup Information Structure:
  53921. Offset    Size    Description    (Table 1316)
  53922.  00h  2 BYTEs    major, minor version of info structure
  53923.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  53924.  06h    DWORD    pointer to ASCIZ name of virtual device file or 0000h:0000h
  53925.  0Ah    DWORD    virtual device reference data (see #1318)
  53926.         (only used if above nonzero)
  53927.  0Eh    DWORD    pointer to instance data records (see #1317) or 0000h:0000h
  53928.  
  53929. Format of one Instance Item in array:
  53930. Offset    Size    Description    (Table 1317)
  53931.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  53932.  04h    WORD    size of instance data
  53933.  
  53934. Format of Virtual Device Reference Data:
  53935. Offset    Size    Description    (Table 1318)
  53936.  00h    DWORD    physical address of ??? or 00000000h
  53937.  04h    DWORD    physical address of ??? table
  53938.  08h    DWORD    "DEST_PAGE" address to which pages must be mapped
  53939.  0Ch  N DWORDs    "SRC_PAGE" physical addresses of the pages
  53940.         00000000h = end of table
  53941. Note:    EMM386.EXE sets the first pointer to the start of the device driver
  53942.       chain, the second pointer to a field of 40h bytes followed by a
  53943.       16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
  53944.       the start segment of the UMB area
  53945.  
  53946. (Table 1319)
  53947. Values Windows virtual mode enable/disable procedure is called with:
  53948.     AX = 0000h disable V86 mode
  53949.     AX = 0001h enable V86 mode
  53950.     interrupts disabled
  53951. Return: CF set on error
  53952.     CF clear if successful
  53953.     interrupts disabled
  53954. --------W-2F1606-----------------------------
  53955. INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX EXIT BROADCAST
  53956.     AX = 1606h
  53957.     DX = flags
  53958.         bit 0 = 0 if Windows enhanced-mode exit
  53959.         bit 0 = 1 if Microsoft 286 DOS extender exit
  53960.         bits 1-15 reserved (undefined)
  53961. Notes:    if the init broadcast fails (AX=1605h returned CX <> 0), then this
  53962.       broadcast will be issued immediately.
  53963.     this call will be issued in real mode
  53964. SeeAlso: AX=1605h,AX=1609h
  53965. --------W-2F1607-----------------------------
  53966. INT 2F - MS Windows - VIRTUAL DEVICE CALL OUT API
  53967.     AX = 1607h
  53968.     BX = virtual device ID (see INT 2F/AX=1684h)
  53969.     CX = (usually) callout subfunction
  53970. Return: (usually) AX,BX,CX,DX,ES contain results
  53971. Notes:    more of a convention than an API, this call specifies a standard
  53972.       mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
  53973.       to DOS device drivers and TSRs
  53974.     see below for details on several virtual devices
  53975. SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1607h/BX=0015h
  53976. SeeAlso: AX=1684h,AX=C020h
  53977. --------W-2F1607BX0006-----------------------
  53978. INT 2F - MS Windows - "V86MMGR" VIRTUAL DEVICE API
  53979.     AX = 1607h
  53980.     BX = 0006h (VxD identifier of "V86MMGR")
  53981.     CX = 0000h
  53982. Return: AX = status
  53983.         0000h if local A20 state changed
  53984.         1607h if A20 unchanged
  53985.         other if global A20 state changed
  53986. --------W-2F1607BX000C-----------------------
  53987. INT 2F - MS Windows - "VMD" VIRTUAL MOUSE DEVICE API
  53988.     AX = 1607h
  53989.     BX = 000Ch (VxD identifier of "VMD")
  53990. Return: CX = nonzero if mouse driver already virtualized
  53991. Note:    VMD (Virtual Mouse Driver) calls this and then checks whether CX is
  53992.       nonzero; if yes, it will not automatically virtualize the mouse
  53993.       driver.  This would be used if MOUSE.COM already virtualizes
  53994.       itself using the Windows API.
  53995. SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
  53996. ----------2F1607BX0010-----------------------
  53997. INT 2F C - MS Windows 3.1 - "BLOCKDEV" VIRTUAL HARD DISK DEVICE API
  53998.     AX = 1607h
  53999.     BX = 0010h (VxD identifier of "BLOCKDEV")
  54000.     CX = function
  54001.         0001h starting FastDisk compatibility tests
  54002.         0002h ending FastDisk compatibility tests
  54003.         0003h check if FastDisk installation allowed
  54004.         Return: CX = 0000h if allowed
  54005. Note:    this interface is called by the Windows FastDisk driver (such as
  54006.       WDCTRL) when it thinks that the INT 13h handler immediately below
  54007.       IO.SYS's INT 13h code is not in ROM; it should be supported by any
  54008.       program which hooks itself underneath IO.SYS's INT 13h code with
  54009.       INT 2F/AH=13h
  54010. SeeAlso: AX=1607h/BX=0014h,INT 2F/AH=13h
  54011. --------W-2F1607BX0014-----------------------
  54012. INT 2F - MS Windows - "VNETBIOS" VIRTUAL DEVICE API
  54013.     AX = 1607h
  54014.     BX = 0014h (VxD identifier of "VNETBIOS")
  54015. Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
  54016.         command code (see #1320)
  54017. Note:    VNETBIOS (Virtual NetBIOS) calls this function to determine whether
  54018.       the NetBIOS has an extensions Windows should know about
  54019. SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0010h,AX=1607h/BX=0015h
  54020.  
  54021. (Table 1320)
  54022. Values for VNETBIOS action code:
  54023.  00h    "VN_Unknown" unknown command
  54024.  04h    "VN_No_Map"  no memory mapping necessary
  54025.  08h    "VN_Map_In"  input buffer is quickly used, so no global mapping needed
  54026.  0Ch    "VN_Map_In"  output buffer is quickly used, so no global mapping needed
  54027.  10h    "VN_Map_In_Out"     buffer is quickly used, so no global mapping needed
  54028.  14h    "VN_Chain_Send"     the chain-send command
  54029.  18h    "VN_Cancel"    special case for cancel command
  54030.  1Ch    "VN_Buffer_In"    buffer is incoming
  54031.  20h    "VN_Buffer_Out" buffer is outgoing
  54032.  24h    "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
  54033. --------D-2F1607BX0015-----------------------
  54034. INT 2F C - MS Windows - "DOSMGR" VIRTUAL DEVICE API
  54035.     AX = 1607h
  54036.     BX = 0015h (VxD identifier of "DOSMGR")
  54037.     CX = function
  54038.         0000h query instance processing
  54039.         DX = 0000h
  54040.         Return: CX = state
  54041.                 0000h not instanced
  54042.                 other instanced (DOS 5+ kernel returns 0001h)
  54043.                 DX = segment of DOS drivers or 0000h for
  54044.                     default of 0070h
  54045.                 ES:BX -> patch table (see #1322)
  54046.         0001h set patches in DOS
  54047.         DX = bit mask of patch requests (see #1321)
  54048.         Return: AX = B97Ch
  54049.             BX = bit mask of patches applied (see #1321)
  54050.             DX = A2ABh
  54051.         0002h remove patches in DOS (ignored by DOS 5.0 kernel)
  54052.         DX = bit mask of patch requests (see function 0001h)
  54053.         Return: CX = 0000h (DOS 5-6)
  54054.         Note:    return values are ignored by DOSMGR in Windows 3.1
  54055.         0003h get size of DOS data structures
  54056.         DX = bit mask of request (only one bit can be set)
  54057.             bit 0: Current Directory Structure size
  54058.         Return: if supported request:
  54059.                 AX = B97Ch
  54060.                 CX = size in bytes of requested structure
  54061.                 DX = A2ABh
  54062.             else:
  54063.                 CX = 0000h
  54064.                 all other registers preserved
  54065.         0004h determine instanced data structures
  54066.         Return: AX = B97Ch if supported
  54067.             DX = A2ABh if supported (DOS 5+ kernel returns 0000h)
  54068.             BX = bit mask of instanced items
  54069.                 bit 0: CDS
  54070.                 bit 1: SFT
  54071.                 bit 2: device list
  54072.                 bit 3: DOS swappable data area
  54073.         0005h get device driver size
  54074.         ES = segment of device driver
  54075.         Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
  54076.             DX:AX = A2ABh:B97Ch if successful
  54077.                 BX:CX = size of device driver in bytes
  54078. Notes:    DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
  54079.       been instanced via this API and will not perform its own default
  54080.       instancing of the normal DOS/BIOS data if so; if this API is not
  54081.       supported, DOSMGR will also try to access instancing data through
  54082.       INT 2F/AX=1603h
  54083.     these functions are supported by the DOS 5+ kernel; DOSMGR contains
  54084.       tables of instancing information for earlier versions of DOS
  54085.     see Geoff Chappell's book _DOS_Internals_ for additional discussions of
  54086.       DOSMGR's behavior and instancing in general
  54087. SeeAlso: AX=1603h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1684h
  54088.  
  54089. Bitfields for DOSMGR patch requests:
  54090. Bit(s)    Description    (Table 1321)
  54091.  0    enable critical sections
  54092.  1    NOP setting/checking user ID
  54093.  2    turn INT 21/AH=3Fh on STDIN into polling loop
  54094.  3    trap stack fault in "SYSINIT" to WIN386
  54095.  4    BIOS patch to trap "Insert disk X:" to WIN386
  54096.  
  54097. Format of DOSMGR patch table:
  54098. Offset    Size    Description    (Table 1322)
  54099.  00h  2 BYTEs    DOS version (major, minor)
  54100.  02h    WORD    offset in DOS data segment of "SAVEDS"
  54101.  04h    WORD    offset in DOS data segment of "SAVEBX"
  54102.  06h    WORD    offset in DOS data segment of InDOS flag
  54103.  08h    WORD    offset in DOS data segment of User ID word
  54104.  0Ah    WORD    offset in DOS data segment of "CritPatch" table to enable
  54105.           critical section calls (see INT 2A/AH=80h)
  54106.  0Ch    WORD    (DOS 5+ only) offset in DOS data segment of "UMB_HEAD",
  54107.           containing segment of last MCB in conventional memory
  54108. --------E-2F1607BX22C0-----------------------
  54109. INT 2F - Rational Systems DOS/4GW - ???
  54110.     AX = 1607h
  54111.     BX = 22C0h
  54112.     ???
  54113. Return: ???
  54114. SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h
  54115. --------W-2F1608-----------------------------
  54116. INT 2F C - MS Windows - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
  54117.     AX = 1608h
  54118. Notes:    called after all installable devices have been initialized
  54119.     real-mode software may be called between the Windows enhanced-mode init
  54120.       call (AX=1605h) and this call; the software must detect this
  54121.       situation
  54122. SeeAlso: AX=1605h,AX=1609h
  54123. --------W-2F1609-----------------------------
  54124. INT 2F C - MS Windows - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
  54125.     AX = 1609h
  54126. Note:    called at the beginning of a normal exit sequence; not made in the
  54127.       event of a fatal system crash
  54128. SeeAlso: AX=1606h,AX=1608h
  54129. --------W-2F160A-----------------------------
  54130. INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
  54131.     AX = 160Ah
  54132. Return: AX = 0000h if call supported
  54133.         BX = version (BH=major, BL=minor)
  54134.         CX = mode (0002h = standard, 0003h = enhanced)
  54135. SeeAlso: AX=1600h,AX=4680h
  54136. --------W-2F160B-----------------------------
  54137. INT 2F - MS Windows 3.1 - IDENTIFY TSRs
  54138.     AX = 160Bh
  54139.     ES:DI -> communication structure (see #1323) or 0000h:0000h
  54140. Return: ES:DI -> communication structure
  54141. Desc:    this call allows Windows-aware TSRs to make themselves known to
  54142.       Windows.
  54143. Note:    the TSR should allocate a communication structure, place the given
  54144.       ES:DI pointer in the first field, and return a pointer to the new
  54145.       structure
  54146. SeeAlso: AX=1605h,AX=160Ch,AX=4B01h,AX=4B05h
  54147.  
  54148. Format of TSR-to-Windows communication structure:
  54149. Offset    Size    Description    (Table 1323)
  54150.  00h    DWORD    pointer to next structure
  54151.  04h    WORD    PSP segment
  54152.  06h    WORD    API version ID (0100h)
  54153.  08h    WORD    EXEC flags
  54154.         bit 0: "WINEXEC"
  54155.         bit 1: "LOADLIBRARY"
  54156.         bit 2: "OPENDRIVER"
  54157.  0Ah    WORD    "exec_cmd_show"
  54158.  0Ch    DWORD    "exec_cmd"
  54159.  10h  4 BYTEs    reserved (0)
  54160.  14h    DWORD    pointer to TSR ID block (see #1324)
  54161.  18h    DWORD    pointer to TSR data block or 0000h:0000h
  54162.  
  54163. Format of Norton Utilities 6.0 TSR ID block:
  54164. Offset    Size    Description    (Table 1324)
  54165.  00h    WORD    length of name string
  54166.  02h  N BYTEs    name of TSR's executable
  54167. --------W-2F160C-----------------------------
  54168. INT 2F - MS Windows 3.1 - DETECT ROMs
  54169.     AX = 160Ch
  54170.     ???
  54171. Return: ???
  54172. Note:    used by ROM Windows
  54173. SeeAlso: AX=160Bh
  54174. --------m-2F1610-----------------------------
  54175. INT 2F - XMS v1.x only - GET DRIVER ADDRESS
  54176.     AX = 1610h
  54177.     details unavailable
  54178. Note:    this function and AX=1600h were only used in XMS version 1 and are now
  54179.       obsolete.  Use AX=4300h and AX=4310h instead
  54180. SeeAlso: AX=1600h,AX=4310h
  54181. --------W-2F1680-----------------------------
  54182. INT 2F - MS Windows, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
  54183.     AX = 1680h
  54184. Return: AL = status
  54185.         00h if the call is supported
  54186.         80h (unchanged) if the call is not supported
  54187. Notes:    programs can use this function in idle loops to enhance performance
  54188.       under multitaskers; this call is supported by MS Windows 3.0, DOS 5+,
  54189.       DPMI 1.0+, and in OS/2 2.0+ for multitasking DOS applications
  54190.     does not block the program; it just gives up the remainder of the time
  54191.       slice
  54192.     should not be used by Windows-specific programs
  54193.     when called very often without intermediate screen output under WIN 3+,
  54194.       the VM will go into an idle-state and will not receive the next slice
  54195.       before 8 seconds. This time can be changed in SYSTEM.INI through
  54196.       "IdleVMWakeUpTime=<seconds>". Setting to zero results in a long wait.
  54197. SeeAlso: INT 15/AX=1000h,INT 15/AX=5305h,INT 21/AH=89h,INT 7A/BX=000Ah
  54198. --------W-2F1681-----------------------------
  54199. INT 2F - MS Windows 3+ - BEGIN CRITICAL SECTION
  54200.     AX = 1681h
  54201. Notes:    used to prevent a task switch from occurring
  54202.     should be followed by an INT 2F/AX=1682h call as soon as possible
  54203.     nested calls are allowed, and must be followed by an appropriate number
  54204.       of "end critical section" calls
  54205.     not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
  54206.       increment by hand.
  54207. SeeAlso: AX=1682h,INT 15/AX=101Bh,INT 21/AH=34h
  54208. --------W-2F1682-----------------------------
  54209. INT 2F - MS Windows 3+ - END CRITICAL SECTION
  54210.     AX = 1682h
  54211. Notes:    not supported in Windows/386 2.x.  Get InDOS flag with INT 21/AH=34h
  54212.       and decrement by hand, taking care not to decrement InDOS flag
  54213.       through zero
  54214. SeeAlso: AX=1681h,INT 15/AX=101Ch,INT 21/AH=34h
  54215. --------W-2F1683-----------------------------
  54216. INT 2F - MS Windows 3+ - GET CURRENT VIRTUAL MACHINE ID
  54217.     AX = 1683h
  54218. Return: BX = current virtual machine (VM) ID
  54219. Notes:    Windows itself currently runs in VM 1, but this can't be relied upon
  54220.     VM IDs are reused when VMs are destroyed
  54221.     an ID of 0 will never be returned
  54222. SeeAlso: AX=1684h,AX=1685h,AX=168Bh
  54223. --------W-2F1684-----------------------------
  54224. INT 2F - MS Windows - GET DEVICE API ENTRY POINT
  54225.     AX = 1684h
  54226.     BX = virtual device (VxD) ID (see #1325)
  54227.     ES:DI = 0000h:0000h
  54228. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54229. Note:    some Windows enhanced-mode virtual devices provide services that
  54230.       applications can access.  For example, the Virtual Display Device
  54231.       (VDD) provides an API used in turn by WINOLDAP.
  54232. SeeAlso: AX=1683h
  54233.  
  54234. (Table 1325)
  54235. Values for MS Windows VxD ID:
  54236. Value    Name   CallOut V86 PM    Description
  54237.  0000h    LPT        N    N  N    DOS386 LPT Device (Windows for Workgroups 3.11)
  54238.  0000h    MSODISUP    N    N  N    MS ODI Support (Windows for Workgroups 3.11)
  54239.  0000h    NWNBLINK    N    N  N    Netware NetBIOS (Windows for Workgroups 3.11)
  54240.  0000h    SERIAL        N    N  N    DOS386 Serial Device (Windows for Workgrp 3.11)
  54241.  0001h    VMM        N  N    Virtual Machine Manager
  54242.  0002h    Debug
  54243.  0003h    VPICD        Y  Y    Virtual Prog. Interrupt Controller (PIC) Device
  54244.  0004h    VDMAD        N  N    Virtual Direct Memory Access (DMA) Device
  54245.  0005h    VTD        Y  Y    Virtual Timer Device
  54246.  0006h    V86MMGR        Y    N  N    Virtual 8086 Mode Device
  54247.  0007h    PageSwap    N  N    Paging Device
  54248.  0008h    Parity        N  N    Parity-check trapper
  54249.  0009h    Reboot        N  Y    Ctrl-Alt-Del handler
  54250.  000Ah    VDD        N  Y    Virtual Display Device (GRABBER)
  54251.  000Bh    VSD        N  N    Virtual Sound Device
  54252.  000Ch    VMD        Y    Y  Y    Virtual Mouse Device
  54253.  000Dh    VKD        N  Y    Virtual Keyboard Device
  54254.  000Eh    VCD        N  Y    Virtual COMM Device
  54255.  000Fh    VPD            Virtual Printer Device
  54256.  0010h    VHD            Virtual Hard Disk Device (Windows 3.0)
  54257.  0010h    BLOCKDEV    N  N    Virtual Hard Disk Device (Windows 3.1)
  54258.  0010h    IOS        N    N  N    DOS386 IOS Device (Windows for Workgroups 3.11)
  54259.  0010h    IOS        N  Y    (Chicago)
  54260.  0011h    VMCPD        Y  Y    Virtual Math CoProcessor Device
  54261.  0012h    EBIOS        N  N    Reserve EBIOS page (e.g., on PS/2)
  54262.  0013h    BIOSXLAT    N  N    Map ROM BIOS API between prot & V86 mode
  54263.  0014h    VNETBIOS    Y    N  N    Virtual NetBIOS Device
  54264.  0015h    DOSMGR        Y    Y  N    DOS data instancing (see #1328)
  54265.  0016h    WINLOAD
  54266.  0017h    SHELL        N  Y
  54267.  0018h    VMPOLL        N  N
  54268.  0019h    VPROD
  54269.  001Ah    DOSNET        N  N    assures network integrity across VMs
  54270.  001Ah    VNETWARE    Y  Y    Novell NetWare DOSNET replacement
  54271.  001Bh    VFD        N  N    Virtual Floppy Device
  54272.  001Ch    VDD2            Secondary display adapter
  54273.  001Ch    LoadHi        N  N    Netroom LoadHi Device (RMLODHI.VXD)
  54274.  001Ch    LoadHi        N  N    386MAX LoadHi Device (386MAX.VXD)
  54275.  001Ch    LoadHi        N  N    Win386 LoadHi Device (EMM386.EXE)
  54276.  001Dh    WINDEBUG    N  Y
  54277.  001Dh    TDDebug        N  Y
  54278.  001Eh    TSRLoad            TSR instance utility
  54279.  001Fh    BiosHook        BIOS interrupt hooker VxD
  54280.  0020h    Int13        N    N  N
  54281.  0021h    PageFile    N  Y    Paging File device
  54282.  0022h    SCSI
  54283.  0023h    MCA_POS
  54284.  0024h    SCSIFD            SCSI FastDisk device
  54285.  0025h    VPEND            Pen device
  54286.  0026h    APM            Advanced Power Management
  54287.  0027h    VXDLDR         N    Y  Y    VXDLDR (Windows for Workgroups 3.11)
  54288.  0028h    NDIS         N    Y  Y    Network Driver Interface Specification
  54289.                   (Windows for Workgroups 3.11)
  54290.  002Ah    VWIN32        N  Y    (Chicago)
  54291.  002Bh    VCOMM         N    Y  Y    DOS386 VCOMM Device (Windows for Workgrps 3.11)
  54292.  0030h    MACH32        N  Y    ATI Mach32 video card
  54293.  0030h    MACH32         N    N  Y    ATI MACH32
  54294.  0031h    NETBEUI         N    N  N    NETBEUI (Windows for Workgroups 3.11)
  54295.  0032h    SERVER         N    Y  Y    Int21 File Server (Windows for Workgroups 3.11)
  54296.  0033h    CONFIGMG    Y  Y    (Chicago)
  54297.  0033h    EDOS        N  N    Windows DOS Box Enhancer by Mom's Software
  54298.  0036h    VFBACKUP    Y  Y    (Chicago)
  54299.  0038h    VCOND        Y  Y    (Chicago)
  54300.  003Ah    VPMTD         N    N  Y    IFAX Scheduler Device (Windows for Workgr 3.11)
  54301.  003Bh    DSVXD        Y  N    DoubleSpace VxD from MS-DOS v6.x
  54302.  0051h    ISAPNP        N  N
  54303.  008Dh    ESDI_506    N  N    (Chicago)
  54304.  0090h    voltrack    N  N
  54305.  00FDh    FAKEIDE        N  N    (Chicago)
  54306.  0102h    CV1        N  N    Microsoft C/C++ 7.00+ CodeView for Windows
  54307.  0200h    VIPX        Y  Y    NetWare Virtual IPX Driver
  54308.  0200h    VIPX        Y  Y    Netware VIPX
  54309.  0201h    VNWLSERV    N  N    NetWare Lite 1.1 Server (SERVER.EXE)
  54310.  0202h    WINICE        Y  Y    SoftICE/W
  54311.  0203h    VCLIENT        N  Y    NetWare Lite 1.1+ Client
  54312.  0205h    VCAFT        N  N    Novell Virtual CAFT Driver (LANalyzer for Win)
  54313.  0205h    BCW        Y  Y    Nu-Mega Bounds Checker for Windows
  54314.  0206h    VTXRX        N  N    Novell Virtual TXRX Driver (LANalyzer for Win)
  54315.  0234h    VCOMMUTE    Y  Y    PC Tools Commute
  54316.  0442h    VTDAPI        N  Y    MMSys Win386 VTAPI Device
  54317.  0444h    VADMAD            Autoinitialize DMA (Windows 3.0)
  54318.  0445h    VSBD        Y  Y    WinResKit: Sound Blaster Device
  54319.  045Dh    VflatD        N  Y    dva.386, part of WIN32s
  54320.  0460h    UNIMODEM    N  Y
  54321.  0480h    VNetSup         N    Y  Y    Virtual Net Support (Windows for Workgrps 3.11)
  54322.  0481h    VRedir         N    N  N    Redirector File System Driver
  54323.                   (Windows for Workgroups 3.11)
  54324.  0483h    VSHARE        N  N    Windows for Workgroups Virtual SHARE
  54325.  0484h    IFSMgr         Y    Y  N    Installable File System Manager
  54326.                   (Windows for Workgroups 3.11)
  54327.  0486h    VFAT         N    Y  Y    Win386 HPFS Driver (Windows for Workgrps 3.11)
  54328.  048Bh    VCache         N    Y  Y    Virtual File Cache (Windows for Workgrps 3.11)
  54329.  048Bh    VCACHE        Y  Y
  54330.  0750h    VSWITCHD    Y  N
  54331.  1021h    VMB        Y  Y    Microsoft C/C++ 7.00 WXSRVR
  54332.  1022h    Vpfd        Y  Y    Microsoft C/C++ 7.00
  54333.  1025h    MMD        Y  Y    Microsoft C/C++ 8.00, Visual C/C++ 1.00
  54334.  21EAh    VADLIBWD    N  Y    Adlib Waveform Driver by John Ridges
  54335.  2200h    VFINTD        Y  Y    Norton VFINTD (Norton Desktop)
  54336.  22C0h    ???        Y        Rational Systems DOS/4GW ??? 
  54337.  2402h    ZMAX        N  N    Qualitas 386MAX v7 DOSMAX handler
  54338.  24A0h    VNSS        N  Y    Norton Screen Saver (Norton Desktop)
  54339.  24A1h    VNDWD        Y  Y    Norton VNDWD Device (Norton Desktop)
  54340.  24A2h    SYMEvent    Y  Y    Norton Utilities v8
  54341.  2540h    VILD        Y  N    INTERLNK client from MS-DOS v6.x
  54342.  2640h    VASBID        N  Y    WinResKit: Artisoft Sounding Board Device
  54343.  2860h    COMMTASK    N    N  Y    Windows 386-mode preemptive tasker by James
  54344.                   A. Kenemuth of Interabang Computing
  54345.  28C0h    VXD        N    Y  Y    Generic VxD for real and protected mode by
  54346.                   Andrew Schulman in MSJ February 1993
  54347.  2925h    EDOS        Y  Y    Enhanced DOS by Firefly Software
  54348.  292Dh    VSBPD        Y  Y    Sound Blaster Pro
  54349.  3098h    VstlthD        N    N  N    for QEMM Stealth ROM mode
  54350.  310Eh    WPS        N  Y    MS DevNet CD-ROM: Windows Process Status
  54351.  4321h    POSTMSG        Y  Y    (see #1337)
  54352.  7FE0h    VWFD        N    Y  Y    ??? by Neil Sandlin of Microsoft
  54353.  7FE1h    VWATCHD        N    Y  Y    basic driver w/ no functionality except tracing
  54354.                   by Keith Jin of Microsoft PSS
  54355.  7FE5h    VFINTD        N    Y  Y    Virtual Floppy Interrupt trapper by Neil
  54356.                   Sandlin of Microsoft
  54357.  7FE7h    VMPAGES        N    Y  Y    demonstration of exporting VxD services, by
  54358.                   Neil Sandlin of Microsoft
  54359.  7FE9h    VIdleD        N    N  N    demonstration of Call_When_Idle function, by
  54360.                   Bernie McIlroy of Microsoft
  54361.  7FEBh    VMIOD        N    N  N    Virtual Monitor I/O Traffic Device, by Neil
  54362.                   Sandlin of Microsoft
  54363.  7FEDh    VMIRQD        N    N  N    Virtual Monitor IRQ Traffic Device, by Neil
  54364.                   Sandlin of Microsoft
  54365.  8888h    VbillD            Bill Potvin II's for reversing Compaq LTE video
  54366.  EEEEh    VEPSD        N  N    Virtual Extended Paging Services for
  54367.                   Borland C++ v4.0
  54368. Note:    The high bit of the VxD ID is reserved for future use. The
  54369.     next 10 bits are the OEM number which is assigned by Microsoft. The
  54370.     low 5 bits are the device number.  Naturally, this scheme has not
  54371.     been adhered to since there are now more than 32 different VxDs.
  54372. --------W-2F1684BX0005-----------------------
  54373. INT 2F - MS Windows - VTD - GET DEVICE API ENTRY POINT
  54374.     AX = 1684h
  54375.     BX = 0005h (virtual device ID for VTD device) (see #1325)
  54376.     ES:DI = 0000h:0000h
  54377. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54378.           (see #1326)
  54379.  
  54380. (Table 1326)
  54381. Call VTD.386 entry point with:
  54382.     AX = 0000h get VTD version number
  54383.         Return: AH = major version
  54384.             AL = minor version
  54385.     AX = 0100h get current clock tick time
  54386.         Return: EDX:EAX = clock tick time in 840ns units since Windows was
  54387.                 started
  54388.     AX = 0101h get current system time in milliseconds
  54389.         Return: EAX = time in milliseconds that Windows has been running
  54390.     AX = 0102h get current virtual machine time
  54391.         Return: EAX = cumulative amount of time the virtual machine has
  54392.             been active, in milliseconds
  54393. Note:    this entry point should only be called directly when TOOLHELP.DLL
  54394.       TimerCount() cannot be called
  54395. --------W-2F1684BX0009-----------------------
  54396. INT 2F - MS Windows - REBOOT - GET DEVICE API ENTRY POINT
  54397.     AX = 1684h
  54398.     BX = 0009h (virtual device ID for REBOOT device) (see #1325)
  54399.     ES:DI = 0000h:0000h
  54400. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54401.           (see #1327)
  54402.  
  54403. (Table 1327)
  54404. Call REBOOT protected-mode entry point with:
  54405.     AX = function
  54406.         0100h warm boot
  54407.         Return: never
  54408.         Note:    broadcasts "Reboot_Processor" message, which is caught
  54409.               by the VKD device
  54410.         0201h set Ctrl-Alt-Del handler
  54411.         ES:DI -> new Ctrl-Alt-Del handler
  54412.         Return: CF clear
  54413.         Note:    if an application installs its own handler and then
  54414.               chains to Windows' handler, Windows will no longer
  54415.               be able to detect hung applications, and will always
  54416.               produce an "Application not responding" dialog
  54417.         0202h get Ctrl-Alt-Del handler
  54418.         Return: CF clear
  54419.             ES:DI -> current Ctrl-Alt-Del handler
  54420.         Note:    the default handler is located in KERNEL
  54421.         0203h display "Application not responding" dialog box
  54422.         ES:DI -> ASCIZ name of hung application
  54423.         Return: CF clear
  54424.             AX = result
  54425.                 0000h user pressed Esc
  54426.                 0001h user pressed Enter
  54427.         Note:    this function is used by the default Windows
  54428.               Ctrl-Alt-Del handler
  54429.         0204h fatal exit to DOS
  54430.         CX:EDX -> ??? function
  54431.         CX = 0000h if unknown function not used
  54432.         Return: never
  54433.         Note:    used by Windows' default Ctrl-Alt-Del handler
  54434.         Warning: opened files are not closed and remain open as
  54435.               orphaned files in DOS
  54436. --------W-2F1684BX0015-----------------------
  54437. INT 2F - MS Windows - DOSMGR - GET DEVICE API ENTRY POINT
  54438.     AX = 1684h
  54439.     BX = 0015h (virtual device ID for DOSMGR device) (see #1325)
  54440.     ES:DI = 0000h:0000h
  54441. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54442.           (see #1328)
  54443.  
  54444. (Table 1328)
  54445. Call DOSMGR entry point with:
  54446.     AX = 0000h get DOSMGR version
  54447.         Return: CF clear
  54448.             AX = version (AH = major, AL = minor)
  54449.     AX = 0001h set critical focus
  54450.         Return: CF clear
  54451.     AX = 0002h crash current virtual machine
  54452.         Return: never
  54453.         Note:   displays message box stating that "application has been
  54454.               stopped by the DOSMGR device"
  54455.     AX = 0003h enter critical section
  54456.         Note:   this function assumes that the code for INT 2A/AX=8001h
  54457.               and INT 2A/AX=8002h have been modified for Windows
  54458.     AX = 0004h get VM ID byte
  54459.         Return: CF clear if successful
  54460.             ES:DI -> VM ID byte
  54461.             CF set on error
  54462.         Note:   this function fails if the INT 2A modifications have not
  54463.               yet been applied
  54464.     AX = 0005h inform Windows of possible media change
  54465.         BL = drive number (00h=A:)
  54466.         Return: CF clear if successful
  54467.             CF set on error
  54468. --------W-2F1684BX0017-----------------------
  54469. INT 2F U - MS Windows - SHELL - GET DEVICE API ENTRY POINT
  54470.     AX = 1684h
  54471.     BX = 0017h (virtual device ID for SHELL device) (see #1325)
  54472.     ES:DI = 0000h:0000h
  54473. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54474.           (see #1329)
  54475.  
  54476. (Table 1329)
  54477. Call SHELL entry point with:
  54478.     DX = function number (0000h-0016h, mostly unknown)
  54479.         0000h get version number
  54480.         Return: AX = version number
  54481.         0003h run program???
  54482.         SS:DI -> SEB structure (see #1330)
  54483.         Return: AX = ??? or 0000h on failure
  54484.  
  54485. Format of Shell Execution Block (SEB):
  54486. Offset    Size    Description    (Table 1330)
  54487.  00h    DWORD    PIF flags (see #1331)
  54488.  04h    DWORD    display flags (see #1332)
  54489.  08h    PWORD    -> pathname of .EXE to run
  54490.  0Eh    PWORD    -> argument list
  54491.  14h    PWORD    -> working drive/directory
  54492.  1Ah    WORD    desired number of V86 pages for virtual machine
  54493.  1Ch    WORD    minimum number of V86 pages for VM
  54494.  1Eh    WORD    foreground priority
  54495.  20h    WORD    background priority
  54496.  22h    WORD    maximum KB of EMS
  54497.  24h    WORD    minimum KB of EMS
  54498.  26h    WORD    maximum KB of XMS
  54499.  28h    WORD    minimum KB of XMS
  54500.  2Ah    WORD    ???
  54501.  2Ch    WORD    ???
  54502.  2Eh 128 BYTEs    title
  54503. Note:    the PWORDs at offsets 08h,0Eh, and 14h consist of a DWORD offset
  54504.       followed by a WORD selector
  54505.  
  54506. Bitfields for 386 Enhanced Mode PIF flags:
  54507. Bit(s)    Description    (Table 1331)
  54508.  0    exclusive use of processor when VM is fullscreen
  54509.  1    VM runs in background
  54510.  2    VM runs in window
  54511.  3-4    ???
  54512.  5    Alt-Tab reserved
  54513.  6    Alt-Esc reserved
  54514.  7    Alt-Space reserved
  54515.  8    Alt-Enter reserved
  54516.  9    Alt-PrtSc reserved
  54517.  10    PrtSc reserved
  54518.  11    Ctrl-Esc reserved
  54519.  12    VM will release idle time slice
  54520.  13    VM not allowed to use high mem
  54521.  14    unknown
  54522.  15    VM expanded mem not pageable
  54523.  16    VM extended mem not pageable
  54524.  17    Fast paste from clipboard enabled
  54525.  18    VM app memory not pageable
  54526.  30    Close VM when app exits
  54527.  
  54528. Bitfields for SHELL display options:
  54529. Bit(s)    Description    (Table 1332)
  54530.  0    emulate text mode
  54531.  1    monitor text port
  54532.  2    monitor low graphics port
  54533.  3    monitor high graphics port
  54534.  7    Retain video memory
  54535. --------W-2F1684BX0444-----------------------
  54536. INT 2F - MS Windows - VADMAD - GET DEVICE API ENTRY POINT
  54537.     AX = 1684h
  54538.     BX = 0444h (virtual device ID for VADMAD device) (see #1325)
  54539.     ES:DI = 0000h:0000h
  54540. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54541.           (see #1333)
  54542.  
  54543. (Table 1333)
  54544. Call VADMAD entry point with:
  54545.     DX = operation
  54546.         0000h set VADMAD mode
  54547.         AX = desired mode
  54548.         0001h set VADMAD channel
  54549.         AX = desired channel
  54550. Note:    after setting mode/channel, start the DMA operation with an OUT to
  54551.       I/O port 0Bh (channels 0-3) or D6h (channels 4-7)
  54552. --------W-2F1684BX0750-----------------------
  54553. INT 2F - MS Windows - VSWITCHD - GET DEVICE API ENTRY POINT
  54554.     AX = 1684h
  54555.     BX = 0750h (virtual device ID for VSWITCHD device) (see #1325)
  54556.     ES:DI = 0000h:0000h
  54557. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54558.           (see #1334)
  54559.  
  54560. (Table 1334)
  54561. Call VSWITCHD entry point with:
  54562.     AX = function
  54563.         0000h toggle windowed mode
  54564.         Return: nothing
  54565.         0001h get windowed mode
  54566.         Return: CF clear if VM is windowed
  54567.             CF set if VM is full-screen
  54568. --------W-2F1684BX310E-----------------------
  54569. INT 2F - MS Windows - WPS - GET DEVICE API ENTRY POINT
  54570.     AX = 1684h
  54571.     BX = 310Eh (virtual device ID for WPS device) (see #1325)
  54572.     ES:DI = 0000h:0000h
  54573. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54574.           (see #1335)
  54575.  
  54576. (Table 1335)
  54577. Call WPS protected-mode entry point with:
  54578.     DX = function
  54579.         0000h get WPS.386 version
  54580.         Return: CF clear
  54581.             AX = version (AH = major, AL = minor)
  54582.         0001h get number of installed VxDs
  54583.         Return: CF clear
  54584.             AX = number of installed VxDs
  54585.         0002h get VxD characteristics
  54586.         AX = number of VxD
  54587.         ES:BX -> buffer for VxD characteristics structure (see #1336)
  54588.         Return: CF clear
  54589.             ES:BX buffer filled
  54590.  
  54591. Format of WPS.386 VxD characteristics structure:
  54592. Offset    Size    Description    (Table 1336)
  54593.  00h    WORD    VxD ID number
  54594.  02h    BYTE    VxD minor version
  54595.  03h    BYTE    VxD major version
  54596.  04h    BYTE    DDK minor version
  54597.  05h    BYTE    DDK major version
  54598.  06h    WORD    flags
  54599.         bit 0: V86 API supported
  54600.         bit 1: PM API supported
  54601.         bit 2: services supported
  54602.  08h    DWORD    start order
  54603.  0Ch  9 BYTEs    ASCIIZ VxD name
  54604. --------W-2F1684BX8888-----------------------
  54605. INT 2F - MS Windows - POSTMSG - GET DEVICE API ENTRY POINT
  54606.     AX = 1684h
  54607.     BX = 8888h (virtual device ID for POSTMSG device) (see #1325)
  54608.     ES:DI = 0000h:0000h
  54609. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54610.           (see #1337,#1339)
  54611.  
  54612. (Table 1337)
  54613. Call POSTMSG protected-mode entry point with:
  54614.     AX = window handle
  54615.     CX:BX -> callback procedure (see #1338)
  54616. Return: nothing
  54617. Note:    this call registers a WinApp with the VxD; the callback must be in a
  54618.       fixed, non-discardable code segment
  54619. SeeAlso: #1339
  54620.  
  54621. (Table 1338)
  54622. Values POSTMSG callback routine is called with:
  54623.     STACK:    DWORD    "lParam" parameter from DOSApp
  54624.         WORD    "wParam" parameter from DOSApp
  54625.         WORD    Windows message number (WM_USER + 100)
  54626.         DWORD    registered hwnd
  54627.  
  54628. (Table 1339)
  54629. Call POSTMSG V86-mode entry point with:
  54630.     BX = wParam value to pass to protected-mode callback
  54631.     DX:AX = lParam value to pass to protected-mode callback
  54632. Return: CF clear if successful
  54633.     CF set on error (no WinApp registered)
  54634. SeeAlso: #1337
  54635. --------W-2F1684BX8888-----------------------
  54636. INT 2F - MS Windows - VbillD - GET DEVICE API ENTRY POINT
  54637.     AX = 1684h
  54638.     BX = 8888h (virtual device ID for VbillD device) (see #1325)
  54639.     ES:DI = 0000h:0000h
  54640. Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
  54641.           (see #1340)
  54642.  
  54643. (Table 1340)
  54644. Call VbillD entry point with:
  54645.     AX = function
  54646.         0001h set reverse video
  54647.         0002h set normal video
  54648. Return: ???
  54649. --------W-2F1685-----------------------------
  54650. INT 2F - MS Windows - SWITCH VMs AND CALLBACK
  54651.     AX = 1685h
  54652.     BX = VM ID of virtual machine to switch to
  54653.     CX = flags (see #1341)
  54654.     DX:SI = priority boost (see VMM.INC)
  54655.     ES:DI -> FAR procedure to callback
  54656. Return: CF set on error
  54657.         AX = error code
  54658.         01h invalid VM ID
  54659.         02h invalid priority boost
  54660.         03h invalid flags
  54661.     CF clear if successful
  54662.         event will be or has been called
  54663. Notes:    some DOS devices, such as networks, need to call functions in a
  54664.       specific VM. This call forces the appropriate VM to be installed.
  54665.     the callback procedure must preserve all registers and return with IRET
  54666. SeeAlso: AX=1683h,INT 15/AX=1117h
  54667.  
  54668. Bitfields for VM switching flags:
  54669. Bit(s)    Description    (Table 1341)
  54670.  0    wait until interrupts enabled
  54671.  1    wait until critical section unowned
  54672.  2-15    reserved (zero)
  54673. --------E-2F1686-----------------------------
  54674. INT 2F - DOS Protected-Mode Interface - DETECT MODE
  54675.     AX = 1686h
  54676. Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available)
  54677.     AX nonzero if in real/V86 mode or no DPMI (INT 31 not available)
  54678. SeeAlso: AX=1687h
  54679. --------E-2F1687-----------------------------
  54680. INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK
  54681.     AX = 1687h
  54682. Return: AX = 0000h if installed
  54683.         BX = flags
  54684.         bit 0: 32-bit programs supported
  54685.         CL = processor type (02h=80286, 03h=80386, 04h=80486)
  54686.         DH = DPMI major version
  54687.         DL = two-digit DPMI minor version (binary)
  54688.         SI = number of paragraphs of DOS extender private data
  54689.         ES:DI -> DPMI mode-switch entry point
  54690.     AX nonzero if not installed
  54691. SeeAlso: AX=1686h,AX=43E0h,AX=DE01h/BX=4450h,AX=FB42h/BX=0001h
  54692. SeeAlso: INT 31/AX=0400h,INT 31/AX=5702h,INT 38/AH=10h
  54693.  
  54694. (Table 1342)
  54695. Call DPMI mode switch entry point with:
  54696.     AX = flags
  54697.         bit 0: set if 32-bit program
  54698.     ES = real mode segment of buffer for DPMI private data (ignored if
  54699.         SI was zero)
  54700. Return: CF set on error
  54701.         program still in real mode
  54702.         AX = error code (DPMI 1.0+)
  54703.            8011h unable to allocate all necessary descriptors
  54704.            8021h 32-bit program specified, but 16-bit DPMI host
  54705.     CF clear if successful
  54706.         CS = 16-bit selector corresponding to real-mode CS
  54707.         SS = selector corresponding to real-mode SS (64K limit)
  54708.         DS = selector corresponding to real-mode DS (64K limit)
  54709.         ES = selector to program's PSP (100h byte limit)
  54710.         FS = GS = 0
  54711.         high word of ESP = 0 if 32-bit program
  54712.         program now in protected mode
  54713. Note:    this entry point is only called for the initial switch to protected
  54714.       mode
  54715. --------W-2F1688BX0BAD-----------------------
  54716. INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET ALIAS SELECTOR TO LDT
  54717.     AX = 1688h
  54718.     BX = 0BADh
  54719. Return: AX = 0000h if supported
  54720.         BX = alias selector for LDT
  54721. Note:    use the LSL instruction or GetSelectorLimit() to find LDT size
  54722.     this call should be considered obsolete for Windows 3.1+, as the
  54723.       alias selector can be retrieved via the API entry point for
  54724.       "MS-DOS" retrieved from INT 2F/AX=168Ah (see #1344)
  54725. --------W-2F1689-----------------------------
  54726. INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL
  54727.     AX = 1689h
  54728.     ???
  54729. Return: ???
  54730. SeeAlso: AX=1680h,INT 15/AX=1000h,INT 28
  54731. --------E-2F168A-----------------------------
  54732. INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT
  54733.     AX = 168Ah
  54734.     DS:(E)SI = selector:offset of ASCIZ vendor name
  54735. Return: AL = status
  54736.         00h successful
  54737.            ES:(E)DI -> extended API entry point
  54738.         8Ah unsuccessful
  54739. Notes:    the vendor name is used to determine which entry point to return; it is
  54740.       case-sensitive
  54741.     available in protected mode only
  54742.     32-bit applications use ESI and EDI, 16-bit applications use SI and DI
  54743.     this call is present but not documented for DPMI 0.9
  54744.     the Borland C++ 3.1 DPMILOAD does not handle requests for entry points
  54745.       other than the MS-DOS one gracefully, producing an unhandled
  54746.       exception report; this has been fixed in the Borland Pascal 7 version
  54747. SeeAlso: INT 31/AX=0A00h,INT 31/AH=57h
  54748.  
  54749. (Table 1343)
  54750. Values for DPMI vendor-specific API names:
  54751.  "MS-DOS"    MS Windows and 386MAX v6.00+ (see #1344)
  54752.  "386MAX"    386MAX v6.00+
  54753.  "HELIX_DPMI"    Helix Netroom's DPMI server
  54754.  "Phar Lap"    Phar Lap 286|DOS-Extender RUN286 (see #1345)
  54755.  
  54756. (Table 1344)
  54757. Call Windows-support ("MS-DOS") entry point with:
  54758.     AX = 0100h get LDT alias selector
  54759. Return: CF clear if successful
  54760.         AX = alias selector
  54761.     CF set on error
  54762.  
  54763. (Table 1345)
  54764. Call Phar Lap RUN286 entry point with:
  54765.     AX = 0000h (function "load MSW")
  54766.     BX = new value for MSW register (low word of CR0)
  54767. Return: ???
  54768. --------W-2F168B-----------------------------
  54769. INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE
  54770.     AX = 168Bh
  54771.     BX = virtual machine ID (see AX=1683h), 0000h for current DOS box
  54772. Return: AL = 00h if focus set to specified VM
  54773. Notes:    documented on the Microsoft Developer's Network CD-ROM
  54774.     if the VM is a windowed DOS box, it will be set to full screen
  54775. SeeAlso: AX=1683h
  54776. --------W-2F168C-----------------------------
  54777. INT 2F - MS Windows 3.1 - RESTART COMMAND
  54778.     AX = 168Ch
  54779.     ???
  54780. Return: ???
  54781. Note:    WIN.COM executes specified application
  54782. --------W-2F1700-----------------------------
  54783. INT 2F - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION
  54784.     AX = 1700h
  54785. Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
  54786.     AX <> 1700h
  54787.         AL = WINOLDAP major version
  54788.         AH = WINOLDAP minor version
  54789. Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
  54790.       "old" (character-mode) application access to Dynamic Data Exchange,
  54791.       menus, and the Windows clipboard.
  54792. Note:    this installation check DOES NOT follow the format used by other
  54793.       software of returning AL=FFh
  54794. SeeAlso: AX=1701h,AX=4601h
  54795. Index:    installation check;WINOLDAP
  54796. --------W-2F1701-----------------------------
  54797. INT 2F - MS Windows "WINOLDAP" - OPEN CLIPBOARD
  54798.     AX = 1701h
  54799. Return: AX = status
  54800.         nonzero success
  54801.         0000h   clipboard is already open
  54802. SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h
  54803. --------W-2F1702-----------------------------
  54804. INT 2F - MS Windows "WINOLDAP" - EMPTY CLIPBOARD
  54805.     AX = 1702h
  54806. Return: AX = status
  54807.         nonzero clipboard has been emptied
  54808.         0000h   failure
  54809. SeeAlso: AX=1700h,AX=1701h,AX=1703h,AX=1704h
  54810. --------W-2F1703-----------------------------
  54811. INT 2F - MS Windows "WINOLDAP" - SET CLIPBOARD DATA
  54812.     AX = 1703h
  54813.     DX = clipboard format supported by WinOldAp (see #1346)
  54814.     ES:BX -> data (see #1347,#1348)
  54815.     SI:CX = size of data
  54816. Return: AX = status
  54817.         nonzero data copied into the Clipboard
  54818.         0000h   failure
  54819.  
  54820. (Table 1346)
  54821. Values for WinOldAp clipboard format:
  54822.  01h    text
  54823.  02h    bitmap
  54824.  03h    metafile picture
  54825.  04h    SYLK
  54826.  05h    DIF
  54827.  06h    TIFF
  54828.  07h    OEM text
  54829.  81h    DSP text
  54830.  82h    DSP bitmap
  54831.  
  54832. Format of Windows Clipboard bitmap:
  54833. Offset    Size    Description    (Table 1347)
  54834.  00h    WORD    type (0000h)
  54835.  02h    WORD    width of bitmap in pixels
  54836.  04h    WORD    height of bitmap in pixels
  54837.  06h    WORD    bytes per line
  54838.  08h    BYTE    number of color planes
  54839.  09h    BYTE    number of adjacent color bits in pixel
  54840.  0Ah    DWORD    pointer to start of data
  54841.  0Eh    WORD    width in 0.1mm units
  54842.  10h    WORD    height in 0.1mm units
  54843.  12h  N BYTEs    bitmap data
  54844.  
  54845. Format of Windows metafile picture:
  54846. Offset    Size    Description    (Table 1348)
  54847.  00h    WORD    mapping mode
  54848.  02h    WORD    X extent
  54849.  04h    WORD    Y extent
  54850.  06h    WORD    picture data
  54851. --------W-2F1704-----------------------------
  54852. INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE
  54853.     AX = 1704h
  54854.     DX = clipboard format supported by WinOldAp (see #1346)
  54855. Return:    DX:AX = size of data in bytes, including any headers
  54856.         0000h:0000h if no data in this format in the Clipboard
  54857. Note:    Windows reportedly rounds up the size of the data to a multiple of 32
  54858.       bytes
  54859. --------W-2F1705-----------------------------
  54860. INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA
  54861.     AX = 1705h
  54862.     DX = clipboard format supported by WinOldAp (see #1346)
  54863.     ES:BX -> buffer
  54864. Return: AX = status
  54865.         nonzero success
  54866.         0000h   error, or no data in this format in Clipboard
  54867. --------W-2F1708-----------------------------
  54868. INT 2F - MS Windows "WINOLDAP" - CloseClipboard
  54869.     AX = 1708h
  54870. Return: AX = status
  54871.         0000h failure
  54872.         nonzero success
  54873. --------W-2F1709-----------------------------
  54874. INT 2F - MS Windows "WINOLDAP" - COMPACT CLIPBOARD
  54875.     AX = 1709h
  54876.     SI:CX = desired size in bytes
  54877. Return: DX:AX = number of bytes in largest block of free memory
  54878. Note:    WinOldAp is responsible for including the size of any headers
  54879. --------W-2F170A-----------------------------
  54880. INT 2F - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES
  54881.     AX = 170Ah
  54882.     DX = GDI information index (see #1349)
  54883. Return: AX = integer value of the desired item
  54884.           (see #1350,#1351,#1352,#1353,#1354,#1355,#1356)
  54885. Note:    This function returns the device-capability bits for the given display
  54886.  
  54887. (Table 1349)
  54888. Values for GDI information index:
  54889.  00h    device driver version
  54890.  02h    device classification
  54891.  04h    width in mm
  54892.  06h    height in mm
  54893.  08h    width in pixels
  54894.  0Ah    height in pixels
  54895.  0Ch    bits per pixel
  54896.  0Eh    number of bit planes
  54897.  10h    number of brushes supported by device
  54898.  12h    number of pens supported by device
  54899.  14h    number of markers supported by device
  54900.  16h    number of fonts supported by device
  54901.  18h    number of colors
  54902.  1Ah    size required for device descriptor
  54903.  1Ch    curve capabilities
  54904.  1Eh    line capabilities
  54905.  20h    polygon capabilities
  54906.  22h    text capabilities
  54907.  24h    clipping capabilities
  54908.  26h    bitblt capabilities
  54909.  28h    X aspect
  54910.  2Ah    Y aspect
  54911.  2Ch    length of hypotenuse of aspect
  54912.  58h    logical pixels per inch of width
  54913.  5Ah    logical pixels per inch of height
  54914. SeeAlso: #1350,#1351,#1352,#1353,#1354,#1355,#1356
  54915.  
  54916. (Table 1350)
  54917. Values for device classification:
  54918.  00h    vector plotter
  54919.  01h    raster display
  54920.  02h    raster printer
  54921.  03h    raster camera
  54922.  04h    character-stream, PLP
  54923.  05h    Metafile, VDM
  54924.  06h    display-file
  54925. SeeAlso: #1349,#1351,#1352,#1353,#1354,#1355,#1356
  54926.  
  54927. Bitfields for curve capabilities:
  54928. Bit(s)    Description    (Table 1351)
  54929.  0    circles
  54930.  1    pie wedges
  54931.  2    chord arcs
  54932.  3    ellipses
  54933.  4    wide lines
  54934.  5    styled lines
  54935.  6    wide styled lines
  54936.  7    interiors
  54937. SeeAlso: #1349,#1350,#1352,#1353,#1354,#1355,#1356
  54938.  
  54939. Bitfields for line capabilities:
  54940. Bit(s)    Description    (Table 1352)
  54941.  1    polylines
  54942.  2    markers
  54943.  3    polymarkers
  54944.  4    wide lines
  54945.  5    styled lines
  54946.  6    wide styled lines
  54947.  7    interiors
  54948. SeeAlso: #1349,#1350,#1351,#1353,#1354,#1355,#1356
  54949.  
  54950. Bitfields for polygon capabilities:
  54951. Bit(s)    Description    (Table 1353)
  54952.  0    polygons
  54953.  1    rectangles
  54954.  2    trapezoids
  54955.  3    scanlines
  54956.  4    wide borders
  54957.  5    styled borders
  54958.  6    wide styled borders
  54959.  7    interiors
  54960. SeeAlso: #1349,#1350,#1351,#1352,#1354,#1355,#1356
  54961.  
  54962. Bitfields for text capabilities:
  54963. Bit(s)    Description    (Table 1354)
  54964.  0    output precision character
  54965.  1    output precision stroke
  54966.  2    clippping precision stroke
  54967.  3    90-degree character rotation
  54968.  4    arbitrary character rotation
  54969.  5    independent X and Y scaling
  54970.  6    double-size
  54971.  7    integer scaling
  54972.  8    continuous scaling
  54973.  9    bold
  54974.  10    italic
  54975.  11    underline
  54976.  12    strikeout
  54977.  13    raster fonts
  54978.  14    vector fonts
  54979.  15    reserved
  54980. SeeAlso: #1349,#1350,#1351,#1352,#1353,#1355,#1356
  54981.  
  54982. (Table 1355)
  54983. Values for clipping capabilities:
  54984.  00h    none
  54985.  01h    clipping to rectangles
  54986. SeeAlso: #1349,#1350,#1351,#1352,#1353,#1354,#1356
  54987.  
  54988. Bitfields for raster capabilities:
  54989. Bit(s)    Description    (Table 1356)
  54990.  0    simple bitBLT
  54991.  1    device requires banding support
  54992.  2    device requires scaling support
  54993.  3    supports >64K bitmap
  54994. SeeAlso: #1349,#1350,#1351,#1352,#1353,#1354,#1355
  54995. ----------2F18-------------------------------
  54996. INT 2F U - MS-Manager
  54997.     AH = 18h
  54998.     ???
  54999. Return: ???
  55000. --------l-2F1900-----------------------------
  55001. INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
  55002.     AX = 1900h
  55003. Return: AL = status
  55004.         00h not installed
  55005.         FFh installed
  55006. --------l-2F1901-----------------------------
  55007. INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
  55008.     AX = 1901h
  55009.     BL = SHELLC type
  55010.         00h transient
  55011.         01h resident
  55012.     DS:DX -> far call entry point for resident SHELLC.EXE
  55013. Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
  55014. Note:    SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
  55015. --------l-2F1902-----------------------------
  55016. INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
  55017.     AX = 1902h
  55018.     ES:DI -> ASCIZ full filename of current batch file, with at least the
  55019.           final filename element uppercased
  55020.     DS:DX -> buffer for results
  55021. Return: AL = 00h  failed, either
  55022.         (a) final filename element quoted at ES:DI does not match
  55023.               identity of shell batch file quoted as parameter of most
  55024.               recent call of SHELLB command, or
  55025.         (b) no more Program Start Commands available.
  55026.     AL= FFh     success, then:
  55027.         memory at DS:[DX+1] onwards filled as:
  55028.         DX+1:    BYTE    count of bytes of PSC
  55029.         DX+2: N BYTEs    Program Start Command text
  55030.             BYTE    0Dh terminator
  55031. Desc:    COMMAND.COM executes the result of this call in preference to
  55032.       reading a command from a batch file.    Thus the batch file does not
  55033.       advance in execution for so long as SHELLB provides PSCs from its
  55034.       workspace.
  55035. Note:    The PSCs are planted in SHELLB workspace by SHELLC, the user
  55036.       menu interface.  The final PSC of a sequence is finished with a
  55037.       GOTO COMMON, which causes a loop back in the batch file which called
  55038.       SHELLC so as to execute SHELLC again.     The check on batch file name
  55039.       permits PSCs to CALL nested batch files while PSCs are still stacked
  55040.       up for subsequent execution.
  55041. --------l-2F1903-----------------------------
  55042. INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
  55043.     AX = 1903h
  55044.     ES:DI -> ASCIZ batch file name as for AX=1902h
  55045. Return: AL = status
  55046.         FFh quoted batch file name matches last SHELLB parameter
  55047.         00h it does not
  55048. --------l-2F1904-----------------------------
  55049. INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface
  55050.     AX = 1904h
  55051. Return: ES:DI -> name of current shell batch file:
  55052.         WORD    number of bytes of name following
  55053.         BYTEs    (8 max) uppercase name of shell batch file
  55054. --------V-2F1A00-----------------------------
  55055. INT 2F - DOS 4+ ANSI.SYS - INSTALLATION CHECK
  55056.     AX = 1A00h
  55057. Return: AL = FFh if installed
  55058. Notes:    AVATAR.SYS also responds to this call
  55059.     documented for DOS 5+, but undocumented for DOS 4.x
  55060. --------V-2F1A00BX414E-----------------------
  55061. INT 2F - ANSIPLUS.SYS v2.00+ - INSTALLATION CHECK
  55062.     AX = 1A00h
  55063.     BX = 414Eh ('AN')
  55064.     CX = 5349h ('SI')
  55065.     DX = 2B2Bh ('++')
  55066. Return: AL = FFh if installed
  55067.         CF clear
  55068.         ES:BX -> INT 29 entry point
  55069.         CX = ANSIPLUS BCD version number (v3.10+, CH=major, CL=minor)
  55070.         DL = capabilities (v4.00+)
  55071.         00h full capability driver
  55072.         01h reduced capability driver
  55073.         2Bh full capability driver (before v4.00)
  55074. Program: ANSIPLUS.SYS is a CON device driver by Kristofer Sweger which
  55075.       replaces the normal ANSI.SYS is a more powerful version with many
  55076.       additional features
  55077. Notes:    ANSIPLUS also identifies itself as ANSI.SYS if BX,CX, or DX differ
  55078.       from the magic values above
  55079.     an additional installation check is to test for the signature
  55080.       "ANSIPLUS" 12 bytes before the INT 29 entry point; the version
  55081.       number is also available as a four-character ASCII string (e.g.
  55082.       "4.00") four bytes before the entry point
  55083. SeeAlso: AX=1AA5h,AX=1AA6h,AX=1AA7h,AX=1AA8h,AX=1AA9h,AX=1AAAh,AX=D44Fh
  55084. --------V-2F1A00BX4156-----------------------
  55085. INT 2F - AVATAR.SYS - INSTALLATION CHECK
  55086.     AX = 1A00h
  55087.     BX = 4156h ('AV')
  55088.     CX = 4154h ('AT')
  55089.     DX = 4152h ('AR')
  55090. Return: AL = FFh if installed
  55091.         CF clear
  55092.         BX = AVATAR protocol level supported
  55093.         CX = driver type
  55094.         0000h AVATAR.SYS
  55095.         4456h DVAVATAR.COM inside DESQview window
  55096.         DX = 0016h
  55097. Program: AVATAR.SYS is a CON replacement by George Adam Stanislav which
  55098.       interprets AVATAR command codes in the same way that ANSI interprets
  55099.       ANSI command codes
  55100. Notes:    AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
  55101.       the magic values
  55102. SeeAlso: AX=1A21h,AX=1A3Ch,AX=1A3Fh,AX=1A52h,AX=1A72h,AX=1A7Dh,AX=1AADh"AVATAR"
  55103. --------V-2F1A01-----------------------------
  55104. INT 2F U - DOS 4+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
  55105.     AX = 1A01h
  55106.     CL = function
  55107.         7Fh for GET
  55108.         5Fh for SET
  55109.     DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
  55110. Return:    CF clear if successful
  55111.         AX destroyed
  55112.     CF set on error
  55113.         AX = error code (many non-standard)
  55114. Note:    presumably this is the DOS IOCTL interface to ANSI.SYS
  55115. SeeAlso: AX=1A02h,INT 21/AX=440Ch
  55116. --------V-2F1A02-----------------------------
  55117. INT 2F U - DOS 4+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
  55118.     AX = 1A02h
  55119.     DS:DX -> parameter block (see #1357)
  55120. Return: CF clear if successful
  55121.     CF set on error
  55122.         AX = error code
  55123. Note:    DOS 5+ chains to previous handler if AL > 02h on call
  55124. SeeAlso: AX=1A01h
  55125.  
  55126. Format of ANSI.SYS parameter block:
  55127. Offset    Size    Description    (Table 1357)
  55128.  00h    BYTE    subfunction
  55129.         00h set/reset interlock
  55130.         01h get /L flag
  55131.  01h    BYTE    interlock state
  55132.         00h=reset, 01h=set
  55133.           This interlock prevents some of the ANSI.SYS post-processing
  55134.           in its hook onto INT 10, AH=00h mode set
  55135.  02h    BYTE    (returned)
  55136.         00h if /L not in effect
  55137.         01h if /L in effect
  55138. --------V-2F1A21-----------------------------
  55139. INT 2F - AVATAR.SYS - SET DRIVER STATE
  55140.     AX = 1A21h (AL='!')
  55141.     DS:SI -> command string with one or more state characters (see #1358)
  55142.     CX = length of command string
  55143. Return: CF set on error (invalid subfunction)
  55144.     CF clear if successful
  55145. Note:    the characters in the state string are interpreted left to right, and
  55146.       need not be in any particular order
  55147. SeeAlso: AX=1A00h/BX=4156h,AX=1A3Fh
  55148.  
  55149. (Table 1358)
  55150. Values for AVATAR.SYS state characters:
  55151.  'a'    activate driver
  55152.  'd'    disable driver
  55153.  'f'    use fast screen output
  55154.  'g'    always convert gray keys (+ and -) to function keys
  55155.  'G'    never convert gray keys
  55156.  'l'    convert gray keys only when ScrollLock active
  55157.  's'    use slow screen output
  55158.  't'    Tandy 1000 keyboard (not yet implemented)
  55159. --------V-2F1A3C-----------------------------
  55160. INT 2F U - AVATAR.SYS v0.11 - ???
  55161.     AX = 1A3Ch
  55162.     ???
  55163. Return: CX = 0000h
  55164. SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A3Eh
  55165. --------V-2F1A3E-----------------------------
  55166. INT 2F U - AVATAR.SYS v0.11 - ???
  55167.     AX = 1A3Eh
  55168.     CL = ???
  55169.     CH = ???
  55170.     DL = ???
  55171.     DH = ???
  55172. Return: CL = ???
  55173.     CH = ???
  55174.     DL = ???
  55175.     DH = ???
  55176. SeeAlso: AX=1A3Ch,AX=1A3Fh
  55177. --------V-2F1A3F-----------------------------
  55178. INT 2F - AVATAR.SYS - QUERY DRIVER STATE
  55179.     AX = 1A3Fh (AL='?')
  55180.     ES:DI -> buffer
  55181.     CX = length of buffer in bytes
  55182. Return: CF clear
  55183.     CX = actual size of returned info
  55184. Note:    the returned information consists of multiple letters whose meanings
  55185.       are described under AX=1A21h
  55186. SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A44h
  55187. --------S-2F1A42BX4156-----------------------
  55188. INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
  55189.     AX = 1A42h
  55190.     BX = 4156h ('AV')
  55191.     ES:DI -> FAR handler for serial port using IRQ3
  55192.     DS = data segment needed by handler
  55193. Return: AX = status/return value
  55194.         0000h if no more room
  55195.         1A42h if ASD not installed
  55196.         else handle to use when uninstalling
  55197. Notes:    the handler need not save/restore registers or signal EOI to the
  55198.       interrupt controller
  55199.     the handler should return AX=0000h if the interrupt was meant for it,
  55200.       and either leave AX unchanged or return a non-zero value otherwise
  55201.     the most recently installed handler will be called first, continuing
  55202.       to earlier handlers until one returns AX=0000h
  55203. SeeAlso: AX=1A43h,AX=1A62h
  55204. --------S-2F1A43BX4156-----------------------
  55205. INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
  55206.     AX = 1A43h
  55207.     BX = 4156h ('AV')
  55208.     ES:DI -> FAR handler for serial port using IRQ4
  55209.     DS = data segment needed by handler
  55210. Return: AX = status/return value
  55211.         0000h if no more room
  55212.         1A43h if ASD not installed
  55213.         else handle to use when uninstalling
  55214. Notes:    (see AX=1A42h)
  55215. SeeAlso: AX=1A42h,AX=1A63h
  55216. --------V-2F1A44BX4156-----------------------
  55217. INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
  55218.     AX = 1A44h
  55219.     BX = 4156h ('AV')
  55220. Return: AX = 0000h
  55221.     DS = data segment
  55222.     CX = size of data segment
  55223. Note:    AVATAR.SYS calls this function whenever it is invoked.    If each
  55224.       process under a multitasker hooks this function and provides a
  55225.       separate data segment, AVATAR.SYS becomes fully reentrant.
  55226. SeeAlso: AX=1A21h,AX=1A3Fh,AX=1A52h
  55227. --------V-2F1A52-----------------------------
  55228. INT 2F U - AVATAR.SYS v0.11 - GET ???
  55229.     AX = 1A52h
  55230.     CX = size of buffer
  55231.     ES:DI -> buffer
  55232. Return: ??? copied into user buffer
  55233. Note:    the maximum size of the data which may be copied is returned by
  55234.       AX=1A72h
  55235. SeeAlso: AX=1A53h,AX=1A72h
  55236. --------V-2F1A53-----------------------------
  55237. INT 2F U - AVATAR.SYS v0.11 - ???
  55238.     AX = 1A53h
  55239.     CL = ??? (00h-05h)
  55240.     ???
  55241. Return: ???
  55242. SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A72h
  55243. --------S-2F1A62BX4156-----------------------
  55244. INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
  55245.     AX = 1A62h
  55246.     BX = 4156h ('AV')
  55247.     CX = handle for IRQ routine returned by AX=1A42h
  55248. SeeAlso: AX=1A42h,AX=1A63h
  55249. --------S-2F1A63BX4156-----------------------
  55250. INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
  55251.     AX = 1A63h
  55252.     BX = 4156h ('AV')
  55253.     CX = handle for IRQ routine returned by AX=1A43h
  55254. SeeAlso: AX=1A43h,AX=1A62h
  55255. --------V-2F1A72-----------------------------
  55256. INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
  55257.     AX = 1A72h
  55258. Return: CX = maximum size of ???
  55259. SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A7Bh,AX=1AADh"AVATAR"
  55260. --------V-2F1A7B-----------------------------
  55261. INT 2F U - AVATAR.SYS v0.11 - ???
  55262.     AX = 1A7Bh
  55263. Return: AX = 0000h
  55264.     CX = 0000h
  55265. SeeAlso: AX=1A00h/BX=4156h,AX=1A72h,AX=1A7Dh
  55266. --------V-2F1A7D-----------------------------
  55267. INT 2F U - AVATAR.SYS v0.11 - ???
  55268.     AX = 1A7Dh
  55269. Return: AX = ???
  55270. SeeAlso: AX=1A00h/BX=4156h,AX=1A7Bh
  55271. --------V-2F1AA5-----------------------------
  55272. INT 2F - ANSIPLUS v4.00+ - GET/SET ANSIPLUS CLIPBOARD
  55273.     AX = 1AA5h
  55274.     DH = subfunction
  55275.         00h get clipboard information
  55276.         01h get clipboard text
  55277.         02h set clipboard text
  55278.         03h append text to clipboard
  55279.         04h clear clipboard
  55280.         05h paste clipboard to keyboard
  55281.     ES:BX -> data area for subfunctions 01h, 02h, and 03h
  55282.     CX = size of data area (maximum size for subfunction 01h, actual size
  55283.         to add to clipboard for subfunctions 02h and 03h)
  55284. Return: AL = status
  55285.         00h successful
  55286.         01h unsupported subfunction (reduced capability driver)
  55287.         02h insufficient space
  55288.         A5h unsupported function (ANSIPLUS before v4.00)
  55289.     ES:BX -> ANSIPLUS local clipboard data
  55290.     CX = number of bytes currently in local clipboard
  55291.     DX = maximum size of local clipboard
  55292. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA6h
  55293. --------V-2F1AA6-----------------------------
  55294. INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS DRIVER
  55295.     AX = 1AA6h
  55296.     BH = function
  55297.         00h get hooked interrupts
  55298.         01h set hooked interrupts mask
  55299.         BL = new interrupts mask (see #1359)
  55300. Return: BL = previous interrupts mask (see #1359)
  55301. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA7h
  55302.  
  55303. Desc:    used to temporarily disable any prior copies of ANSIPLUS when a new
  55304.       copy is installed, such as in a multitasking system like DESQview
  55305. Note:    only the most-recently loaded copy of ANSIPLUS on the current INT 2F
  55306.       chain responds to this call
  55307.  
  55308. Bitfields for ANSIPLUS hooked interrupts mask:
  55309. Bit(s)    Description    (Table 1359)
  55310.  0    INT 09 hook disabled
  55311.  1    INT 10 hook disabled
  55312.  2    INT 15 hook disabled
  55313.  3    INT 16 hook disabled
  55314.  4    INT 1C hook disabled
  55315.  5    reset all bits when INT 29 called
  55316.  6    INT 29 hook disabled
  55317.  7    INT 33, INT 74, or other mouse event hook disabled
  55318. --------V-2F1AA7-----------------------------
  55319. INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS FEATURES
  55320.     AX = 1AA7h
  55321.     BL = function
  55322.         00h prevent scroll-back saves
  55323.         01h enable scroll-back saves
  55324.         02h disable key reprogramming and lock changes by escape sequences
  55325.         03h enable key reprogramming by escape sequences
  55326.         04h    disable and lock key stacking changes by escape sequences
  55327.         05h allow key stacking by escape sequences
  55328. Return: nothing
  55329. SeeAlso: AX=1AA6h
  55330. --------V-2F1AA8-----------------------------
  55331. INT 2F - ANSIPLUS v3.10+ - GET NEXT ANSIPLUS SCROLLBACK LINE
  55332.     AX = 1AA8h
  55333. Return: AL = status
  55334.         00h successful
  55335.         ES:BX -> screen line (character and attribute pairs)
  55336.         CX = length of line in bytes, 0000h if no more lines or
  55337.               unsupported video mode
  55338.         01h unsupported video mode active
  55339.         02h screen currently scrolled back
  55340.         03h reduced capability driver
  55341.         A8h unsupported function (driver before v3.10)
  55342. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA9h
  55343. --------V-2F1AA9-----------------------------
  55344. INT 2F - ANSIPLUS v3.10+ - GET ANSIPLUS SCROLLBACK INFORMATION
  55345.     AX = 1AA9h
  55346. Return: AL = status
  55347.         00h successful
  55348.         BX = current number of lines in scrollback buffer
  55349.         CX = number of bytes in one line
  55350.         01h unsupported video mode active
  55351.         02h screen currently scrolled back
  55352.         03h reduced capability driver
  55353.         A9h unsupported function (driver before v3.10)
  55354. Desc:    determine how much data is in the scrollback buffer and initialize
  55355.       scrollback retrieval to return the first line on the next call to
  55356.       AX=1AA8h
  55357. SeeAlso: AX=1A00h/BX=414Eh,AX=1AA8h
  55358. --------V-2F1AAA-----------------------------
  55359. INT 2F - ANSIPLUS v3.01+ - GET/SET ANSIPLUS SCREEN SAVER BLANKING TIME
  55360.     AX = 1AAAh
  55361.     BX = function
  55362.         FFFFh to get current blanking time
  55363.         other to set time
  55364.         CX = blanking time in clock ticks (0000h-7FFFh)
  55365. Return: BX = current blanking time
  55366.     CX = blanking time when last set
  55367. SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh
  55368. --------V-2F1AAB-----------------------------
  55369. INT 2F - ANSIPLUS v3.01+ - SET ANSIPLUS KEY REPEAT RATE
  55370.     AX = 1AABh
  55371.     BX = repeat rate in characters per second
  55372.         0000h use BIOS repeat rate
  55373. Return: nothing
  55374. SeeAlso: AX=1A00h/BX=414Eh,AX=1AAAh,AX=1AACh
  55375. --------V-2F1AAC-----------------------------
  55376. INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
  55377.     AX = 1AACh
  55378.     BH = number of bytes per character pattern
  55379.     BL = VGA/EGA character table to be loaded
  55380.     CX = number of characters to load
  55381.     DX = starting character code (offset into Map2 block)
  55382.     ES:BP -> user character table to be loaded
  55383. Return: AX = 1100h
  55384. Desc:    load the EGA/VGA character generator without the BIOS function's
  55385.       side effects of resetting the video mode and color palette
  55386. SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh,AX=1AADh"ANSIPLUS",INT 10/AX=1100h
  55387. --------V-2F1AAD-----------------------------
  55388. INT 2F - ANSIPLUS v2.00+ - ANSIPLUS DEVICE STATUS REPORT
  55389.     AX = 1AADh
  55390.     BL = report request code (81h-96h for v4.00)
  55391.     CX = color selector or key code, if required by request
  55392. Return: AX = first reported result
  55393.     BX = second result
  55394.     CX = third result, if applicable (unchanged otherwise)
  55395.     DX = fourth result, if applicable (unchanged otherwise)
  55396. Desc:    get device status reports equivalent to those for Esc [#n sequences
  55397.       while bypassing any device redirection and avoiding the need to
  55398.       parse the returned result
  55399. Note:    the report request code in BL is identical to the number in the
  55400.       corresponding Esc [#n sequence
  55401. SeeAlso: AX=1A00h/BX=414Eh,AX=1AACh
  55402. --------V-2F1AADDX0000-----------------------
  55403. INT 2F U - AVATAR.SYS v0.11 - ???
  55404.     AX = 1AADh
  55405.     DX = 0000h
  55406.     CX = subfunction (00h-0Ch)
  55407.     ???
  55408. Return: AX = 0000h if DX was nonzero
  55409.     ???
  55410. SeeAlso: AX=1A00h/BX=4156h,AX=1A72h
  55411. --------V-2F1AAC-----------------------------
  55412. INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
  55413.     AX = 1AACh
  55414. --------m-2F1B00-----------------------------
  55415. INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
  55416.     AX = 1B00h
  55417. Return: AL = FFh if installed
  55418. Note:    XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
  55419.     This extension hooks onto INT 67/AH=58h and returns from that call data
  55420.       which excludes the physical pages being used by DOS.
  55421. SeeAlso: AH=1Bh"FRAME INFO"
  55422. --------m-2F1B-------------------------------
  55423. INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
  55424.     AH = 1Bh
  55425.     AL <> 00h
  55426.     DI = hidden physical page number
  55427. Return: AX = FFFFh if failed (no such hidden page)
  55428.     AX = 0000h if OK, then
  55429.         ES = segment of page frame
  55430.         DI = physical page number
  55431. Notes:    this corresponds to the data edited out of the INT 67/AH=58h call
  55432.     FASTOPEN makes this call with AL = FFh
  55433. SeeAlso: AX=1B00h
  55434. --------V-2F2300-----------------------------
  55435. INT 2F - DR-DOS 5.0 GRAFTABL - INSTALLATION CHECK
  55436.     AX = 2300h
  55437. Return: AH = FFh
  55438. Note:    this installation check does not follow the usual format
  55439. SeeAlso: AH=23h,AX=2E00h
  55440. --------V-2F23-------------------------------
  55441. INT 2F - DR-DOS 5.0 GRAFTABL - GET GRAPHICS DATA
  55442.     AH = 23h
  55443.     AL nonzero
  55444. Return: AH = FFh
  55445.     ES:BX -> graphics data (8 bytes for each character from 80h to FFh)
  55446. SeeAlso: AX=2300h,AX=2E00h
  55447. --------T-2F2700-----------------------------
  55448. INT 2F - DR-DOS 6.0 TaskMAX - INSTALLATION CHECK
  55449.     AX = 2700h
  55450. Return: AL = status
  55451.         00h not installed
  55452.         FFh installed
  55453. --------T-2F2701-----------------------------
  55454. INT 2F - DR-DOS 6.0 TaskMAX - GET STATUS
  55455.     AX = 2701h
  55456. Return: AX = maximum simultaneous tasks
  55457.     BX = index into TASK_IDS of current foreground task
  55458.     CX = currently-active tasks
  55459.     DX = version number (DL = major, DH = minor)
  55460.         (DR-DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
  55461.     ES:SI -> TASK_IDS
  55462.     ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
  55463. Notes:    do not attempt to create a new task if CX == AX
  55464.     the task's index is its position on the task menu, while its ID is the
  55465.       position within the internal task name table
  55466. SeeAlso: AX=2714h,AX=2716h
  55467. --------T-2F2702-----------------------------
  55468. INT 2F - DR-DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
  55469.     AX = 2702h
  55470. Return: DX = maximum pages INT 67/AH=42h will report available
  55471. Note:    TaskMAX does not limit EMS allocations other than by limiting the
  55472.       amount which is reported as being available at a given time
  55473. SeeAlso: AX=2703h,INT 67/AH=42h
  55474. --------T-2F2703-----------------------------
  55475. INT 2F - DR-DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
  55476.     AX = 2703h
  55477.     DX = maximum pages INT 67/AH=42h should report available
  55478. Return: DX = new maximum for reporting
  55479. SeeAlso: AX=2702h,INT 67/AH=42h
  55480. --------T-2F2704-----------------------------
  55481. INT 2F - DR-DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
  55482.     AX = 2704h
  55483.     DL = subfunction
  55484.         00h unregister task manager
  55485.         01h register task manager
  55486. Return: DL = status
  55487.         00h registered
  55488.         01h unregistered
  55489. Notes:    a task manager replaces TaskMAX's menu system with its own user
  55490.       interface; while one is registered, the TaskMAX hotkeys and
  55491.       Ctrl-Alt-Del invoke the manager rather than the built-in menu system
  55492.     unregister the task manager before terminating it
  55493. SeeAlso: AX=2705h
  55494. Index:    hotkeys;TaskMAX
  55495. --------T-2F2705-----------------------------
  55496. INT 2F - DR-DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
  55497.     AX = 2705h
  55498.     DL = subfunction
  55499.         00h disable keystrokes for switching to next/prev/specified task
  55500.         01h enable
  55501. Return: nothing
  55502. Note:    should only be called by a registered task manager (see AX=2704h)
  55503. SeeAlso: AX=2704h,AX=2706h
  55504. --------T-2F2706-----------------------------
  55505. INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
  55506.     AX = 2706h
  55507.     DX = task index (see AX=2701h) of task to be activated
  55508. Return: DX = task index of previously-active task
  55509. SeeAlso: AX=2705h,AX=2707h,AX=2715h
  55510. --------T-2F2707-----------------------------
  55511. INT 2F - DR-DOS 6.0 TaskMAX - CREATE NEW TASK
  55512.     AX = 2707h
  55513.     DS:DX -> ASCIZ pathname of executable
  55514.     ES:BX -> parameter block (see #1360)
  55515.     CX = number of ticks before automatic return to task manager
  55516.         (0000h = run until termination or explicitly switched)
  55517. Return: DX = new task's task index (FFFFh if task terminated)
  55518. SeeAlso: AX=2706h,AX=2708h
  55519.  
  55520. Format of TaskMAX parameter block:
  55521. Offset    Size    Description    (Table 1360)
  55522.  00h    WORD    reserved, should be 0000h
  55523.  02h    DWORD    pointer to command tail to be copied into child's PSP
  55524.  06h    DWORD    pointer to first FCB to be copied into child's PSP
  55525.  0Ah    DWORD    pointer to second FCB to be copied into child's PSP
  55526. --------T-2F2708-----------------------------
  55527. INT 2F - DR-DOS 6.0 TaskMAX - DELETE TASK
  55528.     AX = 2708h
  55529.     DX = task index
  55530. Return: DX = FFFFh (task deleted)
  55531. Notes:    this call should only be used for abnormal task termination, after
  55532.       first checking for open files with AX=270Ch; should not be used
  55533.       with programs that allocate EMS or XMS memory
  55534.     switches to specified task first
  55535. SeeAlso: AX=2707h
  55536. --------T-2F2709-----------------------------
  55537. INT 2F - DR-DOS 6.0 TaskMAX - NAME TASK
  55538.     AX = 2709h
  55539.     DX = task index
  55540.     DS:SI -> 8-byte name (8 NULs = remove name)
  55541. Return: AL = task flags
  55542.         00h ID unused or task terminated
  55543.         01h ID in use, task name table entry valid
  55544.         81h ID in use, task name fixed
  55545.     BX = task ID
  55546.     ES:DI -> name in task name table (see AX=2701h)
  55547. Note:    the task retains the given name until it terminates or the name is
  55548.       removed by specifying a name of 8 NULs.
  55549. SeeAlso: AX=2701h,AX=2707h
  55550. --------T-2F270A-----------------------------
  55551. INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
  55552.     AX = 270Ah
  55553.     DX = task index
  55554. Return: DX = task ID (FFFFh if index invalid)
  55555. Note:    task IDs stay constant, while indexes can change when other tasks are
  55556.       deleted
  55557. SeeAlso: AX=2701h,AX=270Bh
  55558. --------T-2F270B-----------------------------
  55559. INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
  55560.     AX = 270Bh
  55561.     DX = task ID
  55562. Return: DX = task index (FFFFh if task not active)
  55563. SeeAlso: AX=270Ah
  55564. --------T-2F270C-----------------------------
  55565. INT 2F - DR-DOS 6.0 TaskMAX - CHECK OPEN FILES
  55566.     AX = 270Ch
  55567.     DX = task index
  55568. Return: AX = number of files currently open for specified task
  55569. SeeAlso: AX=2708h
  55570. --------T-2F270D-----------------------------
  55571. INT 2F - DR-DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
  55572.     AX = 270Dh
  55573.     DX = task index
  55574. Return: DX = status
  55575.         0000h if primary command interpreter (COMMAND.COM, etc.) running
  55576.         0001h if not in root shell for task
  55577. Note:    TaskMAX will return 0001h if the specified task has spawned another
  55578.       command interpreter with AX=2707h
  55579. SeeAlso: AX=2707h,AX=270Ch
  55580. --------T-2F270E-----------------------------
  55581. INT 2F - DR-DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
  55582.     AX = 270Eh
  55583.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  55584.     DS:SI -> pasting lead-in string (character/scan-code pairs)
  55585. Return: ES:DI -> current lead-in string
  55586. Note:    the specified sequence of keystrokes is sent to the application before
  55587.       every line of a text-mode spreadsheet paste
  55588. SeeAlso: AX=270Fh,AX=2710h,AX=2713h
  55589. --------T-2F270F-----------------------------
  55590. INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
  55591.     AX = 270Fh
  55592.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  55593.     DS:SI -> pasting lead-in string (character/scan-code pairs)
  55594. Return: ES:DI -> current lead-in string
  55595. Note:    the specified sequence of keystrokes is sent to the application before
  55596.       every number in a numeric-mode spreadsheet paste
  55597. SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
  55598. --------T-2F2710-----------------------------
  55599. INT 2F - DR-DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
  55600.     AX = 2710h
  55601.     CX = length of string (max 15 keystrokes, 0000h to get current string)
  55602.     DS:SI -> pasting terminator string (character/scan-code pairs)
  55603. Return: ES:DI -> current terminator string
  55604. Note:    the specified sequence of keystrokes is sent to the application after
  55605.       every line of a spreadsheet paste operation
  55606. SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
  55607. --------T-2F2711-----------------------------
  55608. INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
  55609.     AX = 2711h
  55610.     DX = ASCII code for separator (FFFFh to get current)
  55611. Return: DL = current separator character
  55612. SeeAlso: AX=270Fh
  55613. --------T-2F2712-----------------------------
  55614. INT 2F - DR-DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
  55615.     AX = 2712h
  55616.     DX = task index
  55617. --------T-2F2713-----------------------------
  55618. INT 2F - DR-DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
  55619.     AX = 2713h
  55620.     DX = task index
  55621.     CX = paste mode
  55622.         0000h alphanumeric
  55623.         0001h numeric
  55624.         0002h text
  55625. SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
  55626. --------T-2F2714-----------------------------
  55627. INT 2F - DR-DOS 6.0 TaskMAX - GET SWAP SPACE INFO
  55628.     AX = 2714h
  55629. Return: CX = total KB of swap space
  55630.     DX = available KB of swap space
  55631. SeeAlso: AX=2701h
  55632. --------T-2F2715-----------------------------
  55633. INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
  55634.     AX = 2715h
  55635. Return: only after calling task is again selected
  55636. SeeAlso: AX=2706h
  55637. --------T-2F2716-----------------------------
  55638. INT 2F - DR-DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
  55639.     AX = 2716h
  55640. Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
  55641.         CX = bytes in paste buffer
  55642.         DX = current generation number (updated after every copy operation)
  55643. SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
  55644. --------T-2F2717-----------------------------
  55645. INT 2F - DR-DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
  55646.     AX = 2717h
  55647.     CX = bytes in destination buffer
  55648.     ES:DI -> destination buffer
  55649. Return: AX = 0000h if function supported
  55650.         CX = bytes actually copied (FFFFh if buffer too small)
  55651.         DX = current generation number for paste buffer
  55652. Note:    the destination buffer may be too small if another task adds more data
  55653.       to the paste buffer after the AX=2716h call but before this call
  55654. SeeAlso: AX=2713h,AX=2716h,AX=2718h
  55655. --------T-2F2718-----------------------------
  55656. INT 2F - DR-DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
  55657.     AX = 2718h
  55658.     CX = bytes in source buffer
  55659.     DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
  55660. Return: AX = 0000h if function supported
  55661.         CX = bytes actually copied
  55662.         DX = current generation number for paste buffer
  55663. SeeAlso: AX=2712h,AX=2716h,AX=2717h
  55664. --------T-2F2719-----------------------------
  55665. INT 2F - Novell DOS 7 TaskMGR - NOP
  55666.     AX = 2719h to 271Bh
  55667. --------T-2F271C-----------------------------
  55668. INT 2F U - Novell DOS 7 TaskMGR - ???
  55669.     AX = 271Ch
  55670.     DX = ???
  55671.         bit 0: ???
  55672. Return: ???
  55673.     ---if DX bit 0 set---
  55674.     AX = 0031h
  55675.     CX = 0000h
  55676. BUG:    if the task switcher is running, and DX bit 0 is set on call, this
  55677.       function will crash because its exit code attempts to pop several
  55678.       registers which are not pushed when DX bit 0 is set
  55679. --------m-2F2780CL01-------------------------
  55680. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  55681.     AX = 2780h
  55682.     CL = 01h (function number)
  55683.     CH = subfunction
  55684.         00h unused
  55685.         Return: CX = status (0002h) (see #1361)
  55686.         01h unused
  55687.         Return: CX = status (0002h) (see #1361)
  55688.         02h ???
  55689.         BX = ??? (0005h-000Fh)
  55690.         Return: CX = status (0000h,0030h) (see #1361)
  55691.         03h allocate ???
  55692.         DX = ???
  55693.         Return: CX = status (0000h,0003h) (see #1361)
  55694.         04h get ???
  55695.         Return: CX = 0000h (successful)
  55696.             BX = selector for EMM386 data segment
  55697.             EBX high word cleared
  55698.         05h ???
  55699.         EDX = ???
  55700.         Return: ???
  55701.         06h return to real mode via triple fault
  55702.         07h debugger break
  55703.         Note:    calls INT 03, then INT 21/AH=02h to output a question
  55704.               mark
  55705.         08h get ???
  55706.         Return: CX = 0000h (successful)
  55707.             EBX = ??? (0 or 2)
  55708.         09h ???
  55709.         0Ah ???
  55710.         0Bh unused
  55711.         Return: CX = status (0002h) (see #1361)
  55712.         0Ch ??? manipulates DOS memory chain
  55713.         0Dh ???
  55714.         EBX = ???
  55715.         EDX = ???
  55716.         Return: ???
  55717.         0Eh ???
  55718.         Return: CX = 0000h (successful)
  55719.             BL = ???     \ or BX = 0000h
  55720.             BH = ???     /
  55721.         0Fh get ???
  55722.         Return: CX = 0000h (successful)
  55723.             EBX = ???
  55724.         10h get and set ???
  55725.         EDX = ???
  55726.         Return: CX = 0000h (successful)
  55727.             EBX = old value of ???
  55728.         11h get ???
  55729.         Return: CX = 0000h (successful)
  55730.             EBX = ??? (0100h)
  55731.         12h get and set ???
  55732.         DX = ???
  55733.         Return: CX = 0000h (successful)
  55734.             AX = old value of ???
  55735.         13h ???
  55736.         Return: CX = status (0000h,003Fh) (see #1361)
  55737.             AX = ???
  55738.         14h ???
  55739.         EDX = ???
  55740.         Return: CX = status (0000h,003Fh) (see #1361)
  55741.         15h ???
  55742.         BX = segment of ???
  55743.         Return: CX = 0000h (successful)
  55744.             BX = segment of ???
  55745.         16h ???
  55746.         17h ???
  55747.         EBX = subfunction (0-2)
  55748.         Return: CX = status (0002h if EBX>2) (see #1361)
  55749.             ???
  55750.         18h unused
  55751.         Return: CX = status (0002h) (see #1361)
  55752. Return: CX = status (most subfunctions)
  55753.     (E)AX and/or (E)BX contain return values, depending on function
  55754. Notes:    called by DPMS.EXE and EMM386.EXE
  55755.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  55756.       because the request is handled on the initial trap to the memory
  55757.       manager caused by INT instructions, this API must be invoked with
  55758.       an actual INT 2F instruction instead of some simulation such as a
  55759.       far call to the address in the interrupt vector table
  55760. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
  55761.  
  55762. (Table 1361)
  55763. Values for Novell DOS 7 EMM386 function status:
  55764.  0000h    successful
  55765.  0001h    invalid function???
  55766.  0002h    invalid subfunction
  55767.  0003h    ???
  55768.  0004h    invalid ??? index
  55769.  0005h    ???
  55770.  0006h    ???
  55771.  0007h    ???
  55772.  0009h    ???
  55773.  000Ah    ???
  55774.  000Bh    invalid ??? handle
  55775.  000Ch    ???
  55776.  000Dh    ???
  55777.  000Eh    ???
  55778.  000Fh    ???
  55779.  0014h    ???
  55780.  0023h    ???
  55781.  0030h    ???
  55782.  003Fh    ???
  55783. --------m-2F2780CL02-------------------------
  55784. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  55785.     AX = 2780h
  55786.     CL = 02h (function number)
  55787.     CH = subfunction
  55788.         00h ???
  55789.         ???
  55790.         Return: CX = status (0000h,0023h, others???) (see #1361)
  55791.             BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
  55792.         Note:    calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
  55793.               func 02h/sf 0Bh, and func 04h/sf 01h
  55794.         01h get and clear ???
  55795.         DX = ??? handle or 0000h for default
  55796.         Return: CX = status (0000h,000Bh) (see #1361)
  55797.             EBX = old value of ??? if successful
  55798.             EDX destroyed
  55799.         02h ???
  55800.         DX = index of ???
  55801.         Return: CX = status (0000h,0004h,0005h) (see #1361)
  55802.             EBX = 0000FFFFh on error, 00000000h if successful
  55803.         03h ???
  55804.         DX = index of ???
  55805.         Return: CX = status (0000h,0004h,0006h) (see #1361)
  55806.             BX = FFFFh on error, 0000h if successful
  55807.         04h ???
  55808.         Return: CX = status (0000h,0007h,000Ah) (see #1361)
  55809.         05h ???
  55810.         EDX -> ??? data (first 8 bytes seem to be name)
  55811.         Return: CX = status (0000h,0009h,000Dh) (see #1361)
  55812.         06h ???
  55813.         Note:    calls fn 02h/subfn 05h, then fn 02h/subfn 40h
  55814.         07h ???
  55815.         EDX = ???
  55816.         Return: CX = status (0000h,0009h,000Eh) (see #1361)
  55817.         08h ???
  55818.         EDX = ???
  55819.         Return: CX = status (0000h,0009h,000Eh) (see #1361)
  55820.         09h ???
  55821.         EDX = ???
  55822.         Return: CX = status (0000h,0009h,000Fh) (see #1361)
  55823.         0Ah ???
  55824.         EDX = ???
  55825.         Return: CX = status (0000h,0009h,000Fh) (see #1361)
  55826.         0Bh ???
  55827.         DX = ???
  55828.         Return: CX = 0000h (successful)
  55829.         0Ch ???
  55830.         Return: CX = 0000h (successful)
  55831.         0Dh ???
  55832.         Return: CX = status (0000h,0023h) (see #1361)
  55833.             BX = FFFFh on error, 0000h if successful
  55834.         Note:    calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
  55835.               fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
  55836.         0Eh ???
  55837.         ???
  55838.         Return: CX = status (0000h,000Ch) (see #1361)
  55839.             EBX = ??? if successful
  55840.         0Fh ???
  55841.         BX = ???
  55842.         DX = ??? handle or 0000h for default
  55843.         Return: CX = status (0000h,000Bh) (see #1361)
  55844.         10h get ??? handle
  55845.         Return: CX = 0000h (successful)
  55846.             BX = handle of default ???
  55847.             EBX high word cleared
  55848.         11h ???
  55849.         DX = ??? handle or 0000h for default
  55850.         BX = ??? (handle???)
  55851.         Return:    CX = status (0000h,000Bh,0014h) (see #1361)
  55852.         12h ???
  55853.         BX = ???
  55854.         DX = ???
  55855.         Return: CX = 0000h (successful)
  55856.         13h ???
  55857.         DX = ???
  55858.         Return: CX = status (see #1361)
  55859.         14h ???
  55860.         BX = ???
  55861.         DX = ???
  55862.         Return: CX = status (0000h,0014h) (see #1361)
  55863.             BX = FFFFh on error, ??? if successful
  55864.         15h set ??? flags
  55865.         BX = ??? (low two bits only)
  55866.         DX = ??? handle or 0000h for default
  55867.         Return: CX = status (0000h,000Bh) (see #1361)
  55868.             BX = new value of ??? flags (entire word)
  55869.             EBX high register cleared
  55870.         16h clear ??? flag for default ???
  55871.         Return: CX = 0000h (successful)
  55872.         17h ???
  55873.         18h ???
  55874.         19h ???
  55875.         1Ah ???
  55876.         1Bh ???
  55877.         1Ch ???
  55878.         1Dh ???
  55879.         1Eh ???
  55880.         1Fh ???
  55881.         20h ???
  55882.         21h ???
  55883.         22h ???
  55884.         23h ???
  55885.         24h ???
  55886.         25h ???
  55887.         26h ???
  55888.         27h ???
  55889.         28h ???
  55890.         29h ???
  55891.         2Ah ???
  55892.         2Bh ???
  55893.         2Ch ???
  55894.         2Dh ???
  55895.         2Eh ???
  55896.         2Fh ???
  55897.         30h ???
  55898.         31h ???
  55899.         32h ???
  55900.         33h ???
  55901.         34h ???
  55902.         35h ???
  55903.         36h ???
  55904.         37h ???
  55905.         38h ???
  55906.         39h ???
  55907.         3Ah ???
  55908.         3Bh ???
  55909.         3Ch ???
  55910.         3Eh ???
  55911.         3Fh ???
  55912.         40h ???
  55913.         41h ???
  55914.         42h ???
  55915.         43h ???
  55916.         44h ???
  55917.         45h ???
  55918.         46h ???
  55919.         47h ???
  55920. Return: CX = status (most subfunctions)
  55921.     (E)AX and/or (E)BX contain return values, depending on function
  55922. Notes:    called by DPMS.EXE and EMM386.EXE
  55923.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  55924.       because the request is handled on the initial trap to the memory
  55925.       manager caused by INT instructions, this API must be invoked with
  55926.       an actual INT 2F instruction instead of some simulation such as a
  55927.       far call to the address in the interrupt vector table
  55928. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=03h,AX=2780h/CL=04h
  55929. --------m-2F2780CL03-------------------------
  55930. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  55931.     AX = 2780h
  55932.     CL = 03h (function number)
  55933.     CH = subfunction
  55934.         00h ???    
  55935.         01h ???
  55936.         02h ???
  55937.         03h ???
  55938.         04h ???
  55939.         05h ???
  55940.         06h ???
  55941.         07h ???
  55942.         08h ???
  55943.         09h ???
  55944.         0Ah ???
  55945.         0Bh ???
  55946.         0Ch ???
  55947.         0Dh ???
  55948.         0Eh ???
  55949.         0Fh ???
  55950.         10h ???
  55951.         11h ???
  55952.         12h ???
  55953.         13h ???
  55954.         14h ???
  55955.         15h ???
  55956.         16h ???
  55957.         17h ???
  55958.         18h ???
  55959.         19h ???
  55960.         1Ah ???
  55961.         1Bh ???
  55962.         1Ch ???
  55963.         1Dh ???
  55964.         1Eh ???
  55965.         1Fh ???
  55966.         20h ???
  55967.         21h ???
  55968.         22h ???
  55969.         23h ???
  55970.         24h ???
  55971.         25h ???
  55972.         26h ???
  55973.         27h ???
  55974.         28h ???
  55975.         29h ???
  55976.         2Ah ???
  55977.         2Bh ???
  55978.         2Ch ???
  55979.         2Dh ???
  55980.         2Eh ???
  55981.         2Fh ???
  55982.         30h ???
  55983.         31h ???
  55984.         32h ???
  55985.         33h ???
  55986.         34h ???
  55987.         35h ???
  55988.         36h ???
  55989.         37h ???
  55990. Return: CX = status (most subfunctions)
  55991.     (E)AX and/or (E)BX contain return values, depending on function
  55992. Notes:    called by DPMS.EXE and EMM386.EXE
  55993.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  55994.       because the request is handled on the initial trap to the memory
  55995.       manager caused by INT instructions, this API must be invoked with
  55996.       an actual INT 2F instruction instead of some simulation such as a
  55997.       far call to the address in the interrupt vector table
  55998. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=04h
  55999. --------m-2F2780CL04-------------------------
  56000. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  56001.     AX = 2780h
  56002.     CL = 04h (function number)
  56003.     CH = subfunction
  56004.         00h ???    
  56005.         01h ???
  56006.         02h ???
  56007.         03h ???
  56008.         04h ???
  56009.         05h ???
  56010.         06h ???
  56011.         07h ???
  56012.         08h ???
  56013.         09h ???
  56014.         0Ah ???
  56015.         0Bh ???
  56016.         0Ch ???
  56017.         0Dh ???
  56018.         0Eh ???
  56019.         0Fh ???
  56020.         10h ???
  56021.         11h ???
  56022.         12h ???
  56023.         13h ???
  56024.         14h ???
  56025.         15h ???
  56026.         16h ???
  56027.         17h ???
  56028.         18h ???
  56029.         19h ???
  56030.         1Ah ???
  56031.         1Bh ???
  56032.         1Ch ???
  56033.         1Dh ???
  56034.         1Eh ???
  56035.         1Fh ???
  56036.         20h ???
  56037.         21h ???
  56038.         22h ???
  56039.         23h ???
  56040.         24h ???
  56041.         25h ???
  56042.         26h ???
  56043.         27h ???
  56044.         28h ???
  56045.         29h ???
  56046.         2Ah ???
  56047.         2Bh ???
  56048.         2Ch ???
  56049.         2Dh ???
  56050.         2Eh ???
  56051.         2Fh ???
  56052.         30h ???
  56053.         31h ???
  56054.         32h ???
  56055. Return: CX = status (most subfunctions)
  56056.     (E)AX and/or (E)BX contain return values, depending on function
  56057. Notes:    called by DPMS.EXE and EMM386.EXE
  56058.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  56059.       because the request is handled on the initial trap to the memory
  56060.       manager caused by INT instructions, this API must be invoked with
  56061.       an actual INT 2F instruction instead of some simulation such as a
  56062.       far call to the address in the interrupt vector table
  56063. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  56064. --------m-2F2780CL05-------------------------
  56065. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  56066.     AX = 2780h
  56067.     CL = 05h
  56068.     ???
  56069. Return: ???
  56070. Notes:    called by DPMS.EXE and EMM386.EXE
  56071.     the handler for this function may be set by one of the subfunctions
  56072.       of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
  56073.       CX=0001h (see #1361)
  56074.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  56075.       because the request is handled on the initial trap to the memory
  56076.       manager caused by INT instructions, this API must be invoked with
  56077.       an actual INT 2F instruction instead of some simulation such as a
  56078.       far call to the address in the interrupt vector table
  56079. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  56080. --------m-2F2780CL06-------------------------
  56081. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  56082.     AX = 2780h
  56083.     CL = 06h
  56084.     ???
  56085. Return: ???
  56086. Notes:    called by DPMS.EXE and EMM386.EXE
  56087.     the handler for this function may be set by one of the subfunctions
  56088.       of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
  56089.       CX=0001h (see #1361)
  56090.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  56091.       because the request is handled on the initial trap to the memory
  56092.       manager caused by INT instructions, this API must be invoked with
  56093.       an actual INT 2F instruction instead of some simulation such as a
  56094.       far call to the address in the interrupt vector table
  56095. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  56096. --------m-2F2780-----------------------------
  56097. INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API
  56098.     AX = 2780h
  56099.     CL = function (07h-0Fh)
  56100.     ???
  56101. Return: ???
  56102. Notes:    called by DPMS.EXE and EMM386.EXE
  56103.     the handlers for each of these functions may be set individually by
  56104.       one of the subfunctions of AX=2780h/CL=01h; the default handlers
  56105.       return with all registers unchanged
  56106.     this API is only available if AX=12FFh/BX=0EDCh returns successfully;
  56107.       because the request is handled on the initial trap to the memory
  56108.       manager caused by INT instructions, this API must be invoked with
  56109.       an actual INT 2F instruction instead of some simulation such as a
  56110.       far call to the address in the interrupt vector table
  56111. SeeAlso: AX=12FF/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
  56112. --------T-2F2781-----------------------------
  56113. INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
  56114.     AX = 2781h
  56115. Return: ???
  56116. SeeAlso: AX=2782h
  56117. --------T-2F2782-----------------------------
  56118. INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
  56119.     AX = 2782h
  56120. Return: ???
  56121. SeeAlso: AX=2781h
  56122. --------m-2F2783-----------------------------
  56123. INT 2F U - Novell DOS 7 - EMM386.EXE - GET ???
  56124.     AX = 2783h
  56125. Return: AX = ???
  56126.     BX = ???
  56127. --------T-2F278F-----------------------------
  56128. INT 2F U - Novell DOS 7 TaskMGR - ??? API
  56129.     AX = 278Fh
  56130.     as for INT 2F/AX=2780h
  56131. Return: as for INT 2F/AX=2780h
  56132. Note:    Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
  56133.       without changing any other registers
  56134. SeeAlso: AX=2780h,AX=2782h
  56135. --------F-2F2A-------------------------------
  56136. INT 2F - Gammafax DOS Dispatcher INTERFACE
  56137.     AH = 2Ah
  56138. Note:    details not available at this time
  56139. SeeAlso: AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB00h,AX=CBDDh,INT 66"BitFax"
  56140. --------V-2F2E00-----------------------------
  56141. INT 2F U - Novell DOS 7 - GRAFTABL - INSTALLATION CHECK
  56142.     AX = 2E00h
  56143. Return: AH = FFh if installed
  56144. Note:    this installation check does not follow the usual format of setting
  56145.       AL to FFh
  56146. SeeAlso: AX=2300h,AH=2Eh"GRAFTABL"
  56147. --------V-2F2E-------------------------------
  56148. INT 2F U - Novell DOS 7 - GRAFTABL - GET FONT TABLE
  56149.     AH = 2Eh
  56150.     AL nonzero
  56151. Return: AH = FFh if installed
  56152.         ES:BX -> graphics data (8 bytes per character from 80h to FFh)
  56153. SeeAlso: AX=2E00h,AH=23h"GRAFTABL"
  56154. --------t-2F3900-----------------------------
  56155. INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
  56156.     AX = 3900h
  56157. Return: AL = status
  56158.         00h not installed
  56159.         FFh one or more TSRs using this interface is installed
  56160.         DX may be destroyed
  56161. Note:    this function is provided to that the multiplex number will appear used
  56162.       to other programs
  56163. SeeAlso: AH=39h/BL=00h
  56164. --------t-2F39--BL00-------------------------
  56165. INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
  56166.     AH = 39h
  56167.     BL = 00h
  56168.     AL = TSR ID number (01h-FFh, currently only 01h-1Bh used) (see #1362)
  56169. Return: AL = status
  56170.         00h not installed
  56171.         FFh installed
  56172.         DX = segment address of resident module
  56173. Note:    All of Kingswood Software's TSRs use this interface.  Usually the
  56174.       resident module is installed by allocating a block of upper memory,
  56175.       setting its owner ID to 000Ah (used by DOS), and filling the MCB name
  56176.       field with the TSR's name.
  56177. SeeAlso: AX=3900h,AH=39h/BL=01h
  56178.  
  56179. (Table 1362)
  56180. Values for Kingswood TSR ID number:
  56181.  01h    TSR Windows
  56182.  02h    NOBUSY
  56183.  03h    CD STACK
  56184.  04h    DISK WATCH
  56185.  05h    PUSHBP
  56186.  06h    ALIAS
  56187.  07h    KEYMACRO
  56188.  08h    SLOWDOWN
  56189.  09h    ANSIGRAB
  56190.  0Ah    TEE
  56191.  0Bh    FASTMOUS
  56192.  0Ch    EXTWILD
  56193.  0Dh    BREAKOUT
  56194.  0Eh    STOPDISK
  56195.  0Fh    MEMINIT
  56196.  10h    JANUSEXT
  56197.  11h    CAPS
  56198.  12h    ANSI
  56199.  13h    TRAPPER
  56200.  14h    EATMEM
  56201.  15h    WPJOKE
  56202.  16h    SHOWDOS
  56203.  17h    LOGINTS
  56204.  18h    BLANKVGA
  56205.  19h    SWAPEXEC
  56206.  1Ah    SHELL
  56207.  1Bh    TSRGAMES
  56208.  
  56209. Format of Kingswood TSR modules:
  56210. Offset    Size    Description    (Table 1363)
  56211.  00h  4 BYTEs    signature "FTSR"
  56212.  04h    WORD    segment address of this module (used to check validity)
  56213.  06h    WORD    number of words to skip (usually 0000h if no PSP present)
  56214.  08h  N WORDs    module-defined data that must be at a fixed segment offset
  56215.         (usually only a PSP if file access is required)
  56216.      5N BYTEs    interrupt list (see #1364)
  56217.     BYTE    FFh terminator
  56218.  
  56219. Format of Kingswood TSR interrupt list entry:
  56220. Offset    Size    Description    (Table 1364)
  56221.  00h    BYTE    interrupt number (00h-FEh)
  56222.  01h    WORD    offset within segment of DWORD pointer to previous interrupt
  56223.  03h    WORD    offset within segment of begin of interrupt handler code
  56224. --------t-2F39--BL01-------------------------
  56225. INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
  56226.     AH = 39h
  56227.     BL = 01h
  56228.     AL = TSR ID number (01h-FFh) (see #1362)
  56229. Return: AL = status
  56230.         00h not ready to be removed
  56231.         FFh resident module may be removed by deassigning the interrupts
  56232.           hooked by the TSR and deallocating the TSR's memory block
  56233.     AH,BX,CX,DX,ES may be destroyed
  56234. SeeAlso: AX=3900h,AH=39h/BL=00h
  56235. --------t-2F39-------------------------------
  56236. INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
  56237.     AH = 39h
  56238.     BL = function number (02h-FFh)
  56239.     AL = TSR ID number (01h-FFh) (see #1362)
  56240.     CX,DX,SI,DI,DS,ES may contain parameters
  56241.     BH reserved for use by the function dispatcher
  56242. Return: as appropriate for the called function
  56243. SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
  56244. --------r-2F3901BL02-------------------------
  56245. INT 2F - Kingswood TSR Windows - OPEN WINDOW
  56246.     AX = 3901h
  56247.     BL = 02h
  56248. Return: AX = error code (0000h if successful)
  56249.     SI,DI,DS,ES preserved
  56250. Notes:    opens the next TSR window on top of any others.     Only three
  56251.       TSR windows can be opened at any one time.  The three windows
  56252.       are all 40x11 characters, partly overlapping.
  56253. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
  56254. --------r-2F3901BL03-------------------------
  56255. INT 2F - Kingswood TSR Windows - HIDE WINDOWS
  56256.     AX = 3901h
  56257.     BL = 03h
  56258. Return: AX = error code (0000h if successful)
  56259.     SI,DI,DS,ES preserved
  56260. Notes:    Hide any visible TSR windows from view.
  56261. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
  56262. --------r-2F3901BL04-------------------------
  56263. INT 2F - Kingswood TSR Windows - SHOW WINDOWS
  56264.     AX = 3901h
  56265.     BL = 04h
  56266. Return: AX = error code (0000h if successful)
  56267.     SI,DI,DS,ES preserved
  56268. Notes:    Re-display all TSR windows after a HIDE WINDOWS call.
  56269. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
  56270. --------r-2F3901BL05-------------------------
  56271. INT 2F - Kingswood TSR Windows - CLOSE WINDOW
  56272.     AX = 3901h
  56273.     BL = 05h
  56274. Return: AX = error code (0000h if successful)
  56275.     SI,DI,DS,ES preserved
  56276. Notes:    Close the last opened TSR window.
  56277. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  56278. --------r-2F3901BL06-------------------------
  56279. INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
  56280.     AX = 3901h
  56281.     BL = 06h
  56282.     DS:SI -> title string
  56283. Return: AX = error code (0000h if successful)
  56284.     SI,DI,DS,ES preserved
  56285. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  56286. --------r-2F3901BL07-------------------------
  56287. INT 2F - Kingswood TSR Windows - POSITION CURSOR
  56288.     AX = 3901h
  56289.     BL = 07h
  56290.     CH = Y coordinate (0-10)
  56291.     CL = X coordinate (0-39)
  56292. Return: AX = error code (0000h if successful)
  56293.     SI,DI,DS,ES preserved
  56294. Note:    the hardware cursor is always disabled when a TSR window is opened;
  56295.       this call only sets a text position
  56296. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
  56297. --------r-2F3901BL08-------------------------
  56298. INT 2F - Kingswood TSR Windows - DISPLAY STRING
  56299.     AX = 3901h
  56300.     BL = 08h
  56301.     DS:SI -> string
  56302. Return: AX = error code (0000h if successful)
  56303.     SI,DI,DS,ES preserved
  56304. Notes:    The text is not clipped.
  56305.     This routine understands Tab, NewLine and Carriage Return
  56306. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
  56307. --------r-2F3901BL09-------------------------
  56308. INT 2F - Kingswood TSR Windows - SCROLL WINDOW
  56309.     AX = 3901h
  56310.     BL = 09h
  56311.     CL = scroll direction: 01h up, FFh down, 00h clear window
  56312. Return: AX = error code (0000h if successful)
  56313.     SI,DI,DS,ES preserved
  56314. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
  56315. --------r-2F3901BL0A-------------------------
  56316. INT 2F - Kingswood TSR Windows - SOUND BEEPER
  56317.     AX = 3901h
  56318.     BL = 0Ah
  56319.     DX = sound divisor, or 0 for silence.
  56320.          (divide 1843200 by required frequency to get value for DX)
  56321.     CL = sound length in 18.2 Hz clock ticks
  56322. Return: AX = error code (0000h if successful)
  56323.     SI,DI,DS,ES preserved
  56324. SeeAlso: AH=39h/BL=00h
  56325. --------r-2F3901BL0B-------------------------
  56326. INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
  56327.     AX = 3901h
  56328.     BL = 0Bh
  56329.     CL = number of users increment: +1 if adding a new user
  56330.                     -1 if removing a user
  56331. Return: AX = error code (0000h if successful)
  56332.     SI,DI,DS,ES preserved
  56333. Note:    the TSR windows resident module may only be removed when the internal
  56334.       user count is zero
  56335. SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
  56336. --------V-2F3912BL03-------------------------
  56337. INT 2F - Kingswood ANSI display driver - SET COMPATIBILITY MODE
  56338.     AX = 3912h
  56339.     BL = 03h
  56340.     CL = new mode (00h fast, FFh BIOS)
  56341. Return: AL = old compatibility mode
  56342.     SI,DI,DS,ES preserved
  56343. SeeAlso: AX=3900h,AX=3912h/BL=04h
  56344. --------V-2F3912BL04-------------------------
  56345. INT 2F - Kingswood ANSI display driver - SET FLAGS
  56346.     AX = 3912h
  56347.     BL = 04h
  56348.     CL = new flags (see #1365)
  56349. Return: AL = old flags
  56350.     SI,DI,DS,ES preserved
  56351. SeeAlso: AX=3900h,AX=3912h/BL=03h
  56352.  
  56353. Bitfields for Kingswood ANSI flags:
  56354. Bit(s)    Description    (Table 1365)
  56355.  0    do not wrap at end of line
  56356.  1    wait for beeps to end before displaying next character
  56357.  2    do not use graphics cursor
  56358. --------W-2F4000-----------------------------
  56359. INT 2F - Windows 3.x (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABLTIES
  56360.     AX = 4000h
  56361. Return: AL = video virtualization (see #1366)
  56362. Note:    this function is used by display drivers to find out what capabilities
  56363.       exist for the VDD driver and also trigger the VDD driver to call
  56364.       functions 4005h and 4006h.  This function also gives the Video Driver
  56365.       hardware access to the video registers.
  56366.  
  56367. (Table 1366)
  56368. Values for Windows video virtualization:
  56369.  01h    does not virtualize video access
  56370.  02h    virtualizes the video when in text mode
  56371.  03h    virtualizes the video when in text mode or single plane graphics modes
  56372.  04h    virtualizes the video when in text mode, single plane graphics modes,
  56373.       and VGA multiplane modes
  56374.  FFh    virtualizes the video fully
  56375. --------O-2F4001-----------------------------
  56376. INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
  56377.     AX = 4001h
  56378. Note:    called by OS/2 when the DOS box is about to be placed in the background
  56379.       and the video driver should save any necessary state
  56380. SeeAlso: AX=4002h,AX=4005h
  56381. --------O-2F4002-----------------------------
  56382. INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
  56383.     AX = 4002h
  56384. Note:    called by OS/2 when the DOS box is about to be placed in the foreground
  56385.       and the video driver should restore the previously-saved state
  56386. SeeAlso: AX=4001h,AX=4006h
  56387. --------W-2F4003-----------------------------
  56388. INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
  56389.     AX = 4003h
  56390. Note:    This critical section must be exited within 1 second.
  56391. SeeAlso: AX=4004h
  56392. --------W-2F4004-----------------------------
  56393. INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
  56394.     AX = 4004h
  56395. SeeAlso: AX=4003h
  56396. --------W-2F4005-----------------------------
  56397. INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
  56398.     AX = 4005h
  56399. Note:    called by Windows when the DOS box is about to be placed in the
  56400.       background and the video driver should save any necessary state
  56401.       information (this may be called only in Standard mode)
  56402. SeeAlso: AX=4001h,AX=4006h
  56403. --------W-2F4006-----------------------------
  56404. INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
  56405.     AX = 4006h
  56406. Note:    called by Windows when the DOS box is about to be placed in the
  56407.       foreground and the video driver should restore any necessary state
  56408.       information (this may be called only in Standard mode)
  56409. SeeAlso: AX=4002h,AX=4005h
  56410. --------W-2F4007-----------------------------
  56411. INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
  56412.     AX = 4007h
  56413. Note:    used by Windows Standard mode
  56414. --------O-2F4010-----------------------------
  56415. INT 2F - OS/2 v2.0+ - INSTALLATION CHECK / GET VERSION
  56416.     AX = 4010h
  56417. Return: AX = 4010h if OS/2 not installed
  56418.     AX = OS/2 version if installed
  56419. SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
  56420. --------E-2F4040-----------------------------
  56421. INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
  56422.     AX = 4040h
  56423. Return: BX:CX -> ???
  56424. --------N-2F4100-----------------------------
  56425. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - INSTALLATION CHECK
  56426.     AX = 4100h
  56427. Return: CF clear if successful
  56428.         AL = FFh
  56429.     CF set on error
  56430.         AX = ???
  56431. Notes:    MINIPOP and NETPOPUP provide a network message popup service
  56432.     LAN Manager enhanced mode adds features beyond the standard redirector
  56433.       file/printer services
  56434. SeeAlso: AX=118Ah,AX=4103h,AX=4104h,AH=42h,AH=4Bh
  56435. --------N-2F4103-----------------------------
  56436. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
  56437.     AX = 4103h
  56438. Return: ???
  56439. SeeAlso: AX=4100h,AX=4104h
  56440. --------N-2F4104-----------------------------
  56441. INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
  56442.     AX = 4104h
  56443. Return: ???
  56444. SeeAlso: AX=4100h,AX=4103h
  56445. --------N-2F42-------------------------------
  56446. INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
  56447.     AH = 42h
  56448.     ???
  56449. Return: ???
  56450. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  56451.       file/printer services
  56452. SeeAlso: AX=118Ah,AX=4100h,AH=4Bh
  56453. --------m-2F4300-----------------------------
  56454. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
  56455.     AX = 4300h
  56456. Return: AL = 80h XMS driver installed
  56457.     AL <> 80h no driver
  56458. Notes:    XMS gives access to extended memory and noncontiguous/nonEMS memory
  56459.       above 640K
  56460.     this installation check DOES NOT follow the format used by other
  56461.       software
  56462. SeeAlso: AX=4310h
  56463. Index:    installation check;XMS version 2+
  56464. --------m-2F4308-----------------------------
  56465. INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
  56466.     AX = 4308h
  56467. Return: AL = 43h if supported
  56468.         BL = A20 handler number (value of /MACHINE:nn switch)
  56469.         BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
  56470. Note:    if the A20 handler number returned in BL is 00h, an external handler
  56471.       is being used (see AX=4330h)
  56472. SeeAlso: AX=4309h,AX=4330h
  56473. --------m-2F4309-----------------------------
  56474. INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
  56475.     AX = 4309h
  56476. Return: AL = 43h if function supported
  56477.         ES:BX -> XMS handle table (see #1367)
  56478. Note:    HIMEM.SYS v3.09 is part of MS-DOS 6.0.
  56479. SeeAlso: AX=4308h
  56480.  
  56481. Format of XMS handle table:
  56482. Offset    Size    Description    (Table 1367)
  56483.  00h    BYTE    ??? (01h in HIMEM.SYS v3.09)
  56484.  01h    BYTE    size of one handle descriptor
  56485.  02h    WORD    number of handles (default = 20h)
  56486.  04h    DWORD    pointer to XMS handle array (see #1368)
  56487. SeeAlso: #1401
  56488.  
  56489. Format of XMS handle descriptor [array]:
  56490. Offset    Size    Description    (Table 1368)
  56491.  00h    BYTE    flag
  56492.         01h=free, 02h=used, 04h=in pool but not associated with any EMB
  56493.  01h    BYTE    lock count (00h=unlocked)
  56494.  02h    DWORD    address of XMS block in KB (shift left by 10 for abs. address)
  56495.  06h    DWORD    size of XMS block in KB
  56496. --------m-2F4310-----------------------------
  56497. INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
  56498.     AX = 4310h
  56499. Return: ES:BX -> driver entry point (see #1369,#1370,#1380,#1398)
  56500. Notes:    HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
  56501.     HIMEM.SYS requires at least 256 bytes free stack space when calling
  56502.       the driver entry point
  56503. SeeAlso: AX=4300h,AX=4310h"Cloaking"
  56504.  
  56505. Format of XMS driver entry point:
  56506. Offset    Size    Description    (Table 1369)
  56507.  00h  5 BYTEs    jump to actual handler
  56508.         either short jump (EBh XXh) followed by three NOPs or
  56509.           far jump (EAh XXXX:XXXX) to a program which has hooked itself
  56510.           into the XMS driver chain
  56511. Note:    to hook into the XMS driver chain, a program should follow the chain of
  56512.       far jumps until it reaches the short jump of the driver at the end
  56513.       of the chain; this short jump is to be replaced with a far jump to
  56514.       the new handler's entry point, which should contain a short jump
  56515.       followed by three NOPs.  The new handler must return to the address
  56516.       pointed at by the short jump which was overwritten.  Using this
  56517.       method, the new handler becomes the first to see every XMS request.
  56518.  
  56519. (Table 1370)
  56520. Call the XMS driver "Get XMS version number" function with:
  56521.     AH = 00h
  56522. Return: AX = XMS version (in BCD, AH=major, AL=minor)
  56523.     BX = internal revision number (in BCD for HIMEM.SYS)
  56524.     DX = High Memory Area (HMA) state
  56525.         0001h HMA (1M to 1M + 64K) exists
  56526.         0000h HMA does not exist
  56527.  
  56528. (Table 1371)
  56529. Call the XMS driver "Request High Memory Area" function with:
  56530.     AH = 01h
  56531.     DX = memory in bytes (for TSR or device drivers)
  56532.         FFFFh if application program
  56533. Return: AX = status
  56534.         0001h success
  56535.         0000h failure
  56536.         BL = error code (80h,81h,90h,91h,92h) (see #1399)
  56537. Note:    HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
  56538.       DX=KB free extended memory returned by last call of function 08h
  56539.  
  56540. (Table 1372)
  56541. Call the XMS driver "Release High Memory Area" function with:
  56542.     AH = 02h
  56543. Return: AX = status
  56544.         0001h success
  56545.         0000h failure
  56546.         BL = error code (80h,81h,90h,93h) (see #1399)
  56547.  
  56548. (Table 1373)
  56549. Call the XMS driver "Global enable A20, for using the HMA" function with:
  56550.     AH = 03h
  56551. Return: AX = status
  56552.         0001h success
  56553.         0000h failure
  56554.         BL = error code (80h,81h,82h) (see #1399)
  56555.  
  56556. (Table 1374)
  56557. Call the XMS driver "Global disable A20" function with:
  56558.     AH = 04h
  56559. Return: AX = status
  56560.         0001h success
  56561.         0000h failure
  56562.         BL = error code (80h,81h,82h,94h) (see #1399)
  56563.  
  56564. (Table 1375)
  56565. Call the XMS driver "Local enable A20" function with:
  56566.     AH = 05h
  56567. Return: AX = status
  56568.         0001h success
  56569.         0000h failure
  56570.         BL = error code (80h,81h,82h) (see #1399)
  56571. Note:    this function is used for direct access to extended memory
  56572.  
  56573. (Table 1376)
  56574. Call the XMS driver "Local disable A20" function with:
  56575.     AH = 06h
  56576. Return: AX = status
  56577.         0001h success
  56578.         0000h failure
  56579.         BL = error code (80h,81h,82h,94h) (see #1399)
  56580.  
  56581. (Table 1377)
  56582. Call the XMS driver "Query A20 state" function with:
  56583.     AH = 07h
  56584. Return: AX = status
  56585.         0001h enabled
  56586.         0000h disabled
  56587.         BL = error code (00h,80h,81h) (see #1399)
  56588.  
  56589. (Table 1378)
  56590. Call the XMS driver "Query free extended memory" function with:
  56591.     AH = 08h
  56592.     BL = 00h (some implementations leave BL unchanged on success)
  56593. Return: AX = size of largest extended memory block in KB
  56594.     DX = total extended memory in KB
  56595.     BL = error code (00h,80h,81h,A0h) (see #1399)
  56596. Note:    this function does not include the HMA in the returned memory sizes
  56597.  
  56598. (Table 1379)
  56599. Call the XMS driver "Allocate extended memory block" function with:
  56600.     AH = 09h
  56601.     DX = Kbytes needed
  56602. Return: AX = status
  56603.         0001h success
  56604.         DX = handle for memory block
  56605.         0000h failure
  56606.         BL = error code (80h,81h,A0h) (see #1399)
  56607. SeeAlso: #1396
  56608.  
  56609. (Table 1380)
  56610. Call the XMS driver "Free extended memory block" function with:
  56611.     AH = 0Ah
  56612.     DX = handle of block to free
  56613. Return: AX = status
  56614.         0001h success
  56615.         0000h failure
  56616.         BL = error code (80h,81h,A2h,ABh) (see #1399)
  56617. SeeAlso: #1379,#1396
  56618.  
  56619. (Table 1381)
  56620. Call the XMS driver "Move extended memory block" function with:
  56621.     AH = 0Bh
  56622.     DS:SI -> EMM structure (see #1400)
  56623. Return: AX = status
  56624.         0001h success
  56625.         0000h failure
  56626.         BL = error code (80h-82h,A3h-A9h) (see #1399)
  56627. Note:    if either handle in the EMM structure is 0000h, the corresponding
  56628.       offset is considered to be an absolute segment:offset address in
  56629.       directly addressable memory
  56630.  
  56631. (Table 1382)
  56632. Call the XMS driver "Lock extended memory block" function with:
  56633.     AH = 0Ch
  56634.     DX = handle of block to lock
  56635. Return: AX = status
  56636.         0001h success
  56637.         DX:BX = 32-bit linear address of locked block
  56638.         0000h failure
  56639.         BL = error code (80h,81h,A2h,ACh,ADh) (see #1399)
  56640. Note:    MS Windows 3.x rejects this function for handles allocated after
  56641.       Windows started
  56642.  
  56643. (Table 1383)
  56644. Call the XMS driver "Unlock extended memory block" function with:
  56645.     AH = 0Dh
  56646.     DX = handle of block to unlock
  56647. Return: AX = status
  56648.         0001h success
  56649.         0000h failure
  56650.         BL = error code (80h,81h,A2h,AAh) (see #1399)
  56651.  
  56652. (Table 1384)
  56653. Call the XMS driver "Get handle information" function with:
  56654.     AH = 0Eh
  56655.     DX = handle for which to get info
  56656. Return: AX = status
  56657.         0001h success
  56658.         BH = block's lock count
  56659.         BL = number of free handles left
  56660.         DX = block size in KB
  56661.         0000h failure
  56662.         BL = error code (80h,81h,A2h) (see #1399)
  56663. BUG:    MS Windows 3.10 acts as though unallocated handles are in use
  56664. Note:    MS Windows 3.00 has problems with this call
  56665.  
  56666. (Table 1385)
  56667. Call the XMS driver "Reallocate extended memory block" function with:
  56668.     AH = 0Fh
  56669.     DX = handle of block
  56670.     BX = new size of block in KB
  56671. Return: AX = status
  56672.         0001h success
  56673.         0000h failure
  56674.         BL = error code (80h,81h,A0h-A2h,ABh) (see #1399)
  56675.  
  56676. (Table 1386)
  56677. Call the XMS driver "Request upper memory block" function with:
  56678.     AH = 10h
  56679.     DX = size of block in paragraphs
  56680. Return: AX = status
  56681.         0001h success
  56682.         BX = segment address of UMB
  56683.         DX = actual size of block
  56684.         0000h failure
  56685.         BL = error code (80h,B0h,B1h) (see #1399)
  56686.         DX = largest available block
  56687. Notes:    Upper Memory consists of non-EMS memory between 640K and 1024K
  56688.     the XMS driver need not implement functions 10h through 12h to be
  56689.       considered compliant with the standard
  56690.  
  56691. (Table 1387)
  56692. Call the XMS driver "Release upper memory block" function with:
  56693.     AH = 11h
  56694.     DX = segment address of UMB to release
  56695. Return: AX = status
  56696.         0001h success
  56697.         0000h failure
  56698.         BL = error code (80h,B2h) (see #1399)
  56699. Note:    the XMS driver need not implement functions 10h through 12h to be
  56700.       considered compliant with the standard
  56701.  
  56702. (Table 1388)
  56703. Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
  56704.     AH = 12h
  56705.     DX = segment address of UMB to resize
  56706.     BX = new size of block in paragraphs
  56707. Return: AX = status
  56708.         0001h success
  56709.         0000h failure
  56710.         BL = error code (80h,B0h,B2h) (see #1399)
  56711.         DX = maximum available size (RM386)
  56712. Note:    the XMS driver need not implement functions 10h through 12h to be
  56713.       considered compliant with the standard
  56714.  
  56715. (Table 1389)
  56716. Call the QEMM v5.11 "???" function with:
  56717.     AH = 34h  (QEMM 5.11 only, undocumented)
  56718.     ???
  56719. Return: ???
  56720.  
  56721. (Table 1390)
  56722. Call the QEMM v5.11 "???" function with:
  56723.     AH = 44h  (QEMM 5.11 only, undocumented)
  56724.     ???
  56725. Return: ???
  56726.  
  56727. (Table 1391)
  56728. Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
  56729.     AH = 80h
  56730.     DX = segment address of UMB to resize
  56731.     BX = new size of block in paragraphs
  56732. Return: AX = status
  56733.         0001h success
  56734.         0000h failure
  56735.         BL = error code (80h,B0h,B2h) (see #1399)
  56736.         DX = maximum available size
  56737. Note:    this function is identical to function 12h
  56738.  
  56739. (Table 1392)
  56740. Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
  56741.     AH = 81h
  56742. Return: AX = 0001h (success)
  56743.  
  56744. (Table 1393)
  56745. Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
  56746.     AH = 83h
  56747.     BX = segment of high-memory block
  56748.     DX = first page of start of block
  56749.     CX = number of consecutive pages in block
  56750.     DI = start of UMB in block
  56751. Return: AX = 0001h (success)
  56752.     DI = segment of first high-DOS block
  56753. Note:    the new UMB is not linked into the high-memory chain
  56754.  
  56755. (Table 1394)
  56756. Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
  56757.     AH = 84h
  56758.     CX = size of buffer for handle info
  56759.     ES:DI -> buffer for handle info (see #1401)
  56760. Return: AX = 0001h (success)
  56761.     DX = current number of allocated XMS handles
  56762.  
  56763. (Table 1395)
  56764. Call the XMS v3.0 driver "Query free extended memory" function with:
  56765.     AH = 88h
  56766. Return: EAX = largest block of extended memory, in KB
  56767.     BL = status (00h,80h,81h,A0h) (see #1399)
  56768.     ECX = physical address of highest byte of memory
  56769.         (valid even on error codes 81h and A0h)
  56770.     EDX = total Kbytes of extended memory (0 if status A0h)
  56771. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  56772.       are called
  56773. SeeAlso: #1378,#1396
  56774.  
  56775. (Table 1396)
  56776. Call the XMS v3.0 driver "Allocate any extended memory" function with:
  56777.     AH = 89h
  56778.     EDX = Kbytes needed
  56779. Return: AX = status
  56780.         0001h success
  56781.         DX = handle for allocated block (free with AH=0Ah) (see #1380)
  56782.         0000h failure
  56783.         BL = status (80h,81h,A0h,A1h,A2h) (see #1399)
  56784. SeeAlso: #1379,#1395
  56785.  
  56786. (Table 1397)
  56787. Call the XMS v3.0 driver "Get extended EMB handle information" function with:
  56788.     AH = 8Eh
  56789.     DX = handle
  56790. Return: AX = status
  56791.         0001h success
  56792.         BH = block's lock count
  56793.         CX = number of free handles left
  56794.         EDX = block size in KB
  56795.         0000h failure
  56796.         BL = status (80h,81h,A2h) (see #1399)
  56797. BUG:    MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
  56798.  
  56799. (Table 1398)
  56800. Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
  56801.     AH = 8Fh
  56802.     DX = unlocked handle
  56803.     EBX = new size in KB
  56804. Return: AX = status
  56805.         0001h success
  56806.         0000h failure
  56807.         BL = status (80h,81h,A0h-A2h,ABh) (see #1399)
  56808. BUG:    HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
  56809.       are called
  56810.  
  56811. (Table 1399)
  56812. Values for XMS error code returned in BL:
  56813.  00h    successful
  56814.  80h    function not implemented
  56815.  81h    Vdisk was detected
  56816.  82h    an A20 error occurred
  56817.  8Eh    a general driver error
  56818.  8Fh    unrecoverable driver error
  56819.  90h    HMA does not exist or is not managed by XMS provider
  56820.  91h    HMA is already in use
  56821.  92h    DX is less than the /HMAMIN= parameter
  56822.  93h    HMA is not allocated
  56823.  94h    A20 line still enabled
  56824.  A0h    all extended memory is allocated
  56825.  A1h    all available extended memory handles are allocated
  56826.  A2h    invalid handle
  56827.  A3h    source handle is invalid
  56828.  A4h    source offset is invalid
  56829.  A5h    destination handle is invalid
  56830.  A6h    destination offset is invalid
  56831.  A7h    length is invalid
  56832.  A8h    move has an invalid overlap
  56833.  A9h    parity error occurred
  56834.  AAh    block is not locked
  56835.  ABh    block is locked
  56836.  ACh    block lock count overflowed
  56837.  ADh    lock failed
  56838.  B0h    only a smaller UMB is available
  56839.  B1h    no UMB's are available
  56840.  B2h    UMB segment number is invalid
  56841.  
  56842. Format of EMM structure:
  56843. Offset    Size    Description    (Table 1400)
  56844.  00h    DWORD    number of bytes to move (must be even)
  56845.  04h    WORD    source handle
  56846.  06h    DWORD    offset into source block
  56847.  0Ah    WORD    destination handle
  56848.  0Ch    DWORD    offset into destination block
  56849. Notes:    if source and destination overlap, only forward moves (source base
  56850.       less than destination base) are guaranteed to work properly
  56851.     if either handle is zero, the corresponding offset is interpreted
  56852.       as a real-mode address referring to memory directly addressable
  56853.       by the processor
  56854.  
  56855. Format of XMS handle info [array]:
  56856. Offset    Size    Description    (Table 1401)
  56857.  00h    BYTE    handle
  56858.  01h    BYTE    lock count
  56859.  02h    DWORD    handle size
  56860.  06h    DWORD    handle physical address (only valid if lock count nonzero)
  56861. SeeAlso: #1367
  56862. --------m-2F4310-----------------------------
  56863. INT 2F - Cloaking - REAL-MODE API
  56864.     AX = 4310h
  56865. Return: ES:BX -> driver entry point (see #1369,#1402,#1403,#1404,#1405)
  56866. SeeAlso: AX=4310h"XMS"
  56867.  
  56868. (Table 1402)
  56869. Call the Cloaking v1.01 "Client Registration" function with:
  56870.     AH = 7Eh
  56871.     BX = subfunction
  56872.         0000h get client registration count
  56873.         0001h get client registration structures
  56874.         ES:DI -> buffer for registration structures
  56875. Return: AX = status
  56876.         0000h failed
  56877.         0001h successful
  56878.         ---subfunction 00h---
  56879.         BX = size of client structure in bytes
  56880.         CX = number of clients installed
  56881.         ---subfunction 01h---
  56882.         ES:DI buffer filled
  56883. SeeAlso: #1403,#1405,INT 2C/AX=0033h
  56884.  
  56885. (Table 1403)
  56886. Call the Cloaking v1.01 "Verify Cloaking Host" function with:
  56887.     AH = 7Fh
  56888. Return: AX = status
  56889.         0000h failed
  56890.         0001h (successful) if installed
  56891.         BX = version (0101h for v1.01)
  56892.         CX = flags
  56893.             bit 0: host is VCPI-based
  56894.         DS:DX -> ASCIZ Cloaking host signature
  56895.             "CLOAKING.EXE"0, followed by a far-call entry point to
  56896.               uninstall host (see #1404) in Helix's CLOAKING.EXE
  56897. SeeAlso: #1402,#1405
  56898. Index:    installation check;Cloaking host|installation check;CLOAKING.EXE
  56899.  
  56900. (Table 1404)
  56901. Call the CLOAKING.EXE "Uninstall Host" function with:
  56902. Return:    AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
  56903.  
  56904. (Table 1405)
  56905. Call the Cloaking "Start Protected-Mode Client" function with:
  56906.     AH = 82h
  56907.     DX = XMS handle of locked block containing protected-mode code
  56908.     CL = code size (00h 16-bit, else 32-bit)
  56909.     ESI, EDI = parameters to pass to protected-mode code
  56910. Return: AX = status
  56911.         nonzero success
  56912.         0000h failed
  56913.         BL = error code (A2h,B0h) (see #1399)
  56914. Notes:    this function calls a user initialization function at offset 0 in
  56915.       the XMS memory block (see #1406)
  56916.     supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
  56917. SeeAlso: #1402,#1403
  56918.  
  56919. (Table 1406)
  56920. Values user initialization function is called with:
  56921.     EBX = physical address of block's start
  56922.     ESI = user data from function 82h call
  56923.     EDI = user data from function 82h call
  56924.     CS = code selector for XMS block at EBX (16-bit or 32-bit)    
  56925.     DS = data selector for XMS block, starting at EBX
  56926.     ES = selector for V86 memory access to full real-mode 1088K
  56927.     GS = selector for full 4G flat address space
  56928.     SS:ESP -> stack provided by host
  56929. Return: via 32-bit FAR return
  56930. Note:    the initialization function may call any protected-mode Cloaking
  56931.       service; it should store the values of DS, ES, and GS for future
  56932.       reference
  56933. --------m-2F4320-----------------------------
  56934. INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
  56935.     AX = 4320h
  56936.     ???
  56937. Return: ???
  56938. --------m-2F4330-----------------------------
  56939. INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
  56940.     AX = 4330h
  56941. Return: AL = 80h if external A20 handler provided
  56942.         ES:BX -> external A20 handler (see #1407)
  56943.         CL = A20 detection support
  56944.         00h handler is unable to report A20 state
  56945.         01h handler supports function 0002h to report A20 state
  56946. Note:    HIMEM.SYS calls this function to allow an external program to provide
  56947.       an A20 handler (i.e. to support a machine not supported by HIMEM
  56948.       itself)
  56949. SeeAlso: AX=4308h,AX=4310h
  56950.  
  56951. (Table 1407)
  56952. Call parameters for external A20 handler are:
  56953.     AX = function
  56954.         0000h disable A20
  56955.         0001h enable A20
  56956.         0002h get A20 state
  56957. Return: AX = status (functions 0000h and 0001h)
  56958.         0000h failure
  56959.         0001h successful
  56960.     AX = A20 state (function 0002h)
  56961.         0000h disabled
  56962.         0001h enabled
  56963. Note:    HIMEM.SYS only calls function 0002h if the returned CL indicated that
  56964.       the handler supports the call
  56965. --------E-2F43E0BX0000-----------------------
  56966. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
  56967.     AX = 43E0h
  56968.     BX = 0000h
  56969.     CX = 4450h ('DP')
  56970.     DX = 4D53h ('MS')
  56971. Return: AX = 0000h if installed
  56972.         CF clear
  56973.         ES:DI -> server structure (see #1408)
  56974.         ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #1410)
  56975. Note:    the DPMS 1.0 server included with the original release of Novell DOS
  56976.       7.0 supports both the beta and 1.0 specification, setting ES:BX even
  56977.       if CX and DX are not as specified on entry (since the beta
  56978.       specification did not use those registers).  However, the DPMS 1.1
  56979.       server included with the March 1994 update does not support the beta
  56980.       specification
  56981. SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
  56982. Index:    signature strings;DPMS
  56983.  
  56984. Format of DPMS 1.0 server structure:
  56985. Offset    Size    Description    (Table 1408)
  56986.  00h  4 BYTEs    signature string "DPMS"
  56987.  04h  2 BYTEs    DPMS version (major,minor)
  56988.  06h  8 BYTEs    blank-padded server OEM name
  56989.  0Eh  2 BYTEs    OEM server version (major,minor)
  56990.  10h    WORD    DPMS flags (see #1409)
  56991.  12h    BYTE    CPU type
  56992.         (02h = 286, 03h = 386 or higher, higher values allowed)
  56993.  
  56994. Bitfields for DPMS flags:
  56995. Bit(s)    Description    (Table 1409)
  56996.  0    fast processor reset available (286 only)
  56997.  1    DPMS server is enabled
  56998.  2    memory is remapped
  56999.  3-15    reserved (undefined)
  57000.  
  57001. Format of beta DPMS registration structure:
  57002. Offset    Size    Description    (Table 1410)
  57003.  00h    DWORD    real-mode API entry point (see #1412)
  57004.  04h    DWORD    16-bit protected-mode API entry point (see #1412)
  57005.  08h  8 BYTEs    reserved (0)
  57006.  10h  8 BYTEs    blank-padded server OEM name
  57007.  18h    WORD    flags
  57008.         bit 0: fast processor reset available (286 only)
  57009.         bits 1-15 reserved (undefined)
  57010.  1Ah  2 BYTEs    DPMS version (major,minor)
  57011.  1Ch    BYTE    CPU type (02h = 286, 03h = 386 or higher)
  57012. ----------2F43E1-----------------------------
  57013. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
  57014.     AX = 43E1h
  57015.     CX = required protected-mode stack size in bytes
  57016.     ES:DI -> DPMS client interface structure (see #1411)
  57017. Return: AX = 0000h if supported
  57018.        CF clear
  57019.        ES:DI buffer filled with API entry point code from offset 0Ah
  57020. Note:    the client is allowed to copy the returned API code to any location in
  57021.       memory, and need not keep the three code fields together
  57022. SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
  57023.  
  57024. Format of DPMS client interface structure:
  57025. Offset    Size    Description    (Table 1411)
  57026.  00h    WORD    0000h (structure version / flags)
  57027.  02h  8 BYTEs    blank-padded client name
  57028.  0Ah  7 BYTEs    real/virtual-86 mode API code (see #1412)
  57029.  11h    BYTE    space for return instruction
  57030.         set to C3h for near return, CBh for far return
  57031.  12h  7 BYTEs    16-bit protected-mode API code (see #1412)
  57032.  19h    BYTE    space for return instruction
  57033.         set to C3h for near return, CBh for far return
  57034.  1Ah  9 BYTEs    32-bit protected-mode API code (see #1412)
  57035.  23h    BYTE    space for return instruction
  57036.         set to C3h for near return, CBh for far return
  57037. Note:    the DPMS server fills the return opcode bytes with zeros and DPMS
  57038.       requests will thus crash the system unless the application
  57039.       explicitly sets them (some early versions set them to C3h by
  57040.       default, but one should not rely on that)
  57041.  
  57042. (Table 1412)
  57043. Call DPMS entry point with:
  57044.     AX = 0000h unregister client from server
  57045.  ---control transfer functions---
  57046.     AX = 0100h call protected-mode procedure
  57047.         CX = number of words of stack to copy
  57048.         ES:(E)DI -> callup/down register structure (see #1414)
  57049.         Return: CF clear if successful
  57050.             CF set on error
  57051.                 AX = error code (see #1413)
  57052.     AX = 0101h call real-mode procedure (RETF return)
  57053.         CX = number of words of stack to copy
  57054.         ES:(E)DI -> callup/down register structure (see #1414)
  57055.         Return: CF clear if successful
  57056.             CF set on error
  57057.                 AX = error code (see #1413)
  57058.     AX = 0102h call real-mode procedure (IRET return)
  57059.         CX = number of words of stack to copy
  57060.         ES:(E)DI -> callup/down register structure (see #1414)
  57061.         Return: CF clear if successful
  57062.             CF set on error
  57063.                 AX = error code (see #1413)
  57064.     AX = 0103h call real-mode interrupt handler
  57065.         BL = interrupt number
  57066.         CX = number of words of stack to copy
  57067.         ES:(E)DI -> callup/down register structure (see #1414)
  57068.         Return: CF clear if successful
  57069.             CF set on error
  57070.                 AX = error code (see #1413)
  57071.     AX = 0104h register default protected mode procedure
  57072.         ES:(E)DI -> default register structure (see #1415)
  57073.         Return: CF clear if successful
  57074.             CF set on error
  57075.                 AX = error code (see #1413)
  57076.     AX = 0105h register default real-mode procedure (RETF return)
  57077.         ES:(E)DI -> default register structure (see #1415)
  57078.         Return: CF clear if successful
  57079.             CF set on error
  57080.                 AX = error code (see #1413)
  57081.         Note:    the procedure will be called from 16-bit prot. mode
  57082.     AX = 0106h register default real-mode procedure (IRET return)
  57083.         ES:(E)DI -> default register structure (see #1415)
  57084.         Return: CF clear if successful
  57085.             CF set on error
  57086.                 AX = error code (see #1413)
  57087.         Note:    the procedure will be called from 16-bit prot. mode
  57088.     AX = 0107h register default real-mode interrupt handler
  57089.         BL = interrupt number
  57090.         ES:(E)DI -> default register structure (see #1415)
  57091.         Return: CF clear if successful
  57092.             CF set on error
  57093.                 AX = error code (see #1413)
  57094.         Note:    the handler will be called from 16-bit protected mode
  57095.     AX = 0108h register default real-mode procedure (RETF return)
  57096.         ES:(E)DI -> default register structure (see #1415)
  57097.         Return: CF clear if successful
  57098.             CF set on error
  57099.                 AX = error code (see #1413)
  57100.         Note:    the procedure will be called from 32-bit prot. mode
  57101.     AX = 0109h register default real-mode procedure (IRET return)
  57102.         ES:(E)DI -> default register structure (see #1415)
  57103.         Return: CF clear if successful
  57104.             CF set on error
  57105.                 AX = error code (see #1413)
  57106.         Note:    the procedure will be called from 32-bit prot. mode
  57107.     AX = 010Ah register default real-mode interrupt handler
  57108.         BL = interrupt number
  57109.         ES:(E)DI -> default register structure (see #1415)
  57110.         Return: CF clear if successful
  57111.             CF set on error
  57112.                 AX = error code (see #1413)
  57113.         Note:    the handler will be called from 32-bit protected mode
  57114.  ---descriptor management---
  57115.     AX = 0200h allocate descriptors
  57116.         CX = number of descriptors to allocate
  57117.         Return: CF clear if successful
  57118.                 AX = selector for first descriptor allocated
  57119.             CF set on error
  57120.                 AX = error code (see #1413)
  57121.     AX = 0201h free a descriptor
  57122.         BX = selector for descriptor
  57123.         Return: CF clear if successful
  57124.             CF set on error
  57125.                 AX = error code (see #1413)
  57126.     AX = 0202h create alias descriptor
  57127.         BX = selector for descriptor to be aliased
  57128.         Return: CF clear if successful
  57129.                 AX = alias descriptor
  57130.             CF set on error
  57131.                 AX = error code (see #1413)
  57132.     AX = 0203h build alias to real-mode segment
  57133.         BX = descriptor
  57134.         CX = real-mode segment
  57135.         Return: CF clear if successful
  57136.             CF set on error
  57137.                 AX = error code (see #1413)
  57138.     AX = 0204h set descriptor base
  57139.         BX = descriptor
  57140.         CX:DX = base address
  57141.         Return: CF clear if successful
  57142.             CF set on error
  57143.                 AX = error code (see #1413)
  57144.     AX = 0205h set descriptor limit
  57145.         BX = descriptor
  57146.         CX = limit
  57147.         Return: CF clear if successful
  57148.             CF set on error
  57149.                 AX = error code (see #1413)
  57150.     AX = 0206h set descriptor type/attribute
  57151.         BX = descriptor
  57152.         CL = type
  57153.         CH = attribute
  57154.         Return: CF clear if successful
  57155.             CF set on error
  57156.                 AX = error code (see #1413)
  57157.     AX = 0207h get descriptor base
  57158.         BX = descriptor
  57159.         Return: CF clear if successful
  57160.                 CX:DX = base address
  57161.             CF set on error
  57162.                 AX = error code (see #1413)
  57163.  ---linear memory functions---
  57164.     AX = 0300h get size of largest free block of memory
  57165.         Return: CF clear if successful
  57166.                 BX:CX = size
  57167.             CF set on error
  57168.                 AX = error code (see #1413)
  57169.     AX = 0301h allocate block of extended memory
  57170.         BX:CX = required size
  57171.         Return: CF clear if successful
  57172.                 BX:CX = base address
  57173.                 SI:DI = handle
  57174.             CF set on error
  57175.                 AX = error code (see #1413)
  57176.     AX = 0302h free block of extended memory
  57177.         SI:DI = handle
  57178.         Return: CF clear if successful
  57179.             CF set on error
  57180.                 AX = error code (see #1413)
  57181.     AX = 0303h map linear memory
  57182.         ES:(E)DI -> DDS (see #1416)
  57183.         Return: CF clear if successful
  57184.                 BX:CX = base address
  57185.                 SI:DI = handle
  57186.             CF set on error
  57187.                 AX = error code (see #1413)
  57188.     AX = 0304h unmap linear memory
  57189.         SI:DI = handle
  57190.         Return: CF clear if successful
  57191.             CF set on error
  57192.                 AX = error code (see #1413)
  57193.     AX = 0305h get page table entries
  57194.         ESI = linear address
  57195.         (E)CX = count
  57196.         ES:(E)DI -> buffer for page table entries
  57197.         Return: CF clear if successful
  57198.                 ES:(E)DI buffer filled
  57199.             CF set on error
  57200.                 AX = error code (see #1413)
  57201.     AX = 0306h set page table entries
  57202.         EBX = linear memory handle
  57203.         ESI = linear address
  57204.         (E)CX = count
  57205.         ES:(E)DI -> buffer containing page table entries
  57206.         Return: CF clear if successful
  57207.             CF set on error
  57208.                 AX = error code (see #1413)
  57209.     AX = 0307h get largest mappable block size
  57210.         Return: CF clear if successful
  57211.                 BX:CX = size
  57212.             CF set on error
  57213.                 AX = error code (see #1413)
  57214.  ---miscellaneous---
  57215.     AX = 0400h relocate segment to extended memory
  57216.         ES:SI = base address
  57217.         CX = limit
  57218.         BL = type
  57219.         BH = attribute
  57220.         DX = selector or 0000h
  57221.         Return: CF clear if successful
  57222.                 AX = selector
  57223.                 BX:CX = new base address
  57224.                 SI:DI = handle
  57225.             CF set on error
  57226.                 AX = error code (see #1413)
  57227. Note:    the beta DPMS specification, which is still supported by the Novell
  57228.       DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
  57229.       0300h-0304h, and 0400h
  57230.  
  57231. (Table 1413)
  57232. Values for DPMS error code:
  57233.  8000h    general error
  57234.  8001h    unsupported function
  57235.  8002h    unable to switch to protected mode
  57236.  8004h    no default stack defined
  57237.  8005h    unknown client
  57238.  8010h    resource unavailable
  57239.  8011h    descriptor unavailable
  57240.  8012h    linear memory unavailable
  57241.  8013h    physical memory unavailable
  57242.  8021h    invalid value
  57243.  8022h    invalid selector
  57244.  8023h    invalid handle
  57245.  8025h    invalid linear address
  57246.  
  57247. Format of DPMS callup/down register structure:
  57248. Offset    Size    Description    (Table 1414)
  57249.  00h    DWORD    EDI
  57250.  04h    DWORD    ESI
  57251.  08h    DWORD    EBP
  57252.  0Ch  4 BYTEs    reserved (0) (ESP, may be used by DPMS server)
  57253.  10h    DWORD    EBX
  57254.  14h    DWORD    EDX
  57255.  18h    DWORD    ECX
  57256.  20h    DWORD    EAX
  57257.  24h    DWORD    EIP
  57258.  28h    WORD    CS
  57259.  2Ah  2 BYTEs    reserved (0)
  57260.  2Ch    DWORD    EFLAGS
  57261.  30h    DWORD    ESP
  57262.  34h    WORD    SS
  57263.  36h  2 BYTEs    reserved (0)
  57264.  38h    WORD    ES
  57265.  3Ah  2 BYTEs    reserved (0)
  57266.  3Ch    WORD    DS
  57267.  3Eh  2 BYTEs    reserved (0)
  57268.  40h    WORD    FS
  57269.  42h  2 BYTEs    reserved (0)
  57270.  44h    WORD    GS
  57271.  46h  2 BYTEs    reserved (0)
  57272.  
  57273. Format of DPMS default register structure:
  57274. Offset    Size    Description    (Table 1415)
  57275.  00h    DWORD    EIP
  57276.  04h    WORD    CS
  57277.  06h  2 BYTEs    reserved (0)
  57278.  08h    WORD    number of words to copy from stack to stack
  57279.  0Ah    BYTE    (call) 00h
  57280.         (return) nonzero if call could not be made
  57281.  0Bh    BYTE    reserved (may be used by some servers)
  57282.  0Ch    DWORD    ESP
  57283.  10h    WORD    SS
  57284.  12h  2 BYTEs    reserved (0)
  57285.  14h    WORD    ES
  57286.  16h  2 BYTEs    reserved (0)
  57287.  18h    WORD    DS
  57288.  1Ah  2 BYTEs    reserved (0)
  57289.  1Ch    WORD    FS
  57290.  1Eh  2 BYTEs    reserved (0)
  57291.  20h    WORD    GS
  57292.  22h  2 BYTEs    reserved (0)
  57293.  24h  9 BYTEs    API entry code (filled in by server)
  57294.  
  57295. Format of DPMS lock DDS:
  57296. Offset    Size    Description    (Table 1416)
  57297.  00h    DWORD    total size in bytes
  57298.  04h    DWORD    offset
  57299.  08h    WORD    segment or selector
  57300.  0Ah    WORD    reserved
  57301.  0Ch    WORD    maximum number of physical blocks structure has space for
  57302.  0Eh    WORD    number of physical blocks listed
  57303.  10h    DWORD    physical address of first block
  57304.  14h    DWORD    size in bytes of first block
  57305.     ...
  57306. ----------2F43E2-----------------------------
  57307. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
  57308.     AX = 43E2h
  57309.     BX = new state (0000h disable, 0001h enable)
  57310. Return: AX = 0000h if supported
  57311. Note:    this function should normally be called only by system software
  57312. SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
  57313. ----------2F43E3BX0000-----------------------
  57314. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
  57315.     AX = 43E3h
  57316.     BX = 0000h
  57317.     CX = 4450h ('DP')
  57318.     DX = 4D53h ('MS')
  57319. SeeAlso: AX=43E0h,AX=43E4h 
  57320. ----------2F43E4BX0000-----------------------
  57321. INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
  57322.     AX = 43E4h
  57323.     BX = 0000h
  57324.     CX = 4450h ('DP')
  57325.     DX = 4D53h ('MS')
  57326. SeeAlso: AX=43E0h,AX=43E3h 
  57327. --------E-2F44-------------------------------
  57328. INT 2F U - DOS Extender support???
  57329.     AH = 44h
  57330.     AL = function (at least 0Bh, 15h, 17h)
  57331.     ???
  57332. Return: ???
  57333. Note:    called by Codeview for Windows
  57334. SeeAlso: AH=86h
  57335. --------G-2F4500-----------------------------
  57336. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
  57337.     AX = 4500h
  57338. Return: AL = installation status
  57339.         01h if PROF.COM installed
  57340.         02h if VPROD.386 installed
  57341. SeeAlso: AX=4501h,AX=4502h
  57342. --------G-2F4501-----------------------------
  57343. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
  57344.     AX = 4501h
  57345.     BX = CSIPS buffer size in KB (first parameter for ProfSetup)
  57346.     CX = output limit in KB (second parameter for ProfSetup)
  57347. Note:    this call is not supported by PROF.COM
  57348. SeeAlso: AX=4502h,AX=4503h
  57349. --------G-2F4502-----------------------------
  57350. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
  57351.     AX = 4502h
  57352.     BL = sampling rate for PROF.COM (0 < BL <= 13)
  57353.         (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
  57354.     CX = sampling rate for VPROD.386
  57355. Note:    for PROF.COM, this programs the CMOS clock by setting BL+2 as the
  57356.       low four bits of CMOS register 0Ah.  The interruption rate is
  57357.       1 SHL (15 - BL) per second.
  57358. SeeAlso: AX=4501h,AX=4503h
  57359. --------G-2F4503-----------------------------
  57360. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
  57361.     AX = 4503h
  57362. Notes:    Profiling is also turned on by the key combinations
  57363.       LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
  57364.     for PROF.COM, this call programs the CMOS clock by reading register
  57365.       0Ch, and setting bit 6 of register 0Bh.  It then makes sure that IRQ8
  57366.       is unmasked
  57367. SeeAlso: AX=4504h
  57368. --------G-2F4504-----------------------------
  57369. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
  57370.     AX = 4504h
  57371. Notes:    profiling is also turned off by the key combination
  57372.       LeftShift + RightShift
  57373.     for PROF.COM, this programs the CMOS clock by reading register 0Ch
  57374.       and clearing bit 6 of register 0Bh.  It then masks IRQ8.
  57375. SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
  57376. --------G-2F4505-----------------------------
  57377. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
  57378.     AX = 4505h
  57379. SeeAlso: AX=4503h,AX=4504h,AX=4506h
  57380. --------G-2F4506-----------------------------
  57381. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
  57382.     AX = 4506h
  57383. SeeAlso: AX=4505h,AX=4507h
  57384. --------G-2F4507-----------------------------
  57385. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
  57386.     AX = 4507h
  57387. Note:    this call is essentially a "ProfStop" (AX=4504h) followed by
  57388.       "ProfFlush" (AX=4506h)
  57389. SeeAlso: AX=4504h,AX=4505h,AX=4506h
  57390. --------G-2F4508-----------------------------
  57391. INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
  57392.     AX = 4508h
  57393.     BX = ordinal (or 0000h)
  57394.     CX = segment
  57395.     DX = instance (or 0000h)
  57396.     SI = type (or 0000h)
  57397.     ES:DI -> ASCIZ module name
  57398. Notes:    this call is an alternate entry to the profiler's SEGDEBUG
  57399.       interface, but only to function 0, for notifying the profiler of
  57400.       each new segment loaded.  The SHOWHITS utility then examines the
  57401.       profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
  57402.       with symbol files to provide information in a useful form.
  57403.     this call does not have a corresponding Windows function
  57404. SeeAlso: AX=4500h
  57405. --------D-2F4601-----------------------------
  57406. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  57407.     AX = 4601h
  57408. Return: ???
  57409. Note:    the DOS 5+ kernel intercepts this function and copies the MCB
  57410.        following the caller's PSP memory block into the DOS data segment;
  57411.        in conjunction with AX=4602h, this intercept is used by DOS to
  57412.        avoid corruption of the Windows real-mode heap's end sentinel
  57413. SeeAlso: AX=1700h,AX=4602h
  57414. --------D-2F4602-----------------------------
  57415. INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
  57416.     AX = 4602h
  57417. Return: ???
  57418. Note:    the DOS 5+ kernel intercepts this function and copies the
  57419.       previously-saved MCB from the DOS data segment into the MCB following
  57420.       the caller's PSP memory block; in conjunction with AX=4601h, this
  57421.       intercept is used by DOS to avoid corruption of the Windows real-mode
  57422.       heap's end sentinel
  57423. SeeAlso: AX=1700h,AX=4601h
  57424. --------E-2F46-------------------------------
  57425. INT 2F U - Windows/286 DOS Extender
  57426.     AH = 46h
  57427.     AL = subfunction (03h,04h)
  57428. Return: ???
  57429. Note:    these two subfunctions are called by MS Windows 3.0
  57430. --------v-2F4653CX0002-----------------------
  57431. INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
  57432.     AX = 4653h
  57433.     CX = 0002h
  57434.     BX = subfunction
  57435.         0000h  installation check
  57436.         Return: AX = FFFFh
  57437.         0001h  uninstall
  57438.         Return: AX,BX,ES destroyed
  57439.         0002h  disable (v1.08 and below only)
  57440.         0003h  enable (v1.08 and below only)
  57441. Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
  57442.       package by Fridrik Skulason
  57443. SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
  57444. Index:    installation check;F-LOCK|uninstall;F-LOCK
  57445. --------v-2F4653CX0003-----------------------
  57446. INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
  57447.     AX = 4653h
  57448.     CX = 0003h
  57449.     BX = subfunction
  57450.         0000h  installation check
  57451.         Return: AX = FFFFh
  57452.         0001h  uninstall
  57453.         Return: AX,BX,ES destroyed
  57454. Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
  57455.       package by Fridrik Skulason
  57456. SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
  57457. Index:    installation check;F-XCHK|uninstall;F-XCHK
  57458. --------v-2F4653CX0004-----------------------
  57459. INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
  57460.     AX = 4653h
  57461.     CX = 0004h
  57462.     BX = subfunction
  57463.         0000h  installation check
  57464.         Return: AX = FFFFh
  57465.         0001h  uninstall
  57466.         Return: AX,BX,ES destroyed
  57467.         0002h  disable (v1.08 and below only)
  57468.            display message (v1.14+)
  57469.             other registers: ???
  57470.         0003h  enable (v1.08 and below only)
  57471.            display message (v1.14+)
  57472.             other registers: ???
  57473.             Return: AX = key pressed by user
  57474. Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
  57475.       package by Fridrik Skulason
  57476. SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
  57477. Index:    installation check;F-POPUP|uninstall;F-POPUP
  57478. --------v-2F4653CX0005-----------------------
  57479. INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
  57480.     AX = 4653h
  57481.     CX = 0005h
  57482.     BX = subfunction
  57483.         0000h installation check
  57484.         Return: AX = FFFFh
  57485.         0001h uninstall
  57486.         Return: AX,BX,ES destroyed
  57487. Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
  57488.       package by Fridrik Skulason
  57489. SeeAlso: AX=4653h/CX=0004h,AX=CA00h
  57490. Index:    installation check;F-DLOCK|uninstall;F-DLOCK
  57491. --------W-2F4680-----------------------------
  57492. INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
  57493.     AX = 4680h
  57494. Return: AX = result
  57495.         0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
  57496.           or DOS 5 DOSSHELL active
  57497.         nonzero  no Windows, Windows prior to 3.0, or Windows3 in enhanced
  57498.           mode
  57499. Note:    Windows 3.1 finally provides an installation check which works in all
  57500.       modes (see AX=160Ah)
  57501. SeeAlso: AX=1600h,AX=160Ah
  57502. ----------2F47-------------------------------
  57503. INT 2F U - ???
  57504.     AH = 47h
  57505.     ???
  57506. Return: ???
  57507. Note:    reportedly called by Microsoft BASIC Compiler v7.0
  57508. --------K-2F4800-----------------------------
  57509. INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
  57510.     AX = 4800h
  57511. Return: AL = nonzero if installed (DOS 5.0 and 6.0 return AX=AA02h)
  57512.         ES = segment of DOSKEY resident portion
  57513. Note:    DOSKEY chains if AL is not 00h or 10h on entry
  57514. SeeAlso: AX=4800h"PCED",AX=4810h
  57515. --------K-2F4800-----------------------------
  57516. INT 2F - PCED v2.1 - INSTALLATION CHECK
  57517.     AX = 4800h
  57518. Return: AX = AACDh if installed
  57519.         ES = segment of PCED kernel (PCED has multiple code segments)
  57520. Program: PCED v2.1 is a command line editor/history/macro facility by
  57521.       Cove Software.  It is the commercial version of the freeware CED.
  57522. Notes:    DOSKEY also responds to this call if installed, returning AX=AA02h.
  57523.     unlike DOSKEY, PCED does *not* chain if AL contains an
  57524.       unsupported function code.  It IRETs with all registers intact.
  57525. --------K-2F4810-----------------------------
  57526. INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
  57527.     AX = 4810h
  57528.     DS:DX -> line buffer (see INT 21/AH=0Ah)
  57529. Return: AX = 0000h if successful
  57530. Notes:    the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
  57531.       the previous handler; PCED allows sizes other than 80h
  57532.     if the user's input is a macro name, no text is placed in the buffer
  57533.       even though AX=0000h on return; the program must immediately issue
  57534.       this call again to retrieve the expansion of the macro.  Similarly,
  57535.       if the user enters a special parameter such as $*, this call must
  57536.       be repeated to retrieve the expansion; on the second call, DOSKEY
  57537.       overwrites the macro name on the screen with its expansion.
  57538.     unlike DOSKEY, PCED expands all macros on the first call, so it is
  57539.       not necessary to make two calls; since the buffer is not empty on
  57540.       return, DOSKEY-aware programs will not make the second call
  57541.     DOSKEY chains if AL is not 00h or 10h on entry
  57542. SeeAlso: AX=4800h,INT 21/AH=0Ah
  57543. --------K-2F48C0-----------------------------
  57544. INT 2F - PCED v2.1 - PCED API
  57545.     AX = 48C0h
  57546.     DX = API function code
  57547.     other registers as required by the specified function
  57548. Return: CF clear if successful
  57549.     CF set on error
  57550.         AX = PCED error code
  57551.     other registers as appropriate for API function
  57552. Program: PCED v2.1 is a command line editor/history/macro facility by
  57553.       Cove Software.  It is the commercial version of the freeware CED.
  57554. Note:    the full API information is available from Cove Software
  57555. SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
  57556. ----------2F48C1BL00-------------------------
  57557. INT 2F - PCED/VSTACK - INSTALLATION CHECK
  57558.     AX = 48C1h
  57559.     BL = 00h
  57560. Return: AX = 0000h if installed
  57561.         BX = VSTACK resident segment
  57562. Program: VSTACK is a resident backscroll utility included as part of the PCED
  57563.       package by Cove Software
  57564. Note:    chains if BL <> 00h on entry
  57565. SeeAlso: AX=48C0h,AX=48C2h
  57566. ----------2F48C2BL00-------------------------
  57567. INT 2F - PCED/ATTRIB - INSTALLATION CHECK
  57568.     AX = 48C2h
  57569.     BL = 00h
  57570. Return: AX = 0000h if installed
  57571.         BX = ATTRIB resident segment
  57572. Program: ATTRIB is a resident file attribute changer included as part of the
  57573.       PCED package by Cove Software
  57574. Note:    chains if BL <> 00h on entry
  57575. SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
  57576. --------K-2F48C3BL00-------------------------
  57577. INT 2F - PCED/KEYDEF - INSTALLATION CHECK
  57578.     AX = 48C3h
  57579.     BL = 00h
  57580. Return: AX = 0000h if installed
  57581.         BX = KEYDEF resident segment
  57582. Program: KEYDEF is a resident keyboard redefinition utility included as part
  57583.       of the PCED package by Cove Software
  57584. Note:    chains if BL <> 00h on entry
  57585. SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
  57586. ----------2F48C4BL00-------------------------
  57587. INT 2F - PCED/FLIST - INSTALLATION CHECK
  57588.     AX = 48C4h
  57589.     BL = 00h
  57590. Return: AX = 0000h if installed
  57591.         BX = FLIST resident segment
  57592. Program: FLIST is a resident filelist processor included as part of the PCED
  57593.       package by Cove Software
  57594. Note:    chains if BL <> 00h on entry
  57595. SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
  57596. ----------2F48C5BL00-------------------------
  57597. INT 2F - PCED/ASSOC - INSTALLATION CHECK
  57598.     AX = 48C5h
  57599.     BL = 00h
  57600. Return: AX = 0000h if installed
  57601.         BX = ASSOC resident segment
  57602. Program: ASSOC is a resident utility included as part of the PCED package which
  57603.       associated files with executable programs based on their extensions
  57604. Note:    chains if BL > 02h on entry
  57605. SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
  57606. ----------2F48C5BL01-------------------------
  57607. INT 2F - PCED/ASSOC - VERSION CHECK
  57608.     AX = 48C5h
  57609.     BL = 01h
  57610. Return: AX = 0000h if installed
  57611.         BX = binary ASSOC version (BL = major, BH = minor)
  57612. Note:    chains if BL > 02h on entry
  57613. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
  57614. ----------2F48C5BL02-------------------------
  57615. INT 2F - PCED/ASSOC - ASSOCIATION TEST
  57616.     AX = 48C5h
  57617.     BL = 02h
  57618.     DS:SI -> ASCIZ filename
  57619. Return: AX = status
  57620.         0000h if filename is unknown
  57621.         0001h if there is an association defined for the file
  57622.     BX destroyed
  57623. Program: ASSOC is a resident utility included as part of the PCED package which
  57624.       associated files with executable programs based on their extensions
  57625. Note:    chains if BL > 02h on entry
  57626. SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
  57627. ----------2F49-------------------------------
  57628. INT 2F U - ???
  57629.     AH = 49h
  57630.     ???
  57631. Return: ???
  57632. Note:    reportedly called by DOS 5.0 installation
  57633. --------D-2F4A00CX0000-----------------------
  57634. INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
  57635.     AX = 4A00h
  57636.     CX = 0000h
  57637.     DH = new drive number
  57638.     DL = current drive number
  57639. Return: CX = FFFFh to skip "Insert diskette for drive X:" message
  57640. Note:    called by MS-DOS 5.0+ IO.SYS just before displaying the message
  57641.       "Insert diskette for drive X:" on single-floppy systems
  57642. --------D-2F4A01-----------------------------
  57643. INT 2F - DOS 5+ - QUERY FREE HMA SPACE
  57644.     AX = 4A01h
  57645. Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
  57646.     ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
  57647. Note:    called by Windows 3.1 DOSX.EXE
  57648. SeeAlso: AX=4310h,AX=4A02h
  57649. --------D-2F4A02-----------------------------
  57650. INT 2F - DOS 5+ - ALLOCATE HMA SPACE
  57651.     AX = 4A02h
  57652.     BX = number of bytes
  57653. Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
  57654.     BX = number of bytes actually allocated (rounded up to next paragraph
  57655.           for DOS 5.0 and 6.0)
  57656. Notes:    this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
  57657.     called by Windows 3.1 DOSX.EXE
  57658. SeeAlso: AX=4A01h
  57659. --------T-2F4A05-----------------------------
  57660. INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
  57661.     AX = 4A05h
  57662.     SI = function
  57663.         0000h reset???
  57664.         0001h ???
  57665.         ES:BP -> 80-byte buffer containing ???
  57666.         0002h ???
  57667.         0003h ???
  57668.         0004h ???
  57669.         BL = ???
  57670.         0005h ???
  57671.         0006h get ???
  57672.         Return: ES:SI -> ???
  57673.         0007h get ???
  57674.         Return: AX = ???
  57675.         0008h get ???
  57676.         Return: DX:AX -> ??? (internal control data of some kind)
  57677.         0009h get ???
  57678.         Return: ES:SI -> ??? (apparently identical to function 0006h)
  57679.         000Ah ???
  57680.         BL = length of buffer
  57681.         ES:BP -> buffer containing ???
  57682.         000Bh get ???
  57683.         Return: AX = ???
  57684.         000Ch ???
  57685.         BL = ???
  57686.         Return: if BL nonzero on entry
  57687.                 DX:AX -> ???
  57688.             if BL = 00h on entry
  57689.                 ES:SI -> ???
  57690. Notes:    DOSSHELL chains to the previous handler if SI is not one of the values
  57691.       listed above
  57692.     the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
  57693.     the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
  57694. SeeAlso: AX=4B01h
  57695. --------D-2F4A06-----------------------------
  57696. INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
  57697.     AX = 4A06h
  57698.     DX = segment following last byte of conventional memory
  57699. Return: DX = segment following last byte of memory available for use by DOS
  57700. Desc:    used to override the default memory size when booting diskless
  57701.       workstations
  57702. Notes:    called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
  57703.       present three bytes beyond the INT 2F handler; this call overrides
  57704.       the value returned by INT 12
  57705.     hooked by RPL code at the top of memory to protect itself from being
  57706.       overwritten; DOS builds a memory block with owner = 0008h and name
  57707.       "RPL" which must be freed by the RPL code when it is done
  57708. SeeAlso: INT 12,INT 18
  57709. --------N-2F4A07-----------------------------
  57710. INT 2F U - RESERVED FOR PROTMAN SUPPORT
  57711.     AX = 4A07h
  57712.     ???
  57713. Return: ???
  57714. --------c-2F4A10BX0000-----------------------
  57715. INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
  57716.     AX = 4A10h
  57717.     BX = 0000h
  57718.     CX = EBABh (v4.1+; see Note)
  57719. Return: AX = BABEh if installed
  57720.         DX:BX = cache hits
  57721.         DI:SI = cache misses
  57722.         CX = number of dirty cache elements
  57723.         BP = version in BCD (4.10 = 0410h)
  57724. Notes:    most of the SMARTDRV API, including this call, is supported by
  57725.       PC-Cache v8.0 and recent versions of the Norton Caches
  57726.     if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
  57727.       then calls of this function with CX<>EBABh on entry cause
  57728.       DBLSPACE.BIN to display the error message
  57729.       "Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
  57730.       with INT 21/AX=4C00h
  57731.     SMARTDRV v3.x had a completely different API using IOCTL calls, which
  57732.       was also supported by the Norton Caches
  57733. SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
  57734. SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
  57735. SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
  57736. ----------2F4A10BX0000-----------------------
  57737. INT 2F U - Novell NWCACHE - ???
  57738.     AX = 4A10h
  57739.     BX = 0000h
  57740.     CX = 0EDCh
  57741. Return: ???
  57742. SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
  57743. --------c-2F4A10BX0001-----------------------
  57744. INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
  57745.     AX = 4A10h
  57746.     BX = 0001h
  57747. Note:    this function is also supported by PC-Cache v8.0.
  57748. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h
  57749. ----------2F4A10BX0001-----------------------
  57750. INT 2F U - Novell NWCACHE - ???
  57751.     AX = 4A10h
  57752.     BX = 0001h
  57753.     CX = 0EDCh
  57754. Return: ???
  57755. SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
  57756. --------c-2F4A10BX0002-----------------------
  57757. INT 2F - SMARTDRV v4.00+ - RESET CACHE
  57758.     AX = 4A10h
  57759.     BX = 0002h
  57760. Note:    this function is also supported by PC-Cache v8.0.
  57761. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
  57762. --------c-2F4A10BX0003-----------------------
  57763. INT 2F - SMARTDRV v4.00+ - STATUS
  57764.     AX = 4A10h
  57765.     BX = 0003h
  57766.     BP = drive number (0=A, 1=B, etc.)
  57767.     DL = subfunction
  57768.         00h only get information
  57769.         01h turn on read cache
  57770.         02h turn off read cache
  57771.         03h turn on write cache
  57772.         04h turn off write cache
  57773. Return: AX = BABEh if OK
  57774.     DL = status (see #1417)
  57775.     DL = FFh if drive does not exist
  57776. Notes:    If the read cache is off, reads will not be cached, but writes will
  57777.       continue to be cached if the write-cache is enabled.
  57778.     this function is also supported by PC-Cache v8.0.
  57779. SeeAlso: AX=4A10h/BX=0000h
  57780.  
  57781. Bitfields for SMARTDRV status:
  57782. Bit(s)    Description    (Table 1417)
  57783.  7    not cached
  57784.  6    write-through (not write-cached)
  57785.  0-5    real drive number (0=A, 1=B...)
  57786. --------c-2F4A10BX0004-----------------------
  57787. INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
  57788.     AX = 4A10h
  57789.     BX = 0004h
  57790. Return: AX = size in elements of full-sized cache
  57791.     BX = current size in elements
  57792.     CX = size of one element in bytes
  57793.     DX = number of elements under Windows
  57794. Note:    this function is also supported by PC-Cache v8.0.
  57795. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
  57796. --------c-2F4A10BX0005-----------------------
  57797. INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
  57798.     AX = 4A10h
  57799.     BX = 0005h
  57800.     BP = drive number (0=A, 1=B...)
  57801. Return: AX = BABEh if double-buffered
  57802.         ES:DI -> 16-byte array of status bytes for fixed disks (see #1418)
  57803. SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
  57804.  
  57805. (Table 1418)
  57806. Values for SMARTDRV status byte:
  57807.  00h    state unknown
  57808.  FFh    drive double-buffered
  57809.  else    not double-buffered
  57810. --------c-2F4A10BX0006-----------------------
  57811. INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
  57812.     AX = 4A10h
  57813.     BX = 0006h
  57814.     CL = drive number (01h = A:)
  57815. Return: AX = 0006h if drive should not be cached by SMARTDRV
  57816. Note:    called by SMARTDRV at startup to determine whether it should cache
  57817.       a particular drive
  57818. SeeAlso: AX=4A10h/BX=0000h
  57819. --------c-2F4A10BX0007-----------------------
  57820. INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
  57821.     AX = 4A10h
  57822.     BX = 0007h
  57823.     BP = drive number (00h=A:)
  57824. Return: DL = unit number within device driver
  57825.     ES:DI -> device driver header for drive
  57826. Note:    this function is also supported by PC-Cache v8.0.
  57827.     this call is reported to always return the driver header of the
  57828.       standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
  57829. SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
  57830. --------c-2F4A10BX0008-----------------------
  57831. INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
  57832.     AX = 4A10h
  57833.     BX = 0008h
  57834.     DL = subfunction
  57835.         00h set
  57836.         DH = new states
  57837.             bit 0: flush before prompt
  57838.             bits 1-7 reserved (0)
  57839.         01h get
  57840.         Return: DH = status flags
  57841.                 bit 0: (v4.2+) flush before prompt
  57842.                 bit 1: (v5.0+) CD-ROM caching support installed
  57843. Note:    v4.2 was an interim release to fix problems in the SMARTDRV included
  57844.       with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
  57845. --------c-2F4A10BX000A-----------------------
  57846. INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
  57847.     AX = 4A10h
  57848.     BX = 000Ah
  57849. Return: ES:BX -> information pointer table (see #1419)
  57850. Note:    this function is also supported by PC-Cache v8.0.
  57851. SeeAlso: AX=4A10h/BX=0000h
  57852.  
  57853. Format of SMARTDRV information pointer table:
  57854. Offset    Size    Description    (Table 1419)
  57855.  00h    WORD    offset of ??? byte/word array (byte if elements < 2000h bytes)
  57856.  02h    WORD    offset of dirty flag byte/word array (byte if elts < 2000h)
  57857.         each byte/word is a bit string of the dirty sectors in element
  57858.  04h    WORD    offset of word array containing low halves of unique
  57859.           identifiers for the corresponding element's contents
  57860.  06h    WORD    offset of word array containing high halves of unique
  57861.           identifiers for the corresponding element's contents
  57862.  08h    WORD    offset of WORD containing current number of elements in cache
  57863. --------c-2F4A10BX1234-----------------------
  57864. INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
  57865.     AX = 4A10h
  57866.     BX = 1234h
  57867. Desc:    this function pops up a message box saying that a serious error
  57868.       occurred and to hit R to retry, then waits for the keypress
  57869. Note:    this function is also supported by PC-Cache v8.0.
  57870. SeeAlso: AX=4A10h/BX=0000h
  57871. --------k-2F4A11BX0000-----------------------
  57872. INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
  57873.     AX = 4A11h
  57874.     BX = 0000h
  57875. Return: AX = 0000h (successful)
  57876.     BX = 444Dh ("DM")
  57877.     CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
  57878.     CH = number of drive letters used by DBLSPACE
  57879.     DX = internal DBLSPACE.BIN version number (bits 14-0)
  57880.         bit 15 set if DBLSPACE.BIN has not yet been relocated to final
  57881.           position in memory (i.e. DBLSPACE.SYS /MOVE)
  57882. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  57883.       disk-compression software bundled with MS-DOS 6.0
  57884. Note:    this function is also supported by the version of SuperStor bundled
  57885.       with IBM DOS 6.x and "preloading" versions of Stacker
  57886. SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
  57887. SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
  57888. SeeAlso: INT 21/AX=4404h"DBLSPACE"
  57889. --------k-2F4A11BX0001-----------------------
  57890. INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
  57891.     AX = 4A11h
  57892.     BX = 0001h
  57893.     DL = drive number (0=A:)
  57894. Return: AX = status (see also #1420)
  57895.         0000h successful
  57896.         if DL was compressed drive,
  57897.             BL = host drive (bit 7 set if drive is compressed)
  57898.         else if DL was host drive,
  57899.             BL = compressed drive
  57900.         else
  57901.             BL = specified drive (if available for DoubleSpace)
  57902.         BH = DoubleSpace sequence number
  57903.         other error code (0101h) (see #1420)
  57904.         apparently never returned for the MS-DOS 6.2 DoubleSpace
  57905. Note:    the compressed volume file for the specified compressed drive is
  57906.       host:\DBLSPACE.sequence
  57907. SeeAlso: AX=4A11h/BX=0000h
  57908.  
  57909. (Table 1420)
  57910. Values for DBLSPACE function status:
  57911.  0000h    successful
  57912.  0100h    bad function
  57913.  0101h    invalid drive
  57914.  0102h    not a compressed drive
  57915.  0103h    drive already swapped
  57916.  0104h    drive not swapped
  57917. --------k-2F4A11BX0002-----------------------
  57918. INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
  57919.     AX = 4A11h
  57920.     BX = 0002h
  57921.     DL = drive number (0=A:) of compressed drive to swap with its host
  57922. Return: AX = status (0000h,0101h,0102h,0103h) (see #1420)
  57923. Note:    this function is intended for use by DBLSPACE.EXE only
  57924. SeeAlso: AX=4A11h/BX=0000h
  57925. --------k-2F4A11BX0003-----------------------
  57926. INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
  57927.     AX = 4A11h
  57928.     BX = 0003h
  57929.     CL = drive number (0=A:) of compressed drive
  57930. Return: CL = FFh on error (not compressed drive)
  57931.     CL <> FFh driver unit number of host drive
  57932.         ES:SI -> device driver's strategy routine
  57933.         ES:DI -> device driver's interrupt routine
  57934.     BX destroyed
  57935. Note:    in conjunction with subfunction 0004h, this call allows disk caches
  57936.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  57937.       drives just like SMARTDRV applies to regular block devices
  57938. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
  57939. --------k-2F4A11BX0004-----------------------
  57940. INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
  57941.     AX = 4A11h
  57942.     BX = 0004h
  57943.     CL = drive number (0=A:) of compressed drive
  57944.     DL = unit number for new driver entry points
  57945.     DH = 00h
  57946.     ES:SI -> device driver strategy routine to call for drive
  57947.     ES:DI -> device driver interrupt routine to call for drive
  57948. Return: CL = FFh on error (not a compressed drive)
  57949.     BX destroyed
  57950. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  57951.       disk-compression software bundled with MS-DOS 6.0
  57952. Note:    in conjunction with subfunction 0003h, this call allows disk caches
  57953.       like SMARTDRV to apply a device driver wrapper to DoubleSpaced
  57954.       drives just like SMARTDRV applies to regular block devices
  57955. SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
  57956. --------k-2F4A11BX0005-----------------------
  57957. INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
  57958.     AX = 4A11h
  57959.     BX = 0005h
  57960.     DL = drive number (0=A:) to assign to new drive
  57961.     ES:SI -> activation record (see #1421)
  57962. Return: status returned in activation record (see #1422)
  57963. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
  57964.  
  57965. Format of DBLSPACE activation record:
  57966. Offset    Size    Description    (Table 1421)
  57967.  00h  2 BYTEs    signature "MD" (4Dh 44h)
  57968.  02h    BYTE    4Dh ('M') mount command
  57969.  03h    BYTE    error code (set to FFh before calling) (see #1422)
  57970.  04h    BYTE    host drive number (0=A:)
  57971.  05h    ???    DISK_UNIT structure (not documented)
  57972.  
  57973. (Table 1422)
  57974. Values for DBLSPACE Mount error code:
  57975.  00h    successful
  57976.  01h    drive letter not available for DoubleSpace
  57977.  02h    drive letter already in use
  57978.  03h    no more disk units (increase MaxRemovableDrives in .INI)
  57979.  09h    CVF too fragmented
  57980. --------k-2F4A11BX0006-----------------------
  57981. INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
  57982.     AX = 4A11h
  57983.     BX = 0006h
  57984.     DL = drive number (0=A:) to unmount
  57985. Return: AX = status (0000h,0102h) (see #1420)
  57986. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
  57987. --------k-2F4A11BX0007-----------------------
  57988. INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
  57989.     AX = 4A11h
  57990.     BX = 0007h
  57991.     DL = compressed drive number (0=A:)
  57992. Return: AX = status (0000h,0102h) (see also #1420)
  57993.         0000h successful
  57994.         DS:SI -> free space record (see #1423)
  57995. Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
  57996.       disk-compression software bundled with MS-DOS 6.0
  57997. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  57998.  
  57999. Format of DBLSPACE free space record:
  58000. Offset    Size    Description    (Table 1423)
  58001.  00h    DWORD    total number of sectors in drive's sector heap
  58002.  04h    DWORD    number of free sectors in drive's sector heap
  58003. --------k-2F4A11BX0008-----------------------
  58004. INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
  58005.     AX = 4A11h
  58006.     BX = 0008h
  58007.     DL = compressed drive number (0=A:)
  58008. Return: AX = status (0000h,0102h) (see also #1420)
  58009.         0000h successful
  58010.         BX = maximum entries in File Fragment heap
  58011.         CX = available entries in File Fragment heap
  58012. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
  58013. --------k-2F4A11BX0009-----------------------
  58014. INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
  58015.     AX = 4A11h
  58016.     BX = 0009h
  58017.     DL = compressed drive number (0=A:)
  58018. Return: AX = status (see also #1420)
  58019.         0000h successful
  58020.         CL = number of DISK_UNIT structures allocated
  58021.               (see AX=4A11h/BX=0005h)
  58022.         CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
  58023. Note:    the DoubleGuard checks are enabled or disabled as a block by the
  58024.       DoubleGuard= line in DBLSPACE.INI; they may be individually set with
  58025.       the CheckSum= line.
  58026. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
  58027. --------k-2F4A11BX000A-----------------------
  58028. INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
  58029.     AX = 4A11h
  58030.     BX = 000Ah
  58031.     CX:DX = bitmask of drives on which to enable AutoMount
  58032.         (DX bit 0 = A:, CX bit 0 = P:, etc.)
  58033. Return: AX = 0000h if supported
  58034.         CX:DX = old mask or 0000h:0000h on error
  58035.     BX destroyed
  58036. SeeAlso: AX=4A11h/BX=000Bh
  58037. --------k-2F4A11BX000B-----------------------
  58038. INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
  58039.     AX = 4A11h
  58040.     BX = 000Bh
  58041. Return: AX = 0000h if supported
  58042.         CX:DX = mask of drives with AutoMount enabled
  58043.         0000h:0000h on error
  58044.     BX destroyed
  58045. SeeAlso: AX=4A11h/BX=000Ah
  58046. --------k-2F4A11BXFFFE-----------------------
  58047. INT 2F U - DBLSPACE.BIN - RELOCATE
  58048.     AX = 4A11h
  58049.     BX = FFFEh
  58050.     ES = segment to which to relocate DBLSPACE.BIN
  58051. Return: ???
  58052. Notes:    called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
  58053.       in memory
  58054.     this function also unhooks and discards the code providing this
  58055.       function and AX=4A11h/BX=FFFFh
  58056.     this function is also supported by the version of SuperStor bundled
  58057.       with IBM DOS 6.x and "preloading" versions of Stacker
  58058. SeeAlso: AX=4A11h/BX=FFFFh
  58059. --------k-2F4A11BXFFFF-----------------------
  58060. INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
  58061.     AX = 4A11h
  58062.     BX = FFFFh
  58063. Return: AX = number of paragraphs needed by DBLSPACE.BIN
  58064. Note:    used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
  58065.       position in memory
  58066.     this function is also supported by the version of SuperStor bundled
  58067.       with IBM DOS 6.x and "preloading" versions of Stacker
  58068. SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
  58069. --------k-2F4A12CX4D52-----------------------
  58070. INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
  58071.     AX = 4A12h
  58072.     CX = 4D52h ("MR")
  58073.     DX = 4349h ("CI")
  58074. Return: CX = 4943h ("IC") if installed
  58075.     DX = 524Dh ("RM") if installed
  58076.         ES:DI -> MRCINFO structure (see INT 1A/AX=B001h)
  58077. Note:    this call is functionally identical to INT 1A/AX=B001h, but should be
  58078.       called first, as the latter call is used for the first, ROM-based
  58079.       MRCI server, while this call is used for RAM-based servers which
  58080.       may be partially or entirely replacing a prior server
  58081. SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
  58082. --------k-2F4A12CX5354-----------------------
  58083. INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
  58084.     AX = 4A12h
  58085.     CX = 5354h ("ST")
  58086.     DX = 4143h ("AC")
  58087. Return: AX = 4F4Bh ("OK") if installed
  58088.     CX = 7374h ("st") if installed
  58089.     DX = 6163h ("ac") if installed
  58090.         ES:DI -> entry point in LZSAPI server (usually, driver
  58091.               STACKER.COM) containing far address of an actual
  58092.               LZSINFO structure (see #1424)
  58093. SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
  58094.  
  58095. Format of LZSINFO structure:
  58096. Offset    Size    Description    (Table 1424)
  58097.  00h  6 BYTEs    signature "LZSAPI"
  58098.  06h    WORD    server version (200 (0C8h) for Stacker 4)
  58099.  08h  4 BYTEs    vendor signature
  58100.         "STAC" = Stac Electronics, Inc.
  58101.  0Ch  6 BYTEs    ???
  58102.  12h    WORD    bit flags: server status/capabilities (see #1425)
  58103.  14h    DWORD    -> Stacker 3.X-compatible compression procedure
  58104.  18h    DWORD    -> Stacker 3.X-compatible decompression procedure
  58105.  1Ch  4 BYTEs    reserved (always set to 0)
  58106.  20h    DWORD    -> incremental Stacker 3.x-compatible compression procedure
  58107.           (see #1426)
  58108.  24h  4 BYTEs    ???
  58109.  28h    DWORD    -> incremental Stacker 3.x-compatible decompression procedure
  58110.           (see #1427)
  58111.  2Ch  4    BYTES    ???
  58112.  30h    DWORD    -> new (Stacker 4) compression procedure
  58113.  34h  4 BYTEs    ???
  58114.  38h    DWORD    -> new (Stacker 4) decompression procedure
  58115. Notes:    Stacker 4 usally keeps two different data-compression algorithms in
  58116.       memory (preferably in XMA):
  58117.         1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
  58118.           and static Huffman encoding), and
  58119.         2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
  58120.           is used to work with STACVOL files created under older
  58121.           versions of Stacker.
  58122.  
  58123. Bitfields for LZSAPI capabilities:
  58124. Bit(s)    Description    (Table 1425)
  58125.  0    ???
  58126.  1    busy/error flag
  58127.  2-10    ???
  58128.  11    maximum compressor/decompressor presented
  58129.  
  58130. (Table 1426)
  58131. Call Stacker 3.x-style non-incremental functions with:
  58132.     STACK:    DWORD    return address for compress/decompress procedure
  58133.         WORD    compression algorithm parameters (see #1428)
  58134.         WORD    size of destination buffer (in bytes)
  58135.         DWORD    address of destination buffer
  58136.         WORD    size of source buffer (in bytes)
  58137.         DWORD    address of source buffer
  58138. Return: (compression/decompression procedure)
  58139.     AX = size of resulting data in destination buffer
  58140.         0000h if error (either destination buffer too small or error in
  58141.           compressed data)
  58142.  
  58143. (Table 1427)
  58144. Call Stacker 4-style incremental procedures with:
  58145.     STACK:    DWORD    return address for compr./decompr. procedure
  58146.         DWORD    address of LZSSWAP structure (see #1429)
  58147.             if 0000:0000, procedure uses non-incremental technique
  58148.         WORD    compression algorithm parameters (see #1428)
  58149.         WORD    size of destination buffer (in bytes)
  58150.         DWORD    address of destination buffer
  58151.         WORD    size of source buffer (in bytes)
  58152.         DWORD    address of source buffer
  58153.  
  58154. (Table 1428)
  58155. Values for Compression algorithm parameters:
  58156. Value    Compression level (/P=xx parameter)
  58157.  07F9h      1
  58158.  0621h      2
  58159.  0625h      3
  58160.  0665h      4
  58161.  0669h      5
  58162.  06E9h      6
  58163.  06EDh      7
  58164.  07D1h      8
  58165.  07D9h      9
  58166.  
  58167. Format of LZSSWAP structure:
  58168. Offset    Size    Description    (Table 1429)
  58169.  00h  2 BYTEs    signature "CS"
  58170.  02h  6 BYTEs    reserved
  58171.  08h    DWORD    address of destination buffer swapping procedure
  58172.  0Ch    DWORD    address of stack swapping procedure
  58173. --------k-2F4A13-----------------------------
  58174. INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
  58175.     AX = 4A13h
  58176. Return: AX = 134Ah if supported
  58177.         ES:BX -> entry point record (see #1430)
  58178. SeeAlso: AX=4A11h/BX=0000h
  58179.  
  58180. Format of DBLSPACE entry point record:
  58181. Offset    Size    Description    (Table 1430)
  58182.  00h    DWORD    pointer to FAR function for ???
  58183.  04h  5 BYTEs    FAR JUMP instruction to ???
  58184. --------N-2F4B-------------------------------
  58185. INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
  58186.     AH = 4Bh
  58187.     ???
  58188. Return: ???
  58189. Note:    LAN Manager enhanced mode adds features beyond the standard redirector
  58190.       file/printer services
  58191. SeeAlso: AX=118Ah,AX=4100h,AH=42h
  58192. --------T-2F4B01-----------------------------
  58193. INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
  58194.     AX = 4B01h
  58195.     CX:DX -> task switcher entry point (see #1433)
  58196.     ES:BX = 0000h:0000h
  58197. Return: ES:BX -> callback info structure (see #1431) or 0000h:0000h
  58198. Notes:    called by the task switcher
  58199.     this function is hooked by clients which require notification of task
  58200.       switcher activities; the call must first be passed on to the prior
  58201.       handler with registers unchanged using a simulated interrupt.     On
  58202.       return, the client must build a callback info structure and store
  58203.       the returned ES:BX in the "next" field, then return the address of
  58204.       its own callback info structure.
  58205.     a client program must add itself to the notification chain if it
  58206.       provides services to other programs; before terminating, it must
  58207.       remove itself from the chain by calling the task switcher's entry
  58208.       point with AX=0005h (see #1433)
  58209.     the task switcher entry point should not be saved, as it is subject to
  58210.       change and will be provided on any notification call
  58211.     the Windows 3.1 Standard Mode supports this API
  58212. SeeAlso: AX=160Bh,AX=4B02h
  58213.  
  58214. Format of task switcher callback info structure:
  58215. Offset    Size    Description    (Table 1431)
  58216.  00h    DWORD    pointer to next callback info structure
  58217.  04h    DWORD    pointer to notification function (see #1432)
  58218.  08h    DWORD    reserved
  58219.  0Ch    DWORD    address of zero-terminated list of API info structures
  58220.         (see #1435)
  58221.  
  58222. (Table 1432)
  58223. Values task switcher notification function is called with:
  58224.     AX = function
  58225.         0000h switcher initialization
  58226.         Return: AX = status
  58227.                 0000h if OK to load
  58228.                 nonzero to abort task switcher
  58229.         0001h query suspend
  58230.         BX = session ID
  58231.         Return: AX = status
  58232.                 0000h if OK to switch session
  58233.                 0001h if not
  58234.         0002h suspend session
  58235.         BX = session ID
  58236.         interrupts disabled
  58237.         Return: AX = 0000h if OK to switch session
  58238.                = 0001h if not
  58239.         0003h activate session
  58240.         BX = session ID
  58241.         CX = session status flags
  58242.             bit 0: set if first activation of session
  58243.             bits 1-15: reserved (0)
  58244.         interrupts disabled
  58245.         Return: AX = 0000h
  58246.         0004h session active
  58247.         BX = session ID
  58248.         CX = session status flags
  58249.             bit 0: set if first activation of session
  58250.             bits 1-15: reserved (0)
  58251.         Return: AX = 0000h
  58252.         0005h create session
  58253.         BX = session ID
  58254.         Return: AX = 0000h if OK to create session
  58255.                = 0001h if not
  58256.         0006h destroy session
  58257.         BX = session ID
  58258.         Return: AX = 0000h
  58259.         0007h switcher termination
  58260.         BX = flags
  58261.             bit 0: set if calling switcher is only switcher loaded
  58262.             bits 1-15: reserved (0)
  58263.         Return: AX = 0000h
  58264.     ES:DI -> task switcher entry point (see #1433)
  58265. Notes:    function 0000h is generally called by the program which controls or
  58266.       invokes the task switcher, rather than by the task switcher itself;
  58267.       the entry point supplied to this function is not necessarily the
  58268.       entry point to the task switcher itself, and may be 0000h:0000h.  If
  58269.       any client indicates that loading is not possible, all clients will
  58270.       be called with function 0007h; thus it is possible for a client to
  58271.       receive a termination notice without a corresponding initialization
  58272.       notice.
  58273.     except for functions 0002h and 0003h, the notification handler is
  58274.       called with interrupts enabled and may make any INT 21h function
  58275.       call; interrupts must not be enabled in functions 0002h and 0003h
  58276.     function 0007h may be called with ES:DI = 0000h:0000h if the entry
  58277.       point is no longer valid
  58278. --------T-2F4B02BX0000-----------------------
  58279. INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
  58280.     AX = 4B02h
  58281.     BX = 0000h
  58282.     ES:DI = 0000h:0000h
  58283. Return: ES:DI = 0000h:0000h if task switcher not loaded
  58284.     ES:DI -> task switcher entry point (see #1433) if loaded
  58285.         AX = 0000h
  58286. Notes:    the returned entry point is that for the most-recently loaded task
  58287.       switcher; the entry points for prior task switchers may be determined
  58288.       with the "get version" call (see #1433)
  58289.     this function is supported by PC Tools v8+ CPTASK
  58290. SeeAlso: AX=4A05h,AX=4B03h
  58291.  
  58292. (Table 1433)
  58293. Call task switcher entry point with:
  58294.     AX = 0000h get version
  58295.         Return: CF clear if successful
  58296.                 AX = 0000h
  58297.                 ES:BX -> task switcher version struct (see #1434)
  58298.             CF set if unsupported function
  58299.     AX = 0001h test memory region
  58300.         ES:DI -> first byte to be tested
  58301.         CX = size of region to test
  58302.         Return: CF clear if successful
  58303.                 AX = memory type of tested region
  58304.                 0000h global
  58305.                 0001h global and local
  58306.                 0002h local (replaced on session switch)
  58307.             CF set if unsupported function
  58308.     AX = 0002h suspend switcher
  58309.         ES:DI -> new task switcher's entry point
  58310.         Return: CF clear if successful
  58311.                 AX = state
  58312.                 0000h switcher has been suspended
  58313.                 0001h switcher not suspended, new switcher must
  58314.                     abort
  58315.                 0002h switcher not suspended, but new switcher
  58316.                     may run anyway
  58317.             CF set if unsupported function
  58318.     AX = 0003h resume switcher
  58319.         ES:DI -> new task switcher's entry point
  58320.         Return: CF clear if successful
  58321.                 AX = 0000h
  58322.             CF set if unsupported function
  58323.     AX = 0004h hook notification chain
  58324.         ES:DI -> callback info structure to be added to chain
  58325.               (see #1431)
  58326.         Return: CF clear if successful
  58327.                 AX = 0000h
  58328.             CF set if unsupported function
  58329.     AX = 0005h unhook notification chain
  58330.         ES:DI -> callback info structure to be removed from chain
  58331.               (see #1431)
  58332.         Return: CF clear if successful
  58333.                 AX = 0000h
  58334.             CF set if unsupported function
  58335.     AX = 0006h query API support
  58336.         BX = asynchronous API identifier
  58337.         Return: CF clear if successful
  58338.                 AX = 0000h
  58339.                 ES:BX -> API info structure (see #1435) for the
  58340.                       client which provides the highest
  58341.                       level of API support
  58342.             CF set if unsupported function
  58343.  
  58344. Format of task switcher version structure:
  58345. Offset    Size    Description    (Table 1434)
  58346.  00h    WORD    major version of supported protocol  (current protocol is 1.0)
  58347.  02h    WORD    minor version of supported protocol
  58348.  04h    WORD    major version of task switcher
  58349.  06h    WORD    minor version of task switcher
  58350.  08h    WORD    task switcher ID (see AX=4B03h)
  58351.  0Ah    WORD    operation flags
  58352.         bit 0: set if task switcher disabled
  58353.         bits 1-15: reserved (0)
  58354.  0Ch    DWORD    pointer to ASCIZ task switcher name
  58355.         ("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
  58356.  10h    DWORD    pointer to previous task switcher's entry point or 0000h:0000h
  58357.  
  58358. Format of API info structure:
  58359. Offset    Size    Description    (Table 1435)
  58360.  00h    WORD    size of structure in bytes (000Ah)
  58361.  02h    WORD    API identifier
  58362.         0001h NetBIOS
  58363.         0002h 802.2
  58364.         0003h TCP/IP
  58365.         0004h LAN Manager named pipes
  58366.         0005h Novell NetWare IPX
  58367.  04h    WORD    major version \ of highest version of API for which the support
  58368.  06h    WORD    minor version / level specified in the next field is provided
  58369.  08h    WORD    support level
  58370.         0001h minimal support
  58371.         0002h API-level support
  58372.         0003h switcher compatibility
  58373.         0004h seamless compatibility
  58374. --------T-2F4B03-----------------------------
  58375. INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
  58376.     AX = 4B03h
  58377.     ES:DI -> task switcher entry point (see #1433)
  58378. Return: AX = 0000h
  58379.     BX = switcher ID (0001h-000Fh), or 0000h if no more available
  58380. Notes:    if a task switcher has determined that it is the first to be loaded, it
  58381.       must allocate an identifier for itself and provide this function to
  58382.       all subsequent task switchers; if it is not the first to be loaded,
  58383.       it must call this function to allocate an ID.     The switcher ID is
  58384.       used as the high four bits of all session identifiers to ensure
  58385.       unique session IDs.
  58386.     if no more switcher IDs are available, the new task switcher making the
  58387.       call must terminate or disable itself
  58388.     the task switcher providing the identifiers may call the new task
  58389.       switcher's entry point as needed
  58390.     this call is available from within DOSSHELL even if the task switcher
  58391.       is not installed
  58392.     this function is supported by PC Tools v8+ CPTASK, but appears to
  58393.       always return an ID of 0000h
  58394. SeeAlso: AX=4B02h,AX=4B04h
  58395. --------T-2F4B04-----------------------------
  58396. INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
  58397.     AX = 4B04h
  58398.     BX = switcher ID
  58399.     ES:DI -> task switcher entry point (see #1433)
  58400. Return: AX = 0000h
  58401.     BX = status
  58402.         0000h successful
  58403.         other error (invalid ID or ID not allocated)
  58404. Notes:    called by a task switcher when it exits, unless it was the first loaded
  58405.       and is providing the support for AX=4B03h and AX=4B04h
  58406.     the task switcher providing the identifiers may call the terminating
  58407.       task switcher's entry point as needed
  58408.     this call is available from within DOSSHELL even if the task switcher
  58409.       is not installed
  58410.     this call is supported by PC Tools v8+ CPTASK, but appears to return
  58411.       sucessfully no matter which ID is given
  58412. SeeAlso: AX=4B02h,AX=4B03h
  58413. --------T-2F4B05-----------------------------
  58414. INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
  58415.     AX = 4B05h
  58416.     ES:BX = 0000h:0000h
  58417.     CX:DX -> task switcher entry point (see #1433)
  58418. Return: ES:BX -> startup info structure (see #1436) or 0000h:0000h
  58419. Notes:    called by task switcher
  58420.     clients with instance data should hook this call, pass it through to
  58421.       the previous handler with unchanged registers using a simulated
  58422.       interrupt.  On return, the client should create a startup info
  58423.       structure (see #1436), store the returned ES:BX in the "next"
  58424.       field, and return the address of the created structure in ES:BX
  58425.     all MS-DOS function calls are available from within this call
  58426. SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
  58427.  
  58428. Format of task switcher startup info structure:
  58429. Offset    Size    Description    (Table 1436)
  58430.  00h  2 BYTEs    major, minor version of info structure (03h,00h)
  58431.  02h    DWORD    pointer to next startup info structure or 0000h:0000h
  58432.  06h    DWORD    0000h:0000h (ignored)
  58433.  0Ah    DWORD    ignored
  58434.  0Eh    DWORD    pointer to instance data records (see #1437)
  58435.  
  58436. Format of one instance data record in array:
  58437. Offset    Size    Description    (Table 1437)
  58438.  00h    DWORD    address of instance data (end of array if 0000h:0000h)
  58439.  04h    WORD    size of instance data
  58440. --------W-2F4B20-----------------------------
  58441. INT 2F - MS Windows 3 - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
  58442.     AX = 4B20h
  58443. Return: AX = 0000h if successful
  58444.         DX:CX -> 256-byte buffer for pathname and commandline (see #1438)
  58445. Note:    when the Windows function ExitWindows is called with an exit code of
  58446.       44h, WIN.COM executes the program specified in the returned buffer
  58447.       and then restarts Windows
  58448.  
  58449. Format of WIN.COM buffer:
  58450. Offset    Size    Description    (Table 1438)
  58451.  00h 128 BYTEs    ASCIZ pathname of program to execute
  58452.  80h 128 BYTEs    commandline for program
  58453. --------p-2F4C-------------------------------
  58454. INT 2F U - Advanced Power Management
  58455.     AH = 4Ch
  58456.     AL = function
  58457.         00h version check
  58458.         01h suspend system requested
  58459.         FFh suspend/resume battery notification
  58460.     ???
  58461. Return: ???
  58462. ----------2F4D-------------------------------
  58463. INT 2F U - ???
  58464.     AH = 4Dh
  58465.     ???
  58466. Return: ???
  58467. Note:    reportedly called by Kana Kanji Converter and MSKK
  58468. --------N-2F4E53BL00-------------------------
  58469. INT 2F - SilverNET v2+ - INSTALLATION CHECK
  58470.     AX = 4E53h ("NS")
  58471.     BL = 00h (function "installation check")
  58472.     BH = module ID (see #1439)
  58473. Return: AX = 0000h if specified module installed
  58474.     BX = 4E53h if installed
  58475. Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
  58476.       Windows systems, by Net-Source, Inc. of Santa Clara, CA.
  58477. SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
  58478.  
  58479. (Table 1439)
  58480. Values for SilverNET module ID:
  58481.  01h    SilverCACHE
  58482.  02h    Workstation
  58483.  03h    NetBIOS
  58484.  04h    Peer
  58485.  20h    NS Share
  58486.  80h    NetWare help TSR
  58487. --------N-2F4E53BL01-------------------------
  58488. INT 2F - SilverNET - GET RUNTIME PARAMETER
  58489.     AX = 4E53h ("NS")
  58490.     BL = 01h (function "get runtime parameter")
  58491.     BH = module ID (see #1439)
  58492.     CX = parameter index (see #1440,#1442,#1443)
  58493. Return: AX = WORD value at specified index (see #1441)
  58494. Desc:    retrieve a word of data from the specified SilverNET module
  58495.  
  58496. (Table 1440)
  58497. Values for SilverNET Peer parameter index (* = read-only):
  58498.  00h *    maximum outstanding SMB buffers
  58499.  02h *    maximum logged-in nodes
  58500.  04h *    number of shareable resources
  58501.  06h *    number of characters to print per time slice
  58502.  08h *    number of printers that can be shared
  58503.  0Ah *    number of nodes logged in
  58504.  0Ch *    number of files to allow opened
  58505.  0Eh    how fast to despool (/PSLICE)
  58506.  10h    audit flag
  58507.  24h *    far pointer to resource table (each resource is 96 bytes in length)
  58508.  32h *    far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
  58509.     else DOS SFT)
  58510.  36h    spool flags (see #1441)
  58511.  
  58512. Bitfields for spool flags:
  58513. Bit(s)    Description    (Table 1441)
  58514.  0    LPT1 needs despooling
  58515.  1    LPT2 needs despooling
  58516.  2    LPT2 needs despooling
  58517.  4    COM1 needs despooling
  58518.  5    COM2 needs despooling
  58519.  6    COM3 needs despooling
  58520.  
  58521. (Table 1442)
  58522. Values for NS Share parameter index (* = read-only):
  58523.  00h    version number (high byte = minor, low byte = major)
  58524.  10h *    segment of first lock record (other records in consecutive paragraphs)
  58525.     (if PSP field = 0000h, lock record is free)
  58526.  12h *    maximum possible number of lock records
  58527.  14h *    starting segment of sharing buffer
  58528.     (NS Share's sharing records are identical to DOS SHARE except that
  58529.       fields which are normally offsets into SHARE are segment numbers)
  58530.  18h *    size of sharing buffer in paragraphs
  58531.  1Ah *    total free paragraphs in sharing buffer
  58532.  1Ch *    current number of shared files
  58533.  1Eh *    current number of locked records
  58534.  
  58535. (Table 1443)
  58536. Values for Workstation parameter index (* = read-only):
  58537.  00h    version number (high byte = minor, low byte = major)
  58538.  02h *    size of each network buffer for file operations
  58539.  04h *    number of redirector file buffers
  58540.  06h *    size of each print cache buffer
  58541.  08h *    number of network LPT printers
  58542.  0Ch    flush time in ticks (idle time on network printer before flushing)
  58543.  0Eh    (16 WORDs) last active time for each printer
  58544.  2Eh *    stub segment if program split into two parts
  58545.  60h    receive name number for datagram listens
  58546.  62h *    18-byte machine name
  58547.  74h *    LASTDRIVE (01h = A:, etc.)
  58548.  7Ch    row number of message box on screen
  58549.  7Eh    message time in clock ticks
  58550.  82h *    number of network adapters in use
  58551.  84h    station ID broadcast flag (never set on redirectors)
  58552.  96h *    NetBIOS names left
  58553.  98h *    NCBs left
  58554.  9Ah *    sessions left
  58555.  A2h *    total number of network printers (LPT+COM)
  58556.  A4h *    number of serial network printers
  58557.  A8h *    segment containing file cache buffers
  58558.  AAh *    segment containing print cache buffers
  58559.  ACh *    bytes remaining free in HMA before program loaded
  58560.  AEh *    start of free memory in HMA
  58561.  B2h *    flag: using HMA
  58562. --------N-2F4E53BL02-------------------------
  58563. INT 2F - SilverNET - SET RUNTIME PARAMETERS
  58564.     AX = 4E53h ("NS")
  58565.     BL = 02h (function "set runtime parameters")
  58566.     BH = module ID (see #1439)
  58567.     CX = parameter index (see #1442,#1443)
  58568.     DX = new value for specified parameter
  58569. Desc:    set a WORD value in the specified SilverNET module
  58570. Note:    not all indexed parameters are writable; modifying a read-only
  58571.       parameter can result in system crashes
  58572. SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
  58573. --------N-2F5100-----------------------------
  58574. INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
  58575.     AX = 5100h
  58576. Return: AL = FFh if installed
  58577.         BX = 0000h
  58578.         DX:SI -> signature string "ODI$HLP$"
  58579. Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
  58580.       protected-mode NDIS3 protocol to work with real-mode ODI drivers
  58581.       and LSL.COM
  58582. Note:    the returned signature string might be the first field of a structure
  58583. SeeAlso: AX=C000h"LSL.COM"
  58584. --------k-2F5200-----------------------------
  58585. INT 2F - JAM.SYS v1.10 - "GetVersion" - INSTALLATION CHECK
  58586.     AX = 5200h
  58587. Return: AH = 80h (successful)
  58588.     BX = internal JAM.SYS version number
  58589.     CX = size of JAMINFO structure (see #1444)
  58590.     DX = JAM.SYS segment address
  58591. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  58592.       Utilities by George A. Reznik and friends (JAM Software).
  58593. SeeAlso: AX=5201h
  58594.  
  58595. Format of JAMINFO structure:
  58596. Offset    Size    Description    (Table 1444)
  58597.  00h 25 BYTEs    extended BIOS parameter block (BPB)
  58598.  25h    DWORD    total number of sectors in JAM archive file
  58599.         (size of compressed data area)
  58600.  29h    BYTE    flags
  58601.         bit 7: full undelete-compatible allocation strategy
  58602.         bit 6: no write-behind caching
  58603.         bit 5: read-only mode
  58604.         bit 4: enable direct write requests
  58605.                (Int 26h, non-DOS requests, etc.)
  58606.         bits 3..0 are reserved for internal use
  58607.  2Ah 127 BYTEs    full JAM archive file name
  58608.  A9h    WORD    the number of fragments in archive file
  58609.  ABh 96 BYTEs    archive file fragmentation list -
  58610.         array of 16 FRAGMENT structures:
  58611.         Offset    Size    Description
  58612.          00h    WORD    starting sector (low word)
  58613.          02h    BYTE    starting sector (high byte)
  58614.          03h    WORD    size of fragment (low word)
  58615.          05h    BYTE    size of fragment (high byte)
  58616. 10Bh    DWORD    address of the host-drive DPB (Drive Parameter Block)
  58617. 10Fh    DWORD    number of free sectors in JAM archive file
  58618. 113h    WORD    device status word (see #1445)
  58619.  
  58620. (Table 1445)
  58621. Values for JAM.SYS status (high byte):
  58622.  00h    successful
  58623.  01h    drive is not a JAM drive
  58624.  02h    drive is already attached
  58625.  03h    archive file cluster size value is larger than driver's one
  58626.  04h    drive is not attached
  58627.  05h    drive is locked
  58628.  06h    drive is not locked
  58629.  07h    bad physical-level request
  58630.  08h    host drive reading/writing error
  58631.  09h    bad entries in JAM descriptor table
  58632.  0Ah    compressed data integrity error
  58633.  0Bh    archive file overflow
  58634.  0Ch    bad DOS request
  58635.  0Dh    incorrect parameters in JAMINFO structure
  58636. Note:    the low byte of the status is the DOS error code for the Host drive
  58637. SeeAlso: #1290 at INT 2F/AX=0802h
  58638. --------k-2F5201-----------------------------
  58639. INT 2F - JAM.SYS v1.10 - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
  58640.     AX = 5201h
  58641.     DL = compressed drive number (0-default, 1-A:, etc.)
  58642.     DS:BX -> buffer for JAMINFO structure (see #1444)
  58643. Return: AH = status (00h,01h) (see #1445)
  58644. SeeAlso: AX=5200h
  58645. --------k-2F52-------------------------------
  58646. INT 2F - JAM.SYS v1.10 - "Attach" - MOUNT COMPRESSED DRIVE
  58647.     AH = 52h
  58648.     AL = 02h
  58649.     DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
  58650.           archive file
  58651.     DS:BX -> pointer to JAMINFO structure (see #1444), which
  58652.           contains parameters of the JAM file to mount, and pointer
  58653.           to the host drive DPB (i.e. DPB of the drive on which the
  58654.           JAM file is located)
  58655. Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #1445)
  58656.         03h archive file cluster size value is larger than driver's - not
  58657.           mounted
  58658.         09h bad entries in JAM descriptor table - file mounted read-only
  58659.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58660. SeeAlso: AX=5203h
  58661. --------k-2F5203-----------------------------
  58662. INT 2F - JAM.SYS v1.10 - "Detach" - UNMOUNT COMPRESSED DRIVE
  58663.     AX = 5203h
  58664.     DL = drive number (0-default, 1-A:, etc.) to detach
  58665. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #1445)
  58666.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58667. SeeAlso: AX=5202h
  58668. --------k-2F5204-----------------------------
  58669. INT 2F - JAM.SYS v1.10 - "Lock" - LOCK COMPRESSED DRIVE
  58670.     AX = 5204h
  58671.     DL = drive number (0-default, 1-A:, etc.) to lock
  58672. Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #1445)
  58673.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58674. SeeAlso: AX=5205h, AX=5206h, AX=5207h
  58675. --------k-2F5205-----------------------------
  58676. INT 2F - JAM.SYS v1.10 - "UnLock" - UNLOCK COMPRESSED DRIVE
  58677.     AX = 5205h
  58678.     DL = drive number (0-default, 1-A:, etc.) to unlock
  58679. Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #1445)
  58680.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58681. SeeAlso: AX=5204h, AX=5206h, AX=5207h
  58682. Note:    Lock and UnLock functions were added to the JAM API to prevent
  58683.       asynchronous physical-level access (see AX=5206h,AX=5207h) to
  58684.       compressed data on JAM drives. In other words, two or more programs
  58685.       which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
  58686.       cannot be run on the same JAM drive simultaneously.
  58687. --------k-2F5206-----------------------------
  58688. INT 2F - JAM.SYS v1.10 - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
  58689.     AX = 5206h
  58690.     DL = drive number (0-default, 1-A:, etc.)
  58691.     DS:BX -> disk transfer packet (see #1446)
  58692. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #1445)
  58693.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58694. Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
  58695.       Utilities by George A. Reznik and friends (JAM Software).
  58696. SeeAlso: AX=5207h
  58697.  
  58698. Format of disk transfer packet:
  58699. Offset    Size    Description    (Table 1446)
  58700.  00h    DWORD    sector number
  58701.  04h    WORD    number of sectors to read(write)
  58702.  06h    DWORD    transfer address
  58703. --------k-2F5207-----------------------------
  58704. INT 2F - JAM.SYS v1.10 - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
  58705.     AX = 5207h
  58706.     DL = drive number (0-default, 1-A:, etc.)
  58707.     DS:BX -> disk transfer packet (see #1446)
  58708. Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #1445)
  58709.     AL = host drive error code (see #1290 at INT 2F/AX=0802h)
  58710. SeeAlso: AX=5206h
  58711. --------p-2F53-------------------------------
  58712. INT 2F U - POWER.EXE - APM event broadcasting???
  58713.     AH = 53h
  58714.     AL = event???
  58715.         05h CPU idle
  58716.         0Bh PM event broadcast API
  58717. Return: ???
  58718. Note:    called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
  58719.       and PC-Cache v8.0
  58720. SeeAlso: AX=530Bh,AH=54h,INT 33/AX=002Fh
  58721. --------p-2F530B-----------------------------
  58722. INT 2F U - ??? (MOUSEPWR.COM, others) - ???
  58723.     AX = 530Bh
  58724.     BX = subfunction
  58725.         0003h ???
  58726.         0004h ???
  58727.     ???
  58728. Return: ???
  58729. Note:    it appears that subfunction 0003h reads or restores the current mouse
  58730.       settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
  58731.       the converse
  58732. --------p-2F5400-----------------------------
  58733. INT 2F U - POWER.EXE - INSTALLATION CHECK
  58734.     AX = 5400h
  58735. Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
  58736.     BX = 504Dh ("PM")
  58737.     CF clear
  58738. Note:    called by MS Windows 3.1 POWER.DRV
  58739. SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
  58740. --------p-2F5401-----------------------------
  58741. INT 2F U - POWER.EXE - GET/SET POWER STATUS
  58742.     AX = 5401h
  58743.     BH = function
  58744.         00h get status
  58745.         Return: BL = current power management status (see #1447)
  58746.         01h set status
  58747.         BL = new power managment status (see #1447)
  58748. Return: AX = function status (see #1448)
  58749. Note:    called by MS Windows 3.1 POWER.DRV
  58750. SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
  58751.  
  58752. Bitfields for power management status:
  58753. Bit(s)    Description    (Table 1447)
  58754.  0    POWER.EXE power management enabled
  58755.  1    APM firmware power management enabled
  58756.  2-7    reserved (0)
  58757. Notes:    bit 1 is ignored if there is no APM firmware
  58758.     bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
  58759.  
  58760. (Table 1448)
  58761. Values for POWER.EXE function status:
  58762.  0000h    successful
  58763.  0002h    "ERROR_PM_ALREADY_CONNECTED"
  58764.  0003h    "ERROR_PM_NOT_CONNECTED"
  58765.  0087h    "ERROR_PM_INVALID_PARAMETER"
  58766. --------p-2F5402-----------------------------
  58767. INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
  58768.     AX = 5402h
  58769.     BH = subfunction
  58770.         00h get
  58771.         other set
  58772.         BL = detection strategy (00h-0Fh or FFh)
  58773. Return: BX = current/new detection strategy
  58774. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
  58775. --------p-2F5403-----------------------------
  58776. INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
  58777.     AX = 5403h
  58778.     BX = new power management setting or 0000h to get current setting
  58779. Return: AX = status
  58780.         0000h successful
  58781.         BX = power management setting (see #1449)
  58782.         other error code
  58783. SeeAlso: AX=5401h,AX=5480h
  58784.  
  58785. (Table 1449)
  58786. Values for power management setting:
  58787.  0001h-0005h "min"
  58788.  0006h         "reg"
  58789.  0007h-0008h "max"
  58790. --------t-2F5453-----------------------------
  58791. INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
  58792.     AX = 5453h
  58793.     BX = subfunction
  58794.         00h installation check
  58795.         CX = 0000h
  58796.         DS:SI -> 8-char blank-padded name
  58797.         Return: AX = FFFFh installed
  58798.                 CX = ID number of already-installed copy
  58799.             AX = anything else, not installed
  58800.                 CX = ID number for TSR when installed
  58801.         01h get user parameters
  58802.         CX = TSR ID number
  58803.         Return: AX = status
  58804.                 0000h successful
  58805.                 ES:BX -> user parameter block (see #1450)
  58806.                 nonzero failed
  58807.         02h check if hotkey in use
  58808.         CL = scan code of hot key
  58809.         Return: AX = FFFFh hot key conflicts with another TSR
  58810.                  otherwise safe to use the hotkey
  58811.         03h replace default critical error handler
  58812.         CX = TSR ID number
  58813.         DS:SI -> new routine for INT 24h
  58814.         Return: AX = nonzero, unable to install new handler
  58815.         04h get internal data area
  58816.         CX = TSR ID number
  58817.         Return: AX = status
  58818.                 0000h successful
  58819.                 ES:BX -> TSR's internal data area (see #1452)
  58820.                 nonzero, TSR not found
  58821.         05h set multiple hot keys
  58822.         CX = TSR ID number
  58823.         DL = number of additional hot keys to allocate
  58824.         DS:SI -> table of hot keys
  58825.             BYTE  hotkey scan code
  58826.             BYTE  hotkey shift state
  58827.             BYTE  flag value to pass to TSR (nonzero)
  58828.         Return: AX = nonzero, unable to install hot keys
  58829.         06h - 0Fh reserved
  58830.         10h enable TSR
  58831.         CX = TSR ID number
  58832.         Return: AX = nonzero, unable to enable
  58833.         11h disable TSR
  58834.         CX = TSR ID number
  58835.         Return: AX = nonzero, unable to disable
  58836.         12h unload TSR
  58837.         CX = TSR ID number
  58838.         Return: AX = nonzero, invalid TSR number
  58839.         Note: if any interrupts used by TSR have been grabbed by
  58840.             another TSR, the TesSeRact routines will wait until
  58841.             it is safe to remove the indicated TSR from memory
  58842.         13h restart TSR
  58843.         CX = TSR ID number of TSR which was unloaded but is still in
  58844.              memory
  58845.         Return: AX = nonzero, unable to restart TSR
  58846.         14h get status word
  58847.         CX = TSR ID number
  58848.         Return: AX = FFFFh invalid ID number
  58849.                = other, successful
  58850.                 BX = bit flags
  58851.         15h set status word
  58852.         CX = TSR ID number
  58853.         DX = new bit flags
  58854.         Return: AX = nonzero, unable to set status word
  58855.         16h get INDOS state at popup
  58856.         CX = TSR ID number
  58857.         Return: AX = 0000h successful
  58858.                 BX = value of INDOS flag
  58859.         17h - 1Fh reserved
  58860.         20h call user procedure
  58861.         CX = TSR ID number
  58862.         ES:DI -> user-defined data
  58863.         Return: AX = 0000h successful
  58864.         21h stuff keystrokes into keyboard buffer
  58865.         CX = TSR ID number
  58866.         DL = speed
  58867.             00h stuff keystrokes only when buffer is empty
  58868.             01h stuff up to four keystrokes per clock tick
  58869.             02h stuff up to 15 keystrokes per clock tick
  58870.         DH = scan code flag
  58871.             if zero, buffer contains alternating ASCII and scan codes
  58872.             if nonzero, buffer contains only ASCII codes
  58873.         SI = number of keystrokes
  58874.         ES:DI -> buffer to stuff
  58875.         Return: AX = 0000h success
  58876.                  F0F0h user aborted with ^C or ^Break
  58877.                  other unable to stuff keystrokes
  58878.         22h (v1.10) trigger popup
  58879.         CX = TSR ID number
  58880.         Return: AX = 0000h success, TSR will either pop up or beep to
  58881.                    indicate that it is unable to pop up
  58882.                  nonzero invalid ID number
  58883.         23h (v1.10) invoke TSR's background function
  58884.         CX = TSR ID number
  58885.         Return: AX = 0000h success
  58886.                  FFFFh not safe to call background function
  58887.                  nonzero invalid ID number
  58888.         24h - 2Fh reserved
  58889. Notes:    Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
  58890.       (versions 1.x and 2.x only) fully supports the TesSeRact API, as
  58891.       do the SWAP?? programs by Innovative Data Concepts.
  58892.     AVATAR.SYS supports functions 00h and 01h (only the first three fields
  58893.       of the user parameter block) using the name "AVATAR  "
  58894. SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
  58895. Index:    installation check;TesSeRact TSR interface|uninstall;TesSeRact
  58896.  
  58897. (Table 1450)
  58898. Values for TesSeRact names:
  58899.  "AVATAR  "    AVATAR.SYS
  58900.  "QeditTSR"    TSR version of SemWare's Qedit editor
  58901.  "SCRNBLNK"    Trusted Access screen blanker
  58902.  
  58903. Format of TesSeRact User Parameter Block:
  58904. Offset    Size    Description    (Table 1451)
  58905.  00h  8 BYTEs    blank-padded TSR name
  58906.  08h    WORD    TSR ID number
  58907.  0Ah    DWORD    bitmap of supported functions
  58908.  0Eh    BYTE    scan code of primary hotkey
  58909.         00h = pop up when shift states match
  58910.         FFh = no popup (if shift state also FFh)
  58911.  0Fh    BYTE    shift state of primary hotkey
  58912.         FFh = no popup (if scan code also FFh)
  58913.  10h    BYTE    number of secondary hotkeys
  58914.  11h    DWORD    pointer to extra hotkeys set by func 05h
  58915.  15h    WORD    current TSR status flags
  58916.  17h    WORD    PSP segment of TSR
  58917.  19h    DWORD    DTA for TSR
  58918.  1Dh    WORD    default DS for TSR
  58919.  1Fh    DWORD    stack at popup
  58920.  23h    DWORD    stack at background invocation
  58921. Index:    hotkeys;TesSeRact TSR interface
  58922.  
  58923. Format of TSR internal data area:
  58924. Offset    Size    Description    (Table 1452)
  58925.  00h    BYTE    revision level of TesSeRact library
  58926.  01h    BYTE    type of popup in effect
  58927.  02h    BYTE    INT 08 occurred since last invocation
  58928.  03h    BYTE    INT 13 occurred since last invocation
  58929.  04h    BYTE    active interrupts
  58930.  05h    BYTE    active soft interrupts
  58931.  06h    BYTE    DOS major version
  58932.  07h    BYTE    how long to wait before popping up
  58933.  08h    DWORD    pointer to INDOS flag
  58934.  0CH    DWORD    pointer to DOS critical error flag
  58935.  10h    WORD    PSP segment of interrupted program
  58936.  12h    WORD    PSP segment of prog interrupted by INT 28
  58937.  14h    DWORD    DTA of interrupted program
  58938.  18h    DWORD    DTA of program interrupted by INT 28
  58939.  1Ch    WORD    SS of interrupted program
  58940.  1Eh    WORD    SP of interrupted program
  58941.  20h    WORD    SS of program interrupted by INT 28
  58942.  22h    WORD    SP of program interrupted by INT 28
  58943.  24h    DWORD    INT 24 of interrupted program
  58944.  28h  3 WORDs    DOS 3+ extended error info
  58945.  2Eh    BYTE    old BREAK setting
  58946.  2Fh    BYTE    old VERIFY setting
  58947.  30h    BYTE    were running MS WORD 4.0 before popup
  58948.  31h    BYTE    MS WORD 4.0 special popup flag
  58949.  32h    BYTE    enhanced keyboard call in use
  58950.  33h    BYTE    delay for MS WORD 4.0
  58951. 11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
  58952.     DWORD    old interrupt vector
  58953.     BYTE    interrupt number
  58954.     WORD    offset in TesSeRact code segment of new interrupt handler
  58955. --------p-2F5480-----------------------------
  58956. INT 2F U - POWER.EXE - GET/SET ???
  58957.     AX = 5480h
  58958.     BX = direction
  58959.         0000h get
  58960.         other set
  58961.     CX = size of buffer (at least 0010h)
  58962.     DS:SI -> buffer
  58963. Return: AX = status
  58964.         0000h successful
  58965.         other error code
  58966. SeeAlso: AX=5400h,AX=5481h,AX=548Fh
  58967. --------p-2F5481-----------------------------
  58968. INT 2F U - POWER.EXE - GET STATISTICS
  58969.     AX = 5481h
  58970.     BX = which statistics
  58971.         0000h idle detection
  58972.         0001h APM statistics
  58973.     CX = length of buffer in bytes
  58974.     DS:SI -> buffer for statistics (see #1453,#1454)
  58975. Return: AX = status
  58976.         0000h successful
  58977.         0071h "ERROR_PM_BUFFER_TOO_SMALL"
  58978.         0087h "ERROR_PM_INVALID_PARAMETER"
  58979. SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
  58980.  
  58981. Format of POWER.EXE idle detection statistics:
  58982. Offset    Size    Description    (Table 1453)
  58983.  00h    DWORD    "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
  58984.           detection enabled, in timer ticks
  58985.  04h    DWORD    "CPU_IDLE_TIME" timer ticks during which CPU was idle
  58986.         (divide by previous to get idle    rate)
  58987.  08h    DWORD    total idle calls
  58988.  0Ch    DWORD    "TOTAL_APP_IDLE" total INT 2Fh idle calls
  58989.  10h    DWORD    "TOTAL_DOS_YIELD" total INT 28h idle calls
  58990.  14h    DWORD    "TOTAL_KEY_IDLE" total INT 16h idle calls
  58991.  18h    DWORD    "TOTAL_DOS_IDLE" total INT 2Ah idle calls
  58992.  
  58993. Format of APM statistics:
  58994. Offset    Size    Description    (Table 1454)
  58995.  00h    DWORD    "RESUME_COUNT" total number of resumes since last APM_ENABLE
  58996. --------p-2F5482-----------------------------
  58997. INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
  58998.     AX = 5482h
  58999.     BX = new polling frequency or 0000h to get current frequency
  59000. Return: AX = 0000h (successful)
  59001.     BX = current frequency if BX=0000h on entry
  59002. SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
  59003. --------p-2F548F-----------------------------
  59004. INT 2F U - POWER.EXE - GET/SET ???
  59005.     AX = 548Fh
  59006.     BX = ??? or 0000h to get current ???
  59007. Return: AX = 0000h (successful)
  59008.     BX = current ???
  59009.     CX = ???
  59010. SeeAlso: AX=5400h,AX=5480h,AX=5482h
  59011. --------l-2F5500-----------------------------
  59012. INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
  59013.     AX = 5500h
  59014. Return: AX = 0000h if an instance of COMMAND.COM is already running
  59015.     DS:SI -> entry point table
  59016. Notes:    used to access the shareable portion of COMMAND.COM, which may have
  59017.       been moved into the HMA; only the primary COMMAND.COM retains this
  59018.       portion
  59019.     procedures called from a dispatcher in COMMAND's resident portion;
  59020.       most assume that the segment address of the resident portion is on
  59021.       the stack and are thus not of general use
  59022. SeeAlso: AX=5501h
  59023. --------l-2F5501-----------------------------
  59024. INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
  59025.     AX = 5501h
  59026. Return: ???
  59027. Note:    used to determine whether the caller is the first instance of ROM
  59028.       COMMAND.COM
  59029. SeeAlso: AX=5500h
  59030. --------R-2F5600DXFFFF-----------------------
  59031. INT 2F - INTERLNK - INSTALLATION CHECK
  59032.     AX = 5600h
  59033.     DX = FFFFh
  59034.     BL = instance number (00h = any, 01h = first loaded, etc.)
  59035. Return: AL = FFh if installed
  59036.         BL = instance number
  59037.         CX = ???
  59038.         DX = resident CS
  59039. SeeAlso: AX=5601h,AX=5602h
  59040. --------R-2F5601DXFFFF-----------------------
  59041. INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
  59042.     AX = 5601h
  59043.     DX = FFFFh
  59044.     BH = drive number (0=A:)
  59045.     BL = 00h
  59046. Return: (as for AL=00h if redirected drive)
  59047. SeeAlso: AX=5600h
  59048. --------R-2F5602DXFFFF-----------------------
  59049. INT 2F - INTERLNK - GET ???
  59050.     AX = 5602h
  59051.     DX = FFFFh
  59052. Return: CX = ???
  59053. SeeAlso: AX=5600h
  59054. ----------2F57-------------------------------
  59055. INT 2F U - ???
  59056.     AH = 57h
  59057.     ???
  59058. Return: ???
  59059. Note:    reportedly used by Iomega Corp.
  59060. --------c-2F5758BX4858-----------------------
  59061. INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
  59062.     AX = 5758h
  59063.     BX = 4858h ('HX')
  59064.     DX = 4443h ('DC')
  59065.     CX <> 5758h
  59066. Return: BX = 6878h if installed
  59067.     DX = 6463h if installed
  59068.        CX = version (CH=major,CL=minor)
  59069. Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
  59070. Note:    returns with registers unchanged if CX=5758h on entry
  59071. SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
  59072. --------X-2F5D00-----------------------------
  59073. INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
  59074.     AX = 5D00h
  59075. Return: ES:BX -> ???
  59076. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  59077. SeeAlso: AX=5D01h,INT 21/AX=440Dh
  59078. --------X-2F5D01-----------------------------
  59079. INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
  59080.     AX = 5D01h
  59081.     ES:BX -> ???
  59082. Return: nothing
  59083. Note:    supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
  59084. SeeAlso: AX=5D00h,INT 21/AX=440Dh
  59085. --------s-2F60FFDL00-------------------------
  59086. INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
  59087.     AX = 60FFh
  59088.     DL = 00h (function number)
  59089.     BX = 5344h ('SD')
  59090.     CX = 4D50h ('MP')
  59091. Return: AX = 4F4Bh ('OK') if installed
  59092. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  59093.       (digitized music files)
  59094. Note:    in version 1.00b, any value for DL except 01h invokes this function
  59095. SeeAlso: AX=60FFh/DL=01h
  59096. --------s-2F60FFDL01-------------------------
  59097. INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
  59098.     AX = 60FFh
  59099.     DL = 01h (function number)
  59100.     BX = 5344h ('SD')
  59101.     CX = 4D50h ('MP')
  59102. Return: AX = data segment
  59103. Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
  59104.       (digitized music files)
  59105. SeeAlso: AX=60FFh/DL=00h
  59106. --------v-2F6282-----------------------------
  59107. INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
  59108.     AX = 6282h
  59109.     CX:DX -> ??? or 0000h:0000h
  59110.     DI = segment of ??? record (see #1455) or 0000h/FFFFh to ignore
  59111. Return: BX = 0062h
  59112. Note:    if CX:DX = 0000h:0000h on entry, the ??? address is not changed
  59113.       (DATAMON only)
  59114. SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
  59115.  
  59116. Format of VSAFE/VWATCH record:
  59117. Offset    Size    Description    (Table 1455)
  59118.  00h    DWORD    ???
  59119.  04h    WORD    offset of ??? in record's segment
  59120.         VSAFE 2.0 sets byte at +01h to 56h or 58h
  59121.         VWATCH 2.1 sets byte at +02h to 56h or 58h
  59122.  06h  2 BYTEs    ???
  59123.  08h    BYTE    ??? (01h/other)
  59124. --------v-2F6284BX0000-----------------------
  59125. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT    - INSTALLATION CHECK
  59126.     AX = 6284h
  59127.     BX = 0000h
  59128.     CX = 0000h
  59129. Return: AX = segment of resident code
  59130.     BX = 5555h
  59131.     CX = 5555h
  59132. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  59133. SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h
  59134. --------v-2F6284BX0001-----------------------
  59135. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  59136.     AX = 6284h
  59137.     BX = 0001h
  59138.     CX = 0001h
  59139. Return: AX:BX -> ??? data (see #1456)
  59140.     CX = BX
  59141. SeeAlso: AX=6284h/BX=0000h
  59142.  
  59143. Format of DPROTECT data for v9.0:
  59144. Offset    Size    Description    (Table 1456)
  59145.  00h  5 BYTEs    ???
  59146.  05h    WORD    resident code segment (may be segment of DWORD at +03h)
  59147.  07h    DWORD    -> FAR function to sound alert tone
  59148.     ???
  59149. --------v-2F6284BX0002-----------------------
  59150. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
  59151.     AX = 6284h
  59152.     BX = 0002h
  59153.     CX = 0002h
  59154. Return: AX = options (see #1457)
  59155.     BX = ??? (0000h for v9)
  59156.     CX = AX
  59157.     DX = BX
  59158. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  59159. SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
  59160.  
  59161. Bitfields for DATAMON/DPROTECT options:
  59162. Bit(s)    Description    (Table 1457)
  59163.  1    ???
  59164.  12    disabled
  59165.  13    using Delete Sentry
  59166.  14    using Delete Tracker
  59167. --------v-2F6284BX0003-----------------------
  59168. INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
  59169.     AX = 6284h
  59170.     BX = 0003h
  59171.     CX = flags (see #1458)
  59172.     DX = flags
  59173.         bit 15: ???
  59174. Note:    v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
  59175. SeeAlso: AX=6284h/BX=0002h
  59176.  
  59177. Bitfields for DATAMON/DPROTECT CX flags:
  59178. Bit(s)    Description    (Table 1458)
  59179.  3    ???
  59180.  5    ???
  59181.  10    ???
  59182.  12    disable DATAMON/DPROTECT
  59183. --------v-2F6284BX0004-----------------------
  59184. INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
  59185.     AX = 6284h
  59186.     BX = 0004h
  59187.     CX = 0004h
  59188. Return: AX = 5555h
  59189.     BX = ??? (0800h)
  59190.     CX = ??? (FCCCh for v8, FCCBh for v9)
  59191. --------V-2F6400-----------------------------
  59192. INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
  59193.     AX = 6400h
  59194. Return: AL = installation state
  59195.         00h not installed
  59196.         FFh installed
  59197. Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
  59198. SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
  59199. Index:    screen saver;SCRNSAV2
  59200. --------N-2F7000-----------------------------
  59201. INT 2F - License Service API - INSTALLATION CHECK
  59202.     AX = 7000h
  59203.     CX = license server index (0000h to 001Fh)
  59204. Return: AL = status
  59205.         00h not installed
  59206.         FFh installed
  59207. Notes:    The License Service API is being maintained by Microsoft but is being
  59208.       supported by a large number of companies including Apple, Banyan,
  59209.       DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
  59210.       and Wordperfect (not a complete list!)
  59211.     Each license service provider must search for the next free index
  59212.       slot to use
  59213. SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
  59214. --------N-2F7001-----------------------------
  59215. INT 2F - License Service API - REQUEST LICENSE
  59216.     AX = 7001h
  59217.     CX = license server index (0000h to 001Fh)
  59218.     DS:DX -> SLSREQUEST structure (see #1459)
  59219. Return: AX = status
  59220.         0000h success
  59221.         else  provider error code
  59222.     ES:BX = provider specific handle for the license context
  59223. SeeAlso: AX=7002h,AX=7004h,AX=7005h
  59224.  
  59225. Format of License Service SLSREQUEST structure:
  59226. Offset    Size    Description    (Table 1459)
  59227.  00h    DWORD    (return) status code
  59228.  04h    DWORD    (return) handle identifying context
  59229.  08h    DWORD    (call) address of Publisher string
  59230.  0Ch    DWORD    (call) address of Product string
  59231.  10h    DWORD    (call) address of Version string
  59232.  14h    DWORD    units required
  59233.  18h    DWORD    address of comment string
  59234.  1Ch    DWORD    address of SLSCHALLENGE structure (see #1460)
  59235.  
  59236. Format of License Service SLSCHALLENGE structure:
  59237. Offset    Size    Description    (Table 1460)
  59238.  00h    DWORD    algorithm (currently always 1)
  59239.  04h    DWORD    secret to be challenged (1-255)
  59240.  08h    DWORD    size of challenge in bytes (1-255)
  59241.  0Ch  N BYTEs    challenge data
  59242. --------N-2F7002-----------------------------
  59243. INT 2F - License Service API - RELEASE LICENSE
  59244.     AX = 7002h
  59245.     CX = license server index (0000h to 001Fh)
  59246.     DS:DX -> SLSRELEASE structure (see #1461)
  59247.     ES:BX = provider specific handle for the license context
  59248. Return: AL = status
  59249.         00h not installed
  59250.         FFh installed
  59251. SeeAlso: AX=7001h,AX=7005h
  59252.  
  59253. Format of License Service SLSRELEASE structure:
  59254. Offset    Size    Description    (Table 1461)
  59255.  00h    DWORD    handle indentifying license context
  59256.  04h    DWORD    total units consumed
  59257.  08h    DWORD    address of comment string
  59258. --------N-2F7003-----------------------------
  59259. INT 2F - License Service API - UPDATE
  59260.     AX = 7003h
  59261.     CX = license server index (0000h to 001Fh)
  59262.     DS:DX -> SLSUPDATE structure (see #1462)
  59263.     ES:BX = provider specific handle for the license context
  59264. Return: AL = status
  59265.         00h not installed
  59266.         FFh installed
  59267. SeeAlso: AX=7004h,AX=7005h
  59268.  
  59269. Format of License Service SLSUPDATE structure:
  59270. Offset    Size    Description    (Table 1462)
  59271.  00h    DWORD    (return) status code
  59272.  04h    DWORD    (call) handle identifying license context
  59273.  08h    DWORD    (call) total units consumed
  59274.  0Ch    DWORD    additional units required
  59275.  10h    DWORD    address of comment string
  59276.  14h    DWORD    address of SLSCHALLENGE structure (see #1460)
  59277. --------N-2F7004-----------------------------
  59278. INT 2F - License Service API - GET ERROR
  59279.     AX = 7004h
  59280.     CX = license server index (0000h to 001Fh)
  59281.     DS:DX -> SLSGETERROR structure (see #1463)
  59282.     ES:BX = provider specific handle for the license context
  59283. Return: AL = status
  59284.         00h not installed
  59285.         FFh installed
  59286. SeeAlso: AX=7000h,AX=7001h
  59287.  
  59288. Format of License Service SLSGETERROR structure:
  59289. Offset    Size    Description    (Table 1463)
  59290.  00h    DWORD    (return) status code
  59291.  04h    DWORD    handle identifying license context
  59292.  08h    DWORD    error code
  59293.  0Ch    DWORD    buffer size in bytes
  59294.  10h  N BYTEs    data buffer
  59295. --------N-2F7005-----------------------------
  59296. INT 2F - License Service API - QUERY LICENSE
  59297.     AX = 7005h
  59298.     CX = license server index (0000h to 001Fh)
  59299.     DS:DX -> SLSQUERY structure (see #1464)
  59300.     ES:BX = provider specific handle for the license context
  59301. Return: AL = status
  59302.         00h not installed
  59303.         FFh installed
  59304. SeeAlso: AX=7001h,AX=7002h
  59305.  
  59306. Format of License Service SLSQUERY structure:
  59307. Offset    Size    Description    (Table 1464)
  59308.  00h    DWORD    (return) status code
  59309.  04h    DWORD    handle identifying license context
  59310.  08h    DWORD    information index
  59311.  0Ch    DWORD    buffer size in bytes
  59312.  10h  N BYTEs    data buffer
  59313. --------d-2F7200-----------------------------
  59314. INT 2F - SRDISK v1.30 - INSTALLATION CHECK
  59315.     AX = 7200h
  59316. Return: AL = FFh if installed
  59317.         ES = segment of device driver header (see #1465)
  59318. Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
  59319.  
  59320. Format of SRDISK device driver header:
  59321. Offset    Size    Description    (Table 1465)
  59322.  00h 10 BYTEs    same as standard device driver header (see INT 21/AH=52h)
  59323.  0Ah    BYTE    number of subunits (drives) supported by driver
  59324.  0Bh  3 BYTEs    signature "SRD"
  59325.  0Eh  4 BYTEs    memory type string (currently only "XMS ")
  59326.  12h  4 BYTEs    ASCII driver version string "N.NN"
  59327.  16h    BYTE    00h
  59328.  17h    BYTE    configuration format version (currently 00h)
  59329.  18h    WORD    offset of drive configuration data
  59330. --------N-2F7A00-----------------------------
  59331. INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
  59332.     AX = 7A00h
  59333. Return: AL = status
  59334.         00h not installed
  59335.         FFh installed
  59336.         ES:DI -> FAR entry point for routines accessed exclusively
  59337.               through INT 7A in NetWare versions through 2.0a.
  59338.               Call with same values as INT 7A
  59339.         ES:BX -> two bytes containing IPX major/minor version
  59340.             (IPXODI v2.12; BX unchanged by older IPX drivers)
  59341. SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"Novell"
  59342. --------N-2F7A10-----------------------------
  59343. INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
  59344.     AX = 7A10h
  59345. Return: DH = major TBMI version number
  59346.     DL = minor TBMI version number (01h for v1.1)
  59347.     CX = segment address of TBMI resident part
  59348.     BX = status word of TBMI (see #1466)
  59349. Note:    TBMI is the Task-Switched Buffer Manager Interface
  59350. SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
  59351.  
  59352. Bitfields for NetWare TBMI status word:
  59353. Bit(s)    Description    (Table 1466)
  59354.  0    INT2F intercepted by TBMI
  59355.  1    INT7A intercepted by TBMI
  59356.  2    INT64 intercepted by TBMI
  59357.  3-14    reserved or unused ???
  59358.  15    outstanding task ID was detected
  59359. --------N-2F7A11-----------------------------
  59360. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
  59361.     AX = 7A11h
  59362. Return: ES:BX -> old INT 2F handler
  59363.     DS:DX -> TBMI INT 2F handler
  59364. SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
  59365. --------N-2F7A12-----------------------------
  59366. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
  59367.     AX = 7A12h
  59368. Return: ES:BX -> old INT 64 handler
  59369.     DS:DX -> TBMI INT 64 handler
  59370. SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
  59371. --------N-2F7A13-----------------------------
  59372. INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
  59373.     AX = 7A13h
  59374. Return: ES:BX -> old INT 7A handler
  59375.     DS:DX -> TBMI INT 7A handler
  59376. SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
  59377. --------N-2F7A14-----------------------------
  59378. INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
  59379.     AX = 7A14h
  59380.     CX = statistic to retrieve
  59381.         0000h available diagnostic functions???
  59382.         Return: CX = maximum available function??? (000Ch for v2.0)
  59383.         0001h buffers in use
  59384.         Return: CX = TBMI buffers currently in use
  59385.         0002h maximum buffers used
  59386.         Return: CX = maximum number of buffers ever in use
  59387.         0003h unavailable buffers
  59388.         Return: CX = count of unavailable TBMI buffers
  59389.         0004h old interrupt usage
  59390.         Return: CX = TBMI accesses to intercepted old vectors INT 2F,
  59391.                   INT 64, and INT 7A
  59392.         0005h far call usage
  59393.         Return: CX = TBMI accesses to IPX/SPX far call handler (not
  59394.                   including internal accesses)
  59395.         0006h task buffering
  59396.         Return: CX = TBMI task buffering status (enabled/disabled or
  59397.                   disable/enable switch count???)
  59398.         0007h current task ID
  59399.         Return: CX = TBMI current task ID number (0000h if ???)
  59400.         0008h outstanding ID count
  59401.         Return: CX = number of outstanding TBMI IDs
  59402.         0009h configured ECBs
  59403.         Return: CX = number of TBMI Event Control Blocks configured
  59404.         000Ah configured data ECBs
  59405.         Return: CX = number of TBMI data ECBs configured
  59406.         000Bh configured sockets
  59407.         Return: CX = number of TBMI sockets configured (from NETCFG)
  59408.         000Ch current sockets
  59409.         Return: CX = number of TBMI sockets currently in use
  59410. Return: BX = maximum supported subfunction (000Ch)
  59411. SeeAlso: AX=7A10h
  59412. --------N-2F7A15-----------------------------
  59413. INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
  59414.     AX = 7A15h
  59415. Return: BX = new value of ???
  59416. Desc:    set ??? to its default value
  59417. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  59418. SeeAlso: AX=7A17h
  59419. --------N-2F7A16-----------------------------
  59420. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  59421.     AX = 7A16h
  59422.     CX = ???
  59423.     ???
  59424. Return: ???
  59425. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  59426. --------N-2F7A17-----------------------------
  59427. INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
  59428.     AX = 7A17h
  59429.     ???
  59430. Return: BX = old value of ???
  59431.     CX = new value of ???
  59432. Note:    this call is a NOP under TBMI v2.0 (TBMI2)
  59433. SeeAlso: AX=7A15h
  59434. --------N-2F7A18-----------------------------
  59435. INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
  59436.     AX = 7A18h
  59437. Return: AL = FFh if installed
  59438.         BX = configuration flags (see #1467)
  59439.         CX = resident code segment
  59440. SeeAlso: AX=7A10h
  59441.  
  59442. Bitfields for NetWare TASKID configuration flags:
  59443. Bit(s)    Description    (Table 1467)
  59444.  0    INT 2F hooked
  59445.  3    INT 08 hooked
  59446.  other    unused
  59447. --------N-2F7A19-----------------------------
  59448. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
  59449.     AX = 7A19h
  59450. Return: AL = FFh
  59451.     DS:DX -> TASKID INT 08 handler
  59452.     ES:BX -> original INT 08 handler
  59453. --------N-2F7A1A-----------------------------
  59454. INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
  59455.     AX = 7A1Ah
  59456. Return: AL = FFh
  59457.     DX:DX -> TASKID INT 2F handler
  59458.     ES:BX -> original INT 2F handler
  59459. SeeAlso: AX=7A11h,AX=7A19h
  59460. --------N-2F7A1B-----------------------------
  59461. INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
  59462.     AX = 7A1Bh
  59463.     CX = desired information
  59464.         0000h supported functions
  59465.         0001h TASKID ID number
  59466.         Return: CX = ID number
  59467.         0002h set-ID count
  59468.         Return: CX = ID set count
  59469. Return: AL = FFh
  59470.     BX = highest supported subfunction number (0002h)
  59471. SeeAlso: AX=7A14h,AX=7A18h
  59472. --------N-2F7A1C-----------------------------
  59473. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  59474.     AX = 7A1Ch
  59475.     BP = ???
  59476.     CX:DX = ???
  59477. Return: AX = 70FFh
  59478. --------N-2F7A1D-----------------------------
  59479. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  59480.     AX = 7A1Dh
  59481.     ???
  59482. Return: ES = ???
  59483.     ???
  59484.     SI destroyed
  59485. --------N-2F7A1E-----------------------------
  59486. INT 2F U - Novell NetWare - TBMI v1.1+ - ???
  59487.     AX = 7A1Eh
  59488.     ES:SI -> ???
  59489.     ???
  59490. Return: ???
  59491. --------N-2F7A20BX0000-----------------------
  59492. INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
  59493.     AX = 7A20h
  59494.     BX = 0000h
  59495. Return: AX = 0000h on success (installed)
  59496.         ES:BX -> far call address for DOS Requester (see #1468)
  59497. Notes:    the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
  59498.       NetWare LAN's as of the release of Advanced NetWare 4.0 (1993).  It
  59499.       is backward compatible with NetWare 2.1x through 3.11 servers as
  59500.       well.     Note that there was a NetWare 4.0 in the early 1980's, which
  59501.       can cause confusion.
  59502.     this call is used as the installation check by VLM.EXE, which is the
  59503.       loader for all the modules of the DOS Requester
  59504.     .VLMs are standard old .EXE format executables whose normal entry point
  59505.       merely terminates to prevent loading from the command line.  The
  59506.       real entry point is found by looking at the VLM header at the
  59507.       beginning of the load image (see #1471)
  59508. Index:    installation check;NetWare 4.0 DOS Requester
  59509.  
  59510. (Table 1468)
  59511. Call DOS Requester entry point with:
  59512.     STACK:    WORD    destination function
  59513.         WORD    destination VLM ID
  59514.         WORD    source VLM ID (0000h = application program)
  59515.     registers as appropriate for function
  59516. Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #1469)
  59517.     other registers as appropriate for function
  59518.     STACK popped
  59519.  
  59520. (Table 1469)
  59521. Values for VLM status code:
  59522.  0000h    successful
  59523.  88xxh    error generated by requester
  59524.  8801h    invalid or non-attached connection handle
  59525.  8803h    cannot add CDS
  59526.  8804h    bad path
  59527.  8811h    nonexistent function called
  59528.  8836h    attempted function with invalid parameter
  59529.  8846h    ???
  59530.  8848h    non-loaded or nonexistent VLM called
  59531.  884Dh    no more SFT entries (too many handles)
  59532.  8850h    too many reply fragments
  59533.  8853h    ???
  59534.  89xxh    error generated by server, low byte = return code from server
  59535.  
  59536. (Table 1470)
  59537. Values for VLM identifier:
  59538.  0001h    VLM.EXE        Virtual Loadable Modules manager (see also #1472)
  59539.  0010h    CONN.VLM    connection table manager (see also #1473)
  59540.  0020h    TRAN.VLM    transport protocol multiplexor (see also #1474)
  59541.  0021h    IPXNCP.VLM    transport protocol implementation using IPX (see #1476)
  59542.  0022h    reserved for TCPNCP.VLM
  59543.  0030h    NWP.VLM        NetWare protocol multiplexor (see also #1477)
  59544.  0031h    BIND.VLM
  59545.  0032h    NDS.VLM        NetWare Directory Services (see also #1478)
  59546.  0033h    PNW.VLM        Personal NetWare
  59547.  0034h    RSA.VLM        RSA encryption for directory services re-authentication
  59548.  0040h    REDIR.VLM    DOS redirector (see also #1479)
  59549.  0041h    FIO.VLM        file I/O (see also #1481)
  59550.  0042h    PRINT.VLM    printer redirector (see also #1482)
  59551.  0043h    GENERAL.VLM    misc functions for NETx and REDIR (see also #1483)
  59552.  0050h    NETX.VLM    NetWare shell compatibility (see also #1484)
  59553.  0060h    AUTO.VLM    auto-reconnect/auto-retry
  59554.  0061h    SECURITY.VLM    enhanced security module
  59555.  0100h    NMR.VLM        NetWare management responder
  59556.  
  59557. Format of VLM header:
  59558. Offset    Size    Description    (Table 1471)
  59559.  00h    DWORD    -> initialization entry point
  59560.  04h    DWORD    -> VLM API entry point
  59561.  08h    DWORD    -> ??? entry point
  59562.  0Ch    DWORD    -> ??? entry point
  59563.  10h    DWORD    -> ??? entry point
  59564.     ...
  59565.  var    DWORD    00000000h (end of entry point list)
  59566.       4 BYTEs    signature "NVlm"
  59567.     WORD    VLM identifier
  59568. Note:    the number of entry points in the header is reported as "Func" in the
  59569.       VLM /D display.
  59570.  
  59571. (Table 1472)
  59572. Call VLM Manager (VLM.EXE, ID 0001h) with:
  59573. Func    Description/Registers
  59574.  01h    VLM Statistics
  59575.  
  59576. (Table 1473)
  59577. Call Connection Manager (CONN.VLM, ID 0010h) with:
  59578. Func    Description/Registers
  59579.  01h    Conn Get Version
  59580.  03h    Conn Statistics
  59581.  04h    Conn Alloc Handle
  59582.  05h    Conn Validate Handle
  59583.  06h    Conn Free Handle
  59584.  07h    Conn Get Entry Field
  59585.  08h    Conn Set Entry Field
  59586.  09h    Conn Reset Entry Field
  59587.  0Ah    Conn Lookup Handle
  59588.  0Dh    Conn Name Lookup
  59589.  0Eh    Conn Name To Handle
  59590.     DS:SI -> uppercased server name
  59591.     CX = length of server name, 0000h if ASCIZ name
  59592.     Return: AX = error code or 0000h if successful
  59593.             CX = connection handle if successful
  59594.  0Fh    Conn Get Num Connections
  59595.  
  59596. (Table 1474)
  59597. Call TRAN.VLM (VLM ID 0020h) with:
  59598. Func    Description/Registers
  59599.  01h    Tran Get Version
  59600.  03h    Tran Statistics
  59601.  06h    Tran Request Reply (see INT 21/AH=F2h)
  59602.     AL = request code (see #1191 at INT 21/AH=F2h)
  59603.     BH = error handler flag
  59604.         00h default error handler
  59605.         01h return network errors to caller
  59606.         02h handle network errors in requester
  59607.     BL = request list length (max 5 fragments) (see #1475)
  59608.     CX = connection handle
  59609.     DH = 00h (reserved)
  59610.     DL = reply list length (max 5 fragments) (see #1475)
  59611.     DS:SI -> address list
  59612.     ES:DI -> address list
  59613.     Return: AX = error code, 0000h if successful
  59614.         BX,DX destroyed
  59615.         reply buffer updated if successful
  59616.  08h    Tran Schedule/Cancel Event
  59617.  09h    Tran Get Max Size
  59618.  0Ah    Tran Broadcast Mux
  59619.  
  59620. Format of TRAN.VLM request/reply fragment descriptor (array):
  59621. Offset    Size    Description    (Table 1475)
  59622.  00h    DWORD    address of buffer
  59623.  04h    WORD    length of buffer
  59624.  
  59625. (Table 1476)
  59626. Call IPXNCP.VLM (VLM ID 0021h) with:
  59627. Func    Description/Registers
  59628.  01h    IPX Get Version
  59629.  03h    IPX Statistics
  59630.  06h    IPXNCP Request Reply???
  59631.     functionally equivalent to Tran Request Reply???
  59632.  
  59633. (Table 1477)
  59634. Call NWP.VLM (VLM ID 0030h) with:
  59635. Func    Description/Registers
  59636.  01h    NWP Get Version
  59637.  03h    NWP Statistics
  59638.  04h    NWP Connect
  59639.  05h    NWP Disconnect
  59640.  06h    NWP Attach
  59641.  08h    NWP Login
  59642.  09h    NWP Logout
  59643.  0Ah    NWP Get Bindery Object/Get Message Handler
  59644.  0Eh    NWP Ordered Send To All
  59645.  0Fh    NWP Preferred Handler
  59646.  10h    NWP ???
  59647.     AL = subfunction
  59648.         01h get security flags (see also INT 21/AX=B301h)
  59649.         Return: BX:CX indicates signature level
  59650.                 = 0100h:0000h if signature level=0
  59651.                 = 0300h:0000h if signature level=1
  59652.                 = 0302h:0000h if signature level=2
  59653.                 = 0302h:0202h if signature level=3
  59654.         04h set security flags (see also INT 21/AX=B304h)
  59655.         BL:CL = new flags
  59656.  
  59657. (Table 1478)
  59658. Call NDS.VLM (VLM ID 0032h) with:
  59659. Func    Description/Registers
  59660.  01h    NDS Get Version
  59661.  03h    NDS Statistics
  59662.  08h    NDS Fragment Request
  59663.  0Ch    NDS ???
  59664.     BX = subfunction
  59665.         0002h read from TDS
  59666.         CX = reply buffer length
  59667.         DX = 0110h ???
  59668.         SI = offset in TDS
  59669.         ES:DI -> reply buffer
  59670.         0003h write to TDS
  59671.         0005h "NWDSChangeResourceConnection/Lock Connection"
  59672.         0007h "NWDSSetMonitoredConnection"
  59673.  
  59674. (Table 1479)
  59675. Call REDIR.VLM (VLM ID 0040h) with:
  59676. Func    Description/Registers
  59677.  01h    Redir Get Version
  59678.  03h    Redir Statistics
  59679.  04h    Redir Build SFT (see INT 21/AH=B4h"NetWare")
  59680.     CX = connection handle
  59681.     ES:DI -> SFT build request (see #1480)
  59682.     Return: AX = 0000h if successful
  59683.             BX = DOS file handle
  59684.  05h    Redir DOS To NW Handle
  59685.  08h    Redir Specific
  59686.     BX = 0000h get item
  59687.         DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
  59688.         ES:DI -> reply buffer for "\\server\resource",00h,"path",00h
  59689.  
  59690. Format of NetWare SFT build request:
  59691. Offset    Size    Description    (Table 1480)
  59692.  00h  6 BYTEs    NetWare handle
  59693.  06h 18 BYTEs    ???
  59694.  18h    LONG    file size
  59695.  1Ch  8 BYTEs    ???
  59696.  
  59697. (Table 1481)
  59698. Call File I/O FIO.VLM (VLM ID 0041h) with:
  59699. Func    Description/Registers
  59700.  01h    FIO Get Version
  59701.  03h    FIO Statistics
  59702.  04h    FIO Remote Copy
  59703.  
  59704. (Table 1482)
  59705. Call PRINT.VLM (VLM ID 0042h) with:
  59706. Func    Description/Registers
  59707.  01h    Print Get Version
  59708.  03h    Print Statistics
  59709.  04h    Print Get/Set Data
  59710.  05h    Print Open Capture File
  59711.  07h    Print Get Num Of Printers
  59712.  08h    Print Redirection
  59713.     CX = connection handle
  59714.     DX = printer (0=LPT1)
  59715.     BX = destination
  59716.         0000h redirect device to queue
  59717.         AX = length of queue name, 0000h to use queue ID
  59718.         DS:SI -> uppercased ASCIZ queue name
  59719.         ES:DI -> queue ID, 0000h:0000h to use queue name
  59720.         0003h redirect device to file
  59721.         AX = 0000h or 4E57h ('NW')
  59722.         ES:DI -> ASCIZ path of file
  59723.     Return: AX = 0000h if successful
  59724.  09h    Print Flush And Close Job
  59725.  0Ch    Print Get/Set Banner Name
  59726.  
  59727. (Table 1483)
  59728. Call GENERAL.VLM (VLM ID 0043h) with:
  59729. Func    Description/Registers
  59730.  01h    Gen Get Version
  59731.  03h    Gen Statistics
  59732.  04h    Gen Get/Set Primary
  59733.  09h    Gen Return Drive Info
  59734.  
  59735. (Table 1484)
  59736. Call NETX.VLM (VLM ID 0050h) with:
  59737. Func    Description/Registers
  59738.  01h    NetX Get Version
  59739.  03h    NetX Statistics
  59740. --------N-2F7A20BX0001-----------------------
  59741. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
  59742.     AX = 7A20h
  59743.     BX = 0001h
  59744. Return: AX = 0000h if request was handled
  59745.         ES:BX -> CallA entry point (see #1485)
  59746.  
  59747. (Table 1485)
  59748. Call VLM CallA entry point with:
  59749.     AX = function
  59750.         0000h submit
  59751.         0001h cancel (not implemented)
  59752.     ES:DI -> Overlay Asynchronous Control Block structure (see #1486)
  59753.  
  59754. Format of Overlay Asynchronous Control Block (OACB):
  59755. Offset    Size    Description    (Table 1486)
  59756.  00h    DWORD    link to next OACB, 0000h:0000h if last
  59757.  04h    DWORD    callback address or 0000h:0000h
  59758.  08h    BYTE    InUse flag (00h if complete)
  59759.  09h    BYTE    flag, reserved for VLM use
  59760.  0Ah    WORD    destination VLM
  59761.  0Ch    WORD    destination function
  59762.  0Eh    WORD    temporary storage for VLM.EXE
  59763.  10h  6 BYTEs    reserved
  59764.  16h  6 DWORDs    EAX,EBX,ECX,EDX,ESI,EDI
  59765.  2Eh  4 WORDs    DS,ES,FS,GS (FS and GS not used)
  59766. --------N-2F7A20BX0002-----------------------
  59767. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
  59768.     AX = 7A20h
  59769.     BX = 0002h
  59770. Return: AX = 0000h
  59771.     ES:BX -> VLM multiplex entry point (see #1487)
  59772. Note:    for v1.10, this function is only available while VLM.EXE is loading
  59773.       the .VLM modules, because ES is destroyed on return
  59774.  
  59775. (Table 1487)
  59776. Call DOS Requester entry point with:
  59777.     BX = function???
  59778.         0000h
  59779.         DX = ???
  59780.         DI = ???
  59781.         BP = ???
  59782.         0002h
  59783.         CX = ???
  59784.         0003h
  59785.         DX = ???
  59786.         BP = ???
  59787.         0006h
  59788.         AH = subfunction???
  59789.         AL = ???
  59790.         STACK: variable (0, 4, 10, 14 bytes seen)
  59791. --------N-2F7A20BX0003-----------------------
  59792. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
  59793.     AX = 7A20h
  59794.     BX = 0003h
  59795. Return: AX = 0000h if request was handled
  59796.         ES:BX -> VLM parse API entry point
  59797. --------N-2F7A20BX0004-----------------------
  59798. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
  59799.     AX = 7A20h
  59800.     BX = 0004h
  59801. Return: AX = 0000h if request was handled
  59802.         ES:BX -> VLM multicast data (see #1488)
  59803.  
  59804. Format of DOS Requester data:
  59805. Offset    Size    Description    (Table 1488)
  59806.  00h    DWORD    pointer to ??? (code)
  59807.  04h  4 BYTEs    ???
  59808.  08h    DWORD    pointer to ??? (code) (see #1489)
  59809.     ???
  59810.  
  59811. (Table 1489)
  59812. Call offset 08h function with:
  59813.     AL = function (00h-07h)
  59814.     ???
  59815. Return: ???
  59816. --------N-2F7A20BX0005-----------------------
  59817. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
  59818.     AX = 7A20h
  59819.     BX = 0005h
  59820. Return: AX = 0000h if request was handled
  59821.         ES:BX -> VLM INT 24 handler
  59822. --------N-2F7A20BX0006-----------------------
  59823. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59824.     AX = 7A20h
  59825.     BX = 0006h
  59826. Return: AX = 0000h if request was handled
  59827.         ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59828. --------N-2F7A20BX0007-----------------------
  59829. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59830.     AX = 7A20h
  59831.     BX = 0007h
  59832. Return: AX = 0000h
  59833.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59834. --------N-2F7A20BX0008-----------------------
  59835. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59836.     AX = 7A20h
  59837.     BX = 0008h
  59838. Return: AX = 0000h
  59839.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59840. --------N-2F7A20BX0080-----------------------
  59841. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59842.     AX = 7A20h
  59843.     BX = 0080h
  59844. Return: AX = 0000h
  59845.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59846. Note:    this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
  59847. --------N-2F7A20BX0081-----------------------
  59848. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59849.     AX = 7A20h
  59850.     BX = 0081h
  59851. Return: AX = 0000h
  59852.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59853. Note:    this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
  59854. --------N-2F7A20BX0082-----------------------
  59855. INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
  59856.     AX = 7A20h
  59857.     BX = 0082h
  59858. Return: AX = 0000h
  59859.     ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
  59860. Note:    this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
  59861. --------N-2F7A21-----------------------------
  59862. INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
  59863.     AX = 7A21h
  59864.     CX = server connection
  59865. Return: CX = 0000h if broadcast handled
  59866. SeeAlso: AX=7A22h,AX=7A85h
  59867. --------N-2F7A22-----------------------------
  59868. INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
  59869.     AX = 7A22h
  59870.     DL = function
  59871.         21h ('!') broadcast
  59872.         40h ('@') SFT3 inform
  59873. Return: AX = 0000h if event handled
  59874. SeeAlso: AX=7A21h
  59875. --------N-2F7A2F-----------------------------
  59876. INT 2F U - Novell NetWare - IPXODI v2.12 - GET ???
  59877.     AX = 7A2Fh
  59878. Return: AX = 0000h if supported and active
  59879.         BX = version??? (0001h)
  59880.         ES:DI -> entry point (see #1490)
  59881. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  59882.       bundled with Novell DOS 7
  59883. SeeAlso: INT 7A/BX=001Fh
  59884.  
  59885. (Table 1490)
  59886. Call IPXODI entry point with:
  59887.     BX = function
  59888.         0000h ???
  59889.         ES:SI -> ??? data
  59890.         0001h ???
  59891.         AX = ???
  59892.         Return: ES:SI -> ??? data
  59893.         0002h get ??? address
  59894.         Return: ES:SI -> ??? buffer
  59895.         0003h send SPX packet???
  59896.         AL = ???
  59897.         CX = ???
  59898.         DX = ???
  59899.         SI = ???
  59900.         Return: ??? (registers from a call to INT 7A/BX=0016h)
  59901. Return: BX corrupted
  59902. --------N-2F7A2FBX0EDC-----------------------
  59903. INT 2F U - Personal NetWare - HRMIB - UNINSTALL
  59904.     AX = 7A2Fh
  59905.     BX = 0EDCh
  59906. Return: ???
  59907. SeeAlso: AX=7AA0h
  59908. --------N-2F7A40-----------------------------
  59909. INT 2F U - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
  59910.     AX = 7A40h
  59911. Return: AX = 7AFFh if installed
  59912.         BX = ??? bit flags (see #1491)
  59913.         CX = version (CH=major, CL=minor)
  59914.         DX = 0000h
  59915.         ES:DI -> entry point for TCP/IP stack (see #1492)
  59916. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  59917.     this function is also supported by the Beame&Whiteside BWLWP40 shim,
  59918.       but it only returns AL and ES:DI, and does not support AX=7A41h
  59919. SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
  59920.  
  59921. Bitfields for returned BX:
  59922. Bit(s)    Description    (Table 1491)
  59923.  0    ???
  59924.  1    ???
  59925.  15-2    reserved???
  59926.  
  59927. (Table 1492)
  59928. Call NetWare TCP/IP entry point with:
  59929.     ES:SI -> parameter block (see #1493)
  59930. Return: ES:SI parameter block updated
  59931.  
  59932. Format of NetWare TCP/IP parameter block:
  59933. Offset    Size    Description    (Table 1493)
  59934.  00h  4 BYTEs    ???
  59935.  04h    WORD    (return) ???
  59936.  06h    WORD    (return) ???
  59937.  08h    DWORD    -> FAR routine called if bit 7 of function code set
  59938.  0Ch    BYTE    flags???
  59939.  0Dh  7 BYTEs    ???
  59940.  14h    BYTE    (return) ???
  59941.  15h    BYTE    (call) function code (bit 7 set if ???) (see #1494)
  59942.  16h    BYTE    socket number
  59943.  17h    BYTE    (return) result or error code
  59944.  18h  4 WORDs    parameter words 0 to 3 (see #1494 for usage)
  59945.  20h    WORD    length of packet sent/received
  59946.  22h    WORD    number of pointer/length pairs following
  59947.  24h 6N BYTEs    buffer descriptors, each
  59948.         Offset    Size    Description
  59949.          00h    DWORD    pointer to buffer
  59950.          04h    WORD    length of buffer
  59951.  
  59952. (Table 1494)
  59953. Values for NetWare TCP/IP function code:
  59954.  01h    "accept"
  59955.  02h    "bind"
  59956.  03h    close socket
  59957.     Call:    socket number field set
  59958.  04h    "connect"
  59959.  05h    get IP address
  59960.     Call:    socket number field set to 0000h
  59961.     Return:    parameter words 1 and 2 contain caller's IP address
  59962.  06h    get hardware address
  59963.  07h    "getpeername"
  59964.  08h    get socket name
  59965.  0Ah    get netmask
  59966.  0Bh    "ioctl"
  59967.  0Ch    "listen"
  59968.  0Dh    "select"
  59969.  10h    "shutdown"
  59970.  11h    open socket
  59971.     Call:    socket number field set to 0000h
  59972.         parameter word 0 = desired protocol (6 = TCP, 17 = UDP)
  59973.     Return: socket number set
  59974.  12h    "read"
  59975.  13h    "recvfrom"
  59976.     Call:    socket number set
  59977.         packet length and buffer descriptors set
  59978.     Return:    packet length and receive buffers updated
  59979.         parameter word 1 = source port number
  59980.         parameter words 2 and 3 = source IP address
  59981.  14h    "write"
  59982.  15h    "sendto"
  59983.     Call:    socket number set
  59984.         flags field = ???
  59985.         parameter word 0 = 0000h
  59986.         parameter word 1 = destination port number
  59987.         parameter words 2 and 3 = destination IP address
  59988.         packet length and buffer descriptors set
  59989.  16h    get BOOTP data
  59990. Note:    these functions are based on the Unix socket interface
  59991. --------N-2F7A41-----------------------------
  59992. INT 2F - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
  59993.     AX = 7A41h
  59994.     ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
  59995. Return: AX = 7AFFh if supported
  59996.         BX = ??? (see #1491)
  59997.         CX = version (CH=major, CL=minor)
  59998.         DX = 0000h
  59999.         ES:SI -> DWORD containing passed value of ES:DI
  60000.         ES:DI -> entry point for TCP/IP stack
  60001. Notes:    Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
  60002.     the pointer which is set to ES:DI is cleared to 0000h:0000h when
  60003.       a Windows exit broadcast is received
  60004. SeeAlso: AX=7A40h
  60005. --------N-2F7A42-----------------------------
  60006. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
  60007.     AX = 7A42h
  60008. Return: AX = 7AFFh if supported
  60009.         ES:DI -> ??? entry point (see #1468)
  60010.  
  60011. (Table 1495)
  60012. Call NetWare TCPIP.EXE entry point with:
  60013.     DX = ???
  60014.     ES:DI -> ??? (see #1496)
  60015. Return: AX = 0000h
  60016.     other registers destroyed
  60017.  
  60018. Format of data buffer:
  60019. Offset    Size    Description    (Table 1496)
  60020.  00h    WORD    offset of WORD ??? or 0000h
  60021.  02h    WORD    offset of DWORD ??? or 0000h
  60022.  04h    WORD    offset of DWORD ??? or 0000h
  60023. --------N-2F7A43-----------------------------
  60024. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  60025.     AX = 7A43h
  60026. Return: AX = 7AFFh if supported
  60027.         DX = offset of ???
  60028. SeeAlso: AX=7A44h
  60029. --------N-2F7A44-----------------------------
  60030. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - SET ???
  60031.     AX = 7A44h
  60032.     DX = offset of ??? (see AX=7A43h)
  60033. Return: AX = 7AFFh if supported
  60034. SeeAlso: AX=7A43h
  60035. --------N-2F7A4C-----------------------------
  60036. INT 2F - Novell NetWare - TCPIP.EXE v4.1 - GET ???
  60037.     AX = 7A4Ch
  60038. Return: AX = 7AFFh if supported
  60039.         BX = ??? (0037h)
  60040.         CX = ??? (001Ch)
  60041. --------N-2F7A4DBX0001-----------------------
  60042. INT 2F - Novell NetWare - ???
  60043.     AX = 7A4Dh
  60044.     BX = 0001h
  60045.     ES:DI -> ???
  60046. Return: AL = FFh if ???
  60047.         ES:DI -> ???
  60048. Note:    called by NETBIOS.EXE v3.01
  60049. --------N-2F7A4FBX0001-----------------------
  60050. INT 2F - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
  60051.     AX = 7A4Fh
  60052.     BX = 0001h
  60053. Return: AX = 7AFFh if installed
  60054. --------N-2F7A4FBX0002-----------------------
  60055. INT 2F - Novell NetWare - SNMP.EXE - ???
  60056.     AX = 7A4Fh
  60057.     BX = 0002h
  60058. Return: AL = status
  60059.         4Fh if failed
  60060.         FFh if successful
  60061. --------N-2F7A80-----------------------------
  60062. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
  60063.     AX = 7A80h
  60064. Return: nothing
  60065. Notes:    called on abnormal exit of the NetWare shell to notify other Novell
  60066.       TSRs that it is unsafe to call the shell in the future.
  60067.     must be passed through so that all interested programs see the exit
  60068.     on receiving this call, IPXODI clears an internal pointer to a
  60069.       default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
  60070.       0000h:0000h and stops calling it
  60071. SeeAlso: AX=7A81h
  60072. --------N-2F7A81-----------------------------
  60073. INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
  60074.     AX = 7A81h
  60075.     CX:DX -> shell's INT 21h entry point
  60076. Return: nothing
  60077. Notes:    the shell calls this function as it loads to allow interested TSRs
  60078.       and drivers to make a local copy of the shell's entry point
  60079.     must be passed through so that all interested programs see it
  60080. --------N-2F7A85-----------------------------
  60081. INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
  60082.     AX = 7A85h
  60083.     CX = broadcast server number
  60084. Return: CX = 0000h if broadcast message handled by another program
  60085.     CX unchanged if broadcast not handled
  60086. SeeAlso: AX=7A21h
  60087. --------N-2F7A90-----------------------------
  60088. INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
  60089.     AX = 7A90h
  60090. Return: AL = 00h if present
  60091.         BX = ???
  60092.         CX = PSP segment of NETBIOS resident code
  60093. SeeAlso: AX=7AFEh
  60094. --------N-2F7AA0-----------------------------
  60095. INT 2F U - Personal NetWare - HRMIB - ???
  60096.     AX = 7AA0h
  60097.     BX = function
  60098.         0000h ???
  60099.         0001h ???
  60100. Return: ???
  60101. SeeAlso: AX=7A2Fh/BX=0EDCh
  60102. --------N-2F7AC1-----------------------------
  60103. INT 2F - LAN HiJack - LHR - DISABLE???
  60104.     AX = 7AC1h
  60105. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  60106.       to take over control of a workstation remotely; LHR is the program
  60107.       run on the slave workstation
  60108. SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
  60109. --------N-2F7AC2-----------------------------
  60110. INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
  60111.     AX = 7AC2h
  60112. Note:    sets BIOS keyboard status byte to an internal variable
  60113. SeeAlso: AX=7AC3h,AX=7ACFh
  60114. --------N-2F7AC3-----------------------------
  60115. INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
  60116.     AX = 7AC3h
  60117. SeeAlso: AX=7AC2h,AX=7ACFh
  60118. --------N-2F7AC8-----------------------------
  60119. INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
  60120.     AX = 7AC8h
  60121.     BL = function(s) to enable (see #1497)
  60122. SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
  60123.  
  60124. Bitfields for LAN HiJack function(s) to enable/disable:
  60125. Bit(s)    Description    (Table 1497)
  60126.  0    ???
  60127.  1    remote keyboard enabled
  60128.  2    support remote's mouse
  60129.  3-7    unused
  60130. --------N-2F7AC9-----------------------------
  60131. INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
  60132.     AX = 7AC9h
  60133.     BL = function(s) to disable (see #1497)
  60134. SeeAlso: AX=7AC1h,AX=7AC8h
  60135. --------N-2F7ACA-----------------------------
  60136. INT 2F - LAN HiJack - LHJ - ???
  60137.     AX = 7ACAh
  60138.     BL = ???
  60139. Return: ???
  60140. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  60141.       to take over control of a workstation remotely; LHJ is the program
  60142.       run on the controlling workstation
  60143. --------N-2F7ACB-----------------------------
  60144. INT 2F - LAN HiJack - LHJ - ???
  60145.     AX = 7ACBh
  60146.     BX = ???
  60147. Return: ???
  60148. Note:    this function appears to be related to the keyboard
  60149. SeeAlso: AX=7ACCh
  60150. --------N-2F7ACC-----------------------------
  60151. INT 2F - LAN HiJack - LHJ - ???
  60152.     AX = 7ACCh
  60153.     BX = ???
  60154. Return: ???
  60155. Note:    this function appears to be related to the mouse
  60156. SeeAlso: AX=7ACBh
  60157. --------N-2F7ACFBX0000-----------------------
  60158. INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
  60159.     AX = 7ACFh
  60160.     BX = 0000h
  60161. Return: BX = segment of resident code if installed
  60162. Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
  60163.       to take over control of a workstation remotely; LHR is the program
  60164.       run on the slave workstation
  60165. --------N-2F7AF0-----------------------------
  60166. INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
  60167.     AX = 7AF0h
  60168. Return: AL = FFh if present
  60169.         ES = 7AF0h
  60170.         CX = PSP segment of resident code
  60171. --------N-2F7AF1-----------------------------
  60172. INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
  60173.     AX = 7AF1h
  60174.     BL = sequence number (01h first driver, 02h second, 00h no driver)
  60175. Return: AX <> 7AF1h if present
  60176.         BH = total number of drivers
  60177.         ---if BL nonzero on entry---
  60178.         AL = number of ports provided by specified driver
  60179.         ES:DI -> driver entry point
  60180.               (see #1498,#1499,#1500,#1501,#1502,#1503,#1504,#1505)
  60181.         ES:DX -> ID string
  60182. SeeAlso: INT 7A/BX=001Ch
  60183.  
  60184. (Table 1498)
  60185. Call Access Server driver "initialize port" function with:
  60186.     AH = 01h
  60187.     AL = port number (00h-0Fh)
  60188.     ES:BX -> configuration parameter block (see #1511)
  60189.     interrupts disabled
  60190. Return: CF clear if successful
  60191.     CF set on error
  60192.  
  60193. (Table 1499)
  60194. Call Access Server driver "get port status" function with:
  60195.     AH = 02h
  60196.     AL = port number (00h-0Fh)
  60197.     interrupts disabled
  60198. Return: CF clear if successful
  60199.         BL = transmitter status (see #1508)
  60200.         BH = receiver status (see #1509)
  60201.         DL = external status signals (see #1510)
  60202.     CF set on error
  60203.     interrupts disabled
  60204.  
  60205. (Table 1500)
  60206. Call Access Server driver "get input from port" function with:
  60207.     AH = 03h
  60208.     AL = port number (00h-0Fh)
  60209.     CX = size of data buffer
  60210.     ES:BX -> buffer for data
  60211.     interrupts disabled
  60212. Return: CF clear if successful
  60213.     CF set on error
  60214.     interrupts disabled
  60215.     CX = number of bytes read
  60216. Note:    the driver will add a NUL to the buffer when a break signal is detected
  60217.  
  60218. (Table 1501)
  60219. Call driver "send output data to port" function with:
  60220.     AH = 04h
  60221.     AL = port number (00h-0Fh)
  60222.     CX = number of bytes to send
  60223.     ES:BX -> buffer containing data
  60224.     interrupts disabled
  60225. Return: CF clear if successful
  60226.     CF set on error
  60227.     interrupts disabled
  60228.     CX = number of bytes actually written
  60229.  
  60230. (Table 1502)
  60231. Call driver "get I/O character counts" function with:
  60232.     AH = 05h
  60233.     AL = port number (00h-0Fh)
  60234.     interrupts disabled
  60235. Return: CF clear if successful
  60236.         BX = number of bytes pending transmission
  60237.         CX = number of bytes available for reading
  60238.     CF set on error
  60239.     interrupts disabled
  60240.  
  60241. (Table 1503)
  60242. Call driver "control XON/XOFF" function with:
  60243.     AH = 06h
  60244.     AL = port number (00h-0Fh)
  60245.     DL = new state
  60246.         (00h software flow control disabled, else enabled)
  60247.     interrupts disabled
  60248. Return: CF clear if successful
  60249.     CF set on error
  60250.     interrupts disabled
  60251.  
  60252. (Table 1504)
  60253. Call driver "get error counts and statistics" function with:
  60254.     AH = 07h
  60255.     AL = port number (00h-0Fh)
  60256.     ES:BX -> buffer for statistics (see #1512)
  60257.     interrupts disabled
  60258. Return: CF clear if successful
  60259.         ES:BX buffer filled
  60260.     CF set on error
  60261.     interrupts disabled
  60262.  
  60263. (Table 1505)
  60264. Call driver "general request" function with:
  60265.     AH = 08h
  60266.     AL = port number (00h-0Fh)
  60267.     DX = requested operations
  60268.         bit 0: flush transmit buffers
  60269.         bit 1: flush receive buffers
  60270.         bit 4: define XON/XOFF characters
  60271.     ES:BX -> XON/XOFF characters (see #1513) if DX bit 4 set
  60272.     interrupts disabled
  60273. Return: CF clear if successful
  60274.     CF set on error
  60275.     interrupts disabled
  60276.  
  60277. (Table 1506)
  60278. Call driver "deadman timer management" function with:
  60279.     AH = 09h
  60280.     AL = port number (00h-0Fh)
  60281.     BX = next time interval in seconds (0000h to disable timer)
  60282.     interrupts disabled
  60283. Return: CF clear
  60284.     interrupts disabled
  60285.  
  60286. (Table 1507)
  60287. Call driver "get buffer sizes" function with:
  60288.     AH = 0Ah
  60289.     AL = port number (00h-0Fh)
  60290.     interrupts disabled
  60291. Return: CF clear if successful
  60292.        BX = size of transmit buffer
  60293.        CX = size of receive buffer
  60294.     CF set on error
  60295.     interrupts disabled
  60296.  
  60297. (Table 1508)
  60298. Values for Access Server transmitter status:
  60299.  00h    uninitialized
  60300.  01h    ready, not transmitting
  60301.  02h    transmitting
  60302.  03h    XOFF received
  60303.  04h    transmitting, buffer full
  60304.  05h    XOFF received and buffer full
  60305.  
  60306. (Table 1509)
  60307. Values for Access Server receiver status:
  60308.  00h    uninitialized
  60309.  01h    ready
  60310.  02h    receive buffer full, data may have been lost
  60311.  
  60312. Bitfields for external status signals:
  60313. Bit(s)    Description    (Table 1510)
  60314.  7,6    undefined
  60315.  5    CTS active
  60316.  4    DSR active
  60317.  3    DCD active
  60318.  2,1    undefined
  60319.  0    ring indicator
  60320.  
  60321. Format of Access Server configuration parameter block:
  60322. Offset    Size    Description    (Table 1511)
  60323.  00h    BYTE    receive baud rate index
  60324.         00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
  60325.         04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
  60326.         08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
  60327.         0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
  60328.         10h 38400 bps, 11h 57600 bps, 12h 115200 bps
  60329.  01h    BYTE    receive bits per character (0=5 bits..3=8 bits)
  60330.  02h    BYTE    receive stop bits
  60331.  03h    BYTE    receive parity
  60332.         00h none, 01h odd, 02h even, 03h mark, 04h space
  60333.  04h    BYTE    transmit baud rate index (same as receive baud rate)
  60334.  05h    BYTE    transmit bits per character (0=5 bits..3=8 bits)
  60335.  06h    BYTE    transmit stop bits
  60336.  07h    BYTE    transmit parity (same as receive parity)
  60337.  08h    BYTE    DTR state (00h off, 01h on)
  60338.  09h    BYTE    RTS state (00h off, 01h on)
  60339.  0Ah    BYTE    flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
  60340.  0Bh    BYTE    break control (00h off, 01h on)
  60341.  
  60342. Format of Access Server statistics:
  60343. Offset    Size    Description    (Table 1512)
  60344.  00h    BYTE    port number
  60345.  01h    BYTE    external status signals (see #1510)
  60346.  02h    BYTE    transmitter status (see #1508)
  60347.  03h    BYTE    receiver status (see #1509)
  60348.  04h    DWORD    number of characters received
  60349.  08h    DWORD    number of characters transmitted
  60350.  0Ch    WORD    input parity errors
  60351.  0Eh    WORD    input framing errors
  60352.  10h    WORD    lost characters due to hardware overrun
  60353.  12h    WORD    lost characters due to data buffer overrun
  60354. Note:    the counts are not allowed to wrap around; once a count reaches FFFFh
  60355.       or FFFFFFFFh, it is no longer incremented
  60356.  
  60357. Format of Access Server XON/XOFF characters:
  60358. Offset    Size    Description    (Table 1513)
  60359.  00h    BYTE    04h (number of bytes following)
  60360.  01h    BYTE    transmit XON character
  60361.  02h    BYTE    transmit XOFF character
  60362.  03h    BYTE    receive XON character
  60363.  04h    BYTE    receive XOFF character
  60364. --------N-2F7AFE-----------------------------
  60365. INT 2F - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
  60366.     AX = 7AFEh
  60367. Return: AL = FFh if present
  60368.         ES = (data???) segment of DOSNP
  60369. Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
  60370.        NetWare
  60371. Note:    the NetWare shell calls this function and refuses to load if DOSNP is
  60372.       present
  60373. SeeAlso: AX=7A90h
  60374. --------N-2F7AFFBX0000-----------------------
  60375. INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
  60376.     AX = 7AFFh
  60377.     BX = 0000h
  60378.     CX = 4E65h ("Ne")
  60379.     DX = 7457h ("tW")
  60380.     ES:DI -> Windows support procedure (see #1514)
  60381. Return: AL = FFh if installed
  60382.         CX = configured sockets (14h)
  60383.         DS:SI -> data table ???
  60384.         ES:DI -> IPX far call handler
  60385. Notes:    for IPX/SPX this call reportedly returns DS:SI pointing to the table
  60386.       of pointers to service events queue head and tail
  60387.     this function is also supported by IPXODI; v2.12 does not change DS,
  60388.       but does set SI to an internal address
  60389. SeeAlso: AX=7AFFh/BX=0001h
  60390.  
  60391. (Table 1514)
  60392. Values Windows support procedure called with:
  60393.     BP = function
  60394.         0001h Get ECB
  60395.         BX = socket number
  60396.         Return: ES:SI -> ECB or 0000h:0000h if none available
  60397.         0002h Count Listen ECBs
  60398.         AX = BX = socket
  60399.         Return: CX = number of listen ECBs for socket
  60400.                 (must be >= 2 for SPX to work)
  60401.         0003h ???
  60402.         0004h Inform task switcher of ECB locations
  60403.         Note:    registers other than those listed above are equal
  60404.               to the values when IPX was called
  60405. Note:    the support function will not be called if IPX is called with BX
  60406.       bit 15 set
  60407. --------N-2F7AFFBX0001-----------------------
  60408. INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
  60409.     AX = 7AFFh
  60410.     BX = 0001h
  60411.     CX = 4E65h ("Ne")
  60412.     DX = 7457h ("tW")
  60413. Return: AL = FFh if installed
  60414.         CX = ???  (8000h)
  60415.         SI = ??? (or -> ???) (0002h and 0007h seen)
  60416.         ES:DI -> IPX far call handler
  60417.         ES:DX -> 6-byte data area ???
  60418. Note:    this function is also supported by IPXODI, but IPXODI v2.12 does not
  60419.       return ES:DX
  60420. SeeAlso: AX=7AFFh/BX=0000h
  60421. --------d-2F7F00-----------------------------
  60422. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
  60423.     AX = 7F00h
  60424. Return: AL = FFh if installed
  60425. SeeAlso: AX=7F01h,AX=7F02h,AX=7F03h
  60426. --------d-2F7F01-----------------------------
  60427. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
  60428.     AX = 7F01h
  60429.     DS:DX -> command record (see #1515)
  60430. Return: AL = status
  60431.         00h successful
  60432.         else error code
  60433. SeeAlso: AX=7F00h,AX=7F02h,INT 11/AH=FFh"SDLP",INT 21/AX=4402h"ASPI"
  60434. SeeAlso: INT 4F/AX=8100h
  60435.  
  60436. Format of CD-ROM redirector command record:
  60437. Offset    Size    Description    (Table 1515)
  60438.  00h    BYTE    ID
  60439.  01h 10 BYTEs    CDB (Command Descriptor Block) for operation
  60440.  0Bh    WORD    segment of buffer
  60441.  0Dh    WORD    offset of buffer
  60442.  0Fh    BYTE    status
  60443.  10h    BYTE    sense
  60444.  12h    WORD    count
  60445. --------d-2F7F02-----------------------------
  60446. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
  60447.     AX = 7F02h
  60448. SeeAlso: AX=7F00h,AX=7F01h
  60449. --------d-2F7F03-----------------------------
  60450. INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
  60451.     AX = 7F03h
  60452. Return: AL = status
  60453.         00h successful
  60454.         01h unable to uninstall
  60455. SeeAlso: AX=7F00h
  60456. ----------2F7F24-----------------------------
  60457. INT 2F - Multiplex - ???
  60458.     AX = 7F24h
  60459.     ???
  60460. Return: ???
  60461. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  60462. ----------2F7F26-----------------------------
  60463. INT 2F - Multiplex - ???
  60464.     AX = 7F26h
  60465.     ???
  60466. Return: ???
  60467. Note:    called by PC/370, an IBM 370 emulator by Donald S. Higgins
  60468. --------!---Section--------------------------
  60469. Interrupt List, part 8 of 12
  60470. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  60471. --------N-2F8000-----------------------------
  60472. INT 2F - EASY-NET - INSTALLATION CHECK
  60473.     AX = 8000h
  60474. Return: AL = 00h not installed
  60475.          FFh installed
  60476. Program: EASY-NET is a shareware two-machine serial-port network
  60477. --------N-2F8000-----------------------------
  60478. INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
  60479.     AX = 8000h
  60480. Return: AL = FFh if installed
  60481.         BX = CS of resident code
  60482.         CX = ??? (03FCh)
  60483. Program: TurboNET is a NetBIOS-based file redirector and server; a
  60484.       demonstration version may be downloaded from Nanosoft's BBS
  60485. SeeAlso: AX=8100h
  60486. --------t-2F8000-----------------------------
  60487. INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
  60488.     AX = 8000h
  60489.     DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
  60490. Return: AL = status
  60491.         00h no CS_TSR-compliant TSRs installed
  60492.         01h installed, but signature did not match
  60493.         FFh installed, signature matches
  60494.         ES:DI -> resident process block (see #1516) of last installed
  60495.               TSR (if DS:SI pointed at signature on entry)
  60496. Program: the CS_TSR specification is a standardized TSR interface by Compact
  60497.       Soft group in Kiev, Ukraine
  60498. Desc:    determine whether any CS_TSR-compliant TSRs are installed on the
  60499.       selected multiplex number
  60500. Range:    AH=80h to AH=FFh
  60501. SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
  60502.  
  60503. Format of CS_TSR process block:
  60504. Offset    Size    Description    (Table 1516)
  60505.  00h  4 BYTEs    CS_TSR signature 11h 43h 53h 10h
  60506.  04h    BYTE    INT 2F multiplex number
  60507.  05h    WORD    virtual process handle (unique among loaded TSRs)
  60508.  07h  2 BYTEs    version (binary minor version, then major version)
  60509.  09h    WORD    PSP segment of TSR
  60510.  0Bh    DWORD    pointer to ASCIZ program name
  60511.  0Fh  3 BYTEs    program creation date (day, month, year)
  60512.  12h  3 BYTEs    process start time (seconds, minutes, hours)
  60513.  15h  3 BYTEs    process start date (day, month, year)
  60514. --------F-2F8000DX0000-----------------------
  60515. INT 2F - FaxBIOS interface - INSTALLATION CHECK
  60516.     AX = 8000h
  60517.     DX = 0000h
  60518.     DI = 0000h
  60519. Return: AL = FFh if installed
  60520.     DX:DI -> signature "FaxBiosjpc"
  60521. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  60522. SeeAlso: AH=2Ah,AX=80FBh
  60523. --------N-2F8001-----------------------------
  60524. INT 2F - Nanosoft, Inc. TurboNET server - ???
  60525.     AX = 8001h
  60526.     DS:SI -> 16-byte buffer for ???
  60527. Return: AH = status
  60528.         00h successful
  60529.         01h error (TurboNET busy)
  60530. Note:    makes NetBIOS calls
  60531. --------t-2F8001-----------------------------
  60532. INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
  60533.     AX = 8001h
  60534.     DS:SI -> ASCIZ signature string for desired TSR (see #1517)
  60535. Return: BX = process handle or 0000h if specified TSR not installed
  60536.     ES:DI -> process block for TSR (see #1516) if BX<>0000h
  60537. Note:    A widely-available copy of ASCII billing itself as "ASCII 2.OO by
  60538.       Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
  60539.       ASCII v4.23 which is identical except for the changed attribution
  60540.       and version (in fact, some instances of "4.23" were missed); the
  60541.       hacked copy requires the signature string
  60542.       "ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
  60543.       simple signature "ASCII"
  60544. SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
  60545.  
  60546. (Table 1517)
  60547. Values for CS_TSR signature strings:
  60548.  "ASCII"    ASCII, a popup ASCII table with character input
  60549.  "Halculator"    HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
  60550.  "AntiTurbo"    AT!, an intelligent system slow-down utility
  60551. --------t-2F8002-----------------------------
  60552. INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
  60553.     AX = 8002h
  60554.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  60555. Return: ES:DI -> process block for specified TSR (see #1516)
  60556.         unchanged if no match for process handle
  60557. Note:    This function is used to allocate a process handle when the TSR
  60558.       installs itself, by setting ES:DI to point at something other than
  60559.       a CS_TSR process block's signature string and iterating through the
  60560.       possible process handles (0001h to FFFFh) until ES:DI is returned
  60561.       unchanged
  60562. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
  60563. --------t-2F8003-----------------------------
  60564. INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
  60565.     AX = 8003h
  60566.     BX = process handle for TSR (see AX=8001h"CS_TSR")
  60567.     other registers vary by TSR
  60568. Return: vary by TSR, unchanged if not supported
  60569. Program: the CS_TSR specification is a standardized TSR interface by Compact
  60570.       Soft group in Kiev, Ukraine
  60571. SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
  60572. --------F-2F80FB-----------------------------
  60573. INT 2F - FaxBIOS interface - COMMAND SUBMISSION
  60574.     AX = 80FBh
  60575.     BX = function number (see #1518)
  60576.     DX:DI -> command buffer
  60577.           (see #1520,#1523,#1524,#1525,#1526,#1527,#1532,#1538,#1545)
  60578. Return: AL = FFh if submitted OK
  60579.     CX = result code (see #1519)
  60580. Range:    AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
  60581. SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
  60582.  
  60583. (Table 1518)
  60584. Values for FaxBIOS function number:
  60585.  0001h    SYS_LOGIN
  60586.  0002h    SYS_LOGOUT
  60587.  0003h    SYS_GET_FAXAPP_INFO
  60588.  0004h    STAT_IO_GET
  60589.  0005h    STAT_FAXBIOS_GET
  60590.  0006h    PDIR_OPEN
  60591.  0007h    PDIR_CLOSE
  60592.  0008h    PDIR_READ_PERSON
  60593.  0009h    PDIR_PARTIAL_READ
  60594.  000Ah    PDIR_READ_GROUP
  60595.  000Bh    PDIR_READ_MEMBER_LIST
  60596.  000Ch    PDIR_WRITE_PERSON
  60597.  000Dh    PDIR_WRITE_GROUP
  60598.  000Eh    PDIR_DELETE_PERSON
  60599.  000Fh    PDIR_DELETE_GROUP
  60600.  0010h    PDIR_READ_GROUP_LIST
  60601.  0011h    PDIR_IN_GROUP
  60602.  0012h    PDIR_OUT_GROUP
  60603.  0013h    SCHED_OPEN
  60604.  0014h    SCHED_ADD_DEST
  60605.  0015h    SCHED_ADD_FILE
  60606.  0016h    SCHED_SET_PARAMS
  60607.  0017h    SCHED_CANCEL
  60608.  0018h    SCHED_CLOSE
  60609.  0019h    SLOG_OPEN
  60610.  001Ah    SLOG_CLOSE
  60611.  001Bh    SLOG_SHORT_ENV_STAT
  60612.  001Ch    SLOG_LONG_ENV_STAT
  60613.  001Dh    SLOG_DEST_STAT
  60614.  001Eh    SLOG_FILE_STAT
  60615.  001Fh    SLOG_CANCEL_ENV
  60616.  0020h    RLOG_OPEN
  60617.  0021h    RLOG_CLOSE
  60618.  0022h    RLOG_READ
  60619.  0023h    GRAPH_GET_FILE_TYPE
  60620.  0024h    GRAPH_EXPORT_FILE
  60621.  0025h    GRAPH_GET_LAYOUT_INFO
  60622.  0026h    GRAPH_CREATE_FILE
  60623.  0027h    GRAPH_CLOSE_FILE
  60624.  0028h    GRAPH_CREATE_PAGE
  60625.  0029h    GRAPH_WRITE
  60626.  002Ah    GRAPH_END_PAGE
  60627.  002Bh    GRAPH_OPEN_FILE
  60628.  002Ch    GRAPH_GOTO_PAGE
  60629.  002Dh    GRAPH_READ
  60630.  002Eh    IOCTL_GET
  60631.  002Fh    IOCTL_SET
  60632.  0030h    IOCTL_ANSWER_FAX
  60633.  0031h    IOCTL_DIAL
  60634.  
  60635. (Table 1519)
  60636. Values for FaxBIOS result code:
  60637.  0000h    successful
  60638.  0001h    not prepared or servicing another client (busy)
  60639.  0002h    call failed due to sharing (LOCKED)
  60640.  0003h    logged-in client limit reached (FULL)
  60641.  0004h    transport denied (TRANSPORT_DENIED)
  60642.  0005h    not implemented (NOT_IMPLEMENTED)
  60643.  0006h    aborted while in progress (ABORTED)
  60644.  0007h    permissions denied (PERMISSION_DENIED)
  60645.  0008h    requested data is no longer valid (NO_LONGER_VALID)
  60646.  0080h    unspecified system error occurred
  60647.  0081h    an internal file was not found
  60648.  0082h    an internal file could not be created
  60649.  0083h    an internal file could not be opened
  60650.  0084h    an internal file could not be closed
  60651.  0085h    error occurred writing to an internal file
  60652.  0086h    error occurred reading from an internal file
  60653.  0087h    bad or corrupted file encountered
  60654.  0088h    an access violation occurred
  60655.  0089h    an internal file is empty
  60656.  008Ah    insufficient memory to process request
  60657.  008Bh    FaxBIOS was unable to issue a handle
  60658.  008Ch    an error internal to FaxBIOS occurred
  60659.  008Dh    no room on disk
  60660.  0100h    unspecified error accessing client file
  60661.  0101h    file not found
  60662.  0102h    creation fault
  60663.  0103h    open fault
  60664.  0104h    close fault
  60665.  0105h    write fault
  60666.  0106h    read fault
  60667.  0107h    file corrupted
  60668.  0108h    access violation
  60669.  0109h    empty file
  60670.  0200h    unspecified argument error
  60671.  0201h    bad function
  60672.  0202h    bad option
  60673.  0203h    bad structure size
  60674.  0204h    bad buffer size
  60675.  0205h    bad client ID
  60676.  0300h    unspecified error with token
  60677.  0301h    cover sheet token was invalid
  60678.  0302h    logo token was invalid
  60679.  0303h    signature token was invalid
  60680.  0304h    font token was invalid
  60681.  0305h    phone directory token was invalid
  60682.  0306h    outbound route token was invalid
  60683.  0307h    priority token was invalid
  60684.  0308h    sort token was invalid
  60685.  0309h    billing token was invalid
  60686.  0400h    unspecified handle error
  60687.  0401h    bad Phone Directory handle
  60688.  0402h    bad scheduling handle
  60689.  0403h    bad read send log handle
  60690.  0404h    bad read receive log handle
  60691.  0405h    bad graphics handle
  60692.  0500h    data passed in structure was invalid
  60693.  0501h    name field given is invalid
  60694.  0502h    phone number given is invalid
  60695.  0503h    poll code submitted is invalid
  60696.  0504h    file type constant was invalid
  60697.  0505h    BFT constant not defined or supported
  60698.  0506h    resolution not defined or supported
  60699.  0507h    page length not defined or supported
  60700.  0508h    page width not defined or supported
  60701.  0509h    date & time requested are ridiculous
  60702.  050Ah    Subject text was not an ASCIZ string
  60703.  050Bh    From text was not an ASCIZ string
  60704.  050Ch    requested envelope ID was not found
  60705.  050Dh    requested envelope ID is not valid
  60706.  050Eh    envelope requested was not found
  60707.  050Fh    destination index is out of range
  60708.  0510h    file index is out of range
  60709.  0511h    index into receive log is out of range
  60710.  0512h    file name specified was incomplete or invalid
  60711.  0513h    page selected was out of range
  60712.  0514h    bit width more than byte width
  60713.  0515h    mode for open is not defined
  60714.  0516h    person index is out of range
  60715.  0517h    person ID is out of range
  60716.  0518h    group index out of range or invalid
  60717.  0519h    group ID out of range or invalid
  60718.  051Ah    range of indices to read is invalid
  60719.  051Bh    group name given is invalid
  60720.  051Ch    field_to_use is badly specified
  60721.  051Dh    predicate invalid for field specified
  60722.  0600h    unspecified client procedure error
  60723.  0601h    device of interest is not present
  60724.  0602h    device of interest has been removed
  60725.  0603h    device of interest is not responding
  60726.  0604h    device of interest is disabled
  60727.  0605h    could not dial because device was in use
  60728.  0606h    maximum destination limit exceeded
  60729.  0607h    maximum file limit exceeded
  60730.  0608h    scheduling closed with no destination
  60731.  0609h    scheduling closed with no files or poll
  60732.  060Ah    scheduling closed with no parameters specified
  60733.  060Bh    file type specified does not match file
  60734.  060Ch    file type specified is not supported
  60735.  060Dh    file submitted is not exportable
  60736.  060Eh    file type specified is not imageable
  60737.  060Fh    error converting file
  60738.  0610h    envelope could not be cancelled
  60739.  0611h    Phone Directory is full
  60740.  0612h    record is already in the Phone Directory
  60741.  0613h    selected group in Phone Directory is full
  60742.  0614h    person is already in the group
  60743.  0615h    person is not in the group & cannot be removed
  60744.  0616h    a graphics file to be created already exists
  60745.  0617h    a graphics file to be read is empty
  60746.  0618h    GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
  60747.  0619h    graph read or write attempted without goto or create
  60748.  061Ah    graph page contains no data
  60749.  061Bh    Phone Directory is already open for this client
  60750.  061Ch    schedule log is already open for this client
  60751.  061Dh    receive log is aready open for this client
  60752.  061Eh    Phone Directory function requires write mode
  60753.  0800h    denied exclusive use of the API
  60754.  
  60755. Format of FaxBIOS SYS_LOGIN command buffer:
  60756. Offset    Size    Description    (Table 1520)
  60757.  00h    WORD    structure size
  60758.  02h    WORD    function number
  60759.  04h    WORD    return code
  60760.  06h    WORD    client ID
  60761.  08h    WORD    API Major Version
  60762.  0Ah    WORD    API Minor Version
  60763.  0Ch    DWORD    reserved for manufacturer's use
  60764.  10h 22 BYTEs    manufacturer's ID
  60765.  26h    WORD    highest possible device number
  60766.  28h    WORD    maximum destinations per envelope
  60767.  2Ah    WORD    maximum files per envelope
  60768.  2Ch    WORD    FaxBIOS capabilities (see #1521)
  60769.  2Eh    DWORD    T.30 capabilities (see #1522)
  60770.  32h    WORD    IPC handle
  60771.  34h    DWORD    amount of memory needed to load
  60772.  38h    WORD    scope (00h for public, nonzero for private)
  60773.  3Ah  6 BYTEs    future expansion
  60774.  40h    WORD    structure size
  60775.  
  60776. Bitfields for FaxBIOS capabilities:
  60777. Bit(s)    Description    (Table 1521)
  60778.  0    transmit supported
  60779.  1    receive supported
  60780.  2    IOCTL supported
  60781.  3    IOCTL_DIAL supported
  60782.  4    IOCTL_ANSWER_FAX supported
  60783.  5    manual transmit supported
  60784.  6    optional phone services supported
  60785.  7    canonical phone objects
  60786.  8    seam with next supported
  60787.  
  60788. Bitfields for T.30 capabilities:
  60789. Bit(s)    Description    (Table 1522)
  60790.  0    low vertical resolution (minimum)
  60791.  1    high vertical resolution
  60792.  2    page width 107mm (4.21 in)
  60793.  3    page width 151mm (5.91 in)
  60794.  4    page width 215mm (8.46 in) (minimum)
  60795.  5    page width 255mm (10.04 in)
  60796.  6    page width 303mm (11.93 in)
  60797.  7    unused
  60798.  8    page length 297mm (11.69 in) (minimum)
  60799.  9    page length 364mm (14.33 in)
  60800.  10    page length 279mm (11 in)
  60801.  11    page length unlimited
  60802.  12    Group 4 resolution 300x300
  60803.  13    Group 4 resolution 400x400
  60804.  14    able to respond to poll from remote
  60805.  15    able to poll remote
  60806.  16    binary file transfer supported
  60807.  
  60808. Format of FaxBIOS SYS_LOGOUT command buffer:
  60809. Offset    Size    Description    (Table 1523)
  60810.  00h    WORD    structure size
  60811.  02h    WORD    function number
  60812.  04h    WORD    return code
  60813.  06h    WORD    client ID
  60814.  08h    DWORD    client tag (for client's internal use)
  60815.  0Ch  6 BYTEs    future expansion
  60816.  12h    WORD    structure size
  60817.  
  60818. Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
  60819. Offset    Size    Description    (Table 1524)
  60820.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60821.  0Ch 80 BYTEs    FaxBIOS data
  60822.  5Ch 80 BYTEs    default cover
  60823.  ACh 80 BYTEs    default logo
  60824.  FCh 80 BYTEs    default signature
  60825. 14Ch 80 BYTEs    default font 10
  60826. 19Ch 80 BYTEs    default font 165
  60827. 1ECh 80 BYTEs    default user font
  60828. 23Ch 80 BYTEs    default Pdir
  60829. 28Ch 80 BYTEs    default sort
  60830. 2DCh 10 BYTEs    default bill
  60831. 2E6h 10 BYTEs    default route
  60832. 2F0h 40 BYTEs    default cover sheet form
  60833. 318h 34 BYTEs    valid dial characters
  60834. 33Ah  6 BYTEs    local country code
  60835. 340h  6 BYTEs    local city or area code
  60836. 346h  6 BYTEs    future expansion
  60837. 34Ch    WORD    structure size
  60838.  
  60839. Format of FaxBIOS STAT_IO_GET command buffer:
  60840. Offset    Size    Description    (Table 1525)
  60841.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60842.  0Ch    WORD    device number
  60843.  0Eh    WORD    current activity
  60844.  10h    WORD    number of rings (if ringing)
  60845.  12h    WORD    number of fascimiles transmitted
  60846.  14h    WORD    number of fascimiles received
  60847.  16h    WORD    status of last transmission
  60848.  18h    WORD    envelope number of last transmission
  60849.  1Ah    WORD    index of last destination in envelope
  60850.  1Ch    WORD    status of last reception
  60851.  1Eh    WORD    current page (if session in progress)
  60852.  20h 80 BYTEs    current file
  60853.  70h 104 BYTEs    remote number
  60854.  D8h 20 BYTEs    last name
  60855.  ECh 20 BYTEs    first name
  60856. 100h 32 BYTEs    company name
  60857. 120h 32 BYTEs    notes
  60858. 140h    WORD    current envelope ID (if sending)
  60859. 142h    WORD    total pages in transmission (if sending)
  60860. 144h  6 BYTEs    future expansion
  60861. 14h    WORD    structure size
  60862.  
  60863. Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
  60864. Offset    Size    Description    (Table 1526)
  60865.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60866.  0Ch    WORD    status ID
  60867.  0Eh    WORD    currenty FaxBIOS function number
  60868.  10h    WORD    current Client ID being serviced
  60869.  12h    WORD    number of things to do
  60870.  14h    WORD    number of them done
  60871.  16h    WORD    number of pages to do (if any)
  60872.  18h    WORD    number of them done
  60873.  1Ah    WORD    number of files to do
  60874.  1Ch    WORD    number of them done
  60875.  1Eh 80 BYTEs    current File
  60876.  6Eh    WORD    0 if all devices are idle
  60877.  70h    WORD    number of fascimiles transmitted
  60878.  72h    WORD    number of fascimiles received
  60879.  74h    WORD    status of last transmission in system
  60880.  76h    WORD    envelope ID of last transmission
  60881.  78h    WORD    index of last destination in envelope
  60882.  7Ah    WORD    status of last reception in system
  60883.  7Ch    DWORD    time of next transmission
  60884.  80h  6 BYTEs    future expansion
  60885.  86h    WORD    structure size
  60886.  
  60887. Format of FaxBIOS PDIR_OPEN command buffer:
  60888. Offset    Size    Description    (Table 1527)
  60889.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60890.  0Ch 80 BYTEs    Phone Directory token
  60891.  5Ch 80 BYTEs    sort order token
  60892.  ACh    WORD    open Mode (0 = read, 1 = write)
  60893.  AEh    WORD    Phone Directory handle
  60894.  B0h    WORD    number of people
  60895.  B2h    WORD    number of groups
  60896.  B4h    WORD    bitmap of fields supported by partial read
  60897.  B6h  6 BYTEs    future expansion
  60898.  BCh    WORD    structure size
  60899.  
  60900. Format of FaxBIOS PDIR_CLOSE command buffer:
  60901. Offset    Size    Description    (Table 1528)
  60902.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60903.  0Ch    WORD    Phone Directory handle
  60904.  0Eh  6 BYTEs    future expansion
  60905.  14h    WORD    structure size
  60906.  
  60907. Format of FaxBIOS PDIR_READ_PERSON command buffer:
  60908. Offset    Size    Description    (Table 1529)
  60909.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60910.  0Ch    WORD    Phone Directory handle
  60911.  0Eh    WORD    retrieve by index
  60912.  10h    WORD    person ID or index
  60913.  12h    WORD    how many groups person is in
  60914.  14h    WORD    person ID
  60915.  16h 20 BYTEs    last name
  60916.  2Ah 20 BYTEs    first name
  60917.  3Eh 32 BYTEs    company
  60918.  5Eh 32 BYTEs    notes
  60919.  7Eh  6 BYTEs    FAX country code
  60920.  84h  6 BYTEs    FAX city/area code
  60921.  8Ah 14 BYTEs    FAX local number
  60922.  98h 14 BYTEs    FAX extension
  60923.  A6h 24 BYTEs    reserved
  60924.  BEh  6 BYTEs    voice country code
  60925.  C4h  6 BYTEs    voice city/area code
  60926.  CAh 14 BYTEs    voice local number
  60927.  D8h 14 BYTEs    voice extension
  60928.  E6h 24 BYTEs    reserved
  60929.  FEh 10 BYTEs    outbound routing information
  60930. 108h 10 BYTEs    billing information, credit card etc
  60931. 112h    DWORD    remote FAX capabilities
  60932. 116h 21 BYTEs    T.30 poll code of FAX number
  60933. 12Bh 15 BYTEs    reserved
  60934. 13Ah  6 BYTEs    future expansion
  60935. 140h    WORD    structure size
  60936.  
  60937. Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
  60938. Offset    Size    Description    (Table 1530)
  60939.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60940.  0Ch    WORD    scheduler handle
  60941.  0Eh  6 BYTEs    future expansion
  60942.  14h    WORD    structure size
  60943.  
  60944. Format of FaxBIOS SCHED_ADD_DEST command buffer:
  60945. Offset    Size    Description    (Table 1531)
  60946.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60947.  0Ch    WORD    schedule handle
  60948.  0Eh    WORD    device number if manual send wanted
  60949.  10h    WORD    non-zero if poll desired
  60950.  12h    WORD    person ID
  60951.  14h 20 BYTEs    last name
  60952.  28h 20 BYTEs    first name
  60953.  3Ch 32 BYTEs    company
  60954.  5Ch 32 BYTEs    notes
  60955.  7Ch  6 BYTEs    FAX country code
  60956.  82h  6 BYTEs    FAX city/area code
  60957.  88h 14 BYTEs    FAX local number
  60958.  96h 14 BYTEs    FAX extension
  60959.  A4h 24 BYTEs    reserved
  60960.  BCh  6 BYTEs    voice country code
  60961.  C2h  6 BYTEs    voice city/area code
  60962.  C8h 14 BYTEs    voice local number
  60963.  D6h 14 BYTEs    voice extension
  60964.  E4h 24 BYTEs    reserved
  60965.  FCh 10 BYTEs    outbound routing information
  60966. 106h 10 BYTEs    billing information, credit card etc
  60967. 110h    DWORD    remote FAX capabilities
  60968. 114h 21 BYTEs    T.30 poll code of FAX number
  60969. 129h 15 BYTEs    reserved
  60970. 138h  6 BYTEs    future expansion
  60971. 13Eh    WORD    structure size
  60972.  
  60973. Format of FaxBIOS SCHED_ADD_FILE command buffer:
  60974. Offset    Size    Description    (Table 1532)
  60975.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  60976.  0Ch    WORD    schedule handle
  60977.  0Eh    WORD    file type
  60978.         0000h unidentified
  60979.         0001h native file format
  60980.         0002h ASCII
  60981.         0003h FaxBIOS Tiff Class F
  60982.  10h 80 BYTEs    file name
  60983.  60h 80 BYTEs    font token
  60984.  B0h    WORD    conversion options bitmap
  60985.  B2h    WORD    resolution
  60986.         0000h standard 98 lines per inch, 204 dpi
  60987.         0001h fine 196 lines per inch, 204 dpi
  60988.         0002h Group4 300 dpi
  60989.         0003h Group4 400 dpi
  60990.  B4h    WORD    page length
  60991.         0000h 279 mm (11 in)
  60992.         0001h 297 mm (11.69 in)
  60993.         0002h 364 mm (14.33 in)
  60994.         0003h unlimited
  60995.  B6h    WORD    page width
  60996.         0000h 215 mm (8.46 in)
  60997.         0001h 255 mm (10.04 in)
  60998.         0002h 303 mm (11.93 in)
  60999.         0003h 151 mm (5.91 in)
  61000.         0004h 107 mm (4.21 in)
  61001.  B8h    WORD    binary file transfer specification
  61002.         0000h only as FAX
  61003.         0001h only as file (for non-faxable files)
  61004.         0002h as file when possible else FAX
  61005.  BAh    WORD    seam flag (nonzero for seam with next)
  61006.  BCh    WORD    delete flag (nonzero to delete when done)
  61007.  BEh  6 BYTEs    future expansion
  61008.  C4h    WORD    structure size
  61009.  
  61010. Format of FaxBIOS SCHED_SET_PARAMS command buffer:
  61011. Offset    Size    Description    (Table 1533)
  61012.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61013.  0Ch    WORD    scheduler handle
  61014.  0Eh    DWORD    time to send
  61015.  10h 10 BYTEs    priority token
  61016.  1Ch 80 BYTEs    logo file token
  61017.  6Ch 80 BYTEs    signature file token
  61018.  BCh 80 BYTEs    cover page token
  61019. 10Ch 40 BYTEs    Subject text
  61020. 134h 40 BYTEs    From text
  61021. 15Ch    WORD    user ID
  61022. 15Eh  6 BYTEs    future expansion
  61023. 164h    WORD    structure size
  61024.  
  61025. Format of FaxBIOS SCHED_CLOSE command buffer:
  61026. Offset    Size    Description    (Table 1534)
  61027.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61028.  0Ch    WORD    scheduler handle
  61029.  0Eh    WORD    envelope ID generated
  61030.  10h  6 BYTEs    future expansion
  61031.  16h    WORD    structure size
  61032.  
  61033. Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
  61034. Offset    Size    Description    (Table 1535)
  61035.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61036.  0Ch    WORD    log handle
  61037.  0Eh    WORD    number of entries
  61038.  10h  6 BYTEs    future expansion
  61039.  16h    WORD    structure size
  61040.  
  61041. Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
  61042. Offset    Size    Description    (Table 1536)
  61043.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61044.  0Ch 80 BYTEs    filename
  61045.  5Ch    WORD    file type
  61046.         0000h unidentified
  61047.         0001h native file format
  61048.         0002h ASCII
  61049.         0003h FaxBIOS Tiff Class F
  61050.  5Eh    WORD    bitmap of supported capabilities
  61051.  60h  6 BYTEs    future expansion
  61052.  66h    WORD    structure size
  61053.  
  61054. Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
  61055. Offset    Size    Description    (Table 1537)
  61056.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61057.  0Ch 80 BYTEs    filename
  61058.  5Ch    WORD    graph handle
  61059.  5Eh  6 BYTEs    future expansion
  61060.  64h    WORD    structure size
  61061.  
  61062. Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
  61063. Offset    Size    Description    (Table 1538)
  61064.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61065.  0Ch    WORD    graph handle
  61066.  0Eh  6 BYTEs    future expansion
  61067.  14h    WORD    structure size
  61068.  
  61069. Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
  61070. Offset    Size    Description    (Table 1539)
  61071.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61072.  0Ch    WORD    graph handle
  61073.  0Eh    WORD    resolution
  61074.  10h    WORD    page width
  61075.  12h  6 BYTEs    future expansion
  61076.  18h    WORD    structure size
  61077.  
  61078. Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
  61079. Offset    Size    Description    (Table 1540)
  61080.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61081.  0Ch    WORD    graph handle
  61082.  0Eh    DWORD    pointer to storage for image
  61083.  12h    WORD    band height in lines
  61084.  14h    WORD    width of page image in bytes
  61085.  16h    WORD    facsimile page width constant
  61086.  18h    WORD    width of page image in bits
  61087.  1Ah    WORD    number of bytes actually processed
  61088.  1Ch  6 BYTEs    future expansion
  61089.  22h    WORD    structure size
  61090.  
  61091. Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
  61092. Offset    Size    Description    (Table 1541)
  61093.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61094.  0Ch 80 BYTEs    filename
  61095.  5Ch    WORD    file type
  61096.  5Eh    WORD    graph handle
  61097.  60h    WORD    number of pages
  61098.  62h  6 BYTEs    future expansion
  61099.  68h    WORD    structure size
  61100.  
  61101. Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
  61102. Offset    Size    Description    (Table 1542)
  61103.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61104.  0Ch    WORD    graph handle
  61105.  0Eh    WORD    page number
  61106.  10h    WORD    vertical resolution
  61107.  12h    WORD    page width
  61108.  14h    DWORD    page length
  61109.  18h  6 BYTEs    future expansion
  61110.  1Eh    WORD    structure size
  61111.  
  61112. Format of FaxBIOS GRAPH_READ_PAGE command buffer:
  61113. Offset    Size    Description    (Table 1543)
  61114.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61115.  0Ch    WORD    graph handle
  61116.  0Eh    DWORD    pointer to storage for image
  61117.  12h    WORD    band height in lines
  61118.  14h    WORD    width of page image in bytes
  61119.  16h    WORD    facsimile page width constant
  61120.  18h    WORD    width of page image in bits
  61121.  1Ah    WORD    number of bytes actually processed
  61122.  1Ch  6 BYTEs    future expansion
  61123.  22h    WORD    structure size
  61124.  
  61125. Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
  61126. Offset    Size    Description    (Table 1544)
  61127.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61128.  0Ch    WORD    device number
  61129.  0Eh  6 BYTEs    future expansion
  61130.  14h    WORD    structure size
  61131.  
  61132. Format of FaxBIOS IOCTL_DIAL command buffer:
  61133. Offset    Size    Description    (Table 1545)
  61134.  00h 12 BYTEs    common data (see SYS_LOGOUT above)
  61135.  0Ch    WORD    device number
  61136.  0Eh  6 BYTEs    country code
  61137.  14h  6 BYTEs    city or area code
  61138.  1Ah 14 BYTEs    local number
  61139.  28h 14 BYTEs    extension
  61140.  36h 14 BYTEs    reserved
  61141.  4Eh  6 BYTEs    future expansion
  61142.  54h    WORD    structure size
  61143. --------N-2F8100-----------------------------
  61144. INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
  61145.     AX = 8100h
  61146. Return: AL = FFh if installed
  61147. Program: TurboNET is a NetBIOS-based file redirector and server; a
  61148.       demonstration version may be downloaded from Nanosoft's BBS
  61149. SeeAlso: AX=8000h"TurboNET"
  61150. --------N-2F8101-----------------------------
  61151. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  61152.     AX = 8101h
  61153. Return: AL = ???
  61154.     DL = ???
  61155. --------N-2F8102-----------------------------
  61156. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  61157.     AX = 8102h
  61158. Return: AL = ???
  61159.     DL = ???
  61160. --------N-2F8103-----------------------------
  61161. INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
  61162.     AX = 8103h
  61163.     ES:DI -> 17-byte buffer
  61164. Return: buffer filled
  61165. --------N-2F8104-----------------------------
  61166. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  61167.     AX = 8104h
  61168.     BL = ???
  61169.     BH = ???
  61170.     CX = ???
  61171.     DX = ???
  61172.     DS:SI -> 16-byte buffer containing ???
  61173. Return: AL = 00h ???
  61174. --------N-2F8105-----------------------------
  61175. INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
  61176.     AX = 8105h
  61177.     CX = ??? (don't change current value if 0000h)
  61178.     DX = ??? (don't change current value if 0000h)
  61179. Return: AL = 00h successful
  61180. --------s-2F8200-----------------------------
  61181. INT 2F - RESPLAY - SAMPLE/PLAYBACK
  61182.     AX = 8200h
  61183.     DX:DI -> start of sample space
  61184.     CX:BX = length in bytes
  61185. Return: AX = status (see #1546)
  61186. Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
  61187. SeeAlso: AX=8201h"RESPLAY",AX=8210h
  61188.  
  61189. (Table 1546)
  61190. Values for RESPLAY status:
  61191.  1000h    successful
  61192.  2000h    not initialized (see AX=8210h)
  61193.  other    RESPLAY not installed
  61194. --------G-2F8200-----------------------------
  61195. INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
  61196.     AX = 8200h
  61197. Return: AL = FFh if installed
  61198. Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
  61199.       captured and recorded for later analysis
  61200. SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
  61201. SeeAlso: AX=8204h"CAPDOS"
  61202. --------s-2F8201-----------------------------
  61203. INT 2F - RESPLAY - INSTALLATION CHECK
  61204.     AX = 8201h
  61205. Return: AX = 7746h if installed
  61206. SeeAlso: AX=8202h"RESPLAY",AX=8210h
  61207. --------G-2F8201-----------------------------
  61208. INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
  61209.     AX = 8201h
  61210. Note:    resets queue of captured INT 21 calls
  61211. SeeAlso: AX=8200h"CAPDOS"
  61212. --------s-2F8202-----------------------------
  61213. INT 2F - RESPLAY - UNINSTALL
  61214.     AX = 8202h
  61215. Return: AX = status
  61216.         1000h successful
  61217. SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
  61218. --------G-2F8202-----------------------------
  61219. INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
  61220.     AX = 8202h
  61221. SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
  61222. --------G-2F8203-----------------------------
  61223. INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
  61224.     AX = 8203h
  61225. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
  61226. --------G-2F8204-----------------------------
  61227. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
  61228.     AX = 8204h
  61229. Return: AH = flag: queue wrapped if nonzero
  61230.     BX = index of current start of queue
  61231.     CX = size of queue in entries
  61232. SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
  61233. --------G-2F8205-----------------------------
  61234. INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
  61235.     AX = 8205h
  61236.     BX = queue item number
  61237. Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
  61238. SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
  61239. --------s-2F8210-----------------------------
  61240. INT 2F - RESPLAY - INITIALIZE
  61241.     AX = 8210h
  61242.     BL = sound device number (see #1547)
  61243.     BH = sample rate in multiples of 250 Hz (14h to A0h)
  61244.     CL = direction
  61245.         00h playback
  61246.         01h sample
  61247. Return: AX = status (see #1546)
  61248. SeeAlso: AX=8200h"RESPLAY"
  61249.  
  61250. (Table 1547)
  61251. Values for RESPLAY sound device:
  61252.  00h    printer port LPT1
  61253.  01h    printer port LPT2
  61254.  02h    prototype board at I/O address 0300h
  61255.  03h    printer port (alternative LPT1)
  61256.  04h    internal speaker
  61257. ----------2F86-------------------------------
  61258. INT 2F U - ???
  61259.     AH = 86h
  61260.     AL = function (at least 06h and 07h)
  61261.     ???
  61262. Return: ???
  61263. Note:    called by Codeview for Windows
  61264. SeeAlso: AH=44h
  61265. --------U-2F8900-----------------------------
  61266. INT 2F - WHOA!.COM - INSTALLATION CHECK
  61267.     AX = 8900h
  61268. Return: AL = state
  61269.         00h not installed
  61270.         FFh installed
  61271. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  61272. SeeAlso: AX=8901h,AX=8902h
  61273. --------U-2F8901-----------------------------
  61274. INT 2F - WHOA!.COM - UNINSTALL
  61275.     AX = 8901h
  61276. Return: AL = status
  61277.         FDh successful
  61278.         FEh error
  61279. SeeAlso: AX=8900h
  61280. --------U-2F8902-----------------------------
  61281. INT 2F - WHOA!.COM - SET DELAY COUNT
  61282.     AX = 8902h
  61283.     BX = delay count (larger values slow system down more)
  61284. Return: AL = status
  61285.         FDh successful
  61286.         FEh error
  61287. Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
  61288. SeeAlso: AX=8900h
  61289. --------U-2F9000-----------------------------
  61290. INT 2F U - RAID - INSTALLATION CHECK
  61291.     AX = 9000h
  61292. Return: AL = FFh if installed
  61293. Program: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth
  61294.       that resides mostly in EMS
  61295. --------U-2F9001-----------------------------
  61296. INT 2F U - RAID - GET ???
  61297.     AX = 9001h
  61298. Return: DX:AX -> ???
  61299. SeeAlso: AX=9000h
  61300. --------U-2F9002-----------------------------
  61301. INT 2F U - RAID - GET RESIDENT SEGMENT
  61302.     AX = 9002h
  61303. Return: AX = segment of resident (conventional memory) portion
  61304. SeeAlso: AX=9000h
  61305. --------U-2F9003-----------------------------
  61306. INT 2F U - RAID - UNINSTALL
  61307.     AX = 9003h
  61308. Return: ???
  61309. SeeAlso: AX=9000h
  61310. --------U-2F9004-----------------------------
  61311. INT 2F U - RAID - GET ???
  61312.     AX = 9004h
  61313. Return: AX = first available paragraph past end of resident portion???
  61314.     CX destroyed
  61315. SeeAlso: AX=9000h
  61316. --------e-2F92-------------------------------
  61317. INT 2F - Network Courier E-Mail - API
  61318.     AH = 92h
  61319.     AL = function
  61320.         00h installation check
  61321.         01h uninstall
  61322.         02h pop down MICRO.EXE notification window
  61323.         03h ???
  61324.         04h ???
  61325.         05h ???
  61326. Return: ???
  61327. Program: The Network Courier is an electronic mail package by Consumers
  61328.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  61329.       renamed Microsoft Mail v3.0.
  61330. SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
  61331. Index:    installation check;Network Courier E-Mail
  61332. Index:    uninstall;Network Courier E-Mail
  61333. --------R-2F9200-----------------------------
  61334. INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
  61335.     AX = 9200h
  61336. Program: DRIVEMAP is a redirector which allows drives on computers connected
  61337.       over the parallel or serial ports to appear as local drives
  61338. BUG:    jumps to data because jump table entry is 0000h
  61339. Note:    DRIVEMAP returns AX=FFFFh if not a valid function number in AL
  61340. --------R-2F9201-----------------------------
  61341. INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
  61342.     AX = 9201h
  61343.     DL = drive number (01h = A:, etc.)
  61344. Return: AL = 92h if mapped drive
  61345.     AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
  61346. SeeAlso: AX=9204h,AX=920Bh
  61347. --------R-2F9202-----------------------------
  61348. INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
  61349.     AX = 9202h
  61350.     BX = caller's CS
  61351. Return: AX = status
  61352.         0000h failed
  61353.         nonzero successful
  61354. SeeAlso: AX=9204h
  61355. --------R-2F9203-----------------------------
  61356. INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
  61357.     AX = 9203h
  61358. Return: AH = major version
  61359.     AL = minor version
  61360.     CX = segment of resident code
  61361. Note:    the DRIVEMAP included with PC Tools v8.0 is version 1.00
  61362. SeeAlso: AX=9204h,INT 16/AX=FF70h
  61363. --------R-2F9204-----------------------------
  61364. INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
  61365.     AX = 9204h
  61366. Return: AX = 9200h if installed
  61367.        BL = ???
  61368.        CX = segment of resident code
  61369. Program: DRIVEMAP is a redirector which allows drives on computers connected
  61370.       over the parallel or serial ports to appear as local drives
  61371. SeeAlso: AX=9201h,AX=9202h,AX=9203h
  61372. --------R-2F9205-----------------------------
  61373. INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
  61374.     AX = 9205h
  61375.     BX = ??? to set
  61376. Return: CX = new value of ???
  61377. --------R-2F9206-----------------------------
  61378. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61379.     AX = 9206h
  61380.     ???
  61381. Return: ???
  61382. --------R-2F9207-----------------------------
  61383. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61384.     AX = 9207h
  61385.     ???
  61386. Return: AX = ???
  61387. --------R-2F9208-----------------------------
  61388. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61389.     AX = 9208h
  61390.     ???
  61391. Return: ???
  61392. --------R-2F9209-----------------------------
  61393. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61394.     AX = 9209h
  61395.     ???
  61396. Return: AX = ???
  61397.     BX = ???
  61398.     CX = ???
  61399.     DX = ???
  61400. --------R-2F920A-----------------------------
  61401. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61402.     AX = 920Ah
  61403.     BX = ???
  61404. Return: AX = ??? or FFFBh on error
  61405. --------R-2F920B-----------------------------
  61406. INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
  61407.     AX = 920Bh
  61408.     BL = drive letter (41h ['A'] = A:, etc)
  61409.     CX = ??? (0000h removes mapping)
  61410. Return: AX = ??? or FFF8h on error
  61411. SeeAlso: AX=9201h,AX=920Dh
  61412. --------R-2F920C-----------------------------
  61413. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61414.     AX = 920Ch
  61415.     ???
  61416. Return: AX = ??? (0002h)
  61417.     CX = ??? (0000h)
  61418. --------R-2F920D-----------------------------
  61419. INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
  61420.     AX = 920Dh
  61421.     BL = drive letter (41h ['A'] = A:, etc)
  61422. Return: AX = type flags
  61423.         bit 0: ???
  61424.         bit 1: available
  61425.         bit 5: local
  61426.     BX = ???
  61427.     CX = segment of resident code (apparently an unintended side effect)
  61428. Program: DRIVEMAP is a redirector which allows drives on computers connected
  61429.       over the parallel or serial ports to appear as local drives
  61430. SeeAlso: AX=9218h,INT 16/AX=FF70h
  61431. --------R-2F920E-----------------------------
  61432. INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
  61433.     AX = 920Eh
  61434.     BX = port number (0-2)
  61435.     CX = ??? (0000h to unmap)
  61436. Return: ???
  61437. --------R-2F920F-----------------------------
  61438. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61439.     AX = 920Fh
  61440.     ES:DI -> 3-byte buffer for ???
  61441. Return: CX = 0000h
  61442.     ES:DI buffer filled
  61443. --------R-2F9210-----------------------------
  61444. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61445.     AX = 9210h
  61446.     ???
  61447. Return: ???
  61448. --------R-2F9211-----------------------------
  61449. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61450.     AX = 9211h
  61451.     ES:DI -> 8-word buffer for ???
  61452. Return: CX = 0000h
  61453.     ES:DI buffer filled
  61454. --------R-2F9212-----------------------------
  61455. INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
  61456.     AX = 9212h
  61457.     BX = phase
  61458.         0000h leave critical section???
  61459.         nonzero enter critical section???
  61460. --------R-2F9213-----------------------------
  61461. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61462.     AX = 9213h
  61463.     BX = function number (0000h-000Bh)
  61464.     ???
  61465. Return: ???
  61466. --------R-2F9214-----------------------------
  61467. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61468.     AX = 9214h
  61469.     ES:DI -> 6-word buffer for ???
  61470. Return: CX = 0000h
  61471.     AX = ???
  61472.     ES:DI buffer filled
  61473. --------R-2F9215-----------------------------
  61474. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61475.     AX = 9215h
  61476.     ES:DI -> 100-word buffer for ???
  61477. Return: CX = 0000h
  61478.     ES:DI buffer filled
  61479. --------R-2F9216-----------------------------
  61480. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61481.     AX = 9216h
  61482.     ES:DI -> ???
  61483. Return: ???
  61484. --------R-2F9217-----------------------------
  61485. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61486.     AX = 9217h
  61487.     DS:SI -> 25-word buffer containing ???
  61488. Return: ???
  61489. --------R-2F9218-----------------------------
  61490. INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
  61491.     AX = 9218h
  61492.     BX = port number???
  61493. Return: AX = ???
  61494.     BX = ??? (0000h)
  61495.     CX = ??? (0000h)
  61496. Program: DRIVEMAP is a redirector which allows drives on computers connected
  61497.       over the parallel or serial ports to appear as local drives
  61498. --------R-2F9219-----------------------------
  61499. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61500.     AX = 9219h
  61501.     ???
  61502. Return: ???
  61503. --------R-2F921A-----------------------------
  61504. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61505.     AX = 921Ah
  61506.     ???
  61507. Return: AH = ???
  61508.     AL = ???
  61509.     BX = ???
  61510. --------R-2F921B-----------------------------
  61511. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61512.     AX = 921Bh
  61513.     ???
  61514. Return: AX = ???
  61515.     CX = segment of resident code (apparently an unintended side effect)
  61516. --------R-2F921C-----------------------------
  61517. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61518.     AX = 921Ch
  61519.     ???
  61520. Return: ???
  61521. --------R-2F921D-----------------------------
  61522. INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
  61523.     AX = 921Dh
  61524. Return: AX = ???
  61525. --------R-2F921E-----------------------------
  61526. INT 2F U - PC Tools v8.0 DRIVEMAP - ???
  61527.     AX = 921Eh
  61528.     ???
  61529. Return: ???
  61530. Program: DRIVEMAP is a redirector which allows drives on computers connected
  61531.       over the parallel or serial ports to appear as local drives
  61532. Note:    this function sets two variables to 24h each
  61533. SeeAlso: INT 16/AX=FF70h
  61534. --------V-2F93-------------------------------
  61535. INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
  61536.     AH = 93h
  61537.     BX = CX = AX
  61538. Return: AL = state
  61539.         FFh if installed and BX=CX=AX on entry
  61540.         BX = segment of resident code
  61541.         01h if installed but BX or CX differ from AX (multiplex number not
  61542.           available)
  61543. Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
  61544. SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
  61545. Index:    screen saver;InnerMission
  61546. --------e-2F9400-----------------------------
  61547. INT 2F - MICRO.EXE - INSTALLATION CHECK
  61548.     AX = 9400h
  61549. Return: AL = 07h or 08h if installed
  61550. Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
  61551. SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
  61552. SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
  61553. --------e-2F9401-----------------------------
  61554. INT 2F - MICRO.EXE - SET ??? FLAG
  61555.     AX = 9401h
  61556. SeeAlso: AX=9400h,AX=9403h
  61557. --------e-2F9402-----------------------------
  61558. INT 2F - MICRO.EXE - ???
  61559.     AX = 9402h
  61560.     ???
  61561. Return: ???
  61562. SeeAlso: AX=9400h
  61563. --------e-2F9403-----------------------------
  61564. INT 2F - MICRO.EXE - SET ??? FLAG
  61565.     AX = 9403h
  61566. SeeAlso: AX=9400h,AX=9404h
  61567. --------e-2F9404-----------------------------
  61568. INT 2F - MICRO.EXE - CLEAR ??? FLAG
  61569.     AX = 9404h
  61570.     ES:DI -> name of executable from which MICRO.EXE was started
  61571. Note:    if the specified name is identical to the name of the program file
  61572.       from which MICRO was started, the ??? flag is cleared; otherwise,
  61573.       it is left unchanged
  61574. SeeAlso: AX=9400h,AX=9403h
  61575. --------e-2F9C-------------------------------
  61576. INT 2F - Network Courier E-Mail OPERATOR.EXE - API
  61577.     AH = 9Ch
  61578.     AL = subfunction
  61579.         01h uninstall
  61580. Return: ???
  61581. Program: The Network Courier is an electronic mail package by Consumers
  61582.       Software of Vancouver, BC which was bought by Microsoft in 1991 and
  61583.       renamed Microsoft Mail v3.0.
  61584. SeeAlso: AH=92h
  61585. Index:    uninstall;Network Courier E-Mail OPERATOR.EXE
  61586. --------G-2F9E00-----------------------------
  61587. INT 2F U - INTMON v2.1 - INSTALLATION CHECK
  61588.     AX = 9E00h
  61589. Return: AX = FFFFh if installed
  61590.         BX = segment of resident code
  61591. Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
  61592.       and higher machines by Celso Minnitti, Jr.
  61593. SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
  61594. --------G-2F9E01-----------------------------
  61595. INT 2F U - INTMON v2.1 - RESET
  61596.     AX = 9E01h
  61597. Return: ???
  61598. Desc:    this function specifies that INTMON should assume that any interrupts
  61599.       on which it is currently awaiting a return have completed (i.e.
  61600.       interrupts which never return such as INT 20 and INT 27)
  61601. SeeAlso: AX=9E00h,AX=9E03h
  61602. --------G-2F9E02-----------------------------
  61603. INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
  61604.     AX = 9E02h
  61605. Return: ???
  61606. SeeAlso: AX=9E00h
  61607. --------G-2F9E03-----------------------------
  61608. INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
  61609.     AX = 9E03h
  61610.     BH = interrupt number???
  61611. Return: ???
  61612. Note:    if AL > 03h on entry, INTMON 2.1 returns immediately
  61613. SeeAlso: AX=9E00h,AX=9E01h
  61614. --------G-2F9F00-----------------------------
  61615. INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
  61616.     AX = 9F00h
  61617. Return: AX = FFFFh if installed
  61618. Program: INTCFG is an optionally-resident control program for INTMON by Celso
  61619.       Minnitti, Jr.
  61620. SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
  61621. --------G-2F9F01-----------------------------
  61622. INT 2F U - INTCFG v2.1 - ???
  61623.     AX = 9F01h
  61624.     ???
  61625. Return: ???
  61626. SeeAlso: AX=9F00h
  61627. --------G-2F9F30-----------------------------
  61628. INT 2F U - INTCFG v2.1 - GET ???
  61629.     AX = 9F30h
  61630. Return: AX = ??? (0002h)
  61631. SeeAlso: AX=9F00h
  61632. --------G-2F9F49-----------------------------
  61633. INT 2F U - INTCFG v2.1 - UNINSTALL
  61634.     AX = 9F49h
  61635. Return: AX,DX,DS,ES destroyed
  61636. SeeAlso: AX=9F00h
  61637. --------E-2FA1--BX0081-----------------------
  61638. INT 2F - Ergo DOS extenders - INSTALLATION CHECK
  61639.     AH = A1h
  61640.     BX = 0081h
  61641.     AL = which
  61642.         FEh OS/286,OS/386
  61643.         FFh HummingBoard DOS extender
  61644.     ES:DI -> 16-byte buffer
  61645. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  61646. Note:    since TKERNEL is a licensed version, it is likely that subfunctions
  61647.       BX=0082h and BX=0084h are present and function identically to the
  61648.       AX=FBA1h/BX=008xh calls
  61649. SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  61650. --------m-2FA189-----------------------------
  61651. INT 2F U - Biologic HRAMDEV.SYS - API
  61652.     AX = A189h
  61653.     BX = subfunction
  61654.         0000h set ???
  61655.         0001h remove ???
  61656.         0002h get status ???
  61657.         0003h enable ???
  61658.         0004h disable ???
  61659.         0005h set ??? flag
  61660.         0006h clear ??? flag
  61661.         0007h set ??? flag
  61662.         0008h clear ??? flag
  61663.         0009h set ???
  61664.     ES:DI -> function-specific arguments
  61665.         if func 0000h: 20-byte buffer containing ???
  61666.         if func 0001h: 20-byte buffer for returned ???
  61667.         if func 0002h: 16-byte buffer for returned ???
  61668.         if func 0009h: WORD containing ???
  61669. Return: BX = A189h if installed
  61670.     AH = status
  61671.         00h successful
  61672.         FFh failed or invalid function number
  61673. Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
  61674.       provides improved high memory access under MS-DOS 5.0
  61675. Note:    functions 00h and 01h use a stack of four entries; function 01h always
  61676.       removes the values stored with the most recent function 00h call
  61677.       which has not yet been matched with a function 01h call.
  61678. --------U-2FA4E0-----------------------------
  61679. INT 2F - Futurus Team - INSTALLATION CHECK
  61680.     AX = A4E0h
  61681. Return: AL = 52h ("R") if installed
  61682.         AH = major version plus 30h ("0")
  61683.         ES:BX -> ??? (INT A4 handler???)
  61684. Note:    older versions of Right Hand Man (from which Team evolved) store the
  61685.       signature "RH" at offset 103h in the INT 2F handler's segment
  61686. SeeAlso: INT A4"Right Hand Man"
  61687. --------U-2FA900-----------------------------
  61688. INT 2F - METZTSR.COM - INSTALLATION CHECK
  61689.     AX = A900h
  61690.     CF set
  61691. Return: CF clear if resident
  61692.         AX = 97FFh
  61693.     CF set if not present
  61694. Notes:    METZTSR.COM prevents METZ applications (such as the MAGIC screen
  61695.       saver) inactivity timeout while running a DOSapp under MS Windows.
  61696.     the default multiplex number is A9h, but may be set to any value from
  61697.       80h to FFh with a commandline switch
  61698. SeeAlso: AX=A901h,AX=A902h
  61699. --------U-2FA901-----------------------------
  61700. INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
  61701.     AX = A901h
  61702.     CF set
  61703. Return: CF clear if successful
  61704.         AX:DX = BIOS time at which INT 09 was last invoked
  61705.     CF set if not present
  61706. SeeAlso: INT 09,INT 1A/AH=00h
  61707. --------U-2FA902-----------------------------
  61708. INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
  61709.     AX = A902h
  61710.     BL = new value
  61711.         00h Ctrl-Alt-Del not allowed
  61712.         else Ctrl-Alt-Del allowed (startup default is 01h)
  61713.     CF set
  61714. Return: CF clear if successful
  61715.         AX = 97FFh
  61716.     CF set if not resident
  61717. SeeAlso: AX=A903h
  61718. --------U-2FA903-----------------------------
  61719. INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
  61720.     AX = A903h
  61721.     CF set
  61722. Return: CF clear if successful
  61723.         AX = 97FFh if Ctrl-Alt-Del allowed
  61724.         AX = 0000h if Ctrl-Alt-Del not allowed
  61725.     CF set if not resident
  61726. SeeAlso: AX=A902h
  61727. --------U-2FAA00-----------------------------
  61728. INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
  61729.     AX = AA00h
  61730. Return: AL = 00h not installed
  61731.          FFh installed
  61732. Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
  61733. --------f-2FAB00-----------------------------
  61734. INT 2F - Btrieve Multi-User - INSTALLATION CHECK
  61735.     AX = AB00h
  61736. Return: AL = 4Dh if installed
  61737. SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
  61738. --------f-2FAB01-----------------------------
  61739. INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
  61740.     AX = AB01h
  61741.     BX = process ID
  61742.     DS:DX -> 38-byte parameter record (see INT 7B"Btrieve")
  61743. Return: AL = status
  61744.         00h OK
  61745.         other retry after calling INT 7F/AX=0200h
  61746. SeeAlso: AX=AB00h,AX=AB02h,INT 7B"Btrieve",INT 7F/AX=0200h
  61747. --------f-2FAB02-----------------------------
  61748. INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
  61749.     AX = AB02h
  61750. Return: AL = 00h successful
  61751.         BX = process ID
  61752.     AL > 00h failed, retry after calling INT 7F/AX=0200h
  61753. SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
  61754. --------V-2FAC00-----------------------------
  61755. INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
  61756.     AX = AC00h
  61757. Return: AX = FFFFh
  61758.     ES:DI -> ??? (graphics data?) (not documented)
  61759. Note:    this installation check was moved here to avoid the conflict with the
  61760.       CD-ROM extensions that occurred in DOS 4.00
  61761. SeeAlso: AX=1500h"GRAPHICS"
  61762. --------V-2FAD00-----------------------------
  61763. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
  61764.     AX = AD00h
  61765. Return: AL = FFh if installed
  61766.         BX = ??? (0100h for MS-DOS 3.3+)
  61767. Note:    DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
  61768.       subfunctions listed here
  61769. --------O-2FAD00-----------------------------
  61770. INT 2F U - DR-DOS 3.41,5.0 KEYB - INSTALLATION CHECK
  61771.     AX = AD00h
  61772. Return: AX = FFFFh if installed
  61773. SeeAlso: AX=AD80h
  61774. --------V-2FAD01-----------------------------
  61775. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
  61776.     AX = AD01h
  61777.     BX = new code page
  61778. Return: CF clear if successful
  61779.         AX = 0001h
  61780.     CF set on error (unsupported code page)
  61781.         AX = 0000h
  61782. SeeAlso: AX=AD02h
  61783. --------O-2FAD01-----------------------------
  61784. INT 2F U - DR-DOS 3.41,5.0 KEYB - GET CONFIGURATION
  61785.     AX = AD01h
  61786. Return: BX = current code page
  61787.     CX = current keyboard layout (0100h = US, 0102h = foreign)
  61788.     ES = resident code segment
  61789. SeeAlso: AX=AD83h
  61790. --------V-2FAD02-----------------------------
  61791. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
  61792.     AX = AD02h
  61793. Return: CF set if code page never set
  61794.         AX = 0001h
  61795.         BX = FFFFh (assume first hardware code page)
  61796.     CF clear if successful
  61797.         BX = current code page
  61798. SeeAlso: AX=AD01h,AX=AD03h
  61799. --------V-2FAD03-----------------------------
  61800. INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
  61801.     AX = AD03h
  61802.     ES:DI -> buffer for code page information (see #1548)
  61803.     CX = size of buffer in bytes
  61804. Return: CF set if buffer too small
  61805.     CF clear if successful
  61806.         ES:DI buffer filled
  61807. SeeAlso: AX=AD01h,AX=AD02h
  61808.  
  61809. Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
  61810. Offset    Size    Description    (Table 1548)
  61811.  00h    WORD    number of software code pages
  61812.  02h    WORD    ??? (0003h)
  61813.  04h    WORD    number of hardware code pages
  61814.  06h  N WORDs    hardware code page numbers
  61815.       N WORDs    software (prepared) code pages (FFFFh if not yet prepared)
  61816. --------V-2FAD04-----------------------------
  61817. INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
  61818.     AX = AD04h
  61819.     ???
  61820. Return: ???
  61821. --------V-2FAD10-----------------------------
  61822. INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
  61823.     AX = AD10h
  61824.     ???
  61825. Return: AX = FFFFh
  61826.     BX = ??? (0100h in PC-DOS 4.01)
  61827. --------V-2FAD10-----------------------------
  61828. INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
  61829.     AX = AD10h
  61830.     ???
  61831. Return: CF clear if successful
  61832.     CF set on error
  61833. Note:    this function is a NOP if the active code page has never been set
  61834.       (AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
  61835. --------V-2FAD40-----------------------------
  61836. INT 2F - DOS 4+ - ???
  61837.     AX = AD40h
  61838.     DX = ???
  61839.     ???
  61840. Return: ???
  61841. Note:    called by PC-DOS 4.01 PRINT.COM
  61842. --------K-2FAD80-----------------------------
  61843. INT 2F u - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
  61844.     AX = AD80h
  61845. Return: AL = FFh if installed
  61846.         BX = version number (BH = major, BL = minor)
  61847.         ES:DI -> internal data (see #1549)
  61848. Notes:    MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
  61849.     this function was undocumented prior to the release of DOS 5.0
  61850.  
  61851. Format of KEYB internal data:
  61852. Offset    Size    Description    (Table 1549)
  61853.  00h    DWORD    original INT 09
  61854.  04h    DWORD    original INT 2F
  61855.  08h  6 BYTEs    ???
  61856.  0Eh    WORD    flags
  61857.  10h    BYTE    ???
  61858.  11h    BYTE    ???
  61859.  12h  4 BYTEs    ???
  61860.  16h  2 BYTEs    country ID letters
  61861.  18h    WORD    current code page
  61862. ---DOS 3.3---
  61863.  1Ah    WORD    pointer to first item in list of code page tables???
  61864.  1Ch    WORD    pointer to ??? item in list of code page tables
  61865.  1Eh  2 BYTEs    ???
  61866.  20h    WORD    pointer to key translation data (see #1551)
  61867.  22h    WORD    pointer to last item in code page table list (see #1550)
  61868.  24h  9 BYTEs    ???
  61869. ---DOS 4.01---
  61870.  1Ah  2 BYTEs    ???
  61871.  1Ch    WORD    pointer to first item in list of code page tables???
  61872.  1Eh    WORD    pointer to ??? item in list of code page tables
  61873.  20h  2 BYTEs    ???
  61874.  22h    WORD    pointer to key translation data (see #1551)
  61875.  24h    WORD    pointer to last item in code page table list (see #1550)
  61876.  26h  9 BYTEs    ???
  61877.  
  61878. Format of code page table list entries:
  61879. Offset    Size    Description    (Table 1550)
  61880.  00h    WORD    pointer to next item, FFFFh = last
  61881.  02h    WORD    code page
  61882.  04h  2 BYTEs    ???
  61883.  
  61884. Format of KEYB translation data:
  61885. Offset    Size    Description    (Table 1551)
  61886.  00h    WORD    size of data in bytes, including this word
  61887.  02h N-2 BYTEs    ???
  61888. --------K-2FAD81-----------------------------
  61889. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
  61890.     AX = AD81h
  61891.     BX = code page (see INT 21/AX=6601h)
  61892. Return: CF set on error
  61893.         AX = 0001h (code page not available)
  61894.     CF clear if successful
  61895. Notes:    called by DISPLAY.SYS
  61896.     this function was undocumented prior to the release of DOS 5.0
  61897. SeeAlso: AX=AD82h
  61898. --------K-2FAD82-----------------------------
  61899. INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
  61900.     AX = AD82h
  61901.     BL = new state
  61902.         00h US keyboard (Control-Alt-F1)
  61903.         FFh foreign keyboard (Control-Alt-F2)
  61904. Return: CF set on error (BL not 00h or FFh)
  61905.     CF clear if successful
  61906. Note:    this function was undocumented prior to the release of DOS 5.0
  61907. SeeAlso: AX=AD81h,AX=AD83h
  61908. --------K-2FAD83-----------------------------
  61909. INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
  61910.     AX = AD83h
  61911. Return: BL = current state
  61912.         00h US keyboard
  61913.         FFh foreign keyboard
  61914. SeeAlso: AX=AD82h
  61915. --------l-2FAE00-----------------------------
  61916. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
  61917.     AX = AE00h
  61918.     DX = magic value FFFFh
  61919.     CH = FFh
  61920.     CL = length of command line tail (4DOS v4.0)
  61921.     DS:BX -> command line buffer (see #1552)
  61922.     DS:SI -> command name buffer (see #1553)
  61923.     DI = 0000h (4DOS v4.0)
  61924. Return: AL = FFh if this command is a TSR extension to COMMAND.COM
  61925.     AL = 00h if the command should be executed as usual
  61926. Notes:    This call provides a mechanism for TSRs to install permanent
  61927.       extensions to the command repertoire of COMMAND.COM.    It appears
  61928.       that COMMAND.COM makes this call before executing the current
  61929.       command line, and does not execute it itself if the return is FFh.
  61930.     APPEND hooks this call, to allow subsequent APPEND commands to
  61931.       execute without re-running APPEND
  61932. SeeAlso: AX=AE01h
  61933.  
  61934. Format of COMMAND.COM command line buffer:
  61935. Offset    Size    Description    (Table 1552)
  61936.  00h    BYTE    max length of command line, as in INT 21/AH=0Ah
  61937.  01h    BYTE    count of bytes to follow, excluding terminating 0Dh
  61938.       N BYTEs    command line text, terminated by 0Dh
  61939.  
  61940. Format of command name buffer:
  61941. Offset    Size    Description    (Table 1553)
  61942.  00h    BYTE    length of command name
  61943.  01h  N BYTEs    uppercased command name (blank-padded to 11 chars by 4DOS v4)
  61944. --------l-2FAE01-----------------------------
  61945. INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
  61946.     AX = AE01h
  61947.     DX = magic value FFFFh
  61948.     CH = 00h
  61949.     CL = length of command name (4DOS v4.0)
  61950.     DS:BX -> command line buffer (see #1552)
  61951.     DS:SI -> command name buffer (see #1553)
  61952. Return: DS:SI buffer updated
  61953.       if length byte is nonzero, the following bytes contain the uppercase
  61954.       internal command to execute and the command line buffer contains the
  61955.       command's parameters (the first DS:[SI] bytes are ignored)
  61956. Notes:    this call requests execution of the command which a previous call to
  61957.       AX=AE00h indicated was resident
  61958.     APPEND hooks this call
  61959. BUG:    Novell DOS 7.0's COMMAND.COM will attempt to run a disk program with
  61960.       the indicated name even if the returned length byte is zero, because
  61961.       the register used to flag this case is clobbered without first
  61962.       checking it.    The workaround is to set the command name buffer to
  61963.       "REM" followed by enough blanks to pad out the original command's
  61964.       length, which will also work with MS-DOS 6.
  61965.       (from padgett@tccslr.dnet.mmc.com)
  61966. SeeAlso: AX=AE00h
  61967. ----------2FAF-------------------------------
  61968. INT 2F U - ???
  61969.     AH = AFh
  61970.     ???
  61971. Return: ???
  61972. --------V-2FB000-----------------------------
  61973. INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
  61974.     AX = B000h
  61975. Return: AL = status
  61976.         00h not installed, OK to install
  61977.         01h not installed, not OK to install
  61978.         FFh installed
  61979. Notes:    called by DISPLAY.SYS
  61980.     documented for DOS 5.0, but undocumented in prior versions
  61981. SeeAlso: AX=2300h,AX=2E00h,AX=B001h
  61982. --------V-2FB001-----------------------------
  61983. INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
  61984.     AX = B001h
  61985.     DS:BX -> DWORD buffer for address of 8x8 font table
  61986. Return: buffer filled
  61987.     AL = FFh
  61988. Note:    PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
  61989.       MS-DOS 3.30 sets it to 0030h
  61990. SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
  61991. --------I-2FB400-----------------------------
  61992. INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
  61993.     AX = B400h
  61994. Return: AL = FFh if installed
  61995. --------I-2FB401-----------------------------
  61996. INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
  61997.     AX = B401h
  61998. Return: ES -> host screen buffer (PC ASCII format)
  61999.     ES unchanged if communications not started
  62000. --------I-2FB402-----------------------------
  62001. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  62002.     AX = B402h
  62003.     BX = ???
  62004. Return: ???
  62005. --------I-2FB403-----------------------------
  62006. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  62007.     AX = B403h
  62008.     ???
  62009. Return: ???
  62010. --------I-2FB404-----------------------------
  62011. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  62012.     AX = B404h
  62013.     ???
  62014. Return: ???
  62015. --------I-2FB405-----------------------------
  62016. INT 2F - IBM PC3270 EMULATION PROG v3 - ???
  62017.     AX = B405h
  62018.     ???
  62019. Return: ???
  62020. ----------2FB700-----------------------------
  62021. INT 2F - APPEND - INSTALLATION CHECK
  62022.     AX = B700h
  62023. Return: AL = status
  62024.         00h not installed
  62025.         FFh installed
  62026. Note:    MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
  62027.       a TopView-compatible environment
  62028. ----------2FB701-----------------------------
  62029. INT 2F U - APPEND v3.21 only - GET APPEND PATH
  62030.     AX = B701h
  62031. Return: ES:DI -> active APPEND path
  62032. Notes:    the only version of APPEND known to support this call is the APPEND
  62033.       shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
  62034.       "Incorrect APPEND Version" and aborts the caller
  62035.     use AX=B704h first, and only call this function if that one is not
  62036.       supported
  62037. SeeAlso: AX=B704h
  62038. ----------2FB702-----------------------------
  62039. INT 2F - APPEND - VERSION CHECK
  62040.     AX = B702h
  62041. Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
  62042.     AL = major version number
  62043.     AH = minor version number, otherwise
  62044. SeeAlso: AX=B710h
  62045. ----------2FB703-----------------------------
  62046. INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
  62047.     AX = B703h
  62048.     ES:DI -> INT 21 handler APPEND should chain to
  62049. Return: ES:DI -> APPEND's INT 21 handler
  62050. Note:    each invocation of this function toggles a flag which APPEND uses to
  62051.       determine whether to chain to the user handler or the original
  62052.       INT 21
  62053. ----------2FB704-----------------------------
  62054. INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
  62055.     AX = B704h
  62056. Return: ES:DI -> active APPEND path (128 bytes max)
  62057. Note:    some versions of append do not support this call, and return ES
  62058.       unchanged; in this case, you should call AX=B701h to get the APPEND
  62059.       path
  62060. SeeAlso: AX=B701h
  62061. ----------2FB706-----------------------------
  62062. INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE
  62063.     AX = B706h
  62064. Return: BX = APPEND state (see #1554)
  62065. SeeAlso: AX=B707h
  62066.  
  62067. Bitfields for APPEND state:
  62068. Bit(s)    Description    (Table 1554)
  62069.  0    set if APPEND enabled
  62070.  1-11    reserved
  62071.  12    (DOS 5.0) set if APPEND applies directory search even if a drive has
  62072.       been specified
  62073.  13    set if /PATH flag active
  62074.  14    set if /E flag active (environment var APPEND exists)
  62075.  15    set if /X flag active
  62076. ----------2FB707-----------------------------
  62077. INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE
  62078.     AX = B707h
  62079.     BX = APPEND state bits (see #1554)
  62080. SeeAlso: AX=B706h
  62081. ----------2FB710-----------------------------
  62082. INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
  62083.     AX = B710h
  62084. Return: AX = current APPEND state (see #1554)
  62085.     BX = ??? (0000h in MS-DOS 3.30 and 5.00)
  62086.     CX = ??? (0000h in MS-DOS 3.30 and 5.00)
  62087.     DL = major version
  62088.     DH = minor version
  62089. SeeAlso: AX=B702h
  62090. ----------2FB711-----------------------------
  62091. INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE
  62092.     AX = B711h
  62093. Note:    if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
  62094.       6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
  62095.       is written over top of the filename passed to the INT 21h call.  The
  62096.       application must provide a sufficiently large buffer.     This state is
  62097.       reset after the next INT 21h call processed by APPEND.
  62098.     APPEND uses the byte at offset 3Dh in the PSP (see INT 21/AH=26h) to
  62099.       store the flag telling it to overwrite the filename
  62100. BUG:    DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
  62101.       INT 21/AH=6Ch
  62102. SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
  62103. --------N-2FB800-----------------------------
  62104. INT 2F - network - INSTALLATION CHECK
  62105.     AX = B800h
  62106. Return: AL = status
  62107.         00h        not installed
  62108.         nonzero installed
  62109.           BX = installed component flags (test in this order!)
  62110.            bit 6   server
  62111.            bit 2   messenger
  62112.            bit 7   receiver
  62113.            bit 3   redirector
  62114.            bit 1   LANPUP (LANtastic 4.0)
  62115. Notes:    this function is supported by LAN Manager, LANtastic, NetWare Lite,
  62116.       SilverNET, 10NET, etc.
  62117.     LANtastic and NetWare Lite use only BL for the return value, preserving
  62118.       BH; LAN Manager and DOS LAN Requester return BH=00h.    This permits
  62119.       differentiation between those two groups by setting BH to a nonzero
  62120.       value before the call and checking its value on return.
  62121. SeeAlso: AX=4E53h,AX=B809h
  62122. --------N-2FB800CXF041-----------------------
  62123. INT 2F - 10NET - INSTALLATION CHECK
  62124.     AX = B800h
  62125.     CX = F041h
  62126. Return: AL = status
  62127.         00h        not installed
  62128.         nonzero installed
  62129.         BX = installed component flags (test in this order!)
  62130.            bit 6   server
  62131.            bit 2   messenger
  62132.            bit 7   receiver
  62133.            bit 3   redirector
  62134.            bit 1   LANPUP (LANtastic 4.0)
  62135.         CX = 10Net data segment
  62136.         CX:DX -> 10Net Configuration Table
  62137.               (see #0821 at INT 21/AX=5E01h"10NET")
  62138. Note:    if CX <> F041h on entry, neither CX nor DX will be changed, and this
  62139.       call becomes identical to the standard installation check above
  62140. SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
  62141. --------N-2FB803-----------------------------
  62142. INT 2F - network - GET NETWORK EVENT POST HANDLER
  62143.     AX = B803h
  62144. Return: ES:BX -> current event post handler (see AX=B804h)
  62145. Note:    this function is supported by 10NET v5.0
  62146. SeeAlso: AX=B804h,AX=B903h
  62147. --------N-2FB804-----------------------------
  62148. INT 2F - network - SET NETWORK EVENT POST HANDLER
  62149.     AX = B804h
  62150.     CX = (10NET) 0370h if 10Windows is hooking post handler
  62151.     ES:BX -> new event post handler
  62152. Notes:    used in conjunction with AX=B803h to hook into the network event post
  62153.       routine
  62154.     this function is supported by 10NET v5.0
  62155.     The specified handler is called on any network event.  Two events are
  62156.       defined: message received and critical network error.
  62157. SeeAlso: AX=B803h,AX=B904h
  62158.  
  62159. (Table 1555)
  62160. Values network post routine is called with:
  62161.     AX = 0000h single block message
  62162.         DS:SI -> ASCIZ originator name
  62163.         DS:DI -> ASCIZ destination name
  62164.         ES:BX -> text header (see #1556)
  62165.     AX = 0001h start multiple message block
  62166.         CX = block group ID
  62167.         DS:SI -> ASCIZ originator name
  62168.         DS:DI -> ASCIZ destination name
  62169.     AX = 0002h multiple block text
  62170.         CX = block group ID
  62171.         ES:BX -> text header (see #1556)
  62172.     AX = 0003h end multiple block message
  62173.         CX = block group ID
  62174.     AX = 0004h message aborted due to error
  62175.         CX = block group ID
  62176.     AX = 0101h server received badly formatted network request
  62177.         Return: AX = FFFFh (PC LAN will process error)
  62178.     AX = 0102h unexpected network error
  62179.         ES:BX -> NCB (see INT 5C)
  62180.     AX = 0103h server received INT 24 error
  62181.         other registers as for INT 24, except AH is in BH
  62182.         Return: as below, but only 0000h and FFFFh allowed
  62183. Return: AX = response code
  62184.         0000h user post routine processed message
  62185.         0001h PC LAN will process message, but message window not displayed
  62186.         FFFFh PC LAN will process message
  62187.  
  62188. Format of text header:
  62189. Offset    Size    Description    (Table 1556)
  62190.  00h    WORD    length of text (maximum 512 bytes)
  62191.  02h  N BYTEs    text of message
  62192. Note:    all CRLF sequences in message text are replaced by 14h
  62193. --------N-2FB807-----------------------------
  62194. INT 2F - network - GET NetBIOS NAME NUMBER OF MACHINE NAME
  62195.     AX = B807h
  62196. Return: CH = NetBIOS name number of the machine name
  62197. SeeAlso: INT 21/AX=5E00h
  62198. --------N-2FB808-----------------------------
  62199. INT 2F U - network - RELINK KEYBOARD HANDLER
  62200.     AX = B808h
  62201.     ES:BX -> INT 09 handler network should call after it finishes INT 09
  62202. Notes:    this call replaces the address to which the network software chains on
  62203.       an INT 09 without preserving the original value.  This allows a prior
  62204.       handler to unlink, but does not allow a new handler to be added
  62205.       such that the network gets the INT 09 first unless the new handler
  62206.       completely takes over INT 09 and never chains.
  62207.     this function is called by the DOS 3.2 KEYBxx.COM
  62208. SeeAlso: AX=B908h
  62209. --------N-2FB809-----------------------------
  62210. INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK
  62211.     AX = B809h
  62212. Return: AH = major version
  62213.     AL = minor version (decimal)
  62214. Notes:    this function is also supported by SilverNET
  62215.     NetWare Lite returns its own version number rather than a PC LAN
  62216.       compatibility version
  62217. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LAN Manager"
  62218. --------N-2FB809-----------------------------
  62219. INT 2F - PC LAN Program - VERSION CHECK
  62220.     AX = B809h
  62221. Return: AH = minor version (decimal)
  62222.     AL = major version
  62223. Notes:    this function is also supported in this form by LAN Manager, the DOS
  62224.       LAN Requester, and 10NET v5.0
  62225.     10NET returns version 1.10 (AX=0A01h) for compatibility
  62226. SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
  62227. --------N-2FB80A-----------------------------
  62228. INT 2F - PC Network 1.00 - ???
  62229.     AX = B80Ah
  62230.     ???
  62231. Return: ???
  62232. Program: PC Network is an early networking package which was renamed the
  62233.       IBM PC Local Area Network Program (PC LAN Program) as of v1.10
  62234. Note:    called by RECEIVER (equivalent to NetWare Lite SERVER)
  62235. --------N-2FB80F-----------------------------
  62236. INT 2F - DOS LAN Requester - GET START PARAMETERS
  62237.     AX = B80Fh
  62238.     CX = size of return data buffer
  62239.     ES:DI -> return data buffer (see #1557)
  62240. Return: AX = status
  62241.          00h     network started
  62242.          nonzero network not started
  62243.     CX = number of bytes returned in buffer
  62244.     ES:DI buffer filled
  62245.  
  62246. Format of DOS LAN Requester return data buffer:
  62247. Offset    Size    Description    (Table 1557)
  62248.  00h    BYTE    major version
  62249.  01h    BYTE    minor version
  62250.  02h    WORD    configuration flags given when network was started (see #1558)
  62251.  04h 15 BYTEs    NET START machine name (space padded)
  62252.  13h    BYTE    00h
  62253.  14h 9    BYTEs    NET START domain name (NULL padded)
  62254.  1Dh    BYTE    00h
  62255.  1Eh 32 BYTEs    /WRK heuristics string (space padded, not terminated)
  62256.  3Eh    WORD    /SRV value
  62257.  40h    WORD    /ASG value
  62258.  42h    WORD    /NBC value
  62259.  44h    WORD    /NBS value
  62260.  46h    WORD    /BBC value
  62261.  48h    WORD    /BBS value
  62262.  4Ah    WORD    /PBC value
  62263.  4Ch    WORD    /PBS value
  62264.  4Eh    WORD    /PFS value
  62265.  50h    WORD    /PFT value
  62266.  52h    WORD    /PWT value
  62267.  54h    WORD    /KUC value
  62268.  56h    WORD    /KST value
  62269.  58h    WORD    /NVS value
  62270.  5Ah    WORD    /NMS value
  62271.  5Ch    WORD    /NDB value
  62272.  5Eh    WORD    /MBI value
  62273.  60h    BYTE    NetBIOS name number for machine name
  62274.  61h    BYTE    NetBIOS name number for domain name
  62275.  62h    WORD    NetBIOS sessions required for configuration
  62276.  64h    WORD    NetBIOS commands required for configuration
  62277.  66h    WORD    NetBIOS names required for configuration
  62278.  68h 128 BYTEs    NET START path (LANROOT)
  62279.  E8h    BYTE    00h
  62280.  
  62281. Bitfields for configuration flags:
  62282. Bit(s)    Description    (Table 1558)
  62283.  0    /NVS nonzero
  62284.  1    /NMS nonzero
  62285.  2    /API
  62286.  3    /HIM
  62287.  4    /LIM
  62288.  5    /ENC
  62289.  6    /POP
  62290.  7    /EMS
  62291.  8    /RPL
  62292.  9-12    reserved
  62293.  13    RDR started
  62294.  14    RCV started
  62295.  15    User is currently logged on
  62296. --------N-2FB900-----------------------------
  62297. INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
  62298.     AX = B900h
  62299. Return: AL = state
  62300.         00h if not installed
  62301.         FFh if installed
  62302. --------N-2FB901-----------------------------
  62303. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
  62304.     AX = B901h
  62305. Return: AL = ???
  62306.     ES:BX -> RECEIVER.COM INT 2F handler
  62307. Desc:    allows more efficient execution by letting the caller bypass any other
  62308.       INT 2F handlers which have been added since RECEIVER.COM was
  62309.       installed
  62310. --------N-2FB903-----------------------------
  62311. INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
  62312.     AX = B903h
  62313. Return: ES:BX -> POST handler
  62314. SeeAlso: AX=B803h,AX=B904h
  62315. --------N-2FB904-----------------------------
  62316. INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
  62317.     AX = B904h
  62318.     ES:BX -> new POST handler
  62319. SeeAlso: AX=B804h,AX=B903h
  62320. --------N-2FB905-----------------------------
  62321. INT 2F - PC Network RECEIVER.COM - GET FILENAME
  62322.     AX = B905h
  62323.     DS:BX -> 128-byte buffer for filename 1
  62324.     DS:DX -> 128-byte buffer for filename 2
  62325. Return: buffers filled from RECEIVER.COM internal buffers
  62326. Note:    use of filenames is unknown, but one appears to be for storing messages
  62327. SeeAlso: AX=B906h
  62328. --------N-2FB906-----------------------------
  62329. INT 2F - PC Network RECEIVER.COM - SET FILENAME
  62330.     AX = B906h
  62331.     DS:BX -> 128-byte buffer for filename 1
  62332.     DS:DX -> 128-byte buffer for filename 2
  62333. Return: RECEIVER.COM internal buffers filled from user buffers
  62334. Note:    use of filenames is unknown, but one appears to be for storing messages
  62335. SeeAlso: AX=B905h
  62336. --------N-2FB908-----------------------------
  62337. INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
  62338.     AX = B908h
  62339.     ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
  62340. Note:    this call replaces the address to which RECEIVER.COM chains on an
  62341.       INT 09 without preserving the original value.     This allows a prior
  62342.       handler to unlink, but does not allow a new handler to be added
  62343.       such that RECEIVER gets the INT 09 first.
  62344. SeeAlso: AX=B808h
  62345. --------V-2FBC00-----------------------------
  62346. INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
  62347.     AX = BC00h
  62348. Return: AL = state
  62349.         00h not installed, OK to install
  62350.         01h not installed, not OK to install
  62351.         FFh installed
  62352.         BX = 5456h ("TV")
  62353. Range:    AH=80h to AH=FFh, selected by commandline switch
  62354. SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
  62355. --------s-2FBC00BX3F3F-----------------------
  62356. INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
  62357.     AX = BC00h
  62358.     BX = 3F3Fh ('??')
  62359.     CX = 0000h
  62360.     DX = 0000h
  62361. Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
  62362. Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
  62363.       of sound boards; its primary programmer was Bryan Crane
  62364. SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
  62365. --------s-2FBC01-----------------------------
  62366. INT 2F - MediaVision MVSOUND.SYS - GET VERSION
  62367.     AX = BC01h
  62368.     BX = magic value 6D20h ('m ')
  62369.     CX = magic value 2076h (' v')
  62370.     DX = magic value 2020h ('  ')
  62371. Return: BX = ASCII major version (leading zeros significant)
  62372.     CX = ASCII minor version (leading zeros significant)
  62373. SeeAlso: AX=BC00h/BX=3F3Fh
  62374. --------s-2FBC02-----------------------------
  62375. INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
  62376.     AX = BC02h
  62377. Return: BX:DX -> state table
  62378. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
  62379. --------s-2FBC03-----------------------------
  62380. INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
  62381.     AX = BC03h
  62382. Return: BX:DX -> function table
  62383. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
  62384. --------s-2FBC04-----------------------------
  62385. INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
  62386.     AX = BC04h
  62387. Return: AX = 4D56h ('MV')
  62388.     BL = DMA channel
  62389.     CL = IRQ number
  62390. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
  62391. --------V-2FBC06-----------------------------
  62392. INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
  62393.     AX = BC06h
  62394. Return: BX = 5456h ("TV")
  62395.     CH = major version
  62396.     CL = minor version
  62397.     DL = revision
  62398. SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
  62399. --------s-2FBC06-----------------------------
  62400. INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
  62401.     AX = BC06h
  62402. Return: AX = 4D56h ('MV')
  62403.     DX:BX -> status string (first byte 0Ch if no status message to display)
  62404. SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
  62405. --------s-2FBC0B-----------------------------
  62406. INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
  62407.     AX = BC0Bh
  62408. Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
  62409. SeeAlso: AX=BC00h/BX=3F3Fh
  62410. --------U-2FBE00-----------------------------
  62411. INT 2F - REDVIEW - INSTALLATION CHECK
  62412.     AX = BE00h
  62413. Return: AL = FFh if installed
  62414. Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
  62415.       copies data sent to standard output to standard error when the
  62416.       former has been redirected to a file, thus allowing the data to
  62417.       be seen on the screen at the same time it is captured in a file
  62418. --------N-2FBF00-----------------------------
  62419. INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
  62420.     AX = BF00h
  62421. Return: AL = FFh if installed
  62422. --------N-2FBF01-----------------------------
  62423. INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
  62424.     AX = BF01h
  62425.     ???
  62426. Return: ???
  62427. --------N-2FBF80-----------------------------
  62428. INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
  62429.     AX = BF80h
  62430.     ES:DI -> FAR entry point to IFS handler in REDIRIFS
  62431. Return: AL = FFh if installed
  62432.         ES:DI -> internal workspace
  62433. Note:    all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
  62434. --------F-2FC0-------------------------------
  62435. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
  62436.     AH = C0h
  62437.     AL = function code (01h to 15h)
  62438. Return: ???
  62439. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
  62440. --------N-2FC000-----------------------------
  62441. INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
  62442.     AX = C000h
  62443. Return: AL = FFh if installed
  62444.         DX:BX -> FAR entry point (see #1559,#1560,#1561)
  62445.         ES:SI -> signature string "LINKSUP$"
  62446. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  62447. Note:    on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
  62448.       its search for a previous installation
  62449. SeeAlso: AX=5100h
  62450.  
  62451. (Table 1559)
  62452. Call LSL function "Request MLID Registration" with:
  62453.     BX = 0001h
  62454.     ES:SI -> registration??? record (see #1563)
  62455.     DS:DI -> buffer for LSL information block (see #1564)
  62456. Return: AX = completion code (0000h,8001h) (see #1562)
  62457.     DS:DI buffer filled if successful
  62458.     BX,CX corrupted
  62459. Note:    see "Novell LAN Driver Developer's Guide, Volume III" for more details
  62460.  
  62461. (Table 1560)
  62462. Call LSL function "get support entry points" with:
  62463.     BX = 0002h
  62464.     ES:SI -> buffer for entry point record (see #1565)
  62465. Return: ES:SI buffer filled
  62466.  
  62467. (Table 1561)
  62468. Call LSL function "Request MLID API entry point" with:
  62469.     BX = 0003h
  62470. Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
  62471.         (call with BX=function 00h-10h, not range-checked)
  62472. Note:    LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
  62473.  
  62474. (Table 1562)
  62475. Values for LSL completion code:
  62476.  0000h    successful
  62477.  8001h    out of resources
  62478.  8002h    bad parameter
  62479.  8003h    no more items
  62480.  8004h    item not present
  62481.  8005h    failed
  62482.  8006h    receive overflow
  62483.  8007h    canceled
  62484.  8008h    bad command
  62485.  8009h    duplicate entry
  62486.  800Ah    no such handler
  62487.  800Bh    no such driver
  62488.  
  62489. Format of LSL registration record:
  62490. Offset    Size    Description    (Table 1563)
  62491.  00h    DWORD    -> ??? FAR function (to be called with ES:SI -> ??? and
  62492.           returning AX = completion code)
  62493.  04h    DWORD    -> ???
  62494.  08h    DWORD    -> ??? data (at least 3Eh bytes)
  62495.  
  62496. Format of LSL information block:
  62497. Offset    Size    Description    (Table 1564)
  62498.  00h    DWORD    -> ??? entry point (called with BX=function 00h-11h)
  62499.  04h    WORD    ???
  62500.  06h    WORD    ???
  62501. Note:    due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
  62502.       will crash if the above entry point is called with BX=0012h
  62503.  
  62504. Format of entry point record:
  62505. Offset    Size    Description    (Table 1565)
  62506.  00h    DWORD    pointer to protocol support entry point in LSL (see #1566)
  62507.  04h    DWORD    pointer to general support entry point in LSL (see #1567)
  62508.  
  62509. (Table 1566)
  62510. Call protocol support entry point with:
  62511.     BX = function number
  62512.         0000h ???
  62513.         0001h ???
  62514.         0002h ???
  62515.         0003h "ScheduleAESEvent"
  62516.         ES:SI -> AES ECB to be scheduled (see #1570)
  62517.         Return: ES,SI preserved
  62518.         0004h "CancelAESEvent"
  62519.         ES:SI -> ECB to be cancelled (see #1570)
  62520.         Return: ES,SI preserved
  62521.         0005h "GetIntervalMarker"
  62522.         Return: DX:AX = current interval marker in milliseconds
  62523.             all other registers preserved
  62524.         0006h "RegisterStack"
  62525.         AX = logical board number
  62526.         ES:SI -> bound stack info structure (see #1580)
  62527.         Return: BX = assigned Stack ID if AX=0000h
  62528.         0007h "DeRegisterStack"
  62529.         AX = protocol stack's assigned Stack ID
  62530.         0008h "RegisterDefaultStack"
  62531.         AX = logical board number
  62532.         ES:SI -> stack info structure (see #1581)
  62533.         0009h "DeRegisterDefaultStack"
  62534.         AX = logical board number
  62535.         000Ah "RegisterPrescanStack"
  62536.         AX = logical board number
  62537.         ES:SI -> stack info structure (see #1581)
  62538.         000Bh "DeRegisterPrescanStack"
  62539.         AX = logical board number
  62540.         000Ch "SendPacket"
  62541.         ES:SI -> send ECB
  62542.         Return: interrupts disabled
  62543.         000Dh ???
  62544.         000Eh ???
  62545.         000Fh ???
  62546.         0010h "GetStackIDFromName"
  62547.         ES:SI -> counted NUL-terminated protocol name (max 15 chars)
  62548.         Return: BX = Stack ID if AX=0000h
  62549.         0011h "GetPIDFromStackIDBoard"
  62550.         AX = Stack ID for protocol
  62551.         CX = logical board number
  62552.         ES:SI -> 6-byte buffer for protocol ID
  62553.         0012h "GetMLIDControlEntry"
  62554.         AX = logical board number
  62555.         Return: ES:SI -> MLID control handler (see #1568) if AX=0000h
  62556.         0013h "GetProtocolControlEntry"
  62557.         AX = Stack ID or
  62558.             FFFEh Prescan stack
  62559.                 CX = logical board number
  62560.             FFFFh default protocol
  62561.                 CX = logical board number
  62562.         Return: ES:SI -> protocol stack control entry point if AX=0000h
  62563.                   (see #1569)
  62564.         0014h "GetLSLStatistics"
  62565.         Return: AX = 0000h (successful)
  62566.             ZF set
  62567.             ES:SI -> LSL statistics table (see #1572)
  62568.         0015h "BindStack"
  62569.         AX = protocol stack's assigned Stack ID
  62570.         CX = logical board number
  62571.         0016h "UnbindStack"
  62572.         AX = protocol stack's assigned Stack ID
  62573.         CX = logical board number
  62574.         0017h "AddProtocolID"
  62575.         AX = frame type ID code
  62576.         ES:SI -> 6-byte protocol ID
  62577.         CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
  62578.         0018h "RelinquishControl"
  62579.         Return: after LSL performs any necessary background processing
  62580.         0019h "GetLSLConfiguration"
  62581.         Return: AX = 0000h (successful)
  62582.             ZF set
  62583.             ES:SI -> LSL configuration table (see #1571)
  62584.         001Ah "GetTickMarker"
  62585.         Return: AX = number of 55ms ticks since LSL loaded
  62586.             BX destroyed
  62587. Return: AX = completion code (see #1562)
  62588.     ZF set if successful
  62589.     SS:SP, DS, BP preserved; most other registers may be destroyed
  62590.  
  62591. (Table 1567)
  62592. Call general support entry point with:
  62593.     BX = function number
  62594.         0000h "Allocate Memory" (obsolete)
  62595.          always returns AX=8008h (BAD_COMMAND)
  62596.         0001h "Free Memory" (obsolete)
  62597.          always returns AX=8008h (BAD_COMMAND)
  62598.         0002h "Realloc Memory" (obsolete)
  62599.          always returns AX=8008h (BAD_COMMAND)
  62600.         0003h "Memory Statistics" (obsolete)
  62601.          always returns AX=8008h (BAD_COMMAND)
  62602.         0004h "Add Memory To Pool" (obsolete)
  62603.          always returns AX=8008h (BAD_COMMAND)
  62604.         0005h "AddGeneralService"
  62605.         ES:SI -> General Service Control Block (see #1582)
  62606.         0006h "RemoveGeneralService"
  62607.         ES:SI -> General Service Control Block (see #1582)
  62608.         0007h "GetNETcfgPath"
  62609.         Return: AX = 0000h (successful)
  62610.             DS:DX -> ASCIZ pathname for NET.CFG
  62611.         0008h U ???     (in LSL 1.10)
  62612.         Return: AX = 0000h
  62613.             ES:SI -> ??? (a 22-byte data area)
  62614.         000Ah "GetCriticalSectionStatus"
  62615.         Return: BX = total outstanding calls to "StartCriticalSection"
  62616.         000Bh "ServiceEvents"
  62617.         interrupts disabled
  62618.         Return: interrupts disabled
  62619.         0010h "GetStackECB"
  62620.         DS:DI -> Lookahead structure (see #1583)
  62621.         interrupts disabled
  62622.         Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
  62623.             interrupts disabled
  62624.         8000h-FFFFh reserved for user general service providers
  62625. Return: AX = completion code (see #1562)
  62626.     ZF set if successful
  62627.     SS:SP, DS, BP preserved
  62628.  
  62629. (Table 1568)
  62630. Call MLID control handler with:
  62631.     AX = logical board number
  62632.     BX = function number
  62633.         0000h "GetMLIDConfiguration"
  62634.         Return: ES:SI -> MLID's configuration table if successful
  62635.                   (see #1575 for format)
  62636.         0001h "GetMLIDStatistics"
  62637.         Return: ES:SI -> MLID's statistics table if successful
  62638.                   (see #1575 for format)
  62639.         0002h "AddMulticastAddress"
  62640.         ES:SI -> 6-byte multicast address to add
  62641.         0003h "DeleteMulticastAddress"
  62642.         ES:SI -> 6-byte multicast address to delete
  62643.         0005h "MLIDShutdown"
  62644.         CX = type
  62645.             0000h permanent (also deregisters from LSL)
  62646.             other temporary (shutdown hardware only)
  62647.         0006h "MLIDReset" reinitialize board / restart from temp shutdown
  62648.         0007h "Create Connection" (obsolete?)
  62649.         ???
  62650.         0008h "Delete Connection" (obsolete?)
  62651.         ???
  62652.         0009h "SetLookAheadSize"
  62653.         CX = requested lookahead size (00h-80h)
  62654.         0010h "PromiscuousChange"
  62655.         CX = what to receive promiscuously
  62656.             bit 0: MAC frames
  62657.             bit 1: non-MAC frames
  62658.         0011h "RegisterReceiveMonitor"
  62659.         CX = subfunction
  62660.             0000h disable receive monitoring
  62661.             else  enable receive monitoring
  62662.         ES:SI -> monitor receive routine
  62663.         ES:DI -> monitor transmit routine
  62664.         0012h "Driver Poll" (obsolete?)
  62665.         ???
  62666. Return: AX = completion code (see #1562)
  62667.     ZF set if successful
  62668. Note:    not all boards/MLIDs support function 0010h; see bit 13 in the MLID
  62669.       mode flags field of the MLID's configuration table
  62670.  
  62671. (Table 1569)
  62672. Call protocol stack control entry point with:
  62673.     BX = function number
  62674.         0000h "GetProtocolStackConfiguration"
  62675.         Return: ES:SI -> protocol stack's configuration table
  62676.                    (see #1574)
  62677.         0001h "GetProtocolStackStatistics"
  62678.         Return: ES:SI -> protocol stack's statistics table (see #1573)
  62679.         0002h "BindToMLID"
  62680.         CX = board number to bind to
  62681.         ES:SI -> implementation-dependant parameter string
  62682.         0003h "UnBindFromMLID"
  62683.         CX = board number from which protocol should unbind
  62684.         ES:SI -> optional implementation-dependant parameter string
  62685.         0004h "MLIDDeRegistered"
  62686.         CX = board number that has de-registered from LSL
  62687. Return: AX = status
  62688.         0000h successful
  62689.         else implementation-dependant error codes
  62690.     ZF set if successful
  62691.     SS:SP, DS, BP preserved
  62692.  
  62693. Format of AES ECB:
  62694. Offset    Size    Description    (Table 1570)
  62695.  00h    DWORD    "AESLink" pointer used by LSL for list management
  62696.  04h    DWORD    number of milliseconds to wait
  62697.  08h    DWORD    "AESStatus" (is set to 00000000h when AES ESR is invoked)
  62698.  0Ch    DWORD    -> function to be invoked when time expires
  62699.         ES:SI will point to this structure on entry,
  62700.         DS, BP, and SS:SP must be preserved.
  62701. SeeAlso: #1584
  62702.  
  62703. Format of LSL Configuration Table:
  62704. Offset    Size    Description    (Table 1571)
  62705.  00h    BYTE    major version of configuration table
  62706.  01h    BYTE    minor version of configuration table (decimal, 0-99)
  62707.  02h  8 BYTEs    reserved
  62708.  0Ah    BYTE    LSL major version (decimal)
  62709.  0Bh    BYTE    LSL minor version (decimal, 0-99)
  62710. ---LSL 1.0x ---
  62711.  0Ch 14 BYTEs    reserved
  62712. ---LSL 1.10+ ---
  62713.  0Ch    WORD    maximum number of boards which LSL can handle
  62714.  0Eh    WORD    maximum number of protocol IDs which LSL can handle
  62715.  10h 12 BYTEs    reserved
  62716.  
  62717. Format of LSL Statistics Table:
  62718. Offset    Size    Description    (Table 1572)
  62719.  00h    BYTE    major version of statistics table format
  62720.  01h    BYTE    minor version of statistics table format (decimal, 0-99)
  62721.  02h    WORD    "GenericCounters" number of counters in static portion of
  62722.           table
  62723.  04h    DWORD    "ValidCountersMask" bit mask indicating which generic
  62724.           counters are actually used.  Bit 31 = TotalTxPackets, bit 30
  62725.           is the next field, etc.
  62726.  08h    DWORD    "TotalTxPackets" total SendPacket requests made
  62727.  0Ch    DWORD    reserved
  62728.  10h    DWORD    reserved
  62729.  14h    DWORD    "AESEventsCount" number of completed AES events
  62730.  18h    DWORD    "PostponedEvents" number of events postponed due to critical
  62731.           sections inside the MLIDs
  62732.  1Ch    DWORD    "CancelAESFailures" number of times CancelAESEvent failed
  62733.  20h    DWORD    reserved
  62734.  24h    DWORD    reserved
  62735.  28h    DWORD    "TotalRxPackets" total number of GetStackECB requests
  62736.  2Ch    DWORD    "UnclaimedPackets" total number of packets not consumed by a
  62737.           protocol stack
  62738.  30h    WORD    "NumberCustom" number of custom variables that follow
  62739.  32h  N DWORDs    custom counters
  62740.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  62741.     var    length-prepended and NULL terminated string for Counter 0
  62742.     ...
  62743.     var    length-prepended and NULL terminated string for Counter N-1
  62744.  
  62745. Format of Protocol Stack Statistics Table:
  62746. Offset    Size    Description    (Table 1573)
  62747.  00h    BYTE    statistics table major version
  62748.  01h    BYTE    statistics table minor version (decimal, 0-99)
  62749.  02h    WORD    number of generic counters following
  62750.  04h    DWORD    "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
  62751.  08h    DWORD    TotalTxPackets
  62752.  0Ch    DWORD    TotalRxPackets
  62753.  10h    DWORD    IgnoredRxPackets
  62754.  14h    WORD    number of custom counters
  62755.  16h  N DWORDs    custom counters
  62756.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  62757.     var    length-prepended and NULL terminated string for Counter 0
  62758.     ...
  62759.     var    length-prepended and NULL terminated string for Counter N-1
  62760.  
  62761. Format of Protocol Stack Configuration Table:
  62762. Offset    Size    Description    (Table 1574)
  62763.  00h    BYTE    configuration table major version
  62764.  01h    BYTE    configuration table minor version (decimal, 0-99)
  62765.  02h    DWORD    -> counted NUL-terminated long descriptive name for protocol
  62766.  06h    DWORD    -> counted NUL-terminated short name for protocol (15 chars)
  62767.  0Ah    BYTE    protocol stack major version
  62768.  0Bh    BYTE    protocol stack minor version (decimal, 0-99)
  62769.  0Ch 16 BYTEs    reserved for future use
  62770.  
  62771. Format of MLID Configuration Table:
  62772. Offset    Size    Description    (Table 1575)
  62773.  00h 26 BYTEs    signature 'HardwareDriverMLID         ' (8 spaces on end)
  62774.  1Ah    BYTE    configuration table major version
  62775.  1Bh    BYTE    configuration table minor version (decimal, 0-99)
  62776.  1Ch  6 BYTEs    node address
  62777.  22h    WORD    MLID mode flags (see #1576)
  62778.  24h    WORD    board number
  62779.  26h    WORD    board instance (if more than one of same board installed)
  62780.  28h    WORD    maximum packet size
  62781.  2Ah    WORD    BestDataSize
  62782.  2Ch    WORD    WorstDataSize
  62783.  2Eh    DWORD    -> counted NUL-terminated long name for NIC
  62784.  32h    DWORD    -> counted NUL-terminated short name for NIC (8 chars max)
  62785.  36h    DWORD    -> counted NUL-terminated Frame and Media type
  62786.  3Ah    WORD    reserved (0000h)
  62787.  3Ch    WORD    frame type ID
  62788.  3Eh    WORD    TransportTime (milliseconds)
  62789.  40h    DWORD    -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
  62790.  44h    WORD    lookahead size
  62791.  46h    WORD    line speed (Mbps if high bit clear, else Kbps)
  62792.  48h    WORD    QueueDepth
  62793.  4Ah  6 BYTEs    reserved (0)
  62794.  50h    BYTE    driver major version
  62795.  51h    BYTE    driver minor version (decimal, 0-99)
  62796.  52h    WORD    bus/multicast flags (see #1577)
  62797.  54h    WORD    send retries
  62798.  56h    DWORD    ConfigTableLink
  62799.  5Ah    WORD    MLID sharing flags (see #1578)
  62800.  5Ch    WORD    slot number
  62801.  5Eh    WORD    I/O address 1
  62802.  60h    WORD    I/O range 1
  62803.  62h    WORD    I/O address 2
  62804.  64h    WORD    I/O range 2
  62805.  66h    DWORD    memory address 1
  62806.  6Ah    WORD    memory size 1
  62807.  6Ch    DWORD    memory address 2
  62808.  70h    WORD    memory size 2
  62809.  72h    BYTE    interrupt line 1
  62810.  73h    BYTE    interrupt line 2
  62811.  74h    BYTE    DMA line 1
  62812.  75h    BYTE    DMA line 2
  62813.  
  62814. Bitfields for MLID mode flags:
  62815. Bit(s)    Description    (Table 1576)
  62816.  15    MLID supports Octet Reversal
  62817.  14    node address is non-canonical
  62818.  13    promiscuous mode is supported
  62819.  12-8    reserved
  62820.  7    LDataSize field in LookAhead structure supported
  62821.  6    raw send supported
  62822.  5    MLID needs to be polled by LSL
  62823.  4    reserved (0)
  62824.  3    multicasting is supported
  62825.  2    not currently used by DOS ODI, set to 0.
  62826.  1    network card uses DMA.
  62827.  0    RealDriverBit, always set to 1.
  62828.  
  62829. Bitfields for bus/multicast flags:
  62830. Bit(s)    Description    (Table 1577)
  62831.  10-9    specialized multicast support
  62832.     00 = Group addressing is default for medium
  62833.     01 = Invalid
  62834.     10 = Filter group address in MLID.
  62835.     11 = Adapter filters group address.
  62836.  2    supports Micro Channel cards
  62837.  1    supports ISA cards
  62838.  0    supports EISA cards
  62839.  
  62840. Bitfields for MLID sharing flags:
  62841. Bit(s)    Description    (Table 1578)
  62842.  8    NIC can share DMA2
  62843.  7    NIC can share DMA1
  62844.  6    NIC can share IRQ2
  62845.  5    NIC can share IRQ1
  62846.  4    NIC can share Memory2
  62847.  3    NIC can share Memory1
  62848.  2    NIC can share IO2
  62849.  1    NIC can share IO1
  62850.  0    MLID is currently shut down
  62851.  
  62852. Format of MLID Statistics Table:
  62853. Offset    Size    Description    (Table 1579)
  62854.  00h    BYTE    driver statistics table major version
  62855.  01h    BYTE    driver statistics table minor version (decimal, 0-99)
  62856.  02h    WORD    number of generic counters (typically 13)
  62857.  04h    DWORD    "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
  62858.  08h    DWORD    TotalTxCount
  62859.  0Ch    DWORD    TotalRxCount
  62860.  10h    DWORD    NoECBAvailableCount
  62861.  14h    DWORD    TxTooBigCount
  62862.  18h    DWORD    TxTooSmallCount
  62863.  1Ch    DWORD    RxOverflowCount
  62864.  20h    DWORD    RxTooBigCount
  62865.  24h    DWORD    RxTooSmallCount
  62866.  28h    DWORD    TxMiscCount
  62867.  2Ch    DWORD    RxMiscCount
  62868.  30h    DWORD    TxRetryCount
  62869.  34h    DWORD    RxChecksumErrorCount
  62870.  38h    DWORD    RxMismatchCount
  62871.  3Ch    WORD    number of custom counters
  62872.  3Eh  N DWORDs    custom counters
  62873.       N DWORDs    -> CustomCounterStrN (one per custom counter)
  62874.     var    length-prepended and NULL terminated string for Counter 0
  62875.     ...
  62876.     var    length-prepended and NULL terminated string for Counter N-1
  62877.  
  62878. Format of bound stack info structure:
  62879. Offset    Size    Description    (Table 1580)
  62880.  00h    DWORD    -> protocol stack's short name (counted, NUL-terminated)
  62881.  04h    DWORD    -> receive handler
  62882.  08h    DWORD    -> control handler
  62883.  
  62884. Format of stack info structure:
  62885. Offset    Size    Description    (Table 1581)
  62886.  00h    DWORD    -> receive handler
  62887.  04h    DWORD    -> control handler
  62888.  
  62889. Format of General Service Control Block:
  62890. Offset    Size    Description    (Table 1582)
  62891.  00h    DWORD    -> next GSCB (maintained internally by LSL)
  62892.  04h    DWORD    -> entry point for general service handler
  62893.  08h    WORD    command code for this general service (8000h-FFFFh)
  62894. Note:    the control block must not be altered or deallocated until the general
  62895.       service is removed
  62896.  
  62897. Format of Lookahead structure:
  62898. Offset    Size    Description    (Table 1583)
  62899.  00h    DWORD    -> Media header
  62900.  04h    DWORD    -> lookahead buffer
  62901.  08h    WORD    length of lookahead buffer
  62902.  0Ah  6 BYTEs    protocol ID
  62903.  10h    WORD    logical board number
  62904.  12h    WORD    lookahead size
  62905.  
  62906. Format of ODI ECB:
  62907. Offset    Size    Description    (Table 1584)
  62908.  00h    DWORD    link to next ECB
  62909.  04h    DWORD    link to previous ECB
  62910.  08h    WORD    general status
  62911.         0000h received successfully
  62912.         8006h packet overflow
  62913.         8007h reception aborted (data not valid)
  62914.  0Ah    DWORD    -> event service routine or RETF (never 0000h:0000h)(see #1585)
  62915.  0Eh    WORD    protocol stack identifier
  62916.  10h  6 BYTEs    protocol ID (sending only)
  62917.  16h    WORD    MLID board number (sending only)
  62918.  18h  6 BYTEs    MAC destination address
  62919.  1Eh  4 BYTEs    driver workspace
  62920.  22h  4 BYTEs    protocol workspace
  62921.  26h    WORD    total length of sent buffer
  62922.  28h    WORD    fragment count
  62923.  2Ah  2 WORDs    segment,offset of first fragment buffer
  62924.  2Eh    WORD    length of first fragment buffer
  62925.     ...
  62926. SeeAlso: #1570
  62927.  
  62928. (Table 1585)
  62929. Values event service routine called with:
  62930.     ES:SI -> associated ODI ECB (see #1584)
  62931.     interrupts disabled
  62932. Return: DS,BP,SS,SP preserved
  62933.     interrupt disabled
  62934. Notes:    the service routine may invoke any IPX/ODI function except CloseSocket
  62935.     it is safe to send a packet and wait for completion if enough stack
  62936.       space is available
  62937. --------f-2FC000-----------------------------
  62938. INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
  62939.     AX = C000h
  62940. Return: AL = FFh if installed
  62941.        ES:DI -> signature string "FN32 32CHAR TSR"
  62942. Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
  62943. Note:    the TSR intercepts INT 21 calls and performs filename substitution by
  62944.       managing dictionary files in each directory which contains long
  62945.       filenames
  62946. --------M-2FC000-----------------------------
  62947. INT 2F - QMR - INSTALLATION CHECK
  62948.     AX = C000h
  62949. Return: AL = FFh if installed
  62950.         ES:DI -> signature string "QMR1!"
  62951. Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
  62952.       service interrupt (int 33h) and substitutes a fast software
  62953.       reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
  62954. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  62955. SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
  62956. --------V-2FC000-----------------------------
  62957. INT 2F - VGAsave v1.93 - INSTALLATION CHECK
  62958.     AX = C000h
  62959. Return: AL = FFh if installed
  62960.         BX = segment of resident code
  62961. Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
  62962.       Javurek
  62963. Range:    AH=C0h to AH=FFh, selected by scanning for a free multiplex number
  62964. Note:    the transient portion of VGAsave compares the first 38 bytes of the
  62965.       resident code (addressed through BX) against its own copy of the
  62966.       resident code to complete the installation check
  62967. SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
  62968. Index:    screen saver;VGAsave
  62969. --------V-2FC000-----------------------------
  62970. INT 2F - AD-DOS - INSTALLATION CHECK
  62971.     AX = C000h
  62972. Return: AL = FFh if installed
  62973.         BX = 4144h ('AD')
  62974.         CX = 2D44h ('-D')
  62975.         DX = 4F53h ('OS')
  62976. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  62977.       MS Windows
  62978. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  62979. SeeAlso: AX=C001h,AX=C003h,AX=C005h,AX=C007h,AX=C009h,AX=C020h,INT 14/AX=AA01h
  62980. Index:    screen saver;AD-DOS
  62981. --------U-2FC000-----------------------------
  62982. INT 2F U - WANG_ER.COM - INSTALLATION CHECK
  62983.     AX = C000h
  62984. Return: AL = FFh if installed
  62985.         ES = segment of resident code
  62986. Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
  62987.       with 3-mode floppy drives to read Wang document diskettes
  62988. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  62989. Note:    The installation check is completed by comparing the resident code
  62990.       with the copy in the transient program
  62991. --------i-2FC000-----------------------------
  62992. INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
  62993.     AX = C000h
  62994. Return: AL = FFh if multiplex number in use
  62995.         ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
  62996. Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
  62997.       ASPI host manager; it is part of the Personal Measure system
  62998.       activity monitor from Spirit of Performance, Inc.
  62999. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63000. SeeAlso: AX=C000h"PMEASURE"
  63001. --------i-2FC000-----------------------------
  63002. INT 2F - PMEASURE.EXE - INSTALLATION CHECK
  63003.     AX = C000h
  63004. Return: AL = FFh if multiplex number in use
  63005.         ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
  63006. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  63007.       is part of the Personal Measure system activity monitor from Spirit
  63008.       of Performance, Inc.
  63009. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63010. Note:    If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
  63011.       installed, PMEASURE.EXE uses the next highest free multiplex number.
  63012. SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
  63013. --------i-2FC000-----------------------------
  63014. INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
  63015.     AX = C000h
  63016. Return: AL = FFh if installed
  63017.     ES:DI -> signature string "PMEASUREHOOK"
  63018.     AX = C000 if not installed, per mux id conventions
  63019.     DH = major release number (binary)
  63020.     DL = minor release number (binary)
  63021. Program: The Personal Measure system activity monitor from Spirit of
  63022.       Performance, Inc. uses an extensible series of modules to hook
  63023.       into various operating system interfaces and monitor system calls.
  63024.       Current hook modules are ASPIHOOK.SYS for ASPI device activity
  63025.       and CDRHOOK.SYS for non-ASPI CD-ROM activity.     All hook modules
  63026.       share the same mux id.
  63027. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63028. SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
  63029. --------c-2FC000-----------------------------
  63030. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
  63031.     AX = C000h
  63032. Return: AL = FFh if installed
  63033.         SI = signature value 20D6h
  63034.         DI = signature value 8761h
  63035.         ES:BX -> configuration table (see #1586)
  63036.         CX = ??? (0300h)
  63037.         DX = ??? (0020h)
  63038. Program: PCACHE is the resident print spooler portion of PrintCache by
  63039.       LaserTools; it may use either memory or disk space to spool output
  63040. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63041. SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
  63042.  
  63043. Format of PrintCache configuration table:
  63044. Offset    Size    Description    (Table 1586)
  63045.  00h 26 BYTEs    ASCIZ signature string "TORQ Configuration Table: "
  63046.  1Ah  2 BYTEs    ???
  63047.  1Ch    DWORD    -> data table (see #1587)
  63048.  20h  4 BYTEs    ASCIZ version string ("3.1" for v3.1)
  63049.  24h  5 BYTEs    ???
  63050.  29h 12 BYTEs    ASCIZ version date string ("Aug 31 1993" for v3.1)
  63051.  35h    WORD    buffered port type (01h = LPT, 02h = COM)
  63052.  37h    WORD    buffered port BIOS port number
  63053.  39h  5 BYTEs    ASCIZ buffered port name ("LPTn" or "COMn")
  63054.  3Eh    WORD    physical port type (01h = LPT, 02h = COM)
  63055.  40h    WORD    physical port BIOS port number
  63056.  42h  5 BYTEs    ASCIZ physical port name ("LPTn" or "COMn")
  63057.  47h    BYTE    port driver IRQ
  63058.  48h 21 BYTEs    ???
  63059.  5Dh    WORD    buffer size in K
  63060.  5Fh 27 BYTEs    ???
  63061.  7Ah    BYTE    popup hotkey shift states (see INT 16/AH=02h)
  63062.  7Bh    BYTE    popup hotkey scan code (see INT 09h"IRQ1")
  63063.  7Ch  4 BYTEs    ???
  63064.  80h 20 BYTEs    ASCIZ printer type name
  63065.     ???
  63066.  
  63067. Format of PrintCache data table:
  63068. Offset    Size    Description    (Table 1587)
  63069.  00h  2 BYTEs    ???
  63070.  02h    DWORD    -> ??? entry point
  63071.     ???
  63072. --------U-2FC000-----------------------------
  63073. INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
  63074.     AX = C000h
  63075. Return: AL = FFh if installed
  63076.         BX = program ID (see #1588)
  63077.         CX = 464Bh (signature "FK")
  63078.         DX = revision number (DH = major, DL = minor)
  63079.         ES = resident segment of TSR
  63080. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  63081. SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
  63082.  
  63083. (Table 1588)
  63084. Values for Frank Kintrup TSR program ID:
  63085.  4153h    "AS"    ASCII.COM    ASCII table with paste function
  63086.  434Ch    "CL"    CLOCK.COM    clock with date/time display and alarm
  63087.  5043h    "PC"    PCALC.COM    programmer's calculator with paste function
  63088.  5343h    "SC"    SCRSAVE.COM    screen saver with mouse support and hotkey
  63089.  5544h    "UD"    UNDEL.COM    undelete program like SMARTCAN or DPROTECT
  63090. --------F-2FC000BX444B-----------------------
  63091. INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
  63092.     AX = C000h
  63093.     BX = 444Bh ('DK')
  63094.     CX = 4A4Eh ('AN')
  63095. Return: AL = status
  63096.         00h not installed, OK to install
  63097.         FFh installed
  63098.         BX = 646Bh ('dk')
  63099.         CX = 6A6Eh ('an')
  63100. Range:    AH=C0h to AH=FFh, selected automatically
  63101. SeeAlso: AH=C0h"MTEZ"
  63102. --------M-2FC001-----------------------------
  63103. INT 2F - QMR - REQUEST HARDWARE RESET
  63104.     AX = C001h
  63105. Return: ES = QMR code segment
  63106.     AL destroyed
  63107. Desc:    this function is used to force a full mouse reset when QMR is installed
  63108. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  63109. --------V-2FC001ES0000-----------------------
  63110. INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
  63111.     AX = C001h
  63112.     ES = 0000h
  63113. Return: AL = 00h if successful
  63114.         ES = AD-DOS TSR Code Segment
  63115. SeeAlso: AX=C000h"AD-DOS"
  63116. Index:    screen saver;AD-DOS
  63117. --------c-2FC001-----------------------------
  63118. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
  63119.     AX = C001h
  63120. Return: AL = FFh if installed
  63121.         ES:BX -> ???
  63122.         ES:DX -> ???
  63123.         ES:SI -> ???
  63124.         ES:DI -> ??? (equivalent to AX=C002h)
  63125. SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
  63126. --------U-2FC001-----------------------------
  63127. INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
  63128.     AX = C001h
  63129. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  63130. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  63131. --------i-2FC001-----------------------------
  63132. INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
  63133.     AX = C001h
  63134.     DX = segment of PMEASURE.EXE or 0000h
  63135.     BX = offset in PMEASURE.EXE or 0000h
  63136.     CX = offset in PMEASURE.EXE or 0000h
  63137. Return: None
  63138. Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
  63139.       is part of the Personal Measure system activity monitor from Spirit
  63140.       of Performance, Inc.    PMEASURE uses this call to inform its hook
  63141.       modules whether or not it is running and to pass information about
  63142.       shared data and procedures.
  63143. Warning: This information documents a function that is private to Personal
  63144.       Measure and is provided as information only.    It should NOT be called
  63145.       by any software other than Personal Measure.
  63146. SeeAlso: AX=C000h"PERSONAL MEASURE HOOK MODULE"
  63147. --------V-2FC002-----------------------------
  63148. INT 2F - AD-DOS - CHECK FOR NEW INPUT
  63149.     AX = C002h
  63150. Return: AL = 00h if successful
  63151.         BX = status
  63152.         0000h no input since last check
  63153.         0001h new input available
  63154. Note:    this call also resets the new-input flag
  63155. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  63156. Index:    screen saver;AD-DOS
  63157. --------M-2FC002-----------------------------
  63158. INT 2F - QMR - DISABLE QMR
  63159.     AX = C002h
  63160. Return: ES = QMR code segment
  63161.     AL destroyed
  63162. Desc:    this call temporarily disables QMR
  63163. SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
  63164. --------c-2FC002-----------------------------
  63165. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
  63166.     AX = C002h
  63167. Return: AX = ??? in K
  63168.     BX = size of print buffer in K
  63169. Program: PCACHE is the resident print spooler portion of PrintCache by
  63170.       LaserTools; it may use either memory or disk space to spool output
  63171. SeeAlso: AX=C000h"PCACHE"
  63172. --------U-2FC002-----------------------------
  63173. INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
  63174.     AX = C002h
  63175. Range:    AH=C0h to AH=FFh, selected by searching for a free multiplex number
  63176. SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
  63177. --------V-2FC003-----------------------------
  63178. INT 2F - AD-DOS - SET MINUTES TO WAIT
  63179.     AX = C003h
  63180.     BX = minutes to wait before blanking screen
  63181. Return: AL = 00h if successful
  63182. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  63183.       MS Windows
  63184. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63185. Note:    this call also resets the delay timer
  63186. SeeAlso: AX=C000h"AD-DOS",AX=C004h
  63187. Index:    screen saver;AD-DOS
  63188. --------M-2FC003-----------------------------
  63189. INT 2F - QMR - ENABLE QMR
  63190.     AX = C003h
  63191. Return: ES = QMR code segment
  63192.     AL destroyed
  63193. Desc:    this call enables QMR after it has been disabled
  63194. SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
  63195. --------c-2FC003-----------------------------
  63196. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  63197.     AX = C003h
  63198. Return: BX destroyed
  63199. SeeAlso: AX=C004h"PCACHE"
  63200. --------V-2FC004-----------------------------
  63201. INT 2F - AD-DOS - GET MINUTES TO WAIT
  63202.     AX = C004h
  63203. Return: AL = 00h if successful
  63204.         BX = minutes to wait before blanking screen
  63205. SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
  63206. Index:    screen saver;AD-DOS
  63207. --------c-2FC004-----------------------------
  63208. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  63209.     AX = C004h
  63210. Return: BX destroyed
  63211. SeeAlso: AX=C003h"PCACHE"
  63212. --------V-2FC005-----------------------------
  63213. INT 2F - AD-DOS - SET BLANKER STATUS
  63214.     AX = C005h
  63215.     BX = new state (0000h inactive, 0001h active) (default 0001h)
  63216. Return: AL = 00h if successful
  63217. SeeAlso: AX=C006h"AD-DOS"
  63218. Index:    screen saver;AD-DOS
  63219. --------c-2FC005-----------------------------
  63220. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63221.     AX = C005h
  63222.     ???
  63223. Return: BX destroyed
  63224.     ???
  63225. Program: PCACHE is the resident print spooler portion of PrintCache by
  63226.       LaserTools; it may use either memory or disk space to spool output
  63227. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63228. SeeAlso: AX=C000h"PCACHE"
  63229. --------V-2FC006-----------------------------
  63230. INT 2F - AD-DOS - GET BLANKER STATUS
  63231.     AX = C006h
  63232. Return: AL = 00h if successful
  63233.         BX = current state of screen blanker (0000h inactive, 0001h active)
  63234. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  63235.       MS Windows
  63236. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63237. SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
  63238. Index:    screen saver;AD-DOS
  63239. --------c-2FC006-----------------------------
  63240. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63241.     AX = C006h
  63242.     ???
  63243. Return: BX destroyed
  63244.     ???
  63245. Note:    this function appears to be identical to AX=C007h
  63246. SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
  63247. --------V-2FC007-----------------------------
  63248. INT 2F - AD-DOS - SET HOT KEY
  63249.     AX = C007h
  63250.     BX = hot key
  63251.     CL = hot key shift status
  63252. Return: AL = 00h if successful
  63253. SeeAlso: AX=C008h"AD-DOS"
  63254. Index:    screen saver;AD-DOS
  63255. --------c-2FC007-----------------------------
  63256. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63257.     AX = C007h
  63258.     ???
  63259. Return: BX destroyed
  63260.     ???
  63261. Note:    this function appears to be identical to AX=C006h
  63262. SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
  63263. --------V-2FC008-----------------------------
  63264. INT 2F - AD-DOS - GET CURRENT HOT KEY
  63265.     AX = C008h
  63266. Return: AX = status
  63267.         0000h successful
  63268.         BX = Hot Key
  63269.         CL = Hot Key Shift Status
  63270.         0008h otherwise
  63271. SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
  63272. Index:    screen saver;AD-DOS
  63273. --------c-2FC008-----------------------------
  63274. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  63275.     AX = C008h
  63276. Return: BX destroyed
  63277. SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
  63278. --------V-2FC009-----------------------------
  63279. INT 2F - AD-DOS - UNBLANK MONITOR
  63280.     AX = C009h
  63281. Return: AL = 00h if successful
  63282. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  63283.       MS Windows
  63284. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63285. Note:    this function works by simulating keyboard activity
  63286. Index:    screen saver;AD-DOS
  63287. --------c-2FC009-----------------------------
  63288. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  63289.     AX = C009h
  63290. Return: BX destroyed
  63291. Program: PCACHE is the resident print spooler portion of PrintCache by
  63292.       LaserTools; it may use either memory or disk space to spool output
  63293. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63294. SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
  63295. --------V-2FC00A-----------------------------
  63296. INT 2F - AD-DOS - ???
  63297.     AX = C00Ah
  63298. Return: AX = status
  63299.         0000h successful
  63300.         BH = ??
  63301.         BL = ??
  63302.         000Ah failed
  63303. Index:    screen saver;AD-DOS
  63304. --------c-2FC00A-----------------------------
  63305. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63306.     AX = C00Ah
  63307.     ???
  63308. Return: AH = bit flags
  63309.         bit 5: ???
  63310.     AL = bit flags
  63311.         bit 4: ???
  63312.         bit 3: ???
  63313.     BX destroyed
  63314.     ???
  63315. SeeAlso: AX=C000h"PCACHE"
  63316. --------V-2FC00B-----------------------------
  63317. INT 2F - AD-DOS - ???
  63318.     AX = C00Bh
  63319. Return: AX = status
  63320.         0000h successful
  63321.         000Bh failed
  63322. Index:    screen saver;AD-DOS
  63323. --------c-2FC00B-----------------------------
  63324. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  63325.     AX = C00Bh
  63326. Return: BX destroyed
  63327. SeeAlso: AX=C000h"PCACHE"
  63328. --------V-2FC00C-----------------------------
  63329. INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
  63330.     AX = C00Ch
  63331. Return: AX = status
  63332.         0000h successful
  63333.         000Ch failed
  63334. Program: AD-DOS is the DOS version of the After Dark screen blanker for
  63335.       MS Windows
  63336. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63337. Index:    screen saver;AD-DOS
  63338. --------c-2FC00C-----------------------------
  63339. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  63340.     AX = C00Ch
  63341. Return: AX = ??? (0000h)
  63342.     BX = ??? (0000h)
  63343.     CX = ??? (0100h)
  63344.     DL = ???
  63345.     DH = ???
  63346. SeeAlso: AX=C000h"PCACHE"
  63347. --------c-2FC00D-----------------------------
  63348. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
  63349.     AX = C00Dh
  63350.     DL = ???
  63351. Return: BX destroyed
  63352. Program: PCACHE is the resident print spooler portion of PrintCache by
  63353.       LaserTools; it may use either memory or disk space to spool output
  63354. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63355. SeeAlso: AX=C000h"PCACHE"
  63356. --------V-2FC00E-----------------------------
  63357. INT 2F - AD-DOS - SET PASSWORD STATUS
  63358.     AX = C00Eh
  63359.     BX = new state (0000h disabled, 0001h enabled)
  63360. Return: ???
  63361. SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
  63362. Index:    screen saver;AD-DOS
  63363. --------c-2FC00E-----------------------------
  63364. INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
  63365.     AX = C00Eh
  63366.     ES:DX -> ???
  63367. Return: BX destroyed
  63368. Note:    ES:DX is stored internally if the variable is currently 0000h:0000h,
  63369.       but ignored if already set; a counter is incremented
  63370. SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
  63371. --------V-2FC00F-----------------------------
  63372. INT 2F - AD-DOS - GET PASSWORD STATUS
  63373.     AX = C00Fh
  63374. Return: BX = current state (0000h disabled, 0001h enabled)
  63375. SeeAlso: AX=C00Eh"AD-DOS"
  63376. Index:    screen saver;AD-DOS
  63377. --------c-2FC00F-----------------------------
  63378. INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
  63379.     AX = C00Fh
  63380. Return: BX destroyed
  63381. Note:    this function decrements the counter used by AX=C00Eh, and clears the
  63382.       internal pointer variable to 0000h:0000h when it reaches zero
  63383. SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
  63384. --------c-2FC010-----------------------------
  63385. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  63386.     AX = C010h
  63387.     CX = index of ??? table (00h-02h, others treated as 00h)
  63388.     SI = offset into data table
  63389. Return:    AL = byte at specified offset into table
  63390.     BX destroyed
  63391. SeeAlso: AX=C000h"PCACHE"
  63392. --------c-2FC011-----------------------------
  63393. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  63394.     AX = C011h
  63395. Return: AX = ??? (0007h)
  63396.     BX = ??? (0001h)
  63397.     CH = ???
  63398.     CL = ???
  63399. SeeAlso: AX=C000h"PCACHE"
  63400. --------c-2FC012-----------------------------
  63401. INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
  63402.     AX = C012h
  63403. Return: AX = ???
  63404.     BX = ???
  63405.     CX = ???
  63406.     DX = ???
  63407. SeeAlso: AX=C000h"PCACHE"
  63408. --------c-2FC013-----------------------------
  63409. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63410.     AX = C013h
  63411.     ???
  63412. Return: BX destroyed
  63413.     ???
  63414. Program: PCACHE is the resident print spooler portion of PrintCache by
  63415.       LaserTools; it may use either memory or disk space to spool output
  63416. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63417. SeeAlso: AX=C000h"PCACHE"
  63418. --------c-2FC014-----------------------------
  63419. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63420.     AX = C014h
  63421.     ???
  63422. Return: BX destroyed
  63423.     ???
  63424. SeeAlso: AX=C000h"PCACHE"
  63425. --------c-2FC015-----------------------------
  63426. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63427.     AX = C015h
  63428.     ???
  63429. Return: BX destroyed
  63430.     ???
  63431. SeeAlso: AX=C000h"PCACHE"
  63432. --------c-2FC016-----------------------------
  63433. INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
  63434.     AX = C016h
  63435. Return: BX destroyed
  63436. SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
  63437. --------c-2FC017-----------------------------
  63438. INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
  63439.     AX = C017h
  63440. Return: BX destroyed
  63441. SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
  63442. --------c-2FC018-----------------------------
  63443. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63444.     AX = C018h
  63445.     ???
  63446. Return: BX destroyed
  63447.     ???
  63448. Note:    the first instruction of this function is an indirect jump which points
  63449.       at a RET by default
  63450. SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
  63451. --------c-2FC019-----------------------------
  63452. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63453.     AX = C019h
  63454.     ???
  63455. Return: BX destroyed
  63456.     ???
  63457. Note:    the first instruction of this function is an indirect jump which points
  63458.       at a RET by default
  63459. SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
  63460. --------c-2FC01A-----------------------------
  63461. INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
  63462.     AX = C01Ah
  63463. Return: BX destroyed
  63464. SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
  63465. --------c-2FC01B-----------------------------
  63466. INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
  63467.     AX = C01Bh
  63468. Return: BX destroyed
  63469. SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
  63470. --------c-2FC01C-----------------------------
  63471. INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
  63472.     AX = C01Ch
  63473.     ???
  63474. Return: AX = ???
  63475.     BX destroyed
  63476. SeeAlso: AX=C000h"PCACHE"
  63477. --------c-2FC01D-----------------------------
  63478. INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
  63479.     AX = C01Dh to C01Fh
  63480. Return: BX destroyed
  63481. Program: PCACHE is the resident print spooler portion of PrintCache by
  63482.       LaserTools; it may use either memory or disk space to spool output
  63483. Range:    AH=C0h to AH=FFh, selected by commandline switch
  63484. SeeAlso: AX=C000h"PCACHE"
  63485. --------V-2FC020-----------------------------
  63486. INT 2F - AD-DOS - GET AND RESET VxD API STATUS
  63487.     AX = C020h
  63488. Return: AL = 00h if successful
  63489.         BX = VxD API Status
  63490.         0000h no error
  63491.         0001h error
  63492.         0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
  63493.               is running
  63494.         0200h VM API entry point not found (VxD not installed)
  63495. Range:    AH=C0h to AH=FFh, selected by scanning for first free multiplex number
  63496. Note:    this call resets the VxD API Status to zero
  63497. SeeAlso: AX=1602h,AX=1607h
  63498. Index:    screen saver;AD-DOS
  63499. --------V-2FC04E-----------------------------
  63500. INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
  63501.     AX = C04Eh
  63502. Return: AL = 4Fh if Explosiv is running but not memory-resident
  63503. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  63504.       by H&G Software (Reidar Gresseth and Chris Hook)
  63505. Range:    AH=C0h to AH=C9h, selected by configuration
  63506. SeeAlso: AX=C050h
  63507. Index:    screen saver;Explosiv
  63508. --------V-2FC050-----------------------------
  63509. INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
  63510.     AX = C050h
  63511. Return: AL = 51h if installed
  63512.     ---v3.0+ ---
  63513.         BX = interval in clock ticks
  63514.         CH = animation display color (00h mono, 01h tinge, 02h color)
  63515.         CL = animation delay factor
  63516.         DH = animation parameters
  63517.         DL = INT 10 checking (00h on, 01h off)
  63518.         SI = number of bytes available for animation code
  63519.         DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
  63520. Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
  63521.       by H&G Software (Reidar Gresseth and Chris Hook)
  63522. Range:    AH=C0h to AH=C9h, selected by configuration
  63523. SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
  63524. SeeAlso: INT 14/AX=AA01h
  63525. Index:    screen saver;Explosiv
  63526. --------V-2FC052-----------------------------
  63527. INT 2F - Explosiv v2.00+ - UNINSTALL
  63528.     AX = C052h
  63529.     DX:BX = address to return to on successful uninstall
  63530. Return: at specified address if successful
  63531.     AL = 53h on error
  63532. Note:    specified return address must have the segment of the caller's PSP
  63533. SeeAlso: AX=C050h
  63534. Index:    screen saver;Explosiv
  63535. --------V-2FC054-----------------------------
  63536. INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
  63537.     AX = C054h
  63538. Return: AL = delay factor
  63539. SeeAlso: AX=C057h
  63540. Index:    screen saver;Explosiv
  63541. ----------2FC054-----------------------------
  63542. INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
  63543.     AX = C054h
  63544.     BX = new interval in clock ticks
  63545.     CH = animation display color (00h mono, 01h tinge, 02h color)
  63546.     CL = animation delay factor
  63547.     DH = animation parameters
  63548.     DL = INT 10 checking (00h on, 01h off)
  63549. SeeAlso: AX=C050h
  63550. --------V-2FC055-----------------------------
  63551. INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
  63552.     AX = C055h
  63553.     BX = new interval in clock ticks
  63554. Index:    screen saver;Explosiv
  63555. --------V-2FC056-----------------------------
  63556. INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
  63557.     AX = C056h
  63558.     BL = animated display type (00h mono, 01h color)
  63559. SeeAlso: AX=C058h"v2.x"
  63560. Index:    screen saver;Explosiv
  63561. --------V-2FC056-----------------------------
  63562. INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
  63563.     AX = C056h
  63564.     BX = new state
  63565.         0000h disabled
  63566.         0100h enabled
  63567.         0101h enabled, but never blank
  63568.         0102h enabled, always blank
  63569. --------V-2FC057-----------------------------
  63570. INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
  63571.     AX = C057h
  63572.     BL = delay factor
  63573. SeeAlso: AX=C054h"v2.x"
  63574. Index:    screen saver;Explosiv
  63575. --------V-2FC058-----------------------------
  63576. INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
  63577.     AX = C058h
  63578.     BL = animation parameter
  63579. Note:    the animation parameter has different interpretations for each display
  63580. SeeAlso: AX=C056h"v2.x"
  63581. Index:    screen saver;Explosiv
  63582. ----------2FC058-----------------------------
  63583. INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
  63584.     AX = C058h
  63585.     BX = file handle for file containing display code
  63586.     CX = number of bytes to load
  63587.     DX = offset at which animation code should be loaded
  63588. Return: AL = status (see #1589)
  63589. Note:    if AL=00h-03h on return, the file will be closed
  63590.  
  63591. (Table 1589)
  63592. Values for Explosiv function status:
  63593.  00h    successful
  63594.  01h    code too large to available space
  63595.  02h    no data read, load aborted
  63596.  03h    incomplete load, default blanking display loaded instead
  63597.  58h    unexpected offset in DX
  63598. --------V-2FC059-----------------------------
  63599. INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
  63600.     AX = C059h
  63601. Note:    clears flag set by AX=C05Ah
  63602. SeeAlso: AX=C05Ah
  63603. Index:    screen saver;Explosiv
  63604. --------V-2FC05A-----------------------------
  63605. INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
  63606.     AX = C05Ah
  63607.     BL = ???
  63608. Note:    sets flag cleared by AX=C059h then stores BL
  63609. SeeAlso: AX=C059h,AX=C05Bh
  63610. Index:    screen saver;Explosiv
  63611. --------V-2FC05B-----------------------------
  63612. INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
  63613.     AX = C05Bh
  63614.     BL = animation display
  63615. Note:    this function fails silently if the requested display is not in memory
  63616. SeeAlso: AX=C05Ah,AX=C05Ch
  63617. Index:    screen saver;Explosiv
  63618. --------V-2FC05C-----------------------------
  63619. INT 2F - Explosiv v2.x - SET INT 10 CHECKING
  63620.     AX = C05Ch
  63621.     BL = new state of INT 10 checking (00h enabled, 01h disabled)
  63622. SeeAlso: AX=C05Bh
  63623. Index:    screen saver;Explosiv
  63624. --------N-2FC100-----------------------------
  63625. INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
  63626.     AX = C100h
  63627. Return: AL = FFh if installed
  63628.         ES:SI -> signature string "STP-IPX$"
  63629.         BX = version??? (0001h for v1.00)
  63630.         DI corrupted
  63631. Note:    AH=C1h is the default value; STPIPX probably scans a range of
  63632.       multiplex numbers to find a free one, as LSL does
  63633. SeeAlso: AX=C000h"LSL",AX=C101h
  63634. ----------2FC101-----------------------------
  63635. INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
  63636.     AX = C101h
  63637. Return: AL = status???
  63638.     BX corrupted
  63639. SeeAlso: AX=C101h
  63640. --------k-2FC300DX0000-----------------------
  63641. INT 2F U - SpaceManager - INSTALLATION CHECK
  63642.     AX = C300h
  63643.     DX = 0000h
  63644. Return: AL = FFh if any SpaceManager programs installed
  63645.         BX = 6F73h
  63646.         CX = 6F68h
  63647. Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
  63648.       Systems, Inc.
  63649. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  63650. SeeAlso: AX=C300h/DX=0666h
  63651. --------k-2FC300-----------------------------
  63652. INT 2F U - SpaceManager - INSTALLATION VERIFICATION
  63653.     AX = C300h
  63654.     DX = program identifier (see #1590) or 0666h for any SpaceManager prog
  63655.     BX = 4F53h ('OS')
  63656.     CX = 4F48h ('OH')
  63657. Return: AL = FFh if BX/CX as specified and specified program installed
  63658.         BX = 6F73h ('os')
  63659.         CX = 6F68h ('oh')
  63660. Range:    AH=C3h to AH=FFh, selected by scanning for first free multiplex number
  63661. Note:    this call is chained if BX,CX, or DX are not as specified above
  63662. SeeAlso: AX=C300h/DX=0000h
  63663.  
  63664. (Table 1590)
  63665. Values for SpaceManager program identifier:
  63666.  9000h    SMOUNT (SuperMount)
  63667.  9001h    SELECTC (SelectCompress)
  63668.  9002h    SUPERX (SuperExchange)
  63669.  9003h    FORTUNE (FortuneTeller)
  63670. --------k-2FC301-----------------------------
  63671. INT 2F U - SpaceManager - ???
  63672.     AX = C301h
  63673.     DX = program identifier (9000h,9001h,9003h) (see #1590)
  63674.     ???
  63675. Return: ???
  63676. --------k-2FC302-----------------------------
  63677. INT 2F U - SpaceManager - ENABLE PROGRAM
  63678.     AX = C302h
  63679.     DX = program identifier (9000h,9001h,9003h) (see #1590)
  63680. Return: AX destroyed
  63681. SeeAlso: AX=C303h,AX=C306h
  63682. --------k-2FC303-----------------------------
  63683. INT 2F U - SpaceManager - DISABLE PROGRAM
  63684.     AX = C303h
  63685.     DX = program identifier (9000h,9001h,9003h) (see #1590)
  63686. Return: AX destroyed
  63687. SeeAlso: AX=C302h,AX=C306h
  63688. --------k-2FC304-----------------------------
  63689. INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
  63690.     AX = C304h
  63691.     DX = program identifier (9000h,9001h,9003h) (see #1590)
  63692. Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
  63693.     AX destroyed
  63694. --------k-2FC305DX9003-----------------------
  63695. INT 2F U - SpaceManager - FORTUNE.EXE - NOP
  63696.     AX = C305h
  63697.     DX = 9003h
  63698. Return: AX destroyed
  63699. --------k-2FC305-----------------------------
  63700. INT 2F U - SpaceManager - ???
  63701.     AX = C305h
  63702.     DX = program identifier (9000h,9001h) (see #1590)
  63703.     ???
  63704. Return: ???
  63705. --------k-2FC306-----------------------------
  63706. INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
  63707.     AX = C306h
  63708.     DX = program identifier (9000h,9001h,9003h) (see #1590)
  63709. Return: AL = current state (00h disabled, FAh enabled)
  63710.     AH destroyed
  63711. SeeAlso: AX=C302h,AX=C303h
  63712. --------k-2FC307DX9001-----------------------
  63713. INT 2F U - SpaceManager - SELECTC - ???
  63714.     AX = C307h
  63715.     DX = 9001h
  63716.     BX = ???
  63717.     CX = ???
  63718.     ???
  63719. Return: ???
  63720. --------k-2FC308DX9001-----------------------
  63721. INT 2F U - SpaceManager - SELECTC - ???
  63722.     AX = C308h
  63723.     DX = 9001h
  63724.     ???
  63725. Return: ???
  63726. --------d-2FC64CBX5553-----------------------
  63727. INT 2F U - Smart Prompt - INSTALLATION CHECK
  63728.     AX = C64Ch
  63729.     BX = 5553h
  63730. Return: AX = 4CC6h if installed
  63731.     BX = 5355h if installed
  63732. Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which forces
  63733.       an immediate flush of SmartDrive's (and compatible caches') buffers
  63734.       on returning to the DOS prompt
  63735. --------v-2FC900BP0000-----------------------
  63736. INT 2F U - ThunderByte??? - INSTALLATION CHECK
  63737.     AX = C900h
  63738.     BP = 0000h
  63739. Return: AL = FFh if installed
  63740.         BP >= 0014h
  63741. Note:    called by TBSCANX
  63742. SeeAlso: AX=C987h,AX=CA00h
  63743. --------v-2FC987-----------------------------
  63744. INT 2F U - ThunderByte??? - DISINFECT FILE???
  63745.     AX = C987h
  63746.     BX:DX -> filename
  63747.     BX:CX -> virus name
  63748. Return: AX = status
  63749.         0000h successful???
  63750. Note:    called by TBSCANX
  63751. SeeAlso: AX=CA00h
  63752. --------r-2FC9FF-----------------------------
  63753. INT 2F C - StackMan - INSTALLATION BROADCAST
  63754.     AX = C9FFh
  63755.     BL = BCD version number
  63756.     CX = number of stacks
  63757.     DX = stack size in bytes
  63758. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  63759.       which functions as a replacement for the DOS STACK= command as well
  63760.       as permitting multiple TSRs to share a pool of stack space
  63761. Notes:    called by StackMan when it goes resident to inform interested TSRs that
  63762.       its API is available
  63763.     the installation check consists of testing for the string "STACKXXX" at
  63764.       offset 0Ah from the INT B4 handler
  63765. SeeAlso: INT B4"StackMan",INT B5"StackMan"
  63766. Index:    installation check;STACKMAN|broadcasts;STACKMAN installation
  63767. --------F-2FCA-------------------------------
  63768. INT 2F - FAXPLUS - FAX TSR
  63769.     AH = CAh
  63770.     ???
  63771. Return: ???
  63772. Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
  63773.       Veldman
  63774. SeeAlso: AH=2Ah"Gammafax"
  63775. --------v-2FCA00BX5442-----------------------
  63776. INT 2F - TBSCANX - INSTALLATION CHECK
  63777.     AX = CA00h
  63778.     BX = 5442h ('TB')
  63779. Return: AL = state
  63780.         00h not installed
  63781.         FFh installed
  63782.         BX = 7462h ('tb') if BX was 5442h on entry
  63783. Program: TBSCANX is a resident virus scanning module by Frans Veldman.
  63784. Note:    programs may perform virus checks on themselves, other program files,
  63785.       or their data files by invoking the TBSCANX API.
  63786. SeeAlso: AX=4653h,AX=C900h
  63787. --------v-2FCA01-----------------------------
  63788. INT 2F - TBSCANX - GET STATUS
  63789.     AX = CA01h
  63790. Return: AH = BCD version number (v2.2+)
  63791.         CAh for versions before 2.2
  63792.     AL = state (00h = disabled, 01h = enabled)
  63793.     CX = number of signatures which will be searched
  63794. ---v2.0---
  63795.     BX = EMS handle, 0000h if not using EMS
  63796. ---v2.3+---
  63797.     BX = segment of swap area, 0000h if not swapped
  63798.     DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
  63799. SeeAlso: AX=CA02h
  63800. --------v-2FCA02-----------------------------
  63801. INT 2F - TBSCANX - SET STATE
  63802.     AX = CA02h
  63803.     BL = new state (00h = disabled, 01h = enabled)
  63804. SeeAlso: AX=CA01h
  63805. --------v-2FCA03-----------------------------
  63806. INT 2F - TBSCANX - SCAN BUFFER
  63807.     AX = CA03h
  63808.     CX = size of buffer
  63809.     DS:DX -> buffer containing data to scan
  63810. Return: CF clear if no virus signatures found
  63811.         BX,ES destroyed
  63812.     CF set if signature found
  63813.         ES:BX -> ASCIZ virus name (v2.3+)
  63814.         DS:DX -> ASCIZ virus name (v2.0)
  63815.     AX,CX,DX destroyed (v2.3+)
  63816.     all other registers except CS:IP and SS:SP destroyed (v2.0)
  63817. SeeAlso: AX=CA04h
  63818. --------v-2FCA04-----------------------------
  63819. INT 2F - TBSCANX - SCAN FILE
  63820.     AX = CA04h
  63821.     DS:DX -> filename
  63822. Return: CF clear if no virus signatures found
  63823.         BX,ES destroyed
  63824.     CF set if signature found
  63825.         ES:BX -> ASCIZ virus name
  63826.     AX,CX,DX destroyed
  63827. Note:    this function requires at least 4K free memory
  63828. SeeAlso: AX=CA03h
  63829. --------U-2FCAFEBX0000-----------------------
  63830. INT 2F U - THELP v3.0 - INSTALLATION CHECK
  63831.     AX = CAFEh
  63832.     BX = 0000h
  63833. Return: BX = segment of resident code if installed
  63834.         0000h if not installed
  63835. SeeAlso: AX=5453h,INT 2D"AMIS"
  63836. --------F-2FCB00-----------------------------
  63837. INT 2F - Communicating Applications Specification - INSTALLATION CHECK
  63838.     AX = CB00h
  63839. Return: AL = status
  63840.         00h not installed, OK to install
  63841.         01h not installed, not OK to install
  63842.         FFh installed
  63843. Note:    AH = CBh is the default identifier, but may be reconfigured
  63844. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
  63845. --------F-2FCB00BX4D53-----------------------
  63846. INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
  63847.     AX = CB00h
  63848.     BX = 4D53h ('MS')
  63849.     CX = 4949h ('II')
  63850. Return: AL = status
  63851.         00h not installed, OK to install
  63852.         01h not installed, not OK to install
  63853.         FFh installed
  63854.         BX = 6D73h ('ms')
  63855.         CX = 6969h ('ii')
  63856. Note:    this function is equivalent to the standard CASMGR installation check,
  63857.       but uses the additional magic values to identify which CAS is
  63858.       installed
  63859. SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
  63860. --------F-2FCB01-----------------------------
  63861. INT 2F - Communicating Applications Specification - SUBMIT A TASK
  63862.     AX = CB01h
  63863.     DS:DX -> ASCIZ name of task control file
  63864. Return: AX >= 0: event handle
  63865.     AX < 0: two's complement of error code
  63866. Note:    files needed for an event must be kept until task is complete or error
  63867. SeeAlso: AX=CB0Bh,AX=CB15h
  63868.  
  63869. (Table 1591)
  63870. Values for CAS error code:
  63871.   (AH = class, AL = subcode, value passed back is 2's complement)
  63872.   Class 00h    --- FAX warnings
  63873.     Subcode 00h    no error
  63874.         02h    bad scanline count
  63875.         03h    page sent with errors, could not retransmit
  63876.         04h    received data lost
  63877.         05h    invalid or missing logo file
  63878.         06h    filename does not match nonstandard format (NSF) header
  63879.         07h    file size does not match NSF header
  63880.   Class 01h    --- DOS warnings (data was sent)
  63881.     Subcode 01h    invalid function
  63882.         05h    access denied
  63883.         06h    invalid handle
  63884.         others    see INT 21/AH=59h
  63885.   Class 02h    --- fatal errors (data not sent)
  63886.     Subcode 00h    multiplex handler failed
  63887.         01h    unknown command
  63888.         02h    bad event handle
  63889.         03h    FIND NEXT attempted before FIND FIRST
  63890.         04h    no more events
  63891.         07h    invalid queue type
  63892.         08h    bad control file
  63893.         09h    communication board busy
  63894.         0Ah    invalid command parameter
  63895.         0Bh    can't uninstall resident code
  63896.         0Ch    file exists
  63897.         80h    unknown task type
  63898.         81h    bad phone number
  63899.         82h    bad .PCX file header
  63900.         83h    unexpected EOF
  63901.         84h    unexpected disconnect
  63902.         85h    too many dialing retries
  63903.         86h    no file specified for send
  63904.         87h    communication board timeout
  63905.         88h    received too many pages (>1023) of data
  63906.         89h    manual connect initiated too long ago
  63907.         8Ah    hardware command set error
  63908.         8Bh    bad NonStandard Format (NSF) header file
  63909.   Class 03h    --- fatal DOS errors
  63910.     Subcode 02h    file not found
  63911.         03h    path not found
  63912.         others    see INT 21/AH=59h
  63913.   Class 04h    --- FAX errors
  63914.     Subcode 01h    remote unit not Group 3 compatible
  63915.         02h    remote unit did not send capabilities
  63916.         03h    other FAX machine incompatible
  63917.         04h    other FAX incapable of file transfers
  63918.         05h    exceeded retrain or FAX resend limit
  63919.         06h    line noise or failure to agree on bit rate
  63920.         07h    remote disconnected after receiving data
  63921.         08h    no response from remote after sending data
  63922.         09h    remote's capabilities incompatible
  63923.         0Ah    no dial tone (v1.2+)
  63924.         0Bh    invalid response from remote unit after sending data
  63925.         0Dh    phone line dead or remote unit disconnected
  63926.         0Eh    timeout while waiting for secondary dial tone (v1.2+)
  63927.         11h    invalid command from remote after receiving data
  63928.         15h    tried to receive from incompatible hardware
  63929.         5Ch    received data overflowed input buffer
  63930.         5Dh    remote unexpectedly stopped sending data
  63931.         5Eh    other FAX machine jammed (no data sent)
  63932.         5Fh    remote took too long to send fax scan line
  63933.         63h    can't get through to remote unit
  63934.         64h    user canceled event
  63935.   Class 05h    --- application-specific (v1.2+)
  63936.   ---Intel FAXPOP.EXE
  63937.     Subcode 00h    tried to send while in graphics mode
  63938.         01h    insufficient disk space
  63939.         02h    internal buffer overflow
  63940.   Class 06h    --- CAS implementation-specific (v1.2+)
  63941. --------F-2FCB02-----------------------------
  63942. INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
  63943.     AX = CB02h
  63944. Return: AX >= 0: event handle of aborted event
  63945.     AX < 0: error code (see #1591)
  63946. Note:    termination could take up to 30 seconds
  63947. SeeAlso: AX=CB08h,AX=CB10h
  63948. --------F-2FCB05-----------------------------
  63949. INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
  63950.     AX = CB05h
  63951.     CX = status of events to find
  63952.         0000h successful completion
  63953.         0001h waiting to be processed
  63954.         0002h number has been dialed
  63955.         0003h connection established, sending
  63956.         0004h connection established, receiving
  63957.         0005h event aborted
  63958.         FFFFh find any event, regardless of status
  63959.         other negative values, match error code
  63960.     DH = direction
  63961.         00h chronological order, earliest to latest
  63962.         01h reverse chronological order, latest to earliest
  63963.     DL = queue to search
  63964.         00h task queue
  63965.         01h receive queue
  63966.         02h log queue
  63967. Return: AX = 0000h successful
  63968.         BX = event handle for found event
  63969.     AX < 0       error code (see #1591)
  63970. SeeAlso: AX=CB06h,AX=CB07h
  63971. --------F-2FCB06-----------------------------
  63972. INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
  63973.     AX = CB06h
  63974.     DL = queue to search
  63975.         00h task queue
  63976.         01h receive queue
  63977.         02h log queue
  63978. Return: AX = 0000h successful
  63979.         BX = event handle for found event
  63980.     AX < 0       error code (see #1591)
  63981. Note:    direction of search is same as preceding FIND FIRST call
  63982. SeeAlso: AX=CB05h
  63983. --------F-2FCB07-----------------------------
  63984. INT 2F - Communicating Applications Specification - OPEN FILE
  63985.     AX = CB07h
  63986.     BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
  63987.     CX = receive file number (ignored for task queue and log queue)
  63988.         0000h  open receive control file
  63989.         N       open Nth received data file
  63990.     DL = queue
  63991.         00h task queue
  63992.         01h receive queue control file or received file, as given by CX
  63993.         02h log queue
  63994.         03h group file in task queue (v1.2+)
  63995.         04h group file in log queue (v1.2+)
  63996. Return: AX = 0000h successful
  63997.         BX = DOS file handle for requested file
  63998.     AX < 0       error code (see #1591)
  63999. Note:    the returned file handle has been opened in read-only mode and should
  64000.       be closed with INT 21/AH=3Eh after use
  64001. SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
  64002. --------F-2FCB08-----------------------------
  64003. INT 2F - Communicating Applications Specification - DELETE FILE
  64004.     AX = CB08h
  64005.     BX = event handle
  64006.     CX = receive file number
  64007.         0000h delete ALL received files and receive control file
  64008.         N      delete Nth received file
  64009.     DL = queue
  64010.         00h delete control file in task queue and corresponding group file
  64011.           if it exists
  64012.         01h delete file in receive queue, as given by CX
  64013.         02h delete control file in log queue (individual deletions not
  64014.           recommended, to maintain integrity of log) and corresponding
  64015.           group file if it exists
  64016. Return: AX = 0000h successful
  64017.     AX < 0       error code (see #1591)
  64018. SeeAlso: AX=CB02h,AX=CB09h
  64019. --------F-2FCB09-----------------------------
  64020. INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
  64021.     AX = CB09h
  64022.     DL = queue
  64023.         00h delete all control files in task queue, including all group
  64024.           files
  64025.         01h delete all files in receive queue
  64026.         02h delete all control files in log queue, including all group
  64027.           files
  64028. Return: AX = 0000h successful
  64029.     AX < 0       error code (see #1591)
  64030. SeeAlso: AX=CB08h
  64031. --------F-2FCB0A-----------------------------
  64032. INT 2F - Communicating Applications Specification - GET EVENT DATE
  64033.     AX = CB0Ah
  64034.     BX = event handle
  64035.     DL = queue
  64036.         00h task queue
  64037.         01h receive queue
  64038.         02h log queue
  64039. Return: AX = 0000h successful
  64040.         CX = year
  64041.         DH = month
  64042.         DL = day
  64043.     AX < 0       error code (see #1591)
  64044. SeeAlso: AX=CB0Bh,AX=CB0Ch
  64045. --------F-2FCB0B-----------------------------
  64046. INT 2F - Communicating Applications Specification - SET TASK DATE
  64047.     AX = CB0Bh
  64048.     BX = event handle (task event only)
  64049.     CX = year
  64050.     DH = month
  64051.     DL = day
  64052. Return: AX = 0000h successful
  64053.     AX < 0       error code (see #1591)
  64054. Note:    setting a task's date and time to before the current date and time
  64055.       causes it to execute immediately
  64056. SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
  64057. --------F-2FCB0C-----------------------------
  64058. INT 2F - Communicating Applications Specification - GET EVENT TIME
  64059.     AX = CB0Ch
  64060.     BX = event handle
  64061.     DL = queue
  64062.         00h task queue
  64063.         01h receive queue
  64064.         02h log queue
  64065. Return: AX = 0000h successful
  64066.         CH = hour
  64067.         CL = minute
  64068.         DH = second
  64069.         DL = 00h
  64070.     AX < 0       error code (see #1591)
  64071. SeeAlso: AX=CB0Ah,AX=CB0Dh
  64072. --------F-2FCB0D-----------------------------
  64073. INT 2F - Communicating Applications Specification - SET TASK TIME
  64074.     AX = CB0Dh
  64075.     BX = event handle (task events only)
  64076.     CH = hour
  64077.     CL = minute
  64078.     DH = second
  64079.     DL unused
  64080. Return: AX = 0000h successful
  64081.     AX < 0       error code (see #1591)
  64082. Note:    setting a task's date and time to before the current date and time
  64083.       causes it to execute immediately
  64084. SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
  64085. --------F-2FCB0E-----------------------------
  64086. INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
  64087.     AX = CB0Eh
  64088.     DS:DX -> 256-byte buffer
  64089. Return: AX = 0000h successful
  64090.         DS:DX buffer filled
  64091.     AX < 0       error code (see #1591)
  64092.  
  64093. Format of CAS external data block:
  64094. Offset    Size    Description    (Table 1592)
  64095.  00h    BYTE    CAS major version
  64096.  01h    BYTE    CAS minor version
  64097.  02h 68 BYTEs    ASCIZ path to directory containing CAS software, ends in slash
  64098.  46h 13 BYTEs    ASCIZ name of current phonebook (in CAS directory)
  64099.  53h 13 BYTEs    ASCIZ name of current logo file (in CAS directory)
  64100.  60h 32 BYTEs    ASCIZ default sender name
  64101.  80h 21 BYTEs    ASCIZ CCITT identification of fax device
  64102.  95h 107 BYTEs    reserved
  64103. --------F-2FCB0F-----------------------------
  64104. INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
  64105.     AX = CB0Fh
  64106.     DL = subfunction
  64107.         00h get current autoreceive state
  64108.         01h set autoreceive state
  64109.         DH = number of rings before answer, 00h = never
  64110. Return: AX = 0000h autoreceive disabled
  64111.     AX = N       number of rings before answer
  64112.     AX < 0       error code (see #1591)
  64113. --------F-2FCB10-----------------------------
  64114. INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
  64115.     AX = CB10h
  64116.     DS:DX -> 512-byte buffer
  64117. Return: AX = 0000h successful
  64118.         BX = event handle of current event or negative error code if
  64119.               no current event
  64120.         buffer filled
  64121.     AX < 0       error code (see #1591)
  64122. SeeAlso: AX=CB02h,AX=CB0Dh
  64123.  
  64124. (Table 1593)
  64125. Values for CAS event type:
  64126.  00h    send
  64127.  01h    receive
  64128.  02h    polled send
  64129.  03h    polled receive
  64130.  04h to 7Fh reserved
  64131.  FFh    serious hardware error
  64132.  
  64133. Format of CAS status area:
  64134. Offset    Size    Description    (Table 1594)
  64135.  00h    BYTE    event type (see #1593)
  64136.  01h    BYTE    transfer type
  64137.         00h 200x200 dpi, FAX mode
  64138.         01h 100x200 dpi, FAX mode
  64139.         02h file transfer mode
  64140.         03h to 7Fh reserved
  64141.  02h    WORD    event status (see #1595)
  64142.  04h    WORD    event time (packed DOS time format, see INT 21/AX=5700h)
  64143.  06h    WORD    event date (packed DOS date format, see INT 21/AX=5700h)
  64144.  08h    WORD    number of files to transfer, max 7FFFh
  64145.  0Ah    WORD    offset of file transfer record
  64146.  0Ch 47 BYTEs    ASCIZ phone number to call
  64147.  3Bh 64 BYTEs    ASCIZ application-specific tag string
  64148.  7Bh    BYTE    reserved (00h)
  64149.  7Ch    BYTE    connect time, seconds
  64150.  7Dh    BYTE    connect time, minutes
  64151.  7Eh    BYTE    connect time, hours
  64152.  7Fh    DWORD    total number of pages in all files
  64153.  83h    DWORD    pages already transmitted
  64154.  87h    WORD    number of files already transmitted
  64155.  89h    BYTE    cover page flag
  64156.         00h don't transmit cover page
  64157.         01h transmit cover page
  64158.         02h to 7Fh reserved
  64159.  8Ah    WORD    total number of transmission errors
  64160.  8Ch 78 BYTEs    reserved (zeros)
  64161.  DAh 21 BYTEs    ASCIZ remote FAX's CCITT identification
  64162.  EFH 32 BYTEs    ASCIZ destination name
  64163. 10Fh 32 BYTEs    ASCIZ sender name
  64164. 12Fh 80 BYTEs    filename of PCX logo file (max 1780x800 pixels)
  64165. 17Fh 128 BYTEs    file transfer record for current event (see #1596)
  64166.  
  64167. (Table 1595)
  64168. Values for CAS event status:
  64169.  0000h    completed successfully
  64170.  0001h    waiting
  64171.  0002h    number dialed
  64172.  0003h    connected, sending
  64173.  0004h    connected, receiving
  64174.  0005h    aborted
  64175.  0006h to 007Fh reserved
  64176.  0080h to 7FFFh application-specific events
  64177.  8000h to FFFFh error codes
  64178.  
  64179. Format of CAS file transfer record:
  64180. Offset    Size    Description    (Table 1596)
  64181.  00h    BYTE    file type (ignored unless FAX)
  64182.         00h ASCII
  64183.         01h PCX
  64184.         02h DCX
  64185.         03h to 7Fh reserved
  64186.  01h    BYTE    text size for ASCII FAX file
  64187.         00h = 80 columns by 66 lines (11 inches)
  64188.         01h = 132 columns by 88 lines (11 inches)
  64189.         02h to 7Fh reserved
  64190.  02h    BYTE    status of file
  64191.         00h untouched
  64192.         01h opened
  64193.         02h moved
  64194.         03h deleted
  64195.         04h not yet received
  64196.         05h to 7Fh reserved
  64197.  03h    DWORD    bytes already transmitted
  64198.  07h    DWORD    file size in bytes
  64199.  0Bh    WORD    pages alread transmitted
  64200.  0Dh    WORD    number of pages in file
  64201.  0Fh 80 BYTEs    ASCIZ filename
  64202.  5Fh    BYTE    1/8 inch page length
  64203.         if page length below set to 01h through 7Fh, this value
  64204.           specifies additional 1/8 inch increments to page length
  64205.  60h    BYTE    page length
  64206.         00h = 11 inches
  64207.         01h to 7Fh = page length is this number of inches plus value of
  64208.               1/8 inch field above
  64209.         80h to FEh reserved
  64210.         FFh = ASCII pages ending with formfeed
  64211.  61h 31 BYTEs    reserved (zeros)
  64212. --------F-2FCB11-----------------------------
  64213. INT 2F - Communicating Applications Specification - GET QUEUE STATUS
  64214.     AX = CB11h
  64215.     DL = queue to get status of
  64216.         00h task queue
  64217.         01h receive queue
  64218.         02h log queue
  64219.         03h send events (v1.2+)
  64220.         04h receive events (v1.2+)
  64221. Return: AX >= 0     total number of changes made to queue, modulo 32768
  64222.         BX = number of control files currently in queue
  64223.         CX = number of received files (zero for task and log queues)
  64224.     AX < 0    error code (see #1591)
  64225. SeeAlso: AX=CB12h
  64226. --------F-2FCB11DL03-------------------------
  64227. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
  64228.     AX = CB11h
  64229.     DL = 03h
  64230. Return: AX = number of successful sends since resident manager started
  64231.     BX = number of unsuccessful sends, including warnings
  64232. SeeAlso: AX=CB11h/DL=04h
  64233. --------F-2FCB11DL04-------------------------
  64234. INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
  64235.     AX = CB11h
  64236.     DL = 04h
  64237. Return: AX = number of received file events since resident manager started
  64238.     BX = number of received FAX events
  64239. SeeAlso: AX=CB11h/DL=03h
  64240. --------F-2FCB12-----------------------------
  64241. INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
  64242.     AX = CB12h
  64243.     DS:DX -> 128-byte status buffer (see #1597,#1599)
  64244. Return: AX = 0000h successful
  64245.         DS:DX buffer filled with hardware-dependent status information
  64246.        < 0       error code (see #1591)
  64247. SeeAlso: AX=CB10h,AX=CB11h
  64248.  
  64249. Format of status buffer for Intel Connection CoProcessor:
  64250. Offset    Size    Description    (Table 1597)
  64251.  00h    BYTE    Connection CoProcessor connection status flags (see #1600)
  64252.  01h    BYTE    number of kilobytes of free buffer space
  64253.  02h    BYTE    page buffer status
  64254.         bit 7: Connection CoProcessor has documents to send
  64255.         bits 6-0: number of pages in buffer
  64256.  03h    BYTE    number of retries left for dialing number
  64257.  04h    BYTE    page number to retransmit
  64258.  05h    BYTE    communications status (see #1601)
  64259.  06h    BYTE    baud rate (see #1598)
  64260.  07h  3 BYTEs    reserved
  64261.  0Ah    BYTE    Connection CoProcessor hardware status (see #1602)
  64262.  0Bh    BYTE    Connection CoProcessor switch states (see #1603)
  64263.  0Ch    BYTE    communications flags (see #1604)
  64264.  0Dh    BYTE    reserved
  64265.  0Eh    WORD    error count (only valid while busy, reset when idle)
  64266.  10h    DWORD    size of nonstandard format (NSF) file in bytes
  64267.  14h    BYTE    'A' if Connection CoProcessor board present
  64268.  15h  9 BYTEs    reserved
  64269.  1Eh 21 BYTEs    ASCIZ CCITT identification
  64270.  33h 77 BYTEs    reserved
  64271. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  64272.       by examining the byte at offset 14h
  64273.  
  64274. Bitfields for Connection CoProcessor baud rate:
  64275. Bit(s)    Description    (Table 1598)
  64276.  7    reserved
  64277.  6-4    baud rate
  64278.     000 = 300 baud    (V.21 SDLC or HDLC mode)
  64279.     100 = 2400 baud (V.27 ter)
  64280.     101 = 4800 baud (V.27 ter)
  64281.     110 = 7200 baud (V.29)
  64282.     111 = 9600 baud (V.29)
  64283.  3-0    reserved, should be 0110
  64284.  
  64285. Format of status buffer for Intel SatisFAXtion board:
  64286. Offset    Size    Description    (Table 1599)
  64287.  00h    BYTE    SatisFAXtion connection status flags (see #1605)
  64288.  01h    BYTE    SatisFAXtion board state (see #1606)
  64289.  02h    BYTE    number of KB free in buffer
  64290.  03h    BYTE    number of pages or files in buffer
  64291.  04h    BYTE    number of redials remaining on current number
  64292.  05h    BYTE    FAX page number to retransmit
  64293.  06h    BYTE    current page/file in block transfer
  64294.  07h    BYTE    number of rings received (only if auto-answer enabled)
  64295.  08h    WORD    error count
  64296.  0Ah    DWORD    length of file being transferred
  64297.  0Eh  6 BYTEs    reserved
  64298.  14h    BYTE    'B' if SatisFAXtion board present
  64299.  15h 13 BYTEs    ASCIZ transfer agent name
  64300.  22h  5 BYTEs    ASCIZ transfer agent version number
  64301.  27h 13 BYTEs    ASCIZ resident loader name
  64302.  34h  5 BYTEs    ASCIZ resident loader version number
  64303.  39h 21 BYTEs    ASCIZ remote CSID
  64304.  4Eh 13 BYTEs    ASCIZ resident manager name
  64305.  5Bh  5 BYTEs    ASCIZ resident manager version number
  64306.  60h 32 BYTEs    reserved
  64307. Note:    the Intel Connection CoProcessor and SatisFAXtion may be distinguished
  64308.       by examining the byte at offset 14h
  64309.  
  64310. Bitfields for Connection CoProcessor connection status flags:
  64311. Bit(s)    Description    (Table 1600)
  64312.  7    hardware busy sending or receiving
  64313.  6    last page of data
  64314.  5    no data on current page
  64315.  4    retransmit request for current page being transmitted
  64316.  3    NSF (nonstandard file) mode active
  64317.  2-0    reserved
  64318.  
  64319. Bitfields for communications status:
  64320. Bit(s)    Description    (Table 1601)
  64321.  7    originating call
  64322.  6    FAX message to be sent
  64323.  5    on line
  64324.  4    ring detected and receive enabled
  64325.  3    buffer dumped on receive
  64326.  2-0    hardware sequence state
  64327.     000 idle
  64328.     001 dial
  64329.     010 answer
  64330.     011 transmit
  64331.     100 receive
  64332.     101 pre-message
  64333.     110 post-message
  64334.     111 disconnect
  64335.  
  64336. Bitfields for Connection CoProcessor hardware status:
  64337. Bit(s)    Description    (Table 1602)
  64338.  7    modem option installed
  64339.  6    Connection CoProcessor has control of DAA (not latched)
  64340.  5    on line (not latched)
  64341.  4    ring detected (not latched)
  64342.  3    data in command buffer (not latched)
  64343.  2    set if using DMA channel 1, clear if using DMA channel 3
  64344.  1    line length compensation 1 set (not latched)
  64345.  0    line length compensation 0 set (not latched)
  64346.  
  64347. Bitfields for Connection CoProcessor switch states:
  64348. Bit(s)    Description    (Table 1603)
  64349.  7    reserved
  64350.  6    unused
  64351.  5    spare switch open
  64352.  4    FAX ADR1 switch open
  64353.  3    FAX ADR0 switch open
  64354.  2    alternate interrupt switch open
  64355.  1    COM SEL 1 switch open
  64356.  0    COM SEL 0 switch open
  64357. Note:    valid combinations of 0-2 are
  64358.     000  COM2 IRQ3 IObase 2F8h
  64359.     001  COM1 IRQ4 IObase 3F8h
  64360.     010  COM4 IRQ3 IObase 2E8h
  64361.     011  COM3 IRQ4 IObase 3E8h
  64362.     110  COM4 IRQ2 IObase 2E8h
  64363.     111  COM3 IRQ5 IObase 3E8h
  64364.  
  64365. Bitfields for communications flags:
  64366. Bit(s)    Description    (Table 1604)
  64367.  7    reserved
  64368.  6    auxiliary relay forced ON
  64369.  5    modem select relay forced ON
  64370.  4    offhook relay forced ON
  64371.  3    9600 bps enabled
  64372.  2    7200 bps enabled
  64373.  1    4800 bps enabled
  64374.  0    2400 bps enabled
  64375.  
  64376. Bitfields for SatisFAXtion connection status flags:
  64377. Bit(s)    Description    (Table 1605)
  64378.  7    busy in T.30 CCITT fax protocol
  64379.  6    data on current page/file (only used for block xfers)
  64380.  5    retransmission of last page requested
  64381.  4    in file transfer mode
  64382.  3    data in buffer
  64383.  2    data buffer dumped on receive
  64384.  1    200x100 dpi resolution instead of 200x200 dpi
  64385.  0    data modem in use, FAX image modem not available
  64386.  
  64387. Bitfields for SatisFAXtion board state:
  64388. Bit(s)    Description    (Table 1606)
  64389.  7    reserved
  64390.  6    handset jack active, data and FAX modems not available
  64391.  5-3    current rate
  64392.     000  300 bps (V.21 HDLC)
  64393.     100 2400 bps (V.27 ter)
  64394.     101 4800 bps (V.27 ter)
  64395.     110 7200 bps (V.29)
  64396.     111 9600 bps (V.29)
  64397.  2-0    T.30 CCITT protocol state
  64398.     000 idle
  64399.     001 dialing
  64400.     010 answering
  64401.     011 transmitting
  64402.     100 receiving
  64403.     101 pre-message
  64404.     110 post-message
  64405.     111 disconnect
  64406. --------F-2FCB13DL00-------------------------
  64407. INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
  64408.     AX = CB13h
  64409.     DL = 00h
  64410. Return: AX = 0040h in progress
  64411.        >= 0       passed
  64412.        < 0       hardware-dependent failure code (see #1607,#1608)
  64413. SeeAlso: AX=CB13h/DL=01h
  64414.  
  64415. Bitfields for Intel Connection CoProcessor failure codes:
  64416. Bit(s)    Description    (Table 1607)
  64417.  3    9600 bps FAX modem module failed
  64418.  2    SDLC chip failed
  64419.  1    RAM failed
  64420.  0    ROM checksum failed
  64421.  
  64422. Bitfields for Intel SatisFAXtion failure codes:
  64423. Bit(s)    Description    (Table 1608)
  64424.  1    2400 bps data modem failed
  64425.  0    9600 bps FAX modem failed
  64426. --------F-2FCB13DL01-------------------------
  64427. INT 2F - Communicating Applications Specification - START DIAGNOSTICS
  64428.     AX = CB13h
  64429.     DL = 01h
  64430. Return: AX = 0000h successfully started
  64431.     AX < 0       error code (see #1591)
  64432. SeeAlso: AX=CB13h/DL=00h
  64433. --------F-2FCB14-----------------------------
  64434. INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
  64435.     AX = CB14h
  64436.     BX = event handle
  64437.     CX = receive file number
  64438.         0001h first received file
  64439.         N      Nth received file
  64440.     DS:DX -> ASCIZ string specifying new name for file (must not exist)
  64441. Return: AX = 0000h successful
  64442.     AX < 0       error code (see #1591)
  64443. --------F-2FCB15-----------------------------
  64444. INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
  64445.     AX = CB15h
  64446.     DS:DX -> variable-length data area (see #1609)
  64447. Return: AX >= 0 event handle
  64448.     AX < 0    error code (see #1591)
  64449. SeeAlso: AX=CB01h
  64450.  
  64451. Format of CAS file submission data area:
  64452. Offset    Size    Description    (Table 1609)
  64453.  00h    BYTE    transfer type
  64454.         00h = 200x200 dpi, fax mode
  64455.         01h = 100x200 dpi, fax mode
  64456.         02h = file transfer mode
  64457.         03h to 7Fh reserved
  64458.  01h    BYTE    text size
  64459.         00h = 80 columns
  64460.         01h = 132 columns
  64461.         02h to 7Fh reserved
  64462.  02h    WORD    time to send (DOS packed time, see #0802 at INT 21/AX=5700h)
  64463.  04h    WORD    date to send (DOS packed date, see #0803 at INT 21/AX=5700h)
  64464.  06h 32 BYTEs    ASCIZ destination name
  64465.  26h 80 BYTEs    ASCIZ name of file to send
  64466.  76h 47 BYTEs    ASCIZ phone number to dial
  64467.  A5h 64 BYTEs    ASCIZ application-specific tag string
  64468.  E5h    BYTE    reserved (00h)
  64469.  E6h    BYTE    cover page
  64470.         00h don't send cover page
  64471.         01h send cover page
  64472.         02h to 7Fh reserved
  64473.  E7h 23 BYTEs    reserved (zeros)
  64474.  FEh variable    ASCIZ string containing text of cover page (if cover page flag
  64475.         set to 01h)
  64476. --------F-2FCB16BX1234-----------------------
  64477. INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
  64478.     AX = CB16h
  64479.     BX = 1234h
  64480.     CX = 5678h
  64481.     DX = 9ABCh
  64482. Return: AX = 0000h successful
  64483.     AX < 0       error code
  64484. Note:    the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
  64485. SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
  64486. Index:    uninstall;CAS Manager
  64487. --------F-2FCB17-----------------------------
  64488. INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
  64489.     AX = CB17h
  64490.     BX = event handle
  64491.     CL = cover page status
  64492.         00h not read
  64493.         01h read by user
  64494. Return: AX = 0000h successful
  64495.     AX < 0       error code
  64496. --------F-2FCB80-----------------------------
  64497. INT 2F - Intel SatisFAXtion CASMGR - ???
  64498.     AX = CB80h
  64499.     ???
  64500. Return: ???
  64501. --------F-2FCB81-----------------------------
  64502. INT 2F - Intel SatisFAXtion CASMGR - ???
  64503.     AX = CB81h
  64504.     ???
  64505. Return: ???
  64506. --------F-2FCB82-----------------------------
  64507. INT 2F - Intel SatisFAXtion CASMGR - ???
  64508.     AX = CB82h
  64509.     ???
  64510. Return: ???
  64511. --------F-2FCBDCBL56-------------------------
  64512. INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
  64513.     AX = CBDCh
  64514.     BL = 56h
  64515.     BH = line number (starts with 1)
  64516.     CX:DX -> 32-byte status buffer or 80 character string
  64517. Return: AX = number of cards installed, or FFFFh on error
  64518. Program: Comwave manufacturers the Microfax line of fax cards which are a high-
  64519.       performance multi-card FAX solution for OEMs.
  64520. Note:    defaults to AH=CBh but can be changed
  64521. SeeAlso: AX=CBDDh,AX=DA00h
  64522. --------F-2FCBDDBL56-------------------------
  64523. INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
  64524.     AX = CBDDh
  64525.     BL = 56h
  64526.     BH = ?
  64527.     CX:DX -> command to execute
  64528. Return: AX = status
  64529.         0000h success
  64530.         FFFFh on error
  64531. SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
  64532. --------c-2FCC--SI5453-----------------------
  64533. INT 2F U - PC-Kwik Programs - API
  64534.     AH = CCh
  64535.     SI = 5453h or 7473h
  64536.     AL = function number (at least 00h,01h,04h,05h,07h,80h)
  64537.     DL = program identifier (see #1610)
  64538. Return: SI = 7473h
  64539.     other registers vary by function
  64540. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  64541.       thus supports this call
  64542. SeeAlso: INT 21/AH=2Bh/CX=4358h
  64543.  
  64544. (Table 1610)
  64545. Values for PC-Kwik program identifier:
  64546.  00h    all installed PowerPak programs
  64547.  01h    SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
  64548.  02h    PCKSPL (print spooler)
  64549.  04h    PCKSCRN (screen accelerator)
  64550.  05h    PCKKEY (keyboard enhancer)
  64551.  06h    PCKRAMD (RAM disk)
  64552.  08h    PCKWIK.SYS
  64553.  10h    PCKCDROM (CD-ROM support for SUPERPCK)
  64554. --------N-2FCC00-----------------------------
  64555. INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
  64556.     AX = CC00h
  64557. Return: AX = 7777h
  64558.     BX = ???
  64559.     CX = ???
  64560.     DX = ???
  64561.     ES = data segment of resident portion
  64562. SeeAlso: AX=CC01h,AX=CC06h
  64563. --------N-2FCC01-----------------------------
  64564. INT 2F - Tsoft NFSDRVR - ???
  64565.     AX = CC01h
  64566.     ???
  64567. Return: ???
  64568. SeeAlso: AX=CC00h
  64569. --------N-2FCC02-----------------------------
  64570. INT 2F - Tsoft NFSDRVR - ???
  64571.     AX = CC02h
  64572.     ???
  64573. Return: ???
  64574. SeeAlso: AX=CC00h
  64575. --------N-2FCC03-----------------------------
  64576. INT 2F - Tsoft NFSDRVR - ???
  64577.     AX = CC03h
  64578.     ???
  64579. Return: ???
  64580. SeeAlso: AX=CC00h
  64581. --------N-2FCC04-----------------------------
  64582. INT 2F - Tsoft NFSDRVR - ???
  64583.     AX = CC04h
  64584.     ???
  64585. Return: ???
  64586. SeeAlso: AX=CC00h
  64587. --------N-2FCC05-----------------------------
  64588. INT 2F - Tsoft NFSDRVR - ???
  64589.     AX = CC05h
  64590.     ???
  64591. Return: ???
  64592. SeeAlso: AX=CC00h
  64593. --------N-2FCC06-----------------------------
  64594. INT 2F - Tsoft NFSDRVR - ???
  64595.     AX = CC06h
  64596.     ???
  64597. Return: ???
  64598. SeeAlso: AX=CC00h
  64599. ----------2FCD00-----------------------------
  64600. INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
  64601.     AX = CD00h
  64602. Return: AL = state
  64603.         00h not installed, OK to install
  64604.         01h not installed, not OK to install
  64605.         FFh installed
  64606. SeeAlso: AX=CD02h"Image"
  64607. --------P-2FCD00-----------------------------
  64608. INT 2F - LaserPort Interface - INSTALLATION CHECK
  64609.     AX = CD00h
  64610. Return: AL = status
  64611.         FFh installed
  64612. SeeAlso: AX=CD0Fh"LaserPort"
  64613. --------U-2FCD00-----------------------------
  64614. INT 2F - SWELL.EXE - INSTALLATION CHECK
  64615.     AX = CD00h
  64616. Return: AX = 00FFh installed
  64617.         BH = major version
  64618.         BL = minor version
  64619. Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a child
  64620.       process with INT 21/AH=4Bh
  64621. --------s-2FCD00BX464F-----------------------
  64622. INT 2F - Forte/Gravis - INSTALLATION CHECK
  64623.     AX = CD00h
  64624.     BX = 464Fh ('FO')
  64625.     CX = 5254h ('RT')
  64626.     DX = 4520h ('E ')
  64627. Return: AX = CDFFh if installed
  64628.         BX = 4155h ('AU')
  64629.         CX = 4449h ('DI')
  64630.         DX = 4F20h ('O ')
  64631.         ES:SI -> program ID string
  64632. SeeAlso: INT 21/AX=FD12h
  64633. ----------2FCD01-----------------------------
  64634. INT 2F - Intel Image Processing Interface - SET DEVICE NAME
  64635.     AX = CD01h
  64636.     CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
  64637. Return: AL = status
  64638.         00h successful
  64639.         CX:BX -> internal character device name
  64640.         80h error
  64641. --------U-2FCD01-----------------------------
  64642. INT 2F - SWELL.EXE - SUSPEND ONCE
  64643.     AX = CD01h
  64644. Return: AX = 0000h
  64645. SeeAlso: AX=CD02h"SWELL"
  64646. ----------2FCD02-----------------------------
  64647. INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
  64648.     AX = CD02h
  64649. Return: AL = status
  64650.         00h/01h successful
  64651.         BH = major version number (BCD)
  64652.         BL = minor version number (BCD)
  64653.         80h error
  64654. Note:    if return AL = 01h, the IPI supports network redirection
  64655. SeeAlso: AX=CD00h"Image"
  64656. --------U-2FCD02-----------------------------
  64657. INT 2F - SWELL.EXE - SUSPEND
  64658.     AX = CD02h
  64659. Return: AX = 0000h
  64660. SeeAlso: AX=CD03h"SWELL"
  64661. ----------2FCD03-----------------------------
  64662. INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
  64663.     AX = CD03h
  64664.     BX = scan line
  64665.     CX = requested density in dots per inch (300, 600, or 1200)
  64666. Return: AL = status (see also AX=CD04h"Image")
  64667.         00h successful
  64668.         CX = density at which scan line was mapped
  64669.         ES:DI -> start of scan line
  64670.         80h unsuccessful
  64671.         81h scan line out of range
  64672.         82h unsupported scan line density
  64673.         83h out of memory
  64674. SeeAlso: AX=CD04h"Image"
  64675. --------U-2FCD03-----------------------------
  64676. INT 2F - SWELL.EXE - ACTIVATE
  64677.     AX = CD03h
  64678. Return: AX = 0000h
  64679. SeeAlso: AX=CD02h"SWELL"
  64680. ----------2FCD04-----------------------------
  64681. INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
  64682.     AX = CD04h
  64683.     CX:BX -> structure (see #1612)
  64684. Return: AL = status (see #1611)
  64685. SeeAlso: AX=CD03h"Image"
  64686.  
  64687. (Table 1611)
  64688. Values for IPI function status:
  64689.  00h    successful
  64690.  80h    unsuccessful
  64691.  81h    scan line out of range
  64692.  82h    unsupported scan line density
  64693.  83h    out of memory
  64694.  84h    unrecognized source
  64695.  85h    initialization error
  64696.  
  64697. Format of structure:
  64698. Offset    Size    Description    (Table 1612)
  64699.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  64700.  02h    DWORD    pointer to image data
  64701.  06h    WORD    scan line on which to place
  64702.  08h    WORD    bit offset from start of scan line at which to place
  64703.  0Ah    WORD    density of bitmap data (300, 600, or 1200 dpi)
  64704.  0Ch    WORD    width in bits of data
  64705.  0Eh    WORD    source logical page number
  64706.  10h    WORD    source handle (only if source in expanded memory)
  64707.  12h    WORD    source offset (only if source in expanded memory)
  64708. --------U-2FCD04-----------------------------
  64709. INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
  64710.     AX = CD04h
  64711. Return: AX = 0000h
  64712. SeeAlso: AX=CD05h"SWELL"
  64713. ----------2FCD05-----------------------------
  64714. INT 2F - Intel Image Processing Interface - PRINT PAGE
  64715.     AX = CD05h
  64716. Return: AL = status (00h,80h) (see #1611)
  64717. Note:    page image is retained, so multiple calls will print multiple copies of
  64718.       the page
  64719. SeeAlso: AX=CD06h"Image"
  64720. --------U-2FCD05-----------------------------
  64721. INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
  64722.     AX = CD05h
  64723. Return: AX = 0000h
  64724. SeeAlso: AX=CD04h"SWELL"
  64725. ----------2FCD06-----------------------------
  64726. INT 2F - Intel Image Processing Interface - CLEAR PAGE
  64727.     AX = CD06h
  64728. Return: AL = status (00h,80h) (see #1611)
  64729. Note:    palette is reset to default
  64730. SeeAlso: AX=CD09h"Image"
  64731. --------U-2FCD06-----------------------------
  64732. INT 2F - SWELL.EXE - UNINSTALL
  64733.     AX = CD06h
  64734. Return: AX = status
  64735.         0000h uninstalled
  64736.         8002h programs still swapped, not uninstalled
  64737. ----------2FCD07-----------------------------
  64738. INT 2F - Intel Image Processing Interface - reserved
  64739.     AX = CD07h
  64740. SeeAlso: AX=CD00h"Image"
  64741. --------U-2FCD07-----------------------------
  64742. INT 2F - SWELL.EXE - GET INFO
  64743.     AX = CD07h
  64744.     ES:BX -> 32-byte buffer for info (see #1613)
  64745. Return: AX = status
  64746.         0000h successful
  64747.         ES:BX buffer filled
  64748.         8001h buffer wrong size
  64749.  
  64750. Format of SWELL.EXE info buffer:
  64751. Offset    Size    Description    (Table 1613)
  64752.  00h    WORD    20h  (total size of buffer)
  64753.  02h    BYTE    suspend-once mode active if nonzero
  64754.  03h    BYTE    00h active, 01h suspended
  64755.  04h    BYTE    00h quiet, 01h verbose
  64756.  05h    BYTE    "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
  64757.  06h 26 BYTEs    unused???
  64758. ----------2FCD08-----------------------------
  64759. INT 2F - Intel Image Processing Interface - SCREEN IMAGE
  64760.     AX = CD08h
  64761.     CX:BX -> structure (see #1614)
  64762. Return: AL = status (00h,80h-85h) (see #1611)
  64763. SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
  64764.  
  64765. Format of IPI screen image structure:
  64766. Offset    Size    Description    (Table 1614)
  64767.  00h    WORD    image source (0 = conventional memory, 1 = expanded memory)
  64768.  02h    DWORD    pointer to image data
  64769.  06h    WORD    horizontal position on paper of left edge (in 1200 dpi units)
  64770.  08h    WORD    vertical position on paper of top edge (in 1200 dpi units)
  64771.  0Ah    WORD    left cropping (currently must be zero)
  64772.  0Ch    WORD    top cropping (currently must be zero)
  64773.  0Eh    WORD    width (currently must be 8000h)
  64774.  10h    WORD    height (currently must be 8000h)
  64775.  12h    WORD    horizontal size of image in 1200 dpi units
  64776.  14h    WORD    vertical size of image in 1200 dpi units
  64777.  16h    WORD    aspect ratio (currently reserved)
  64778.  18h    WORD    initialization flag (if 01h, initialization is performed)
  64779.  1Ah    WORD    pixels per line of source data
  64780.  1Ch    WORD    number of scan lines in source data
  64781.  1Eh    WORD    number of scan lines in packet
  64782.  20h    WORD    bits per pixel (1,2,4,6, or 8)
  64783.  22h    WORD    pixels per byte (1,2,4, or 8)
  64784.  24h    WORD    compression type (currently only 00h [uncompressed] supported)
  64785.  26h    WORD    source page number (if in expanded memory)
  64786.  28h    WORD    source handle (if in expanded memory)
  64787.  2Ah    WORD    source offset (if in expanded memory)
  64788. --------U-2FCD08-----------------------------
  64789. INT 2F - SWELL.EXE - UNUSED
  64790.     AX = CD08h
  64791. Return: AX = FFFFh (error)
  64792. ----------2FCD09-----------------------------
  64793. INT 2F - Intel Image Processing Interface - LOAD SCREEN
  64794.     AX = CD09h
  64795.     CX:BX -> structure (see #1615)
  64796. Return: AL = status (00h,80h) (see #1611)
  64797. SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
  64798.  
  64799. Format of IPI load screen structure:
  64800. Offset    Size    Description    (Table 1615)
  64801.  00h    BYTE    style
  64802.         44h ('D') diamond style
  64803.         4Ch ('L') line style
  64804.  01h    BYTE    reserved (00h)
  64805.  02h    WORD    frequency in lines per inch [sic]
  64806.         currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
  64807.  04h    WORD    screen angle in degrees (-360 to 360)
  64808.         currently coerced to nearest of -45, 0, 45, or 90
  64809. --------U-2FCD09-----------------------------
  64810. INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
  64811.     AX = CD09h
  64812. Return: AX = 0000h
  64813. SeeAlso: AX=CD0Ah"SWELL"
  64814. ----------2FCD0A-----------------------------
  64815. INT 2F - Intel Image Processing Interface - LOAD PALETTE
  64816.     AX = CD0Ah
  64817.     CX:BX -> palette structure (see #1616)
  64818. Return: AL = status (00h,80h) (see #1611)
  64819. SeeAlso: AX=CD09h"Image Processing"
  64820.  
  64821. Format of IPI palette structure:
  64822. Offset    Size    Description    (Table 1616)
  64823.  00h    BYTE    bits per pixel for which palette is to be used (1,2,4,6, or 8)
  64824.  01h    2**N    palette translation values, one per possible pixel value
  64825. --------U-2FCD0A-----------------------------
  64826. INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
  64827.     AX = CD0Ah
  64828. Return: AX = 0000h
  64829. SeeAlso: AX=CD09h"SWELL"
  64830. --------P-2FCD0F-----------------------------
  64831. INT 2F - LaserPort Interface - EXECUTE FUNCTION
  64832.     AX = CD0Fh
  64833.     BL = function
  64834.         01h enable
  64835.         02h disable
  64836.         03h ???
  64837. Return: AL = status
  64838.         00h success
  64839. SeeAlso: AX=CD00h"LaserPort"
  64840. --------K-2FCF00-----------------------------
  64841. INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
  64842.     AX = CF00h
  64843. Return: AL = FFh if installed
  64844. Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
  64845. Note:    values in AL other than 00h cause an immediate return without modifying
  64846.       any registers
  64847. --------G-2FD000-----------------------------
  64848. INT 2F C - MDEBUG display driver - GET DRIVER STATUS
  64849.     AX = D000h
  64850. Return: CF set on error
  64851.         all other registers must be unchanged)
  64852.     CF clear if successful
  64853.         AL = FFh
  64854.         AH = driver semaphor
  64855.         00h driver is not active
  64856.         01h driver is active
  64857.         BX = CS of the driver
  64858.         CX = driver version (CH = major, CL = minor, must be >= 013Ch)
  64859.         DL = buffer semaphor
  64860.         00h driver is not pending
  64861.         01h driver is pending between functions 02h and 03h
  64862.         DH = show semaphor
  64863.         00h driver is not pending
  64864.         01h driver is pending between functions 04h and 05h
  64865. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  64866.       Schemmer, including a memory monitor, an interpreter and a
  64867.       disassembler
  64868. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  64869. Notes:    MDEBUG can use any two consecutive multiplex numbers between C0h and
  64870.       FFh; the default is D0h for the display driver and D1h for the
  64871.       command driver (see INT 60/AH=00h"MDEBUG" for the actual multiplex
  64872.       numbers used)
  64873.     this function MUST be reentrant, as MDEBUG calls it after every popup
  64874.       before any other actions.  The handler should not change any
  64875.       registers if the display is in an unsupported mode or in a mode
  64876.       MDEBUG supports itself, e.g. a normal text mode with at least 80x25
  64877.       characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
  64878.       not call any of the other functions for this popup session.
  64879.     MDEBUG will not call the other functions if the returned version is
  64880.       less than the actual version of MDEBUG.
  64881.     if the driver is reentrant, DL and DH should be 00h
  64882. SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
  64883. --------M-2FD000-----------------------------
  64884. INT 2F - ZWmous - INSTALLATION CHECK
  64885.     AX = D000h
  64886. Return: AX = 5A57h ("ZW") if installed
  64887.         BX = segment of resident code
  64888. Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
  64889.       with many non-mouse applications by entering the letter under the
  64890.       mouse cursor on button presses
  64891. SeeAlso: INT 33/AX=0003h
  64892. --------N-2FD000-----------------------------
  64893. INT 2F - Lotus CD/Networker - INSTALLATION CHECK
  64894.     AX = D000h
  64895. Return: AL = FFh if CD/Networker TSR is loaded
  64896.     BX = 4D44h ("MD") signature
  64897.     CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
  64898.     DX = bitmap identifying all loaded CD/Networker TSRs.
  64899. Notes:    INT 2F/AH=D0h is used by CD/Networker to communicate between a
  64900.       resident redirector TSR and a transient program that controls the
  64901.       TSR's CD-ROM drive emulation (volume attachments, caching, etc).
  64902.     At present there is only one CD/Networker TSR; the bitmap always = 4.
  64903. SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
  64904. --------G-2FD001-----------------------------
  64905. INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
  64906.     AX = D001h
  64907. Return: CF set on error
  64908.     AL = driver semaphor
  64909.     AH = buffer semaphor
  64910. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  64911. Notes:    MDEBUG calls this function after every successful call of the function
  64912.       00h. The function should reset all internal data and the status of
  64913.       the driver. If this function returns an error, MDEBUG will not call
  64914.       the other functions in this popup session.
  64915.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  64916.       FFh; the default is D0h for the display driver and D1h for the
  64917.       command driver
  64918. SeeAlso: AX=D000h
  64919. --------G-2FD002-----------------------------
  64920. INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
  64921.     AX = D002h
  64922. Return: CF set on error
  64923.     CF clear if successful
  64924.         display memory saved and display switched to one of the text modes
  64925.           02h, 03h or 07h.
  64926. Note:    MDEBUG calls this function only once every popup session before
  64927.       displaying its windows.
  64928. SeeAlso: AX=D000h,AX=D003h
  64929. --------N-2FD002BX4D44-----------------------
  64930. INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
  64931.     AX = D002h
  64932.     BX = 4D44h
  64933.     DX = bitmap identifying one loaded CD/Networker TSR
  64934. Return: ES:DI -> data area owned by TSR
  64935. Note:    the format of the data area changes with each minor revision, so it
  64936.       cannot be counted on
  64937. SeeAlso: AX=D000h"Lotus"
  64938. --------G-2FD003-----------------------------
  64939. INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
  64940.     AX = D003h
  64941. Return: CF set on error
  64942.     CF clear if successful
  64943.         display restored to the mode it was in before calling AX=D002h and
  64944.           the display memory is restored
  64945. Note:    MDEBUG calls this function only once every popup session just before
  64946.      it exits to normal DOS.
  64947. SeeAlso: AX=D000h,AX=D002h
  64948. --------G-2FD004-----------------------------
  64949. INT 2F - MDEBUG display driver - SHOW SAVED DATA
  64950.     AX = D004h
  64951. Return: CF set on error
  64952.     CF clear if successful
  64953.         display switched to mode it was in before calling AX=D002h and the
  64954.           display memory is restored
  64955. Note:    This function needn't save the display memory before changing it.
  64956. SeeAlso: AX=D000h,AX=D005h
  64957. --------G-2FD005-----------------------------
  64958. INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
  64959.     AX = D005h
  64960. Return: CF set on error
  64961.     CF clear if successful
  64962.         display restored to mode it was in before calling AX=D004h
  64963. Note:    This function needn't save or change the display memory
  64964. SeeAlso: AX=D000h,AX=D004h
  64965. --------G-2FD0-------------------------------
  64966. INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
  64967.     AH = D0h
  64968.     AL = 06h-7Fh
  64969. Note:    these functions are reserved for future use
  64970. --------G-2FD0-------------------------------
  64971. INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
  64972.     AH = D0h
  64973.     AL = 80h-FFh
  64974. Note:    these functions numbers are reserved for user defined features (e.g.
  64975.       communication between the transient und resident parts of the driver)
  64976. --------G-2FD100-----------------------------
  64977. INT 2F C - MDEBUG command driver - GET STATUS
  64978.     AX = D100h
  64979.     BX = version of MDEBUG (BH = major, BL = minor)
  64980.     CX = command driver counter
  64981. ---v1.60+---
  64982.     DS:SI -> MDEBUG identification table (see #1617)
  64983.     ES = segment of display memory used by MDEBUG
  64984.     DI = size of video mode used by MDEBUG
  64985.         (high byte = lines, low byte = columns)
  64986. Return: DL = FFh
  64987.     BX = version number of the driver if it is less than the version in BX,
  64988.           else unchanged
  64989.     CX incremented
  64990. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  64991.       Schemmer, including a memory monitor, an interpreter, and a
  64992.       disassembler
  64993. Range:    AH=C0h to AH=FFh, selected by switch or programmatically
  64994. Notes:    called by MDEBUG at start of popup session; if the version number
  64995.       returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
  64996.       not call any of the other functions during this popup session
  64997.     MDEBUG can use any two consecutive multiplex numbers between C0h and
  64998.       FFh; the default is D0h for the display driver and D1h for the
  64999.       command driver (see INT 60/AH=00h"MDEBUG" for the multiplex numbers
  65000.       actually used)
  65001.     this function must end with a far call to the old INT 2F handler after
  65002.       changing the registers
  65003.     this function MUST be reentrant
  65004.     command drivers must also declare the following data at the given
  65005.       offsets in the code segment
  65006.         100h  3 BYTEs    JMP-command in .COM-files
  65007.         103h    BYTE    NOP-command (90h)
  65008.         104h 26 BYTEs    signature "Kommandotreiber für MDEBUG"
  65009.         11Eh 12 BYTEs    name of driver, e.g. "MDHISDRV.COM"
  65010.                 each driver must have a unique name
  65011.     MDEBUG will pass every key and command to the command driver(s) before
  65012.       checking for a valid internal command
  65013. SeeAlso: AX=D000h,AX=D101h
  65014.  
  65015. Format of MDEBUG identification table:
  65016. Offset    Size    Description    (Table 1617)
  65017.  -2    WORD    entry offset
  65018.  00h    WORD    CS of MDEBUG
  65019.  02h    DWORD    old INT 08h vector
  65020.  06h    DWORD    old INT 09h vector
  65021.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  65022.  0Eh    BYTE    length of version string
  65023.  0Fh  N BYTEs    version string
  65024. --------G-2FD101-----------------------------
  65025. INT 2F - MDEBUG command driver - INITIALIZE DRIVER
  65026.     AX = D101h
  65027.     CX = command driver counter
  65028. Return: DL = status
  65029.         FFh if successful
  65030.         CX incremented
  65031.         else error: all registers unchanged
  65032. Note:    this function must end with a  far call to the old INT 2F handler after
  65033.       changing the registers
  65034.     this function must be reentrant
  65035. --------G-2FD102-----------------------------
  65036. INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
  65037.     AX = D102h
  65038.     BL = first character of the interpreter command
  65039.     BH = last character of the interpreter command (or blank)
  65040.     DS:SI -> parameter for the interpreter command as ASCIZ string
  65041.     DS:DI -> MDEBUG data structure (see #1619)
  65042. Return: AL = FFh
  65043.     CF set on error
  65044.         AH = error number (see #1618)
  65045.         DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
  65046.     CF clear if successful
  65047.         AH = return code
  65048.         00h continue processing the command line
  65049.         01h leave MDEBUG popup session
  65050.         02h leave MDEBUG popup session and automatically popup again
  65051.               if the InDOS flag is zero
  65052.         03h not used (same as 00h)
  65053.         04h not used (same as 00h)
  65054.         05h put new command line into the input buffer,
  65055.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  65056.         06h process new command line
  65057.             DS:SI -> new command line (ASCIZ string, max 66 chars)
  65058.            else unknown status, but continue processing commmand line
  65059. Note:    this function must end with a far call to the old INT 2F handler (with
  65060.       registers unchanged) if the driver does not support the interpreter
  65061.       command in BX.  Otherwise, the driver must not chain to the old
  65062.       INT 2F.
  65063.  
  65064. (Table 1618)
  65065. Values for MDEBUG error number:
  65066.  01h    syntax error
  65067.  02h    first shell of the command.com is activ
  65068.  03h    Esc pressed
  65069.  04h    break pressed
  65070.  05h    DOS is busy
  65071.  06h    command ended
  65072.  07h    division by zero
  65073.  08h    invalid display driver
  65074.  09h    invalid command driver
  65075.  0Ah    error 8 and 9
  65076.  0Bh    unknown error
  65077.  0Ch    new error
  65078.  else    unknown error
  65079.  
  65080. Format of MDEBUG data structure:
  65081. Offset    Size    Description    (Table 1619)
  65082.  00h    WORD    register SE
  65083.  02h    WORD    register OF
  65084.  04h    WORD    register FS
  65085.  06h    WORD    register FO
  65086.  08h    WORD    register AX
  65087.  0Ah    WORD    register BX
  65088.  0Ch    WORD    register CX
  65089.  0Eh    WORD    register DX
  65090.  10h    WORD    register SI
  65091.  12h    WORD    register DI
  65092.  14h    WORD    register DS
  65093.  16h    WORD    register ES
  65094.  18h    WORD    register BP
  65095.  1Ah    WORD    register SS
  65096.  1Ch    WORD    register SP
  65097.  1Eh    WORD    register FL (flags)
  65098.  20h    WORD    register R0
  65099.  22h    WORD    register R1
  65100.  24h    WORD    register R2
  65101.  26h    WORD    register R3
  65102.  28h    WORD    register R4
  65103.  2Ah    WORD    register R5
  65104.  2Ch    WORD    register R6
  65105.  2Eh    WORD    register R7
  65106.  30h    WORD    register R8
  65107.  32h    WORD    register CS, return-address
  65108.  34h    WORD    register IP, return-address
  65109.  36h    DWORD    saved pointer to data for key <F6> (v1.60)
  65110.         saved monitor address (v1.70)
  65111.  3Ah 12 WORDs    saved register values on last popup entry (for <F8> key)
  65112.         (original register values at popup entry of MDEBUG)
  65113.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  65114.  52h 12 WORDs    saved register values on last popup exit (for <SHIFT-F8> key)
  65115.         AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
  65116.  6Ah    DWORD    address of the DOS-invars-table
  65117.  6Eh    DWORD    address of the InDOS flag
  65118.  72h    WORD    offset of the register which is used for the segment of the
  65119.           first monitor window
  65120.  74h    WORD    offset of the register which is used for the offset of the
  65121.           first monitor window
  65122.  76h    WORD    name of the register which is used for the segment of the
  65123.           first monitor segment
  65124.  78h    WORD    name of the register which is used for the offset of the first
  65125.           monitor window
  65126.  7Ah    WORD    pseudo register 1
  65127.  7Ch    WORD    pseudo register 2
  65128. --------G-2FD103-----------------------------
  65129. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
  65130.     AX = D103h
  65131.     BX = key code (like result of an interrupt 16h call)
  65132.     CX = cursor position
  65133.         0000h in the ASCII column of the monitor
  65134.         0001h in one of the hex fields of the monitor
  65135.     DS:SI -> MDEBUG data structure (see #1619)
  65136.     ES:DI -> actual byte in the monitor
  65137. Return: AL = FFh
  65138.     AH = return code
  65139.         00h key processed, read next key
  65140.         01h leave MDEBUG popup session
  65141.         02h leave MDEBUG popup session and automatically popup again if DOS
  65142.           is not busy
  65143.         03h signal an error (beep)
  65144.         04h driver has redefined the key, proceed with the new key
  65145.         BX = new key code
  65146.         MDEBUG will not pass the new key to the command driver(s)
  65147.        else treat like code 00h
  65148. Note:    this function must end with a far call to the old INT 2F handler (with
  65149.       registers unchanged) if the driver does not support the key in BX.
  65150.       Otherwise, the driver must not chain to the old INT 2F.
  65151. SeeAlso: AX=D104h
  65152. --------G-2FD104-----------------------------
  65153. INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
  65154.     AX = D104h
  65155.     DS:SI -> MDEBUG data structure (see #1619)
  65156. Return: AL = FFh
  65157.     AH = return code
  65158.         00h key processed, read next key
  65159.         01h leave MDEBUG popup session
  65160.         02h leave MDEBUG popup session and automactically popup again if
  65161.           DOS is not busy
  65162.         03h signal an error (beep)
  65163.         04h driver has redefined the key, proceed with the new key
  65164.         BX = new key code
  65165.         MDEBUG won't pass the new key to the command driver(s)
  65166.         05h put new command line into the input buffer
  65167.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  65168.         06h process new command line
  65169.         DS:SI -> new command line (ASCIZ string, max 66 chars)
  65170.        else treat like code 00h
  65171. Note:    this function must end with a far call to the old INT 2F handler if the
  65172.       driver does not support the key in BX.  Otherwise, the driver must
  65173.       not chain to the old INT 2F.
  65174. SeeAlso: AX=D103h
  65175. --------G-2FD1-------------------------------
  65176. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  65177.     AH = D1h
  65178.     AL = 05h-0Ah
  65179. Note:    these functions are reserved for future use
  65180. --------G-2FD110-----------------------------
  65181. INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
  65182.     AX = D110h
  65183. Return: DL = FFh
  65184.     ES:BX -> next program in the chain for INT 2F
  65185.     CX = code segment of this driver
  65186.     DI = offset of driver identification table (see #1620) (v1.60+)
  65187. Notes:    only called by the transient part of the driver
  65188.     must be reentrant and the driver must not chain this function to the
  65189.       old INT 2F
  65190.  
  65191. Format of the MDEBUG driver identification table:
  65192. Offset    Size    Description    (Table 1620)
  65193.  00h  26 BYTEs     signature "Kommandotreiber für MDEBUG"
  65194.                          ^- Note: ASCII 129,German U-umlaut
  65195.  27h  12 BYTEs     name of driver, e.g. "MDHISDRV.COM"
  65196.          each driver must have a unique name
  65197. --------G-2FD111-----------------------------
  65198. INT 2F - MDEBUG command driver - START DRIVER
  65199.     AX = D111h
  65200. Return: DL = FFh
  65201. Notes:    only called by the transient part of the driver to inform the resident
  65202.       part that it is installed
  65203.     the function must be reentrant and the driver mustn't chain this
  65204.       function to the old INT 2F
  65205. SeeAlso: AX=D101h,AX=D112h
  65206. --------G-2FD112-----------------------------
  65207. INT 2F - MDEBUG command driver - END DRIVER
  65208.     AX = D112h
  65209. Return: DL = FFh
  65210. Notes:    only called by the transient part of the driver to inform the resident
  65211.       part that it will be released after this function
  65212.     the function must be reentrant and the driver mustn't chain this
  65213.       function to the old INT 2F
  65214. SeeAlso: AX=D101h,AX=D111h
  65215. --------G-2FD1-------------------------------
  65216. INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
  65217.     AH = D1h
  65218.     AL = 13h-7Fh
  65219. Note:    these functions are reserved for future use
  65220. --------G-2FD1-------------------------------
  65221. INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
  65222.     AH = D1h
  65223.     AL = 80h-FFh
  65224. Note:    these functions are reserved for user defined features (e.g.
  65225.       communication between the transient und resident parts of the driver)
  65226. --------U-2FD200-----------------------------
  65227. INT 2F - PCL-838.EXE - INSTALLATION CHECK
  65228.     AX = D200h
  65229. Return: AL = FFh if installed??? (documented as AX = return value)
  65230. Program: PCL-838 is a resident utility for controlling a stepmotor adapter
  65231.       board by Advantec
  65232. SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
  65233. --------Q-2FD200BX5144-----------------------
  65234. INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
  65235.     AX = D200h
  65236.     BX = 5144h ("QD")
  65237.     CX = 4D45h ("ME")
  65238.     DX = 4D30h ("M0")
  65239. Return: AL = FFh installed
  65240.     if BX,CX,DX registers were as specified on entry:
  65241.         BX = 4D45h ("ME")
  65242.         CX = 4D44h ("MD")
  65243.         DX = 5652h ("VR")
  65244. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65245. Notes:    the Quarterdeck RPCI (Resident Program Communication Interface) is
  65246.       supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
  65247.     for AL <> 0, if the BX/CX/DX values don't match the identifier of a
  65248.       Quarterdeck product, it just chains to the previous INT 2F handler
  65249. SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
  65250. SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
  65251. --------U-2FD201-----------------------------
  65252. INT 2F - PCL-838.EXE - UNINSTALL
  65253.     AX = D201h
  65254. Return: AX = return value
  65255. SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
  65256. --------m-2FD201BX4849-----------------------
  65257. INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
  65258.     AX = D201h
  65259.     BX = 4849h ("HI")
  65260.     CX = 4D45h ("ME")
  65261.     DX = 4D51h ("MQ")
  65262. Return: BX = 4F4Bh ("OK")
  65263.     ES:DI -> HIMEM entry point
  65264. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65265. SeeAlso: AX=D200h,AX=D201h/BX=5145h
  65266. --------m-2FD201BX4849-----------------------
  65267. INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
  65268.     AX = D201h
  65269.     BX = 4849h ("HI")
  65270.     CX = 5241h ("RA")
  65271.     DX = 4D30h ("M0")
  65272. Return: BX = 4F4Bh ("OK")
  65273.     CX = segment of start of HIRAM chain
  65274.     DX = reserved block owner (QEMM/QRAM code segment)
  65275. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65276. Note:    the HIRAM memory chain has the same format as the regular DOS 4.0
  65277.       memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks
  65278.       have the block header program name field set to "UMB"; blocks whose
  65279.       "owner" field is set to the reserved segment returned in DX are
  65280.       locked-out regions such as video memory and ROMs.
  65281. SeeAlso: AX=12FFh/BX=0006h,AX=D200h
  65282. --------G-2FD201BX4D41-----------------------
  65283. INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
  65284.     AX = D201h
  65285.     BX = 4D41h ("MA")
  65286.     CX = 4E49h ("NI")
  65287.     DX = 4645h ("FE")
  65288. Return: BX = 5354h ("ST") if installed
  65289. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65290. SeeAlso: AX=D200h
  65291. --------E-2FD201BX4D45-----------------------
  65292. INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
  65293.     AX = D201h
  65294.     BX = 4D45h ("ME")
  65295.     CX = 5155h ("QU")
  65296.     DX = 5044h ("PD")
  65297. Return: AL = FFh
  65298.     BX = 4F4Bh ("OK")
  65299. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65300. Note:    this function is called by QEMM 6.03
  65301.     performs a variety of actions before setting return registers
  65302. SeeAlso: AX=D200h
  65303. --------m-2FD201BX5145-----------------------
  65304. INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
  65305.     AX = D201h
  65306.     BX = 5145h ("QE")
  65307.     CX = 4D4Dh ("MM")
  65308.     DX = 3432h ("42")
  65309. Return: BX = 4F4Bh ("OK")
  65310.     ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
  65311. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65312. Note:    this call is not available under QEMM v6.00 unless Windows3 support
  65313.       has been disabled with the NW3 switch to QEMM386.SYS
  65314. SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
  65315. --------V-2FD201BX5649-----------------------
  65316. INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
  65317.     AX = D201h
  65318.     BX = 5649h ("VI")
  65319.     CX = 4452h ("DR")
  65320.     DX = 414Dh ("AM")
  65321. Return: BX = 4F4Bh ("OK")
  65322.     ES:DI -> VIDRAM entry point
  65323. Range:    AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
  65324. SeeAlso: AX=D200h
  65325.  
  65326. (Table 1621)
  65327. Call VIDRAM entry point with:
  65328.     AH = 00h get status
  65329.         Return: AL = VIDRAM state (see #1622)
  65330.             BL = extra RAM status
  65331.                 00h VIDRAM does not use extra RAM
  65332.                 01h VIDRAM uses EMS as extra RAM
  65333.                 02h VIDRAM uses EGA as extra RAM
  65334.             BH = feature flags (see #1623)
  65335.             CL = current monitor (01h = mono, 80h = color)
  65336.             SI = current top of memory (paragraph)
  65337.             DI = segment of start of HiRAM chain
  65338.     AH = 01h setup
  65339.         AL = VIDRAM state (see #1622)
  65340.         BL = extra RAM status (see above)
  65341.         BH = feature flags (see #1623)
  65342.         CL = monitor (01h = monochrome, 80h = color)
  65343.         SI = new top of memory (paragraph)
  65344.         DI = segment of start of HiRAM chain
  65345.     AH = 02h get end address of VIDRAM code
  65346.         Return: ES:DI -> VIDRAM partial map context (see #1624,#1625)
  65347. Return: CF set on error
  65348.     CF clear if successful
  65349.  
  65350. (Table 1622)
  65351. Values for VIDRAM state:
  65352.  00h    off
  65353.  01h    no EGA graphics
  65354.  02h    no graphics at all
  65355.  
  65356. Bitfields for VIDRAM feature flags:
  65357. Bit(s)    Description    (Table 1623)
  65358.  0    override enabled
  65359.  1    mapped memory detected in A000h-B000h range
  65360.  2    top of memory not at 640K
  65361.  3    MDA detected
  65362.  4    high RAM exists in video area
  65363.  5    mapped memory detected in video area
  65364.  6-7    reserved???
  65365.  
  65366. Format of VIDRAM partial map context (EMS 3.2):
  65367. Offset    Size    Description    (Table 1624)
  65368.  00h    BYTE    EMS version ID (32h)
  65369.  01h    WORD    EMM handle for this entry
  65370.  03h    BYTE    number of frames
  65371.  04h    BYTE    first page frame
  65372.  05h    WORD    offset from ES to previously saved map
  65373.  
  65374. Format of VIDRAM partial map context (EMS 4.0):
  65375. Offset    Size    Description    (Table 1625)
  65376.  00h    BYTE    EMS version ID (40h)
  65377.  01h    WORD    mappable segment count
  65378.  03h  N WORD    mappable segments
  65379.     WORD    offset to previously saved map???
  65380. --------U-2FD202-----------------------------
  65381. INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
  65382.     AX = D202h
  65383.     CX:BX -> parameter table
  65384. Return: AX = return value
  65385. SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
  65386. --------R-2FD300BX4562-----------------------
  65387. INT 2F U - TeleReplica - INSTALLATION CHECK
  65388.     AX = D300h
  65389.     BX = 4562h
  65390.     CX = 2745h
  65391.     DX = serial port I/O base address??? (03F8h for v3.9)
  65392. Return: SI = segment of resident code
  65393.     AX = 251Dh
  65394.     BX = DF21h
  65395.     CX = F321h
  65396.     DX = ???
  65397. --------R-2FD3CB-----------------------------
  65398. INT 2F U - LapLink Quick Connect v6 - API
  65399.     AX = D3CBh
  65400.     CX = function
  65401.         0002h get ???
  65402.         Return: BX:AX -> ???
  65403.             CL = ???
  65404.             CH = ???
  65405.             DX = ???
  65406.             DI = COM1 I/O port???
  65407.             SI = COM2 I/O port???
  65408.         0003h initialization???
  65409.         0004h ???
  65410.         0005h initialization???
  65411.         0006h reset/clear ???
  65412.         Return: AX = 0000h
  65413.             ES:DI -> next byte after ??? cleared by this call
  65414.         0007h initialization???
  65415.         0008h uninstall
  65416.         Return: BX = status
  65417.                 0000h successful
  65418.                 FFFFh incomplete, stub remains in memory
  65419. Return: CX = 534Bh (except function 0002h)
  65420. Index:    uninstall;LapLink Quick Connect
  65421. --------l-2FD44D-----------------------------
  65422. INT 2F - 4DOS.COM v2.1+ - API
  65423.     AX = D44Dh
  65424.     BH = function
  65425.         00h installation check
  65426.         Return: AX = 44DDh
  65427.             BL = major version number
  65428.             BH = minor version number
  65429.             CX = PSP segment address for current invocation
  65430.             DL = 4DOS shell number (0 for the first (root) shell,
  65431.                   updated each time a new copy is loaded)
  65432.         01h (internal, v2.1-3.03) terminate current copy of 4DOS
  65433.         Return: nothing
  65434.         (internal, v4.0) ???
  65435.         Return: AX = 44DDh
  65436.             ES:BX -> data area (see #1626)
  65437.         02h ???
  65438.         DX = ???
  65439.     ---v2.1-3.03 only---
  65440.         03h EXEC program
  65441.         CX:DX -> EXEC record (see #1627)
  65442.         FEh deallocate shell number (passed through to root shell)
  65443.         ???
  65444.         FFh allocate shell number (passed through to root shell)
  65445. Note:    bug in v3.00 will crash system if unrecognized value in BH
  65446. SeeAlso: AX=D44Eh,AX=E44Dh,INT 21/AX=4403h
  65447. Index:    installation check;4DOS|installation check;NDOS
  65448.  
  65449. Format of 4DOS v4.0 data area:
  65450. Offset    Size    Description    (Table 1626)
  65451.  00h  2 BYTEs    ???
  65452.  06h    WORD    XMS handle for swapping
  65453.     ???
  65454.  
  65455. Format of 4DOS EXEC record:
  65456. Offset    Size    Description    (Table 1627)
  65457.  00h    WORD    offset of ASCIZ program name in same segment as EXEC record
  65458.  02h    WORD    offset of DOS commandline in same segment as EXEC record
  65459.  04h    WORD    segment of environment for child process (see INT 21/AH=26h)
  65460. --------l-2FD44E-----------------------------
  65461. INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
  65462.     AX = D44Eh
  65463. ---4DOS v3.01+---
  65464.     BX = condition
  65465.         0000h 4DOS is ready to display prompt
  65466.         0001h 4DOS has displayed the prompt, about to accept user input
  65467. Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
  65468. Note:    v3.00 only makes the call corresponding to BX=0001h, does not set BX
  65469. SeeAlso: AX=D44Dh
  65470. --------K-2FD44FBX0000-----------------------
  65471. INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  65472.     AX = D44Fh
  65473.     BX = 0000h
  65474. Return: AX = 44DDh if installed
  65475. Note:    this function is also supported by ANSIPLUS v3.01+, which emulates
  65476.       the 4DOS and NDOS keystack
  65477. SeeAlso: AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
  65478. --------K-2FD44FBX0001-----------------------
  65479. INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  65480.     AX = D44Fh
  65481.     BX = 0001h
  65482.     CX = number of keystrokes (01h-FFh)
  65483.     DS:DX -> keystroke list (one word per keystroke)
  65484. Return: AX = status
  65485.         0000h successful
  65486.         nonzero failed
  65487.     BX,CX,DX destroyed
  65488. Notes:    the keystrokes are the exact values to return from subsequent calls to
  65489.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  65490.         0000h causes subfunctions 01h and 11h to indicate an empty
  65491.               keyboard buffer
  65492.         FFFFh is followed by a word indicating the number of clock
  65493.               ticks to delay before the next faked keystroke
  65494.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  65495.       invocation, and does not range-check CX; it will overwrite memory
  65496.       following the resident portion if CX is greater than 100h.
  65497.     this function is also supported by ANSIPLUS v3.01+, which emulates
  65498.       the 4DOS and NDOS keystack
  65499. SeeAlso: AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  65500. --------G-2FD600-----------------------------
  65501. INT 2F - HEART.COM - INSTALLATION CHECK
  65502.     AX = D600h
  65503. Return: AX = 0303h (two hearts) if installed
  65504.         ES:DI -> buffer (see #1628)
  65505. Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
  65506. Notes:    Once the host program has identified the address of the data area, it
  65507.       can change this to indicate safe/critical, alternate colours, etc.
  65508.     The entries for the color table are in char/attrib form.  Every two
  65509.       entries form a pair which is alternated between 68 times a minute.
  65510.       The first half of the table is for color videos, the second mono.
  65511.       Within each half, the first half is for the safe chars, and the
  65512.       second for the critical chars.
  65513.  
  65514. Format of HEART.COM buffer:
  65515. Offset    Size    Description    (Table 1628)
  65516.  00h  8 WORDs    table of colors/attributes (see notes above)
  65517.  10h    BYTE    flags
  65518.         bit 0: program is in critical section, so flash double
  65519.               exclamation mark
  65520.         bit 1: program is in safe code, so flash the heart character
  65521.  11h    WORD    position of heartbeat on screen, normally 009Eh (last column
  65522.         of second line)
  65523. --------T-2FD600-----------------------------
  65524. INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
  65525.     AX = D600h
  65526. Return: AL = D6h if installed
  65527. Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
  65528.       is a programmer's text editor by Greenview Data.
  65529. SeeAlso: AX=D601h,AX=D602h
  65530. --------T-2FD601-----------------------------
  65531. INT 2F U - VEDIT VSWAP - ???
  65532.     AX = D601h
  65533.     BL = subfunction number???
  65534. Return: BL = return code ???
  65535.     ES = resident portion's data??? segment
  65536.     DX = resident portion's code segment
  65537. SeeAlso: AX=D600h"VSWAP"
  65538. --------T-2FD602-----------------------------
  65539. INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
  65540.     AX = D602h
  65541.     other registers set as for INT 21/AX=4B00h
  65542. Return: CF set on error
  65543.         AL = error code
  65544.         82h = failure due to ???
  65545.     CF clear on success
  65546. SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
  65547. --------N-2FD701BX0000-----------------------
  65548. INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
  65549.     AX = D701h
  65550.     BX = 0000h
  65551. Return: AX = 0000h if installed
  65552.         BX = interrupt number (60h to 66h)
  65553.        nonzero not present
  65554. Note:    if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
  65555.       necessary to examine the four bytes preceding the handlers for
  65556.       INT 60 through INT 66 for the string "BANV"
  65557. SeeAlso: AX=D702h,AX=D703h,AX=D704h
  65558. --------N-2FD702-----------------------------
  65559. INT 2F U - Banyan VINES v4+ - PCPRINT interface
  65560.     AX = D702h
  65561.     BX = function
  65562.     ???
  65563. Return: ???
  65564. SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
  65565. --------N-2FD703-----------------------------
  65566. INT 2F U - Banyan VINES v4+ - MAIL interface
  65567.     AX = D703h
  65568.     BX = function
  65569.     ???
  65570. Return: ???
  65571. SeeAlso: AX=D702h,AX=D704h
  65572. --------N-2FD704-----------------------------
  65573. INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
  65574.     AX = D704h
  65575.     BX = function
  65576.     ???
  65577. Return: ???
  65578. SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
  65579. --------N-2FD800-----------------------------
  65580. INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
  65581.     AX = D800h
  65582. Return: AL = FFh if installed
  65583.         DX = version number (0100h for v1.0, 0101h for v1.1)
  65584.         BX = data segment of resident copy
  65585.         ES:DI -> private API entry point (see #1629)
  65586.         SI = segment of resident code
  65587. SeeAlso: AX=7A00h,AX=D880h
  65588.  
  65589. (Table 1629)
  65590. Call CLIENT API entry point with:
  65591.     BX = function
  65592.         0000h get ???
  65593.         Return: DX = CLIENT version??? (0101h for v1.1)
  65594.             ES:BX -> ??? data
  65595.         0001h ???
  65596.         0002h ???
  65597.         0003h ???
  65598.         0004h ???
  65599.         0005h ???
  65600.         DL = ???
  65601.         ???
  65602.         Return: ???
  65603.         0006h get module name???
  65604.         ES:DI -> 16-byte buffer
  65605.         Return: CX = ???
  65606.             ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
  65607.         0007h ???
  65608.         DX:CX = ???
  65609.         ???
  65610.         Return: ???
  65611.         0008h ???
  65612.         0009h ???
  65613.         DL = ???
  65614.         ES:DI -> 16-byte buffer for ???
  65615.         Return: CF clear if successful
  65616.                 AX = 0000h
  65617.                 CX = 0000h
  65618.                 SI,DI destroyed
  65619.             CF set on error
  65620.                 AX = error code 4903h
  65621.         000Ah ???
  65622.         AH = subfunction
  65623.             00h get ???
  65624.             01h clear/set ??? flag
  65625.             AL = new state (00h cleared, 01h set)
  65626.             02h set ???
  65627.             DX = new value of ???
  65628.         Return: DX = old value of ???
  65629.         000Bh ???
  65630.         AX = ???
  65631.         ???
  65632.         Return: ???
  65633.         000Ch ???
  65634.         AX = ???
  65635.         ???
  65636.         Return: ???
  65637.         000Dh ???
  65638.         AX = ???
  65639.         ???
  65640.         Return: ???
  65641.         000Eh get original INT 17
  65642.         Return: CF clear
  65643.             ES:BX -> original INT 17
  65644.         000Fh ???
  65645.         0010h ???
  65646.         AX = ???
  65647.         ???
  65648.         Return: ???
  65649.         0011h get ???
  65650.         Return: CF clear
  65651.             DL = ???
  65652.         0012h get ???
  65653.         AL = index of ???
  65654.         ES:DI -> 10-byte buffer for ???
  65655.         Return: CF clear if successful
  65656.                 ES:DI buffer filled
  65657.                 AX,CX destroyed
  65658.             CF set on error
  65659.                 AX = error code (4907h if AL out of range)
  65660.         0013h get ???
  65661.         Return: CF clear
  65662.             DH = ???
  65663.             DL = ???
  65664.         0014h ???
  65665.         DL = ???
  65666.         ???
  65667.         Return: CF clear if successful
  65668.                 ???
  65669.             CF set on error
  65670.                 AX = error code 8056h
  65671.         0015h ???
  65672.         DX = ???
  65673.         Return: ES:DI -> ???
  65674.         other
  65675.         Return: CF set
  65676.             AX = 0001h (invalid function)
  65677. --------N-2FD856-----------------------------
  65678. INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
  65679.     AX = D856h
  65680. Return: AX = 0001h if supported???
  65681.     BX = ??? (0004h for v1.1)
  65682.     CX = ??? (0F20h for v1.1)
  65683.     DS = segment of resident code
  65684.     ES = data segment of resident copy
  65685. Note:    this function is also supported by Personal NetWare SERVER, bundled
  65686.       with Novell DOS 7
  65687. --------N-2FD880-----------------------------
  65688. INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
  65689.     AX = D880h
  65690. Return: AL = FFh if installed
  65691.         DX = version number (0100h for v1.0, 0101h for v1.1)
  65692.         BX = data segment of resident copy
  65693.         CL = current state (00h SERVER is disabled, 01h SERVER is active)
  65694.         ES:DI -> private API entry point (see #1630)
  65695.         SI = ??? (offset of configuration info?)
  65696. Note:    this function is also supported by Personal NetWare SERVER, but DI is
  65697.       not set; instead, ES:SI points at the API entry point
  65698. SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
  65699.  
  65700. (Table 1630)
  65701. Call SERVER API entry point with:
  65702.     BX = function
  65703.         0000h ???
  65704.         ???
  65705.         Return: ???
  65706.         Note: closes open files by calling INT 21/AH=3Eh
  65707.         0001h get connection information
  65708.         DX = connection number (0001h-max connections)
  65709.         ES:DI -> 28-byte buffer for connection information
  65710.         Return: CF clear if successful
  65711.                 ES:DI buffer filled
  65712.             CF set on error
  65713.                 AX = FFFFh
  65714.     ---Personal NetWare only---
  65715.         0002h ???
  65716.         0003h ???
  65717.         0004h ???
  65718.         0005h ???
  65719.         0006h ???
  65720.         0007h ???
  65721.         other
  65722.         Return: CF set
  65723.             AX = 0001h (invalid function)
  65724. --------d-2FD8C0-----------------------------
  65725. INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
  65726.     AX = D8C0h
  65727. Return: AL = FFh if installed
  65728.         CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
  65729.         DH = major version??? (01h for v1.1)
  65730.         DL = minor version??? (01h for v1.1)
  65731.         ES:DI -> private API entry point (see #1631)
  65732. Program: NLCACHE is a disk cache included with NetWare Lite
  65733. SeeAlso: AX=D800h,AX=D880h
  65734.  
  65735. (Table 1631)
  65736. Call NLCACHE/NWCACHE API entry point with:
  65737.     BX = function
  65738.         0000h ???
  65739.         ???
  65740.         Return: CF clear if successful
  65741.                 AX = 0000h
  65742.                 ???
  65743.             CF set on error
  65744.                 AX = error code
  65745.         0001h (NWCACHE only) ???
  65746.         ES:DI -> buffer for ???
  65747.         Return: ???
  65748.         other
  65749.         Return: CF set
  65750.             AX = 0001h (invalid function)
  65751. --------F-2FDA00-----------------------------
  65752. INT 2F - ZyXEL ZFAX - INSTALLATION CHECK
  65753.     AX = DA00h
  65754. Return: AH = enabled state (00h = enabled, 01h = disabled)
  65755.     AL = 5Ah installed
  65756. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  65757.       fax modems.
  65758. Note:    This function, and the other DAxxh functions, may apply only to version
  65759.       1 of the software; see AX=DB00h for the version 2 installation check
  65760. SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
  65761. --------F-2FDA01-----------------------------
  65762. INT 2F - ZyXEL ZFAX - UNINSTALL
  65763.     AX = DA01h
  65764. Return: AL = 00h Success
  65765.          01h Failure
  65766. SeeAlso: AX=DA00h,AX=DB01h
  65767. --------F-2FDA02-----------------------------
  65768. INT 2F - ZyXEL ZFAX - DISABLE
  65769.     AX = DA02h
  65770. Return: AL = 00h
  65771. SeeAlso: AX=DA03h,AX=DB02h
  65772. --------F-2FDA03-----------------------------
  65773. INT 2F - ZyXEL ZFAX - ENABLE
  65774.     AX = DA03h
  65775. Return: AL = 00h
  65776. SeeAlso: AX=DA02h,AX=DB03h
  65777. --------G-2FDA55-----------------------------
  65778. INT 2F U - TRAP.COM - INSTALLATION CHECK
  65779.     AX = DA55h
  65780.     DL = interrupt number
  65781.     DH = ???
  65782. Return: if installed
  65783.         AH = interrupt number
  65784.         AL = ???
  65785.         ES:BX -> ???
  65786. Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
  65787. Note:    a separate copy of TRAP is loaded for each interrupt to be traced; thus
  65788.       the interrupt number is part of the installation check
  65789. --------N-2FDAB2-----------------------------
  65790. INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
  65791.     AX = DAB2h
  65792. Return: AX = 00FFh if installed
  65793.         BX:CX -> MIB table
  65794. Program: BWSNMP is part of the BW-NFS package
  65795. SeeAlso: INT 62/AH=00h"ETHDEV"
  65796. --------F-2FDB00-----------------------------
  65797. INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
  65798.     AX = DB00h
  65799. Return:    AL = 5Bh if installed (v2.x)
  65800.         ES:BX -> ???
  65801.     AX = 00DBh if installed (v3)
  65802.         ES:BX -> ZFAX configuration table (see #1632)
  65803. Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
  65804.       fax modems.
  65805. SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
  65806.  
  65807. Format of ZFAX Configuration Table:
  65808. Offset    Size    Description    (Table 1632)
  65809.  00h    WORD    version number (0300h for v3.0)
  65810.  02h    BYTE    reserved
  65811.  03h 70 BYTEs    ZFAX working path
  65812.  49h 128 BYTEs    path to external editor
  65813.  C9h 128 BYTEs    path to external terminal emulator
  65814. 149h 128 BYTEs    path to Ring Shell
  65815. 1C9h 128 BYTEs    path to DOS Shell
  65816. 249h 128 BYTEs    path to Data Shell
  65817. 2C9h 70 BYTEs    path to Chinese font
  65818. 30Fh    BYTE    printer type (see #1633)
  65819. 310h    BYTE    printer port (00h = LPT1, etc.)
  65820. 311h    BYTE    type of graphics adapter
  65821.         (00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
  65822. 312h    BYTE    display type
  65823.         (00h auto-detect, 01h LCD, 02h color, 03h mono)
  65824. 313h    BYTE    scan code for ZFAX hotkey
  65825. 314h    BYTE    shift mask for ZFAX hotkey
  65826. 315h    BYTE    tone/pulse dialing (00h tone, 01h pulse)
  65827. 316h    BYTE    Caller ID (00h disabled, 01h enabled)
  65828. 317h    BYTE    Distinctive Ring (00h disabled, 01h enabled)
  65829. 318h    BYTE    normal ring answer type (see #1634)
  65830. 319h    BYTE    Ring 1 answer type (see #1634)
  65831. 31Ah    BYTE    Ring 2 answer type (see #1634)
  65832. 31Bh    BYTE    Ring 3 answer type (see #1634)
  65833. 31Ch    BYTE    COM port for modem
  65834. 31Dh    BYTE    speaker volume (00h-07h)
  65835. 31Eh    BYTE    modem dial timer, seconds
  65836. 31Fh    WORD    user-defined COM port I/O address
  65837. 321h    BYTE    user-defined COM port IRQ number
  65838. 322h 81 BYTEs    dial prefix string
  65839. 373h 79 BYTEs    dial postfix string
  65840. 3C2h    BYTE    ring count until automatic answer
  65841. 3C3h    BYTE    retry count on busy signal
  65842. 3C4h    BYTE    redial delay in seconds
  65843. 3C5h    WORD    system password
  65844. 3C7h    BYTE    reserved
  65845. 3C8h    BYTE    voice file compression format
  65846.         00h CELP at 9600bps
  65847.         01h two-bit ADPCM at 19200bps
  65848.         03h three-bit ADPCM at 28800bps
  65849. 3C9h    BYTE    voice system: DTMF 0 action (see #1635)
  65850. 3CAh    BYTE    voice system: DTMF 1 action
  65851. 3CBh    BYTE    voice system: DTMF 2 action
  65852. 3CCh    BYTE    voice system: DTMF 3 action
  65853. 3CDh    BYTE    voice system: DTMF 4 action
  65854. 3CEh    BYTE    voice system: DTMF 5 action
  65855. 3CFh    BYTE    voice system: DTMF 6 action
  65856. 3D0h    BYTE    voice system: DTMF 7 action
  65857. 3D1h    BYTE    voice system: DTMF 8 action
  65858. 3D2h    BYTE    voice system: DTMF 9 action (see #1635)
  65859. 3D3h    WORD    reserved
  65860. 3D5h 25 BYTEs    local FAX ID to display on page header
  65861. 3EEh 20 BYTEs    local FAX ID sent to remote FAX
  65862. 402h    BYTE    FAX page size
  65863.         00h A4 (210x297mm)
  65864.         01h B4 (250x353mm)
  65865.         02h A3 (297x420mm)
  65866. 403h    BYTE    FAX resolution
  65867.         00h normal (3.85 pixels/mm)
  65868.         01h high (7.7 pixels/mm)
  65869. 404h    BYTE    FAX coding scheme
  65870.         00h 1-D, modified Huffman coding
  65871.         01h 2-D, modified READ coding
  65872. 405h    BYTE    left margin for text in millimeters
  65873. 406h    BYTE    vertical insertion for text in mm (0-20)
  65874. 407h    BYTE    horizontal insertion in mm (0-20)
  65875. 408h    BYTE    maximum text lines per page
  65876. 409h    BYTE    text type (00h ASCII, 01h WordStar-formatted)
  65877. 40Ah    BYTE    PCX image resize (00h disabled, 01h enabled)
  65878. 40Bh    BYTE    AutoPrint (00h disabled, 01h enabled)
  65879. 40Ch    BYTE    cover page (00h disabled, 01h enabled)
  65880. 40Dh 81 BYTEs    cover page logo filename
  65881. 45Eh 65 BYTEs    cover page sender name
  65882. 49Fh    BYTE    print capture (00h disabled, 01h enabled)
  65883. 4A0h    BYTE    send immediately (00h disabled, 01h enabled)
  65884. 4A1h    BYTE    print capture printer port
  65885. 4A2h    BYTE    print capture timer in seconds
  65886. 4A3h    BYTE    scan code for print capture hotkey
  65887. 4A4h    BYTE    shift mask for print capture hotkey
  65888. 4A5h    BYTE    DataShell type
  65889.         00h internal Zmodem, 01h Data Shell, 02h disable
  65890. 4A6h    BYTE    video I/O type
  65891.         00h auto-detect, 01h use BIOS, 02h direct writes
  65892. 4A7h    BYTE    call transfer digits
  65893. 4A8h    WORD    voice recorder maximum time in seconds (0-999)
  65894.  
  65895. (Table 1633)
  65896. Values for ZFAX printer type:
  65897.  00h    EPSON FX (9 pins)
  65898.  01h    EPSON LQ (24 pins)
  65899.  02h    HP Laser Jet II, letter size
  65900.  03h    HP Laser Jet II, legal size
  65901.  04h    HP Laser Jet II, A4 size
  65902.  05h    HP Laser Jet III, letter size
  65903.  06h    HP Laser Jet III, legal size
  65904.  07h    HP Laser Jet III, A4 size
  65905.  
  65906. (Table 1634)
  65907. Values for Ring Answer Type:
  65908.  00h    voice system
  65909.  01h    FAX only
  65910.  02h    Data Shell
  65911.  03h    Ring Shell
  65912.  04h    DOS Shell
  65913.  05h    ignore
  65914.  
  65915. (Table 1635)
  65916. Values for DTMF action:
  65917.  00h    none
  65918.  01h    page operator
  65919.  02h    FaxBack
  65920.  03h    announcement
  65921.  04h    call transfer
  65922.  05h    receive FAX
  65923.  06h    receive data
  65924.  07h    voice mailbox
  65925.  08h    DOS Shell Out
  65926.  09h    Data Shell Out
  65927. --------F-2FDB01-----------------------------
  65928. INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
  65929.     AX = DB01h
  65930. Return: AX = status
  65931.         0000h successful
  65932.         0001h ZFAX is busy
  65933.         0002h another program resident above ZFAX
  65934. Note:    this function unhooks the vectors taken by the ZFAX TSR if they have
  65935.       not been hooked by other TSRs and releases the TSR's memory
  65936.     ZFAX v2.x crashes the contributor's machine when this function is
  65937.       called
  65938. SeeAlso: AX=DA01h,AX=DB00h
  65939. --------F-2FDB02-----------------------------
  65940. INT 2F - ZyXEL ZFAX v2.x - DISABLE
  65941.     AX = DB02h
  65942. Return: AL = 00h
  65943. SeeAlso: AX=DA02h,AX=DB00h,AX=DB03h
  65944. --------F-2FDB03-----------------------------
  65945. INT 2F - ZyXEL ZFAX v2.x - ENABLE
  65946.     AX = DB03h
  65947. Return: AL = 00h
  65948. SeeAlso: AX=DA03h,AX=DB00h,AX=DB02h
  65949. --------F-2FDB10-----------------------------
  65950. INT 2F - ZyXEL ZFAX v3 - EXECUTE ZFAX MAIN MENU
  65951.     AX = DB10h
  65952. --------F-2FDB11-----------------------------
  65953. INT 2F - ZyXEL ZFAX v3 - SEND FAX
  65954.     AX = DB11h
  65955.     DS:SI -> filename including path
  65956.     DS:BX -> remote FAX number
  65957. Return:    AX = status (see #1636)
  65958. SeeAlso: AX=DB12h,AX=DB13h,AX=DB14h,AX=DB20h,AX=DB21h
  65959.  
  65960. (Table 1636)
  65961. Values for ZFAX status:
  65962.  00h    OK
  65963.  01h    invalid DOS function
  65964.  02h    file not found
  65965.  03h    path not found
  65966.  04h    no file handle available
  65967.  05h    access denied by DOS
  65968.  06h    invalid handle
  65969.  07h    disk full
  65970.  10h    printer error
  65971.  11h    no graphics font
  65972.  12h    no ZFAX font
  65973.  20h    DCD dropped while sending
  65974.  21h    not ZyXEL modem
  65975.  22h    busy
  65976.  23h    no response from COM port
  65977.  24h    no carrier
  65978.  25h    no dial tone
  65979.  26h    no answer
  65980.  27h    no response
  65981.  28h    failed to send FAX
  65982.  30h    user aborted
  65983.  40h    critical error on disk
  65984.  50h    parameter error
  65985. --------F-2FDB12-----------------------------
  65986. INT 2F - ZyXEL ZFAX v3 - PRINT FAX
  65987.     AX = DB12h
  65988.     DS:SI -> filename, including path
  65989. Return: AX = status
  65990. SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
  65991. --------F-2FDB13-----------------------------
  65992. INT 2F - ZyXEL ZFAX v3 - CONVERT FAX
  65993.     AX = DB13h
  65994.     DS:SI -> source filename, including path
  65995.     DS:BX -> destination filename, including path
  65996.     CX = destination file format
  65997.         00h FAX, 01h PCX, 02h TIFF, 03h PRN
  65998. Return: AX = status
  65999. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
  66000. --------F-2FDB14-----------------------------
  66001. INT 2F - ZyXEL ZFAX v3 - VIEW FAX
  66002.     AX = DB14h
  66003.     DS:SI -> source filename, including path
  66004. Return: AX = status
  66005. SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
  66006. --------F-2FDB20-----------------------------
  66007. INT 2F - ZyXEL ZFAX v3 - POLL FAX
  66008.     AX = DB20h
  66009.     DS:SI -> remote FAX number
  66010. Return: AX = status
  66011. SeeAlso: AX=DB11h,AX=DB21h
  66012. --------F-2FDB21-----------------------------
  66013. INT 2F - ZyXEL ZFAX v3 - SEND VOICE
  66014.     AX = DB21h
  66015.     DS:SI -> filename including path
  66016.     DS:BX -> remote phone number
  66017. Return:    AX = status
  66018. SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
  66019. --------F-2FDB22-----------------------------
  66020. INT 2F - ZyXEL ZFAX v3 - CONVERT VOICE FILE
  66021.     AX = DB22h
  66022.     DS:SI -> source filename, including path
  66023.     DS:BX -> destination filename, including path
  66024.     CX = destination format
  66025.         00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
  66026. Return:    AX = status
  66027. SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
  66028. --------F-2FDB23-----------------------------
  66029. INT 2F - ZyXEL ZFAX v3 - RECORD VOICE FILE
  66030.     AX = DB23h
  66031.     DS:SI -> destination filename, including path
  66032.     CX = recording channel (0 = telephone line, 1 = microphone/speaker)
  66033.     DX = voice file format
  66034.         00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
  66035. Return: AX = status
  66036. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  66037. --------F-2FDB24-----------------------------
  66038. INT 2F - ZyXEL ZFAX v3 - PLAY VOICE FILE
  66039.     AX = DB24h
  66040.     DS:SI -> name of voice file, including path
  66041.     CX = playback channel (0 = telephone line, 1 = microphone/speaker)
  66042. Return: AX = status
  66043. SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
  66044. --------F-2FDB25-----------------------------
  66045. INT 2F - ZyXEL ZFAX v3 - ANSWER MODEM WITH VOICE SYSTEM
  66046.     AX = DB25h
  66047. Return: AX = status
  66048. SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
  66049. --------F-2FDB26-----------------------------
  66050. INT 2F - ZyXEL ZFAX v3 - DIAL PHONE
  66051.     AX = DB26h
  66052.     DS:SI -> remote phone number
  66053. Return: AX = status
  66054. SeeAlso: AX=DB25h
  66055. --------F-2FDB27-----------------------------
  66056. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
  66057.     AX = DB27h
  66058. Return: AX = status
  66059. SeeAlso: AX=DB25h,AX=DB28h
  66060. --------F-2FDB28-----------------------------
  66061. INT 2F - ZyXEL ZFAX v3 - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
  66062.     AX = DB28h
  66063. Return: AX = status
  66064. SeeAlso: AX=DB25h,AX=DB27h,AX=DB31h
  66065. --------F-2FDB31-----------------------------
  66066. INT 2F - ZyXEL ZFAX v3 - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
  66067.     AX = DB31h
  66068.     DS:SI -> source file name, including path
  66069.     DS:BX -> remote data number
  66070. Return: AX = status
  66071. SeeAlso: AX=DB00h,AX=DB28h
  66072. --------F-2FDB40-----------------------------
  66073. INT 2F - ZyXEL ZFAX v3 - INTERNAL TERMINAL
  66074.     AX = DB40h
  66075. Return: AX = status
  66076. SeeAlso: AX=DB00h
  66077. --------K-2FDC00-----------------------------
  66078. INT 2F - GOLD.COM - INSTALLATION CHECK
  66079.     AX = DC00h
  66080. Return: AL = state
  66081.         00h not installed
  66082.         FFh installed
  66083. Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the code
  66084.       for F1; the purpose is to improve Kermit's VTxxx emulation
  66085. --------K-2FDC01-----------------------------
  66086. INT 2F - GOLD.COM - GET STATE
  66087.     AX = DC01h
  66088. Return: AL = status
  66089.         00h off
  66090.         01h on
  66091. SeeAlso: AX=DC00h,AX=DC02h
  66092. --------K-2FDC02-----------------------------
  66093. INT 2F - GOLD.COM - SET STATE
  66094.     AX = DC02h
  66095.     DL = new state
  66096.         00h off
  66097.         01h on
  66098. Return: AL = 00h (OK)
  66099. SeeAlso: AX=DC01h
  66100. --------t-2FDD-------------------------------
  66101. INT 2F - CappaCom programs - API
  66102.     AH = DDh
  66103.     AL = 00h general installation check
  66104.         Return: AL = FFh if any CappaCom programs are resident
  66105.     AL = FEh get info
  66106.         Return: ES:BX -> TSR info list (see #1637)
  66107.     AL = program identifier
  66108.         BH = function
  66109.         FDh get version
  66110.             Return: BX = version
  66111.         FFh installation check
  66112.             Return: AL = FFh if installed
  66113.                 BX = version
  66114.                 ES = segment of resident code
  66115.         others vary by program
  66116. Return: AL = status
  66117.         bit 7 set on error
  66118.         AL = 81h unknown function
  66119. Note:    CappaCom was originally SoftCom but changed its name due to a trademark
  66120.       conflict
  66121. Index:    installation check;SoftCom programs
  66122. Index:    installation check;CappaCom programs
  66123.  
  66124. Format of CappaCom TSR info list:
  66125. Offset    Size    Description    (Table 1637)
  66126.  00h  9 BYTEs    blank-padded ASCIZ program name
  66127.  09h    BYTE    program ID
  66128.  0Ah    WORD    program's PSP segment
  66129.  0Ch    WORD    program version (major in high byte)
  66130.  0Eh    DWORD    pointer to next item in info list or 0000h:0000h
  66131.  12h    BYTE    number of interrupts hooked
  66132.  13h  5 BYTEs    interrupt numbers hooked by program
  66133.  18h  8 BYTEs    reserved
  66134. ----------2FDD-------------------------------
  66135. INT 2F - MIXFIX.EXE - API
  66136.     AH = DDh
  66137.     AL = function
  66138.         00h installation check
  66139.         Return: AX = 00DDh if installed
  66140.                 BX = version (BH = major, BL = minor)
  66141.         41h/61h get From: address
  66142.         Return: AX = 0001h
  66143.             ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
  66144.         49h/69h get To: address
  66145.         Return: AX = 0001h
  66146.             ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
  66147.         4Ah/6Ah get subject of mail
  66148.         Return: AX = 0001h
  66149.             ES:BX -> ASCIZ subject of handled mail
  66150.         4Dh/6Dh get mail name
  66151.         Return: AX = 0001h
  66152.             ES:BX -> ASCIZ full name of current mail file
  66153.         4Eh/6Eh get From: field
  66154.         Return: AX = 0001h
  66155.             ES:BX -> ASCIZ From: field of mail (mail sender's name)
  66156. Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
  66157.       other programs for mail handling.  The called programs may use the
  66158.       services described here to retrieve information about the mail being
  66159.       handled.
  66160. Index: installation check;MIXFIX.EXE
  66161. --------d-2FDD--BX7844-----------------------
  66162. INT 2F - xDISK v3.32+ - INSTALLATION CHECK
  66163.     AH = DDh
  66164.     BX = 7844h ('xD')
  66165.     CX = 4953h ('IS')
  66166.     DX = 4B3Fh ('K?')
  66167.     AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
  66168.     ES:DI -> 25-byte data buffer (see #1638)
  66169. Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
  66170.        BX = 87BBh
  66171.        DX = B4C0h
  66172.        ES:DI buffer filled
  66173.     CX,CF destroyed
  66174. SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
  66175.  
  66176. Format of xDISK data buffer:
  66177. Offset    Size    Description    (Table 1638)
  66178.  00h    DWORD    pointer to ASCIZ driver signature "xDISK unit: X"
  66179.  04h    BYTE    flag: 01h if disk linked to DOS, 00h if unlinked
  66180.  05h    BYTE    flag: 01h if write protected, 00h if not
  66181.  06h    BYTE    flag: 01h if root directory full, 00h if not
  66182.  07h    BYTE    flag: 01h if free space uncompacted, 00h if compacted
  66183.  08h    BYTE    resizing state: 00h not resizable, 01h resized, 80h resizable
  66184.  09h    BYTE    flag: 01h inelastic resizable disk, 00h elastic
  66185.  0Ah  2 BYTEs    reserved
  66186.  0Ch    BYTE    flag: 01h collapsed disk, 00h not collapsed
  66187.  0Dh    BYTE    flag: 01h using all EMS, 00h some EMS free
  66188.  0Eh    BYTE    flag: 01h password enabled, 00h disabled
  66189.  0Fh    BYTE    flag: 01h password audio feedback, 00h no feedback
  66190.  10h    BYTE    flag: 01h password video feedback, 00h no feedback
  66191.  11h    BYTE    flag: 01h confirm changes, 00h no confirmation
  66192.  12h    BYTE    flag: 01h terse display, 00h verbose display
  66193.  13h    BYTE    flag: 01h click speaker on disk access, 00h no click
  66194.  14h    BYTE    flag: 01h flash icon on disk access, 00h no icon flash
  66195.  15h    BYTE    FAT entry size: 00h 12-bit, FFh 16-bit
  66196.  16h    WORD    count of open files in RAM disk
  66197.  18h    BYTE    unused
  66198. --------Q-2FDE00BX4456-----------------------
  66199. INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
  66200.     AX = DE00h
  66201.     BX = 4456h ("DV")
  66202.     CX = 5844h ("XD")
  66203.     DX = 4931h ("I1")
  66204. Return: AL = FFh if installed (even if other registers do not match)
  66205.     if BX,CX, and DX were as specified on entry,
  66206.         BX = 4845h ("HE")
  66207.         CX = 5245h ("RE")
  66208.         DX = 4456h ("DV")
  66209. Range:    AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
  66210. Note:    the XDI handler should not issue any DOS or BIOS calls, nor should it
  66211.       issue DESQview API calls other than those allowed from hardware ints
  66212. SeeAlso: AX=DE02h,INT 15/AX=5400h
  66213. --------Q-2FDE01-----------------------------
  66214. INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
  66215.     AX = DE01h
  66216.     BX = driver ID
  66217.     other registers as needed by driver
  66218. Notes:    XDI drivers should pass this call through to previous handler if ID
  66219.       does not match
  66220.     DESQview never calls this function
  66221. --------Q-2FDE01BX4450-----------------------
  66222. INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
  66223.     AX = DE01h
  66224.     BX = 4450h ("DP")
  66225.     CX = 4D49h ("MI")
  66226.     DX = 3039h ("09")
  66227. Return: AL = FFh if installed
  66228.         BX = 4D42h ("MB")
  66229.         CX = 4921h ("I!")
  66230.         DX = 8F4Fh
  66231.         ES:DI -> filename of DPMI host overlay
  66232. Note:    the installation check consists of testing for the existence of the
  66233.       character device QDPMI$$$
  66234. SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
  66235. Index:    installation check;QDPMI
  66236. --------U-2FDE01BX5242-----------------------
  66237. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
  66238.     AX = DE01h
  66239.     BX = 5242h ("RB")
  66240.     CX:DX = program identifier
  66241.         656F7000h ("eop",0) for DVeop
  66242. Return: AX = 5242h ("RB") if installed
  66243.         ES:BX -> data or entry point
  66244.         CX = version number (CH = major, CL = minor)
  66245.  
  66246. (Table 1639)
  66247. Call DVeop entry point with:
  66248.     ES:DI -> callback address or 0000h:0000h to remove callback
  66249. Return: AX = status
  66250.         0000h failed (callback table full or attempted to remove non-
  66251.           existent callback)
  66252.         0001h successful
  66253.         ES:DI -> chaining address
  66254.     BX,CX,DX destroyed
  66255. Notes:    the callback function is called with a simulated interrupt when the
  66256.       DESQview window containing it is closed; it should perform all
  66257.       necessary cleanup and then perform a FAR jump to the chaining address
  66258.       or an IRET if the chaining address is 0000h:0000h
  66259.     if the program wishes to remove itself before the window is closed, it
  66260.       should call the DVeop entry point with the previously returned
  66261.       chaining address and ignore the returned chaining address.
  66262. --------U-2FDE01BX7474-----------------------
  66263. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
  66264.     AX = DE01h
  66265.     BX = 7474h
  66266.     CL = function
  66267.         00h installation check
  66268.         Return: AL = FFh
  66269.         01h get process handle
  66270.         DX = keys on Open Window menu (DL = first, DH = second)
  66271.         Return: AX = process handle or 0000h if not running
  66272.         02h (v1.3+) set TMAN handle
  66273.         DX = TMAN process handle
  66274.         03h (v1.3+) set open keys to ignore on next CL=01h call
  66275.         DX = keys on Open Window menu (DL = first, DH = second)
  66276. Return: BX = 4F4Bh ("OK")
  66277.     DL destroyed
  66278. Note:    DVTXDI is distributed as part of the shareware products DVTree (DOS
  66279.      shell/DESQview process manager) and DVTMAN by Mike Weaver
  66280. Index:    installation check;DVTXDI
  66281. --------U-2FDE01BX7575-----------------------
  66282. INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
  66283.     AX = DE01h
  66284.     BX = 7575h
  66285.     CX = function
  66286.         0000h installation check
  66287.         Return: AX = 00FFh if installed
  66288.         0001h turn on notification (currently unused)
  66289.         Return: AX = 0001h
  66290.         0002h turn off notification (currently unused)
  66291.         Return: AX = 0001h
  66292.         0003h get process information
  66293.         Return: AX = status
  66294.                 0000h failed
  66295.                 0001h successful
  66296.                 BX = last instantaneous time slice
  66297.                     in 1/100s (v1.10)
  66298.                     in 1/18s (v1.11+)
  66299.                 CX = number of processes
  66300.                 DX = number of "(starting)" records (v2.00+)
  66301.                 SI = number of records in process info array
  66302.                       (v2.00+) (always 15 for v1.x)
  66303.                 ES:DI -> process info array (see #1640,#1641)
  66304.         0004h get version
  66305.         Return: AH = major version
  66306.             AL = minor version
  66307.         0005h (v1.10+) get time since DESQview started
  66308.         Return: DX:AX = 1/100s since DV start (v1.10)
  66309.             DX:AX = 1/18s since DV start (v1.11+)
  66310.         0006h (v1.10+) get number of task switches
  66311.         Return: DX:AX = total task switches
  66312.             CX = task switches in last instantaneous interval
  66313. Notes:    DVSIXDI is part of the DVSI (DESQview System Information) package by
  66314.       Daniel J. Bodoh
  66315.     for v1.00, function 0003h allocates common memory, which the caller
  66316.       must deallocate after reading the process information; only the
  66317.       currently used records are placed in the buffer
  66318.     for v1.10+, function 0003h merely returns a pointer to the internal
  66319.       array of process information; the caller should make a copy of the
  66320.       array while inside a critical section (see INT 15/AX=101Bh).    Only
  66321.       those records with bit 7 of the first byte set are valid.
  66322. Index:    installation check;DVSIXDI
  66323.  
  66324. Format of DVSIXDI v1.00 information for one process:
  66325. Offset    Size    Description    (Table 1640)
  66326.  00h    BYTE    flags
  66327.         bit 7: process slot is valid
  66328.  01h    WORD    offset into DESQVIEW.DVO of program's record if started from
  66329.           Open Windows menu, else undefined
  66330.  03h    WORD    Switch Windows window number
  66331.  05h    WORD    segment of process handle
  66332.  07h    WORD    number of tasks owned by process
  66333.  09h    WORD    mapping context of process (see INT 15/AX=1016h)
  66334.  0Bh    DWORD    hook for other programs
  66335.  
  66336. Format of DVSIXDI v1.10-v2.00 information for one process:
  66337. Offset    Size    Description    (Table 1641)
  66338.  00h    BYTE    process flags (see #1642)
  66339.  01h    WORD    Open Window keys
  66340.  03h    WORD    Switch Windows number
  66341.  05h    WORD    segment of process handle
  66342.  07h    WORD    number of tasks for process
  66343.  09h    WORD    process mapping context
  66344.  0Bh    DWORD    time process started (relative to start of DESQview)
  66345.  0Fh    DWORD    time process last got CPU (relative to start of DESQview)
  66346.  13h    DWORD    time process last gave up CPU (relative to start of DESQview)
  66347.  17h    DWORD    total CPU time since process started
  66348.  1Bh    DWORD    CPU time at start of current instantaneous interval
  66349.  1Fh    DWORD    CPU time in current instantaneous interval
  66350.  23h    DWORD    hook for other programs
  66351. Note:    all times are in 1/100s for v1.10, in 1/18s for v1.11+
  66352.  
  66353. Bitfields for DVSIXDI process flags:
  66354. Bit(s)    Description    (Table 1642)
  66355.  7    valid record
  66356.  6    (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
  66357.       and only offsets 01h and 09h are valid
  66358.  5    (v2.00+) this app currently owns the CPU
  66359.  4    reserved (0)
  66360.  3    DESQview system task
  66361.  2    reserved (0)
  66362.  1    task has keyboard (currently unused)
  66363.  0    task swapped out (currently unused)
  66364. --------Q-2FDE01BXFFFE-----------------------
  66365. INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
  66366.     AX = DE01h
  66367.     BX = FFFEh
  66368.     CX = 4D47h ("MG")
  66369.     DX = 0052h (0,"R")
  66370. Return: AL = FFh
  66371.     DX = 584Dh
  66372. --------Q-2FDE02-----------------------------
  66373. INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
  66374.     AX = DE02h
  66375.     BX = mapping context of DESQview
  66376.     DX = handle of DESQview system task
  66377. Note:    driver should pass this call to previous handler after doing its work
  66378. SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
  66379. --------Q-2FDE03-----------------------------
  66380. INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
  66381.     AX = DE03h
  66382.     BX = mapping context of DESQview
  66383.     DX = handle of DESQview system task
  66384. Notes:    driver should pass this call to previous handler before doing its work
  66385.     DESQview makes this call when it is exiting, but before unhooking any
  66386.       interrupt vectors
  66387. SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
  66388. --------Q-2FDE04-----------------------------
  66389. INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
  66390.     AX = DE04h
  66391.     BX = mapping context of new process (see INT 15/AX=1016h)
  66392.     DX = handle of process
  66393. Return: nothing
  66394. Notes:    XMS XDI handler (installed by default) allocates a 22-byte record
  66395.       (see #1643) from "common" memory to control access to XMS memory
  66396.     all DOS, BIOS, and DV API calls are valid in handler
  66397.     driver should pass this call to previous handler after processing it
  66398. SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
  66399.  
  66400. Format of XMS XDI structure:
  66401. Offset    Size    Description    (Table 1643)
  66402.  00h    DWORD    pointer to 10-byte record???
  66403.  04h    DWORD    pointer to next XMS XDI structure
  66404.  08h    WORD    mapping context
  66405.  0Ah    BYTE    ???
  66406.  0Bh  5 BYTEs    XMS entry point to return for INT 2F/AX=4310h
  66407.         (FAR jump to next field)
  66408.  10h  6 BYTEs    FAR handler for XMS driver entry point
  66409.         (consists of a FAR CALL followed by RETF)
  66410. --------Q-2FDE05-----------------------------
  66411. INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
  66412.     AX = DE05h
  66413.     BX = mapping context of process (see INT 15/AX=1016h)
  66414.     DX = handle of last task in process
  66415. Return: nothing
  66416. Notes:    XMS XDI handler releases the structure allocated by AX=DE04h
  66417.     driver should pass this call to previous handler before processing it
  66418.     all DOS, BIOS, and DV API calls except those generating a task switch
  66419.       are valid in handler
  66420. SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
  66421. --------Q-2FDE06-----------------------------
  66422. INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
  66423.     AX = DE06h
  66424.     BX = mapping context of process containing task
  66425.     DX = handle of new task
  66426. Notes:    driver should pass this call to previous handler after processing it
  66427.     all DOS, BIOS, and DV API calls are valid in handler
  66428. --------Q-2FDE07-----------------------------
  66429. INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
  66430.     AX = DE07h
  66431.     BX = mapping context of process containing task
  66432.     DX = handle of task
  66433. Notes:    driver should pass this call to previous handler before processing it
  66434.     all DOS, BIOS, and DV API calls except those generating a task switch
  66435.       are valid in handler
  66436. SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
  66437. --------Q-2FDE08-----------------------------
  66438. INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
  66439.     AX = DE08h
  66440.     BX = mapping context of task being switched from (see INT 15/AX=1016h)
  66441.     DX = handle of task being switched from
  66442. Notes:    invoked prior to task swap, interrupts, etc
  66443.     driver should pass this call to previous handler after processing it
  66444. SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
  66445. --------Q-2FDE09-----------------------------
  66446. INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
  66447.     AX = DE09h
  66448.     BX = mapping context of task being switched to (see INT 15/AX=1016h)
  66449.     DX = handle of task being switched to
  66450. Notes:    state is restored except for interrupts
  66451.     driver should pass this call to previous handler before processing it
  66452. SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
  66453. --------Q-2FDE0A-----------------------------
  66454. INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
  66455.     AX = DE0Ah
  66456.     BX = mapping context of task receiving focus
  66457.     DX = handle of running task
  66458. Notes:    driver should pass this call to previous handler before processing it
  66459.     this call often occurs inside a keyboard interrupt
  66460.     DV 2.42 does not provide this call to XDI handlers running inside a
  66461.       window; instead, it directly calls the INT 2F handler which was
  66462.       active at the time DV started
  66463. SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
  66464. --------Q-2FDE0B-----------------------------
  66465. INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
  66466.     AX = DE0Bh
  66467.     BX = mapping context of DESQview system task
  66468.     CX = number of system memory paragraphs required for the use of all
  66469.           XDI drivers (DV will add this to system memory in DVP buffer)
  66470.     DX = handle of DESQview system task
  66471.     SI = mapping context of new process if it starts
  66472.     ES:DI -> DVP buffer
  66473. Return: CX incremented as needed
  66474. Notes:    once DV invokes this function, the DVP buffer contents may be changed
  66475.     driver should pass this call to previous handler before processing it
  66476. --------Q-2FDE0C-----------------------------
  66477. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
  66478.     AX = DE0Ch
  66479.     BX = mapping context of task being swapped out (see INT 15/AX=1016h)
  66480.     DX = handle of DESQview system task
  66481. Note:    driver should pass this call to previous handler after processing it
  66482. --------Q-2FDE0D-----------------------------
  66483. INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
  66484.     AX = DE0Dh
  66485.     BX = mapping context of process just swapped in (see INT 15/AX=1016h)
  66486.     DX = handle of DESQview system task
  66487. Note:    driver should pass this call to previous handler before processing it
  66488. --------Q-2FDE0E-----------------------------
  66489. INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
  66490.     AX = DE0Eh
  66491.     BX = mapping context of DESQview system task
  66492.     DX = handle of DESQview system task
  66493.     SI = mapping context of failed process (same as for call to AX=DE0Bh)
  66494. Note:    driver should pass this call to previous handler after processing it
  66495. --------Q-2FDE0F-----------------------------
  66496. INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
  66497.     AX = DE0Fh
  66498. Note:    DESQview 2.50+ calls this function just before it completes its
  66499.       initialization.  At the time of the call, DESQview has not yet
  66500.       changed any interrupt vectors
  66501. SeeAlso: AX=DE02h
  66502. --------Q-2FDE10-----------------------------
  66503. INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
  66504.     AX = DE10h
  66505.     BX = mapping context of process (see INT 15/AX=1016h)
  66506.     DX = task handle of process
  66507. Note:    DESQview 2.50+ calls this function before it frees the task; it is
  66508.       similar to AX=DE07h but allows the XDI handler to make calls which
  66509.       cause context switches
  66510. SeeAlso: AX=DE06h,AX=DE07h
  66511. --------c-2FDF00-----------------------------
  66512. INT 2F - HyperWare programs - INSTALLATION CHECK
  66513.     AX = DF00h
  66514.     BX = product code (see #1644)
  66515.     CX = 0000h
  66516.     DX = 0000h
  66517. Return: AL = status
  66518.         00h not installed
  66519.         FFh multiplex number in use
  66520.         CX = 5948h ('YH') if selected product installed
  66521.         ---HyperDisk---
  66522.         BX = code segment of resident portion
  66523.         DX = HyperDisk local data version
  66524. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  66525. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  66526. SeeAlso: INT 13/AX=8EEDh
  66527. Index:    installation check;HyperDisk|installation check;HyperStb
  66528. Index:    installation check;HyperKey|installation check;HyperScreen
  66529. Index:    HyperDisk;installation check|HyperStb;installation check
  66530. Index:    HyperKey;installation check|HyperScreen;installation check
  66531.  
  66532. (Table 1644)
  66533. Values for HyperWare product code:
  66534.  4248h    ('BH') HyperStb
  66535.  4448h    ('DH') HyperDisk v4.20+
  66536.  4B48h    ('KH') HyperKey
  66537.  5348h    ('SH') HyperScreen
  66538. ----------2FDF00BX5445-----------------------
  66539. INT 2F U - TELTSR.COM - INSTALLATION CHECK
  66540.     AX = DF00h
  66541.     BX = 5445h ('TE')
  66542.     CX = 4C54h ('LT')
  66543.     DX = 5352h ('SR')
  66544. Return: BX = 5454h ('TT') if installed
  66545.     CX = 494Eh ('IN') if installed
  66546.     DX = 5454h ('ST') if installed
  66547. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  66548. Range:    AH=???h to ???h, selected automatically
  66549. SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR"
  66550. --------c-2FDF01BX4448-----------------------
  66551. INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
  66552.     AX = DF01h
  66553.     BX = 4448h ('DH')
  66554. Return: AX = 0000h if function supported
  66555.         BX = number of cache buffers in use
  66556.         CX = number of cache buffers which have been modified
  66557.         DL = caching flags (see #1645)
  66558. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  66559. SeeAlso: AX=DF00h,AX=DF02h
  66560.  
  66561. Bitfields for HyperDisk caching flags:
  66562. Bit(s)    Description    (Table 1645)
  66563.  0    staged writes enabled for floppy disks
  66564.  1    staged writes enabled for hard disks
  66565.  2    writes verified on floppy disks
  66566.  3    writes verified on hard disks
  66567.  4    reserved (0)
  66568.  5    reserved (0)
  66569.  6    floppy caching enabled
  66570.  7    all caching functions enabled
  66571. ----------2FDF01-----------------------------
  66572. INT 2F U - TELTSR.COM - ???
  66573.     AX = DF01h
  66574.     ???
  66575. Return: ???
  66576. SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
  66577. --------c-2FDF02BX4448-----------------------
  66578. INT 2F - HyperDisk v4.50+ - SET CACHE STATE
  66579.     AX = DF02h
  66580.     BX = 4448h ('DH')
  66581.     DL = new caching flags (see #1645)
  66582. Return: AX = 0000h if supported
  66583.         BX = number of cache buffers in use
  66584.         CX = number of cache buffers which have been modified
  66585.         DL = previous caching flags (see #1645)
  66586. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  66587. Range:    AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
  66588. SeeAlso: AX=DF00h,AX=DF01h
  66589. ----------2FDF02-----------------------------
  66590. INT 2F U - TELTSR.COM - ???
  66591.     AX = DF02h
  66592.     ???
  66593. Return: ???
  66594. Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
  66595. SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
  66596. --------U-2FE000-----------------------------
  66597. INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
  66598.     AX = E000h
  66599. Return: AX = 4A52h ("JR") if present
  66600. Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
  66601.       apparent DOS version analogously to MS-DOS SETVER
  66602. Note:    this installation check differs from the usual one of returning AL=FFh
  66603. SeeAlso: AX=E001h,INT 21/AH=52h
  66604. --------K-2FE000DX5354-----------------------
  66605. INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
  66606.     AX = E000h
  66607.     DX = 5354h ("ST")
  66608. Return: AL = FFh if installed
  66609.         BX = version (BH = major, BL = BCD minor)
  66610.         DX = segment of resident code
  66611. Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
  66612. --------U-2FE001-----------------------------
  66613. INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
  66614.     AX = E001h
  66615. Return: AH = major version
  66616.     AL = minor version
  66617. SeeAlso: AX=E000h
  66618. --------U-2FE002-----------------------------
  66619. INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
  66620.     AX = E002h
  66621. Return: AL = FFh if successful
  66622.         BH = major DOS version
  66623.         BL = minor DOS version
  66624.         CH = DOS version flag
  66625.         CL = OEM number
  66626.         DH = major DR-DOS version number (FFh if unknown)
  66627.         DL = minor DR-DOS version number (FFh if unknown)
  66628. SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
  66629. --------U-2FE003-----------------------------
  66630. INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
  66631.     AX = E003h
  66632.     BH = new major DOS version
  66633.     BL = new minor DOS version
  66634.     CH = new DOS version flag
  66635.     CL = new DOS revision number
  66636.     DH = new OEM number
  66637. SeeAlso: AX=E002h
  66638. --------U-2FE004-----------------------------
  66639. INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
  66640.     AX = E004h
  66641. Return: AL = FFh if successful
  66642. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  66643. --------U-2FE005-----------------------------
  66644. INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
  66645.     AX = E005h
  66646. Return: AL = FFh if successful
  66647. SeeAlso: AX=E000h,AX=E004h,AX=E006h
  66648. --------U-2FE006-----------------------------
  66649. INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
  66650.     AX = E006h
  66651. Return: AL = FFh if successful
  66652.         BL = status
  66653.         01h resident and active
  66654.         02h resident and inactive
  66655. --------U-2FE007-----------------------------
  66656. INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
  66657.     AX = E007h
  66658. Return: AL = FFh if successful
  66659.         BL = status
  66660.         00h if TaskMAX not loaded before SETDRVER
  66661.         FFh if TaskMAX was loaded before SETDRVER
  66662. SeeAlso: AX=E003h
  66663. --------U-2FE0-------------------------------
  66664. INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
  66665.     AH = E0h
  66666.     AL = 08h-10h
  66667. --------K-2FE100-----------------------------
  66668. INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
  66669.     AX = E100h
  66670. Return: AX = 0001h if installed
  66671.         DS:SI -> ASCIZ hotkey name
  66672.         DS:DI -> ASCIZ recording filename
  66673. Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
  66674.       by P2 Enterprises
  66675. SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
  66676. Index:    hotkeys;Phantom2
  66677. --------K-2FE101-----------------------------
  66678. INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
  66679.     AX = E101h
  66680.     BX = function mask (see #1646)
  66681.     CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
  66682.     DS:DX -> ASCIZ filespec if BX bit 7 set
  66683. SeeAlso: AX=E100h
  66684. Index:    hotkeys;Phantom2
  66685.  
  66686. Bitfields for Phantom2 function mask:
  66687. Bit(s)    Description    (Table 1646)
  66688.  0    record
  66689.  1    play
  66690.  2    QuickPlay
  66691.  3    loop
  66692.  4    mode display toggle
  66693.  5    sound toggle
  66694.  6    set hotkey
  66695.  7    set filespec
  66696. --------K-2FE102-----------------------------
  66697. INT 2F - Phantom2 v1.1+ - UNINSTALL
  66698.     AX = E102h
  66699. Return: AX = status
  66700.         0001h removal successful
  66701.         0002h not installed as TSR
  66702.         FFFFh disabled but not removed
  66703. SeeAlso: AX=E100h
  66704. --------K-2FE103-----------------------------
  66705. INT 2F - Phantom2 v2.8 - SET ??? FLAG
  66706.     AX = E103h
  66707. Return: AX = 0001h
  66708. SeeAlso: AX=E100h
  66709. --------y-2FE200-----------------------------
  66710. INT 2F - SecureDevice - LOGIN TO DRIVE
  66711.     AX = E200h
  66712.     DL = drive number (0 = A:)
  66713.     DS:SI -> 104-byte key
  66714. Return: AL = status
  66715.         00h unable to determine key's validity
  66716.         01h key is valid
  66717.         FFh key is invalid
  66718. Program: SecureDevice is a copylefted device driver by Max Loewenthal and
  66719.       Arthur Helwig which turns one or more disk files into encrypted
  66720.       logical drives
  66721. SeeAlso: AX=E201h,AX=E203h,AX=E209h
  66722. --------y-2FE201-----------------------------
  66723. INT 2F - SecureDevice - GET INFORMATION
  66724.     AX = E201h
  66725.     DX = driver index (0000h = first loaded)
  66726. Return: AL = number of volumes handled by driver
  66727.     DL = drive number of first volume (00h = A:)
  66728. SeeAlso: AX=E200h,AX=E203h,AX=E209h
  66729. --------y-2FE203-----------------------------
  66730. INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
  66731.     AX = E203h
  66732.     DL = drive number (00h = A:) or FFh for all drives
  66733. Return: nothing
  66734. SeeAlso: AX=E200h,AX=E209h
  66735. --------y-2FE209DX0000-----------------------
  66736. INT 2F - SecureDevice - INSTALLATION CHECK
  66737.     AX = E209h
  66738.     DX = 0000h
  66739. Return: AX = 1DEAh if installed
  66740.         DX = number of drivers installed
  66741. --------K-2FE300-----------------------------
  66742. INT 2F - ANARKEY.COM - INSTALLATION CHECK
  66743.     AX = E300h
  66744. Return: AL = state
  66745.         00h not installed
  66746.         FEh if installed but suspended (v3.0+)
  66747.         FFh installed
  66748. Program: ANARKEY.COM is a commandline recall program by Steven Calwas
  66749. Range:    AH=C0h to AH=FFh, selected by commandline switch
  66750. SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
  66751. SeeAlso: AX=E307h,INT 66"Newkey"
  66752. --------V-2FE300-----------------------------
  66753. INT 2F - Blank - INSTALLATION CHECK
  66754.     AX = E300h
  66755. Return: AL = FFh if installed
  66756.         ES = resident code segment
  66757. Program: Blank is a shareware screen blanker by Yonah Schmeidler
  66758. Note:    AH=E3h is the default, which may be reconfigured by the installation
  66759.       program in the registered version
  66760. SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
  66761. Index:    screen saver;Blank
  66762. --------K-2FE301-----------------------------
  66763. INT 2F U - ANARKEY.COM v2+ - GET ???
  66764.     AX = E301h
  66765. Return: DX:BX -> ??? (see #1647,#1648)
  66766. SeeAlso: AX=E300h
  66767.  
  66768. Format of returned data structure for ANARKEY v2.0:
  66769. Offset    Size    Description    (Table 1647)
  66770.  -7   7 BYTEs    signature ('ANARKEY')
  66771.  00h    WORD    ??? (I see 0001h in v2.0)
  66772.  02h    WORD    ??? (I see 0001h in v2.0)
  66773.  04h    WORD    ??? (I see 0 in v2.0)
  66774.  06h    WORD    PSP segment of next program loaded
  66775.  
  66776. Format of returned data structure for ANARKEY v3+:
  66777. Offset    Size    Description    (Table 1648)
  66778.  -1    BYTE    multiplex number
  66779.  00h    WORD    ??? (I see 0001h in v3.0-4.0)
  66780.  02h    WORD    ??? (I see 0001h in v3.0-4.0)
  66781.  04h    BYTE    ??? (I see 0 in v3.0-4.0)
  66782.  05h    WORD    PSP segment of next program loaded
  66783. --------K-2FE302-----------------------------
  66784. INT 2F U - ANARKEY.COM v3+ - ???
  66785.     AX = E302h
  66786.     BL = ???
  66787. Return: ???
  66788. SeeAlso: AX=E300h
  66789. --------K-2FE303-----------------------------
  66790. INT 2F U - ANARKEY.COM v3+ - ANARKMD API
  66791.     AX = E303h
  66792.     BL = function
  66793.         01h toggle insert mode
  66794.         02h display contents of history buffer
  66795.         03h write history buffer to file
  66796.         ES:DX -> file name
  66797.         04h clear history buffer
  66798.         05h undefine all aliases
  66799.         06h show aliases
  66800.         07h list programs using Unix switchar
  66801.         08h jump to bottom of history buffer
  66802.         09h (v4.0) add string to history buffer
  66803.         ES:DX -> ASCIZ string
  66804.         0Ah (v4.0) ???
  66805.         ES:DX -> ???
  66806.         0Bh (v4.0) copy string to edit buffer for use as next input line
  66807.         ES:DX -> ASCIZ string
  66808.         0Ch (v4.0) ???
  66809.         0Dh (v4.0) copy ??? to ???
  66810.         0Eh (v4.0) ???
  66811.         0Fh (v4.0) ???
  66812.         10h (v4.0) set ??? flag
  66813.         11h (v4.0) display error message about running in EMS under Windows
  66814. Return: ???
  66815. SeeAlso: AX=E300h
  66816. --------K-2FE304-----------------------------
  66817. INT 2F U - ANARKEY.COM v2+ - ???
  66818.     AX = E304h
  66819.     BL = ???
  66820. Return: ???
  66821. SeeAlso: AX=E300h
  66822. --------K-2FE305-----------------------------
  66823. INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
  66824.     AX = E305h
  66825.     BL = new state
  66826.         01h suspended
  66827.         00h enabled
  66828. SeeAlso: AX=E300h
  66829. --------K-2FE306-----------------------------
  66830. INT 2F U - ANARKEY.COM v4.0 - GET ???
  66831.     AX = E306h
  66832. Return: AX = ???
  66833. SeeAlso: AX=E300h
  66834. --------K-2FE307-----------------------------
  66835. INT 2F U - ANARKEY.COM v4.0 - GET ???
  66836.     AX = E307h
  66837. Return: AX = ???
  66838.     BL = ???
  66839. SeeAlso: AX=E300h
  66840. --------l-2FE44D-----------------------------
  66841. INT 2F - NDOS - API
  66842.     AX = E44Dh
  66843. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  66844.       Norton Utilities
  66845. Note:    as NDOS is a licensed version of 4DOS v3.03, the API is identical to
  66846.       that for 4DOS, except that AH=E4h instead of D4h and the installation
  66847.       check returns AX=44EEh instead of AX=44DDh
  66848. SeeAlso: AX=D44Dh,AX=E44Eh
  66849. --------l-2FE44E-----------------------------
  66850. INT 2F C - NDOS - AWAITING USER INPUT
  66851.     AX = E44Eh
  66852.     BX = condition
  66853.         0000h NDOS is ready to display prompt
  66854.         0001h NDOS has displayed the prompt, about to accept user input
  66855. Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
  66856. SeeAlso: AX=E44Dh
  66857. --------K-2FE44FBX0000-----------------------
  66858. INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
  66859.     AX = E44Fh
  66860.     BX = 0000h
  66861. Return: AX = 44EEh if installed
  66862. Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
  66863.       Norton Utilities
  66864. Note:    this function is also supported by ANSIPLUS v3.01+, which emulates
  66865.       the 4DOS and NDOS keystack
  66866. SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
  66867. --------K-2FE44FBX0001-----------------------
  66868. INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
  66869.     AX = E44Fh
  66870.     BX = 0001h
  66871.     CX = number of keystrokes (01h-FFh)
  66872.     DS:DX -> keystroke list (one word per keystroke)
  66873. Return: AX = status
  66874.         0000h successful
  66875.         nonzero failed
  66876.     BX,CX,DX destroyed
  66877. Notes:    the keystrokes are the exact values to return from subsequent calls to
  66878.       INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
  66879.         0000h causes subfunctions 01h and 11h to indicate an empty
  66880.               keyboard buffer
  66881.         FFFFh is followed by a word indicating the number of clock
  66882.               ticks to delay before the next faked keystroke
  66883.     v4.00 KSTACK overwrites any unread keystrokes from the previous
  66884.       invocation, and does not range-check CX; it will overwrite memory
  66885.       following the resident portion if CX is greater than 100h.
  66886.     this function is also supported by ANSIPLUS v3.01+, which emulates
  66887.       the 4DOS and NDOS keystack
  66888. SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h
  66889. --------E-2FED00-----------------------------
  66890. INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
  66891.     AX = ED00h
  66892.     BL = DOS extender ID (see #1649)
  66893. Return: AL = status
  66894.         00h not installed
  66895.         FFh installed
  66896.         SI = 5048h ("PH")
  66897.         DI = 4152h ("AR")
  66898.         CH = major version number
  66899.         CL = minor version number
  66900.         DX = flags
  66901.             bit 0: running under DPMI
  66902.             bit 1: running under Phar Lap VMM
  66903.         if running under DPMI:
  66904.             BX = DPMI version (BH = major, BL = minor)
  66905. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
  66906.  
  66907. (Table 1649)
  66908. Values for Phar Lap DOS extender ID:
  66909.  01h    286dosx v1.3+ (Software Development Kit)
  66910.  02h    286dosx v1.3+ (Run-Time Kit)
  66911.  03h    386dosx v4.0+ (SDK)
  66912.  04h    386dosx v4.0+ (RTK)
  66913. --------E-2FED03-----------------------------
  66914. INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
  66915.     AX = ED03h
  66916.     CX = real-mode code segment
  66917.     DX = real-mode data segment
  66918. Return: CF clear if successful
  66919.         CX = protected-mode code segment selector
  66920.         DX = protected-mode data segment selector
  66921.         ES:DI -> real-mode entry point for calling protected-mode functions
  66922.               (see INT 21/AX=250Dh)
  66923.     CF set on error
  66924.         AX = error code
  66925.         0008h unable to allocate LDT descriptors
  66926. --------E-2FED80-----------------------------
  66927. INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
  66928.     AX = ED80h
  66929.     BL = DOS extender ID (see #1649)
  66930.     SI = 5048h ("PH")
  66931.     DI = 4152h ("AR")
  66932.     ???
  66933. Return: ???
  66934. --------y-2FEE00-----------------------------
  66935. INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
  66936.     AX = EE00h
  66937. Return: AL = FFh if installed
  66938. Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
  66939. SeeAlso: INT 21/AH=40h"NB.SYS"
  66940. --------U-2FEE00-----------------------------
  66941. INT 2F - XVIEW - INSTALLATION CHECK
  66942.     AX = EE00h
  66943. Return: AX = 00FFh if installed
  66944. Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
  66945. --------N-2FEE00-----------------------------
  66946. INT 2F - WEB v4.02 - INSTALLATION CHECK
  66947.     AX = EE00h
  66948. Return: AL = status
  66949.         00h not installed
  66950.         FFh installed
  66951. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  66952. SeeAlso: AH=EEh"WEB",AX=EEF0h
  66953. --------U-2FEE01-----------------------------
  66954. INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
  66955.     AX = EE01h
  66956.     DS:DX -> ASCIZ string containing case-insensitive keyword to look up
  66957. Return: AX = status (see #1650)
  66958. Note:    the specified keyword should be a hyperlink in the _IndexPage of some
  66959.       database; the current database is searched first
  66960. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
  66961.  
  66962. (Table 1650)
  66963. Values for XVIEW function status:
  66964.  0000h    successful
  66965.  00F1h    unknown subfunction
  66966.  00F2h    unable to pop up
  66967. --------U-2FEE02-----------------------------
  66968. INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
  66969.     AX = EE02h
  66970.     DX = physical page number or anchor page number (see #1651)
  66971. Return: AX = status (see #1650)
  66972. Note:    physical page numbers are assigned by the hypertext compiler, and
  66973.       will change if a page is inserted in the middle
  66974. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
  66975.  
  66976. (Table 1651)
  66977. Values for XVIEW anchor page number:
  66978.  FFEAh    _Credits
  66979.  FFECh    _SearchTopics
  66980.  FFEDh    _SearchText
  66981.  FFF0h    _ManualList
  66982.  FFF5h    _HelpOnHelp
  66983.  FFF8h    _HomePage
  66984.  FFF9h    _IndexPage
  66985. --------U-2FEE03-----------------------------
  66986. INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
  66987.     AX = EE03h
  66988.     DS:DX -> data packet (see #1652)
  66989. Return: AX = status (see #1650)
  66990. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
  66991.  
  66992. Format of XVIEW data packet:
  66993. Offset    Size    Description    (Table 1652)
  66994.  00h    DWORD    -> ASCIZ database filespec (0000h:0000h for current database)
  66995.  04h    DWORD    -> ASCIZ text to look up or 0000h:0000h
  66996.  08h    WORD    page number (0000h if keyword used)
  66997.  0Ah  6 BYTEs    reserved
  66998. --------U-2FEE04-----------------------------
  66999. INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
  67000.     AX = EE04h
  67001. Return: AX = status (see #1650)
  67002. Note:    equivalent to the action taken when the user presses the Alt-L hotkey
  67003. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
  67004. --------U-2FEE05-----------------------------
  67005. INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
  67006.     AX = EE05h
  67007. Return: AX = status (see #1650)
  67008. Note:    equivalent to the action taken when the user presses the Alt-H hotkey
  67009. SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
  67010. --------U-2FEE06-----------------------------
  67011. INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
  67012.     AX = EE06h
  67013. Return: AX = status (see also AX=EE01h)
  67014.         0001h specified filename is not an xText database
  67015.         0002h no databases found
  67016.         0003h bad data in file
  67017.         0004h memory shortage
  67018.         0005h unable to open the requested file
  67019.         0007h invalid page number for file
  67020. Note:    although this call is not required, the exit code can alert the
  67021.       caller to problems; if the call is not made, the program should
  67022.       enforce a delay of about 1/2 second to allow the viewer to pop up,
  67023.       and should not get keyboard input or attempt disk accesses during
  67024.       the delay
  67025. SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
  67026. --------N-2FEE-------------------------------
  67027. INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
  67028.     AH = EEh
  67029.     AL = module ID (see #1653)
  67030. Return: AX = 0000h if installed
  67031.         ES:DI -> far entry point for module-specific API calls
  67032.           (see #1654,#1655,#1656,#1657,#1658)
  67033. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  67034. SeeAlso: AX=EE00h"WEB"
  67035.  
  67036. (Table 1653)
  67037. Values for WEB module ID:
  67038.  10h    server module (SERVER.EXE)
  67039.  20h    client module (CLIENT.EXE)
  67040.  30h    mail module (MAIL.EXE)
  67041.  40h    spooler (PCSPOOL.EXE)
  67042.  50h    kernel module (KERNEL.EXE)
  67043.  60h    SAP module (KERNEL.EXE)
  67044.  70h    resident station manager (SM.EXE)
  67045.  90h    router module (ROUTER.EXE)
  67046.  
  67047. (Table 1654)
  67048. Call server module entry point with:
  67049.     BX = function
  67050.         0000h remove server module
  67051.         Return: AX = status (0000h if successful, else WEB error code)
  67052.         0001h create SYSINFO file
  67053.         Note:    the SYSINFO file is used by the station manager when
  67054.               displaying info for a particular station
  67055.         0002h get server object table
  67056.         Return: CX = number of server objects
  67057.             ES:DI -> server object table
  67058.         Note:    server objects include drives and devices that the
  67059.               server module controls
  67060.         0003h get server variables
  67061.         Return: ES:DI -> server variables
  67062.  
  67063. (Table 1655)
  67064. Call client module entry point with:
  67065.     BX = function
  67066.         0000h remove client module
  67067.         Return: AX = status (0000h if successful, else WEB error code)
  67068.         0001h decrement client-only flag
  67069.         0002h increment client-only flag
  67070.         0005h set device capture
  67071.         Note:    decrements DeviceOutput flag, telling the spooler that
  67072.               it may trap device output again
  67073.         0006h clear device capture
  67074.         Note:    increments DeviceOutput flag, telling the spooler that
  67075.               it should not trap device output (this is used
  67076.               internally by the spooler to prevent it from trapping
  67077.               its own output)
  67078.         0007h get client debug pointer
  67079.         Return: ES:DI -> client debug data structure (see #1659)
  67080.         0008h get root drive
  67081.         Return: AL = WEB startup drive
  67082.         0009h get maximum possible drive/device redirections
  67083.         Return: AL = maximum drive redirections
  67084.             CH = maximum LPTx redirections
  67085.             CL = maximum COMx redirections
  67086.         000Ah suspend client
  67087.         Return: AX = previous value of Suspend flag
  67088.         000Bh resume client
  67089.         Return: AX = previous value of Suspend flag
  67090.         000Ch get instance data
  67091.         CX = maximum number of structures in array
  67092.         ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
  67093.               (see #1660)
  67094.         Return: CX = number of structures actually returned
  67095.         Note:    used internally by WEB4WIN
  67096.  
  67097. (Table 1656)
  67098. Call mail module entry point with:
  67099.     BX = function
  67100.         0000h remove mail module
  67101.         Return: AX = status (0000h successful, else WEB error code)
  67102.         0001h set mail poll
  67103.         Note:    schedules the WEB mail module
  67104.         0002h set mail notify
  67105.         Note:    sets the Notify flag, which determines whether the
  67106.               user will be notified when mail is received
  67107.         0003h clear mail notify
  67108.         Note:    clears the Notify flag, which determines whether the
  67109.               user will be notified when mail is received
  67110.         0004h check whether new mail has arrived
  67111.         Return: AL = new mail status
  67112.                 00h no new mail since last call
  67113.                 else new mail has arrived
  67114.         Note:    also clears the new-mail flag after retrieving it
  67115.         0005h send notify
  67116.         ES:DI -> name of WEB user to be notified
  67117.         0006h get post office
  67118.         Return: ES:DI -> full network path of Post Office subdirectory
  67119.  
  67120. (Table 1657)
  67121. Call spooler entry point with:
  67122.     BX = function
  67123.         0000h remove PCSpool module
  67124.         Return: AX = status (0000h successful, else WEB error code)
  67125.         0001h set spooler poll
  67126.         Note:    schedules the WEB spooler
  67127.         0002h check spooler changed
  67128.         Return:    AX = 0000h
  67129.         Note:    this call is a NOP in current versions of WEB
  67130.  
  67131. (Table 1658)
  67132. Call kernel entry point with:
  67133.     BX = function
  67134.         0000h remove kernel module
  67135.         Return: AX = status (0000h successful, else WEB error code)
  67136.         0001h set kernel ^S filter
  67137.         DL = new state (00h don't filter ^S, nonzero do filter)
  67138.         0002h get kernel data area
  67139.         Return: ES:DI -> kernel data area
  67140.         0003h display dialog box
  67141.         CL = dialog box type
  67142.             00h password
  67143.             01h E-Note received notification
  67144.             02h Novell login
  67145.             03h general notification
  67146.         DL = number of rows to display
  67147.         ES:SI -> array of far pointers to rows to be displayed
  67148.         ES:DI -> Pascal-style input buffer
  67149.         Return: AX = status (0000h successful, else error code)
  67150.         0004h kernel service events
  67151.         0005h get kernel's in-critical-section flag
  67152.         Return: ES:DI -> kernel InCriticalSection flag
  67153.         0006h schedule DOS event
  67154.         AL = directive
  67155.             00h do not ignore WEB ExtraBusy flag
  67156.             01h ignore ExtraBusy flag
  67157.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  67158.         ES:SI -> WEB AES Event Control Block (ECB) (see #1661)
  67159.         Notes:    the WEB Asynchronous Event Scheduler is similar to the
  67160.               one used by IPX; this call schedules a special ECB
  67161.               to be executed at a later time.  Unlike IPX ECBs,
  67162.               the timeout must be set explicitly by the caller
  67163.             this function also calls function 0004h
  67164.         0007h check busy
  67165.         AL = directive
  67166.             00h do not ignore WEB ExtraBusy flag
  67167.             01h ignore ExtraBusy flag
  67168.             02h (WEB4WIN) check that current Windows VM is foregrnd VM
  67169.         Return: AX = status (0000h not busy, else busy)
  67170.         0008h set keyboard intercept
  67171.         Note:    currently a NOP which returns immediately
  67172.         0009h get keyboard intercept
  67173.         Note:    currently a NOP which returns immediately
  67174.         000Ah get dialog flags
  67175.         Return: ES:DI -> kernel dialog flags (see #1662)
  67176.         000Bh get network path
  67177.         Return: ES:DI -> fully-qualified network path of file where
  67178.                 the screen is stored on Dialog calls
  67179.         000Ch kernel alternate dialog
  67180.         CL = dialog box type
  67181.             00h password
  67182.             01h E-Note received notification
  67183.             02h Novell login
  67184.             03h general notification
  67185.         DL = number of rows to display
  67186.         ES:SI -> array of far pointers to rows to be displayed
  67187.         ES:DI -> Pascal-style input buffer
  67188.         Return: AX = status (0000h successful, else error code)
  67189.         Note:    this function is identical to function 0003h except
  67190.               that it does not notify WEB4WIN of the impending
  67191.               dialog request
  67192.         000Dh get machine/operating system type
  67193.         Return: AX = machine/operating system type
  67194.                 01h IBM PC, MS-DOS
  67195.                 02h IBM PC, DOSV (Japanese)
  67196.                 03h NEC PC-9800, JDOS (Japanese)
  67197.                 04h IBM PC, Korean DBC DOS
  67198.  
  67199. Format of client debug data structure:
  67200. Offset    Size    Description    (Table 1659)
  67201.  00h    WORD    total files
  67202.  02h    WORD    files free
  67203.  04h    WORD    no files
  67204.  06h    WORD    minimum files
  67205.  08h    WORD    total FCBs
  67206.  0Ah    WORD    total safe FCBs
  67207.  0Ch    WORD    FCBs in use
  67208.  0Eh    WORD    wrong FCB
  67209.  10h    WORD    compressed
  67210.  12h    WORD    retransmits
  67211.  
  67212. Format of WIN_INSTANCE_DATA structure:
  67213. Offset    Size    Description    (Table 1660)
  67214.  00h    DWORD    real-mode pointer to data to be instanced
  67215.  04h    WORD    size of data to be instanced
  67216.  
  67217. Format of WEB AES Event Control Block:
  67218. Offset    Size    Description    (Table 1661)
  67219.  00h    DWORD    link address
  67220.  04h    WORD    ESR address
  67221.  08h    BYTE    InUse flag
  67222.  09h    BYTE    completion code
  67223.  0Ah  3 BYTEs    reserved
  67224.  0Dh    WORD    timeout
  67225.  0Fh    BYTE    IgnoreExtra flag
  67226.  10h    WORD    PSP
  67227.  12h    DWORD    DTA
  67228.  16h    WORD    AX value for DOS critical information
  67229.  18h    WORD    BX value for DOS critical information
  67230.  1Ah    WORD    CX value for DOS critical information
  67231.  1Ch    WORD    DX value for DOS critical information
  67232.  
  67233. (Table 1662)
  67234. Values for kernel dialog flags:
  67235.  01h    dialog will timeout
  67236.  02h    display stars instead of entered keystrokes
  67237. --------N-2FEEF0-----------------------------
  67238. INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
  67239.     AX = EEF0h
  67240.     BX = notification function ID (see #1663)
  67241. Return: varies by notification function
  67242. Program: WEB is an IPX-based peer-to-peer network by Webcorp.
  67243. Note:    the notification functions are used internally by WEB modules to notify
  67244.       other modules and external programs of actions or event, and should
  67245.       never be called by an application
  67246. SeeAlso: AX=EE00h"WEB"
  67247.  
  67248. (Table 1663)
  67249. Values for WEB Notification Function ID:
  67250.  00h    node added
  67251.  01h    node deleted
  67252.  02h    dial attempt
  67253.  03h    dial failed
  67254.  04h    file close
  67255.  05h    close connection
  67256.  07h    check Windows mode
  67257.  20h    link up
  67258.  21h    link down
  67259. --------K-2FF000-----------------------------
  67260. INT 2F U - 4MAP - INSTALLATION CHECK
  67261.     AX = F000h
  67262. Return: AX = 00FFh
  67263. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  67264. Note:    returns AX=00FFh for any value of AL not listed here
  67265. SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
  67266. --------K-2FF001-----------------------------
  67267. INT 2F U - 4MAP - GET KEY MAPPINGS
  67268.     AX = F001h
  67269. Return: ES:BX -> key mappings
  67270. SeeAlso: AX=F000h
  67271. --------K-2FF002-----------------------------
  67272. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  67273.     AX = F002h
  67274.     BL = character to insert
  67275. Return: AX = status
  67276.         0000h successful
  67277.         0001h buffer full
  67278. SeeAlso: AX=F000h,AX=F003h
  67279. --------K-2FF003-----------------------------
  67280. INT 2F U - 4MAP - INSERT CHARACTER INTO ???
  67281.     AX = F003h
  67282.     BL = character to insert
  67283. Return: AX = status
  67284.         0000h successful
  67285.         0001h buffer full
  67286. Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
  67287. SeeAlso: AX=F000h,AX=F002h
  67288. --------m-2FF1-------------------------------
  67289. INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
  67290.     AH = F1h
  67291.     AL <> F1h
  67292. Return: AL = F1h if installed
  67293. Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
  67294.       popup TSRs to be loaded but swapped out to disk, EMS, or XMS.     One
  67295.       TSR at a time is brought back into memory at the user's request.
  67296. --------E-2FF100-----------------------------
  67297. INT 2F - DOS EXTENDER INSTALLATION CHECK
  67298.     AX = F100h
  67299. Return: AL = FFh if DOS extender present
  67300.         SI = 444Fh ("DO")
  67301.         DI = 5358h ("SX")
  67302. Note:    supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
  67303. SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
  67304. --------W-2FF200-----------------------------
  67305. INT 2F - WINX - INSTALLATION CHECK
  67306.     AX = F200h
  67307. Return: AX = 00FFh if installed
  67308. Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
  67309.       launch Windows applications from a DOS Box; it was published in
  67310.       "DOS and Windows Protected Mode-Programming with DOS Extenders"
  67311.       (Addison-Wesley) and should not be confused with the Windows driver
  67312.       of the same name which is part of the DESQview/X package
  67313. --------W-2FF201-----------------------------
  67314. INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
  67315.     AX = F201h
  67316. Return: AX = status
  67317.         FFFFh if WINX is busy processing a different request
  67318.         0000h if successful
  67319.         BX:CX = address of server buffer (see #1664)
  67320.  
  67321. Format of WINX server buffer:
  67322. Offset    Size    Description    (Table 1664)
  67323.  00h    BYTE    command/status
  67324.         00h buffer available
  67325.         01h buffer contains result
  67326.         02h change directory
  67327.         03h execute program
  67328.         FFh terminate windows portion of WINX
  67329.  01h  ? BYTEs    command (03h) or directory (02h)
  67330.   or
  67331.  01h    DWORD    result (01h)
  67332. --------W-2FF202-----------------------------
  67333. INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
  67334.     AX = F202h
  67335.     BX:CX -> directory
  67336. Return: AX = status
  67337.         FFFFh if WINX is busy processing a different request
  67338.         0000h if successful
  67339. SeeAlso: AX=F200h,AX=F203h
  67340. --------W-2FF203-----------------------------
  67341. INT 2F - WINX - EXECUTE COMMAND
  67342.     AX = F203h
  67343.     BX:CX -> command
  67344. Return: AX = status
  67345.         0000h if successful
  67346.         FFFFh if WINX is busy processing a different request
  67347. SeeAlso: AX=F200h,AX=F202h
  67348. --------G-2FF400-----------------------------
  67349. INT 2F - FINDIRQ.COM - INSTALLATION CHECK
  67350.     AX = F400h
  67351. Return: AL = 01h if installed
  67352. Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
  67353.       of PC Magazine; when run as a TSR it can determine which IRQs are
  67354.       used only when a device is active
  67355. SeeAlso: AX=F401h
  67356. --------G-2FF401CX5121-----------------------
  67357. INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
  67358.     AX = F401h
  67359.     CX = 5121h ('Q!')
  67360. Return: AX:DX -> hooked interrupt table (see #1665)
  67361. SeeAlso: AX=F400h
  67362.  
  67363. Format of FINDIRQ hooked interrupt table:
  67364. Offset    Size    Description    (Table 1665)
  67365.  00h    BYTE    1Ch
  67366.  01h    DWORD    FINDIRQ's INT 1C handler
  67367.  05h    DWORD    original INT 1C handler
  67368.  09h    BYTE    28h
  67369.  0Ah    DWORD    FINDIRQ's INT 28 handler
  67370.  0Eh    DWORD    original INT 28 handler
  67371.  12h    BYTE    2Fh
  67372.  13h    DWORD    FINDIRQ's INT 2F handler
  67373.  17h    DWORD    original INT 2F handler
  67374. --------d-2FF700-----------------------------
  67375. INT 2F - AUTOPARK.COM - INSTALLATION CHECK
  67376.     AX = F700h
  67377. Return: AL = state
  67378.         00h not installed
  67379.         FFh installed
  67380. Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
  67381. --------d-2FF701-----------------------------
  67382. INT 2F - AUTOPARK.COM - SET PARKING DELAY
  67383.     AX = F701h
  67384.     BX:CX = 32-bit count of 55ms timer ticks
  67385. --------d-2FF800CX4455-----------------------
  67386. INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
  67387.     AX = F800h
  67388.     CX = 4455h ("DU")
  67389.     DL = 45h ("E")
  67390. Return: AL = FFh if installed
  67391.         ES:BX -> ASCII signature "Universal Data Exchange"
  67392. Program: SuperStor is a disk-compression program by Addstor.
  67393. Note:    returns AX=0001h if AL is not 00h or 01h
  67394. SeeAlso: AX=1001h,AX=F801h
  67395. --------d-2FF801CX4455-----------------------
  67396. INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
  67397.     AX = F801h
  67398.     CX = 4455h ("DU")
  67399.     DL = 45h ("E")
  67400.     ES:BX = return address if successful
  67401. Return: at specified address if successfully removed from memory
  67402.     else
  67403.         AL = error code
  67404.         ???
  67405. Program: SuperStor is a disk-compression program by Addstor.
  67406. Note:    returns AX=0001h if AL is not 00h or 01h
  67407. SeeAlso: AX=1001h,AX=F800h
  67408. --------*-2FFB-------------------------------
  67409. INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
  67410.     AH = FBh
  67411. SeeAlso: AX=FB42h/BX=0001h
  67412. --------a-2FFB00-----------------------------
  67413. INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
  67414.     AX = FB00h
  67415. Return: AX = 00FFh if installed
  67416. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  67417. SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
  67418. --------U-2FFB00-----------------------------
  67419. INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
  67420.     AX = FB00h
  67421. Return: AX = FFFFh if installed
  67422.         BX = version (BCD, BH=major, BL=minor)
  67423. SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
  67424. --------a-2FFB01-----------------------------
  67425. INT 2F U - AutoBraille v1.1A - ???
  67426.     AX = FB01h
  67427.     ???
  67428. Return: ???
  67429. --------U-2FFB01-----------------------------
  67430. INT 2F U - Jot-It! v1.50 - GET USER NAME
  67431.     AX = FB01h
  67432. Return: DX:BX -> ASCIZ user name
  67433. SeeAlso: AX=FB02h"Jot-It"
  67434. --------a-2FFB02-----------------------------
  67435. INT 2F U - AutoBraille v1.1A - ???
  67436.     AX = FB02h
  67437. Return: AH = ???
  67438.     AL = ???
  67439. --------U-2FFB02-----------------------------
  67440. INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
  67441.     AX = FB02h
  67442. Return: DX:BX -> ASCIZ name of directory in which messages are stored
  67443. SeeAlso: AX=FB01h"Jot-It"
  67444. --------a-2FFB03-----------------------------
  67445. INT 2F U - AutoBraille v1.1A - GET NEXT ???
  67446.     AX = FB03h
  67447. Return: AX = ???
  67448. --------U-2FFB03-----------------------------
  67449. INT 2F U - Jot-It! v1.50 - UNINSTALL
  67450.     AX = FB03h
  67451. Return: resident code removed from memory
  67452. Note:    CAUTION: NO checks are performed to ensure that the interrupt vectors
  67453.       being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
  67454. SeeAlso: AX=FB00h"Jot-It"
  67455. --------a-2FFB-------------------------------
  67456. INT 2F U - AutoBraille v1.1A - SET ???
  67457.     AH = FBh
  67458.     AL = 04h-08h
  67459. Return: AX = 0000h
  67460. --------a-2FFB-------------------------------
  67461. INT 2F U - AutoBraille v1.1A - SET ???
  67462.     AH = FBh
  67463.     AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
  67464. Return: ???
  67465. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  67466. --------a-2FFB-------------------------------
  67467. INT 2F U - AutoBraille v1.1A - SET ???
  67468.     AH = FBh
  67469.     AL = 10h-1Fh
  67470.     ???
  67471. Return: ???
  67472. --------a-2FFB20-----------------------------
  67473. INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
  67474.     AX = FB20h
  67475.     BL = flags to set
  67476. SeeAlso: AX=FB21h"AutoBraille"
  67477. --------a-2FFB21-----------------------------
  67478. INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
  67479.     AX = FB21h
  67480.     BL = flags to clear
  67481. SeeAlso: AX=FB20h"AutoBraille"
  67482. --------a-2FFB22-----------------------------
  67483. INT 2F U - AutoBraille v1.1A - SET ???
  67484.     AX = FB22h
  67485.     BL = ???
  67486. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  67487. --------a-2FFB28-----------------------------
  67488. INT 2F U - AutoBraille v1.1A - ???
  67489.     AX = FB28h
  67490.     BX = ???
  67491.     ???
  67492. Return: ???
  67493. SeeAlso: AX=FB29h"AutoBraille"
  67494. --------a-2FFB29-----------------------------
  67495. INT 2F U - AutoBraille v1.1A - ???
  67496.     AX = FB29h
  67497.     BX = ???
  67498.     ???
  67499. Return: ???
  67500. SeeAlso: AX=FB28h"AutoBraille"
  67501. --------a-2FFB-------------------------------
  67502. INT 2F U - AutoBraille v1.1A - SET ???
  67503.     AH = FBh
  67504.     AL = 2Bh-34h
  67505.     BX = ???
  67506. --------a-2FFB35-----------------------------
  67507. INT 2F U - AutoBraille v1.1A - SET ???
  67508.     AX = FB35h
  67509.     BL = ???
  67510. --------a-2FFB36-----------------------------
  67511. INT 2F U - AutoBraille v1.1A - SET ???
  67512.     AX = FB36h
  67513.     BL = ???
  67514. --------a-2FFB37-----------------------------
  67515. INT 2F U - AutoBraille v1.1A - SET ???
  67516.     AX = FB37h
  67517.     BL = ???
  67518. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  67519. --------E-2FFB42BX0001-----------------------
  67520. INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
  67521.     AX = FB42h
  67522.     BX = 0001h
  67523. Return: AX = version number??? (AL=major, AH=minor)
  67524.     CX = next-selector increment
  67525. ---BC2.0---
  67526.     ES:BX -> 80-byte buffer for ???
  67527.     DX = DPMI version
  67528. ---BC3.0---
  67529.     BX = ??? (0000h)
  67530.     DX = ???
  67531.     ES:SI -> list of valid selectors ???
  67532. Notes:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  67533.       as version 1.000, while the version distributed with BC++ 3.0
  67534.       identifies itself as version 1.0; the former is 10864 bytes, the
  67535.       latter 22180 bytes.  The BC2.0 version is a DPMI loader, while
  67536.       the BC3.0 version also adds a DPMI host and DOS extender
  67537.     the BC++ 2.0 version displays an error message if called with BX
  67538.       values other than 0001h-0008h
  67539. SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
  67540. --------E-2FFB42BX0002-----------------------
  67541. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
  67542.     AX = FB42h
  67543.     BX = 0002h
  67544.     CX = size in bytes
  67545.     DX = bit flags
  67546.         bit 2: set to allocate DOS memory, clear for DPMI memory
  67547.     SI = selector of descriptor to be modified to access allocated memory
  67548.     DI = selector of a second descriptor to be modified
  67549. Return: AX = ??? or 0000h on error
  67550.     CX:DX = linear base address of DPMI memory block
  67551.     SI:DI = handle for DPMI memory block or FFFFh:FFFFh
  67552.     ???
  67553. Note:    two segment descriptors may be set if a code and an aliased data
  67554.       segment are required; if only one descriptor is needed, SI should
  67555.       equal DI on entry
  67556. BUG:    when allocating DOS memory, the code computes the linear address by
  67557.       multiplying the segment number by 4 rather than shifting by 4
  67558. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  67559. --------E-2FFB42BX0002-----------------------
  67560. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
  67561.     AX = FB42h
  67562.     BX = 0002h
  67563.     ES:SI -> memory block info (see #1666)
  67564. Return: ???
  67565. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  67566.       as version 1.000, while the version distributed with BC++ 3.0
  67567.       identifies itself as version 1.0; the former is 10864 bytes, the
  67568.       latter 22180 bytes.
  67569. SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
  67570.  
  67571. Format of DPMILOAD memory block info:
  67572. Offset    Size    Description    (Table 1666)
  67573.  00h    WORD    flags
  67574.         bit 0: set if data segment rather than code segment
  67575.         bit 1: information valid
  67576.         bit 2: set if DOS memory block rather than DPMI memory block
  67577.         bit 4: ???
  67578.         bit 15: set if no LDT selectors for memory block???
  67579.  02h    DWORD    block size in bytes
  67580. ---DPMI memory block---
  67581.  06h    DWORD    DPMI memory block handle
  67582. ---DOS memory block---
  67583.  06h    WORD    real-mode segment of memory block
  67584.  08h    WORD    selector of memory block
  67585. ---
  67586.  0Ah    DWORD    linear address of memory
  67587.  0Eh    WORD    memory operation error code
  67588.         0008h no more free LDT descriptors
  67589. ---if flags bit 0 clear---
  67590.  10h    WORD    code segment selector for memory block or 0000h or FFFFh
  67591.  12h    WORD    data alias selector for memory block or 0000h or FFFFh
  67592. ---if flags bit 0 set---
  67593.  10h    WORD    data segment selector for memory block or 0000h or FFFFh
  67594.  12h    WORD    unused???
  67595. --------E-2FFB42BX0003-----------------------
  67596. INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
  67597.     AX = FB42h
  67598.     BX = 0003h
  67599. Return: DX:AX = size of largest free block in paragraphs
  67600.         0000h:0000h on error (BC3.0 version only)
  67601. Note:    AX and DX are destroyed on error, but no other error indicator is
  67602.       returned, under the BC++ 2.0 version of DPMILOAD
  67603. SeeAlso: AX=FB42h/BX=0002h
  67604. --------E-2FFB42BX0004-----------------------
  67605. INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
  67606.     AX = FB42h
  67607.     BX = 0004h
  67608.     DS:DX -> ASCIZ filename of protected-mode executable
  67609. Return: CX = selector of ??? or 0000h
  67610. ---BC3.0---
  67611.     DX = status (0000h,FFF4h,others???) (see #1667)
  67612. Note:    the filename may also be terminated by a CR rather than a NUL under the
  67613.       BC++ 3.0 version of DPMILOAD
  67614.  
  67615. (Table 1667)
  67616. Values for DPMILOAD function status:
  67617.  0000h    successful
  67618.  0001h    ??? failure
  67619.  0002h    invalid selector
  67620.  0004h    unknown error
  67621.  0008h    no more LDT descriptors available???
  67622.  FFDEh    unable to set descriptor
  67623.  FFDFh    unable to get segment base address
  67624.  FFE0h    ???
  67625.  FFF2h    invalid parameter value
  67626.  FFF4h    component of filename too long (name not in 8.3 format)
  67627.  FFF5h    pathname too long (>79 chars)
  67628.  FFF6h    ???
  67629.  FFF8h    ???
  67630.  FFF9h    index out of range
  67631.  FFFAh    ???
  67632.  FFFCh    invalid access to code segment???
  67633.  FFFEh    ???
  67634.  FFFFh    general error
  67635. --------E-2FFB42BX0005-----------------------
  67636. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
  67637.     AX = FB42h
  67638.     BX = 0005h
  67639.     CX = selector of DPMILOAD data (see #1668)
  67640.     DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
  67641. Return: DX = status (see #1667)
  67642.         0000h successful
  67643.         AX:BX -> ??? FAR function (called with two words on top of stk)
  67644.         else
  67645.         BX destroyed
  67646. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
  67647.  
  67648. Format of DPMILOAD data:
  67649. Offset    Size    Description    (Table 1668)
  67650.  00h 12 BYTEs    ???
  67651.  0Ch    WORD    ??? bit flags
  67652.  0Eh 14 BYTEs    ???
  67653.  1Ch    WORD    number of memory control records
  67654.  1Eh 25 BYTEs    ???
  67655.  37h    BYTE    ??? bit flags
  67656.         bit 4: data valid???
  67657.  38h  4 BYTEs    ???
  67658.  3Ch    WORD    ???
  67659.  3Eh 12 BYTEs    ???
  67660.  46h    BYTE    ??? counter
  67661.  47h    BYTE    ???
  67662.  48h    BYTE    ???
  67663.  49h    BYTE    ???
  67664.  4Ah    WORD    ???
  67665.  4Ch  2 BYTEs    ???
  67666.  4Eh    WORD    offset of array of 64-byte memory control records
  67667.  52h    WORD    offset of name list (see #1669)
  67668.  54h  4 BYTEs    ???
  67669.  58h    WORD    offset of array of 6-byte objects
  67670.  5Ah  8 BYTEs    ???
  67671.  62h  9 BYTEs    ASCIZ name for ???
  67672.  6Bh  9 BYTEs    ASCIZ name for ???
  67673.     ???
  67674.  
  67675. Format of name list entry [array]:
  67676. Offset    Size    Description    (Table 1669)
  67677.  00h    BYTE    length of name (00h if end of array)
  67678.  01h  N BYTEs    name
  67679.  N+1    WORD    1-based index into array of unknown 6-byte objects
  67680.  
  67681. Format of 6-byte objects:
  67682. Offset    Size    Description    (Table 1670)
  67683.  00h    BYTE    ???
  67684.  01h    BYTE    ???
  67685.  02h    BYTE    ???
  67686.  03h    BYTE    1-based index of memory control record
  67687.  04h    WORD    ???
  67688.  
  67689. Format of memory control record:
  67690. Offset    Size    Description    (Table 1671)
  67691.  00h 20 BYTEs    memory block info (see #1666)
  67692.  14h  6 BYTEs    ???
  67693.  1Ah    BYTE    ???
  67694.  1Bh  2 BYTEs    ???
  67695.  1Dh    BYTE    ??? bit flags
  67696.  1Eh 14 BYTEs    ???
  67697.  2Ch    DWORD    pointer to ??? memory control record or 0000h:0000h
  67698.  30h    DWORD    pointer to ??? memory control record or 0000h:0000h
  67699.  34h    DWORD    pointer to next??? memory control record or 0000h:0000h
  67700.  38h    DWORD    pointer to prev??? memory control record or 0000h:0000h
  67701.  3Ch  4 BYTEs    ???
  67702. Note:    the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
  67703.       the pointers at offsets 34h and 38h
  67704. --------E-2FFB42BX0006-----------------------
  67705. INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
  67706.     AX = FB42h
  67707.     BX = 0006h
  67708.     CX = selector of DPMILOAD data (see #1668)
  67709.     DX = 1-based index into array of ??? 6-byte objects
  67710. Return: DX = status (see #1667)
  67711.         0000h successful
  67712.         AX:BX -> ??? FAR function (called with two words on top of stk)
  67713.         else
  67714.         BX destroyed
  67715. SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
  67716. --------E-2FFB42BX0007-----------------------
  67717. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
  67718.     AX = FB42h
  67719.     BX = 0007h
  67720.     CX = selector of ???
  67721. Return: ???
  67722. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  67723.       as version 1.000, while the version distributed with BC++ 3.0
  67724.       identifies itself as version 1.0; the former is 10864 bytes, the
  67725.       latter 22180 bytes.
  67726. --------E-2FFB42BX0007-----------------------
  67727. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67728.     AX = FB42h
  67729.     BX = 0007h
  67730.     CX = selector of DPMILOAD data (see #1668)
  67731.     ???
  67732. Return: DX = status (see #1667)
  67733.         0000h successful
  67734.         AX = ???
  67735. --------E-2FFB42BX0008-----------------------
  67736. INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  67737.     AX = FB42h
  67738.     BX = 0008h
  67739.     CX = bit flags
  67740.         bit 2: set if DPMI memory, clear if DOS memory
  67741.     DX = selector of DOS memory block
  67742.     SI:DI = handle of DPMI memory block
  67743. Return: DX = 0000h on error, unchanged if succcessful
  67744. Note:    The version of DPMILOAD distributed with BC++ v2.0 identifies itself
  67745.       as version 1.000, while the version distributed with BC++ 3.0
  67746.       identifies itself as version 1.0; the former is 10864 bytes, the
  67747.       latter 22180 bytes.
  67748. SeeAlso: AX=FB42h/BX=0002h
  67749. --------E-2FFB42BX0008-----------------------
  67750. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
  67751.     AX = FB42h
  67752.     BX = 0008h
  67753.     ES:SI -> memory block info (see #1666)
  67754. Return: ???
  67755. SeeAlso: AX=FB42h/BX=0009h
  67756. --------E-2FFB42BX0009-----------------------
  67757. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
  67758.     AX = FB42h
  67759.     BX = 0009h
  67760.     ES:SI -> memory block info (see #1666)
  67761.     ???
  67762. Return: ???
  67763. SeeAlso: AX=FB42h/BX=0008h"3.0"
  67764. --------E-2FFB42BX000A-----------------------
  67765. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
  67766.     AX = FB42h
  67767.     BX = 000Ah
  67768.     CX = 0001h
  67769.     DX = ???
  67770.     SI = ???
  67771. Return: after user exits subshell
  67772. Notes:    this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
  67773.       function is not available in protected mode.
  67774.     the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
  67775.       version also adds a DPMI host and DOS extender.
  67776. SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
  67777. --------E-2FFB42BX000B-----------------------
  67778. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
  67779.     AX = FB42h
  67780.     BX = 000Bh
  67781. --------E-2FFB42BX000C-----------------------
  67782. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
  67783.     AX = FB42h
  67784.     BX = 000Ch
  67785.     ES:SI -> memory block info ??? (see #1666)
  67786. Return: DX = status???
  67787. SeeAlso: AX=FB42h/BX=000Fh
  67788. --------E-2FFB42BX000D-----------------------
  67789. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
  67790.     AX = FB42h
  67791.     BX = 000Dh
  67792.     CX = number of words to copy from protected-mode to real mode stack
  67793.     DL = interrupt number
  67794.     DH = flags
  67795.         bit 0: reset the interrupt controller and A20 line
  67796.     ES:DI -> real-mode call structure (see INT 31/AX=0300h)
  67797. Return: CX = status
  67798.         0000h successful
  67799.         0001h failed
  67800. SeeAlso: INT 31/AX=0300h
  67801. --------E-2FFB42BX000E-----------------------
  67802. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  67803.     AX = FB42h
  67804.     BX = 000Eh
  67805.     DS:DX -> ASCIZ or CR-terminated name of ???
  67806. Return: CX = selector of DPMILOAD data (see #1668) corresponding to name,
  67807.           0000h on error
  67808. SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
  67809. --------E-2FFB42BX000F-----------------------
  67810. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
  67811.     AX = FB42h
  67812.     BX = 000Fh
  67813.     ES:SI -> memory block info (see #1666)
  67814. Return: ???
  67815. SeeAlso: AX=FB42h/BX=000Ch
  67816. --------E-2FFB42BX0010-----------------------
  67817. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
  67818.     AX = FB42h
  67819.     BX = 0010h
  67820.     DX = segment number
  67821. Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
  67822.         0000h successful
  67823.         DX = selector number for descriptor
  67824.         0008h failed
  67825. SeeAlso: AX=FB42h/BX=0023h
  67826. --------E-2FFB42BX0011-----------------------
  67827. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67828.     AX = FB42h
  67829.     BX = 0011h
  67830.     CX = selector of DPMILOAD data (see #1668)
  67831.     ???
  67832. Return: DX = status (0000h,0002h,FFFEh) (see also #1667)
  67833.         0000h successful
  67834.         AX:BX -> ??? name
  67835.         FFFEh ??? error
  67836. --------E-2FFB42BX0012-----------------------
  67837. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67838.     AX = FB42h
  67839.     BX = 0012h
  67840.     CX = selector for ???
  67841. Return: CX = selector for ???
  67842. --------E-2FFB42BX0013-----------------------
  67843. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67844.     AX = FB42h
  67845.     BX = 0013h
  67846.     CX = selector of DPMILOAD data (see #1668)
  67847.     DX = 1-based index of ???
  67848. Return: CX = status (0000h,0002h,FFF9h) (see also #1667)
  67849.         0000h successful
  67850.         BX = ??? or 0000h
  67851.         FFF9h ??? error
  67852. --------E-2FFB42BX0014-----------------------
  67853. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
  67854.     AX = FB42h
  67855.     BX = 0014h
  67856.     CX = 0001h
  67857. Return: BX = 0000h if installed
  67858. Note:    unlike most of the DPMILOAD functions, this call is available only in
  67859.       real or V86 mode
  67860. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
  67861. --------E-2FFB42BX0015-----------------------
  67862. INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
  67863.     AX = FB42h
  67864.     BX = 0015h
  67865.     CX = 0001h
  67866. Return: ???
  67867. Note:    unlike most of the DPMILOAD functions, this call is available only in
  67868.       real or V86 mode
  67869. SeeAlso: AX=FB42h/BX=000Ah
  67870. --------E-2FFB42BX0016-----------------------
  67871. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  67872.     AX = FB42h
  67873.     BX = 0016h
  67874.     CX = selector of DPMILOAD data (see #1668)
  67875. Return: DX = status (see also AX=FB42h/BX=0004h)
  67876.         0000h successful
  67877.         CX = ???
  67878. --------E-2FFB42BX0017-----------------------
  67879. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67880.     AX = FB42h
  67881.     BX = 0017h
  67882.     CX = ???
  67883.     DX = ???
  67884.     ???
  67885. Return: DX = status (0000h,0001h) (see #1667)
  67886. --------E-2FFB42BX0018-----------------------
  67887. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
  67888.     AX = FB42h
  67889.     BX = 0018h
  67890.     CX = ???
  67891. --------E-2FFB42BX0019-----------------------
  67892. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67893.     AX = FB42h
  67894.     BX = 0019h
  67895.     CX = selector for ???
  67896.     ???
  67897. Return: DX = status (see also AX=FB42h/BX=0004h)
  67898.         0000h successful
  67899.         CX = selector for ???
  67900. --------E-2FFB42BX001A-----------------------
  67901. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67902.     AX = FB42h
  67903.     BX = 001Ah
  67904.     CX = selector for ???
  67905.     ???
  67906. Return: DX = status (see also AX=FB42h/BX=0004h)
  67907.         0000h successful
  67908.         0004h failed
  67909.     CX:BX -> ???
  67910. --------E-2FFB42BX001B-----------------------
  67911. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67912.     AX = FB42h
  67913.     BX = 001Bh
  67914.     CX = selector of DPMILOAD data (see #1668)
  67915.     DX = offset of ???
  67916. Return: DX = status (0000h,0002h) (see also #1667)
  67917.         0000h successful
  67918.         BX = selector for ???
  67919.         CX = selector for ???
  67920. --------E-2FFB42BX001C-----------------------
  67921. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67922.     AX = FB42h
  67923.     BX = 001Ch
  67924.     ES = selector for DPMILOAD data (see #1668)
  67925.     CX = 1-based index of ???
  67926.     DX = 1-based index of ???
  67927. Return: DX = status (0000h,0002h,FFF9h) (see #1667)
  67928. --------E-2FFB42BX001D-----------------------
  67929. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  67930.     AX = FB42h
  67931.     BX = 001Dh
  67932. Return: CX:DX = ???
  67933. --------E-2FFB42BX001E-----------------------
  67934. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  67935.     AX = FB42h
  67936.     BX = 001Eh
  67937.     CX = ???
  67938.     ???
  67939. Return: DX = status (see also AX=FB42h/BX=0004h)
  67940.         0000h successful
  67941.         FFF7h ??? error
  67942.     CX:BX -> ???
  67943. --------E-2FFB42BX001F-----------------------
  67944. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
  67945.     AX = FB42h
  67946.     BX = 001Fh
  67947.     DS:DX -> 8-character name of ???
  67948.     ???
  67949. Return: CX = selector of DPMILOAD data (see #1668) for ???
  67950.         0000h on error
  67951. SeeAlso: AX=FB42h/BX=000Eh
  67952. --------E-2FFB42BX0020-----------------------
  67953. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
  67954.     AX = FB42h
  67955.     BX = 0020h
  67956. Return: DX = ??? (always 0000h)
  67957. --------E-2FFB42BX0021-----------------------
  67958. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
  67959.     AX = FB42h
  67960.     BX = 0021h
  67961.     CL = exception number (00h-1Fh)
  67962. Return: DX = status (see also AX=FB42h/BX=0004h)
  67963.         0000h successful
  67964.         AX:BX = selector:offset of handler
  67965.         FFF2h unable to get exception handler vector
  67966. SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
  67967. --------E-2FFB42BX0022-----------------------
  67968. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
  67969.     AX = FB42h
  67970.     BX = 0022h
  67971.     CL = exception number (00h-1Fh)
  67972.     SI:DX = selector:offset of new handler
  67973. Return: DX = status (0000h,0004h,FFF2h) (see #1667)
  67974. SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
  67975. --------E-2FFB42BX0023-----------------------
  67976. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
  67977.     AX = FB42h
  67978.     BX = 0023h
  67979.     CX = selector
  67980. Return: DX = status (see also AX=FB42h/BX=0004h)
  67981.         0000h successful
  67982.         CX = real-mode segment number
  67983.         FFF2h descriptor has invalid base address for real-mode segment
  67984. SeeAlso: AX=FB42h/BX=0010h
  67985. --------E-2FFB42BX0024-----------------------
  67986. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
  67987.     AX = FB42h
  67988.     BX = 0024h
  67989.     CL = interrupt number
  67990. Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
  67991.     AX:BX = selector:offset of handler
  67992. SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
  67993. --------E-2FFB42BX0025-----------------------
  67994. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
  67995.     AX = FB42h
  67996.     BX = 0025h
  67997.     CL = interrupt number
  67998.     SI:DX = selector:offset of new handler
  67999. Return: DX = status (0000h,0004h,FFF2h) (see #1667)
  68000. SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
  68001. --------E-2FFB42BX0026-----------------------
  68002. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
  68003.     AX = FB42h
  68004.     BX = 0026h
  68005.     CX = selector of DPMILOAD data (see #1668)
  68006.     DX = 1-based index of ???
  68007.     ???
  68008. Return: DX = status (0000h,0002h,FFF9h) (see #1667)
  68009.         0000h successful
  68010.         BX = offset of ??? within data structure
  68011. --------E-2FFB42BX0027-----------------------
  68012. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
  68013.     AX = FB42h
  68014.     BX = 0027h
  68015.     CX = selector of DPMILOAD data (see #1668)
  68016.     DX = offset of ???
  68017. Return: DX = status (see also AX=FB42h/BX=0004h)
  68018.         0000h successful
  68019.         BX = ???
  68020. --------E-2FFB42BX0080-----------------------
  68021. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  68022.     AX = FB42h
  68023.     BX = 0080h
  68024.     ???
  68025. Return: AX = ???
  68026.     ???
  68027. --------E-2FFB42BX0081-----------------------
  68028. INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
  68029.     AX = FB42h
  68030.     BX = 0081h
  68031.     ???
  68032. Return: AX = ???
  68033.     ???
  68034. --------E-2FFB42BX1001-----------------------
  68035. INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
  68036.     AX = FB42h
  68037.     BX = 1001h
  68038. Return: BX = 0000h
  68039. SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
  68040. --------E-2FFB42BX1002-----------------------
  68041. INT 2F U - Borland RTM.EXE 1.0 - ???
  68042.     AX = FB42h
  68043.     BX = 1002h
  68044.     ???
  68045. Return: ???
  68046. SeeAlso: AX=FB42h/BX=1001h
  68047. --------E-2FFB42BX1003-----------------------
  68048. INT 2F U - Borland RTM.EXE 1.0 - ???
  68049.     AX = FB42h
  68050.     BX = 1003h
  68051.     ???
  68052. Return: ???
  68053. SeeAlso: AX=FB42h/BX=1001h
  68054. --------E-2FFB43-----------------------------
  68055. INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
  68056.     AX = FB43h
  68057.     BX = subfunction (at least 0000h-000Eh)
  68058. Notes:    this function is only present in protected mode; it does nothing but
  68059.       an immediate IRET
  68060.     DPMILOAD.EXE itself calls various subfunctions:
  68061.         subfunction 0004h is called with CX=selector of ???, DI=selector
  68062.           of DPMILOAD data
  68063.         subfunction 0008h is called with CX=selector of DPMILOAD data
  68064. SeeAlso: AX=FB42h/BX=0001h
  68065. --------G-2FFB43BX0100-----------------------
  68066. INT 2F PU - Borland TDX - INSTALLATION CHECK
  68067.     AX = FB43h
  68068.     BX = 0100h
  68069. Return: BX = FB43h if loaded
  68070. Program: TDX is Borland's Turbo Debugger variant for DPMI programs
  68071. Note:    Borland Pascal 7 DPMI programs use this call to check whether they
  68072.       should install their own stack and general protection exception
  68073.       handlers, or allow TDX to handle those exceptions
  68074. --------a-2FFB64-----------------------------
  68075. INT 2F U - AutoBraille v1.1A - GET ???
  68076.     AX = FB64h
  68077. Return: AX = ??? (0006h seen)
  68078. Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
  68079. --------E-2FFBA1BX0081-----------------------
  68080. INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
  68081.     AX = FBA1h
  68082.     BX = 0081h
  68083.     ES:DI -> 16-byte buffer
  68084. Return: if installed, first four bytes of ES:DI buffer are "IABH"
  68085. Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
  68086. Note:    TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
  68087.       extender was moved into DPMILOAD.
  68088. SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
  68089. SeeAlso: INT 21/AX=4403h"TKERNEL"
  68090. --------E-2FFBA1BX0082-----------------------
  68091. INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
  68092.     AX = FBA1h
  68093.     BX = 0082h
  68094.     ES:DI -> response buffer (see #1672)
  68095. Return: ES:DI buffer filled
  68096. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  68097.  
  68098. Format of TKERNEL response buffer:
  68099. Offset    Size    Description    (Table 1672)
  68100.  00h  4 BYTEs    signature "IABH"
  68101.  04h    DWORD    pointer to FAR extender entry point (see #1673)
  68102.  
  68103. (Table 1673)
  68104. Call TKERNEL entry point with:
  68105.     AX = function number
  68106.         0000h initialize???
  68107.         STACK:    WORD  ???
  68108.         Return: AX = status???
  68109.             STACK unchanged
  68110.         0001h get version???
  68111.         Return: AX = 0200h for v2.0.34
  68112.         0002h get ???
  68113.         Return: AX = ??? (011Eh or 0182h seen)
  68114.         0003h load protected-mode executable
  68115.         STACK:    DWORD -> ASCIZ filename of executable
  68116.             DWORD    ???
  68117.             DWORD -> program arguments (counted string plus CR)
  68118.             DWORD -> environment for protected-mode executable
  68119.                 (terminated with two consecutive NULs)
  68120.             DWORD -> WORD buffer for ???
  68121.         Return: AX = status???
  68122.             STACK unchanged
  68123.         0004h get descriptor
  68124.         STACK:    WORD    selector for which to get descriptor
  68125.             WORD    segment number (when running in real mode)
  68126.             DWORD -> buffer for descriptor
  68127.         Return: CF clear if successful
  68128.                 buffer filled
  68129.             CF set on error
  68130.                 AX destroyed???
  68131.             STACK unchanged
  68132.         0005h ???
  68133.         STACK:    WORD    selector for ???
  68134.             WORD    subfunction number???
  68135.                 0000h run previously-loaded program???
  68136.                 0001h ??? (similar to 0000h)
  68137.                 0002h
  68138.                 0003h
  68139.                 0005h ??? (similar to 0000h and 0001h)
  68140.         Return: AX = status???
  68141.             STACK unchanged
  68142.         0006h ???
  68143.         STACK:    WORD ???
  68144.             DWORD -> WORD (call) max iterations of ???
  68145.                       (return) remaining iterations
  68146.         Return: AX = ???
  68147.             STACK unchanged
  68148.         0007h unused
  68149.         Return: AX = 0001h
  68150.         0008h unused
  68151.         Return: AX = 0001h
  68152.         0009h copy protected-mode memory into conventional memory
  68153.         STACK:    WORD    selector for source segment
  68154.             WORD    segment of source if in real mode???
  68155.             DWORD    offset of source
  68156.             WORD    number of bytes to copy
  68157.             DWORD -> low-memory destination
  68158.         Return: AX = status
  68159.             STACK unchanged
  68160.         000Ah copy conventional memory into protected-mode memory
  68161.         STACK:    WORD    selector for destination segment
  68162.             WORD    segment of destination if in real mode???
  68163.             DWORD    offset of destination
  68164.             WORD    number of bytes to copy
  68165.             DWORD -> low-memory source
  68166.         Return: AX = status
  68167.             STACK unchanged
  68168.         000Bh get ??? pointers
  68169.         STACK:    WORD desired pointer
  68170.                 0000h get ???
  68171.                 0002h get protected-mode CR3
  68172.                 0003h get 4K page table buffer pointer
  68173.                 else Return: DX:AX = FFFFh:FFFFh
  68174.         Return: DX:AX = requested pointer
  68175.             STACK unchanged
  68176.         000Ch set ??? pointers
  68177.         STACK:    WORD desired pointer
  68178.                 0000h set ???
  68179.                 0002h set protected-mode CR3
  68180.                 0003h set 4K page table buffer pointer
  68181.                 else ignore
  68182.             DWORD new value for pointer
  68183.         Return: STACK unchanged
  68184.         000Dh get ??? pointers
  68185.         STACK:    WORD desired pointer
  68186.                 0000h get ???
  68187.                 0001h get ???
  68188.                 0002h get ???
  68189.                 0003h get ???
  68190.                 0004h get ???
  68191.                 0005h get ???
  68192.                 0006h get ???
  68193.                 0007h get ???
  68194.                 else Return: DX:AX = FFFFh:FFFFh
  68195.         Return: DX:AX = desired pointer
  68196.             STACK unchanged
  68197.         000Eh set ??? pointer
  68198.         STACK:    WORD desired pointer
  68199.                 0000h set ???
  68200.                 0001h set ???
  68201.                 0002h set ???
  68202.                 0003h set ???
  68203.                 0004h set ???
  68204.                 0005h set ???
  68205.                 0006h set ???
  68206.                 0007h set ???
  68207.                 else Return: DX:AX = FFFFh:FFFFh
  68208.         Return: STACK unchanged
  68209.         000Fh get ???
  68210.         Return: AX = ??? (seen 0008h)
  68211.         0010h get ???
  68212.         Return: AX = ???
  68213.         0011h determine whether selector is valid
  68214.         STACK:    WORD    possible selector
  68215.         Return: AX = selector or 0000h if invalid
  68216.             STACK unchanged
  68217.         0012h get physical address
  68218.         STACK:    WORD    selector for desired segment
  68219.             WORD    segment number if in real mode
  68220.             DWORD    offset within segment
  68221.         Return: DX:AX = 32-bit physical address or 00000000h on error
  68222.             BX destroyed
  68223.             STACK unchanged
  68224.         0013h ???
  68225.         Note:    normally jumps to code for function 0012h
  68226.         0014h copy protected-mode memory to conventional memory, with ???
  68227.         STACK:    WORD    selector for source segment
  68228.             WORD    segment of source if in real mode???
  68229.             DWORD    offset of source
  68230.             WORD    number of bytes to copy
  68231.             DWORD -> low-memory destination
  68232.         Return: AX = status???
  68233.             STACK unchanged
  68234.         0015h copy conventional memory to protected-mode memory, with ???
  68235.         STACK:    WORD    selector for destination segment
  68236.             WORD    segment of destination if in real mode???
  68237.             DWORD    offset of destination
  68238.             WORD    number of bytes to copy
  68239.             DWORD -> low-memory source
  68240.         Return: AX = status???
  68241.             STACK unchanged
  68242.         0016h set ??? pointer
  68243.         STACK:    WORD    unused
  68244.             DWORD -> ??? or 0000h:0000h
  68245.         Return: AX = 0000h
  68246.             STACK unchanged
  68247.         0017h allocate real-mode procedure???
  68248.         STACK:    DWORD    ASCIZ name of procedure
  68249.             DWORD ???
  68250.             DWORD    address of subroutine to invoke
  68251.         Return: AX = status
  68252.                 0032h procedure by that name exists
  68253.                 0033h no more real-mode procedures available
  68254.             DX destroyed
  68255.             STACK unchanged
  68256.         0018h unused
  68257.         Return: AX = 0001h
  68258.         0019h get parameter block
  68259.         Return: DX:AX -> parameter block (format unknown at this time,
  68260.                   but 92h bytes)
  68261.                   (preceded by signature "!!PARAM-BLOCK!!")
  68262.         001Ah get ???
  68263.         Return: AX = ??? (0148h seen)
  68264.         001Bh free real-mode procedure???
  68265.         STACK:    DWORD -> ASCIZ name of procedure
  68266.         Return: ???
  68267.             STACK unchanged
  68268.         001Ch check whether packets from protected mode task pending
  68269.         Return: AX = 0001h if packets pending, 0000h if not
  68270.         001Dh set ???
  68271.         STACK:    DWORD ??? or 0000h:0000h
  68272.         Return: AX,BX destroyed
  68273.             STACK unchanged
  68274.         001Eh ???
  68275.         STACK:    WORD ??? (high byte ignored)
  68276.             DWORD -> data structure (see below)
  68277.         Return: AX,BX,CX,DX destroyed
  68278.             data structure updated
  68279.             STACK unchanged
  68280.         Format of data structure:
  68281.         Offset    Size    Description
  68282.          00h  2 BYTEs    unused
  68283.          02h    WORD    ???
  68284.          04h    WORD    ???
  68285.          06h    WORD    ???
  68286.          08h  2 BYTEs    unused
  68287.          0Ah    WORD    ???
  68288.          0Ch    WORD    (call) ???
  68289.                 (return) offset of this data structure (BUG?)
  68290.         001Fh set ???
  68291.         STACK:    WORD ??? (set to 0001h if zero)
  68292.         Return: AX destroyed
  68293.             STACK unchanged
  68294.         0020h ???
  68295.         STACK:    DWORD -> ??? (8 bytes of data)
  68296.         Return: AX = ???
  68297.             STACK unchanged
  68298.         0021h ???
  68299.         STACK:    DWORD -> ??? (8 bytes of data)
  68300.             WORD    ???
  68301.             WORD    ???
  68302.         Return: AX = ???
  68303.             STACK unchanged
  68304.         0022h ???
  68305.         STACK:    DWORD -> ??? (8 bytes of data)
  68306.             DWORD -> 4-byte buffer for results
  68307.         Return: AX = ???
  68308.             STACK unchanged
  68309.         0023h ???
  68310.         STACK:    DWORD -> ??? (8 bytes of data)
  68311.         Return: AX = ???
  68312.             STACK unchanged
  68313.         0024h set ???
  68314.         STACK:    WORD ???
  68315.         Return: AX destroyed
  68316.             STACK unchanged
  68317.         0025h get ???
  68318.         Return: AX = ??? (value set with func 0024h)
  68319.         0026h BUG: jumps to hyperspace due to fencepost error
  68320.         FFFFh set DOS memory management functions
  68321.         BX:SI -> FAR routine for allocating DOS memory
  68322.               (called with AH=48h,BX=number of paragraphs to alloc;
  68323.               returns CF clear, AX=segment of allocated memory, or
  68324.                   CF set on error)
  68325.         CX:DI -> FAR routine for freeing DOS memory
  68326.               (called with AH=49h,ES=segment of block to free;
  68327.               returns CF set on error, AX=error code)
  68328.         Note: each of these pointers normally points at INT 21/RETF
  68329.         other Return: AX = 0001h
  68330. Note:    BX may be destroyed by any of the API calls
  68331. --------E-2FFBA1BX0084-----------------------
  68332. INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
  68333.     AX = FBA1h
  68334.     BX = 0084h
  68335.     ES:DI -> response buffer (see #1674)
  68336. Return: ES:DI buffer filled
  68337. SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
  68338.  
  68339. Format of TKERNEL response buffer:
  68340. Offset    Size    Description    (Table 1674)
  68341.  00h  4 BYTEs    signature "IABH"
  68342.  04h    WORD    success indicator
  68343.         0001h failed (INT 2F hooked by another program)
  68344.         unchanged if successful
  68345.  06h    WORD    segment of ???
  68346.  08h    WORD    segment of ??? memory block to free if nonzero
  68347.  0Ah    WORD    segment of ??? memory block to free if nonzero
  68348. --------s-2FFBFBES0000-----------------------
  68349. INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
  68350.     AX = FBFBh
  68351.     ES = 0000h
  68352. Return: ES nonzero if installed
  68353.         ES:BX -> entry point data structure (see #1675)
  68354. SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
  68355.  
  68356. Format of SoundBlaster entry point data structure:
  68357. Offset    Size    Description    (Table 1675)
  68358.  00h  3 BYTEs    signature "FB "
  68359.  03h    BYTE    driver major version number???
  68360.  04h    DWORD    speech driver entry point (see #1676)
  68361.  08h 24 BYTEs    ???
  68362.  20h  ? BYTEs    data buffer for calling speech driver
  68363.  
  68364. (Table 1676)
  68365. Call SoundBlaster speech driver entry point with:
  68366.     AL = function
  68367.         07h speak a string
  68368.         data buffer (see #1675) contains:
  68369.             BYTE  length of string
  68370.               N BYTEs string to speak
  68371. --------N-2FFE00BX4454-----------------------
  68372. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  68373.     AX = FE00h
  68374.     BX = 4454h ("DT")
  68375.     CX = 4B52h ("KR")
  68376.     DX = 4E4Dh ("NM")
  68377. Return: AL = FFh if installed
  68378.        BX = 524Eh ("RM")
  68379.        CX = 4D44h ("MD")
  68380.        DX = 544Bh ("TK")
  68381. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  68382. SeeAlso: AX=FE08h
  68383. --------N-2FFE00BX4454-----------------------
  68384. INT 2F - PC-NFS ??? - INSTALLATION CHECK
  68385.     AX = FE00h
  68386.     BX = 4454h ("DT")
  68387.     CX = 4B52h ("KR")
  68388.     DX = 544Dh ("TM")
  68389. Return: AL = FFh if installed
  68390.        BX = 5254h ("RT")
  68391.        CX = 4D44h ("MD")
  68392.        DX = 544Bh ("TK")
  68393. Note:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  68394. SeeAlso: AX=FE08h
  68395. --------U-2FFE00DI4E55-----------------------
  68396. INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
  68397.     AX = FE00h
  68398.     DI = 4E55h ("NU")
  68399.     SI = TSR identifier (see #1677)
  68400. Return: SI = TSR reply
  68401.         lowercase version of SI on entry (i.e. SI OR 2020h)
  68402.     AH = status
  68403.         00h installed but disabled internally
  68404.         01h installed and enabled
  68405.     AL = installed product
  68406.         00h NCACHE-x or DISKREET
  68407.         01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
  68408.         02h NCACHE2 / SMARTCAN
  68409.         45h DISKMON v5 installed
  68410.     BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
  68411.           (see #1678,#1679)
  68412.     CX = segment of resident portion
  68413.         FFFFh if completely loaded high (NCACHE)
  68414. ---FILESAVE/EP---
  68415.     DL = ??? (apparently always 00h)
  68416. ---DISKMON---
  68417.     DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
  68418. Notes:    the value returned in CX is incorrect for NCACHE 6.00
  68419.     all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
  68420.     NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
  68421. SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
  68422. SeeAlso: INT 21/AX=4402h"SMARTDRV"
  68423.  
  68424. (Table 1677)
  68425. Values for Norton Utilities TSR identifier:
  68426.  4346h    ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
  68427.  4353h    ("CS") NCACHE-S (v5 only)
  68428.  4443h    ("DC") DISKREET
  68429.  444Dh    ("DM") DISKMON
  68430.  4653h    ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
  68431.  
  68432. Format of DISKMON.INI file:
  68433. Offset    Size    Description    (Table 1678)
  68434. -6Ch 108 BYTEs    (in memory copy only)
  68435.         list of filenames which are always protected:
  68436.           IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
  68437.           MIO.SYS/IO.BIN, COMMAND.COM
  68438.  00h    BYTE    ??? always 01h
  68439.  01h    BYTE    disk light (00h off, 01h on)
  68440.  02h    BYTE    disk protection (00h off, 01h on)
  68441.  03h    BYTE    protected areas
  68442.         01h system area
  68443.         02h files
  68444.         03h system area and files
  68445.         04h entire disk
  68446.  04h    BYTE    floppy access (00h not allowed, 01h allowed)
  68447.  05h 27 BYTEs    filename extension list (9 entries)
  68448.         (lowercase, blank padded or = 000000h)
  68449.  20h 240 BYTEs    filename list (20 entries)
  68450.         (lowercase, name and extension blank padded, with '.')
  68451. Note:    CX:0508h -> copy in installed TSR (v5)
  68452.     CX:052Fh -> copy in installed TSR (v6)
  68453.     CX:04E0h -> copy in installed TSR (v7-v8)
  68454.  
  68455. Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
  68456. Offset    Size    Description    (Table 1679)
  68457.  00h 26 BITs    drive list (bit set: file protection on, cleared: off):
  68458.  00h    BYTE    drives    A: - H:
  68459.  01h    BYTE    drives    I: - P:
  68460.  02h    BYTE    drives    Q: - X:
  68461.  03h    BYTE    drives    Y: - Z:
  68462.  04h    BYTE    which files to protect
  68463.         00h all files
  68464.         01h all files with extension in list
  68465.         02h all files except those with extension in list
  68466.  05h 27 BYTEs    filename extension list (9 entries, uppercase, ASCIZ)
  68467.  20h    BYTE    include files with archive bit clear (00h no, 01h yes)
  68468.  21h    WORD    number of days after which files are purged (0 = never)
  68469.  23h    WORD    max kilobytes of erased file space to hold (0 = all)
  68470. Note:    CX:03D2h -> copy in installed TSR (v5)
  68471.     CX:03F5h -> copy in installed TSR (v6)
  68472.     CX:0434h -> copy in installed TSR (v7-v8)
  68473. --------U-2FFE01DI4E55-----------------------
  68474. INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
  68475.     AX = FE01h
  68476.     DI = 4E55h ("NU")
  68477.     SI = TSR identifier (see #1677)
  68478. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  68479.     AX = status
  68480.         0002h successful (DISKMON, FILESAVE, EP)
  68481.         FE00h successful (NCACHE-x, DISKREET)
  68482. Notes:    if the enable/disable calls are used on DISKMON or NCACHE-x, the status
  68483.       report generated by the programs still indicates the previous state,
  68484.       and DISKMON.INI is not updated
  68485.     apparently has no effect on DISKREET
  68486. SeeAlso: AX=FE00h,AX=FE02h
  68487. --------U-2FFE02DI4E55-----------------------
  68488. INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
  68489.     AX = FE02h
  68490.     DI = 4E55h ("NU")
  68491.     SI = TSR identifier (see #1677)
  68492. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  68493.     AX = status
  68494.         0004h successful (DISKMON, FILESAVE)
  68495.         FE00h successful (NCACHE-x, DISKREET)
  68496. Notes:    (see also AX=FE01h)
  68497.     this function appears to be unsafe, as the cache buffers are not
  68498.       flushed
  68499. SeeAlso: AX=FE00h,AX=FE01h
  68500. --------U-2FFE03DI4E55-----------------------
  68501. INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
  68502.     AX = FE03h
  68503.     DI = 4E55h ("NU")
  68504.     SI = TSR identifier (see #1677)
  68505. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
  68506.     AX = status
  68507.         0006h successful???
  68508. Notes:    only supported by DISKMON, FILESAVE, and NCACHE-x
  68509.     useful for flushing NCACHE before rebooting
  68510. SeeAlso: AX=FE00h,AX=FE10h
  68511. --------U-2FFE04DI4E55-----------------------
  68512. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  68513.     AX = FE04h
  68514.     DI = 4E55h ("NU")
  68515.     SI = TSR identifier (see #1677)
  68516. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  68517.     AX = status
  68518.         0008h successful???
  68519. SeeAlso: AX=FE00h
  68520. --------U-2FFE05DI4E55-----------------------
  68521. INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
  68522.     AX = FE05h
  68523.     DI = 4E55h ("NU")
  68524.     SI = TSR identifier (see #1677)
  68525. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  68526.     AX = status
  68527.         000Ah successful???
  68528. Note:    reportedly dangerous
  68529. SeeAlso: AX=FE00h
  68530. --------N-2FFE08-----------------------------
  68531. INT 2F - PC-NFS ??? - GET ???
  68532.     AX = FE08h
  68533. Return: ES:BX -> ???
  68534. Notes:    DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
  68535.     both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
  68536.       to AX=FE00h/DX=544Dh support this function
  68537. SeeAlso: AX=FE00h/BX=4454h
  68538. --------U-2FFE10DI4E55-----------------------
  68539. INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
  68540.     AX = FE10h
  68541.     DI = 4E55h ("NU")
  68542.     SI = TSR identifier (see #1677)
  68543. Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
  68544.     AX = status
  68545. Note:    probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
  68546.       detected
  68547. SeeAlso: AX=FE03h
  68548. --------N-2FFF00-----------------------------
  68549. INT 2F - Topware Network Operating System - INSTALLATION CHECK
  68550.     AX = FF00h
  68551. Return: AL = status
  68552.         00h not installed, OK to install
  68553.         01h not installed, not OK to install
  68554.         FFh installed
  68555. SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
  68556. --------N-2FFF01-----------------------------
  68557. INT 2F - Topware Network Operating System - GET VERSION
  68558.     AX = FF01h
  68559. Return: AX = version
  68560. SeeAlso: AX=FF00h,AX=FF02h
  68561. --------N-2FFF02-----------------------------
  68562. INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
  68563.     AX = FF02h
  68564. Return: ES:BX -> version string
  68565. SeeAlso: AX=FF00h,AX=FF01h
  68566. --------N-2FFF10-----------------------------
  68567. INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
  68568.     AX = FF10h
  68569. Return: AL = status (00h not installed, 01h installed)
  68570. SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
  68571. --------N-2FFF11-----------------------------
  68572. INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
  68573.     AX = FF11h
  68574. Note:    this function is only available on workstations, not on the server
  68575. SeeAlso: AX=FF10h,AX=FF12h
  68576. --------N-2FFF12-----------------------------
  68577. INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
  68578.     AX = FF12h
  68579. Note:    this function is only available on workstations, not on the server
  68580. SeeAlso: AX=FF10h,AX=FF11h
  68581. --------N-2FFF13-----------------------------
  68582. INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
  68583.     AX = FF13h
  68584.     CL = new state (00h off, 01h on)
  68585. SeeAlso: AX=FF10h
  68586. --------N-2FFF14-----------------------------
  68587. INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
  68588.     AX = FF14h
  68589. Note:    this function is only available on workstations, not on the server
  68590. SeeAlso: AX=FF10h,AX=FF15h
  68591. --------N-2FFF15-----------------------------
  68592. INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
  68593.     AX = FF15h
  68594. Note:    this function is only available on workstations, not on the server
  68595. SeeAlso: AX=FF10h,AX=FF14h
  68596. --------N-2FFF16-----------------------------
  68597. INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
  68598.     AX = FF16h
  68599.     BL = which to set (00h TopShow, FFh TopTerm)
  68600.     CX = destination screen
  68601.         0000h all stations
  68602.         0000h-00FFh (TopTerm only) send to group CL
  68603.         8001h-80FEh send to station CL
  68604. SeeAlso: AX=FF18h
  68605. --------N-2FFF18-----------------------------
  68606. INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
  68607.     AX = FF18h
  68608. SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
  68609. --------N-2FFF23-----------------------------
  68610. INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
  68611.     AX = FF23h
  68612. SeeAlso: AX=FF00h
  68613. --------N-2FFF27-----------------------------
  68614. INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
  68615.     AX = FF27h
  68616. Return: AL = type (00h complete version, 01h simple version)
  68617.     BL = "show" functions flag (00h disabled, 01h enabled)
  68618. SeeAlso: AX=FF16h,AX=FF18h
  68619. --------!---Section--------------------------
  68620. Interrupt List, part 9 of 12
  68621. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  68622. --------D-30---------------------------------
  68623. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  68624.    the CALL 5 entry point does a FAR jump to here
  68625. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  68626.       memory
  68627. SeeAlso: INT 21/AH=26h
  68628. --------D-31---------------------------------
  68629. INT 31 - overwritten by CP/M jump instruction in INT 30
  68630. --------v-31---------------------------------
  68631. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  68632. Note:    if one of the Vacsina viruses is resident, the low byte of this
  68633.       interrupt still contains the last byte of the INT 30 CP/M JMP
  68634.       instruction, but the remaining three bytes are 7Fh 39h followed
  68635.       by the Vacsina version number
  68636. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  68637. --------E-310000-----------------------------
  68638. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  68639.     AX = 0000h
  68640.     CX = number of descriptors to allocate
  68641. Return: CF clear if successful
  68642.         AX = base selector
  68643.     CF set on error
  68644.         AX = error code (DPMI 1.0+) (see #1680)
  68645. Notes:    DPMI is the DOS Protected-Mode Interface
  68646.     the base and limit of the returned descriptors will be 0, and the type
  68647.       will be "data"
  68648.     add the value returned by INT 31/AX=0003h to move to subsequent
  68649.       descriptors if multiple descriptors were allocated
  68650.     not supported by MS Windows 3.0 in Standard mode
  68651. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  68652.  
  68653. (Table 1680)
  68654. Values for DPMI 1.0 error code:
  68655.  0000h-7FFFh DOS error passed through by DPMI
  68656.  8001h    unsupported function
  68657.  8002h    object in wrong state for function
  68658.  8003h    system integrity would be endangered
  68659.  8004h    deadlock detected
  68660.  8005h    pending serialization request cancelled
  68661.  8010h    out of DPMI internal resources
  68662.  8011h    descriptor unavailable
  68663.  8012h    linear memory unavailable
  68664.  8013h    physical memory unavailable
  68665.  8014h    backing store unavailable
  68666.  8015h    callback unavailable
  68667.  8016h    handle unavailable
  68668.  8017h    maximum lock count exceeded
  68669.  8018h    shared memory already serialized exclusively by another
  68670.  8019h    shared memory already serialized shared by another client
  68671.  8021h    invalid value for numeric or flag parameter
  68672.  8022h    invalid segment selector
  68673.  8023h    invalid handle
  68674.  8024h    invalid callback
  68675.  8025h    invalid linear address
  68676.  8026h    request not supported by hardware
  68677. --------E-310001-----------------------------
  68678. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  68679.     AX = 0001h
  68680.     BX = selector to free
  68681. Return: CF clear if successful
  68682.     CF set on error
  68683.         AX = error code (DPMI 1.0+) (8022h) (see #1680)
  68684. Notes:    only one descriptor is freed per call
  68685.     the program's initial CS, DS, and SS descriptors may be freed
  68686.     (DPMI 1.0+) any segment registers containing the freed selector are
  68687.       set to 0000h
  68688.     not supported by MS Windows 3.0 in Standard mode
  68689. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  68690. --------E-310002-----------------------------
  68691. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  68692.     AX = 0002h
  68693.     BX = real mode segment
  68694. Return: CF clear if successful
  68695.         AX = selector corresponding to real mode segment (64K limit)
  68696.     CF set on error
  68697.         AX = error code (DPMI 1.0+) (8011h) (see #1680)
  68698. Notes:    multiple calls for the same real mode segment return the same selector
  68699.     the returned descriptor can never be modified or freed
  68700.     not supported by MS Windows 3.0 in Standard mode
  68701. --------E-310003-----------------------------
  68702. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  68703.     AX = 0003h
  68704. Return: CF clear
  68705.         AX = value to add to get next sequential selector
  68706. Notes:    the increment will be a power of two
  68707.     not supported by MS Windows 3.0 in Standard mode
  68708. SeeAlso: AX=0000h
  68709. --------E-310004-----------------------------
  68710. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  68711.     AX = 0004h
  68712.     BX = selector to lock (prevent paging)
  68713. Return: ???
  68714. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  68715.       specification, this function is called by MS Windows TASKMAN,
  68716.       PROGMAN, and KERNEL
  68717. SeeAlso: AX=0005h,AX=0600h
  68718. --------E-310005-----------------------------
  68719. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  68720.     AX = 0005h
  68721.     BX = selector to unlock (permit paging)
  68722. Return: ???
  68723. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  68724.       specification, this function is called by MS Windows TASKMAN,
  68725.       PROGMAN, and KERNEL
  68726. SeeAlso: AX=0004h,AX=0601h
  68727. --------E-310006-----------------------------
  68728. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  68729.     AX = 0006h
  68730.     BX = selector
  68731. Return: CF clear if successful
  68732.         CX:DX = linear base address of segment
  68733.     CF set on error
  68734.         AX = error code (DPMI 1.0+) (8022h) (see #1680)
  68735. Note:    not supported by MS Windows 3.0 in Standard mode
  68736. SeeAlso: AX=0007h,INT 21/AX=3504h
  68737. --------E-310007-----------------------------
  68738. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  68739.     AX = 0007h
  68740.     BX = selector
  68741.     CX:DX = linear base address
  68742. Return: CF clear if successful
  68743.     CF set on error
  68744.         AX = error code (DPMI 1.0+) (8022h,8025h) (see #1680)
  68745. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  68746.     only the low 24 bits of the address will be used by 16-bit DPMI
  68747.       implementations even on a 386 or higher
  68748.     DPMI 1.0+ automatically reloads any segment registers containing the
  68749.       selector being modified
  68750.     not supported by MS Windows 3.0 in Standard mode
  68751. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  68752. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  68753. --------E-310008-----------------------------
  68754. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  68755.     AX = 0008h
  68756.     BX = selector
  68757.     CX:DX = segment limit
  68758. Return: CF clear if successful
  68759.     CF set on error
  68760.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1680)
  68761. Notes:    CX must be zero for 16-bit DPMI implementations
  68762.     limits greater than 1MB must be page aligned (low 12 bits set)
  68763.     only modify descriptors allocated with INT 31/AX=0000h
  68764.     DPMI 1.0+ automatically reloads any segment registers containing the
  68765.       selector being modified
  68766.     not supported by MS Windows 3.0 in Standard mode
  68767. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  68768. SeeAlso: INT 2C/AX=0003h
  68769. --------E-310009-----------------------------
  68770. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  68771.     AX = 0009h
  68772.     BX = selector
  68773.     CL = access rights/type byte
  68774.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  68775. Return: CF clear if successful
  68776.     CF set on error
  68777.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1680)
  68778. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  68779.     DPMI 1.0+ automatically reloads any segment registers containing the
  68780.       selector being modified
  68781.     not supported by MS Windows 3.0 in Standard mode
  68782. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  68783. SeeAlso: INT 2C/AX=0005h
  68784. --------E-31000A-----------------------------
  68785. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  68786.     AX = 000Ah
  68787.     BX = selector
  68788. Return: CF clear if successful
  68789.         AX = new data selector
  68790.     CF set on error
  68791.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1680)
  68792. Notes:    fails if selector in BX is not a code segment or is invalid
  68793.     use INT 31/AX=0001h to free new selector
  68794.     future changes to the original selector will not be reflected in the
  68795.       returned alias selector
  68796.     not supported by MS Windows 3.0 in Standard mode
  68797. SeeAlso: AX=0001h
  68798. --------E-31000B-----------------------------
  68799. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  68800.     AX = 000Bh
  68801.     BX = LDT selector
  68802.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  68803. Return: CF clear if successful
  68804.         buffer filled
  68805.     CF set on error
  68806.         AX = error code (DPMI 1.0+) (8022h) (see #1680)
  68807. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  68808.     not supported by MS Windows 3.0 in Standard mode
  68809. SeeAlso: AX=000Ch
  68810. --------E-31000C-----------------------------
  68811. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  68812.     AX = 000Ch
  68813.     BX = LDT selector
  68814.     ES:(E)DI -> 8-byte buffer containing descriptor
  68815. Return: CF clear if successful
  68816.     CF set on error
  68817.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #1680)
  68818. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  68819.     only modify descriptors allocated with INT 31/AX=0000h
  68820.     DPMI 1.0+ automatically reloads any segment registers containing the
  68821.       selector being modified
  68822.     not supported by MS Windows 3.0 in Standard mode
  68823. SeeAlso: AX=000Bh
  68824. --------E-31000D-----------------------------
  68825. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  68826.     AX = 000Dh
  68827.     BX = LDT selector
  68828. Return: CF clear if successful
  68829.         descriptor allocated
  68830.     CF set on error
  68831.         AX = error code (DPMI 1.0+) (8011h,8022h) (see #1680)
  68832. Notes:    free descriptor with INT 31/AX=0001h
  68833.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  68834.       some may already be in use by other applications under DPMI 0.9;
  68835.       DPMI 1.0 guarantees 16 descriptors per client
  68836.     not supported by MS Windows 3.0 in Standard mode
  68837. SeeAlso: AX=0000h,AX=0001h
  68838. --------E-31000E-----------------------------
  68839. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  68840.     AX = 000Eh
  68841.     CX = number of descriptors to copy
  68842.     ES:(E)DI -> descriptor buffer (see #1681)
  68843. Return: CF clear if successful
  68844.         descriptors copied
  68845.     CF set on error
  68846.         AX = error code (8022h) (see #1680)
  68847.         CX = number of descriptors successfully copied
  68848. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  68849.     if the function fails, the first CX descriptors are valid; the
  68850.       remainder are not modified
  68851. SeeAlso: AX=000Bh,AX=000Fh
  68852.  
  68853. Format of DPMI descriptor buffer entry (one per descriptor to get):
  68854. Offset    Size    Description    (Table 1681)
  68855.  00h    WORD    selector (set by client)
  68856.  02h    QWORD    descriptor (set by host)
  68857. --------E-31000F-----------------------------
  68858. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  68859.     AX = 000Fh
  68860.     CX = number of descriptors to copy
  68861.     ES:(E)DI -> descriptor buffer (see #1682)
  68862. Return: CF clear if successful
  68863.         descriptors copied
  68864.     CF set on error
  68865.         AX = error code (8021h,8022h,8025h) (see #1680)
  68866.         CX = number of descriptors successfully copied
  68867. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  68868.     if the function fails, the first CX descriptors are valid; the
  68869.       remainder are not modified
  68870.     DPMI 1.0+ automatically reloads any segment registers containing a
  68871.       selector being modified
  68872. SeeAlso: AX=000Ch,AX=000Eh
  68873.  
  68874. Format of DPMI descriptor buffer entry (one per descriptor to set):
  68875. Offset    Size    Description    (Table 1682)
  68876.  00h    WORD    selector
  68877.  02h    QWORD    descriptor
  68878. --------E-310100-----------------------------
  68879. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  68880.     AX = 0100h
  68881.     BX = number of paragraphs to allocate
  68882. Return: CF clear if successful
  68883.         AX = real mode segment of allocated block
  68884.         DX = first selector for allocated block
  68885.     CF set on error
  68886.         AX = DOS error code (07h,08h) (see #0811 at INT 21/AH=59h)
  68887.         (DPMI 1.0+) DPMI error code (8011h) (see #1680)
  68888.         BX = size (in paragraphs) of largest available block
  68889. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  68890.       if the caller is a 16-bit program
  68891.     never modify or deallocate returned descriptors
  68892.     not supported by MS Windows 3.0 in Standard mode
  68893. SeeAlso: AX=0101h,AX=0501h
  68894. --------E-310101-----------------------------
  68895. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  68896.     AX = 0101h
  68897.     DX = selector of block
  68898. Return: CF set if successful
  68899.     CF set on error
  68900.         AX = DOS error code (07h,09h) (see #0811 at INT 21/AH=59h)
  68901. Notes:    all descriptors allocated for the block are automatically freed
  68902.     DPMI 1.0+ automatically zeros any segment registers containing a
  68903.       selector freed by this function
  68904.     not supported by MS Windows 3.0 in Standard mode
  68905. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  68906. --------E-310102-----------------------------
  68907. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  68908.     AX = 0102h
  68909.     BX = new block size in paragraphs
  68910.     DX = selector of block
  68911. Return: CF clear if successful
  68912.     CF set on error
  68913.         AX = DOS error code (07h,08h,09h) (see #0811 at INT 21/AH=59h)
  68914.         (DPMI 1.0+) DPMI error code (8011h,8022h) (see #1680)
  68915.         BX = maximum block size (in paragraphs) possible
  68916. Notes:    increasing the size of a block past a 64K boundary will fail if the
  68917.       next descriptor in the LDT is already in use
  68918.     shrinking a block past a 64K boundary will cause some selectors to be
  68919.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  68920.       a selector freed by this function
  68921.     not supported by MS Windows 3.0 in Standard mode
  68922. SeeAlso: AX=0100h
  68923. --------E-310200-----------------------------
  68924. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  68925.     AX = 0200h
  68926.     BL = interrupt number
  68927. Return: CF clear
  68928.     CX:DX = segment:offset of real mode interrupt handler
  68929. Note:    the DPMI implementation is required to support all 256 vectors
  68930. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  68931. --------E-310201-----------------------------
  68932. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  68933.     AX = 0201h
  68934.     BL = interrupt number
  68935.     CX:DX = segment:offset of real mode handler
  68936. Return: CF clear
  68937. Note:    all memory that may be touched by a hardware interrupt handler must be
  68938.       locked down with INT 31/AX=0600h
  68939. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  68940. --------E-310202-----------------------------
  68941. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  68942.     AX = 0202h
  68943.     BL = exception number (00h-1Fh)
  68944. Return: CF clear if successful
  68945.         CX:(E)DX = selector:offset of handler
  68946.     CF set on error
  68947.         AX = error code (DPMI 1.0+) (8021h) (see #1680)
  68948. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  68949.     DPMI 1.0+ supports this function only for backward compatibility; use
  68950.        AX=0210h or AX=0211h instead
  68951.     not supported by MS Windows 3.0 in Standard mode
  68952. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  68953. --------E-310203-----------------------------
  68954. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  68955.     AX = 0203h
  68956.     BL = exception number (00h-1Fh)
  68957.     CX:(E)DX = selector:offset of handler
  68958. Return: CF clear if successful
  68959.     CF set on error
  68960.         AX = error code (DPMI 1.0+) (8021h,8022h) (see #1680)
  68961. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  68962.       stack frame on chaining to the next exception handler
  68963.     the handler should return using a FAR return
  68964.     all fault stack frames contain an error code, but it is only valid for
  68965.       exceptions 08h and 0Ah-0Eh
  68966.     handlers will only be called if the exception occurs in protected mode,
  68967.       and the DPMI host does not transparently handle the exception
  68968.     the handler may change certain values on the stack frame
  68969.       (see #1683,#1684)
  68970.     DPMI 1.0+ supports this function only for backward compatibility; use
  68971.        AX=0212h or AX=0213h instead
  68972.     not supported by MS Windows 3.0 in Standard mode
  68973. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  68974.  
  68975. Format of stack frame for 16-bit programs: (offset from SS:SP)
  68976. Offset    Size    Description    (Table 1683)
  68977.  00h    DWORD    return CS:IP (do not change)
  68978.  04h    WORD    error code
  68979.  06h    DWORD    CS:IP of exception
  68980.  0Ah    WORD    flags
  68981.  0Ch    DWORD    SS:SP
  68982.  
  68983. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  68984. Offset    Size    Description    (Table 1684)
  68985.  00h    DWORD    return EIP (do not change)
  68986.  04h    WORD    return CS selector (do not change)
  68987.  06h    WORD    reserved (do not change)
  68988.  08h    DWORD    error code
  68989.  0Ch    DWORD    EIP of exception
  68990.  10h    WORD    CS selector of exception
  68991.  12h    WORD    reserved (do not change)
  68992.  14h    DWORD    EFLAGS
  68993.  18h    DWORD    ESP
  68994.  1Ch    WORD    SS
  68995.  1Eh    WORD    reserved (do not change)
  68996. --------E-310204-----------------------------
  68997. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  68998.     AX = 0204h
  68999.     BL = interrupt number
  69000. Return: CF clear
  69001.     CX:(E)DX = selector:offset of handler
  69002. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  69003.     DPMI implementations are required to support all 256 vectors
  69004.     not supported by MS Windows 3.0 in Standard mode
  69005. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  69006. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  69007. --------E-310205-----------------------------
  69008. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  69009.     AX = 0205h
  69010.     BL = interrupt number
  69011.     CX:(E)DX = selector:offset of handler
  69012. Return: CF clear if successful
  69013.     CF set on error
  69014.         AX = error code (DPMI 1.0+) (8022h) (see #1680)
  69015. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  69016.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  69017.       to the next handler
  69018.     DPMI implementations are required to support all 256 vectors
  69019.     hardware interrupts are reflected to the virtual machine's primary
  69020.       client, software interrupts to the current client
  69021.     not supported by MS Windows 3.0 in Standard mode
  69022. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  69023. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  69024. --------E-310210-----------------------------
  69025. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  69026.     AX = 0210h
  69027.     BL = exception number (00h-1Fh)
  69028. Return: CF clear if successful
  69029.         CX:(E)DX = selector:offset of exception handler
  69030.     CF set on error
  69031.         AX = error code (8021h) (see #1680)
  69032. Note:    DPMI host reflects exception to current client's handler
  69033. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  69034. --------E-310211-----------------------------
  69035. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  69036.     AX = 0211h
  69037.     BL = exception number (00h-1Fh)
  69038. Return: CF clear if successful
  69039.         CX:(E)DX = selector:offset of exception handler
  69040.     CF set on error
  69041.         AX = error code (8021h) (see #1680)
  69042. Notes:    returns address of protected-mode handler for real-mode exception
  69043.     DPMI host performs a switch to protected mode, reflects the exception
  69044.       to the virtual machine's primary client, and returns to real mode
  69045.       on the handler's completion
  69046. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  69047. --------E-310212-----------------------------
  69048. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  69049.     AX = 0212h
  69050.     BL = exception or fault number (00h-1Fh)
  69051.     CX:(E)DX = exception handler selector:offset
  69052. Return: CF clear if successful
  69053.     CF set on error
  69054.         AX = error code (8021h,8022h) (see #1680)
  69055. Note:    DPMI host sends exception to current client's handler
  69056. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  69057. --------E-310213-----------------------------
  69058. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  69059.     AX = 0213h
  69060.     BL = exception or fault number (00h-1Fh)
  69061.     CX:(E)DX = exception handler selector:offset
  69062. Return: CF clear if successful
  69063.     CF set on error
  69064.         AX = error code (8021h,8022h) (see #1680)
  69065. Notes:    specifies address of protected-mode handler for real-mode exception
  69066.     DPMI host performs a switch to protected mode, reflects the exception
  69067.       to the virtual machine's primary client, and returns to real mode
  69068.       on the handler's completion
  69069. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  69070. --------E-310300-----------------------------
  69071. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  69072.     AX = 0300h
  69073.     BL = interrupt number
  69074.     BH = flags
  69075.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  69076.             reserved, must be 0 (DPMI 1.0+)
  69077.         others: reserved, must be 0
  69078.     CX = number of words to copy from protected mode to real mode stack
  69079.     ES:(E)DI = selector:offset of real mode call structure (see #1685)
  69080. Return: CF clear if successful
  69081.         real mode call structure modified (all fields except SS:SP, CS:IP
  69082.           filled with return values from real mode interrupt)
  69083.     CF set on error
  69084.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1680)
  69085.     protected mode stack unchanged
  69086. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  69087.     CS:IP in the real mode call structure is ignored for this call,
  69088.       instead, the indicated interrupt vector is used for the address
  69089.     the flags in the call structure are pushed on the real mode stack to
  69090.       form an interrupt stack frame, and the trace and interrupt flags are
  69091.       clear on entry to the handler
  69092.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  69093.     the real mode handler must return with the stack in the same state as
  69094.       it was on being called
  69095. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
  69096. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  69097.  
  69098. Format of DPMI real mode call structure:
  69099. Offset    Size    Description    (Table 1685)
  69100.  00h    DWORD    EDI
  69101.  04h    DWORD    ESI
  69102.  08h    DWORD    EBP
  69103.  0Ch    DWORD    reserved (00h)
  69104.  10h    DWORD    EBX
  69105.  14h    DWORD    EDX
  69106.  18h    DWORD    ECX
  69107.  1Ch    DWORD    EAX
  69108.  20h    WORD    flags
  69109.  22h    WORD    ES
  69110.  24h    WORD    DS
  69111.  26h    WORD    FS
  69112.  28h    WORD    GS
  69113.  2Ah    WORD    IP
  69114.  2Ch    WORD    CS
  69115.  2Eh    WORD    SP
  69116.  30h    WORD    SS
  69117. --------E-310301-----------------------------
  69118. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  69119.     AX = 0301h
  69120.     BH = flags
  69121.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  69122.             reserved, must be 0 (DPMI 1.0+)
  69123.         others: reserved must be 0
  69124.     CX = number of words to copy from protected mode to real mode stack
  69125.     ES:(E)DI = selector:offset of real mode call structure
  69126.           (see INT 31/AX=0300h)
  69127. Return: CF clear if successful
  69128.         real mode call structure modified (all fields except SS:SP, CS:IP
  69129.           filled with return values from real mode interrupt)
  69130.     CF set on error
  69131.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1680)
  69132.     protected mode stack unchanged
  69133. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  69134.     the real mode procedure must exit with a FAR return
  69135.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  69136.     the real mode handler must return with the stack in the same state as
  69137.       it was on being called
  69138. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  69139. SeeAlso: INT 2C/AX=0025h
  69140. --------E-310302-----------------------------
  69141. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  69142.     AX = 0302h
  69143.     BH = flags
  69144.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  69145.             reserved, must be 0 (DPMI 1.0+)
  69146.         others: reserved, must be 0
  69147.     CX = number of words to copy from protected mode to real mode stack
  69148.     ES:(E)DI = selector:offset of real mode call structure
  69149.           (see INT 31/AX=0300h)
  69150. Return: CF clear if successful
  69151.         real mode call structure modified (all fields except SS:SP, CS:IP
  69152.           filled with return values from real mode interrupt)
  69153.     CF set on error
  69154.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #1680)
  69155.     protected mode stack unchanged
  69156. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  69157.     the flags in the call structure are pushed on the real mode stack to
  69158.       form an interrupt stack frame, and the trace and interrupt flags are
  69159.       clear on entry to the handler
  69160.     the real mode procedure must exit with an IRET
  69161.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  69162.     the real mode handler must return with the stack in the same state as
  69163.       it was on being called
  69164. SeeAlso: AX=0300h
  69165. --------E-310303-----------------------------
  69166. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  69167.     AX = 0303h
  69168.     DS:(E)SI = selector:offset of procedure to call
  69169.     ES:(E)DI = selector:offset of real mode call structure (see #1685)
  69170. Return: CF clear if successful
  69171.         CX:DX = segment:offset of real mode call address
  69172.     CF set on error
  69173.         AX = error code (DPMI 1.0+) (8015h) (see #1680)
  69174. Notes:    the real mode call structure is static, causing reentrancy problems;
  69175.       its contents are only valid at the time of a callback
  69176.     the called procedure must modify the real mode CS:IP before returning
  69177.     values are returned to real mode by modifying the real mode call struc
  69178.     DPMI hosts must provide at least 16 callbacks per client
  69179.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  69180.       not support this function
  69181. SeeAlso: AX=0304h,AX=0C00h
  69182.  
  69183. (Table 1686)
  69184. Values DPMI real-mode callback procedure is called with:
  69185.     DS:(E)SI = selector:offset of real mode SS:SP
  69186.     ES:(E)DI = selector:offset of real mode call structure
  69187.     SS:(E)SP = locked protected mode API stack
  69188.     interrupts disabled
  69189. Return: (with IRET)
  69190.     ES:(E)DI = selector:offset of real mode call structure to restore
  69191. --------E-310304-----------------------------
  69192. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  69193.     AX = 0304h
  69194.     CX:DX = real mode callback address
  69195. Return: CF clear if successful
  69196.     CF set on error
  69197.         AX = error code (DPMI 1.0+) (8024h) (see #1680)
  69198. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  69199.       not support this function
  69200. SeeAlso: AX=0303h
  69201. --------E-310305-----------------------------
  69202. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  69203.     AX = 0305h
  69204. Return: CF clear
  69205.     AX = size in bytes of state buffer
  69206.     BX:CX = real mode address of procedure to save/restore state
  69207.     SI:(E)DI = protected mode procedure to save/restore state
  69208. Notes:    the buffer size will be zero if it is not necessary to preserve state
  69209.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  69210.     this function is only needed if using the raw mode switch service
  69211. SeeAlso: AX=0306h
  69212.  
  69213. (Table 1687)
  69214. Call DPMI state-save procedures with:
  69215.     AL = direction
  69216.         00h save state
  69217.         01h restore state
  69218.     ES:(E)DI -> state buffer
  69219. Return: all registers preserved
  69220. --------E-310306-----------------------------
  69221. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  69222.     AX = 0306h
  69223. Return: CF clear
  69224.     BX:CX -> procedure to switch from real to protected mode
  69225.     SI:(E)DI -> procedure to switch from protected to real mode
  69226. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  69227.     the caller must save and restore the state of the task with AX=0305h
  69228.     not supported by MS Windows 3.0 in Standard mode
  69229. SeeAlso: AX=0305h
  69230.  
  69231. (Table 1688)
  69232. Values to JUMP at mode-switch procedures with:
  69233.     AX = new DS
  69234.     CX = new ES
  69235.     DX = new SS
  69236.     (E)BX = new (E)SP
  69237.     SI:(E)DI = new CS:(E)IP
  69238. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  69239.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  69240.     interrupts will stay disabled during the entire mode switch if they
  69241.       are disabled on entry to the mode-switch procedure
  69242. --------E-310400-----------------------------
  69243. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  69244.     AX = 0400h
  69245. Return: CF clear
  69246.     AH = major version of DPMI spec supported
  69247.     AL = two-digit minor version of DPMI spec supported
  69248.     BX = DPMI host flags (see #1689)
  69249.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  69250.     DH = curr value of virtual master interrupt controller base interrupt
  69251.     DL = curr value of virtual slave interrupt controller base interrupt
  69252. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  69253.       release with fixes to CSD002 report version 0090h (0.144); this has
  69254.       reportedly been corrected in the Windows NT 3.5 beta
  69255. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  69256.  
  69257. Bitfields for DPMI host flags:
  69258. Bit(s)    Description    (Table 1689)
  69259.  0    running under an 80386 (32-bit) implementation
  69260.  1    processor returns to real mode for reflected interrupts instead of V86
  69261.       mode
  69262.  2    virtual memory supported
  69263.  3    reserved (undefined)
  69264.  4-15    reserved (zero)
  69265. --------E-310401-----------------------------
  69266. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  69267.     AX = 0401h
  69268.     ES:(E)DI -> 128-byte buffer for host description (see #1690)
  69269. Return: CF clear if successful
  69270.         AX = capabilities (see #1691)
  69271.         CX = reserved (00h)
  69272.         DX = reserved (00h)
  69273.         buffer filled
  69274.     CF set on error (DPMI 0.9 only)
  69275. SeeAlso: AX=0400h
  69276.  
  69277. Format of DPMI host description:
  69278. Offset    Size    Description    (Table 1690)
  69279.  00h    BYTE    host major version number
  69280.  01h    BYTE    host minor version number
  69281.  02h 126 BYTEs    ASCIZ host vendor name
  69282.  
  69283. Bitfields for DPMI capabilities:
  69284. Bit(s)    Description    (Table 1691)
  69285.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  69286.  1    exceptions restartability supported
  69287.  2    device mapping supported (see AX=0508h)
  69288.  3    conventional memory mapping supported (see AX=0509h)
  69289.  4    demand zero-fill supported
  69290.  5    write-protect client capability supported
  69291.  6    write-protect host capability supported
  69292.  7-15    reserved
  69293. --------E-310500-----------------------------
  69294. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  69295.     AX = 0500h
  69296.     ES:(E)DI -> buffer for memory information (see #1692)
  69297. Return: CF clear
  69298. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  69299.     this function must be considered advisory because other applications
  69300.       may affect the results at any time after the call
  69301.     fields not supported by the DPMI implementation are filled with
  69302.       FFFFFFFFh
  69303.     DPMI 1.0+ supports this function solely for backward compatibility; use
  69304.       AX=050Bh instead
  69305.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  69306.       returns the first field in the memory information record
  69307. SeeAlso: AX=0501h,AX=050Bh,AX=0604h
  69308.  
  69309. Format of DPMI memory information:
  69310. Offset    Size    Description    (Table 1692)
  69311.  00h    DWORD    largest available block in bytes
  69312.  04h    DWORD    maximum unlocked page allocation
  69313.  08h    DWORD    maximum locked page allocation
  69314.  0Ch    DWORD    total linear address space in pages
  69315.  10h    DWORD    total unlocked pages
  69316.  14h    DWORD    free pages
  69317.  18h    DWORD    total physical pages
  69318.  1Ch    DWORD    free linear address space in pages
  69319.  20h    DWORD    size of paging file/partition in pages
  69320.  24h 12 BYTEs    reserved
  69321. --------E-310501-----------------------------
  69322. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  69323.     AX = 0501h
  69324.     BX:CX = size in bytes
  69325. Return: CF clear if successful
  69326.         BX:CX = linear address of block
  69327.         SI:DI = memory block handle for resizing and freeing block
  69328.     CF set on error
  69329.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #1680)
  69330. Notes:    no selectors are allocated
  69331.     the memory block is allocated unlocked (can be locked with AX=0600h)
  69332.     allocations are often page granular (see AX=0604h)
  69333.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  69334.       for this function to fail even if AX=0500h indicates that enough
  69335.       memory is available
  69336. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  69337. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  69338. --------E-310502-----------------------------
  69339. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  69340.     AX = 0502h
  69341.     SI:DI = handle of memory block
  69342. Return: CF clear if successful
  69343.     CF set on error
  69344.         AX = error code (DPMI 1.0+) (8023h) (see #1680)
  69345. Note:    any selectors allocated for the memory block must also be freed,
  69346.       preferably before freeing the memory block
  69347. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  69348. --------E-310503-----------------------------
  69349. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  69350.     AX = 0503h
  69351.     BX:CX = new size in bytes (nonzero)
  69352.     SI:DI = handle of memory block
  69353. Return: CF clear if successful
  69354.         BX:CX = new linear address
  69355.         SI:DI = new handle of memory block
  69356.     CF set on error
  69357.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  69358.         (see #1680)
  69359. Notes:    any selectors pointing at the block must be updated
  69360.     the previous memory block handle becomes invalid
  69361.     an error is returned if the new size is 0
  69362. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  69363. --------E-310504-----------------------------
  69364. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  69365.     AX = 0504h
  69366.     EBX = page-aligned linear address of memory block (00000000h if any
  69367.           address is acceptable)
  69368.     ECX = size in bytes (nonzero)
  69369.     EDX = flags
  69370.         bit 0: set to create committed pages instead of uncommitted pages
  69371.         bits 1-31 reserved (0)
  69372. Return: CF clear if successful
  69373.         EBX = linear address of memory block
  69374.         ESI = memory block handle
  69375.     CF set on error
  69376.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #1680)
  69377. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69378. SeeAlso: AX=0501h,AX=0505h
  69379. --------E-310505-----------------------------
  69380. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  69381.     AX = 0505h
  69382.     ESI = memory block handle
  69383.     ECX = new size in bytes (nonzero)
  69384.     EDX = flags
  69385.         bit 0: create committed pages rather than uncommitted pages
  69386.         bit 1: segment descriptor update required
  69387.         ES:EBX -> buffer containing array of WORDs with selectors
  69388.         EDI = number of selectors in array
  69389.         bits 2-31 reserved (0)
  69390. Return: CF clear if successful
  69391.         EBX = new linear base address
  69392.         ESI = new memory block handle
  69393.     CF set on error
  69394.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #1680)
  69395. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69396.     the old memory block handle becomes invalid
  69397.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  69398.       all descriptors for selectors in the update buffer which fall within
  69399.       the memory block
  69400. SeeAlso: AX=0503h,AX=0504h
  69401. --------E-310506-----------------------------
  69402. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  69403.     AX = 0506h
  69404.     ESI = memory block handle
  69405.     EBX = offset in memory block of first page
  69406.     ECX = number of pages
  69407.     ES:EDX -> array of WORDs to hold page attributes (see #1693)
  69408. Return: CF clear if successful
  69409.         buffer filled
  69410.     CF set on error
  69411.         AX = error code (8001h,8023h,8025h) (see #1680)
  69412. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69413.     if EBX is not page-aligned, it will be rounded down
  69414. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  69415.  
  69416. Bitfields for DPMI page attribute word:
  69417. Bit(s)    Description    (Table 1693)
  69418.  0-2    page type
  69419.     000 uncommitted
  69420.     001 committed
  69421.     010 mapped (see AX=0508h,AX=0509h)
  69422.     other currently unused
  69423.  3    page is read/write rather than read-only
  69424.  4    accessed/dirty bits supplied in bits 5 and 6
  69425.  5    page has been accessed (only valid if bit 4 set)
  69426.  6    page has been written (only valid if bit 4 set)
  69427.  7-15    reserved (0)
  69428. --------E-310507-----------------------------
  69429. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  69430.     AX = 0507h
  69431.     ESI = memory block handle
  69432.     EBX = offset in memory block of first page
  69433.     ECX = number of pages
  69434.     ES:EDX -> array of WORDs with new page attributes (see #1693)
  69435. Return: CF clear if successful
  69436.     CF set on error
  69437.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  69438.         (see #1680)
  69439.         ECX = number of pages which have been set
  69440. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69441.     if EBX is not page-aligned, it will be rounded down
  69442. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  69443. --------E-310508-----------------------------
  69444. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  69445.     AX = 0508h
  69446.     ESI = memory block handle
  69447.     EBX = page-aligned offset within memory block of page(s) to be mapped
  69448.     ECX = number of pages to map
  69449.     EDX = page-aligned physical address of device
  69450. Return: CF clear if successful
  69451.     CF set on error
  69452.         AX = error code (8001h,8003h,8023h,8025h) (see #1680)
  69453. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69454.     support of this function is optional; hosts are also allowed to support
  69455.       the function for some devices but not others
  69456. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  69457. --------E-310509-----------------------------
  69458. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  69459.     AX = 0509h
  69460.     ESI = memory block handle
  69461.     EBX = page-aligned offset within memory block of page(s) to map
  69462.     ECX = number of pages to map
  69463.     EDX = page-aligned linear address of conventional (below 1M) memory
  69464. Return: CF clear if successful
  69465.     CF set on error
  69466.         AX = error code (8001h,8003h,8023h,8025h) (see #1680)
  69467. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  69468.     support of this function is optional
  69469. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  69470. --------E-31050A-----------------------------
  69471. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  69472.     AX = 050Ah
  69473.     SI:DI = memory block handle
  69474. Return: CF clear if successful
  69475.         SI:DI = size in bytes
  69476.         BX:CX = base address
  69477.     CF set on error
  69478.         AX = error code (8023h) (see #1680)
  69479. SeeAlso: AX=0501h,AX=0504h
  69480. --------E-31050B-----------------------------
  69481. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  69482.     AX = 050Bh
  69483.     ES:(E)DI -> 128-byte buffer for memory information (see #1694)
  69484. Return: CF clear if successful
  69485.     CF set on error (DPMI 0.9 only)
  69486. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  69487. SeeAlso: AX=0500h
  69488.  
  69489. Format of DPMI memory information:
  69490. Offset    Size    Description    (Table 1694)
  69491.  00h    DWORD    total allocated bytes of physical memory controlled by host
  69492.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  69493.  08h    DWORD    total available bytes of virtual memory controlled by host
  69494.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  69495.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  69496.  14h    DWORD    total allocated bytes of virtual memory for current client
  69497.  18h    DWORD    total available bytes of virtual memory for current client
  69498.  1Ch    DWORD    total locked bytes for current client
  69499.  20h    DWORD    maximum locked bytes for current client
  69500.  24h    DWORD    highest linear address available to current client
  69501.  28h    DWORD    largest available memory block in bytes
  69502.  2Ch    DWORD    minimum allocation unit in bytes
  69503.  30h    DWORD    allocation alignment unit size in bytes
  69504.  34h 76 BYTEs    reserved (00h)
  69505. --------E-310600-----------------------------
  69506. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  69507.     AX = 0600h
  69508.     BX:CX = starting linear address
  69509.     SI:DI = size of region in bytes
  69510. Return: CF clear if successful
  69511.     CF set on error
  69512.         none of the memory is locked
  69513.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #1680)
  69514. Notes:    pages at beginning and end will be locked if the region overlaps them
  69515.     may be called multiple times for a given page; the DPMI host keeps a
  69516.       lock count for each page
  69517. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  69518. --------E-310601-----------------------------
  69519. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  69520.     AX = 0601h
  69521.     BX:CX = starting linear address
  69522.     SI:DI = size of region in bytes
  69523. Return: CF clear if successful
  69524.     CF set on error
  69525.         none of the memory is unlocked
  69526.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1680)
  69527. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  69528.     memory whose lock count has not reached zero remains locked
  69529. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  69530. --------E-310602-----------------------------
  69531. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  69532.     AX = 0602h
  69533.     BX:CX = starting linear address
  69534.     SI:DI = size of region in bytes
  69535. Return: CF clear if successful
  69536.     CF set on error
  69537.         none of the memory is made pageable
  69538.         AX = error code (DPMI 1.0+) (8002h,8025h) (see #1680)
  69539. Notes:    must relock all unlocked real mode memory before terminating process
  69540.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  69541.     pages at beginning and end will be unlocked if the region overlaps them
  69542.     pageability of real mode pages is binary, not a count
  69543. SeeAlso: AX=0600h,AX=0603h
  69544. --------E-310603-----------------------------
  69545. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  69546.     AX = 0603h
  69547.     BX:CX = starting linear address
  69548.     SI:DI = size of region in bytes
  69549. Return: CF clear if successful
  69550.     CF set on error
  69551.         none of the memory is relocked
  69552.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #1680)
  69553. Notes:    pages at beginning and end will be relocked if the region overlaps them
  69554.     pageability of real mode pages is binary, not a count
  69555. SeeAlso: AX=0602h
  69556. --------E-310604-----------------------------
  69557. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  69558.     AX = 0604h
  69559. Return: CF clear if successful
  69560.         BX:CX = page size in bytes
  69561.     CF set on error
  69562.         AX = error code (DPMI 1.0+) (see also #1680)
  69563.         8001h unsupported, 16-bit host
  69564. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  69565.       unchanged
  69566. --------E-310700-----------------------------
  69567. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  69568.     AX = 0700h
  69569.     BX:CX = starting linear page number
  69570.     SI:DI = number of pages to mark as paging candidates
  69571. Return: ???
  69572. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  69573.       specification, this function is called by MS Windows TASKMAN,
  69574.       PROGMAN, and KERNEL
  69575. SeeAlso: AX=0701h,AX=0702h
  69576. --------E-310701-----------------------------
  69577. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  69578.     AX = 0701h
  69579.     BX:CX = starting linear page number
  69580.     SI:DI = number of pages to discard
  69581. Return: ???
  69582. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  69583.       specification, this function is called by MS Windows TASKMAN,
  69584.       PROGMAN, and KERNEL
  69585. SeeAlso: AX=0700h,AX=0703h
  69586. --------E-310702-----------------------------
  69587. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  69588.     AX = 0702h
  69589.     BX:CX = starting linear address
  69590.     SI:DI = number of bytes to mark as paging candidates
  69591. Return: CF clear if successful
  69592.     CF set on error
  69593.         AX = error code (DPMI 1.0+) (8025h) (see #1680)
  69594. Notes:    this function is advisory, and does not force immediate paging
  69595.     partial pages will not be discarded
  69596. SeeAlso: AX=0700h,AX=0703h
  69597. --------E-310703-----------------------------
  69598. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  69599.     AX = 0703h
  69600.     BX:CX = starting linear address
  69601.     SI:DI = number of bytes to mark as discarded
  69602. Return: CF clear if successful
  69603.     CF set on error
  69604.         AX = error code (DPMI 1.0+) (8025h) (see #1680)
  69605. Notes:    this function is advisory, and may be ignored by DPMI implementations
  69606.     partial pages will not be discarded
  69607. SeeAlso: AX=0701h,AX=0702h
  69608. --------E-310800-----------------------------
  69609. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  69610.     AX = 0800h
  69611.     BX:CX = physical address (should be above 1 MB)
  69612.     SI:DI = size in bytes
  69613. Return: CF clear if successful
  69614.         BX:CX = linear address which maps the requested physical memory
  69615.     CF set on error
  69616.         AX = error code (DPMI 1.0+) (8003h,8021h) (see #1680)
  69617. Notes:    implementations may refuse this call because it can circumvent protects
  69618.     the caller must build an appropriate selector for the memory
  69619.     do not use for memory mapped in the first megabyte
  69620. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  69621. --------E-310801-----------------------------
  69622. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  69623.     AX = 0801h
  69624.     BX:CX = linear address returned by AX=0800h
  69625. Return: CF clear if successful
  69626.     CF set on error
  69627.         AX = error code (8025h) (see #1680)
  69628. Note:    should be called at end of access to device mapped with AX=0800h
  69629. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  69630. --------E-310900-----------------------------
  69631. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  69632.     AX = 0900h
  69633. Return: CF clear
  69634.     virtual interrupts disabled
  69635.     AL = previous interrupt state (00h disabled, 01h enabled)
  69636.     AH preserved
  69637. Notes:    the previous state may be restored simply by executing another INT 31
  69638.     a CLI instruction may be used if the previous state is unimportant,
  69639.       but should be assumed to be very slow due to trapping by the host
  69640. SeeAlso: AX=0901h,AX=0902h
  69641. --------E-310901-----------------------------
  69642. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  69643.     AX = 0901h
  69644. Return: CF clear
  69645.     virtual interrupts enabled
  69646.     AL = previous interrupt state (00h disabled, 01h enabled)
  69647.     AH preserved
  69648. Notes:    the previous state may be restored simply by executing another INT 31
  69649.     a STI instruction may be used if the previous state is unimportant,
  69650.       but should be assumed to be very slow due to trapping by the host
  69651. SeeAlso: AX=0900h,AX=0902h
  69652. --------E-310902-----------------------------
  69653. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  69654.     AX = 0902h
  69655. Return: CF clear
  69656.     AL = current interrupt state (00h disabled, 01h enabled)
  69657. Note:    should be used rather than PUSHF because that instruction yields the
  69658.       physical interrupt state rather than the per-client virtualized
  69659.       interrupt flag
  69660. SeeAlso: AX=0900h,AX=0901h
  69661. --------E-310A00-----------------------------
  69662. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  69663.     AX = 0A00h
  69664.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  69665. Return: CF clear if successful
  69666.         ES:(E)DI -> FAR extended API entry point
  69667.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  69668.     CF set on error
  69669.         AX = error code (DPMI 1.0+) (8001h) (see #1680)
  69670. Notes:    extended API parameters are vendor-specific
  69671.     DPMI 1.0+ supports this function solely for backward compatibility; use
  69672.       INT 2F/AX=168Ah instead
  69673.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  69674.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  69675.       386MAX v7.01.
  69676. SeeAlso: INT 2F/AX=168Ah
  69677. --------E-310B00-----------------------------
  69678. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  69679.     AX = 0B00h
  69680.     BX:CX = linear address
  69681.     DL = size (1,2,4 bytes)
  69682.     DH = type (00h execute, 01h write, 02h read/write)
  69683. Return: CF clear if successful
  69684.         BX = watchpoint handle
  69685.     CF set on error
  69686.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #1680)
  69687. SeeAlso: AX=0212h,AX=0601h
  69688. --------E-310B01-----------------------------
  69689. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  69690.     AX = 0B01h
  69691.     BX = watchpoint handle
  69692. Return: CF clear if successful
  69693.     CF set on error
  69694.         AX = error code (DPMI 1.0+) (8023h) (see #1680)
  69695. Note:    the watchpoint handle is freed
  69696. SeeAlso: AX=0B00h
  69697. --------E-310B02-----------------------------
  69698. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  69699.     AX = 0B02h
  69700.     BX = watchpoint handle
  69701. Return: CF clear if successful
  69702.         AX = status flags
  69703.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  69704.     CF set on error
  69705.         AX = error code (DPMI 1.0+) (8023h) (see #1680)
  69706. SeeAlso: AX=0B00h,AX=0B03h
  69707. --------E-310B03-----------------------------
  69708. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  69709.     AX = 0B03h
  69710.     BX = watchpoint handle
  69711. Return: CF clear if successful
  69712.     CF set on error
  69713.         AX = error code (DPMI 1.0+) (8023h) (see #1680)
  69714. SeeAlso: AX=0B02h
  69715. --------E-310C00-----------------------------
  69716. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  69717.     AX = 0C00h
  69718.     ES:(E)DI -> resident service provider structure (see #1695)
  69719. Return: CF clear if successful
  69720.     CF set on error
  69721.         AX = error code (8015h,8021h,8025h) (see #1680 at AX=0000h)
  69722. Note:    calling this function declares an intent to provide resident
  69723.       protected mode services after terminating with AX=0C01h
  69724. SeeAlso: AX=0303h,AX=0C01h
  69725.  
  69726. Format of DPMI resident service provider structure:
  69727. Offset    Size    Description    (Table 1695)
  69728.  00h    QWORD    descriptor for 16-bit data segment
  69729.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  69730.  10h    WORD    offset of 16-bit callback procedure
  69731.  12h  2 BYTEs    reserved
  69732.  14h    QWORD    descriptor for 32-bit data segment
  69733.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  69734.  24h    DWORD    offset of 32-bit callback procedure
  69735. --------E-310C01-----------------------------
  69736. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  69737.     AX = 0C01h
  69738.     BL = return code
  69739.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  69740. Return: never
  69741. Notes:    should only be used if the program will only provide services to
  69742.       other DPMI programs
  69743.     any protected mode memory remains allocated to the program unless
  69744.       explicitly freed before this call
  69745.     must first call AX=0C00h or program will simply be terminated
  69746. SeeAlso: AX=0C00h,INT 21/AH=31h
  69747. --------E-310D00-----------------------------
  69748. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  69749.     AX = 0D00h
  69750.     ES:(E)DI -> shared memory allocation request structure (see #1696)
  69751. Return: CF clear if successful
  69752.         request structure updated
  69753.     CF set on error
  69754.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see #1680)
  69755. Note:    first 16 bytes of memory block will be initialized to zeros on the
  69756.       first allocation
  69757. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  69758.  
  69759. Format of DPMI shared memory allocation request structure:
  69760. Offset    Size    Description    (Table 1696)
  69761.  00h    DWORD    requested length of shared memory block in bytes
  69762.  04h    DWORD    (return) allocated length of block
  69763.  08h    DWORD    (return) shared memory handle
  69764.  0Ch    DWORD    (return) linear address of memory block
  69765.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  69766.         (name max 128 bytes)
  69767.  16h  2 BYTEs    reserved
  69768.  18h  4 BYTEs    reserved (00h)
  69769. --------E-310D01-----------------------------
  69770. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  69771.     AX = 0D01h
  69772.     SI:DI = shared memory block handle
  69773. Return: CF clear if successful
  69774.     CF set on error
  69775.         AX = error code (8023h) (see #1680)
  69776. Notes:    handle becomes invalid after this call
  69777.     DPMI maintains separate global and virtual machine use counts for each
  69778.       shared memory block; when the global use counts reaches zero, the
  69779.       block is finally destroyed
  69780. SeeAlso: AX=0502h,AX=0D00h
  69781. --------E-310D02-----------------------------
  69782. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  69783.     AX = 0D02h
  69784.     SI:DI = shared memory block handle
  69785.     DX = flags
  69786.         bit 0: return immediately rather than suspending if serialization
  69787.           unavailable
  69788.         bit 1: shared rather than exclusive serialization
  69789.         bits 2-15 reserved (0)
  69790. Return: CF clear if successful
  69791.     CF set on error
  69792.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see #1680)
  69793. Notes:    an exclusive serialization blocks any other serialization attempts for
  69794.       the same block by another virtual machine; a shared serialization
  69795.       blocks attempts at exclusive serialization by another virtual machine
  69796.     hosts are not required to detect deadlock
  69797.     a client's interrupt handler can cancel a serialization call which
  69798.       caused it to block by calling AX=0D03h
  69799. SeeAlso: AX=0D00h,AX=0D03h
  69800. --------E-310D03-----------------------------
  69801. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  69802.     AX = 0D03h
  69803.     SI:DI = shared memory block handle
  69804.     DX = flags
  69805.         bit 0: release shared serialization rather than exclusive serialztn
  69806.         bit 1: free pending serialization
  69807.         bits 2-15 reserved (0)
  69808. Return: CF clear if successful
  69809.     CF set on error
  69810.         AX = error code (8002h,8023h) (see #1680 at AX=0000h)
  69811. SeeAlso: AX=0D00h,AX=0D02h
  69812. --------E-310E00-----------------------------
  69813. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  69814.     AX = 0E00h
  69815. Return: CF clear
  69816.     AX = coprocessor status (see #1697)
  69817. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  69818. SeeAlso: AX=0E01h
  69819.  
  69820. Bitfields for DPMI coprocessor status:
  69821. Bit(s)    Description    (Table 1697)
  69822.  0    numeric coprocessor enabled for current client
  69823.  1    client is emulating coprocessor
  69824.  2    numeric coprocessor is present
  69825.  3    host is emulating coprocessor instructions
  69826.  4-7    coprocessor type
  69827.     0000 none
  69828.     0010 80287
  69829.     0011 80387
  69830.     0100 80486 with numeric coprocessor
  69831.     other reserved
  69832.  8-15    not used
  69833. --------E-310E01-----------------------------
  69834. INT 31 P - DPMI 1.0+ - SET EMULATION
  69835.     AX = 0E01h
  69836.     BX = coprocessor flag bits (see #1698)
  69837. Return: CF clear if successful
  69838.     CF set on error
  69839.         AX = error code (8026h) (see #1680 at AX=0000h)
  69840. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  69841. SeeAlso: AX=0E00h
  69842.  
  69843. Bitfields for DPMI coprocessor flags:
  69844. Bit(s)    Description    (Table 1698)
  69845.  0    enable numeric coprocessor for current client
  69846.  1    client will emulate coprocessor
  69847.  2-15    not used
  69848. --------E-3157-------------------------------
  69849. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  69850.     AH = 57h
  69851.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  69852.     ???
  69853. Return: ???
  69854. SeeAlso: INT 2C/AX=0000h"RM386"
  69855. --------E-315702-----------------------------
  69856. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  69857.     AX = 5702h
  69858.     DX = PSP segment of caller
  69859.     STACK: WORD    ???
  69860.            WORD    flags (bit 0 set if 32-bit program)
  69861. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  69862. Note:    this function is called by the real-mode DPMI mode-switch entry point
  69863. SeeAlso: INT 2F/AX=1687h
  69864. --------v-32---------------------------------
  69865. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  69866. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  69867. --------v-32---------------------------------
  69868. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  69869. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  69870. --------M-330000-----------------------------
  69871. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  69872.     AX = 0000h
  69873. Return: AX = status
  69874.         0000h hardware/driver not installed
  69875.         FFFFh hardware/driver installed
  69876.     BX = number of buttons
  69877.         0000h other than two
  69878.         0002h two buttons (many drivers)
  69879.         0003h Mouse Systems/Logitech three-button mouse
  69880.         FFFFh two buttons
  69881. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  69882.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  69883.       and then call this function.    Logitech drivers v5.01 and v6.00
  69884.       reportedly do not correctly use Hercules graphics in dual-monitor
  69885.       systems, while version 4.10 does.
  69886.     the Logitech mouse driver contains the signature string "LOGITECH"
  69887.       three bytes past the interrupt handler; many of the Logitech mouse
  69888.       utilities check for this signature.
  69889. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  69890. --------M-330001-----------------------------
  69891. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  69892.     AX = 0001h
  69893. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  69894. --------M-330002-----------------------------
  69895. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  69896.     AX = 0002h
  69897. Note:    multiple calls to hide the cursor will require multiple calls to
  69898.       function 01h to unhide it.
  69899. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  69900. --------M-330003-----------------------------
  69901. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  69902.     AX = 0003h
  69903. Return: BX = button status (see #1699)
  69904.     CX = column
  69905.     DX = row
  69906. Note:    in text modes, all coordinates are specified as multiples of the cell
  69907.       size, typically 8x8 pixels
  69908. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  69909.  
  69910. Bitfields for mouse button status:
  69911. Bit(s)    Description    (Table 1699)
  69912.  0    left button pressed if 1
  69913.  1    right button pressed if 1
  69914.  2    middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  69915. --------M-330004-----------------------------
  69916. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  69917.     AX = 0004h
  69918.     CX = column
  69919.     DX = row
  69920. Note:    the row and column are truncated to the next lower multiple of the cell
  69921.       size (typically 8x8 in text modes); however, some versions of the
  69922.       Microsoft documentation incorrectly state that the coordinates are
  69923.       rounded
  69924. SeeAlso: AX=0003h,INT 62/AX=0081h
  69925. --------M-330005-----------------------------
  69926. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  69927.     AX = 0005h
  69928.     BX = button number (see #1700)
  69929. Return: AX = button states (see #1699)
  69930.     BX = number of times specified button has been pressed since last call
  69931.     CX = column at time specified button was last pressed
  69932.     DX = row at time specified button was last pressed
  69933. Note:    at least for the Genius mouse driver, the number of button presses
  69934.       returned is limited to 7FFFh
  69935. SeeAlso: AX=0006h,INT 62/AX=007Ch
  69936.  
  69937. (Table 1700)
  69938. Values for mouse button number:
  69939.  0000h    left
  69940.  0001h    right
  69941.  0002h    middle (Mouse Systems/Logitech/Genius mouse)
  69942. --------M-330006-----------------------------
  69943. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  69944.     AX = 0006h
  69945.     BX = button number (see #1700)
  69946. Return: AX = button states (see #1699)
  69947.     BX = number of times specified button has been released since last call
  69948.     CX = column at time specified button was last released
  69949.     DX = row at time specified button was last released
  69950. Note:    at least for the Genius mouse driver, the number of button releases
  69951.       returned is limited to 7FFFh
  69952. SeeAlso: AX=0005h,INT 62/AX=007Ch
  69953. --------M-330007-----------------------------
  69954. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  69955.     AX = 0007h
  69956.     CX = minimum column
  69957.     DX = maximum column
  69958. Note:    in text modes, the minimum and maximum columns are truncated to the
  69959.       next lower multiple of the cell size, typically 8x8 pixels
  69960. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  69961. --------M-330008-----------------------------
  69962. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  69963.     AX = 0008h
  69964.     CX = minimum row
  69965.     DX = maximum row
  69966. Note:    in text modes, the minimum and maximum rows are truncated to the
  69967.       next lower multiple of the cell size, typically 8x8 pixels
  69968. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  69969. --------M-330009-----------------------------
  69970. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  69971.     AX = 0009h
  69972.     BX = column of cursor hot spot in bitmap (-16 to 16)
  69973.     CX = row of cursor hot spot (-16 to 16)
  69974.     ES:DX -> mask bitmap (see #1701)
  69975. Notes:    in graphics modes, the screen contents around the current mouse cursor
  69976.       position are ANDed with the screen mask and then XORed with the
  69977.       cursor mask
  69978.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  69979.       hot spot row/column should be limited to -128..127
  69980.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  69981.       right-most, but that statement is contradicted by all other available
  69982.       documentation
  69983. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  69984.  
  69985. Format of mouse mask bitmap:
  69986. Offset    Size    Description    (Table 1701)
  69987.  00h 16 WORDs    screen mask
  69988.  10h 16 WORDs    cursor mask
  69989. Note:    each word defines the sixteen pixels of a row, low bit rightmost
  69990. --------M-33000A-----------------------------
  69991. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  69992.     AX = 000Ah
  69993.     BX = hardware/software text cursor
  69994.         0000h software
  69995.         CX = screen mask
  69996.         DX = cursor mask
  69997.         0001h hardware
  69998.         CX = start scan line
  69999.         DX = end scan line
  70000. Note:    when the software cursor is selected, the character/attribute data at
  70001.       the current screen position is ANDed with the screen mask and then
  70002.       XORed with the cursor mask
  70003. SeeAlso: AX=0009h,INT 62/AX=007Eh
  70004. --------M-33000B-----------------------------
  70005. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  70006.     AX = 000Bh
  70007. Return: CX = number of mickeys mouse moved horizontally since last call
  70008.     DX = number of mickeys mouse moved vertically
  70009. Notes:    a mickey is the smallest increment the mouse can sense
  70010.     positive values indicate down/right
  70011. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  70012. --------M-33000C-----------------------------
  70013. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  70014.     AX = 000Ch
  70015.     CX = call mask (see #1702)
  70016.     ES:DX -> FAR routine (see #1703)
  70017. SeeAlso: AX=0018h
  70018.  
  70019. Bitfields for mouse call mask:
  70020. Bit(s)    Description    (Table 1702)
  70021.  0    call if mouse moves
  70022.  1    call if left button pressed
  70023.  2    call if left button released
  70024.  3    call if right button pressed
  70025.  4    call if right button released
  70026.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  70027.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  70028.  7-15    unused
  70029. Note:    some versions of the Microsoft documentation incorrectly state that CX
  70030.       bit 0 means call if mouse cursor moves
  70031.  
  70032. (Table 1703)
  70033. Values interrupt routine is called with:
  70034.     AX = condition mask (same bit assignments as call mask)
  70035.     BX = button state
  70036.     CX = cursor column
  70037.     DX = cursor row
  70038.     SI = horizontal mickey count
  70039.     DI = vertical mickey count
  70040. Notes:    some versions of the Microsoft documentation erroneously swap the
  70041.       meanings of SI and DI
  70042.     in text modes, the row and column will be reported as a multiple of
  70043.       the character cell size, typically 8x8 pixels
  70044. --------M-33000D-----------------------------
  70045. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  70046.     AX = 000Dh
  70047. SeeAlso: AX=000Eh,INT 10/AH=04h
  70048. --------M-33000E-----------------------------
  70049. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  70050.     AX = 000Eh
  70051. SeeAlso: AX=000Dh
  70052. --------M-33000F-----------------------------
  70053. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  70054.     AX = 000Fh
  70055.     CX = number of mickeys per 8 pixels horizontally (default 8)
  70056.     DX = number of mickeys per 8 pixels vertically (default 16)
  70057. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  70058. --------M-330010-----------------------------
  70059. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  70060.     AX = 0010h
  70061.     CX,DX = X,Y coordinates of upper left corner
  70062.     SI,DI = X,Y coordinates of lower right corner
  70063. Note:    mouse cursor is hidden in the specified region, and needs to be
  70064.       explicitly turned on again
  70065. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  70066. --------M-330010-----------------------------
  70067. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  70068.     AX = 0010h
  70069.     ES:DX -> update region list (see #1704)
  70070. Notes:    mouse cursor is hidden in the specified region, and needs to be
  70071.       explicitly turned on again
  70072.     this version of the call is described in an August 1988 version of the
  70073.       Genius Mouse programmer's reference; it has been changed to conform
  70074.       to the Microsoft version shown above by version 9.06 (and possibly
  70075.       earlier versions)
  70076. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  70077.  
  70078. Format of Genius Mouse update region list:
  70079. Offset    Size    Description    (Table 1704)
  70080.  00h    WORD    left-most column
  70081.  02h    WORD    top-most row
  70082.  04h    WORD    right-most column
  70083.  06h    WORD    bottom-most row
  70084. --------M-330011-----------------------------
  70085. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  70086.     AX = 0011h
  70087. Return: AX = FFFFh
  70088.     BX = number of buttons
  70089. SeeAlso: AX=0000h
  70090. --------M-330012-----------------------------
  70091. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  70092.     AX = 0012h
  70093.     BH = cursor width in words
  70094.     CH = rows in cursor
  70095.     BL = horizontal hot spot (-16 to 16)
  70096.     CL = vertical hot spot (-16 to 16)
  70097.     ES:DX -> bit map of screen and cursor maps
  70098. Return: AX = FFFFh if successful
  70099. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  70100. --------M-330013-----------------------------
  70101. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  70102.     AX = 0013h
  70103.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  70104. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  70105. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  70106. --------M-330014-----------------------------
  70107. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  70108.     AX = 0014h
  70109.     CX = call mask (see #1702)
  70110.     ES:DX -> FAR routine
  70111. Return: CX = call mask of previous interrupt routine
  70112.     ES:DX = FAR address of previous interrupt routine
  70113. SeeAlso: AX=000Ch,AX=0018h
  70114. --------M-330015-----------------------------
  70115. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  70116.     AX = 0015h
  70117. Return: BX = size of buffer needed to store driver state
  70118. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  70119. --------M-330016-----------------------------
  70120. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  70121.     AX = 0016h
  70122.     BX = size of buffer (see AX=0015h)
  70123.     ES:DX -> buffer for driver state
  70124. Note:    although not documented (since the Microsoft driver does not use it),
  70125.       many drivers appear to require BX on input
  70126. SeeAlso: AX=0015h,AX=0017h
  70127. --------M-330017-----------------------------
  70128. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  70129.     AX = 0017h
  70130.     BX = size of buffer (see AX=0015h)
  70131.     ES:DX -> buffer containing saved state
  70132. Notes:    although not documented (since the Microsoft driver does not use it),
  70133.       many drivers appear to require BX on input
  70134.     some mouse drivers range-check the values in the saved state based on
  70135.       the current video mode; thus, the video mode should be restored
  70136.       before the mouse driver's state is restored
  70137. SeeAlso: AX=0015h,AX=0016h
  70138. --------M-330018-----------------------------
  70139. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  70140.     AX = 0018h
  70141.     CX = call mask (see #1705)
  70142.     ES:DX -> FAR routine to be invoked on mouse events (see #1706)
  70143. Return: AX = status
  70144.         0018h if successful
  70145.         FFFFh on error
  70146. Notes:    up to three handlers can be defined by separate calls to this function,
  70147.       each with a different combination of shift states in the call mask;
  70148.       calling this function again with a call mask of 0000h undefines the
  70149.       specified handler (official documentation); specifying the same
  70150.       call mask and an address of 0000h:0000h undefines the handler (real
  70151.       life)
  70152.     some versions of the documentation erroneously reverse the order of
  70153.       the bits in the call mask
  70154. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  70155.  
  70156. Bitfields for mouse call mask:
  70157. Bit(s)    Description    (Table 1705)
  70158.  0    call if mouse moves
  70159.  1    call if left button pressed
  70160.  2    call if left button released
  70161.  3    call if right button pressed
  70162.  4    call if right button released
  70163.  5    call if shift button pressed during event
  70164.  6    call if ctrl key pressed during event
  70165.  7    call if alt key pressed during event
  70166. Note:    at least one of 5-7 must be set
  70167.  
  70168. (Table 1706)
  70169. Values user handler is called with:
  70170.     AX = condition mask (same bit assignments as call mask)
  70171.     BX = button state
  70172.     CX = cursor column
  70173.     DX = cursor row
  70174.     SI = horizontal mickey count
  70175.     DI = vertical mickey count
  70176. Return: registers preserved
  70177. Note:    in text modes, the row and column will be reported as a multiple of
  70178.       the cell size, typically 8x8 pixels
  70179. --------M-330019-----------------------------
  70180. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  70181.     AX = 0019h
  70182.     CX = call mask (see #1705)
  70183. Return: BX:DX = user interrupt vector
  70184.     CX = call mask (0000h if not found)
  70185. Note:    attempts to find a user event handler (defined by function 18h)
  70186.       whose call mask matches CX
  70187. SeeAlso: AX=0018h
  70188. --------M-33001A-----------------------------
  70189. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  70190.     AX = 001Ah
  70191.     BX = horizontal speed \
  70192.     CX = vertical speed   / (see AX=000Fh)
  70193.     DX = double speed threshold (see AX=0013h)
  70194. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  70195. --------M-33001B-----------------------------
  70196. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  70197.     AX = 001Bh
  70198. Return: BX = horizontal speed
  70199.     CX = vertical speed
  70200.     DX = double speed threshold
  70201. SeeAlso: AX=000Bh,AX=001Ah
  70202. --------M-33001C-----------------------------
  70203. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  70204.     AX = 001Ch
  70205.     BX = rate (see #1707)
  70206. Notes:    only available on InPort mouse
  70207.     values greater than 4 may cause unpredictable driver behavior
  70208.  
  70209. (Table 1707)
  70210. Values for mouse interrupt rate:
  70211.  00h    no interrupts allowed
  70212.  01h    30 per second
  70213.  02h    50 per second
  70214.  03h    100 per second
  70215.  04h    200 per second
  70216. --------M-33001D-----------------------------
  70217. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  70218.     AX = 001Dh
  70219.     BX = display page number
  70220. Note:    the cursor will be displayed on the specified page
  70221. SeeAlso: AX=001Eh
  70222. --------M-33001E-----------------------------
  70223. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  70224.     AX = 001Eh
  70225. Return: BX = display page number
  70226. SeeAlso: AX=001Dh
  70227. --------M-33001F-----------------------------
  70228. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  70229.     AX = 001Fh
  70230. Return: AX = status
  70231.         001Fh successful
  70232.         ES:BX = INT 33 vector before mouse driver was first installed
  70233.         FFFFh unsuccessful
  70234. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  70235.     if you restore INT 33 to ES:BX, driver will be completely disabled
  70236.     many drivers return AX=001Fh even though the driver has been disabled
  70237. SeeAlso: AX=0020h
  70238. --------M-330020-----------------------------
  70239. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  70240.     AX = 0020h
  70241. Return: AX = status
  70242.         0020h successful
  70243.         FFFFh unsuccessful
  70244. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  70245.       which were removed by function 1Fh
  70246.     Microsoft's documentation states that no value is returned
  70247. SeeAlso: AX=001Fh
  70248. --------M-330021-----------------------------
  70249. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  70250.     AX = 0021h
  70251. Return: AX = status
  70252.         FFFFh if mouse driver installed
  70253.         BX = number of buttons (FFFFh = two buttons)
  70254.         0021h if mouse driver not installed
  70255. Note:    this call is identical to funtion 00h, but does not reset the mouse
  70256. SeeAlso: AX=0000h
  70257. --------M-330022-----------------------------
  70258. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  70259.     AX = 0022h
  70260.     BX = language (see #1708)
  70261. Note:    only available on international versions of the driver; US versions
  70262.       ignore this call
  70263. SeeAlso: AX=0023h
  70264.  
  70265. (Table 1708)
  70266. Values for mouse driver language:
  70267.  00h    English
  70268.  01h    French
  70269.  02h    Dutch
  70270.  03h    German
  70271.  04h    Swedish
  70272.  05h    Finnish
  70273.  06h    Spanish
  70274.  07h    Portugese
  70275.  08h    Italian
  70276. --------M-330023-----------------------------
  70277. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  70278.     AX = 0023h
  70279. Return: BX = language (see #1708)
  70280. Note:    the US version of the driver always returns zero
  70281. SeeAlso: AX=0022h
  70282. --------M-330024-----------------------------
  70283. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  70284.     AX = 0024h
  70285. Return: AX = FFFFh on error
  70286.     otherwise,
  70287.         BH = major version
  70288.         BL = minor version
  70289.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  70290.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  70291. SeeAlso: AX=004Dh,AX=006Dh
  70292. --------M-330025-----------------------------
  70293. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  70294.     AX = 0025h
  70295. Return: AX = general information (see #1709)
  70296.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  70297.     CX = mouse code active flag (for OS/2)
  70298.     DX = mouse driver busy flag (for OS/2)
  70299.  
  70300. Bitfields for general mouse driver information:
  70301. Bit(s)    Description    (Table 1709)
  70302.  15    driver loaded as device driver rather than TSR
  70303.  14    driver is newer integrated type
  70304.  13,12    current cursor type
  70305.     00 software text cursor
  70306.     01 hardware text cursor (CRT Controller's cursor)
  70307.     1X graphics cursor
  70308.  11-8    interrupt rate (see #1707)
  70309.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  70310.       integrated driver type
  70311. --------M-330026-----------------------------
  70312. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  70313.     AX = 0026h
  70314. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  70315.     CX = maximum virtual X (for current video mode)
  70316.     DX = maximum virtual Y
  70317. Note:    for driver versions before 7.05, this call returns the currently-set
  70318.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  70319. SeeAlso: AX=0031h
  70320. --------M-330026-----------------------------
  70321. INT 33 - Genius Mouse 9.06 - ???
  70322.     AX = 0026h
  70323. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  70324. --------M-330027-----------------------------
  70325. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  70326.     AX = 0027h
  70327. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  70328.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  70329.     CX = horizontal mickeys moved since last call
  70330.     DX = vertical mickeys moved since last call
  70331. SeeAlso: AX=000Bh
  70332. --------M-330028-----------------------------
  70333. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  70334.     AX = 0028h
  70335.     CX = new video mode (call is NOP if 0000h)
  70336.     DH = Y font size (00h = default)
  70337.     DL = X font size (00h = default)
  70338. Return: CL = status (00h = successful)
  70339. Notes:    DX is ignored unless the selected video mode supports font size control
  70340.     when CX=0000h, an internal flag that had been set by a previous call
  70341.       is cleared; this is required before a mouse reset
  70342. SeeAlso: AX=0029h,INT 10/AH=00h
  70343. --------M-330029-----------------------------
  70344. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  70345.     AX = 0029h
  70346.     CX = previous video mode
  70347.         0000h get first supported video mode
  70348.         other get next supported mode after mode CX
  70349. Return: CX = first/next video mode (0000h = no more video modes)
  70350.     DS:DX -> description of video mode or 0000h:0000h if none
  70351. Notes:    the enumerated video modes may be in any order and may repeat
  70352.     the description string (if available) is terminated by '$' followed by
  70353.       a NUL byte
  70354. SeeAlso: AX=0028h
  70355. --------M-33002A-----------------------------
  70356. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  70357.     AX = 002Ah
  70358. Return: AX = internal counter controlling cursor visibility
  70359.     BX = cursor hot spot column
  70360.     CX = cursor hot spot row
  70361.     DX = mouse type (see #1710)
  70362. Note:    the hot spot location is relative to the upper left corner of the
  70363.       cursor block and may range from -128 to +127 both horizontally and
  70364.       vertically
  70365. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  70366.  
  70367. (Table 1710)
  70368. Values for mouse type:
  70369.  00h    none
  70370.  01h    bus
  70371.  02h    serial
  70372.  03h    InPort
  70373.  04h    IBM
  70374.  05h    Hewlett-Packard
  70375. --------M-33002B-----------------------------
  70376. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  70377.     AX = 002Bh
  70378.     BX = active acceleration profile
  70379.         0001h-0004h or FFFFh to restore default curves
  70380.     ES:SI -> buffer containing acceleration profile data (see #1711)
  70381. Return: AX = success flag
  70382. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  70383.  
  70384. Format of acceleration profile data:
  70385. Offset    Size    Description    (Table 1711)
  70386.  00h    BYTE    length of acceleration profile 1
  70387.  01h    BYTE    length of acceleration profile 2
  70388.  02h    BYTE    length of acceleration profile 3
  70389.  03h    BYTE    length of acceleration profile 4
  70390.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  70391.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  70392.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  70393.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  70394.  84h 32 BYTEs    speedup factor for acceleration profile 1
  70395.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  70396.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  70397.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  70398.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  70399.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  70400.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  70401.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  70402. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  70403. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  70404. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  70405. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  70406. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  70407.       unused bytes in the speedup factor fields are filled with 10h
  70408. --------M-33002C-----------------------------
  70409. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  70410.     AX = 002Ch
  70411. Return: AX = status (0000h success)
  70412.     BX = currently-active acceleration profile
  70413.     ES:SI -> acceleration profile data (see #1711)
  70414. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  70415. --------M-33002D-----------------------------
  70416. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  70417.     AX = 002Dh
  70418.     BX = acceleration level
  70419.         0001h-0004h to set profile, or FFFFh to get current profile
  70420. Return: AX = status
  70421.         0000h successful
  70422.         ES:SI -> 16-byte blank-padded name of acceleration profile
  70423.         FFFEh invalid acceleration curve number
  70424.         ES:SI destroyed
  70425.     BX = active acceleration curve number
  70426. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  70427. --------M-33002E-----------------------------
  70428. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  70429.     AX = 002Eh
  70430.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  70431.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  70432. Return: AX = status (0000h success)
  70433.     ES:SI buffer filled with default names if BL nonzero on entry
  70434. Note:    not supported by Logitech driver v6.10
  70435. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  70436. --------M-33002F-----------------------------
  70437. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  70438.     AX = 002Fh
  70439. Return: AX = status
  70440. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  70441. SeeAlso: INT 2F/AH=53h
  70442. --------M-330030-----------------------------
  70443. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  70444.     AX = 0030h
  70445.     CX = command
  70446.         0000h get status of BallPoint device
  70447.         other set rotation angle and masks
  70448.         BX = rotation angle (-32768 to 32767 degrees)
  70449.         CH = primary button mask
  70450.         CL = secondary button mask
  70451. Return: AX = button status (FFFFh if no BallPoint) (see #1712)
  70452.     BX = rotation angle (0-360 degrees)
  70453.     CH = primary button mask
  70454.     CL = secondary button mask
  70455.  
  70456. Bitfields for BallPoint mouse button status:
  70457. Bit(s)    Description    (Table 1712)
  70458.  5    button 1
  70459.  4    button 2
  70460.  3    button 3
  70461.  2    button 4
  70462.  other    zero
  70463. --------M-330031-----------------------------
  70464. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  70465.     AX = 0031h
  70466. Return: AX = virtual X minimum
  70467.     BX = virtual Y minimum
  70468.     CX = virtual X maximum
  70469.     DX = virtual Y maximum
  70470. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  70471.       the default is minimum = 0 and maximum = absolute maximum
  70472.       (see AX=0026h)
  70473. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  70474. --------M-330032-----------------------------
  70475. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  70476.     AX = 0032h
  70477. Return: AX = active function flags (FFFFh for v8.10)
  70478.         bit 15: function 0025h supported
  70479.         bit 14: function 0026h supported
  70480.         ...
  70481.         bit 0:  function 0034h supported
  70482.     BX = ??? (0000h) officially unused
  70483.     CX = ??? (E000h) officially unused
  70484.     DX = ??? (0000h) officially unused
  70485. --------M-330033-----------------------------
  70486. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  70487.     AX = 0033h
  70488.     CX = size of buffer
  70489.         0000h get required buffer size
  70490.         Return: AX = 0000h
  70491.             CX = required size (0154h for Logitech v6.10, 0159h
  70492.                 for MS v8.10-8.20)
  70493.         other
  70494.         ES:DX -> buffer of CX bytes for mouse settings
  70495.         Return: AX = 0000h
  70496.             CX = number of bytes returned
  70497.             ES:DX buffer filled (see #1713)
  70498. SeeAlso: AX=002Bh
  70499.  
  70500. Format of mouse settings data buffer:
  70501. Offset    Size    Description    (Table 1713)
  70502.  00h    BYTE    mouse type
  70503.  01h    BYTE    current language
  70504.  02h    BYTE    horizontal sensitivity (00h-64h)
  70505.  03h    BYTE    vertical sensitivity (00h-64h)
  70506.  04h    BYTE    double-speed threshold (00h-64h)
  70507.  05h    BYTE    ballistic curve (01h-04h)
  70508.  06h    BYTE    interrupt rate (01h-04h)
  70509.  07h    BYTE    cursor override mask
  70510.  08h    BYTE    laptop adjustment
  70511.  09h    BYTE    memory type (00h-02h)
  70512.  0Ah    BYTE    SuperVGA support (00h,01h)
  70513.  0Bh    BYTE    rotation angle
  70514.  0Ch    BYTE    ???
  70515.  0Dh    BYTE    primary button (01h-04h)
  70516.  0Eh    BYTE    secondary button (01h-04h)
  70517.  0Fh    BYTE    click lock enabled (00h,01h)
  70518.  10h 324 BYTEs    acceleration profile data (see #1711)
  70519. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  70520. --------M-330034-----------------------------
  70521. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  70522.     AX = 0034h
  70523. Return: AX = status (0000h successful)
  70524.     ES:DX -> ASCIZ initialization (.INI) file name
  70525. --------M-330035-----------------------------
  70526. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  70527.     AX = 0035h
  70528.     BX = function
  70529.         FFFFh get current settings
  70530.         Return: AX = 0000h
  70531.             BH = style (see #1714)
  70532.             BL = size (see below)
  70533.             CH = threshold
  70534.             CL = active flag (00h disabled, 01h enabled)
  70535.             DX = delay
  70536.         other
  70537.         BH = pointer style (see #1714)
  70538.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  70539.         CH = threshold (00h-64h)
  70540.         CL = active flag (00h disable size change, 01h enable)
  70541.         DX = delay (0000h-0064h)
  70542.         Return: AX = 0000h
  70543. Note:    not supported by Logitech driver v6.10
  70544. SeeAlso: AX=0012h,AX=002Ah
  70545.  
  70546. (Table 1714)
  70547. Values for pointer style:
  70548.  00h    normal
  70549.  01h    reverse
  70550.  02h    transparent
  70551. --------M-330042-----------------------------
  70552. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  70553.     AX = 0042h
  70554. Return: AX = status
  70555.         0000h MSMOUSE not installed
  70556.         0042h functions 42h, 50h, and 52h not supported
  70557.         FFFFh successful
  70558.         BX = buffer size in bytes for functions 50h and 52h
  70559. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70560. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  70561. --------M-330043-----------------------------
  70562. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  70563.     AX = 0043h
  70564.     CX:BX -> configuration buffer (see #1715)
  70565.     DL = ???
  70566. Return: ???
  70567. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  70568.     this function is also supported by the Genius Mouse 9.06 driver
  70569.  
  70570. Format of Mouse Systems configuration buffer:
  70571. Offset    Size    Description    (Table 1715)
  70572.  00h    WORD    I/O port address
  70573.  02h    BYTE    ???
  70574.  03h    BYTE    interrupt number
  70575.  04h    BYTE    interrupt mask for interrupt controller
  70576.  05h  5 BYTEs    ???
  70577. --------M-330044CXCDEF-----------------------
  70578. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  70579.     AX = 0044h
  70580.     CX = CDEFh
  70581. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  70582. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70583. SeeAlso: AX=0045h
  70584. --------M-330045CXCDEF-----------------------
  70585. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  70586.     AX = 0045h
  70587.     CX = CDEFh
  70588. Return: AX = new state of resolution doubling flag
  70589. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70590. SeeAlso: AX=0044h
  70591. --------M-330047-----------------------------
  70592. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  70593.     AX = 0047h
  70594.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  70595. Return: ???
  70596. Note:    also supported by Genius Mouse 9.06 driver
  70597. SeeAlso: AX=0067h
  70598. --------M-330048BXCDEF-----------------------
  70599. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  70600.     AX = 0048h
  70601.     BX = CDEFh
  70602. Return: CX = ???
  70603.     BH = ???
  70604.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  70605. Note:    also supported by Genius Mouse 9.06 driver
  70606. --------M-33004B-----------------------------
  70607. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  70608.     AX = 004Bh
  70609. Return: ES:DI -> signature/description string if installed
  70610. Note:    the signature string in v7.04d is
  70611.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  70612. --------M-33004CBXCDEF-----------------------
  70613. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  70614.     AX = 004Ch
  70615.     BX = CDEFh
  70616. Note:    also supported by Genius Mouse 9.06
  70617. SeeAlso: AX=006Ch
  70618. --------M-33004D-----------------------------
  70619. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  70620.     AX = 004Dh
  70621. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  70622. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  70623.       mouse drivers
  70624.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  70625.       follows the above copyright message (KYE Corp. manufactures the
  70626.       driver)
  70627. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  70628. --------M-33004F-----------------------------
  70629. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  70630.     AX = 004Fh
  70631. Return: nothing
  70632. Note:    also supported by Genius Mouse 9.06
  70633. SeeAlso: AX=0043h,AX=0053h
  70634. --------M-330050-----------------------------
  70635. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  70636.     AX = 0050h
  70637.     BX = buffer size (ignored by some driver versions)
  70638.     ES:DX -> buffer
  70639. Return: AX = FFFFh if successful
  70640. Notes:    the buffer must be large enough to hold the entire state, or following
  70641.       data will be overwritten by state data in versions which ignore BX;
  70642.       use INT 33/AX=0042h to get the required size
  70643.     this function is also supported by the Genius Mouse 9.06 driver
  70644. SeeAlso: AX=0042h,AX=0052h
  70645. --------M-330052-----------------------------
  70646. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  70647.     AX = 0052h
  70648.     BX = buffer size (ignored by some driver versions)
  70649.     ES:DX -> buffer
  70650. Return: AX = FFFFh if successful
  70651. Note:    also supported by Genius Mouse 9.06 driver
  70652. SeeAlso: AX=0050h
  70653. --------M-330053-----------------------------
  70654. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  70655.     AX = 0053h
  70656. Return: nothing
  70657. Note:    also supported by Genius Mouse 9.06
  70658. SeeAlso: AX=0043h,AX=004Fh
  70659. --------M-330054CXCDEF-----------------------
  70660. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  70661.     AX = 0054h
  70662.     CX = CDEFh
  70663.     BX = new acceleration level (0-9)
  70664. Return: ???
  70665. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70666. SeeAlso: AX=005Ah
  70667. --------M-330055-----------------------------
  70668. INT 33 - Kraft Mouse - GET ???
  70669.     AX = 0055h
  70670. Return: CX = ???
  70671.     DX = ???
  70672.     ES = ???
  70673. --------M-330058-----------------------------
  70674. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  70675.     AX = 0058h
  70676. Return: AX = CS of driver
  70677.     CX:BX = original INT 33 vector
  70678.     DX = ???
  70679. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70680. --------M-33005A-----------------------------
  70681. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  70682.     AX = 005Ah
  70683.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  70684.     DX:SI -> buffer containing thresholds??? (CX words)
  70685.     DX:BX -> buffer containing acceleration values???
  70686.         (9*14h words, only first CX of each 14h used)
  70687.     ???
  70688. Return: CF clear
  70689.     ???
  70690. Note:    this function is also supported by Genius Mouse 9.06
  70691. SeeAlso: AX=0054h
  70692. --------M-330061BXCDEF-----------------------
  70693. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  70694.     AX = 0061h
  70695.     BX = CDEFh
  70696. Return: CX = ???
  70697. Note:    also supported by Genius Mouse 9.06
  70698. --------M-330067-----------------------------
  70699. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  70700.     AX = 0067h
  70701. Return: BL = number of buttons???
  70702. Note:    also supported by Genius Mouse 9.06
  70703. SeeAlso: AX=0047h
  70704. --------M-33006C-----------------------------
  70705. INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
  70706.     AX = 006Ch
  70707.     BX = new IRQ (0003h or 0004h), or 0000h to get current values only
  70708.     CL = new IRQmask (sent to 8259)
  70709.     DX = new base I/O port
  70710. Return: BX = current IRQ
  70711.     DX = light pen state???
  70712. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  70713.       TRUEDOX Technology Corporation
  70714. SeeAlso: AX=00A1h,AX=0666h
  70715. --------M-33006CBXCDEF-----------------------
  70716. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  70717.     AX = 006Ch
  70718.     BX = CDEFh
  70719. Note:    also supported by Genius Mouse 9.06
  70720. SeeAlso: AX=004Ch
  70721. --------M-33006D-----------------------------
  70722. INT 33 - MS MOUSE - GET VERSION STRING
  70723.     AX = 006Dh
  70724. Return: ES:DI -> Microsoft version number of resident driver (see #1716)
  70725. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  70726.       drivers
  70727.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  70728.       Microsoft version as 7.00 even though they do not support any of the
  70729.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  70730.       (the Genius Mouse driver supports function 0026h, but it differs
  70731.       from the Microsoft function)
  70732.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  70733.       but as 6.24 through AX=0024h
  70734. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  70735.  
  70736. Format of Microsoft version number:
  70737. Offset    Size    Description    (Table 1716)
  70738.  00h    BYTE    major version
  70739.  01h    BYTE    minor version (BCD)
  70740. --------M-330070BXABCD-----------------------
  70741. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  70742.     AX = 0070h
  70743.     BX = ABCDh
  70744. Return: AX = ABCDh if installed
  70745.         BX:CX -> data structure (see #1717)
  70746. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  70747.     the v7.01 POPUP.COM and menu drivers also check for the signature
  70748.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  70749.     if POPUP is not loaded, the returned data structure contains the proper
  70750.       signature at offset 00h, but not at offset 08h
  70751.  
  70752. Format of Mouse Systems POPUP.COM data structure:
  70753. Offset    Size    Description    (Table 1717)
  70754.  00h    WORD    signature ABCDh
  70755.  02h    DWORD    pointer to info structure??? (see #1718)
  70756.  06h  2 BYTEs    ???
  70757.  08h    WORD    signature ABCDh
  70758.  
  70759. Format of Mouse Systems POPUP.COM info structure:
  70760. Offset    Size    Description    (Table 1718)
  70761.  00h    WORD    driver version
  70762.  02h  8 BYTEs    ???
  70763.  0Ah    WORD    segment of ???
  70764.     ???
  70765. --------M-330072BXABCD-----------------------
  70766. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  70767.     AX = 0072h
  70768.     BX = ABCDh
  70769. Return: ???
  70770. Note:    this function is also supported by the Genius Mouse 9.06 driver
  70771. --------M-330073BXCDEF-----------------------
  70772. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  70773.     AX = 0073h
  70774.     BX = CDEFh
  70775.     ES:DX -> 3-byte buffer for button assignments
  70776. Return: CX = number of buttons???
  70777.     ES:DX buffer filled (default is "LMR")
  70778. Note:    also supported by Genius Mouse 9.06
  70779. SeeAlso: AX=0067h
  70780. --------M-3300A0-----------------------------
  70781. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
  70782.     AX = 00A0h
  70783. Return: nothing
  70784. Note:    this function is only available if the mouse mode is switchable
  70785.       through the power pins
  70786. SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
  70787. --------M-3300A1-----------------------------
  70788. INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
  70789.     AX = 00A1h
  70790. Return: nothing
  70791. Notes:    this function is only available if the mouse mode is switchable
  70792.       through the power pins
  70793.     this is the mouse driver for the Dell Dimension series of computers, by
  70794.       TRUEDOX Technology Corporation
  70795. SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
  70796. --------M-3300A6-----------------------------
  70797. INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
  70798.     AX = 00A6h
  70799.     BX = new software resolution
  70800.         0001h 50-200 dpi
  70801.         0002h 200-400 dpi
  70802.         0003h 400-800 dpi
  70803. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  70804.       TRUEDOX Technology Corporation
  70805. SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
  70806. --------M-33012E-----------------------------
  70807. INT 33 - MS MOUSE v8.10+ - ???
  70808.     AX = 012Eh
  70809.     BL = ???
  70810. Return: AX = 0000h
  70811. Note:    not supported by Logitech driver v6.10
  70812. SeeAlso: AX=002Eh,AX=022Eh
  70813. --------M-33022E-----------------------------
  70814. INT 33 - MS MOUSE v8.10+ - ???
  70815.     AX = 022Eh
  70816.     BL = ???
  70817. Return: AX = 0000h
  70818. Note:    not supported by Logitech driver v6.10
  70819. SeeAlso: AX=002Eh,AX=012Eh
  70820. --------M-330666-----------------------------
  70821. INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
  70822.     AX = 0666h
  70823. Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
  70824. Note:    this is the mouse driver for the Dell Dimension series of computers,
  70825.       by TRUEDOX Technology Corporation
  70826. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  70827. --------M-33136C-----------------------------
  70828. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70829.     AX = 136Ch
  70830.     BX = ???
  70831. Return: AX = ???
  70832.     BX = ???
  70833. --------M-33146C-----------------------------
  70834. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  70835.     AX = 146Ch
  70836.     BL = function
  70837.         00h set ???
  70838.         BH = new value (zero/nonzero to clear/set)
  70839.         else get ???
  70840.         Return: ???
  70841. --------M-33156C-----------------------------
  70842. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  70843.     AX = 156Ch
  70844. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  70845.     ES:SI -> version string, terminated with CRLF
  70846. --------M-33166C-----------------------------
  70847. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70848.     AX = 166Ch
  70849.     BL = ???
  70850.         00h ???
  70851.         01h ???
  70852.         other ???
  70853.         BH = new value of ???
  70854.         Return: AX = FFFFh
  70855. --------M-33176C-----------------------------
  70856. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70857.     AX = 176Ch
  70858.     ???
  70859. Return: ???
  70860. --------M-33186C-----------------------------
  70861. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70862.     AX = 186Ch
  70863.     ???
  70864. Return: ???
  70865. --------M-33196C-----------------------------
  70866. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70867.     AX = 196Ch
  70868.     ???
  70869. Return: ???
  70870. --------M-331A6C-----------------------------
  70871. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  70872.     AX = 1A6Ch
  70873. Return: AX = FFFFh
  70874.     BX = ???
  70875.     CX = ???
  70876. SeeAlso: AX=1B6Ch
  70877. --------M-331B6C-----------------------------
  70878. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  70879.     AX = 1B6Ch
  70880.     BX = new value for ??? (0000h-0003h)
  70881. Return: AX = FFFFh
  70882. SeeAlso: AX=1A6Ch
  70883. --------M-331C6C-----------------------------
  70884. INT 33 - LOGITECH MOUSE v6.10+ - ???
  70885.     AX = 1C6Ch
  70886.     BX = ???
  70887.         <42h ???
  70888.         =42h ???
  70889.         >42h ???
  70890.         ES:DI -> ???
  70891.         Return: AX = ???
  70892. --------M-331D6C-----------------------------
  70893. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  70894.     AX = 1D6Ch
  70895. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  70896. SeeAlso: AX=1E6Ch
  70897. --------M-331E6C-----------------------------
  70898. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  70899.     AX = 1E6Ch
  70900.     BX = direction (0=north, 1=south, 2=east, 3=west)
  70901. SeeAlso: AX=1D6Ch
  70902. --------M-331F6C-----------------------------
  70903. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  70904.     AX = 1F6Ch
  70905. Return: BX = 0=off, 1=on
  70906.     CX = 1=low, 2=high
  70907. SeeAlso: AX=002Ch,AX=236Ch
  70908. --------M-33206C-----------------------------
  70909. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  70910.     AX = 206Ch
  70911.     BX = parameter (00h = right, FFh = left)
  70912. SeeAlso: AX=216Ch
  70913. --------M-33216C-----------------------------
  70914. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  70915.     AX = 216Ch
  70916. Return: BX = parameter (00h = right, FFh = left)
  70917. SeeAlso: AX=206Ch
  70918. --------M-33226C-----------------------------
  70919. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  70920.     AX = 226Ch
  70921. Note:    this only frees memory; does not restore hooked interrupts
  70922. --------M-33236C-----------------------------
  70923. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  70924.     AX = 236Ch
  70925.     BX = 0=off, 1=on
  70926.     CX = 1=low, 2=high
  70927. SeeAlso: AX=002Ch,AX=1F6Ch
  70928. --------M-33246C-----------------------------
  70929. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  70930.     AX = 246Ch
  70931.     ES:DX -> parameter table buffer (see #1719)
  70932. Return: AX = FFFFh if driver installed for serial mouse
  70933. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  70934.  
  70935. Format of Logitech Mouse parameter table:
  70936. Offset    Size    Description    (Table 1719)
  70937.  00h    WORD    baud rate divided by 100  (serial mouse only)
  70938.  02h    WORD    emulation          (serial mouse only)
  70939.  04h    WORD    report rate          (serial mouse only)
  70940.  06h    WORD    firmware revision      (serial mouse only)
  70941.  08h    WORD    00h              (serial mouse only)
  70942.  0Ah    WORD    port              (serial mouse only)
  70943.  0Ch    WORD    physical buttons
  70944.  0Eh    WORD    logical buttons
  70945. --------M-33256CBX0000-----------------------
  70946. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  70947.     AX = 256Ch
  70948.     BX = 0000h
  70949.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  70950. Return: AX = FFFFh if driver installed for serial mouse
  70951. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  70952. --------M-33256CBX0001-----------------------
  70953. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  70954.     AX = 256Ch
  70955.     BX = 0001h
  70956.     CX = emulation type (see #1720)
  70957. Return: AX = FFFFh if driver installed for serial mouse
  70958. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  70959.  
  70960. (Table 1720)
  70961. Values for Logitech mouse emulation type:
  70962.  00h    5 byte packed binary
  70963.  01h    3 byte packed binary
  70964.  02h    hexadecimal
  70965.  03h    relative bit pad
  70966.  04h    not supported
  70967.  05h    MM Series
  70968.  06h    not supported
  70969.  07h    Microsoft
  70970. --------M-33256CBX0002-----------------------
  70971. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  70972.     AX = 256Ch
  70973.     BX = 0002h
  70974.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  70975. Return: AX = FFFFh if driver installed for serial mouse
  70976. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  70977. --------M-33256CBX0003-----------------------
  70978. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  70979.     AX = 256Ch
  70980.     BX = 0003h
  70981.     CX = port (1, 2)
  70982. Return: AX = FFFFh if driver installed for serial mouse
  70983. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  70984. --------M-33256CBX0004-----------------------
  70985. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  70986.     AX = 256Ch
  70987.     BX = 0004h
  70988.     CX = buttons (2, 3)
  70989. Return: AX = FFFFh if driver installed for serial mouse
  70990. SeeAlso: AX=246Ch,AX=276Ch
  70991. --------M-33266C-----------------------------
  70992. INT 33 - LOGITECH MOUSE - GET VERSION???
  70993.     AX = 266Ch
  70994. Return: BX = 'SS'
  70995.     CH = '4'  major version number
  70996.     CL = '1'  minor version number
  70997. SeeAlso: AX=006Dh
  70998. --------M-33276C-----------------------------
  70999. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  71000.     AX = 276Ch
  71001. SeeAlso: AX=256Ch
  71002. --------M-333000-----------------------------
  71003. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  71004.     AX = 3000h
  71005. Return: AX = FFFFh if installed
  71006.         BX = version number (BH = major, BL = minor)
  71007. Program: SMD is a programmer's library by Andy Hakim which provides a
  71008.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  71009.       SMD-based TSR which replaces the block mouse cursor in text
  71010.       applications.
  71011. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  71012. --------M-333001-----------------------------
  71013. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  71014.     AX = 3001h
  71015. Return: AX = status (0000h = disabled, 0001h = enabled)
  71016. Note:    SMD remains disabled if running under Desqview or in graphics mode
  71017. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  71018. --------M-333002-----------------------------
  71019. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  71020.     AX = 3002h
  71021. Return: AX = status (0000h = disabled, 0001h = enabled)
  71022. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  71023. --------M-333003-----------------------------
  71024. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  71025.     AX = 3003h
  71026.     BL = data structure selector
  71027.         00h Primary Bitmap (used for 25 line mode)
  71028.         01h Secondary Bitmap (used for 43/50 line modes)
  71029.         02h Sacrifice Character Map
  71030.         03h Program Information
  71031. Return: ES:DX -> selected data structure
  71032. SeeAlso: AX=3000h
  71033.  
  71034. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
  71035. Offset    Size    Description    (Table 1721)
  71036.  00h    BYTE    vertical size of bitmap (00h - 10h)
  71037.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  71038.  02h    BYTE    vertical hotspot position (00h - 10h)
  71039.  03h    BYTE    horizontal hotspot position (00h - 10h)
  71040.  04h 16 WORDs    cursor bitmap data
  71041.  14h 16 WORDs    screen bitmap data
  71042.  
  71043. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
  71044. Offset    Size    Description    (Table 1722)
  71045.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  71046.  01h    BYTE    actual character for the corresponding position on the screen
  71047.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  71048.  03h    BYTE         | 0h | 1h | 2h |      cursor
  71049.  04h    BYTE         |----+----+----|
  71050.  05h    BYTE         | 3h | 4h | 5h |
  71051.  06h    BYTE         |----+----+----|
  71052.  07h    BYTE         | 6h | 7h | 8h |
  71053.  08h    BYTE         +--------------+
  71054.  
  71055. Format of Program Information [SMD_INFO_STRUCT]:
  71056. Offset    Size    Description    (Table 1723)
  71057.  00h    WORD    segment of old interrupt 33h handler
  71058.  02h    WORD    offset of old interrupt 33h handler
  71059.  04h    WORD    PSP of SMD
  71060.  06h    BYTE    ENABLE/DISABLE manual setting status
  71061.  07h    BYTE    ENABLE/DISABLE internal usage status
  71062. --------M-333004-----------------------------
  71063. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  71064.     AX = 3004h
  71065. SeeAlso: AX=3000h
  71066. --------M-333005-----------------------------
  71067. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  71068.     AX = 3005h
  71069. SeeAlso: AX=3000h
  71070. --------M-334F00-----------------------------
  71071. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  71072.     AX = 4F00h
  71073. Return: AX = 004Fh if supported
  71074.     BX = ???
  71075.     ES:DI -> ???
  71076. SeeAlso: AX=4F01h
  71077. --------M-334F01-----------------------------
  71078. INT 33 - LOGITECH MOUSE v6.10+ - ???
  71079.     AX = 4F01h
  71080.     ES = ???
  71081. Return: AX = 004Fh if supported
  71082.     ES:DI -> ???
  71083. SeeAlso: AX=4F00h
  71084. --------T-33FFE6-----------------------------
  71085. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  71086.     AX = FFE6h
  71087.     CX = length of buffer
  71088.     ES:DI -> buffer for program name
  71089. Return: ES:DI buffer filled
  71090. Program: Switch-It is a task switcher supporting up to 100 programs
  71091.       simultaneously by Better Software Technology, Inc.
  71092. --------T-33FFE7-----------------------------
  71093. INT 33 - Switch-It v3.23 - GET ???
  71094.     AX = FFE7h
  71095. Return: AX = ???
  71096. --------T-33FFE8-----------------------------
  71097. INT 33 - Switch-It v3.23 - ???
  71098.     AX = FFE8h
  71099.     CX = length of name including terminating NUL
  71100.     DS:SI -> ASCIZ program pathname
  71101. --------T-33FFE9-----------------------------
  71102. INT 33 - Switch-It v3.23 - SET ???
  71103.     AX = FFE9h
  71104.     BX = ???
  71105. --------T-33FFEA-----------------------------
  71106. INT 33 - Switch-It v3.23 - SET ???
  71107.     AX = FFEAh
  71108.     BL = ???
  71109. --------T-33FFEB-----------------------------
  71110. INT 33 - Switch-It v3.23 - SET ??? FLAG
  71111.     AX = FFEBh
  71112. --------T-33FFEC-----------------------------
  71113. INT 33 - Switch-It v3.23 - SET ???
  71114.     AX = FFECh
  71115.     BL = ???
  71116. --------T-33FFED-----------------------------
  71117. INT 33 - Switch-It v3.23 - GET ???
  71118.     AX = FFEDh
  71119. Return: AX = ??? (0001h)
  71120.     BX = ???
  71121. Program: Switch-It is a task switcher supporting up to 100 programs
  71122.       simultaneously by Better Software Technology, Inc.
  71123. --------T-33FFEE-----------------------------
  71124. INT 33 - Switch-It v3.23 - GET ???
  71125.     AX = FFEEh
  71126. Return: AX = ???
  71127. --------T-33FFEF-----------------------------
  71128. INT 33 - Switch-It v3.23 - GET ???
  71129.     AX = FFEFh
  71130. Return: BX:AX -> ???
  71131. --------T-33FFF0-----------------------------
  71132. INT 33 - Switch-It v3.23 - SET ???
  71133.     AX = FFF0h
  71134.     BL = ???
  71135. --------T-33FFF1-----------------------------
  71136. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  71137.     AX = FFF1h
  71138. Return: BX:AX -> ASCIZ pathname of configuration file
  71139. Program: Switch-It is a task switcher supporting up to 100 programs
  71140.       simultaneously by Better Software Technology, Inc.
  71141. --------T-33FFF2-----------------------------
  71142. INT 33 - Switch-It v3.23 - SET ??? FLAG
  71143.     AX = FFF2h
  71144. Return: AL = 01h
  71145. --------T-33FFF3-----------------------------
  71146. INT 33 - Switch-It v3.23 - GET ???
  71147.     AX = FFF3h
  71148. Return: AX = ???
  71149. --------T-33FFF4-----------------------------
  71150. INT 33 - Switch-It v3.23 - SET ???
  71151.     AX = FFF4h
  71152.     BX = ???
  71153.     CX = ???
  71154. --------T-33FFF5-----------------------------
  71155. INT 33 - Switch-It v3.23 - GET ???
  71156.     AX = FFF5h
  71157. Return: AX = ???
  71158. --------T-33FFF6-----------------------------
  71159. INT 33 - Switch-It v3.23 - GET ???
  71160.     AX = FFF6h
  71161. Return: AX = ???
  71162. --------T-33FFF7-----------------------------
  71163. INT 33 - Switch-It v3.23 - GET ???
  71164.     AX = FFF7h
  71165.     BX = index of ???
  71166. Return: AX = ???
  71167. --------T-33FFF8-----------------------------
  71168. INT 33 - Switch-It v3.23 - ???
  71169.     AX = FFF8h
  71170.     BX = ???
  71171.     CX = length of program name, including terminating NUL
  71172.     DS:SI -> ASCIZ program pathname
  71173. Return: ???
  71174. Program: Switch-It is a task switcher supporting up to 100 programs
  71175.       simultaneously by Better Software Technology, Inc.
  71176. --------T-33FFF9-----------------------------
  71177. INT 33 - Switch-It v3.23 - NOP
  71178.     AX = FFF9h
  71179. --------T-33FFFA-----------------------------
  71180. INT 33 - Switch-It v3.23 - SET ???
  71181.     AX = FFFAh
  71182.     BX = index of program
  71183. SeeAlso: AX=FFFBh,AX=FFFCh
  71184. --------T-33FFFB-----------------------------
  71185. INT 33 - Switch-It v3.23 - GET ???
  71186.     AX = FFFBh
  71187.     BX = index of program
  71188. Return: AX = ??? (0000h or 0001h)
  71189. SeeAlso: AX=FFFAh,AX=FFFCh
  71190. --------T-33FFFC-----------------------------
  71191. INT 33 - Switch-It v3.23 - CLEAR ???
  71192.     AX = FFFCh
  71193.     BX = index of program
  71194. SeeAlso: AX=FFFAh,AX=FFFCh
  71195. --------T-33FFFD-----------------------------
  71196. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  71197.     AX = FFFDh
  71198. Return: AX = first available segment???
  71199.     BX = paragraph of top of conventional memory
  71200.     DX = PSP segment of SI.EXE
  71201. --------T-33FFFE-----------------------------
  71202. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  71203.     AX = FFFEh
  71204. Return: BX = ???
  71205.     DX = 5349h ("SI")
  71206. --------T-33FFFF-----------------------------
  71207. INT 33 - Switch-It v3.23 - ???
  71208.     AX = FFFFh
  71209.     BX = ???
  71210. Program: Switch-It is a task switcher supporting up to 100 programs
  71211.       simultaneously by Better Software Technology, Inc.
  71212. --------r-34---------------------------------
  71213. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  71214. Desc:    this interrupt is used to emulate floating-point instructions with
  71215.       an opcode of D8h
  71216. Note:    the floating-point emulators in Borland and Microsoft languages and
  71217.       Lahey FORTRAN use this interrupt
  71218. SeeAlso: INT 35,INT 3E
  71219. --------r-35---------------------------------
  71220. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  71221. Desc:    this interrupt is used to emulate floating-point instructions with
  71222.       an opcode of D9h
  71223. Note:    the floating-point emulators in Borland and Microsoft languages and
  71224.       Lahey FORTRAN use this interrupt
  71225. SeeAlso: INT 34,INT 36
  71226. --------r-36---------------------------------
  71227. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  71228. Desc:    this interrupt is used to emulate floating-point instructions with
  71229.       an opcode of DAh
  71230. Note:    the floating-point emulators in Borland and Microsoft languages and
  71231.       Lahey FORTRAN use this interrupt
  71232. SeeAlso: INT 35,INT 37
  71233. --------r-37---------------------------------
  71234. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  71235. Desc:    this interrupt is used to emulate floating-point instructions with
  71236.       an opcode of DBh
  71237. Note:    the floating-point emulators in Borland and Microsoft languages and
  71238.       Lahey FORTRAN use this interrupt
  71239. SeeAlso: INT 36,INT 38
  71240. --------r-38---------------------------------
  71241. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  71242. Desc:    this interrupt is used to emulate floating-point instructions with
  71243.       an opcode of DCh
  71244. Note:    the floating-point emulators in Borland and Microsoft languages and
  71245.       Lahey FORTRAN use this interrupt
  71246. SeeAlso: INT 37,INT 39
  71247. --------O-38---------------------------------
  71248. INT 38 - PC-MOS/386 v3.0 - API
  71249. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  71250.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  71251.       12h
  71252. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  71253. --------r-39---------------------------------
  71254. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  71255. Desc:    this interrupt is used to emulate floating-point instructions with
  71256.       an opcode of DDh
  71257. Note:    the floating-point emulators in Borland and Microsoft languages and
  71258.       Lahey FORTRAN use this interrupt
  71259. SeeAlso: INT 38,INT 3A
  71260. --------r-3A---------------------------------
  71261. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  71262. Desc:    this interrupt is used to emulate floating-point instructions with
  71263.       an opcode of DEh
  71264. Note:    the floating-point emulators in Borland and Microsoft languages and
  71265.       Lahey FORTRAN use this interrupt
  71266. SeeAlso: INT 39,INT 3B
  71267. --------r-3B---------------------------------
  71268. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  71269. Desc:    this interrupt is used to emulate floating-point instructions with
  71270.       an opcode of DFh
  71271. Note:    the floating-point emulators in Borland and Microsoft languages and
  71272.       Lahey FORTRAN use this interrupt
  71273. SeeAlso: INT 3A,INT 3C
  71274. --------r-3C---------------------------------
  71275. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  71276. Notes:    the floating-point emulators in Borland and Microsoft languages and
  71277.       Lahey FORTRAN use this interrupt
  71278.     the generated code is  CD 3C xy mm ....
  71279.       where xy is a modified ESC instruction and mm is the modR/M byte.
  71280.       The xy byte appears to be encoded as
  71281.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  71282.       where "ss" specifies the segment override:
  71283.         00 -> DS:
  71284.         01 -> SS:
  71285.         10 -> CS:
  71286.         11 -> ES:
  71287. SeeAlso: INT 3B,INT 3D
  71288. --------r-3D---------------------------------
  71289. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  71290. Notes:    the floating-point emulators in Borland and Microsoft languages and
  71291.       Lahey FORTRAN use this interrupt
  71292.     this vector is modified but not restored by Direct Access v4.0, and
  71293.       may be left dangling by other programs written with the same version
  71294.       of compiled BASIC
  71295. SeeAlso: INT 3C,INT 3E
  71296. --------r-3E---------------------------------
  71297. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  71298. Notes:    the two bytes following the INT 3E instruction are the subcode and
  71299.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  71300.       is a register count (01h-08h)
  71301.     this vector is modified but not restored by Direct Access v4.0, and
  71302.       may be left dangling by other programs written with the same version
  71303.       of compiled BASIC
  71304. SeeAlso: INT 3D
  71305.  
  71306. (Table 1724)
  71307. Values for Borland floating-point shortcut subcode:
  71308. Subcode        Function
  71309.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  71310.       top of the stack prior to the INT 3E with the 8087 register contents
  71311.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  71312.       of 8086 stack
  71313.  E0h    round TOS and R1 to single precision, compare, pop twice
  71314.       returns AX=8087 status word, FLAGS=8087 condition bits
  71315.  E2h    round TOS and R1 to double precision, compare, pop twice
  71316.       returns AX=8087 status word, FLAGS=8087 condition bits
  71317.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  71318.       field to the undocumented value 01h; this results in actually
  71319.       rounding to single precision
  71320.  E4h    compare TOS/R1 with two POP's
  71321.       returns FLAGS=8087 condition bits
  71322.  E6h    compare TOS/R1 with POP
  71323.       returns FLAGS=8087 condition bits
  71324.  E8h    FTST (check TOS value)
  71325.       returns FLAGS=8087 condition bits
  71326.  EAh    FXAM (check TOS value)
  71327.       returns AX=8087 status word
  71328.  ECh    sine(ST0)
  71329.  EEh    cosine(ST0)
  71330.  F0h    tangent(ST0)
  71331.  F2h    arctangent(ST0)
  71332.  F4h    ST0 = ln(ST0)
  71333.  F6h    ST0 = log2(ST0)
  71334.  F8h    ST0 = log10(ST0)
  71335.  FAh    ST0 = e**ST0
  71336.  FCh    ST0 = 2**ST0
  71337.  FEh    ST0 = 10**ST0
  71338. --------r-3F---------------------------------
  71339. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  71340. Notes:    INT 3F is the default, and may be overridden while linking
  71341.     this vector is modified but not restored by Direct Access v4.0, and
  71342.       may be left dangling by other programs written with the same version
  71343.       of compiled BASIC
  71344. SeeAlso: INT FE"OVERLAY"
  71345. --------r-3F---------------------------------
  71346. INT 3F - Microsoft Dynamic Link Library manager
  71347. SeeAlso: INT 21/AH=4Bh
  71348. --------B-40---------------------------------
  71349. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  71350. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  71351. --------h-40---------------------------------
  71352. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  71353. SeeAlso: INT 41"Z100",INT FF"Z100"
  71354. --------O-40---------------------------------
  71355. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  71356.     AL = operation
  71357.         00h close file
  71358.         40h open file for reading
  71359.         80h open file for writing
  71360.         C0h open file for random access
  71361.     DS:BX -> CR-terminated filename
  71362. Return: AL = file handle (00h if file closed or could not be opened)
  71363. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  71364.       6502-based Master 128 which uses the original CPU as an I/O processor
  71365. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  71366. --------B-41---------------------------------
  71367. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  71368. Note:    the default parameter table array is located at F000h:E401h in 100%
  71369.       compatible BIOSes; the pointer may be overridden by the hard disk
  71370.       controller's BIOS to support drive formats unknown to the ROM BIOS
  71371. SeeAlso: INT 13/AH=09h,INT 1E,INT 46,INT 60"Adaptec",INT C0"AMI"
  71372.  
  71373. Format of fixed disk parameters:
  71374. Offset    Size    Description    (Table 1725)
  71375.  00h    WORD    number of cylinders
  71376.  02h    BYTE    number of heads
  71377.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  71378.  05h    WORD    starting write precompensation cylinder number
  71379.  07h    BYTE    maximum ECC burst length (XT only)
  71380.  08h    BYTE    control byte (see #1726,#1727)
  71381.  09h    BYTE    standard timeout (XT only, 0 for others)
  71382.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  71383.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  71384.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  71385.  0Eh    BYTE    number of sectors per track (AT and later only)
  71386.  0Fh    BYTE    reserved
  71387. SeeAlso: #0160,#0161
  71388.  
  71389. Bitfields for XT fixed disk control byte:
  71390. Bit(s)    Description    (Table 1726)
  71391.  2-0    drive step speed
  71392.     000  3ms
  71393.     100  200ms
  71394.     101  70ms (default)
  71395.     110  3ms
  71396.     111  3ms
  71397.  5-3    unused
  71398.  6    disable ECC retries
  71399.  7    disable access retries
  71400.  
  71401. Bitfields for AT fixed disk control byte:
  71402. Bit(s)    Description    (Table 1727)
  71403.  0    unused
  71404.  1    reserved (0)  (disable IRQ)
  71405.  2    reserved (0)  (no reset)
  71406.  3    set if more than 8 heads
  71407.  4    always 0
  71408.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  71409.  6    disable ECC retries
  71410.  7    disable access retries
  71411. --------h-41---------------------------------
  71412. INT 41 - Z100 - Master 8259 - Processor Swap
  71413. SeeAlso: INT 40"Z100",INT 42"Z100"
  71414. --------O-41---------------------------------
  71415. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  71416.     AL = function
  71417.         01h put bytes sequentially
  71418.         02h put bytes, ignoring sequential pointer
  71419.         03h get bytes sequentially
  71420.         04h get bytes, ignoring sequential pointer
  71421.         05h get media title and boot option
  71422.         06h get current device and directory
  71423.         07h get current library and device
  71424.         08h search directory
  71425.     DS:BX -> control block (see #1728)
  71426. Return: CF clear if successful
  71427.     CF set on error
  71428.     AL = 00h if operation attempted
  71429.     AL unchanged if unsupported function
  71430. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  71431.  
  71432. Format of BBC Master control block:
  71433. Offset    Size    Description    (Table 1728)
  71434.  00h    BYTE    file handle
  71435.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  71436.  05h    DWORD    number of bytes to be transferred
  71437.  09h    DWORD    transfer address
  71438. --------G-410000-----------------------------
  71439. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  71440.     AX = 0000h
  71441.     DS:DX -> character
  71442. Note:    the kernel calls this function when it wants the user program to
  71443.       output a character
  71444. SeeAlso: AX=0001h
  71445. --------G-410001-----------------------------
  71446. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  71447.     AX = 0001h
  71448. Return: AL = character    
  71449. Note:    the kernel calls this function when it needs to input a character
  71450. SeeAlso: AX=0000h
  71451. --------G-41000D-----------------------------
  71452. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  71453.     AX = 000Dh
  71454. SeeAlso: AX=000Eh
  71455. --------G-41000E-----------------------------
  71456. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  71457.     AX = 000Eh
  71458. SeeAlso: AX=000Dh
  71459. --------G-410012-----------------------------
  71460. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  71461.     AX = 0012h
  71462.     DS:SI -> string (Windows 3.0)
  71463.     ES:SI -> string (Windows 3.1)
  71464. Return: nothing???
  71465. Note:    this function is called by the kernel when it wants to output a
  71466.       string through the debugger
  71467. SeeAlso: AX=0050h,INT 68/AH=47h
  71468. --------G-41004F-----------------------------
  71469. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  71470.     AX = 004Fh
  71471. Return: AX = F386h if debugger is present
  71472. SeeAlso: INT 68/AX=4400h
  71473. --------G-410050-----------------------------
  71474. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  71475.     AX = 0050h
  71476.     BX = segment number in executable (0-based)
  71477.     CX = selector
  71478.     DX = instance handle
  71479.     SI = segment flags (0=code, 1=data)
  71480.     ES:DI -> module name of owner
  71481. Return: ???
  71482. SeeAlso: AX=0012h,AX=004Fh
  71483. --------G-410051-----------------------------
  71484. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  71485.     AX = 0051h
  71486.     ???
  71487. Return: ???
  71488. SeeAlso: AX=0050h,AX=0052h
  71489. --------G-410052-----------------------------
  71490. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  71491.     AX = 0052h
  71492.     BX = freed selector
  71493. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  71494. --------G-410059-----------------------------
  71495. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  71496.     AX = 0059h
  71497.     ???:BX = CS:IP of new task's starting point
  71498. --------G-41005C-----------------------------
  71499. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  71500.     AX = 005Ch
  71501.     BX = freed selector
  71502. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  71503.       to CS
  71504. SeeAlso: AX=0052h
  71505. --------G-410060-----------------------------
  71506. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  71507.     AX = 0060h
  71508.     ???
  71509. Return: ???
  71510. SeeAlso: AX=0061h
  71511. --------G-410061-----------------------------
  71512. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  71513.     AX = 0061h
  71514.     ???
  71515. Return: ???
  71516. SeeAlso: AX=0060h
  71517. --------G-410062-----------------------------
  71518. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  71519.     AX = 0062h
  71520. STACK:    BYTE    exit code
  71521. Return: ???
  71522.     STACK unchanged???
  71523. SeeAlso: AX=0064h
  71524. --------G-410063-----------------------------
  71525. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  71526.     AX = 0063h
  71527. --------G-410064-----------------------------
  71528. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  71529.     AX = 0064h
  71530.     CX:BX = DLL entry point CS:IP
  71531.     SI = module handle
  71532. SeeAlso: AX=0062h,AX=0065h
  71533. --------G-410065-----------------------------
  71534. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  71535.     AX = 0065h
  71536.     ES = module handle
  71537. SeeAlso: AX=0064h
  71538. --------V-42---------------------------------
  71539. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  71540. Desc:    contains the address of the original INT 10 handler which an EGA+
  71541.       video adapter replaces with its own on-board BIOS code
  71542. SeeAlso: INT 10
  71543. Note:    not used by PS/2 built-in VGA or XGA
  71544. --------h-42---------------------------------
  71545. INT 42 - Z100 - Master 8259 - Timer
  71546. SeeAlso: INT 41"Z100",INT 43"Z100"
  71547. --------b-42---------------------------------
  71548. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  71549. Note:    if the second WD1002 controller in the system finds INT 40 already in
  71550.       use, it uses this vector to cascade to the first controller's BIOS
  71551. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  71552. --------O-42---------------------------------
  71553. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  71554.     AL = byte to be written
  71555.     BH = file handle
  71556. Return: flags destroyed
  71557. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  71558. --------V-427500-----------------------------
  71559. INT 42 U - Toshiba laptops - ???
  71560.     AX = 7500h
  71561.     BL = ??? (00h or 01h)
  71562. Return: ???
  71563. Note:    used by Toshiba utility VCHAD.EXE
  71564. SeeAlso: AX=7501h,AX=7503h
  71565. --------V-427501-----------------------------
  71566. INT 42 U - Toshiba laptop - GET ??? DATA
  71567.     AX = 7501h
  71568.     DS:DI -> data area to be filled ???
  71569. Return: area filled with data ???
  71570. Note:    used by Toshiba utility VCHAD.EXE
  71571. SeeAlso: AX=7500h,AX=7502h,AX=7503h
  71572. --------V-427502-----------------------------
  71573. INT 42 U - Toshiba laptops - SET ??? DATA
  71574.     AX = 7502h
  71575.     DS:DI -> data area ???
  71576. Return: ???
  71577. Note:    used by Toshiba utility VCHAD.EXE
  71578. SeeAlso: AX=7501h,AX=7503h
  71579. --------V-427503-----------------------------
  71580. INT 42 - Toshiba laptops - GET DISPLAY STATUS
  71581.     AX = 7503h
  71582. Return: AX = 7575h if supported
  71583.     CX = 0001h if supported
  71584.     BH = display type (00h color, 03h monochrome)
  71585.     BL = display state
  71586.         01h internal LCD display is active
  71587.         02h external VGA display is active
  71588.         03h both displays active / DeskStation display mode enabled
  71589.         (not possible on all machines)
  71590. Note:    used by VCHAD.EXE and supported by all Toshiba VGA laptops
  71591.       (string "TOSHIBA " at F000:E010h should be checked before call)
  71592.     INT 42 normally points to F000:F065h but may be redirected by QEMM386
  71593. SeeAlso: AX=7500h,AX=7504h,INT 15/AH=C0h
  71594. --------V-427504-----------------------------
  71595. INT 42 U - Toshiba laptops - ???
  71596.     AX = 7504h
  71597.     BL = ???
  71598. Return: BH = ???
  71599. Note:    used by Toshiba utility VCHAD.EXE
  71600. SeeAlso: AX=7500h,AX=7503h
  71601. --------V-43---------------------------------
  71602. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  71603. Desc:    points at graphics data for characters 00h-7Fh of the current font
  71604.       in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
  71605.       modes
  71606. SeeAlso: INT 1F,INT 44"VIDEO"
  71607. --------h-43---------------------------------
  71608. INT 43 - Z100 - Master 8259 - Slave 8259 input
  71609. Note:    slave runs in special fully nested mode
  71610. SeeAlso: INT 42"Z100",INT 44"Z100"
  71611. --------O-43---------------------------------
  71612. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  71613.     BH = file handle
  71614. Return: CF clear if successful
  71615.         AL = byte read from file
  71616.     CF set on error
  71617. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  71618. --------V-44---------------------------------
  71619. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  71620. Desc:    this vector points at graphics data for current character font
  71621. SeeAlso: INT 1F,INT 43"VIDEO"
  71622. --------N-44---------------------------------
  71623. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  71624. --------I-44---------------------------------
  71625. INT 44 - IBM 3270-PC High Level Language API
  71626.     DS:SI -> parameter control block
  71627. --------h-44---------------------------------
  71628. INT 44 - Z100 - Master 8259 - Serial A
  71629. SeeAlso: INT 43"Z100",INT 45"Z100"
  71630. --------v-44---------------------------------
  71631. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  71632. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  71633. --------O-4400-------------------------------
  71634. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  71635.     AH = 00h
  71636.     AL = function
  71637.         00h get current filing system
  71638.         Return: AL = filing system (see #1729)
  71639.         01h get address of commandline tail
  71640.         Return: BX buffer filled with address of command tail in I/O
  71641.                   processor address space (use INT 4A/AL=05h to
  71642.                   retrieve)
  71643.         FFh flush all files onto secondary storage
  71644.     BX -> 4-byte data buffer
  71645. Note:    the commandline tail is terminated with a carriage return (0Dh)
  71646. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  71647.  
  71648. (Table 1729)
  71649. Values for BBC Master filing system:
  71650.  00h    none
  71651.  01h    1200 bps cassette
  71652.  02h    300 bps cassette
  71653.  03h    ROM FS
  71654.  04h    DFS
  71655.  05h    ANFS/NFS
  71656.  06h    TFS
  71657.  08h    ADFS
  71658. --------O-44---------------------------------
  71659. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  71660.     AH = nonzero file handle
  71661.     AL = function
  71662.         00h get sequential pointer for file
  71663.         01h set sequential pointer for file
  71664.         02h get length of file
  71665.     BX -> 4-byte data buffer
  71666. Return: BX buffer updated if appropriate
  71667. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  71668. --------h-45---------------------------------
  71669. INT 45 - Z100 - Master 8259 - Serial B
  71670. SeeAlso: INT 44"Z100",INT 46"Z100"
  71671. --------O-45---------------------------------
  71672. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  71673.     AL = function
  71674.         00h save block of memory as file
  71675.         01h update directory entry for existing file
  71676.         02h set load address for existing file
  71677.         03h set execution address for existing file
  71678.         04h set attributes for existing file
  71679.         05h read directory
  71680.         06h delete file
  71681.         FFh load file
  71682.     DS:BX -> control block (see #1730)
  71683. Return: FLAGS destroyed
  71684.     AL = file type
  71685.         00h not found
  71686.         01h file found
  71687.         02h directory found
  71688.         FFh protected file
  71689. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  71690.  
  71691. Format of BBC Master control block:
  71692. Offset    Size    Description    (Table 1730)
  71693.  00h    WORD    address of CR-terminated filename
  71694.  02h    DWORD    load address of file
  71695.  06h    DWORD    execution address of file
  71696.  0Ah    DWORD    start address of data to save
  71697.  0Eh    DWORD    end address of data to save, or file attributes
  71698.         file attributes in low byte (see #1731)
  71699.         other three bytes are filing-system specific file attributes
  71700.  
  71701. Bitfields for BBC Master file attributes:
  71702. Bit(s)    Description    (Table 1731)
  71703.  0    no owner read access
  71704.  1    no owner write access
  71705.  2    not executable by owner
  71706.  3    not deletable by owner
  71707.  4    no public read access
  71708.  5    no public write access
  71709.  6    not executable with public access
  71710.  7    not deletable with public access
  71711. --------B-46---------------------------------
  71712. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  71713. SeeAlso: INT 13/AH=09h,INT 41,INT 60"Adaptec",INT C0"AMI"
  71714. --------h-46---------------------------------
  71715. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  71716. SeeAlso: INT 45"Z100",INT 47"Z100"
  71717. --------O-46---------------------------------
  71718. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  71719. Return: CF clear if successful
  71720.         AL = character read
  71721.     CF set on error
  71722.         AL = error code
  71723. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  71724. --------h-47---------------------------------
  71725. INT 47 - Z100 - Master 8259 - Printer
  71726. SeeAlso: INT 46"Z100",INT 48"Z100"
  71727. --------O-47---------------------------------
  71728. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  71729.     AL = character to be written
  71730. Return: FLAGS destroyed
  71731. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  71732. --------b-47---------------------------------
  71733. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  71734. Desc:    used by the second WD1002-27X controller to cascade to the first
  71735.       controller's INT 40
  71736. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  71737. ----------478000-----------------------------
  71738. INT 47 - SQL Base - DATABASE ENGINE API
  71739.     AX = 8000h
  71740.     DS:BX -> parameter block, first word is function number
  71741. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  71742. SeeAlso: AX=8001h
  71743.  
  71744. (Table 1732)
  71745. Values for SQL Base function number:
  71746.  01h    "SQLFINI" initalialize application's use of the database
  71747.  02h    "SQLFDON" application is done using the database
  71748.  03h    "SQLFCON" connect to a cursor/database
  71749.  04h    "SQLFDIS" disconnect from a cursor/database
  71750.  05h    "SQLFCOM" compile a SQL command
  71751.  06h    "SQLFEXE" execute a SQL command
  71752.  07h    "SQLFCEX" compile and execute a SQL command
  71753.  08h    "SQLFCMT" commit a transaction to the database
  71754.  09h    "SQLFDES" describe the items of a SELECT statement
  71755.  0Ah    "SQLFGFI" get fetch information
  71756.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  71757.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  71758.  0Dh    "SQLFEFB" enable fetch backwards
  71759.  0Eh    "SQLFPRS" position in result set
  71760.  0Fh    "SQLFURS" undo result set
  71761.  10h    "SQLFNBV" get number of bind variables
  71762.  11h    "SQLFBND" bind data variables
  71763.  12h    "SQLFBNN" bind numerics
  71764.  13h    "SQLFBLN" bind long number
  71765.  14h    "SQLFBLD" bind long data variables
  71766.  15h    "SQLFSRS" start restriction set processing
  71767.  16h    "SQLFRRS" restart restriction set processing
  71768.  17h    "SQLFCRS" close restriction set
  71769.  18h    "SQLFDRS" drop restriction set
  71770.  19h    "SQLFARF" apply Roll Forward journal
  71771.  1Ah    "SQLFERF" end Roll Forward journal
  71772.  1Bh    "SQLFSRF" start Roll Forward journal
  71773.  1Ch    "SQLFSTO" store a compiled SQL command
  71774.  1Dh    "SQLFRET" retrieve a compiled SQL command
  71775.  1Eh    "SQLFDST" drop a stored command
  71776.  1Fh    "SQLFCTY" get command type
  71777.  20h    "SQLFEPO" get error position
  71778.  21h    "SQLFGNR" get number of rows
  71779.  22h    "SQLFNSI" get number of select items
  71780.  23h    "SQLFRBF" get Roll Back flag
  71781.  24h    "SQLFRCD" get return code
  71782.  25h    "SQLFROW" get number of ROWs
  71783.  26h    "SQLFSCN" set cursor name
  71784.  27h    "SQLFSIL" set isolation level
  71785.  28h    "SQLFSLP" set log parameters
  71786.  29h    "SQLFSSB" set select buffer
  71787.  2Ah    "SQLFSSS" set sort space
  71788.  2Bh    "SQLFRLO" read long
  71789.  2Ch    "SQLFWLO" write long
  71790.  2Dh    "SQLFLSK" long seek
  71791.  2Eh    "SQLFGLS" get long size
  71792.  2Fh    "SQLFELO" end long operation
  71793.  30h    "SQLFRBK" roll back a transaction from the database
  71794.  31h    "SQLFERR" error message
  71795.  32h    "SQLFCPY" copy
  71796.  33h    "SQLFR01" reserved
  71797.  34h    "SQLFSYS" system
  71798.  35h    "SQLFSTA" statistics
  71799.  36h    "SQLFR02" reserved
  71800.  37h    "SQLFXAD" extra add
  71801.  38h    "SQLFXCN" extra character to number
  71802.  39h    "SQLFXDA" extra date add
  71803.  3Ah    "SQLFXDP" extra date picture
  71804.  3Bh    "SQLFXDV" extra divide
  71805.  3Ch    "SQLFXML" extra multiply
  71806.  3Dh    "SQLFXNP" extra number picture
  71807.  3Eh    "SQLFXPD" extra picture date
  71808.  3Fh    "SQLFXSB" extra subtract
  71809.  40h    "SQLFINS" install database
  71810.  41h    "SQLFDIN" deinstall database
  71811.  42h    "SQLFDIR" directory of databases
  71812.  43h    "SQLFTIO" timeout
  71813.  44h    "SQLFFQN" get fully qualified column name
  71814.  45h    "SQLFEXP" explain execution plan
  71815.  46h    "SQLFFER" get full error
  71816.  47h    "SQLFBKP" begin online backup
  71817.  48h    "SQLFRDC" read backup data chunk
  71818.  49h    "SQLFEBK" end backup
  71819.  4Ah    "SQLFRES" begin restore from backup
  71820.  4Bh    "SQLFWDC" write backup data chunk for restore
  71821.  4Ch    "SQLFRRD" recover restored database to consistent state
  71822.  4Dh    "SQLFERS" end restore
  71823.  4Eh    "SQLFNRR" return number of result set rows
  71824.  4Fh    "SQLFSTR" start restriction mode
  71825.  50h    "SQLFSPR" stop restriction mode
  71826.  51h    "SQLFCNC" connect 2
  71827.  52h    "SQLFCNR" connect with no recovery
  71828.  53h    "SQLFOMS" set output message size
  71829.  54h    "SQLFIMS" set input message size
  71830.  55h    "SQLFSCP" set cache pages
  71831.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  71832.  57h    "SQLFLAB" get label info for items in SELECT statement
  71833.  58h    "SQLFCBV" clear bind variables
  71834.  59h    "SQLFGET" get database information
  71835.  5Ah    "SQLFSET" set database information
  71836.  5Bh    "SQLFTEC" translate error code
  71837. ----------478001-----------------------------
  71838. INT 47 - SQL Base - GET VERSION NUMBER
  71839.     AX = 8001h
  71840. Return: ???
  71841. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  71842. SeeAlso: AX=8000h
  71843. --------B-48---------------------------------
  71844. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  71845. SeeAlso: INT 49"PCjr"
  71846. --------h-48---------------------------------
  71847. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  71848. SeeAlso: INT 47"Z100",INT 49"Z100"
  71849. --------N-48---------------------------------
  71850. INT 48 - Watstar PC Network data pointer 1
  71851. SeeAlso: INT 49"Watstar"
  71852. --------O-48---------------------------------
  71853. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  71854. Return: FLAGS destroyed
  71855. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  71856. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  71857. --------b-48---------------------------------
  71858. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  71859. Note:    the second WD1002-27X controller in a system uses the low byte to
  71860.       store the number of drives controlled by the second controller,
  71861.       and the high word for temporary storage during track recalculation;
  71862.       the first controller uses offsets 74h-77h in the BIOS data area
  71863.       (see MEMORY.LST) to store data
  71864. SeeAlso: INT 47"SuperBIOS"
  71865. --------V-48---------------------------------
  71866. INT 48 U - Compaq UILIB.EXE - API
  71867.     AX = function (see #1733)
  71868.     BX = call type (0002h) (see #1734)
  71869.     ???
  71870. Return: ???
  71871. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  71872.       listed below
  71873. SeeAlso: AX=1A70h
  71874.  
  71875. (Table 1733)
  71876. Values for valid UILIB function number:
  71877.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  71878.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  71879.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  71880.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  71881.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  71882.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  71883.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  71884.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  71885.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  71886.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  71887.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  71888.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  71889.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  71890.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  71891.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  71892.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  71893.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  71894.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  71895.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  71896.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  71897.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  71898.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  71899.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  71900. --------V-481A70-----------------------------
  71901. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  71902.     AX = 1A70h
  71903.     BX = call type (see #1734)
  71904. Return: CX = 5649h ('VI') if installed
  71905.     DX = 4557h ('EW') if installed
  71906.         AX = version??? (0106h)
  71907.  
  71908. (Table 1734)
  71909. Values for UILIB call type:
  71910.  0000h    near
  71911.  0001h    far
  71912.  0002h    INT (only valid call type when using INT 48)
  71913.  0003h    near
  71914. --------B-49---------------------------------
  71915. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  71916. SeeAlso: #1735,INT 48"PCjr"
  71917.  
  71918. Format of PCjr scan-code translation table:
  71919. Offset    Size    Description    (Table 1735)
  71920.  00h    BYTE    number of non-keyboard scancodes in the table
  71921.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  71922.           representing the scancode mapped values relative to their
  71923.           input values within the range of 56h through 7Eh
  71924. --------h-49---------------------------------
  71925. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  71926. SeeAlso: INT 48"Z100",INT 4A"Z100"
  71927. --------V-49---------------------------------
  71928. INT 49 - Texas Instruments PC - VIDEO I/O???
  71929.     apparently provides direct video display on the TI Professional PC
  71930. --------N-49---------------------------------
  71931. INT 49 - Watstar PC Network data pointer 2
  71932. SeeAlso: INT 48"Watstar"
  71933. --------O-49---------------------------------
  71934. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  71935.     AL = character to be written
  71936. Return: FLAGS destroyed
  71937. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  71938. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  71939. --------a-490001-----------------------------
  71940. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  71941.     AX = 0001h
  71942. Return: AX = status (see #1736)
  71943.     BX,CX,DX destroyed
  71944. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  71945.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  71946. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  71947.       actual interrupt in use may be found by searching for the signature
  71948.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  71949.       the interrupt handler (this is also the installation check).    MAGic
  71950.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  71951.       the interrupt handler's segment, followed by MAGic's TSR ID of
  71952.       "VMAG".
  71953. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  71954. Index:    installation check;MAGic
  71955.  
  71956. (Table 1736)
  71957. Values for MAGic status:
  71958.  0000h    cannot magnify current video mode
  71959.  0002h    magnified (text mode)
  71960.  0003h    magnified (graphics mode)
  71961.  FFFDh    function works only in magnified mode
  71962.  FFFFh    MAGic busy, retry later
  71963. --------a-490002-----------------------------
  71964. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  71965.     AX = 0002h
  71966. Return: AX = status (see #1736)
  71967.     BX,CX,DX destroyed
  71968. SeeAlso: AX=0001h
  71969. --------a-490003-----------------------------
  71970. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  71971.     AX = 0003h
  71972.     BX = vertical position (character row [text] or pixel row [graphics])
  71973.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  71974. Return: AX = status
  71975.         0000h successful
  71976.         FFFFh MAGic busy, retry later
  71977.     BX,CX,DX destroyed
  71978. Note:    window is not moved if the position is inside the current window
  71979. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  71980. --------a-490004-----------------------------
  71981. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  71982.     AX = 0004h
  71983.     BX = vertical position of upper left corner
  71984.     DX = horizontal position
  71985. Return: AX = status (see AX=0003h)
  71986.     BX,CX,DX destroyed
  71987. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  71988. --------a-490005-----------------------------
  71989. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  71990.     AX = 0005h
  71991. Return: AX = status
  71992.         0000h successful
  71993.         BX = vertical position (char row or pixel row)
  71994.         DX = horizontal position (char column or 8-pixel units)
  71995.         FFFFh MAGic busy, retry later
  71996.         BX,DX destroyed
  71997.     CX destroyed
  71998. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  71999. --------a-490006-----------------------------
  72000. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  72001.     AX = 0006h
  72002. Return: AX = status
  72003.         0000h successful
  72004.         BX = vertical size (char rows or pixel rows)
  72005.         DX = horizontal size (char cols or 8-pixel units)
  72006.         FFFFh MAGic busy, retry later
  72007.         BX,DX destroyed
  72008.     CX destroyed
  72009. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  72010. --------a-490007-----------------------------
  72011. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  72012.     AX = 0007h
  72013. Return: AX = status
  72014.         0000h successful
  72015.         BX = vertical size (char rows or pixel rows)
  72016.         DX = horizontal size (char cols or 8-pixel units)
  72017.         FFFEh invalid function
  72018.         FFFFh MAGic busy, retry later
  72019.         BX,DX destroyed
  72020.     CX destroyed
  72021. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  72022.       AX=0000h is accepted and will branch into hyperspace
  72023. SeeAlso: AX=0001h,AX=0006h
  72024. --------a-490008-----------------------------
  72025. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  72026.     AX = 0008h
  72027.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  72028. Return: AX = status
  72029.         0000h successful
  72030.         FFFBh scaling factor only available in MAGic Deluxe
  72031.         FFFCh already in magnified state, can't set size
  72032. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  72033.       magnify the display
  72034.     scaling factors greater than 2 are only available in MAGic Deluxe
  72035. SeeAlso: AX=0001h
  72036. --------B-4A---------------------------------
  72037. INT 4A C - SYSTEM - USER ALARM HANDLER
  72038. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  72039.       occurs; an application may use it to perform an action at a
  72040.       predetermined time.
  72041. Note:    this interrupt is called from within a hardware interrupt handler,
  72042.       so all usual precautions against reentering DOS must be taken
  72043. SeeAlso: INT 1A/AH=06h
  72044. --------h-4A---------------------------------
  72045. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  72046. SeeAlso: INT 49"Z100",INT 4B"Z100"
  72047. --------O-4A---------------------------------
  72048. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  72049.     AL = function code
  72050.         FAh transfer data between 80186 and 65C12 I/O processor
  72051.     DS:BX -> control block (see #1737)
  72052. Return: FLAGS destroyed
  72053.     control block updated
  72054. Note:    there are more functions than are listed here, but details are not
  72055.       available
  72056. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  72057.  
  72058. Format of BBC Master control block for function FAh:
  72059. Offset    Size    Description    (Table 1737)
  72060.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  72061.  01h    BYTE    number of parameters read from I/O processor (01h)
  72062.  02h    DWORD    I/O processor address
  72063.  06h    DWORD    80186 segment:offset address
  72064.  0Ah    WORD    number of bytes to transfer
  72065.  0Ch    BYTE    operation type
  72066.         00h write to 65C12 at 24 us/byte
  72067.         01h read from 65C12 at 24 us/byte
  72068.         02h write to 65C12 at 26 us/word
  72069.         03h read from 65C12 at 26 us/word
  72070.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  72071.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  72072.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  72073.         (see #1738)
  72074.  
  72075. Bitfields for 65C12 memory access control:
  72076. Bit(s)    Description    (Table 1738)
  72077.  7    unused
  72078.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  72079.  5    use shadow screen memory if screen address specified
  72080.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  72081.       address between 8000h and BFFFh)
  72082.  3-0    paged ROM number
  72083. --------h-4B---------------------------------
  72084. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  72085. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  72086. --------d-4B---------------------------------
  72087. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  72088.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  72089. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  72090.       to avoid conflicting with the IBM SCSI interface and the Virtual
  72091.       DMA specification
  72092.     the installation check for the driver is the string "SCSI_CAM" eight
  72093.       bytes past the INT 4Bh handler
  72094.     the only driver to date reported to use the CAM interface on INT 4B
  72095.       instead of INT 4F is from Future Domain (which has drivers for CAM
  72096.       on either interrupt)
  72097. SeeAlso: INT 4F/AX=8100h
  72098. Index:    installation check;Common Access Method SCSI interface
  72099. --------O-4B---------------------------------
  72100. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  72101.     AL = function code
  72102.     BL = first parameter
  72103.     BH = second parameter (if needed)
  72104. Return: BL = first return parameter
  72105.     BH = second return parameter
  72106.     CF depends on function
  72107. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  72108. --------d-4B80-------------------------------
  72109. INT 4B - IBM SCSI interface
  72110.     AH = 80h
  72111.     AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
  72112.     further details not yet available
  72113. --------d-4B8102DX0000-----------------------
  72114. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  72115.     AX = 8102h
  72116.     DX = 0000h
  72117. Return: CF clear if successful
  72118.         AH = major version number
  72119.         AL = minor version number
  72120.         BX = product number (see #1739)
  72121.         CX = product revision number
  72122.         always 0000h for QMAPS and HPMM.SYS
  72123.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  72124.         DX = flags (see #1741)
  72125.         SI:DI = maximum DMA buffer size
  72126.     CF set on error
  72127.         AL = error code (see #1740)
  72128. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  72129.       apparently not always the case
  72130. SeeAlso: INT 2C/AX=002Bh,INT 31
  72131. Index:    installation check;Virtual DMA Spec
  72132.  
  72133. (Table 1739)
  72134. Values for VDS product number:
  72135.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  72136.  0001h    for Microsoft's EMM386.EXE
  72137.  0003h    for Windows 3.x WIN386.EXE
  72138.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  72139.  4560h    ("E`") for Qualitas' 386MAX
  72140.  4D43h    ("MC") for V Communications' Memory Commander
  72141.  5145h    ("QE") for Quarterdeck's QEMM-386
  72142.  524Dh    ("RM") for Helix's Netroom RM386
  72143.  
  72144. (Table 1740)
  72145. Values for VDS error code:
  72146.  01h    region not in contiguous memory
  72147.  02h    region crossed a physical alignment boundary
  72148.  03h    unable to lock pages
  72149.  04h    no buffer available
  72150.  05h    region too large for buffer
  72151.  06h    buffer currently in use
  72152.  07h    invalid memory region
  72153.  08h    region was not locked
  72154.  09h    number of physical pages greater than table length
  72155.  0Ah    invalid buffer ID
  72156.  0Bh    copy out of buffer range
  72157.  0Ch    invalid DMA channel number
  72158.  0Dh    disable count overflow
  72159.  0Eh    disable count underflow
  72160.  0Fh    function not supported
  72161.  10h    reserved flag bits set in DX
  72162.  
  72163. Bitfields for VDS flags:
  72164. Bit(s)    Description    (Table 1741)
  72165.  0    PC/XT bus (DMA in first megabyte only)
  72166.  1    physical buffer/remap region in first megabyte
  72167.  2    automatic remap enabled
  72168.  3    all memory is physically contiguous
  72169.  4-15    reserved (zero)
  72170.  
  72171. Format of DMA descriptor structure (DDS):
  72172. Offset    Size    Description    (Table 1742)
  72173.  00h    DWORD    region size
  72174.  04h    DWORD    offset
  72175.  08h    WORD    segment/selector
  72176.  0Ah    WORD    buffer ID
  72177.  0Ch    DWORD    physical address
  72178.  
  72179. Format of Extended DMA descriptor structure (EDDS):
  72180. Offset    Size    Description    (Table 1743)
  72181.  00h    DWORD    region size
  72182.  04h    DWORD    offset
  72183.  08h    WORD    segment/selector
  72184.  0Ah    WORD    reserved
  72185.  0Ch    WORD    number available
  72186.  0Eh    WORD    number used
  72187.  10h    DWORD    region 0 physical address
  72188.  14h    DWORD    region 0 size in bytes
  72189.  18h    DWORD    region 1 physical address
  72190.  1Ch    DWORD    region 1 size in bytes
  72191.     ...
  72192.  
  72193. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  72194. Offset    Size    Description    (Table 1744)
  72195.  00h    DWORD    region size
  72196.  04h    DWORD    offset
  72197.  08h    WORD    segment/selector
  72198.  0Ah    WORD    reserved
  72199.  0Ch    WORD    number available
  72200.  0Eh    WORD    number used
  72201.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  72202.  14h    DWORD    page table entry 1
  72203.     ...
  72204. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  72205.       is present and locked
  72206. --------d-4B8103-----------------------------
  72207. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  72208.     AX = 8103h
  72209.     DX = flags (see #1745)
  72210.     ES:DI -> DMA descriptor structure (see #1742,#1743,#1744)
  72211. Return: CF clear if successful
  72212.         DDS physical address field filled in
  72213.         DDS buffer ID field filled (0000h if no buffer allocated)
  72214.     CF set on error
  72215.         AL = error code (see #1740)
  72216.         DDS region size field filled wth maximum contiguous length in bytes
  72217. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  72218.       in enhanced mode
  72219.     Windows 3.0 in enhanced mode does not return a correct code on error
  72220. SeeAlso: AX=8104h,AX=8105h
  72221.  
  72222. Bitfields for VDS flags:
  72223. Bit(s)    Description    (Table 1745)
  72224.  0    reserved (zero)
  72225.  1    data should be copied into buffer (ignored if 2 set)
  72226.  2    buffer should not be allocated if region noncontiguous or crosses
  72227.       physical alignment boundary specified by 4-5
  72228.  3    don't attempt automatic remap
  72229.  4    region must not cross 64K physical alignment boundary
  72230.  5    region must not cross 128K physical alignment boundary
  72231.  6-15    reserved (zero)
  72232. --------d-4B8104-----------------------------
  72233. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  72234.     AX = 8104h
  72235.     DX = flags
  72236.         bit 0: reserved (zero)
  72237.         bit 1: data should be copied out of buffer
  72238.         bits 2-15 reserved (zero)
  72239.     ES:DI -> DMA descriptor structure (see #1742,#1743) with region size,
  72240.           physical address, and buffer ID fields set
  72241. Return: CF clear if successful
  72242.         DDS physical address field set
  72243.         DDS buffer ID field set (0000h if no buffer allocated)
  72244.     CF set on error
  72245.         AL = error code (see #1740)
  72246.         DDS region size field filled wth maximum contiguous length in bytes
  72247. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  72248.       a segment
  72249. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  72250. SeeAlso: AX=8103h,AX=8106h
  72251. --------d-4B8105-----------------------------
  72252. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  72253.     AX = 8105h
  72254.     DX = flags (see #1746)
  72255.     ES:DI -> Extended DMA descriptor structure (see #1743,#1744)
  72256.           region size, linear segment, linear offset, and number avail
  72257.           fields set
  72258. Return: CF clear if successful
  72259.         EDDS number used field set
  72260.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  72261.     CF set on error
  72262.         AL = error code (see #1740)
  72263.         EDDS region size field filled with max length in bytes that can be
  72264.           locked and described in the EDDS table
  72265. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  72266.       page address for pages which were originally not present
  72267. SeeAlso: AX=8103h,AX=8106h
  72268.  
  72269. Bitfields for VDS flags:
  72270. Bit(s)    Description    (Table 1746)
  72271.  0-5    reserved (zero)
  72272.  6    EDDS should be returned with page table entries
  72273.  7    only present pages should be locked (not-present pages receive entry
  72274.       of 0000h)
  72275.  8-15    reserved (zero)
  72276. --------d-4B8106-----------------------------
  72277. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  72278.     AX = 8106h
  72279.     DX = flags (see #1747)
  72280.     ES:DI -> Extended DMA descriptor structure (see #1743,#1744) returned
  72281.           by AX=8105h
  72282. Return: CF clear if successful
  72283.     CF set on error
  72284.         AL = error code (see #1740)
  72285. Note:    according to the Microsoft version of the VDS specification, the
  72286.       actual scatter/gather list is ignored, while according to the IBM
  72287.       version of the specification, "the result of a LOCK operation"
  72288.       must be provided to this function
  72289. SeeAlso: AX=8104h,AX=8105h
  72290.  
  72291. Bitfields for VDS flags:
  72292. Bit(s)    Description    (Table 1747)
  72293.  0-5    reserved (zero)
  72294.  6    EDDS contains page table entries
  72295.  7    EDDS may contain not-present pages (entry = 0000h)
  72296.  8-15    reserved (zero)
  72297. --------d-4B8107-----------------------------
  72298. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  72299.     AX = 8107h
  72300.     DX = flags
  72301.         bit 0: reserved (zero)
  72302.         bit 1: data should be copied into buffer
  72303.         bits  2-15 reserved (zero)
  72304.     ES:DI -> DMA descriptor structure (see #1742) with region size set
  72305.           (also region offset and region segment if DX bit 1 set)
  72306. Return: CF clear if successful
  72307.         DDS physical address and buffer ID set
  72308.         DDS region size filled with length of buffer
  72309.     CF set on error
  72310.         AL = error code (see #1740)
  72311. SeeAlso: AX=8108h
  72312. --------d-4B8108-----------------------------
  72313. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  72314.     AX = 8108h
  72315.     DX = flags
  72316.         bit 0: reserved (zero)
  72317.         bit 1: data should be copied out of buffer
  72318.         bits 2-15 reserved (zero)
  72319.     ES:DI -> DMA descriptor structure (see #1742,#1743) with buffer ID set
  72320.           (also region size/region offset/segment if DX bit 1 set)
  72321. Return: CF clear if successful
  72322.     CF set on error
  72323.         AL = error code (see #1740)
  72324. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  72325.       for this function to work correctly
  72326. SeeAlso: AX=8107h
  72327. --------d-4B8109DX0000-----------------------
  72328. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  72329.     AX = 8109h
  72330.     DX = 0000h
  72331.     ES:DI -> DMA descriptor structure (see #1742,#1743) with buffer ID,
  72332.           region segment/offset, and region size fields set
  72333.     BX:CX = starting offset into DMA buffer
  72334. Return: CF clear if successful
  72335.     CF set on error
  72336.         AL = error code (see #1740)
  72337. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  72338. SeeAlso: AX=810Ah
  72339. --------d-4B810ADX0000-----------------------
  72340. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  72341.     AX = 810Ah
  72342.     DX = 0000h
  72343.     ES:DI -> DMA descriptor structure (see #1742,#1744) with buffer ID,
  72344.           region segment/offset, and region size fields set
  72345.     BX:CX = starting offset into DMA buffer
  72346. Return: CF clear if successful
  72347.     CF set on error
  72348.         AL = error code (see #1740)
  72349. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  72350. SeeAlso: AX=8109h
  72351. --------d-4B810B-----------------------------
  72352. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  72353.     AX = 810Bh
  72354.     BX = DMA channel number
  72355.     DX = 0000h
  72356. Return: CF clear if successful
  72357.     CF set on error
  72358.         AL = error code (see #1740)
  72359. SeeAlso: AX=810Ch
  72360. --------d-4B810C-----------------------------
  72361. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  72362.     AX = 810Ch
  72363.     BX = DMA channel number
  72364.     DX = 0000h
  72365. Return: CF clear if successful
  72366.         ZF set if disable count decremented to zero
  72367.     CF set on error
  72368.         AL = error code (see #1740)
  72369. SeeAlso: AX=810Bh
  72370. --------Q-4B810D-----------------------------
  72371. INT 4B - QEMM-386 - BUG
  72372.     AX = 810Dh
  72373. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  72374.       call
  72375. --------h-4C---------------------------------
  72376. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  72377. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  72378. --------O-4C---------------------------------
  72379. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  72380.     DS:BX -> CR-terminated command string
  72381. Return: FLAGS destroyed
  72382. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  72383. --------h-4D---------------------------------
  72384. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  72385. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  72386. --------d-4E---------------------------------
  72387. INT 4E - TI Professional PC - DISK I/O
  72388.     used instead of INT 13 on the TI Professional PC
  72389. SeeAlso: INT 13
  72390. --------h-4E---------------------------------
  72391. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  72392. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  72393. --------h-4F---------------------------------
  72394. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  72395. SeeAlso: INT 4E"Z100"
  72396. --------d-4F8100-----------------------------
  72397. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  72398.     AX = 8100h
  72399.     ES:BX -> CAM Control Block (CCB) (see #1749)
  72400. Return: AH = status
  72401.         00h successful
  72402.         01h invalid CCB address (0000h:0000h)
  72403. Note:    the SCSI Interface Module (SIM) may complete the requested function
  72404.       and invoke the completion callback function before this call returns
  72405. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  72406.  
  72407. (Table 1748)
  72408. Values for CAM function code:
  72409.  00h    NOP
  72410.  01h    execute SCSI I/O
  72411.  02h    get device type
  72412.  03h    path inquiry
  72413.  04h    release SIM queue
  72414.  05h    set async callback
  72415.  06h    set device type
  72416.  07h-0Fh reserved
  72417.  10h    abort SCSI command
  72418.  11h    reset SCSI bus
  72419.  12h    reset SCSI device
  72420.  13h    terminate I/O process
  72421.  14h-1Fh reserved
  72422.  20h    engine inquiry
  72423.  21h    execute engine request
  72424.  22h-2Fh reserved
  72425.  30h    enable logical unit number
  72426.  31h    execute target I/O
  72427.  32h-7Fh reserved
  72428.  80h-FFh vendor-specific functions
  72429.  
  72430. Format of CAM Control Block:
  72431. Offset    Size    Description    (Table 1749)
  72432.  00h    DWORD    physical address of this CCB
  72433.  04h    WORD    CAM control block length
  72434.  06h    BYTE    function code (see #1748)
  72435.  07h    BYTE    CAM status (see #1752)
  72436.  08h    BYTE    SCSI status
  72437.  09h    BYTE    path ID (FFh = XPT)
  72438.  0Ah    BYTE    target ID
  72439.  0Bh    BYTE    logical unit number
  72440.  0Ch    WORD    CAM flags (see #1750)
  72441.  0Eh    BYTE    CAM address flags (see #1751)
  72442.  0Fh    BYTE    target-mode flags (see #1753)
  72443. ---function 02h---
  72444.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  72445.  14h    BYTE    peripheral device type of target logical unit number
  72446. ---function 03h---
  72447.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  72448.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  72449.  11h    BYTE    SCSI capabilities (see #1754)
  72450.  12h    BYTE    target mode support
  72451.         bit 7: processor mode
  72452.         bit 6: phase-cognizant mode
  72453.         bit 5-0: reserved
  72454.  13h    BYTE    miscellaneous flags
  72455.         bit 7: scanned high to low instead of low to high
  72456.         bit 6: removables not included in scan
  72457.         bit 5: inquiry data not kept by XPT
  72458.         bits 4-0: reserved
  72459.  14h    WORD    engine count
  72460.  16h 14 BYTEs    vendor-specific data
  72461.  24h    DWORD    size of private data area
  72462.  28h    DWORD    asynchronous event capabilities (see #1755)
  72463.  2Ch    BYTE    highest path ID assigned
  72464.  2Dh    BYTE    SCSI device ID of initiator
  72465.  2Eh  2 BYTEs    reserved
  72466.  30h 16 BYTEs    SIM vendor ID
  72467.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  72468.  50h  4 BYTEs    operating-system dependant usage
  72469. ---functions 00h,04h,11h,12h---
  72470.  no additional fields
  72471. ---function 05h---
  72472.  10h    DWORD    asynchronous event enables (see function 03h above)
  72473.  14h    DWORD    pointer to asynchronous callback routine
  72474.  18h    DWORD    pointer to peripheral driver buffer
  72475.  1Ch    BYTE    size of peripheral buffer
  72476. ---function 06h---
  72477.  10h    BYTE    peripheral device type of target
  72478. ---functions 10h,13h---
  72479.  10h    DWORD    pointer to CCB to be aborted
  72480. ---function 20h---
  72481.  10h    WORD    engine number
  72482.  12h    BYTE    engine type
  72483.         00h buffer memory
  72484.         01h lossless compression
  72485.         02h lossy compression
  72486.         03h encryption
  72487.  13h    BYTE    engine algorithm ID
  72488.         00h vendor-unique
  72489.         01h LZ1 variation 1 (STAC)
  72490.         02h LZ2 variation 1 (HP DCZL)
  72491.         03h LZ2 variation 2 (Infochip)
  72492.  14h    DWORD    engine memory size
  72493. ---function 21h---
  72494.  10h    DWORD    pointer to peripheral driver
  72495.  14h  4 BYTEs    reserved
  72496.  18h    DWORD    OS-dependent request-mapping info
  72497.  1Ch    DWORD    address of completion callback routine
  72498.  20h    DWORD    pointer to scatter/gather list or data buffer
  72499.  24h    DWORD    length of data transfer
  72500.  28h    DWORD    pointer to engine buffer data
  72501.  2Ch  2 BYTEs    reserved
  72502.  2Eh    WORD    number of scatter/gather entries
  72503.  30h    DWORD    maximum destination data length
  72504.  34h    DWORD    length of destination data
  72505.  38h    DWORD    source residual length
  72506.  3Ch 12 BYTEs    reserved
  72507.  48h    DWORD    OS-dependent timeout value
  72508.  4Ch  4 BYTEs    reserved
  72509.  50h    WORD    engine number
  72510.  52h    WORD    vendor-unique flags
  72511.  54h  4 BYTEs    reserved
  72512.  58h  N BYTEs    private data area for SIM
  72513. ---function 30h---
  72514.  10h    WORD    group 6 vendor-unique CDB length
  72515.  12h    WORD    group 7 vendor-unique CDB length
  72516.  14h    DWORD    pointer to target CCB list
  72517.  18h    WORD    number of target CCBs
  72518. ---other functions---
  72519.  10h    DWORD    pointer to peripheral driver
  72520.  14h    DWORD    pointer to next CCB
  72521.  18h    DWORD    OS-dependent request mapping information
  72522.  1Ch    DWORD    address of completion callback routine
  72523.  20h    DWORD    pointer to scatter/gather list or data buffer
  72524.  24h    DWORD    length of data transfer
  72525.  28h    DWORD    pointer to sense info buffer
  72526.  2Ch    BYTE    length of sense info buffer
  72527.  2Dh    BYTE    CDB length
  72528.  2Eh    WORD    number of scatter/gather entries
  72529.  30h  4 BYTEs    reserved
  72530.  34h    BYTE    SCSI status
  72531.  35h  3 BYTEs    reserved
  72532.  38h    DWORD    residual length
  72533.  40h 12 BYTEs    Command Descriptor Block (CDB)
  72534.  44h    DWORD    OS-dependent timeout value
  72535.  48h    DWORD    pointer to message buffer
  72536.  4Ch    WORD    length of message buffer
  72537.  4Eh    WORD    vendor-unique flags
  72538.  50h    BYTE    tag queue action
  72539.  51h  3 BYTEs    reserved
  72540.  54h  N BYTEs    private data area for SIM
  72541.  
  72542. Bitfields for CAM flags:
  72543. Bit(s)    Description    (Table 1750)
  72544.  0    CDB is a pointer
  72545.  1    tagged queue action enable
  72546.  2    linked CDB
  72547.  3    disable callback on completion
  72548.  4    scatter/gather
  72549.  5    disable autosense
  72550.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  72551.  9-8    reserved
  72552.  10    engine synchronize
  72553.  11    SIM queue freeze
  72554.  12    SIM queue priority
  72555.     1 head insertion
  72556.     0 tail insertion (normal)
  72557.  13    disable synchronous transfers    / exclusive
  72558.  14    initiate synchronous transfers    \ mutually
  72559.  15    disable disconnect
  72560.  
  72561. Bitfields for CAM address flags:
  72562. Bit(s)    Description    (Table 1751)
  72563.  7    SG list/data (0 = host, 1 = engine)
  72564.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  72565.  5    SG list/data
  72566.  4    sense buffer
  72567.  3    message buffer
  72568.  2    next CCB
  72569.  1    callback on completion
  72570.  0    reserved
  72571.  
  72572. (Table 1752)
  72573. Values for CAM status:
  72574.  00h    request in progress
  72575.  01h    request successful
  72576.  02h    host aborted request
  72577.  03h    unable to abort request
  72578.  04h    request completed with error
  72579.  05h    CAM is busy
  72580.  06h    invalid request
  72581.  07h    invalid path ID
  72582.  08h    no such SCSI device
  72583.  09h    unable to terminate I/O process
  72584.  0Ah    timeout on target selection
  72585.  0Bh    timeout on command
  72586.  0Dh    receive message rejection
  72587.  0Eh    sent/received SCSI bus reset
  72588.  0Fh    detected uncorrectable parity error
  72589.  10h    Autosense request failed
  72590.  11h    no HBA detected
  72591.  12h    data over/underrun
  72592.  13h    bus freed unexpectedly
  72593.  14h    target bus phase sequence failure
  72594.  15h    CCB too small
  72595.  16h    requested capability not available
  72596.  17h    sent bus device reset
  72597.  18h    terminate I/O process
  72598.  38h    invalid LUN
  72599.  39h    invalid target ID
  72600.  3Ah    unimplemented function
  72601.  3Bh    nexus not established
  72602.  3Ch    invalid initiator ID
  72603.  3Dh    received SCSI Command Descriptor Block
  72604.  3Eh    LUN already enabled
  72605.  3Fh    SCSI bus busy
  72606. Note:    bit 6 set to indicate frozen SIM queue
  72607.     bit 7 set to indicate valid autosense
  72608.  
  72609. Bitfields for CAM target-mode flags:
  72610. Bit(s)    Description    (Table 1753)
  72611.  7    data buffer valid
  72612.  6    status valid
  72613.  5    message buffer valid
  72614.  4    reserved
  72615.  3    phase-cognizant mode
  72616.  2    target CCB available
  72617.  1    disable autodisconnect
  72618.  0    disable autosave/restore
  72619.  
  72620. Bitfields for SCSI capabilities:
  72621. Bit(s)    Description    (Table 1754)
  72622.  7    modify data pointers
  72623.  6    wide bus (32 bits)
  72624.  5    wide bus (16 bits)
  72625.  4    synchronous transfers
  72626.  3    linked commands
  72627.  2    reserved
  72628.  1    tagged queueing
  72629.  0    soft reset
  72630.  
  72631. Bitfields for CAM asynchronous event capabilities:
  72632. Bit(s)    Description    (Table 1755)
  72633.  31-24    vendor-specific
  72634.  23-8    reserved
  72635.  7    new devices found during rescan
  72636.  6    SIM module deregistered
  72637.  5    SIM module registered
  72638.  4    sent bus device reset to target
  72639.  3    SCSI AEN
  72640.  2    reserved
  72641.  1    unsolicited reselection
  72642.  0    unsolicited SCSI bus reset
  72643.  
  72644. (Table 1756)
  72645. Values completion callback function is called with:
  72646.     interrupts disabled
  72647.     ES:BX -> completed CCB
  72648.  
  72649. (Table 1757)
  72650. Values asynchronous callback function is called with:
  72651.     AH = opcode
  72652.     AL = path ID generating callback
  72653.     DH = target ID causing event
  72654.     DL = LUN causing event
  72655.     CX = data byte count (if applicable)
  72656.     ES:BX -> data buffer (if applicable)
  72657. Return: all registers preserved
  72658. --------d-4F8200CX8765-----------------------
  72659. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  72660.     AX = 8200h
  72661.     CX = 8765h
  72662.     DX = CBA9h
  72663. Return: AH = 00h if installed
  72664.         CX = 9ABCh
  72665.         DX = 5678h
  72666.         ES:DI -> "SCSI_CAM"
  72667. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  72668. --------N-50---------------------------------
  72669. INT 50 - TIL Xpert AIM (X.25)
  72670.     AH = function
  72671. --------H-50---------------------------------
  72672. INT 50 - IRQ0 relocated by DESQview
  72673. Range:    INT 50 to INT F8, selected automatically
  72674. Notes:    this is the default location for older versions; DESQview v2.26+
  72675.       searches for unused ranges of interrupts and uses the lowest
  72676.       available range in its list for relocating these IRQs and the next
  72677.       lowest for relocating IRQ8-IRQ15
  72678.     a range of eight interrupts starting at a multiple of 8 is considered
  72679.       available if all vectors are identical and it has not been excluded
  72680.       with an /XB:nn commandline switch
  72681.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  72682.       are available, F8h and then 50h are used anyway)
  72683.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  72684.       are available, F8h and then F0h are used anyway)
  72685. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  72686. SeeAlso: INT D8"Screen Thief"
  72687. --------H-50---------------------------------
  72688. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  72689. SeeAlso: INT 51"IBM 3278"
  72690. --------H-50---------------------------------
  72691. INT 50 - IRQ0 relocated by OS/2 v1.x
  72692. SeeAlso: INT 51"OS/2"
  72693. --------V-500000-----------------------------
  72694. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  72695.     AX = 0000h
  72696.     ES:BX -> name string or ES:0000h if none
  72697.     CH,CL = row,column of upper left corner
  72698.     DH,DL = row,column of lower right corner
  72699. Return: AX = window handle or
  72700.         0000h if not installed
  72701.         FFFFh on error
  72702. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  72703. --------V-500001-----------------------------
  72704. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  72705.     AX = 0001h
  72706.     DI = window handle
  72707. SeeAlso: AX=0000h
  72708. --------V-500002-----------------------------
  72709. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  72710.     AX = 0002h
  72711.     BL = character
  72712.     BH = attribute
  72713.     DL = column
  72714.     DH = row
  72715.     DI = window handle
  72716. Return: AX = status
  72717.         0000h if successful
  72718.         FFFFh if outside window
  72719. SeeAlso: AX=0000h
  72720. --------l-500002-----------------------------
  72721. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  72722.     AX = 0002h
  72723.     ES:BX -> text string
  72724.     DH,DL = row,column of upper left corner
  72725.     DI = window handle
  72726. Return: AX = status
  72727.         0000h successful (text fits in window)
  72728.         FFFFh error
  72729. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  72730.       published in the June/July 1990 issue of PC Thuis Power magazine
  72731. --------V-500003-----------------------------
  72732. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  72733.     AX = 0003h
  72734.     ES:BX -> text string
  72735.     CX = string length (0000h if ASCIZ string)
  72736.     DL = position (FFh centered, else flush left)
  72737.     DH = starting row
  72738.     DI = window handle
  72739. Return: AX = status
  72740.         0000h successful
  72741.         FFFFh did not fit in window
  72742. --------l-500003-----------------------------
  72743. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  72744.     AX = 0003h
  72745.     ES:BX -> data to be written
  72746.     CX = number of bytes to write
  72747.     DS:SI -> filename
  72748. Return: AX = status
  72749.         0000h successful
  72750.         FFFFh error
  72751. SeeAlso: AX=0004h"Shell"
  72752. --------V-500004-----------------------------
  72753. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  72754.     AX = 0004h
  72755.     CH = type
  72756.         00h any key
  72757.         01h 'J' or 'N' (Dutch for yes/no)
  72758. Return: AX = key
  72759. SeeAlso: INT 16/AH=00h
  72760. --------l-500004-----------------------------
  72761. INT 50 - PC Thuis Organizer Shell - READ FILE
  72762.     AX = 0004h
  72763.     ES:BX -> buffer for data
  72764.     CX = number of bytes to read or 0000h for entire file
  72765.     DL = file type
  72766.         01h setting shell
  72767.         02h setting sterm
  72768.         03h INT21 file
  72769.     DS:SI -> filename
  72770. Return: AX = status
  72771.         0000h successful
  72772.         FFFFh error
  72773. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  72774.       is needed, a type number should be requested from him through the
  72775.       magazine:
  72776.         PC Thuis BV
  72777.         Spaarne 55
  72778.         2011 CE HAARLEM
  72779.         The Netherlands
  72780. SeeAlso: AX=0003h"Shell"
  72781. --------V-500005-----------------------------
  72782. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  72783.     AX = 0005h
  72784.     BL = new attribute
  72785.     CH,CL = row,column of upper left corner
  72786.     DH,DL = row,column of lower right corner
  72787.     DI = window handle
  72788. --------l-500005-----------------------------
  72789. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  72790.     AX = 0005h
  72791.     ES:BX -> prompt string (ES:0000h if no prompt)
  72792. Return: AX = key pressed
  72793.         0000h "J" (Dutch "Ja" = "Yes")
  72794.         FFFFh "N" (Dutch "Nee" = "No")
  72795. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  72796.       published in the June/July 1990 issue of PC Thuis Power magazine
  72797. SeeAlso: AX=0008h"PC Thuis"
  72798. --------V-500006-----------------------------
  72799. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  72800.     AX = 0006h
  72801.     ES:BX -> text string
  72802.     CH = type of input (see #1758)
  72803.     DH,DL = row,column of upper left corner
  72804.     DI = window handle
  72805. Return: AX = key which terminated entry
  72806.         0000h Enter
  72807.         0001h Esc
  72808.         0002h Down arrow
  72809.         0003h Up arrow
  72810.         0004h F10
  72811.  
  72812. (Table 1758)
  72813. Values for type of input to Vanderaart Text Windows:
  72814.  00h    everything
  72815.  01h    uppercase only
  72816.  02h    positive numbers
  72817.  03h    Dutch postal code ("9999 AA")
  72818.  04h    'J' or 'N' (Dutch yes/no)
  72819.  05h    telephone or FAX number
  72820.  06h    positive or negative number
  72821.  07h    date (dd/mm/yy)
  72822.  08h    money
  72823.  09h    '1' through '8'
  72824.  0Ah    '1' through '4'
  72825.  0Bh    uppercase filenames
  72826. --------l-500006-----------------------------
  72827. INT 50 - PC Thuis Organizer Shell - ALERT USER
  72828.     AX = 0006h
  72829.     ES:BX -> string
  72830. --------l-500007-----------------------------
  72831. INT 50 - PC Thuis Organizer Shell - DO LINE
  72832.     AX = 0007h
  72833.     ES:BX -> text string
  72834.     CX = string length in bytes (0000h if NUL-terminated)
  72835.     DL = FFh to center string, else flush left
  72836.     DH = upper left row
  72837.     DI = window handle
  72838. Return: AX = status
  72839.         0000h successful
  72840.         FFFFh error
  72841. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  72842.       published in the June/July 1990 issue of PC Thuis Power magazine
  72843. SeeAlso: AX=0008h
  72844. --------l-500008-----------------------------
  72845. INT 50 - PC Thuis Organizer Shell - DO MENU
  72846.     AX = 0008h
  72847.     ES:BX -> menu structure
  72848. Return: AL = index 1 or FFh if not selected
  72849.     AH = index 2 or FFh if not selected
  72850.     BL = index 3 or FFh if not selected
  72851.     BH = index 4 or FFh if not selected
  72852. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  72853. --------l-500009-----------------------------
  72854. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  72855.     AX = 0009h
  72856.     ES:BX -> message string
  72857. SeeAlso: AX=000Ah
  72858. --------l-50000A-----------------------------
  72859. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  72860.     AX = 000Ah
  72861. SeeAlso: AX=0009h
  72862. --------l-50000B-----------------------------
  72863. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  72864.     AX = 000Bh
  72865.     BL = new attribute
  72866.     CH,CL = row,column of upper left corner
  72867.     DH,DL = row,column of lower right corner
  72868.     DI = window handle
  72869. --------l-50000C-----------------------------
  72870. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  72871.     AX = 000Ch
  72872.     ES:BX -> request structure
  72873. Return: AX = status
  72874.         0000h confirmed
  72875.         FFFFh denied
  72876. SeeAlso: AX=0008h
  72877. --------l-50000D-----------------------------
  72878. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  72879.     AX = 000Dh
  72880.     ES:BX -> text string
  72881.     CL = length
  72882.     CH = input type (see #1759)
  72883.     DH,DL = row,column of upper left corner
  72884.     DI = window handle
  72885. Return: AX = result code
  72886. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  72887.       published in the June/July 1990 issue of PC Thuis Power magazine
  72888.  
  72889. Bitfields for input type:
  72890. Bit(s)    Description    (Table 1759)
  72891.  0    force uppercase
  72892.  1    integer
  72893.  2    no spaces allowed
  72894.  3    no cursor keys
  72895. --------l-50000E-----------------------------
  72896. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  72897.     AX = 000Eh
  72898.     BL = character
  72899.     BH = attribute
  72900.     DH,DL = row,column at which to plot
  72901.     DI = window handle
  72902. Return: AX = status
  72903.         0000h successful
  72904.         FFFFh errror
  72905. --------l-50000F-----------------------------
  72906. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  72907.     AX = 000Fh
  72908.     BL = character
  72909.     BH = attribute
  72910.     DI = window handle
  72911. --------l-500010-----------------------------
  72912. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  72913.     AX = 0010h
  72914.     ES:BX -> first menu structure
  72915.     CL = hotkey to look up
  72916. Return: AL = index 1 or FFh if not selected
  72917.     AH = index 2 or FFh if not selected
  72918.     BL = index 3 or FFh if not selected
  72919.     BH = index 4 or FFh if not selected
  72920. Index:    hotkeys;PC Thuis Organizer Shell
  72921. --------l-500011-----------------------------
  72922. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  72923.     AX = 0011h
  72924.     DS:SI -> source
  72925.     ES:DI -> destination
  72926.     CX = number of bytes to move (0000h = until NUL string terminator???)
  72927. SeeAlso: AX=0012h
  72928. --------l-500012-----------------------------
  72929. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  72930.     AX = 0012h
  72931.     DS:SI -> source
  72932.     ES:DI -> destination
  72933.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  72934. Return: AX = status
  72935.         0000h same
  72936.         FFFFh different
  72937. SeeAlso: AX=0011h
  72938. --------l-500013-----------------------------
  72939. INT 50 - PC Thuis Organizer Shell - GET KEY
  72940.     AX = 0013h
  72941.     CH = type flags
  72942.         bit 0: force uppercase
  72943.         bit 1: integer
  72944.         bit 2: no spaces
  72945. Return: AX = keystroke
  72946. --------l-500014-----------------------------
  72947. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  72948.     AX = 0014h
  72949.     BL = direction
  72950.         06h up
  72951.         07h down
  72952.     BH = attribute
  72953.     DI = window handle
  72954. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  72955. --------l-500015-----------------------------
  72956. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  72957.     AX = 0015h
  72958.     BL = handle size
  72959.         00h 65536 bytes (64K)
  72960.         01h 65535 bytes (64K-1)
  72961.         02h 32768 bytes (32K)
  72962.         03h 32767 bytes (32K-1)
  72963. Return: AX = segment
  72964. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  72965.       published in the June/July 1990 issue of PC Thuis Power magazine
  72966. SeeAlso: INT 21/AH=48h
  72967. --------H-51---------------------------------
  72968. INT 51 - IRQ1 relocated by DESQview
  72969. Range:    INT 51 to INT F9, selected automatically
  72970. Note:    this is the default location for older versions; see INT 50"DESQview"
  72971.       for details of interrupt relocation
  72972. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  72973. --------H-51---------------------------------
  72974. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  72975. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  72976. --------H-51---------------------------------
  72977. INT 51 - IRQ1 relocated by OS/2 v1.x
  72978. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  72979. --------H-52---------------------------------
  72980. INT 52 - IRQ2 relocated by DESQview
  72981. Range:    INT 52 to INT FA, selected automatically
  72982. Note:    this is the default location for older versions; see INT 50"DESQview"
  72983.       for details of interrupt relocation
  72984. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  72985. --------H-52---------------------------------
  72986. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  72987. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  72988. --------H-53---------------------------------
  72989. INT 53 - IRQ3 relocated by DESQview
  72990. Range:    INT 53 to INT FB, selected automatically
  72991. Note:    this is the default location for older versions; see INT 50"DESQview"
  72992.       for details of interrupt relocation
  72993. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  72994. --------H-53---------------------------------
  72995. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  72996. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  72997. --------N-53---------------------------------
  72998. INT 53 - WEB??? - API
  72999.     BX = function
  73000.         0000h ???
  73001.         AX = ???
  73002.         Return: AX = ???
  73003.         0004h ???
  73004.         0009h ???
  73005.         0015h
  73006.         AX = ???
  73007.         DX = ???
  73008.         0017h
  73009. Return: ???
  73010. Notes:    the installation check consists of looking for the signature "WEBCO"
  73011.       immediately prior to the interrupt handler
  73012.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  73013. Index:    installation check;unknown|installation check;WEBCO
  73014. --------H-54---------------------------------
  73015. INT 54 - IRQ4 relocated by DESQview
  73016. Range:    INT 54 to INT FC, selected automatically
  73017. Note:    this is the default location for older versions; see INT 50"DESQview"
  73018.       for details of interrupt relocation
  73019. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  73020. --------H-54---------------------------------
  73021. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  73022. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  73023. ----------545400-----------------------------
  73024. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  73025.     AX = 5400h
  73026. Return: AX = 0054h if installed
  73027.         CX:DX -> INT function handler
  73028. --------H-55---------------------------------
  73029. INT 55 - IRQ5 relocated by DESQview
  73030. Range:    INT 55 to INT FD, selected automatically
  73031. Note:    this is the default location for older versions; see INT 50"DESQview"
  73032.       for details of interrupt relocation
  73033. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  73034. --------H-55---------------------------------
  73035. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  73036. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  73037. --------H-56---------------------------------
  73038. INT 56 - IRQ6 relocated by DESQview
  73039. Range:    INT 56 to INT FE, selected automatically
  73040. Note:    this is the default location for older versions; see INT 50"DESQview"
  73041.       for details of interrupt relocation
  73042. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  73043. --------H-56---------------------------------
  73044. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  73045. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  73046. --------H-57---------------------------------
  73047. INT 57 - IRQ7 relocated by DESQview
  73048. Range:    INT 57 to INT FF, selected automatically
  73049. Note:    this is the default location for older versions; see INT 50"DESQview"
  73050.       for details of interrupt relocation
  73051. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  73052. --------H-57---------------------------------
  73053. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  73054. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  73055. --------H-58---------------------------------
  73056. INT 58 - IRQ8 relocated by DESQview 2.26+
  73057. Range:    INT 58 to INT F8, selected automatically
  73058. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73059. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
  73060. --------H-58---------------------------------
  73061. INT 58 - IRQ0 relocated by DoubleDOS
  73062. SeeAlso: INT 08
  73063. --------H-59---------------------------------
  73064. INT 59 - IRQ9 relocated by DESQview 2.26+
  73065. Range:    INT 59 to INT F9, selected automatically
  73066. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73067. SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
  73068. --------H-59---------------------------------
  73069. INT 59 - IRQ1 relocated by DoubleDOS
  73070. SeeAlso: INT 09
  73071. --------V-59---------------------------------
  73072. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  73073.     DS:DX -> block of 5 array pointers
  73074. Return: CF set on error
  73075.         AX = error code
  73076.     CF clear if successful
  73077.         AX = return code
  73078. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  73079.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  73080.     also used by the IBM Graphic Development Toolkit
  73081. --------H-5A---------------------------------
  73082. INT 5A - IRQ10 relocated by DESQview 2.26+
  73083. Range:    INT 5A to INT FA, selected automatically
  73084. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73085. SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
  73086. --------H-5A---------------------------------
  73087. INT 5A - IRQ2 relocated by DoubleDOS
  73088. SeeAlso: INT 0A
  73089. --------N-5A---------------------------------
  73090. INT 5A - PC Cluster adapter BIOS entry address
  73091.     ???
  73092. Return: ???
  73093. SeeAlso: INT 5B"PC Cluster"
  73094. --------H-5B---------------------------------
  73095. INT 5B - IRQ11 relocated by DESQview 2.26+
  73096. Range:    INT 5B to INT FB, selected automatically
  73097. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73098. SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
  73099. --------H-5B---------------------------------
  73100. INT 5B - IRQ3 relocated by DoubleDOS
  73101. SeeAlso: INT 0B
  73102. --------N-5B---------------------------------
  73103. INT 5B - PC cluster adapter - RELOCATED INT 19
  73104. SeeAlso: INT 19,INT 5A"PC Cluster"
  73105. --------N-5B---------------------------------
  73106. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  73107.     ES:BX -> Network Control Block (see #1760)
  73108. Return: AL = status (see INT 5C)
  73109. SeeAlso: INT 5C
  73110.  
  73111. Format of Starlan Network Control Block:
  73112. Offset    Size    Description    (Table 1760)
  73113.  00h    BYTE    ncb_command (see also #1764)
  73114.         70h send net Break
  73115.  01h    BYTE    ncb_retcode
  73116.  02h    BYTE    ncb_lsn
  73117.  03h    BYTE    ncb_num
  73118.  04h    DWORD    -> ncb_buffer
  73119.  08h    WORD    ncb_length
  73120.  0Ah 16 BYTEs    ncb_callname
  73121.  1Ah 16 BYTEs    ncb_name
  73122.  2Ah    BYTE    ncb_rto
  73123.  2Bh    BYTE    ncb_sto
  73124.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  73125.  30h    BYTE    ncb_lana_num
  73126.  31h    BYTE    ncb_cmd_cplt
  73127.  32h    DWORD    -> ncb_vname
  73128.  36h    BYTE    ncb_vnamelen
  73129.  37h  9 BYTEs    ncb_reserve
  73130. Note:    fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  73131. --------N-5B---------------------------------
  73132. INT 5B - Microsoft Network Transport Layer Interface
  73133. Note:    used by MS-NET for executing network commands
  73134. SeeAlso: INT 5C"NetBIOS"
  73135. --------N-5B---------------------------------
  73136. INT 5B - used by Alloy NTNX
  73137. --------N-5B---------------------------------
  73138. INT 5B - ISOLAN Multi Protocol Software
  73139.     ES:BX -> Transfer Control Block
  73140. Return: AL = status
  73141. Note:    this software interface allows multiple protocols/software packages
  73142.       to access a BICC 411x network card
  73143.  
  73144. Format of ISOLAN Transfer Control Block:
  73145. Offset    Type    Description    (Table 1761)
  73146.  00h    BYTE    command code
  73147.         B3h Status
  73148.         F2h Activate
  73149.         F3h Deactivate
  73150.         F4h Send Data
  73151.  01h    BYTE    command identity
  73152.  02h    BYTE    virtual circuit ID
  73153.  03h    WORD    buffer length
  73154.  05h    DWORD    buffer pointer
  73155.  09h    BYTE    expedited data flag
  73156.  0Ah    BYTE    cancelable flag
  73157.  0Bh 16 BYTEs    local network address
  73158.  1Bh 16 BYTEs    remote network address
  73159.  2Bh    DWORD    asynchronous notification routine
  73160.  30h    DWORD    local network number
  73161.  34h    DWORD    remote network number
  73162.  38h    BYTE    call timeout
  73163.  39h    BYTE    not used
  73164.  3Ah  8 BYTEs    reserved
  73165.  42h    BYTE    command code extension
  73166.  43h    WORD    Blue Book MAC type
  73167. --------U-5B5254DL04-------------------------
  73168. INT 5B U - SitBack v3.02R - GET ???
  73169.     AX = 5254h
  73170.     DL = 04h
  73171. Return: ES:BX -> ??? in resident portion
  73172. Program: SitBack is a background file backup utility by SitBack Technologies,
  73173.       Inc. which initiates backups whenever the system is idle
  73174. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  73175. --------U-5B8485DL70-------------------------
  73176. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  73177.     AX = 8485h
  73178.     DL = 70h
  73179. Return: CX = 8485h if installed
  73180.         DX:AX -> ??? (configuration data?)
  73181. Program: SitBack is a background file backup utility by SitBack Technologies,
  73182.       Inc. which initiates backups whenever the system is idle
  73183. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  73184. --------U-5B8485DL71-------------------------
  73185. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  73186.     AX = 8485h
  73187.     DL = 71h
  73188. Return: ES:BX -> FAR entry point to ???
  73189. Note:    the flag which is modified is located at the address returned by
  73190.        AX=5254h/DL=04h
  73191. SeeAlso: AX=8485h/DL=72h
  73192. --------U-5B8485DL72-------------------------
  73193. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  73194.     AX = 8485h
  73195.     DL = 72h
  73196. Note:    the flag which is modified is located at the address returned by
  73197.        AX=5254h/DL=04h
  73198. SeeAlso: AX=8485h/DL=71h
  73199. --------U-5B8485DL73-------------------------
  73200. INT 5B U - SitBack v3.02R - ???
  73201.     AX = 8485h
  73202.     DL = 73h
  73203.     ???
  73204. Return: ???
  73205. --------U-5B8485DL74-------------------------
  73206. INT 5B U - SitBack v3.02R - ???
  73207.     AX = 8485h
  73208.     DL = 74h
  73209.     ???
  73210. Return: ???
  73211. --------U-5B8485DL75-------------------------
  73212. INT 5B U - SitBack v3.02R - ???
  73213.     AX = 8485h
  73214.     DL = 75h
  73215.     CX = ???
  73216. Return: ???
  73217. SeeAlso: AX=8485h/DL=76h
  73218. --------U-5B8485DL76-------------------------
  73219. INT 5B U - SitBack v3.02R - ???
  73220.     AX = 8485h
  73221.     DL = 76h
  73222.     CX = ???
  73223. Return: ???
  73224. Note:    conditionally calls the code for AX=8485h/DL=75h
  73225. SeeAlso: AX=8485h/DL=75h
  73226. --------U-5B8485DL77-------------------------
  73227. INT 5B U - SitBack v3.02R - SET ??? FLAG
  73228.     AX = 8485h
  73229.     DL = 77h
  73230. --------U-5B8485DL78-------------------------
  73231. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  73232.     AX = 8485h
  73233.     DL = 78h
  73234. Return: CX = 5342h if supported
  73235.         ES = AX = segment of TSR data
  73236. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  73237. --------U-5B8485DL79-------------------------
  73238. INT 5B U - SitBack v3.02R - GET DTA
  73239.     AX = 8485h
  73240.     DL = 79h
  73241. Return: CX = 5342h if supported
  73242.         ES:BX -> DTA set by last INT 21/AH=1Ah
  73243. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  73244. SeeAlso: INT 21/AH=1Ah
  73245. --------U-5B8485DL7A-------------------------
  73246. INT 5B U - SitBack v3.02R - TOGGLE ???
  73247.     AX = 8485h
  73248.     DL = 7Ah
  73249. Return: CX = 5342h if supported
  73250.         AL = new value of ??? (00h or 01h)
  73251. --------H-5C---------------------------------
  73252. INT 5C - IRQ12 relocated by DESQview 2.26+
  73253. Range:    INT 5C to INT FC, selected automatically
  73254. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73255. SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
  73256. --------H-5C---------------------------------
  73257. INT 5C - IRQ4 relocated by DoubleDOS
  73258. SeeAlso: INT 0C
  73259. --------N-5C---------------------------------
  73260. INT 5C - NetBIOS INTERFACE
  73261.     ES:BX -> network control block (NCB) (see #1763)
  73262. Return: AL = status (see #1762)
  73263. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  73264.       programming interface to the IBM PC Network; the first implementation
  73265.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  73266.       current networks support NetBIOS as the session layer.
  73267. Note:    The Sytek PCnet card uses DMA 3.
  73268. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  73269.  
  73270. (Table 1762)
  73271. Values for NetBIOS status:
  73272.  00h    successful
  73273.  01h    bad buffer size
  73274.  03h    invalid NETBIOS command
  73275.  05h    timeout
  73276.  06h    receive buffer too small
  73277.  07h    No-ACK command failed
  73278.  08h    bad session number
  73279.  09h    LAN card out of memory
  73280.  0Ah    session closed
  73281.  0Bh    command has been cancelled
  73282.  0Dh    name already exists
  73283.  0Eh    local name table full
  73284.  0Fh    name still in use, can't delete
  73285.  11h    local session table full
  73286.  12h    remote PC not listening
  73287.  13h    bad NCB_NUM field
  73288.  14h    no answer to CALL or no such remote
  73289.  15h    name not in local name table
  73290.  16h    duplicate name
  73291.  17h    bad delete
  73292.  18h    abnormal end
  73293.  19h    name error, multiple identical names in use
  73294.  1Ah    bad packet
  73295.  21h    network card busy
  73296.  22h    too many commands queued
  73297.  23h    bad LAN card number
  73298.  24h    command finished while cancelling
  73299.  26h    command can't be cancelled
  73300.  30h    name defined by another process (OS/2)
  73301.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  73302.  35h    required operating system resources exhausted (OS/2)
  73303.  36h    maximum applications exceeded (OS/2)
  73304.  37h    no SAPs available for NetBIOS (OS/2)
  73305.  38h    requested resources not available (OS/2)
  73306.  40h    Lana System Error
  73307.  41h    Lana Remote Hot Carrier
  73308.  42h    Lana Local Hot Carrier
  73309.  43h    Lana No Carrier Detected
  73310.  44h    unusual network condition
  73311.  45h-4Dh hardware error
  73312.  4Eh    token ring is broken
  73313.  4Fh    token ring error
  73314.  50h    adapter malfunction
  73315.  F7h    error in explicit INITIALIZE
  73316.  F8h    error in implicit OPEN
  73317.  F9h    TOKREUI internal error
  73318.  FAh    hardware adapter testing
  73319.  FBh    NetBIOS emulator not found
  73320.  FCh    OPEN or OPEN_SAP failure
  73321.  FDh    unexpected adapter closure
  73322.  FFh    NetBIOS busy (command pending)
  73323.  
  73324. Format of NetBIOS Network Control Block:
  73325. Offset    Size    Description    (Table 1763)
  73326.  00h    BYTE    command code (see #1764)
  73327.  01h    BYTE    return code (see #1762)
  73328.  02h    BYTE    local session number (LSN)
  73329.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  73330.  04h    DWORD    -> I/O buffer
  73331.  08h    WORD    length of data in buffer
  73332.  0Ah 16 BYTEs    remote system to call
  73333.  1Ah 16 BYTEs    network name of local machine
  73334.  2Ah    BYTE    receive timeout in 1/2 seconds
  73335.  2Bh    BYTE    send timeout in 1/2 seconds
  73336.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  73337.  30h    BYTE    network adapter number on which to execute command
  73338.         00h-03h IBM NetBIOS specs
  73339.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  73340.  31h    BYTE    command completion code (see returned status above)
  73341.  32h 14 BYTEs    reserved for network card
  73342.  
  73343. (Table 1764)
  73344. Values for NetBIOS command code field in NCB:
  73345.  10h    start session with NCB_NAME name (call)
  73346.  11h    listen for call
  73347.  12h    end session with NCB_NAME name (hangup)
  73348.  14h    send data via NCB_LSN
  73349.  15h    receive data from a session
  73350.  16h    receive data from any session
  73351.  17h    send multiple data buffers
  73352.  20h    send unACKed message (datagram)
  73353.  21h    receive datagram
  73354.  22h    send broadcast datagram
  73355.  23h    receive broadcast datagram
  73356.  30h    add name to name table
  73357.  31h    delete name from name table
  73358.  32h    reset adapter card and tables
  73359.  33h    get adapter status (see structure "astatus" below)
  73360.  34h    status of all sessions for name (see structure "sstatus" below)
  73361.  35h    cancel
  73362.  36h    add group name to name table
  73363.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  73364.  70h    unlink from IBM remote program (no F0h function)
  73365.  71h    send data without ACK
  73366.  72h    send multiple buffers without ACK
  73367.  72h    UngermannBass Register (conflicts with above function)
  73368.  73h    UngermannBass SendNmc
  73369.  74h    UngermannBass Callniu
  73370.  75h    UngermannBass Calladdr
  73371.  76h    UngermannBass Listenaddr
  73372.  77h    UngermannBass SendPkt
  73373.  78h    find name
  73374.  78h    UngermannBass RcvPkt (conflicts with above function)
  73375.  79h    token-ring protocol trace
  73376.  79h    UngermannBass SendAttn (conflicts with above function)
  73377.  7Ah    UngermannBass RcvAttn
  73378.  7Bh    UngermannBass Listenniu
  73379.  7Ch    UngermannBass RcvRaw
  73380.  7Dh    UngermannBass SendNmc2
  73381.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  73382.       completion code both set to 03h, while invalid functions return only
  73383.       return code field set to 03h)
  73384. Note:    OR any of the above except 70h with 80h for non-waiting call
  73385.  
  73386. Format of NetBIOS structure "name":
  73387. Offset    Size    Description    (Table 1765)
  73388.  00h 16 BYTEs "nm_name" symbolic name
  73389.  10h    BYTE  "nm_num" number associated with name
  73390.  11h    BYTE  nm_status
  73391.  
  73392. Format of NetBIOS structure "astatus":
  73393. Offset    Size    Description    (Table 1766)
  73394.  00h  6 BYTEs as_id
  73395.  06h    BYTE  as_jumpers
  73396.  07h    BYTE  as_post
  73397.  08h    BYTE  as_major
  73398.  09h    BYTE  as_minor
  73399.  0Ah    WORD  as_interval
  73400.  0Ch    WORD  as_crcerr
  73401.  0Eh    WORD  as_algerr
  73402.  10h    WORD  as_colerr
  73403.  12h    WORD  as_abterr
  73404.  14h    DWORD as_tcount
  73405.  18h    DWORD as_rcount
  73406.  1Ch    WORD  as_retran
  73407.  1Eh    WORD  as_xresrc
  73408.  20h  8 BYTEs as_res0
  73409.  28h    WORD  as_ncbfree
  73410.  2Ah    WORD  as_ncbmax
  73411.  2Ch    WORD  as_ncbx
  73412.  2Eh  4 BYTEs as_res1
  73413.  32h    WORD  as_sespend
  73414.  34h    WORD  as_msp
  73415.  36h    WORD  as_sesmax
  73416.  38h    WORD  as_bufsize
  73417.  3Ah    WORD  as_names
  73418.  3Ch 16 name structures     as_name
  73419.  
  73420. Format of NetBIOS structure "sstatus":
  73421. Offset    Size    Description    (Table 1767)
  73422.  00h    BYTE    number of sessions being reported
  73423.  01h    BYTE    number of sessions with this name
  73424.  02h    BYTE    number of outstanding receive datagrams
  73425.  03h    BYTE    number of outstanding ReceiveAnys
  73426.  04h    var    session structures (see #1768)
  73427.  
  73428. Format of NetBIOS structure "session":
  73429. Offset    Size    Description    (Table 1768)
  73430.  00h    BYTE    local session number
  73431.  01h    BYTE    state
  73432.         01h listen pending
  73433.         02h call pending
  73434.         03h session established
  73435.         04h hangup pending
  73436.         05h hangup done
  73437.         06h session aborted
  73438.  02h 16 BYTEs    local name
  73439.  12h 16 BYTEs    remote name
  73440.  22h    BYTE    number of outstanding receives
  73441.  23h    BYTE    number of outstanding sends/chainsends
  73442. --------N-5C---------------------------------
  73443. INT 5C - TOPS INTERFACE
  73444.     ES:BX -> Network Control Block
  73445. Note:    TOPS card uses DMA 1, 3 or none.
  73446. --------N-5C---------------------------------
  73447. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  73448.     DX:BX -> control block (see #1770)
  73449. Return: none
  73450. Range:    INT 5Ch to INT 70h
  73451. Notes:    the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  73452.       handler; this serves as the installation check
  73453. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  73454.  
  73455. (Table 1769)
  73456. Values for ATALK.SYS command code:
  73457.  01h    "AT_INIT"        initialize the driver
  73458.  02h    "AT_KILL"
  73459.  03h    "AT_GETNETINFO" get current network info incl init status
  73460.  04h    "AT_GETCLOCKTICKS"
  73461.  05h    "AT_STARTTIMER"
  73462.  06h    "AT_RESETTIMER"
  73463.  07h    "AT_CANCELTIMER"
  73464.  10h    "LAP_INSTALL"
  73465.  11h    "LAP_REMOVE"
  73466.  12h    "LAP_WRITE"
  73467.  13h    "LAP_READ"
  73468.  14h    "LAP_CANCEL"
  73469.  20h    "DDP_OPENSOCKET"
  73470.  21h    "DDP_CLOSESOCKET"
  73471.  22h    "DDP_WRITE"
  73472.  23h    "DDP_READ"
  73473.  24h    "DDP_CANCEL"
  73474.  30h    "NBP_REGISTER"
  73475.  31h    "NBP_REMOVE"
  73476.  32h    "NBP_LOOKUP"
  73477.  33h    "NBP_CONFIRM"
  73478.  34h    "NBP_CANCEL"
  73479.  35h    "ZIP_GETZONELIST"
  73480.  36h    "ZIP_GETMYZONE"
  73481.  37h    "ZIP_TAKEDOWN"
  73482.  38h    "ZIP_BRINGUP"
  73483.  40h    "ATP_OPENSOCKET"
  73484.  41h    "ATP_CLOSESOCKET"
  73485.  42h    "ATP_SENDREQUEST"
  73486.  43h    "ATP_GETREQUEST"
  73487.  44h    "ATP_SENDRESPONSE"
  73488.  45h    "ATP_ADDRESPONSE"
  73489.  46h    "ATP_CANCELTRANS"
  73490.  47h    "ATP_CANCELRESPONSE"
  73491.  48h    "ATP_CANCELREQUEST"
  73492.  50h    "ASP_GETPARMS"
  73493.  51h    "ASP_CLOSESESSION"
  73494.  52h    "ASP_CANCEL"
  73495.  53h    "ASP_INIT"
  73496.  54h    "ASP_KILL"
  73497.  55h    "ASP_GETSESSION"
  73498.  56h    "ASP_GETREQUEST"
  73499.  57h    "ASP_CMDREPLY"
  73500.  58h    "ASP_WRTCONTINUE"
  73501.  59h    "ASP_WRTREPLY"
  73502.  5Ah    "ASP_CLOSEREPLY"
  73503.  5Bh    "ASP_NEWSTATUS"
  73504.  5Ch    "ASP_ATTENTION"
  73505.  5Dh    "ASP_GETSTATUS"
  73506.  5Eh    "ASP_OPENSESSION"
  73507.  5Fh    "ASP_COMMAND"
  73508.  60h    "ASP_WRITE"
  73509.  61h    "ASP_GETATTENTION"
  73510.  70h    "PAP_OPEN"
  73511.  71h    "PAP_CLOSE"
  73512.  72h    "PAP_READ"
  73513.  73h    "PAP_WRITE"
  73514.  74h    "PAP_STATUS"
  73515.  75h    "PAP_REGNAME"
  73516.  76h    "PAP_REMNAME"
  73517.  77h    "PAP_INIT"
  73518.  78h    "PAP_NEWSTATUS"
  73519.  79h    "PAP_GETNEXTJOB"
  73520.  7Ah    "PAP_KILL"
  73521.  7Bh    "PAP_CANCEL"
  73522.  
  73523. Format of AppleTalk control block:
  73524. Offset    Size    Description    (Table 1770)
  73525.  00h    WORD    command code (see #1769)
  73526.         OR with the following flags
  73527.         8000h start command then return
  73528.         4000h wait for interrupt service to complete
  73529.  02h    WORD    returned status
  73530.         0000h success (already initialized if func 01h)
  73531.  04h    DWORD    pointer to completion function
  73532.  08h    WORD    network number
  73533.  0Ah    BYTE    node ID
  73534. ---if general func (01h,03h), control block continues:
  73535.  0Bh    BYTE    "inf_abridge"
  73536.  0Ch    WORD    "inf_config"
  73537.  0Eh    DWORD    pointer to buffer
  73538.  12h    WORD    buffer size
  73539. ---if DDP function (20h-24h), control block continues:
  73540.  0Bh    BYTE    "ddp_addr_socket"
  73541.  0Ch    BYTE    "ddp_socket"
  73542.  0Dh    BYTE    "ddp_type"
  73543.  0Eh    DWORD    pointer to buffer
  73544.  12h    WORD    buffer size
  73545.  14h    BYTE    "ddp_chksum"
  73546. ---if Name Binding Protocol (30h-34h), control block continues:
  73547.  0Bh    BYTE    "nbp_addr_socket"
  73548.  0Ch    WORD    "nbp_toget"
  73549.  0Eh    DWORD    pointer to buffer (see #1771)
  73550.  12h    WORD    buffer size
  73551.  14h    BYTE    "nbp_interval"
  73552.  15h    BYTE    "nbp_retry"
  73553.  16h    DWORD    "nbp_entptr"
  73554. ---if AppleTalk Transaction Protocol (42h), control block continues:
  73555.  0Bh    BYTE    "atp_addr_socket"
  73556.  0Ch    WORD    "atp_socket"
  73557.  0Eh    DWORD    pointer to buffer
  73558.  12h    WORD    buffer size
  73559.  14h    BYTE    "atp_interval"
  73560.  15h    BYTE    "atp_retry"
  73561.  16h    BYTE    ATP flags
  73562.         bit 5: exactly one transaction
  73563.  17h    BYTE    "atp_seqbit"
  73564.  18h    BYTE    transaction ID
  73565.  19h  4 BYTEs    ATP user bytes
  73566.  1Dh    BYTE    number of BDS buffers
  73567.  1Eh    BYTE    number of BDS responses
  73568.  1Fh    DWORD    pointer to BDS buffers (see #1772)
  73569.  
  73570. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  73571. Offset    Size    Description    (Table 1771)
  73572.  00h    WORD    "tup_address_network"
  73573.  02h    BYTE    "tup_address_notid"
  73574.  03h    BYTE    "tup_address_socket"
  73575.  04h    BYTE    "tup_enum"
  73576.  05h 99 BYTEs    name
  73577.  
  73578. Format of BDS entries:
  73579. Offset    Size    Description    (Table 1772)
  73580.  00h    DWORD    pointer to buffer
  73581.  04h    WORD    size of buffer
  73582.  06h    WORD    BDS data size
  73583.  08h  4 BYTEs    "bds_userbytes"
  73584. --------N-5C---------------------------------
  73585. INT 5C - IBM 802.2 INTERFACE (LLC)
  73586.     ES:BX -> CCB (see #1773)
  73587. Return: none
  73588.  
  73589. Format of IBM 802.2 CCB:
  73590. Offset    Size    Description    (Table 1773)
  73591.  00h    BYTE    adapter
  73592.  01h    BYTE    command code
  73593.  02h    BYTE    return code
  73594.  03h    BYTE    work
  73595.  04h    DWORD    pointer to ???
  73596.  08h    DWORD    pointer to completion function???
  73597.  0Ch    DWORD    pointer to parameters???
  73598. --------N-5C---------------------------------
  73599. INT 5C - $25 LAN - INSTALLATION CHECK
  73600. Notes:    current versions only check whether the vector is 0000h:0000h or not
  73601.     future versions are supposed to have the signature "NET" in the three
  73602.       bytes preceding the INT 5C handler
  73603. --------N-5C04-------------------------------
  73604. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  73605.     AH = 04h
  73606.     AL = COM port (0 = default)
  73607.     CX = wait count in character times (should be at least 100)
  73608. Return: ZF set if link alive
  73609. --------H-5D---------------------------------
  73610. INT 5D - IRQ13 relocated by DESQview 2.26+
  73611. Range:    INT 5D to INT FD, selected automatically
  73612. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73613. SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
  73614. --------H-5D---------------------------------
  73615. INT 5D - IRQ5 relocated by DoubleDOS
  73616. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  73617. --------H-5E---------------------------------
  73618. INT 5E - IRQ14 relocated by DESQview 2.26+
  73619. Range:    INT 5E to INT FE, selected automatically
  73620. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73621. SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
  73622. --------H-5E---------------------------------
  73623. INT 5E - IRQ6 relocated by DoubleDOS
  73624. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  73625. --------H-5F---------------------------------
  73626. INT 5F - IRQ15 relocated by DESQview 2.26+
  73627. Range:    INT 5F to INT FF, selected automatically
  73628. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  73629. SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
  73630. --------H-5F---------------------------------
  73631. INT 5F - IRQ7 relocated by DoubleDOS
  73632. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  73633. --------b-5F00-------------------------------
  73634. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  73635.     AH = 00h
  73636.     AL = video mode
  73637.         07h text, system manager compliant
  73638.         20h 240x128 mono graphics, system manager compliant
  73639.         87h text, not system manager compliant
  73640.         A0h 240x128 mono graphics, not system manager compliant
  73641. Note:    the defaults after setting the mode to graphics are (0,0) logical
  73642.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  73643.       pixel replacement FORCE, line type and fill mask all bits set
  73644. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  73645. --------b-5F01-------------------------------
  73646. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  73647.     AH = 01h
  73648.     ES:DI -> 8-byte fill mask
  73649. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  73650.       when drawing filled rectangles; it is always aligned with the byte
  73651.       boundaries of video memory, regardless of the actual boundaries of
  73652.       the rectangle
  73653. SeeAlso: AH=02h
  73654. --------b-5F02-------------------------------
  73655. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  73656.     AH = 02h
  73657.     ES:DI -> graphics info record (see #1774)
  73658. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  73659.  
  73660. Format of HP 95LX graphics info record:
  73661. Offset    Size    Description    (Table 1774)
  73662.  00h    BYTE    current video mode
  73663.  01h    BYTE    default video mode
  73664.  02h    WORD    display width in pixels
  73665.  04h    WORD    display height in pixels
  73666.  06h    WORD    current pen column
  73667.  08h    WORD    current pen row
  73668.  0Ah    WORD    current line type
  73669.  0Ch    WORD    current replacement rule
  73670.  0Eh    WORD    current pen color
  73671.  10h    WORD    current leftmost column of clip region
  73672.  12h    WORD    current rightmost column of clip region
  73673.  14h    WORD    current topmost row of clip region
  73674.  16h    WORD    current bottommost row of clip region
  73675.  18h    WORD    current column of logical origin
  73676.  1Ah    WORD    current row of logical origin
  73677.  1Ch  8 BYTEs    current fill mask
  73678. --------b-5F03-------------------------------
  73679. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  73680.     AH = 03h
  73681.     CX = column
  73682.     DX = row
  73683. SeeAlso: AH=04h
  73684. --------b-5F04-------------------------------
  73685. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  73686.     AH = 04h
  73687.     CX = left-most column
  73688.     DX = top-most row
  73689.     SI = right-most column
  73690.     DI = bottom-most row
  73691. SeeAlso: AH=03h
  73692. --------b-5F05-------------------------------
  73693. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  73694.     AH = 05h
  73695.     AL = fill type
  73696.         00h outline, using current line type and color
  73697.         01h solid, using current color
  73698.         02h pattern, using current fill mask and color
  73699.     DX,CX = row,column of other corner of rectangle
  73700. Note:    the rectangle is drawn starting at the current pen position
  73701. SeeAlso: AH=01h,AH=06h,AH=07h
  73702. --------b-5F06-------------------------------
  73703. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  73704.     AH = 06h
  73705.     DX,CX = row,column of end point
  73706. Note:    the line is drawn starting at the current pen position
  73707. SeeAlso: AH=05h,AH=07h
  73708. --------b-5F07-------------------------------
  73709. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  73710.     AH = 07h
  73711.     DX,CX = row,column of point
  73712. Note:    also sets pen position to the specified point
  73713. SeeAlso: AH=06h,AH=08h,AH=0Ch
  73714. --------b-5F08-------------------------------
  73715. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  73716.     AH = 08h
  73717.     DX,CX = row,column of new pen position
  73718. SeeAlso: AH=07h,AH=09h
  73719. --------b-5F09-------------------------------
  73720. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  73721.     AH = 09h
  73722.     AL = new color (00h = white, 01h = black)
  73723. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  73724. --------b-5F0A-------------------------------
  73725. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  73726.     AH = 0Ah
  73727.     AL = new replacement rule
  73728.         00h force
  73729.         01h AND
  73730.         02h OR
  73731.         03h XOR
  73732. SeeAlso: AH=01h,AH=09h,AH=0Bh
  73733. --------b-5F0B-------------------------------
  73734. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  73735.     AH = 0Bh
  73736.     CX = new line type
  73737. Note:    the line type specifies 16 bits which are repeated over and over while
  73738.       drawing the pixels of a line
  73739. SeeAlso: AH=09h,AH=0Ah
  73740. --------b-5F0C-------------------------------
  73741. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  73742.     AH = 0Ch
  73743.     DX,CX = row,column of pixel to read
  73744. Return: AX = pixel color
  73745. SeeAlso: AH=07h
  73746. --------b-5F0D-------------------------------
  73747. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  73748.     AH = 0Dh
  73749.     DX,CX = row,column of first corner
  73750.     BP,SI = row,column of second corner
  73751.     ES:DI -> image buffer (see #1775)
  73752. Note:    the specified corners are included in the saved image
  73753. SeeAlso: AH=0Eh
  73754.  
  73755. Format of HP 95LX image buffer:
  73756. Offset    Size    Description    (Table 1775)
  73757.  00h    WORD    number of planes (always 01h on HP 95LX)
  73758.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  73759.  04h    WORD    image width in pixels
  73760.  06h    WORD    image height in pixels
  73761.  08h  N BYTEs    image data
  73762.         requires (WIDTH+7)/8 * HEIGHT bytes
  73763. --------b-5F0E-------------------------------
  73764. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  73765.     AH = 0Eh
  73766.     AL = replacement rule (see #1776)
  73767.     DX,CX = row,column of top left corner
  73768.     ES:DI -> image buffer (see #1775)
  73769. Note:    if the specified image does not fit completely on the screen, this call
  73770.       does nothing
  73771. SeeAlso: AH=0Dh
  73772.  
  73773. Bitfields for replacement rule:
  73774. Bit(s)    Description    (Table 1776)
  73775.  2    invert image before applying rule
  73776.  1-0    function (00 force, 01 AND, 10 OR, 11 XOR)
  73777. --------b-5F0F-------------------------------
  73778. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  73779.     AH = 0Fh
  73780.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  73781.     DX,CX = row,column of first character's top left corner
  73782.     ES:DI -> ASCIZ text
  73783. --------*-60---------------------------------
  73784. INT 60 - reserved for user interrupt
  73785. --------v-60---------------------------------
  73786. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  73787. Desc:    The "Zero Bug" virus hooks this vector.     It considers itself installed
  73788.       if offset 103h of the handler's segment contains the bytes "ZE"
  73789. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  73790. --------d-60---------------------------------
  73791. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  73792. SeeAlso: INT 41,INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  73793. SeeAlso: INT C0"AMI"
  73794. Notes:    this vector stores the first four bytes of the parameter table for
  73795.       hard disk 0
  73796.     these vectors are used by the following Adaptec controllers:
  73797.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  73798.     these vectors are NOT used by the following Adaptec controllers:
  73799.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  73800. --------b-60---------------------------------
  73801. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  73802. Desc:    supplies a number of subfunctions which perform such functions as
  73803.       drawing boxes and menus, and provide input line editing
  73804. SeeAlso: INT 61"Atari"
  73805. --------V-60---------------------------------
  73806. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  73807. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  73808. Range:    INT 60 to INT 66, selected by searching for first free vector
  73809. Note:    the Nabbit installation check consists of testing whether the
  73810.       interrupt vector points at the ASCIZ signature string "iG"
  73811.       (69h 47h 00h)
  73812. --------V-60---------------------------------
  73813. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  73814. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  73815. Range:    INT 60 to INT 6F, selected by searching for first free vector
  73816. Notes:    the Buffit installation check consists of testing whether the
  73817.       interrupt vector points at the ASCII signature "Buffit  "
  73818.     there is a private entry point immediately following the signature
  73819.       string, i.e. eight bytes beyond the address pointed at by the
  73820.       interrupt
  73821.  
  73822. (Table 1777)
  73823. Call Buffit private entry point with:
  73824.     AH = function
  73825.         00h get information and hotkey state
  73826.         01h get information and toggle hotkey state
  73827. Return: AH = new hotkey state (00h enabled, 01h disabled)
  73828.     AL = hotkey scan code
  73829.     BH = hotkey shift states
  73830.     BL = ??? (01h)
  73831.     CX = segment of resident code
  73832.     DH = niterrupt number used for signature pointer
  73833.     DL = ??? (00h)
  73834.     SI = INT 09 handler offset
  73835.     DI = INT 21 handler offset
  73836. Index:    hotkeys;Buffit
  73837. --------r-60---------------------------------
  73838. INT 60 - PC-IPC API
  73839.     STACK:    DWORD    pointer to parameter block (see #1778)
  73840. Return: STACK:    unchanged
  73841. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  73842.       allows communication between independent programs
  73843. Range:    INT 00 to INT FF, selected by commandline switch
  73844.  
  73845. Format of PC-IPC parameter block:
  73846. Offset    Size    Description    (Table 1778)
  73847.  00h    WORD    caller's ID
  73848.  02h    WORD    to ID
  73849.  04h    WORD    command code (see #1779)
  73850.  06h    WORD    returned status (see #1780)
  73851.  08h    WORD    returned error code (see #1781)
  73852.  0Ah    WORD    size of data
  73853.  0Ch    DWORD    pointer to data buffer
  73854.  
  73855. (Table 1779)
  73856. Values for PC-IPC command code:
  73857.  01h "IPC_CMND_INQUIRE"     inquire current status
  73858.     set status field, writes WORD to data buffer containing free
  73859.       message space in bytes, and sets the "size" field to the
  73860.       number of messages waiting
  73861.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  73862.     ignored unless called with the same ID that disabled PC-IPC
  73863.  03h "IPC_CMND_DISABLE" disable PC-IPC
  73864.  04h "IPC_CMND_INSTALL" reset PC-IPC
  73865.  06h "IPC_CMND_RDATA"    read data
  73866.     returns first message in data buffer, sets "size" to message length
  73867.       and "to ID" field to sender's ID
  73868.     if no messages available, bit 4 of status is cleared and "size" is
  73869.       set to zero
  73870.  07h "IPC_CMND_SDATA"    send data
  73871.  08h "IPC_CMND_REQID"    require user ID
  73872.     create a new recognized ID and return in "caller's ID" field
  73873.  09h "IPC_CMND_DELID"    cancel user ID
  73874.     delete caller's ID from pool of recognized IDs
  73875.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  73876.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  73877.     string representing version returned in data buffer, "size" field
  73878.       set to length of string
  73879.  
  73880. Bitfields for returned status:
  73881. Bit(s)    Description    (Table 1780)
  73882.  0    unused
  73883.  1    IPC enabled
  73884.  2    IPC installed
  73885.  3    error
  73886.  4    message(s) available
  73887.  
  73888. (Table 1781)
  73889. Values for PC-IPC error code:
  73890.  00h    no error
  73891.  01h    invalid command or parameter
  73892.  02h    only process 0 can install/reset IPC
  73893.  03h    process can not install/reset IPC
  73894.  04h    IPC is not enabled
  73895.  05h    process can not disable IPC
  73896.  06h    invalid destination process ID
  73897.  07h    invalid sending process ID
  73898.  08h    invalid data destination
  73899.  09h    no more process IDs available
  73900.  0Ah    can not relinquish that process ID
  73901.  0Bh    message space is full
  73902.  0Ch    IPC is not installed
  73903. --------R-60---------------------------------
  73904. INT 60 - Tangram Arbiter - API
  73905. Desc:    Arbiter makes a PC disk look like a slow disk over an SNA link to an
  73906.       IBM mainframe
  73907. Range:    INT 60h to INT 66h, selected by configuration parameter
  73908. Notes:    identified by string "@ARB_API" immediately following a short jump at
  73909.       the interrupt handler address
  73910. --------N-60---------------------------------
  73911. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  73912.     ES:BX -> request packet
  73913. Return: request packet updated
  73914. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  73915.       which was used in creating this description
  73916.     the installation check consists of testing for the WORD 4142h ('AB')
  73917.       immediately preceding the interrupt handler
  73918. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  73919.       and has a fencepost error even in that test, functions 000Bh and
  73920.       XX01h-XX0Bh (XX nonzero) branch to random locations
  73921. SeeAlso: INT 2F/AX=7A40h
  73922.  
  73923. Format of Excelan request packet:
  73924. Offset    Size    Description    (Table 1782)
  73925.  00h 12 BYTEs    ???
  73926.  0Ch    WORD    (return) error code (see #1783)
  73927.  0Eh    DWORD    -> FAR function for ???
  73928.  12h    WORD    function number
  73929.         0001h ???
  73930.         0002h NOP
  73931.         0003h NOP
  73932.         0004h NOP
  73933.         0005h ???
  73934.         0006h get ??? record
  73935.         0007h NOP
  73936.         0008h reset ???
  73937.         0009h NOP
  73938.         000Ah set ???
  73939.     ???
  73940. ---function 01h---
  73941.  20h    BYTE    (call) subfunction (32h-3Bh)
  73942.         3Bh non-blocking I/O request (will be tested every clock tick)
  73943.  21h    BYTE    (return) error code
  73944.         00h successful
  73945.         09h invalid connection number
  73946.         2Ah bad connection type
  73947.         45h ???
  73948. ---function 01h, subfunction 32h---
  73949.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  73950. ---function 01h, subfunction 34h---
  73951.  26h    WORD    (call) ???
  73952.  28h    WORD    (call) ???
  73953.  2Ah    WORD    (call) ???
  73954. ---function 01h, subfunction 35h---
  73955.  1Ah    WORD    (call) connection number???
  73956.  26h    WORD    (return) ???
  73957. ---function 01h, subfunction 36h---
  73958.  1Ah    WORD    (call) connection number???
  73959.  38h    WORD    ???
  73960. ---function 01h, subfunction 37h---
  73961.  24h    WORD    (return) ???
  73962.  26h    WORD    (return) ???
  73963. ---function 01h, subfunction 38h---
  73964.  1Ah    WORD    (call) connection number???
  73965. ---function 01h, subfunction 3Ah---
  73966.  22h    WORD    (call) ???
  73967.         667Eh ???
  73968.         667Fh ???
  73969.  24h    BYTE    (call 667Eh) ???
  73970.  24h    WORD    (return 667Fh) ???
  73971. ---function 01h, subfunction 3Bh---
  73972.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  73973.         function called with AX = 0000h
  73974.                      STACK: DWORD -> request packet
  73975.                         WORD 0000h
  73976.             should return STACK unchanged
  73977.  1Ah    WORD    (call) connection number???
  73978.  21h    BYTE    (return) set to 01h when I/O becomes possible
  73979.  22h    BYTE    (call) direction (00h write, 01h read)
  73980.  34h    DWORD    (return) -> next pending request packet
  73981. ---function 05h---
  73982.  1Eh    WORD    (call) ???
  73983.  20h    WORD    (call) ???
  73984.  34h    DWORD    (call) -> ???
  73985. ---function 06h---
  73986.  16h    DWORD    (call) -> buffer for ??? record (see #1784)
  73987.  1Ah    WORD    (call) number of bytes to copy
  73988.  22h    WORD    (return) number of bytes transferred
  73989. ---function 08h---
  73990.  14h    WORD    (return) ??? (0001h)
  73991. ---function 0Ah---
  73992.  16h    DWORD    (call) -> WORD ???
  73993.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  73994.  
  73995. (Table 1783)
  73996. Values for Excelan error code:
  73997.  0000h    successful
  73998.  002Dh    invalid function
  73999.  0050h    ???
  74000.  
  74001. Format of ??? record:
  74002. Offset    Size    Description    (Table 1784)
  74003.  00h    WORD    offset of ???
  74004.  02h  4 BYTEs    ???
  74005.  06h    DWORD    IP address (big-endian)
  74006.  0Ah  6 BYTEs    physical address (big-endian)
  74007.     ???
  74008. --------G-60---------------------------------
  74009. INT 60 U - INTRSPY/CMDSPY v1.0 only - API
  74010. Program: INTRSPY is a script-driven debugger included with the book
  74011.       _Undocumented_DOS_.
  74012. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  74013.     The installation check is to
  74014.       a) determine that the handler is an IRET instruction
  74015.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  74016.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  74017.       its entry point.
  74018.     INTRSPY v2.0 (included with the second edition of the book) no longer
  74019.       supports this API
  74020. Index:    installation check;INTRSPY
  74021.  
  74022. (Table 1785)
  74023. Call INTRSPY v1.0 entry point with:
  74024.     AH = function
  74025.         00h ???
  74026.         01h set current directory (for use in reporting)
  74027.         ES:DI -> counted string containing directory name (max 79 char)
  74028.         02h set name of script file
  74029.         ES:DI -> counted string containing file name (max 79 chars)
  74030.         03h set script arguments
  74031.         ES:DI -> counted string containing arguments (max 79 chars)
  74032.         04h get directory set with function 01h
  74033.         ES:DI -> 80-byte buffer for directory name
  74034.         05h get name of script file
  74035.         ES:DI -> 80-byte buffer for script filename
  74036.         06h get script arguments
  74037.         ES:DI -> 80-byte buffer for script arguments
  74038.         07h get ???
  74039.         CL = 00h-15h specifies what to get
  74040.         ES:DI -> WORD to be set with desired value on return
  74041.         08h get ???
  74042.         ES:DI -> WORD to be set with returned value
  74043.         09h get ???
  74044.         ES:DI -> WORD to be set with returned value
  74045.         0Bh store code for interrupt handler???
  74046.         ES:DI -> data
  74047.         CX = number of bytes
  74048.         0Ch ???
  74049.         ES:DI -> ???
  74050.         0Dh get ???
  74051.         ES:DI -> BYTE to be set with returned value
  74052.         0Eh set ??? flag
  74053.         0Fh clear ??? flag
  74054.         10h ???
  74055.         Return: AL = 04h or 05h if failed
  74056.         11h ???
  74057.         Return: AL = 05h if failed
  74058.         12h get ???
  74059.         ES:DI -> buffer
  74060.         Return: CX = number of bytes returned in buffer
  74061.         13h ???
  74062. Return: AH = 00h
  74063.     AL = status
  74064.         00h successful
  74065.         01h invalid function
  74066.         02h ???
  74067.         03h ???
  74068.         04h ???
  74069.         05h ???
  74070. --------u-60---------------------------------
  74071. INT 60 U - PC/370 v4.2 - ???
  74072.     ???
  74073. Return: ???
  74074. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  74075. Range:    INT 00 to INT FF, selected by patching the executable
  74076. Note:    the documentation includes instructions for patching the system for
  74077.       another interrupt
  74078. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  74079. --------r-60---------------------------------
  74080. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  74081. SeeAlso: INT 61"JPI"
  74082. --------N-60---------------------------------
  74083. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  74084. Range:    INT 20 to INT FF
  74085. Notes:    The handler for the interrupt will start with a 3-byte jump
  74086.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  74087.       terminating NUL is significant).
  74088.     To find the interrupt being used by the driver, an application should
  74089.       scan through interrupt vectors 20h to FFh (60h through 80h for
  74090.       v1.09- of the specification) until it finds one with the "PKT DRVR"
  74091.       string.
  74092.     AH values of 80h to FFh have been reserved for user-defined additions.
  74093. --------b-60----DI0100-----------------------
  74094. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  74095.     DI = 0100h
  74096.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74097.         DWORD    pointer to event record (see #1787)
  74098. Return: event record filled
  74099.     STACK unchanged
  74100. Note:    this call will timeout after about 500ms
  74101. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  74102.  
  74103. (Table 1786)
  74104. Values for HP 95LX event type:
  74105.  00h    no events
  74106.  01h    keystroke available
  74107.  02h    Ctrl-Break
  74108.  03h    reactivation (always follows deactivation event)
  74109.  04h    about to deactivate (sleep)
  74110.     next get-event call will not return until reactivated
  74111.  05h    forced application termination
  74112.  06h    1-2-3 bridge service request (only given to 1-2-3)
  74113.  07h    request to grow
  74114.  08h    request to shrink
  74115.  09h    application's alarm expired
  74116.  0Ah    daily chance to set an alarm
  74117.  0Bh    system date or time has been changed
  74118.  
  74119. Format of HP 95LX event record:
  74120. Offset    Size    Description    (Table 1787)
  74121.  00h    WORD    event type (see #1786)
  74122.  02h    WORD    ASCII code page 850 translation of keystroke
  74123.         or grow/shrink amount in paragraphs or 0000h if error
  74124.         or alarm expiration data
  74125.  04h    BYTE    scan code from BIOS
  74126.  05h    BYTE    shift key states at time keystroke is retrieved
  74127.  06h    WORD    LICS translation of keystroke
  74128.  08h    BYTE    function key number (1-2-3 only)
  74129.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  74130.         or pointer to time change structure (see #1788)
  74131. Note:    if the System Manager is awaiting the conclusion of a bridge service
  74132.       or grow/shrink call and the event type field is set to FFFFh on
  74133.       entry, the SysMgr will resume
  74134.  
  74135. Format of HP 95LX time change structure:
  74136. Offset    Size    Description    (Table 1788)
  74137.  00h    WORD    old year
  74138.  02h    BYTE    old month
  74139.  03h    BYTE    old date
  74140.  04h    BYTE    old day
  74141.  05h    BYTE    old hour
  74142.  06h    BYTE    old minute
  74143.  07h    BYTE    old second
  74144.  08h    BYTE    old hundredth of a second
  74145.  09h  9 BYTEs    new time in same format as old time
  74146. --------b-60----DI0101-----------------------
  74147. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  74148.     DI = 0101h
  74149.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74150.         DWORD pointer to event record (INT 60/DI=0100h)
  74151. Return: event record filled
  74152.     STACK unchanged
  74153. Note:    this call returns immediately if no event is available
  74154. SeeAlso: INT 60/DI=0100h
  74155. --------b-60----DI0102-----------------------
  74156. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  74157.     DI = 0102h
  74158.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74159. Return: ???
  74160.     STACK unchanged
  74161. --------b-60----DI0104-----------------------
  74162. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  74163.     DI = 0104h
  74164.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74165.         DWORD pointer to bridge record (see #1790)
  74166. Return: ???
  74167.     STACK unchanged
  74168.  
  74169. (Table 1789)
  74170. Values for HP 95LX function code:
  74171.  00h    test
  74172.  01h    get range
  74173.  02h    "GETRANGE_ADDR"
  74174.  03h    "SETRANGE_ADDR"
  74175.  04h    "GETRANGE_DATA"
  74176.  05h    "SETRANGE_DATA"
  74177.  06h    recalculate
  74178.  07h    get cursor
  74179.  08h    set cursor
  74180.  09h    redisplay
  74181.  0Ah    cell type
  74182.  0Bh    "CALCTYPE"
  74183.  
  74184. Format of HP 95LX bridge record:
  74185. Offset    Size    Description    (Table 1790)
  74186.  00h    WORD    function code (see #1789)
  74187.  02h    WORD    return code from 1-2-3
  74188.  04h 16 BYTEs    ASCII range name
  74189.  14h    WORD    start column of range
  74190.  16h    WORD    start row of range
  74191.  18h    WORD    end column of range
  74192.  1Ah    WORD    end row of range
  74193.  1Ch    WORD    order in which data is placed in buffer
  74194.  1Eh    WORD    buffer size
  74195.  20h    WORD    offset within bridge record's segment of buffer for cell data
  74196. --------b-60----DI0105-----------------------
  74197. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  74198.     DI = 0105h
  74199.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74200. Return: ???
  74201.     STACK unchanged
  74202. --------b-60----DI0106-----------------------
  74203. INT 60 u - HP 95LX System Manager - YIELD CPU
  74204.     DI = 0106h
  74205.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74206.         DWORD pointer to ???
  74207. Return: ???
  74208.     STACK unchanged
  74209. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  74210. --------b-60----DI0107-----------------------
  74211. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  74212.     DI = 0107h
  74213.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74214.         DWORD pointer to ???
  74215. Return: ???
  74216.     STACK unchanged
  74217. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  74218. --------b-60----DI0200-----------------------
  74219. INT 60 u - HP 95LX System Manager - SETUP MENU
  74220.     DI = 0200h
  74221.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74222.         DWORD    pointer to menu data (see #1791)
  74223.         DWORD    pointer to ???
  74224.         WORD    number of items on menu???
  74225.         WORD    ???
  74226.         DWORD    pointer to ???
  74227.         WORD    ???
  74228.         DWORD    pointer to ???
  74229. Return: ???
  74230.     STACK unchanged
  74231. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  74232.  
  74233. Format of HP 95LX menu data:
  74234. Offset    Size    Description    (Table 1791)
  74235.  00h 80 BYTEs    first line of menu text
  74236.  50h 80 BYTEs    second line of menu text
  74237.  A0h 80 BYTEs    third line of menu text
  74238.  F0h    WORD    number of keywords
  74239.  F2h    WORD    index of currently highlighted keyword or FFFFh
  74240.  F4h    WORD    single prompt on top line if nonzero
  74241.  F6h 20 BYTEs    which line each of 20 keywords is located on
  74242. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  74243. 11Eh 20 BYTEs    length of each of 20 keywords
  74244. 132h 20 BYTEs    first letter of each of 20 keywords
  74245. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  74246. --------b-60----DI0201-----------------------
  74247. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  74248.     DI = 0201h
  74249.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74250.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  74251. Return: ???
  74252.     STACK unchanged
  74253. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  74254. --------b-60----DI0202-----------------------
  74255. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  74256.     DI = 0202h
  74257.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74258.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  74259. Return: ???
  74260.     STACK unchanged
  74261. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  74262. --------b-60----DI0203-----------------------
  74263. INT 60 u - HP 95LX System Manager - REMOVE MENU
  74264.     DI = 0203h
  74265.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74266.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  74267. Return: ???
  74268.     STACK unchanged
  74269. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  74270. --------b-60----DI0204-----------------------
  74271. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  74272.     DI = 0204h
  74273.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74274.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  74275.         WORD    keystroke
  74276.         DWORD    pointer to WORD to receive selection number
  74277. Return: buffer for selection number filled with index of selected menu item or
  74278.       FFFFh if no final selection yet
  74279.     STACK unchanged
  74280. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  74281. --------b-60----DI0205-----------------------
  74282. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  74283.     DI = 0205h
  74284.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74285.         DWORD    pointer to file menu structure (see #1792)
  74286.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74287.         DWORD    pointer to wildcard filespec for initial file list
  74288.         WORD    row???
  74289.         WORD    column???
  74290. Return: ???
  74291.     STACK unchanged
  74292. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  74293.  
  74294. Format of HP 95LX file menu structure:
  74295. Offset    Size    Description    (Table 1792)
  74296.  00h    DWORD    pointer to ASCIZ base directory name
  74297.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  74298.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see #1793)
  74299.  0Ch    WORD    size of file list workspace in bytes
  74300.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  74301.  10h    WORD    starting column
  74302.  12h    WORD    number of lines
  74303.  14h    WORD    number of columns
  74304.  16h    WORD    number of files displayed on each line
  74305. ---the remaining fields are initialized by the System Manager---
  74306.  18h    WORD    0000h if first edit character, else multiline
  74307.  1Ah    WORD    number of files in file list
  74308.  1Ch    WORD    max files workspace has room for
  74309.  1Eh    WORD    file at top of list
  74310.  20h    WORD    index of file to highlight
  74311.  22h    WORD    index of file to unhighlight
  74312.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  74313.  
  74314. Format of HP 95LX file list workspace entry:
  74315. Offset    Size    Description    (Table 1793)
  74316.  00h    BYTE    file attributes
  74317.  01h    WORD    file time (see #0802 at INT 21/AX=5700h)
  74318.  03h    WORD    file date (see #0803 at INT 21/AX=5700h)
  74319.  05h    DWORD    file size
  74320.  09h 13 BYTEs    ASCIZ filename
  74321. --------b-60----DI0206-----------------------
  74322. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  74323.     DI = 0206h
  74324.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74325.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  74326.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74327. Return: ???
  74328.     STACK unchanged
  74329. SeeAlso: INT 60/DI=0205h
  74330. --------b-60----DI0207-----------------------
  74331. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  74332.     DI = 0207h
  74333.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74334.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  74335.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74336.         WORD    keystroke
  74337. Return: AX = status (see #1794)
  74338.     STACK unchanged
  74339. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  74340.  
  74341. (Table 1794)
  74342. Values for HP 95LX System Manager status:
  74343.  0000h    keystroke processed, call INT 60/DI=0206h to refresh menu
  74344.  0001h    redisplay application area before refreshing menu
  74345.  0002h    user confirmed selection, filename is in edit record's buffer
  74346.  0003h    user aborted menu
  74347.  FFFBh    bad filename
  74348.  FFFCh    bad directory
  74349.  FFFDh    bad drive
  74350.  FFFEh    unknown keystroke
  74351.  FFFFh    keystroke known but invalid in current context
  74352. --------b-60----DI0208-----------------------
  74353. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  74354.     DI = 0208h
  74355.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74356.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  74357.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74358. Return: ???
  74359.     STACK unchanged
  74360. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  74361. --------b-60----DI0300-----------------------
  74362. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  74363.     DI = 0300h
  74364.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74365.         WORD    starting row (-3 is topmost, 0 is first user line)
  74366.         WORD    starting column
  74367.         DWORD    pointer to string
  74368.         WORD    length of string
  74369.         WORD    display style: 0000h normal, 0001h reverse video
  74370.         WORD    "OSTYLE"
  74371. Return: ???
  74372.     STACK unchanged
  74373. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  74374. --------b-60----DI0301-----------------------
  74375. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  74376.     DI = 0301h
  74377.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74378.         WORD    starting row (-3 is topmost, 0 is first user line)
  74379.         WORD    starting column
  74380.         WORD    number of rows
  74381.         WORD    number of columns
  74382. Return: ???
  74383.     STACK unchanged
  74384. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  74385. --------b-60----DI0302-----------------------
  74386. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  74387.     DI = 0302h
  74388.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74389.         WORD    starting row???
  74390.         WORD    starting column???
  74391.         WORD    height of scroll region???
  74392.         WORD    width of scroll region???
  74393.         WORD    number of lines to scroll region???
  74394. Return: ???
  74395.     STACK unchanged
  74396. SeeAlso: INT 60/DI=0301h
  74397. --------b-60----DI0303-----------------------
  74398. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  74399.     DI = 0303h
  74400.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74401.         WORD    ???
  74402.         WORD    ???
  74403.         WORD    ???
  74404.         WORD    ???
  74405.         DWORD    pointer to ???
  74406. Return: ???
  74407.     STACK unchanged
  74408. --------b-60----DI0304-----------------------
  74409. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  74410.     DI = 0304h
  74411.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74412.         DWORD    pointer to ???
  74413.         WORD    ???
  74414. Return: ???
  74415.     STACK unchanged
  74416. --------b-60----DI0305-----------------------
  74417. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  74418.     DI = 0305h
  74419.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74420.         WORD    ???
  74421.         WORD    ???
  74422.         DWORD    pointer to ???
  74423.         WORD    ???
  74424. Return: ???
  74425.     STACK unchanged
  74426. --------b-60----DI0307-----------------------
  74427. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  74428.     DI = 0307h
  74429.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74430.         WORD    ???
  74431.         WORD    ???
  74432.         WORD    ???
  74433. Return: ???
  74434.     STACK unchanged
  74435. --------b-60----DI0308-----------------------
  74436. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  74437.     DI = 0308h
  74438.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74439. Return: ???
  74440.     STACK unchanged
  74441. --------b-60----DI0309-----------------------
  74442. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  74443.     DI = 0309h
  74444.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74445.         WORD    new mode
  74446. Return: ???
  74447.     STACK unchanged
  74448. --------b-60----DI030A-----------------------
  74449. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  74450.     DI = 030Ah
  74451.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74452. Return: ???
  74453.     STACK unchanged
  74454. --------b-60----DI030B-----------------------
  74455. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  74456.     DI = 030Bh
  74457.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74458.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  74459.         WORD    column
  74460. Return: ???
  74461.     STACK unchanged
  74462. Note:    cursor is hidden if the specified position is not on the physical
  74463.       display
  74464. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  74465. --------b-60----DI0400-----------------------
  74466. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  74467.     DI = 0400h
  74468.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74469.         DWORD    pointer to edit record (see #1795)
  74470.         DWORD    pointer to string to be edited
  74471.         WORD    initial length of string being edited
  74472.         WORD    maximum length of edited string
  74473.         WORD    row of edit field
  74474.         WORD    leftmost column of edit field
  74475. Return: ???
  74476.     STACK unchanged
  74477.  
  74478. Format of HP 95LX edit record:
  74479. Offset    Size    Description    (Table 1795)
  74480.  00h    WORD    current length of edit buffer
  74481.  02h    BYTE    flag for special processing on first character
  74482.  03h    BYTE    flags
  74483.         bit 0: tab handling
  74484.  04h    WORD    editing in prompt window?
  74485.  06h    DWORD    pointer to top line of prompt window message
  74486.  0Ah    WORD    length of top line of prompt
  74487.  0Ch    DWORD    pointer to second line of prompt window message
  74488.  10h    WORD    length of second line of prompt
  74489.  12h 80 BYTEs    workspace for editing
  74490.  62h  2 WORDs    line array needed for multi-line editing
  74491.  66h 36 BYTEs    multi-line edit record (see #1796)
  74492.  8Ah    WORD    displayable columns
  74493.  
  74494. Format of HP 95LX multi-line edit record:
  74495. Offset    Size    Description    (Table 1796)
  74496.  00h    DWORD    pointer to user-supplied edit buffer
  74497.  04h    WORD    length of edit buffer
  74498.  06h    WORD    current cursor position
  74499.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  74500.  0Ah    WORD    starting column of edit area
  74501.  0Ch    WORD    height of edit area
  74502.  0Eh    WORD    width of edit area
  74503.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  74504.  12h    WORD    number of rows displayable
  74505.  14h    BYTE    cursor column
  74506.  15h    BYTE    01h if buffer has been modified
  74507.  16h    BYTE    first displayable column (ticker fields only)
  74508.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  74509.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  74510.           area is high)
  74511.  1Ch    BYTE    currently marking?
  74512.  1Dh    BYTE    flag
  74513.  1Eh    WORD    offset of mark start
  74514.  20h    WORD    offset of mark end (inclusive)
  74515.  22h    WORD    displayable columns
  74516. --------b-60----DI0401-----------------------
  74517. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  74518.     DI = 0401h
  74519.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74520.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74521.         DWORD    pointer to string to edit
  74522.         WORD    initial length of string being edited
  74523.         WORD    maximum length of edited string
  74524.         DWORD    pointer to first line of prompt
  74525.         WORD    length of first line
  74526.         DWORD    pointer to second line of prompt
  74527.         WORD    length of second line
  74528. Return: ???
  74529.     STACK unchanged
  74530. --------b-60----DI0402-----------------------
  74531. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  74532.     DI = 0402h
  74533.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74534.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74535. Return: ???
  74536.     STACK unchanged
  74537. --------b-60----DI0403-----------------------
  74538. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  74539.     DI = 0403h
  74540.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74541.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  74542.         WORD    keystroke
  74543.         DWORD    pointer to WORD buffer for result code
  74544. Return: result code buffer filled with 0001h if editing complete
  74545.     STACK unchanged
  74546. --------b-60----DI0404-----------------------
  74547. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  74548.     DI = 0404h
  74549.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74550.         DWORD    pointer to ???
  74551.         WORD    ???
  74552.         WORD    ???
  74553.         WORD    ???
  74554.         WORD    ???
  74555.         DWORD    pointer to ???
  74556.         WORD    ???
  74557.         WORD    ???
  74558.         WORD    ???
  74559.         DWORD    pointer to ???
  74560. Return: ???
  74561.     STACK unchanged
  74562. --------b-60----DI0405-----------------------
  74563. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  74564.     DI = 0405h
  74565.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74566.         DWORD    pointer to ???
  74567. Return: ???
  74568.     STACK unchanged
  74569. --------b-60----DI0406-----------------------
  74570. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  74571.     DI = 0406h
  74572.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74573.         DWORD    pointer to ???
  74574.         WORD    ???
  74575. Return: ???
  74576.     STACK unchanged
  74577. --------b-60----DI0407-----------------------
  74578. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  74579.     DI = 0407h
  74580.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74581.         DWORD    pointer to ???
  74582.         DWORD    pointer to ???
  74583. Return: ???
  74584.     STACK unchanged
  74585. --------b-60----DI0408-----------------------
  74586. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  74587.     DI = 0408h
  74588.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74589.         DWORD    pointer to ???
  74590. Return: ???
  74591.     STACK unchanged
  74592. --------b-60----DI0409-----------------------
  74593. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  74594.     DI = 0409h
  74595.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74596.         DWORD    pointer to ???
  74597. Return: ???
  74598.     STACK unchanged
  74599. --------b-60----DI040A-----------------------
  74600. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  74601.     DI = 040Ah
  74602.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74603.         DWORD    pointer to ???
  74604. Return: ???
  74605.     STACK unchanged
  74606. --------b-60----DI040B-----------------------
  74607. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  74608.     DI = 040Bh
  74609.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74610.         DWORD    pointer to ???
  74611.         DWORD    pointer to ???
  74612.         WORD    ???
  74613. Return: ???
  74614.     STACK unchanged
  74615. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  74616. --------b-60----DI0500-----------------------
  74617. INT 60 u - HP 95LX System Manager - OPEN FILE
  74618.     DI = 0500h
  74619.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74620.         DWORD    pointer to file state record (see #1797)
  74621.         DWORD    pointer to filename
  74622.         WORD    length of filename
  74623.         WORD    ???
  74624.         WORD    suppress buffering if nonzero
  74625. Return: AX = status
  74626.     STACK unchanged
  74627. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  74628.  
  74629. Format of HP 95LX file state record:
  74630. Offset    Size    Description    (Table 1797)
  74631.  00h    WORD    DOS file handle
  74632.  02h    WORD    flags
  74633.         bit 0: buffer contents valid
  74634.         bit 1: buffer is dirty and must be written
  74635.         bit 2: unbuffered I/O
  74636.         bit 3: file is a character device
  74637.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  74638.  08h    DWORD    DOS file offset of start of buffer
  74639.  0Ch    DWORD    effective file offset as seen by caller
  74640.  10h    WORD    number of bytes in file buffer
  74641. ---buffered I/O only---
  74642.  12h 512 BYTEs    file buffer
  74643. --------b-60----DI0501-----------------------
  74644. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  74645.     DI = 0501h
  74646.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74647.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74648.         DWORD    pointer to filename
  74649.         WORD    length of filename
  74650.         WORD    ???
  74651.         WORD    suppress buffering if nonzero
  74652. Return: AX = status
  74653.     STACK unchanged
  74654. SeeAlso: INT 60/DI=0500h
  74655. --------b-60----DI0502-----------------------
  74656. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  74657.     DI = 0502h
  74658.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74659.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74660.         DWORD    pointer to filename
  74661.         WORD    length of filename
  74662.         WORD    ???
  74663.         WORD    suppress buffering if nonzero
  74664. Return: AX = status
  74665.     STACK unchanged
  74666. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  74667. --------b-60----DI0503-----------------------
  74668. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  74669.     DI = 0503h
  74670.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74671.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74672.         DWORD    pointer to filename
  74673.         WORD    length of filename
  74674.         WORD    ???
  74675.         WORD    suppress buffering if nonzero
  74676. Return: AX = status
  74677.     STACK unchanged
  74678. SeeAlso: INT 60/DI=0502h
  74679. --------b-60----DI0504-----------------------
  74680. INT 60 u - HP 95LX System Manager - READ FROM FILE
  74681.     DI = 0504h
  74682.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74683.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74684.         DWORD    pointer to data buffer
  74685.         WORD    number of bytes to read
  74686.         DWORD    pointer to WORD in which to return actual bytes read
  74687. Return: ???
  74688.     STACK unchanged
  74689. SeeAlso: INT 60/DI=0505h
  74690. --------b-60----DI0505-----------------------
  74691. INT 60 - HP 95LX System Manager - WRITE TO FILE
  74692.     DI = 0505h
  74693.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74694.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74695.         DWORD    pointer to data
  74696.         WORD    length of data
  74697. Return: AX = status
  74698.     STACK unchanged
  74699. SeeAlso: INT 60/DI=0504h
  74700. --------b-60----DI0506-----------------------
  74701. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  74702.     DI = 0506h
  74703.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74704.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74705.         WORD    ???
  74706.         WORD    ???
  74707. Return: ???
  74708.     STACK unchanged
  74709. SeeAlso: INT 60/DI=0507h
  74710. --------b-60----DI0507-----------------------
  74711. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  74712.     DI = 0507h "M_TELL"
  74713.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74714.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74715.         DWORD    pointer to DWORD buffer for file position???
  74716. Return: ???
  74717.     STACK unchanged
  74718. SeeAlso: INT 60/DI=0506h
  74719. --------b-60----DI0508-----------------------
  74720. INT 60 u - HP 95LX System Manager - CLOSE FILE
  74721.     DI = 0508h
  74722.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74723.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  74724. Return: ???
  74725.     STACK unchanged
  74726. SeeAlso: INT 60/DI=0500h
  74727. --------b-60----DI0509-----------------------
  74728. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  74729.     DI = 0509h
  74730.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74731.         DWORD    pointer to ???
  74732.         DWORD    pointer to ???
  74733.         WORD    ???
  74734.         WORD    ???
  74735. Return: ???
  74736.     STACK unchanged
  74737. --------b-60----DI050A-----------------------
  74738. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  74739.     DI = 050Ah
  74740.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74741.         DWORD    pointer to ???
  74742.         DWORD    pointer to ???
  74743. Return: ???
  74744.     STACK unchanged
  74745.  
  74746. Format of HP 95LX pattern match control block:
  74747. Offset    Size    Description    (Table 1798)
  74748.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  74749.  2Bh 80 BYTEs    full path name
  74750.  7Bh    BYTE    offset of last component of filename
  74751.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  74752. --------b-60----DI050B-----------------------
  74753. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  74754.     DI = 050Bh
  74755.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74756.         DWORD    pointer to ???
  74757.         WORD    ???
  74758.         WORD    ???
  74759.         DWORD    pointer to ???
  74760. Return: ???
  74761.     STACK unchanged
  74762.  
  74763. (Table 1799)
  74764. Values returned by HP 95LX System Manager:
  74765.  0000h    nonexistent
  74766.  0001h    file
  74767.  0002h    directory
  74768.  0003h    character device
  74769. --------b-60----DI050C-----------------------
  74770. INT 60 u - HP 95LX System Manager - DELETE FILE
  74771.     DI = 050Ch "M_DELETE"
  74772.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74773.         DWORD    pointer to ???
  74774.         WORD    ???
  74775.         WORD    ???
  74776. Return: ???
  74777.     STACK unchanged
  74778. --------b-60----DI050D-----------------------
  74779. INT 60 u - HP 95LX System Manager - RENAME FILE
  74780.     DI = 050Dh
  74781.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74782.         DWORD    pointer to ???
  74783.         WORD    ???
  74784.         WORD    ???
  74785.         DWORD    pointer to ???
  74786.         WORD    ???
  74787.         WORD    ???
  74788. Return: ???
  74789.     STACK unchanged
  74790. --------b-60----DI050E-----------------------
  74791. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  74792.     DI = 050Eh
  74793.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74794.         WORD    ???
  74795.         DWORD    pointer to ???
  74796.         DWORD    pointer to ???
  74797. Return: ???
  74798.     STACK unchanged
  74799. --------b-60----DI050F-----------------------
  74800. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  74801.     DI = 050Fh
  74802.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74803.         DWORD    pointer to ???
  74804.         WORD    ???
  74805. Return: ???
  74806.     STACK unchanged
  74807. --------b-60----DI0510-----------------------
  74808. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  74809.     DI = 0510h
  74810.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74811.         DWORD    pointer to ???
  74812.         DWORD    pointer to ???
  74813. Return: ???
  74814.     STACK unchanged
  74815. --------b-60----DI0511-----------------------
  74816. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  74817.     DI = 0511h
  74818.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74819.         DWORD    pointer to ???
  74820.         WORD    ???
  74821.         WORD    ???
  74822. Return: ???
  74823.     STACK unchanged
  74824. SeeAlso: INT 21/AH=39h,INT 60/DI=0512h
  74825. --------b-60----DI0512-----------------------
  74826. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  74827.     DI = 0512h
  74828.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74829.         DWORD    pointer to ???
  74830.         WORD    ???
  74831.         WORD    ???
  74832. Return: ???
  74833.     STACK unchanged
  74834. SeeAlso: INT 21/AH=3Ah,INT 60/DI=0511h
  74835. --------b-60----DI0513-----------------------
  74836. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  74837.     DI = 0513h
  74838.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74839.         DWORD    pointer to ??? buffer for current drive
  74840. Return: ???
  74841.     STACK unchanged
  74842. SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
  74843. --------b-60----DI0514-----------------------
  74844. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  74845.     DI = 0514h
  74846.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74847.         WORD    new drive
  74848. Return: ???
  74849.     STACK unchanged
  74850. SeeAlso: INT 21/AH=0Eh,INT 60/DI=0513h
  74851. --------b-60----DI0515-----------------------
  74852. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  74853.     DI = 0515h
  74854.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74855.         DWORD    pointer to ???
  74856.         DWORD    pointer to ???
  74857. Return: ???
  74858.     STACK unchanged
  74859. --------b-60----DI0516-----------------------
  74860. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  74861.     DI = 0516h
  74862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74863.         DWORD    pointer to ???
  74864. Return: ???
  74865.     STACK unchanged
  74866. --------b-60----DI0517-----------------------
  74867. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  74868.     DI = 0517h
  74869.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74870.         DWORD    pointer to ???
  74871.         WORD    ???
  74872.         WORD    ???
  74873.         DWORD    pointer to ??? buffer for file's attributes???
  74874. Return: ???
  74875.     STACK unchanged
  74876. SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
  74877. --------b-60----DI0518-----------------------
  74878. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  74879.     DI = 0518h
  74880.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74881.         DWORD    pointer to ???
  74882.         WORD    ???
  74883.         WORD    ???
  74884.         WORD    new attributes???
  74885. Return: ???
  74886.     STACK unchanged
  74887. SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
  74888. --------b-60----DI0519-----------------------
  74889. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  74890.     DI = 0519h
  74891.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74892.         DWORD    pointer to ???
  74893.         DWORD    pointer to ???
  74894.         WORD    ???
  74895.         WORD    ???
  74896.         WORD    ???
  74897.         WORD    ???
  74898.         WORD    ???
  74899. Return: ???
  74900.     STACK unchanged
  74901. --------b-60----DI051A-----------------------
  74902. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  74903.     DI = 051Ah
  74904.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74905.         DWORD    pointer to ???
  74906.         DWORD    pointer to ???
  74907. Return: ???
  74908.     STACK unchanged
  74909. --------b-60----DI051B-----------------------
  74910. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  74911.     DI = 051Bh
  74912.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74913.         DWORD    pointer to ???
  74914.         DWORD    pointer to ???
  74915. Return: ???
  74916.     STACK unchanged
  74917. --------b-60----DI051C-----------------------
  74918. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  74919.     DI = 051Ch
  74920.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74921.         DWORD    pointer to ???
  74922.         WORD    ???
  74923. Return: ???
  74924.     STACK unchanged
  74925. --------b-60----DI0600-----------------------
  74926. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  74927.     DI = 0600h
  74928.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74929. Return: ???
  74930.     STACK unchanged
  74931. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  74932. --------b-60----DI0601-----------------------
  74933. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  74934.     DI = 0601h
  74935.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74936. Return: never
  74937.     STACK unchanged
  74938. SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
  74939. --------b-60----DI0602-----------------------
  74940. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  74941.     DI = 0602h
  74942.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74943. Return: ???
  74944.     STACK unchanged
  74945. SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
  74946. --------b-60----DI0603-----------------------
  74947. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  74948.     DI = 0603h
  74949.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74950. Return: ???
  74951.     STACK unchanged
  74952. SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
  74953. --------b-60----DI0604-----------------------
  74954. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  74955.     DI = 0604h
  74956.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74957.         DWORD    pointer to ???
  74958.         WORD    ???
  74959.         WORD    ???
  74960.         DWORD    pointer to ???
  74961. Return: ???
  74962.     STACK unchanged
  74963. SeeAlso: INT 21/AH=4Bh
  74964. --------b-60----DI0605-----------------------
  74965. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  74966.     DI = 0605h
  74967.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74968. Return: ???
  74969.     STACK unchanged
  74970. --------b-60----DI0606-----------------------
  74971. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  74972.     DI = 0606h
  74973.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74974. Return: ???
  74975.     STACK unchanged
  74976. SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
  74977. --------b-60----DI0607-----------------------
  74978. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  74979.     DI = 0607h
  74980.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74981.         DWORD    pointer to ???
  74982.         WORD    ???
  74983.         DWORD    pointer to ???
  74984.         WORD    ???
  74985. Return: ???
  74986.     STACK unchanged
  74987. --------b-60----DI0608-----------------------
  74988. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  74989.     DI = 0608h
  74990.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74991.         DWORD    pointer to ???
  74992. Return: ???
  74993.     STACK unchanged
  74994. --------b-60----DI0609-----------------------
  74995. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  74996.     DI = 0609h
  74997.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  74998.         DWORD    pointer to ???
  74999. Return: DX:AX -> ???
  75000.     STACK unchanged
  75001. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75002. --------b-60----DI0700-----------------------
  75003. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  75004.     DI = 0700h
  75005.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75006. Return: ???
  75007.     STACK unchanged
  75008. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  75009.  
  75010. (Table 1800)
  75011. Values for HP 95LX error code:
  75012.  0000h    successful
  75013.  FFF8h    transfer request out of bounds
  75014.  FFF9h    no such representation
  75015.  FFFAh    no representation open
  75016.  FFFBh    a representation is already open
  75017.  FFFCh    representation already exists
  75018.  FFFDh    heap allocation failure
  75019.  FFFEh    clipboard not open
  75020.  FFFFh    clipboard access denied
  75021. --------b-60----DI0701-----------------------
  75022. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  75023.     DI = 0701h
  75024.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75025. Return: ???
  75026.     STACK unchanged
  75027. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  75028. --------b-60----DI0702-----------------------
  75029. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  75030.     DI = 0702h
  75031.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75032.         DWORD    pointer to ???
  75033. Return: ???
  75034.     STACK unchanged
  75035. SeeAlso: INT 60/DI=0700h
  75036. --------b-60----DI0704-----------------------
  75037. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  75038.     DI = 0704h
  75039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75040.         DWORD    pointer to ???
  75041. Return: ???
  75042.     STACK unchanged
  75043. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  75044. --------b-60----DI0705-----------------------
  75045. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  75046.     DI = 0705h
  75047.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75048. Return: ???
  75049.     STACK unchanged
  75050. SeeAlso: INT 60/DI=0704h
  75051. --------b-60----DI0706-----------------------
  75052. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  75053.     DI = 0706h
  75054.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75055.         WORD    ???
  75056.         DWORD    pointer to ???
  75057.         DWORD    pointer to ???
  75058. Return: ???
  75059.     STACK unchanged
  75060. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  75061. --------b-60----DI0707-----------------------
  75062. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  75063.     DI = 0707h
  75064.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75065.         DWORD    pointer to ???
  75066.         DWORD    pointer to ???
  75067.         DWORD    pointer to ???
  75068. Return: ???
  75069.     STACK unchanged
  75070. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  75071. --------b-60----DI0708-----------------------
  75072. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  75073.     DI = 0708h
  75074.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75075.         DWORD    pointer to data to be written???
  75076.         WORD    length of data???
  75077. Return: ???
  75078.     STACK unchanged
  75079. SeeAlso: INT 60/DI=0709h
  75080. --------b-60----DI0709-----------------------
  75081. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  75082.     DI = 0709h
  75083.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75084.         WORD    ???
  75085.         WORD    ???
  75086.         DWORD    pointer to buffer for data???
  75087.         WORD    length of buffer???
  75088. Return: ???
  75089.     STACK unchanged
  75090. SeeAlso: INT 60/DI=0708h
  75091. --------b-60----DI0800-----------------------
  75092. INT 60 u - HP 95LX System Manager - BEEP
  75093.     DI = 0800h
  75094.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75095. Return: ???
  75096.     STACK unchanged
  75097. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  75098. --------b-60----DI0801-----------------------
  75099. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  75100.     DI = 0801h
  75101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75102. Return: ???
  75103.     STACK unchanged
  75104. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  75105. --------b-60----DI0802-----------------------
  75106. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  75107.     DI = 0802h
  75108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75109.         WORD    pattern number (00h-06h)
  75110. Return: ???
  75111.     STACK unchanged
  75112. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  75113. --------b-60----DI0803-----------------------
  75114. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  75115.     DI = 0803h
  75116.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75117. Return: ???
  75118.     STACK unchanged
  75119. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  75120. --------b-60----DI0900-----------------------
  75121. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  75122.     DI = 0900h
  75123.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75124.         WORD    size of block in bytes
  75125. Return: AX -> memory block
  75126.     STACK unchanged
  75127. Note:    System Manager-compliant applications are always small-model (64K code,
  75128.       64K data)
  75129. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  75130. --------b-60----DI0902-----------------------
  75131. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  75132.     DI = 0902h
  75133.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75134.         WORD    offset of memory block???
  75135. Return: ???
  75136.     STACK unchanged
  75137. Note:    System Manager-compliant applications are always small-model (64K code,
  75138.       64K data)
  75139. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  75140. --------b-60----DI0903-----------------------
  75141. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  75142.     DI = 0903h
  75143.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75144.         WORD    size of block in bytes???
  75145. Return: AX -> memory block???
  75146.     STACK unchanged
  75147. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  75148. --------b-60----DI0904-----------------------
  75149. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  75150.     DI = 0904h
  75151.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75152.         WORD    segment of memory block???
  75153. Return: AX -> ???
  75154.     STACK unchanged
  75155. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  75156. --------b-60----DI0B00-----------------------
  75157. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  75158.     DI = 0B00h
  75159.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75160.         DWORD    pointer to ???
  75161. Return: ???
  75162.     STACK unchanged
  75163. --------b-60----DI0B01-----------------------
  75164. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  75165.     DI = 0B01h
  75166.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75167.         DWORD    pointer to ???
  75168. Return: ???
  75169.     STACK unchanged
  75170. --------b-60----DI0B02-----------------------
  75171. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  75172.     DI = 0B02h
  75173.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75174.         DWORD    pointer to ???
  75175. Return: ???
  75176.     STACK unchanged
  75177. --------b-60----DI0B03-----------------------
  75178. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  75179.     DI = 0B03h
  75180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75181.         WORD    ???
  75182. Return: ???
  75183.     STACK unchanged
  75184. --------b-60----DI0B04-----------------------
  75185. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  75186.     DI = 0B04h
  75187.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75188.         DWORD    pointer to alarm record???
  75189.         WORD    ???
  75190. Return: ???
  75191.     STACK unchanged
  75192.  
  75193. Format of HP 95LX alarm record:
  75194. Offset    Size    Description    (Table 1801)
  75195.  00h    BYTE    hour
  75196.  01h    BYTE    minute
  75197.  02h    BYTE    second
  75198.  03h    BYTE    unused padding
  75199.  04h    WORD    rescheduling interval, in seconds
  75200.  06h    BYTE    are seconds significant?
  75201.  07h    BYTE    alarm sound
  75202.  08h 40 BYTEs    message displayed when alarm activates
  75203.  30h    BYTE    task ID of owner
  75204.  31h    BYTE    application's own use for sub-class
  75205.  32h  4 BYTEs    application's own use for private data
  75206. --------b-60----DI0B05-----------------------
  75207. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  75208.     DI = 0B05h
  75209.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75210.         DWORD    pointer to ???
  75211. Return: ???
  75212.     STACK unchanged
  75213. --------b-60----DI0B06-----------------------
  75214. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  75215.     DI = 0B06h
  75216.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75217.         DWORD    pointer to ???
  75218.         DWORD    pointer to ???
  75219.         DWORD    pointer to ???
  75220. Return: ???
  75221.     STACK unchanged
  75222. --------b-60----DI0B07-----------------------
  75223. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  75224.     DI = 0B07h
  75225.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75226.         DWORD    pointer to ???
  75227. Return: ???
  75228.     STACK unchanged
  75229. --------b-60----DI0B08-----------------------
  75230. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  75231.     DI = 0B08h
  75232.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75233.         WORD    timestamp format (see #1802)
  75234.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  75235.         WORD    column
  75236. Return: ???
  75237.     STACK unchanged
  75238.  
  75239. Bitfields for HP 95LX timestamp format:
  75240. Bit(s)    Description    (Table 1802)
  75241.  1-0    timestamp components
  75242.     00 date only
  75243.     01 time only
  75244.     10 date and time
  75245.     11 day and date
  75246.  4    supply am/pm
  75247.  5    supply seconds
  75248.  6    show year
  75249.  7    four-digit year
  75250. --------b-60----DI0B09-----------------------
  75251. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  75252.     DI = 0B09h
  75253.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75254.         DWORD    pointer to ???
  75255.         DWORD    pointer to ???
  75256. Return: ???
  75257.     STACK unchanged
  75258. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  75259.  
  75260. Format of HP 95LX system settings:
  75261. Offset    Size    Description    (Table 1803)
  75262.  00h    WORD    country code
  75263.  02h    WORD    speaker volume (00h-03h or FFh for off)
  75264.  04h    WORD    contrast level (00h-0Fh)
  75265.  06h    WORD    week start (00h Sunday, 01h Monday)
  75266.  08h    WORD    punctuation format (see #1804)
  75267.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  75268.  0Ch    WORD    current date format (see #1805)
  75269.  0Eh    WORD    current time format (see #1806)
  75270.  10h    WORD    collating sequence
  75271.         00h numbers first, 01h letters first, 02h ASCII
  75272.  12h 80 BYTEs    name of picture file
  75273.  62h 30 BYTEs    name
  75274.  80h 30 BYTEs    title
  75275.  9Eh 28 BYTEs    company name
  75276.  BAh    WORD    number of languages
  75277.  BCh  6 BYTEs    available languages
  75278.  C2h 66 BYTEs    language menu
  75279. 104h  2 BYTEs    ASCIZ date separator
  75280. 106h  2 BYTEs    ASCIZ time separator
  75281. 108h    BYTE    date order
  75282. 109h    BYTE    use 24 hour time?
  75283. 10Ah 16 BYTEs    currency string
  75284. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  75285. 11Ch    WORD    keyboard (see #1807)
  75286. 11Eh    WORD    printer baud rate
  75287.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  75288. 120h    WORD    printer driver code
  75289.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  75290. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  75291. 124h    WORD    system manager interrupt (60h by default)
  75292. 126h    WORD    code page (01h CP850, 02h CP437)
  75293. 128h    WORD    active exit key
  75294. 12Ah    WORD    active menu key
  75295. 12Ch    WORD    active CHAR key toggle
  75296. 12Eh  6 BYTEs    alarm
  75297.  
  75298. (Table 1804)
  75299. Values for HP 95LX punctuation format:
  75300.  code    decimal arg    thousands
  75301.  00h    .    ,    ,
  75302.  01h    ,    .    .
  75303.  02h    .    ;    ;
  75304.  03h    ,    ;    .
  75305.  04h    .    ,    " "
  75306.  05h    ,    .    " "
  75307.  06h    .    ;    " "
  75308.  07h    ,    ;    " "
  75309.  
  75310. (Table 1805)
  75311. Values for HP 95LX current date format:
  75312.  00h    dd-mmm-yy
  75313.  01h    dd-mmm
  75314.  02h    mmm-yy
  75315.  03h    mm/dd/yy
  75316.  04h    dd/mm/yy
  75317.  05h    dd.mm.yy
  75318.  06h    yy-mm-dd
  75319.  07h    mm/dd
  75320.  08h    dd/mm
  75321.  09h    dd.mm
  75322.  0Ah    mm-dd
  75323.  
  75324. (Table 1806)
  75325. Values for HP 95LX current time format:
  75326.  00h    HH:MM:SS am/pm
  75327.  01h    HH:MM am/pm
  75328.  02h    HH:MM:SS
  75329.  03h    HH.MM.SS
  75330.  04h    HH,MM,SS
  75331.  05h    HHhMMmSSs
  75332.  06h    HH:MM
  75333.  07h    HH.MM
  75334.  08h    HH,MM
  75335.  09h    HHhMMm
  75336.  
  75337. (Table 1807)
  75338. Values for HP 95LX keyboard layout:
  75339.  0001h    Belgium
  75340.  0002h    French Canadian
  75341.  0004h    Denmark
  75342.  0008h    Finland
  75343.  0010h    French
  75344.  0020h    Finland
  75345.  0040h    Italy
  75346.  0080h    Netherlands
  75347.  0100h    Norway
  75348.  0200h    Portugal
  75349.  0400h    Spain
  75350.  0800h    Sweden
  75351.  1000h    Swiss French
  75352.  2000h    Swiss German
  75353.  4000h    United Kingdom
  75354.  8000h    USA
  75355. --------b-60----DI0B0A-----------------------
  75356. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  75357.     DI = 0B0Ah
  75358.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75359.         DWORD    pointer to ???
  75360.         DWORD    pointer to ???
  75361. Return: ???
  75362.     STACK unchanged
  75363. SeeAlso: INT 60/DI=0B09h
  75364. --------b-60----DI0B0B-----------------------
  75365. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  75366.     DI = 0B0Bh
  75367.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75368.         DWORD    pointer to ???
  75369. Return: ???
  75370.     STACK unchanged
  75371. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  75372. --------b-60----DI0B0C-----------------------
  75373. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  75374.     DI = 0B0Ch
  75375.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75376.         DWORD    pointer to ???
  75377. Return: ???
  75378.     STACK unchanged
  75379. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  75380. --------b-60----DI0B0D-----------------------
  75381. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  75382.     DI = 0B0Dh
  75383.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75384.         DWORD    pointer to ???
  75385.         DWORD    pointer to ???
  75386.         DWORD    pointer to ???
  75387. Return: ???
  75388.     STACK unchanged
  75389. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  75390. --------b-60----DI0B0E-----------------------
  75391. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  75392.     DI = 0B0Eh
  75393.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75394.         WORD    ???
  75395.         WORD    ???
  75396.         WORD    ???
  75397.         DWORD    pointer to ???
  75398.         DWORD    pointer to ???
  75399. Return: DX:AX -> ???
  75400.     STACK unchanged
  75401. --------b-60----DI0B0F-----------------------
  75402. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  75403.     DI = 0B0Fh
  75404.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75405. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  75406.     STACK unchanged
  75407. SeeAlso: INT 60/DI=0B09h
  75408. --------b-60----DI0B10-----------------------
  75409. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  75410.     DI = 0B10h
  75411.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75412.         WORD    ???
  75413.         DWORD    pointer to ???
  75414.         DWORD    pointer to ???
  75415. Return: ???
  75416.     STACK unchanged
  75417. --------b-60----DI0B11-----------------------
  75418. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  75419.     DI = 0B11h
  75420.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75421.         WORD    ???
  75422.         DWORD    pointer to ???
  75423.         DWORD    pointer to ???
  75424. Return: ???
  75425.     STACK unchanged
  75426. --------b-60----DI0B12-----------------------
  75427. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  75428.     DI = 0B12h
  75429.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75430.         WORD    new parsing rule (see #1808)
  75431. Return: ???
  75432.     STACK unchanged
  75433. SeeAlso: INT 60/DI=0B13h
  75434.  
  75435. (Table 1808)
  75436. Values for HP 95LX date parsing rule:
  75437.  01h    day-month-year
  75438.  02h    month-day-year
  75439.  03h    year-month-day
  75440.  04h    "DMYO"
  75441.  05h    "MDYO"
  75442.  OR with 08h to get any year
  75443. --------b-60----DI0B13-----------------------
  75444. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  75445.     DI = 0B13h
  75446.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75447.         WORD    new parsing rule (see #1809)
  75448. Return: ???
  75449.     STACK unchanged
  75450. SeeAlso: INT 60/DI=0B12h
  75451.  
  75452. (Table 1809)
  75453. Values for HP 95LX time parsing rule:
  75454.  01h    HH:MM:SS (am/pm)
  75455.  02h    HH:MM:SS (24hr)
  75456.  03h    HHMM:SS (24hr)
  75457.  04h    HH:MM:SS.hh (24hr)
  75458.  05h    HH:MM (am/pm)
  75459.  06h    HH:MM (24hr)
  75460.  07h    HHMM (24hr)
  75461. --------b-60----DI0B14-----------------------
  75462. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  75463.     DI = 0B14h
  75464.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75465. Return: ???
  75466.     STACK unchanged
  75467. --------b-60----DI0B15-----------------------
  75468. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  75469.     DI = 0B15h
  75470.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75471.         WORD    ???
  75472. Return: ???
  75473.     STACK unchanged
  75474. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75475. --------b-60----DI0C00-----------------------
  75476. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  75477.     DI = 0C00h
  75478.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75479. Return: ???
  75480.     STACK unchanged
  75481. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  75482. --------b-60----DI0C01-----------------------
  75483. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  75484.     DI = 0C01h
  75485.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75486. Return: ???
  75487.     STACK unchanged
  75488. Note:    relinquishes control of printer
  75489. SeeAlso: INT 60/DI=0C00h
  75490. --------b-60----DI0C02-----------------------
  75491. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  75492.     DI = 0C02h
  75493.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75494.         DWORD    pointer to data to be written
  75495.         WORD    length of data
  75496. Return: ???
  75497.     STACK unchanged
  75498. SeeAlso: INT 60/DI=0C00h
  75499. --------b-60----DI0C03-----------------------
  75500. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  75501.     DI = 0C03h
  75502.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75503. Return: ???
  75504.     STACK unchanged
  75505. SeeAlso: INT 60/DI=0C00h
  75506. --------b-60----DI0C04-----------------------
  75507. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  75508.     DI = 0C04h
  75509.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75510.         WORD    ???
  75511.         DWORD    pointer to ???
  75512. Return: ???
  75513.     STACK unchanged
  75514. --------b-60----DI0C05-----------------------
  75515. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  75516.     DI = 0C05h
  75517.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75518.         WORD    ???
  75519.         DWORD    pointer to ???
  75520. Return: ???
  75521.     STACK unchanged
  75522. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75523. --------b-60----DI0E00-----------------------
  75524. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  75525.     DI = 0E00h
  75526.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75527.         DWORD    pointer to ???
  75528. Return: ???
  75529.     STACK unchanged
  75530. SeeAlso: #1810,INT 60/DI=0E01h,INT 60/DI=0E02h
  75531.  
  75532. (Table 1810)
  75533. Values for HP 95LX error code:
  75534.  0000h    successful
  75535.  FFF1h    "E_BUSY"
  75536.  FFF2h    timeout
  75537.  FFF3h    framing error
  75538.  FFF4h    parity error
  75539.  FFF5h    overrun error
  75540.  FFF6h    "E_EMPTY"
  75541.  FFF7h    "E_CONECT"
  75542.  FFF8h    not open
  75543.  FFF9h    out of memory
  75544.  FFFAh    buffer overflow
  75545.  FFFBh    "E_NOFIT"
  75546.  FFFCh    unsupported
  75547.  FFFDh    "E_IVOPR"
  75548.  FFFEh    "E_IVCHN"
  75549.  FFFFh    "E_REOPEN"
  75550. --------b-60----DI0E01-----------------------
  75551. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  75552.     DI = 0E01h
  75553.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75554.         DWORD    pointer to WORD buffer for comm channel handle
  75555.         WORD    communications line number (01h-04h)
  75556. Return: ???
  75557.     STACK unchanged
  75558. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  75559. --------b-60----DI0E02-----------------------
  75560. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  75561.     DI = 0E02h
  75562.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75563.         WORD    comm channel handle
  75564. Return: ???
  75565.     STACK unchanged
  75566. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  75567. --------b-60----DI0E03-----------------------
  75568. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  75569.     DI = 0E03h
  75570.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75571.         WORD    ???
  75572. Return: ???
  75573.     STACK unchanged
  75574. --------b-60----DI0E04-----------------------
  75575. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  75576.     DI = 0E04h
  75577.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75578.         WORD    ???
  75579.         WORD    ???
  75580. Return: ???
  75581.     STACK unchanged
  75582. --------b-60----DI0E05-----------------------
  75583. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  75584.     DI = 0E05h
  75585.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75586.         WORD    ???
  75587.         DWORD    pointer to ???
  75588. Return: ???
  75589.     STACK unchanged
  75590. --------b-60----DI0E06-----------------------
  75591. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  75592.     DI = 0E06h
  75593.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75594.         WORD    comm channel handle
  75595.         WORD    reset options (see #1811)
  75596. Return: ???
  75597.     STACK unchanged
  75598.  
  75599. Bitfields for HP 95LX reset options:
  75600. Bit(s)    Description    (Table 1811)
  75601.  0    reset line
  75602.  1    flush transmit buffer
  75603.  2    flush receive buffer
  75604.  3    reset modem
  75605.  4    reset receiver's ^S state
  75606.  5    reset transmitter's ^S state
  75607. --------b-60----DI0E07-----------------------
  75608. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  75609.     DI = 0E07h
  75610.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75611.         WORD    ???
  75612. Return: ???
  75613.     STACK unchanged
  75614. --------b-60----DI0E08-----------------------
  75615. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  75616.     DI = 0E08h
  75617.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75618.         WORD    comm channel handle
  75619.         DWORD    pointer to data to be sent
  75620.         WORD    option flags
  75621.             bit 0: send partial buffer
  75622.             bit 1: turn on receiver after sending
  75623.         DWORD    pointer to WORD containing length of data to be sent
  75624. Return: length WORD updated to contain number of bytes actually sent???
  75625.     STACK unchanged
  75626. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  75627. --------b-60----DI0E09-----------------------
  75628. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  75629.     DI = 0E09h
  75630.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75631.         WORD    ???
  75632.         DWORD    pointer to ??? WORD
  75633.         DWORD    pointer to ??? WORD
  75634. Return: ???
  75635.     STACK unchanged
  75636. SeeAlso: INT 60/DI=0E0Ah
  75637. --------b-60----DI0E0A-----------------------
  75638. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  75639.     DI = 0E0Ah
  75640.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75641.         WORD    comm channel handle
  75642.         DWORD    pointer to WORD to get receive buffer size
  75643.         DWORD    pointer to WORD to get free bytes in receive buffer
  75644. Return: ???
  75645.     STACK unchanged
  75646. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  75647. --------b-60----DI0E0B-----------------------
  75648. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  75649.     DI = 0E0Bh
  75650.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75651.         WORD    comm channel handle
  75652.         DWORD    pointer to data buffer
  75653.         DWORD    pointer to WORD (call) length of data buffer
  75654.                     (return) number of bytes received
  75655. Return: ???
  75656.     STACK unchanged
  75657. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  75658. --------b-60----DI0E0C-----------------------
  75659. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  75660.     DI = 0E0Ch
  75661.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75662.         WORD    ???
  75663.         DWORD    pointer to ???
  75664.         WORD    ???
  75665. Return: ???
  75666.     STACK unchanged
  75667. --------b-60----DI0E0D-----------------------
  75668. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  75669.     DI = 0E0Dh
  75670.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75671.         WORD    ???
  75672.         DWORD    pointer to ???
  75673.         WORD    ???
  75674. Return: ???
  75675.     STACK unchanged
  75676. --------b-60----DI0E0E-----------------------
  75677. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  75678.     DI = 0E0Eh
  75679.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75680.         WORD    ???
  75681.         WORD    ???
  75682. Return: ???
  75683.     STACK unchanged
  75684. --------b-60----DI0E0F-----------------------
  75685. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  75686.     DI = 0E0Fh
  75687.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75688.         WORD    ???
  75689. Return: ???
  75690.     STACK unchanged
  75691. --------b-60----DI0E10-----------------------
  75692. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  75693.     DI = 0E10h
  75694.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75695.         WORD    ???
  75696. Return: ???
  75697.     STACK unchanged
  75698. --------b-60----DI0E11-----------------------
  75699. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  75700.     DI = 0E11h
  75701.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75702.         WORD    ???
  75703.         WORD    ???
  75704. Return: ???
  75705.     STACK unchanged
  75706. --------b-60----DI0E12-----------------------
  75707. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  75708.     DI = 0E12h
  75709.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75710.         WORD    ???
  75711. Return: ???
  75712.     STACK unchanged
  75713. --------b-60----DI0E13-----------------------
  75714. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  75715.     DI = 0E13h
  75716.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75717.         WORD    ???
  75718. Return: ???
  75719.     STACK unchanged
  75720. --------b-60----DI0E14-----------------------
  75721. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  75722.     DI = 0E14h
  75723.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75724.         WORD    comm channel handle
  75725.         DWORD    pointer to comm settings (see #1812)
  75726. Return: ???
  75727.     STACK unchanged
  75728. SeeAlso: INT 60/DI=0E15h
  75729.  
  75730. Format of HP 95LX comm settings:
  75731. Offset    Size    Description    (Table 1812)
  75732.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  75733.  01h    WORD    baud rate divisor (115200/baud_rate)
  75734.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  75735.  04h    BYTE    stop bits (00h one, 04h two)
  75736.  05h    BYTE    data bits - 5
  75737.  06h    BYTE    software handshake
  75738.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  75739.  07h    BYTE    infrared (01h off, 02h on)
  75740.  08h    BYTE    duplex (01h half, 02h full)
  75741.  09h    BYTE    echo (01h echo, 02h no echo)
  75742. --------b-60----DI0E15-----------------------
  75743. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  75744.     DI = 0E15h
  75745.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75746.         WORD    ???
  75747.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  75748. Return: ???
  75749.     STACK unchanged
  75750. SeeAlso: INT 60/DI=0E14h
  75751. --------b-60----DI0E16-----------------------
  75752. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  75753.     DI = 0E16h
  75754.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75755.         WORD    ???
  75756.         WORD    ???
  75757.         WORD    ???
  75758.         WORD    ???
  75759.         WORD    ???
  75760. Return: ???
  75761.     STACK unchanged
  75762. --------b-60----DI0E17-----------------------
  75763. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  75764.     DI = 0E17h
  75765.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75766.         WORD    ???
  75767. Return: ???
  75768.     STACK unchanged
  75769. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75770. --------b-60----DI0F00-----------------------
  75771. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  75772.     DI = 0F00h
  75773.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75774.         WORD    ???
  75775.         DWORD    pointer to ???
  75776.         WORD    ???
  75777.         DWORD    pointer to ???
  75778. Return: ???
  75779.     STACK unchanged
  75780. --------b-60----DI0F01-----------------------
  75781. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  75782.     DI = 0F01h
  75783.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75784.         DWORD    pointer to ASCIZ title string
  75785. Return: ???
  75786.     STACK unchanged
  75787. --------b-60----DI0F02-----------------------
  75788. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  75789.     DI = 0F02h
  75790.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75791.         DWORD    pointer to ???
  75792. Return: ???
  75793.     STACK unchanged
  75794. --------b-60----DI0F03-----------------------
  75795. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  75796.     DI = 0F03h
  75797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75798.         DWORD    pointer to first line of message
  75799.         WORD    length of first line
  75800.         DWORD    pointer to second line of message
  75801.         WORD    length of second line
  75802. Return: ???
  75803.     STACK unchanged
  75804. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  75805. --------b-60----DI0F04-----------------------
  75806. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  75807.     DI = 0F04h
  75808.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75809. Return: ???
  75810.     STACK unchanged
  75811. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  75812. --------b-60----DI0F05-----------------------
  75813. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  75814.     DI = 0F05h
  75815.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75816. Return: DX:AX -> ???
  75817.     STACK unchanged
  75818. --------b-60----DI0F06-----------------------
  75819. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  75820.     DI = 0F06h
  75821.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75822. Return: DX:AX -> ???
  75823.     STACK unchanged
  75824. --------b-60----DI0F07-----------------------
  75825. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  75826.     DI = 0F07h
  75827.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75828. Return: DX:AX -> ???
  75829.     STACK unchanged
  75830. --------b-60----DI0F08-----------------------
  75831. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  75832.     DI = 0F08h
  75833.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75834.         ???
  75835. Return: ???
  75836.     STACK unchanged
  75837. --------b-60----DI0F09-----------------------
  75838. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  75839.     DI = 0F09h
  75840.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75841.         DWORD    pointer to first line of message
  75842.         WORD    length of first line
  75843.         DWORD    pointer to second line of message
  75844.         WORD    length of second line
  75845.         DWORD    pointer to third line of message
  75846.         WORD    length of third line
  75847. Return: ???
  75848.     STACK unchanged
  75849. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  75850. --------b-60----DI0F0A-----------------------
  75851. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  75852.     DI = 0F0Ah
  75853.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75854. Return: ???
  75855.     STACK unchanged
  75856. SeeAlso: INT 60/DI=0F0Bh
  75857. --------b-60----DI0F0B-----------------------
  75858. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  75859.     DI = 0F0Bh
  75860.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75861. Return: ???
  75862.     STACK unchanged
  75863. SeeAlso: INT 60/DI=0F0Ah
  75864. --------b-60----DI0F0C-----------------------
  75865. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  75866.     DI = 0F0Ch
  75867.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75868.         ???
  75869. Return: ???
  75870.     STACK unchanged
  75871. --------b-60----DI0F0D-----------------------
  75872. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  75873.     DI = 0F0Dh
  75874.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75875.         DWORD    pointer to ???
  75876. Return: DX:AX -> ???
  75877.     STACK unchanged
  75878. --------b-60----DI0F0E-----------------------
  75879. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  75880.     DI = 0F0Eh
  75881.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75882.         DWORD    pointer to ???
  75883. Return: DX:AX -> ???
  75884.     STACK unchanged
  75885. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75886. --------b-60----DI1005-----------------------
  75887. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  75888.     DI = 1005h
  75889.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75890. Return: ???
  75891.     STACK unchanged
  75892. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  75893. --------b-60----DI1200-----------------------
  75894. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  75895.     DI = 1200h
  75896.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75897.         DWORD    pointer to ???
  75898. Return: ???
  75899.     STACK unchanged
  75900. --------b-60----DI1201-----------------------
  75901. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  75902.     DI = 1201h
  75903.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75904.         WORD    ???
  75905. Return: DX:AX -> ???
  75906.     STACK unchanged
  75907. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75908. --------b-60----DI1202-----------------------
  75909. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  75910.     DI = 1202h
  75911.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75912. Return: DX:AX -> ???
  75913.     STACK unchanged
  75914. --------b-60----DI1203-----------------------
  75915. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  75916.     DI = 1203h
  75917.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75918. Return: ???
  75919.     STACK unchanged
  75920. --------b-60----DI1300-----------------------
  75921. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  75922.     DI = 1300h
  75923.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75924.         DWORD    pointer to ???
  75925.         DWORD    pointer to ???
  75926.         WORD    ???
  75927. Return: ???
  75928.     STACK unchanged
  75929. --------b-60----DI1301-----------------------
  75930. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  75931.     DI = 1301h
  75932.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75933.         DWORD    pointer to ???
  75934. Return: ???
  75935.     STACK unchanged
  75936. --------b-60----DI1302-----------------------
  75937. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  75938.     DI = 1302h
  75939.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75940.         DWORD    pointer to ???
  75941.         WORD    ???
  75942. Return: ???
  75943.     STACK unchanged
  75944. --------b-60----DI1303-----------------------
  75945. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  75946.     DI = 1303h
  75947.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75948.         DWORD    pointer to ???
  75949. Return: ???
  75950.     STACK unchanged
  75951. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  75952. --------b-60----DI1400-----------------------
  75953. INT 60 u - HP 95LX System Manager - "M_ColInit"
  75954.     DI = 1400h
  75955.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75956. Return: AX = ???
  75957.     STACK unchanged
  75958. --------b-60----DI1401-----------------------
  75959. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  75960.     DI = 1401h
  75961.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75962.         DWORD    pointer to ???
  75963.         WORD    ???
  75964.         DWORD    pointer to ???
  75965.         WORD    ???
  75966. Return: ???
  75967.     STACK unchanged
  75968. --------b-60----DI1402-----------------------
  75969. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  75970.     DI = 1402h
  75971.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75972.         ???
  75973. Return: ???
  75974.     STACK unchanged
  75975. --------b-60----DI1403-----------------------
  75976. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  75977.     DI = 1403h
  75978.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75979.         ???
  75980. Return: ???
  75981.     STACK unchanged
  75982. --------b-60----DI1404-----------------------
  75983. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  75984.     DI = 1404h
  75985.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75986.         DWORD    pointer to ???
  75987.         WORD    ???
  75988. Return: ???
  75989.     STACK unchanged
  75990. --------b-60----DI1405-----------------------
  75991. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  75992.     DI = 1405h
  75993.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  75994.         DWORD    pointer to ???
  75995.         WORD    ???
  75996.         DWORD    pointer to ???
  75997.         WORD    ???
  75998.         WORD    ???
  75999. Return: ???
  76000.     STACK unchanged
  76001. --------b-60----DI1406-----------------------
  76002. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  76003.     DI = 1406h
  76004.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76005.         DWORD    pointer to ???
  76006.         WORD    ???
  76007. Return: ???
  76008.     STACK unchanged
  76009. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  76010. --------b-60----DI1500-----------------------
  76011. INT 60 u - HP 95LX System Manager - "GrDispInit"
  76012.     DI = 1500h
  76013.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76014.         ???
  76015. Return: ???
  76016.     STACK unchanged
  76017. --------b-60----DI1501-----------------------
  76018. INT 60 u - HP 95LX System Manager - "GrDispClear"
  76019.     DI = 1501h
  76020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76021.         ???
  76022. Return: ???
  76023.     STACK unchanged
  76024. --------b-60----DI1502-----------------------
  76025. INT 60 u - HP 95LX System Manager - "GrDispDot"
  76026.     DI = 1502h
  76027.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76028.         ???
  76029. Return: ???
  76030.     STACK unchanged
  76031. --------b-60----DI1503-----------------------
  76032. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  76033.     DI = 1503h
  76034.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76035.         ???
  76036. Return: ???
  76037.     STACK unchanged
  76038. --------b-60----DI1504-----------------------
  76039. INT 60 u - HP 95LX System Manager - "GrDispFill"
  76040.     DI = 1504h
  76041.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76042.         ???
  76043. Return: ???
  76044.     STACK unchanged
  76045. --------b-60----DI1505-----------------------
  76046. INT 60 u - HP 95LX System Manager - "GrDispRead"
  76047.     DI = 1505h
  76048.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76049.         ???
  76050. Return: ???
  76051.     STACK unchanged
  76052. --------b-60----DI1506-----------------------
  76053. INT 60 u - HP 95LX System Manager - "GrDispString"
  76054.     DI = 1506h
  76055.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76056.         ???
  76057. Return: ???
  76058.     STACK unchanged
  76059. --------b-60----DI1507-----------------------
  76060. INT 60 u - HP 95LX System Manager - "GrDispPan"
  76061.     DI = 1507h
  76062.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76063.         ???
  76064. Return: ???
  76065.     STACK unchanged
  76066. --------b-60----DI1508-----------------------
  76067. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  76068.     DI = 1508h
  76069.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76070.         ???
  76071. Return: ???
  76072.     STACK unchanged
  76073. --------b-60----DI1509-----------------------
  76074. INT 60 u - HP 95LX System Manager - "GrDispSave"
  76075.     DI = 1509h
  76076.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76077.         ???
  76078. Return: ???
  76079.     STACK unchanged
  76080. --------b-60----DI150A-----------------------
  76081. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  76082.     DI = 150Ah
  76083.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76084.         ???
  76085. Return: ???
  76086.     STACK unchanged
  76087. --------b-60----DI150B-----------------------
  76088. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  76089.     DI = 150Bh
  76090.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76091.         ???
  76092. Return: ???
  76093.     STACK unchanged
  76094. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  76095. --------I-60---------------------------------
  76096. INT 60 u - 3270-PC CONTROL PROGRAM - ???
  76097. --------b-60----DI1604-----------------------
  76098. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  76099.     DI = 1604h
  76100.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  76101.         ???
  76102. Return: ???
  76103.     STACK unchanged
  76104. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  76105. --------G-6000-------------------------------
  76106. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  76107.     AH = 00h
  76108. Return: AX = 0000h    profiling is off
  76109.         otherwise profiling is on
  76110. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  76111.       Issue 47
  76112. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  76113. --------G-6000-------------------------------
  76114. INT 60 - MDEBUG - GET STATUS
  76115.     AH = 00h
  76116.     DS:SI -> password or a null byte
  76117. Return: AX = return code
  76118.         FFFEh password is invalid
  76119.         FFFDh display mode is invalid
  76120.         else successful
  76121.         ES = value of the monitor register SE
  76122.         DI = value of the monitor register OF
  76123.         CH = monitor color
  76124.         CL = interpreter color
  76125.         BH = monitor start line
  76126.         BL = interpreter start line
  76127.         AH = makecode of the hotkey
  76128.         AL = ASCII code of the hotkey
  76129.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  76130.               hotkey (coded as for the keyboard flag at 0040h:0017h)
  76131.         DH = basic process number for the communication with drivers
  76132.               process number for the display driver, DH+1 = process
  76133.               number for the command driver(s)
  76134.     DS:SI -> MDEBUG identification table
  76135. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  76136.       Schemmer, including a memory monitor, an interpreter, and a
  76137.       disassembler
  76138. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  76139.       through INT 67; the interrupt handler is preceded by the signature
  76140.       "USERINT" and is not chained
  76141.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  76142.       passwords are active; enough stack space must be provided for an
  76143.       INT 10h call (which MDEBUG uses while prompting for the password)
  76144. SeeAlso: AH=02h"MDEBUG"
  76145. Index:    hotkeys;MDEBUG
  76146.  
  76147. Format of MDEBUG identification table:
  76148. Offset    Size    Description    (Table 1813)
  76149.  -2    WORD    entry offset
  76150.  00h    WORD    CS of MDEBUG
  76151.  02h    DWORD    old INT 08h vector
  76152.  06h    DWORD    old INT 09h vector
  76153.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  76154.  0Eh    BYTE    length of version string
  76155.  0Fh  N BYTEs    version string
  76156. --------G-6001-------------------------------
  76157. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  76158.     AH = 01h
  76159.     DS:SI -> password or a null byte
  76160. Return: AX = return code
  76161.         FFFEh password is invalid
  76162.         FFFDh display mode is invalid
  76163.         else successful
  76164.         ES:DI point to the help registers of MDEBUG
  76165.            ES:DI-02h  -> R0 (WORD)
  76166.            ES:DI      -> R1 (WORD)
  76167.            ES:DI+02h  -> R2 (WORD)
  76168.            ES:DI+04h  -> R3 (WORD)
  76169.            ...
  76170.            ES:DI+0Eh  -> R8 (WORD)
  76171. --------G-6001-------------------------------
  76172. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  76173.     AH = 01h
  76174. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  76175.       Issue 47
  76176. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  76177. --------N-6001FF-----------------------------
  76178. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  76179.     AX = 01FFh
  76180.     BX = handle returned by function 02h
  76181. Return: CF set on error
  76182.         DH = error code (see #1814)
  76183.     CF clear if successful
  76184.         BX = version
  76185.         CH = network interface class (see #1815)
  76186.         DX = interface type (see #1815)
  76187.         CL = number
  76188.         DS:SI -> name
  76189.         AL = driver functions supported
  76190.         01h basic
  76191.         02h basic and extended
  76192.         05h basic and high-performance
  76193.         06h basic, high-performance, and extended
  76194.         FFh not installed
  76195. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  76196.       the packet driver specification
  76197.  
  76198. (Table 1814)
  76199. Values for Packet Driver error code:
  76200.  01h "BAD_HANDLE"    invalid handle number
  76201.  02h "NO_CLASS"        no interfaces of the specified class found
  76202.  03h "NO_TYPE"        no interfaces of the specified type found
  76203.  04h "NO_NUMBER"    no interfaces of the specified number found
  76204.  05h "BAD_TYPE"        bad packet type
  76205.  06h "NO_MULTICAST"    interface does not support multicast messages
  76206.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  76207.  08h "BAD_MODE"        invalid receiver mode
  76208.  09h "NO_SPACE"        insufficient space
  76209.  0Ah "TYPE_INUSE"    type accessed but never released
  76210.  0Bh "BAD_COMMAND"    bad command
  76211.  0Ch "CANT_SEND"    packet could not be sent
  76212.  0Dh "CANT_SET"        hardware address could not be changed
  76213.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  76214.  0Fh "CANT_RESET"    could not reset interface
  76215.  
  76216. (Table 1815)
  76217. Values for Packet Driver network interface classes/types:
  76218.     Class 01h  Ethernet/IEEE 802.3
  76219.     01h 3COM 3C500/3C501
  76220.     02h 3COM 3C505
  76221.     03h MICOM-Interlan NI5010
  76222.     04h BICC Data Networks 4110
  76223.     05h BICC Data Networks 4117
  76224.     06h MICOM-Interlan NP600
  76225.     08h Ungermann-Bass PC-NIC
  76226.     09h Univation NC-516
  76227.     0Ah TRW PC-2000
  76228.     0Bh MICOM-Interlan NI5210
  76229.     0Ch 3COM 3C503
  76230.     0Dh 3COM 3C523
  76231.     0Eh Western Digital WD8003
  76232.     0Fh Spider Systems S4
  76233.     10h Torus Frame Level
  76234.     11h 10Net Communications
  76235.     12h Gateway PC-bus
  76236.     13h Gateway AT-bus
  76237.     14h Gateway MCA-bus
  76238.     15h IMC PCnic
  76239.     16h IMC PCnic II
  76240.     17h IMC PCnic 8-bit
  76241.     18h Tigan Communications
  76242.     19h Micromatic Research
  76243.     1Ah Clarkson "Multiplexor"
  76244.     1Bh D-Link 8-bit
  76245.     1Ch D-Link 16-bit
  76246.     1Dh D-Link PS/2
  76247.     1Eh Research Machines 8
  76248.     1Fh Research Machines 16
  76249.     20h Research Machines MCA
  76250.     21h Radix Microsystems EXM1 16-bit
  76251.     22h Interlan Ni9210
  76252.     23h Interlan Ni6510
  76253.     24h Vestra LANMASTER 16-bit
  76254.     25h Vestra LANMASTER 8-bit
  76255.     26h Allied Telesis PC/XT/AT
  76256.     27h Allied Telesis NEC PC-98
  76257.     28h Allied Telesis Fujitsu FMR
  76258.     29h Ungermann-Bass NIC/PS2
  76259.     2Ah Tiara LANCard/E AT
  76260.     2Bh Tiara LANCard/E MC
  76261.     2Ch Tiara LANCard/E TP
  76262.     2Dh Spider Communications SpiderComm 8
  76263.     2Eh Spider Communications SpiderComm 16
  76264.     2Fh AT&T Starlan NAU
  76265.     30h AT&T Starlan-10 NAU
  76266.     31h AT&T Ethernet NAU
  76267.     32h Intel smart card
  76268.     33h Xircom Packet Adapter
  76269.     34h Aquila Ethernet
  76270.     35h Novell NE1000
  76271.     36h Novell NE2000
  76272.     37h SMC PC-510
  76273.     38h AT&T Fiber NAU
  76274.     39h NDIS to Packet Driver adapter
  76275.     3Ah Racal-InterLan ES3210
  76276.     3Bh General Systems ISDN simulated Ethernet
  76277.     3Ch Hewlett-Packard
  76278.     3Dh IMC EtherNic-8
  76279.     3Eh IMC EtherNic-16
  76280.     3Fh IMC EtherNic-MCA
  76281.     40h NetWorth EtherNext
  76282.     41h Dataco Scanet
  76283.     42h DEC DEPCA
  76284.     43h C-Net
  76285.     44h Gandalf LANLine
  76286.     45h Apricot built-in
  76287.     46h David Systems Ether-T
  76288.     47h ODI to Packet Driver adapter (see also AX=5100h)
  76289.     48h AMD Am21110-16
  76290.     49h Intel ICD Network controller family
  76291.     4Ah Intel ICD PCL2
  76292.     4Bh Intel ICD PCL2A
  76293.     4Ch AT&T LANPacer
  76294.     4Dh AT&T LANPacer+
  76295.     4Eh AT&T EVB
  76296.     4Fh AT&T StarStation
  76297.     50h SLIP simulated ethernet
  76298.     51h Racal-Interlan NIA310
  76299.     52h Racal-Interlan NISE
  76300.     53h Racal-Interlan NISE30
  76301.     54h Racal-Interlan NI6610
  76302.     55h Ethernet over IP/UDP
  76303.     56h ICL EtherTeam 16
  76304.     57h David Systems
  76305.     58h NCR WaveLAN
  76306.     59h Thomas Contrad TC5045
  76307.     5Ah Russ Nelson's Parallel Port driver
  76308.     5Bh Intell EtherExpress 16
  76309.     5Ch IBMTOKEN
  76310.     5Dh Zenith Z-Note
  76311.     5Eh 3Com 3C509
  76312.     5Fh Mylex LNE390
  76313.     60h Madge Smart Ringnode
  76314.     61h Novell NE2100
  76315.     62h Allied Telesis 1500
  76316.     63h Allied Telesis 1700
  76317.     64h Fujitsu EtherCoupler
  76318.     Class 02h  ProNET-10
  76319.     01h Proteon p1300
  76320.     02h Proteon p1800
  76321.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  76322.     01h IBM Token-Ring Adapter
  76323.     02h Proteon p1340
  76324.     03h Proteon p1344
  76325.     04h Gateway PC-bus
  76326.     05h Gateway AT-bus
  76327.     06h Gateway MCA-bus
  76328.     07h Madge board
  76329.     39h NDIS to Packet Driver adapter
  76330.     47h ODI to Packet Driver adapter
  76331.     Class 04h  Omninet
  76332.     Class 05h  Appletalk
  76333.     01h ATALK.SYS adapter
  76334.     Class 06h  Serial Line
  76335.     01h Clarkson 8250-SLIP
  76336.     02h Clarkson "Multiplexor"
  76337.     03h Eicon Technologies
  76338.     Class 07h  StarLAN (subsumed by Ethernet class)
  76339.     Class 08h  ARCnet
  76340.     01h Datapoint RIM
  76341.     Class 09h  AX.25
  76342.     01h Ottawa PI card
  76343.     02h Eicon Technologies
  76344.     Class 0Ah  KISS
  76345.     Class 0Bh  IEEE 802.3 with 802.2 headers
  76346.     types same as for class 01h
  76347.     Class 0Ch  FDDI with 802.2 headers
  76348.     01h Western Digital
  76349.     02h Frontier Technology
  76350.     Class 0Dh  Internet X.25
  76351.     01h Western Digital
  76352.     02h Frontier Technology
  76353.     03h Emerging Technologies
  76354.     04h The Software Forge
  76355.     05h Link Data Intelligent X.25
  76356.     06h Eicon Technologies
  76357.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  76358.     01h NT LANSTAR/8
  76359.     02h NT LANSTAR/MC
  76360.     Class 0Fh  SLFP (MIT serial specification)
  76361.     01h MERIT
  76362.     Class 10h  PPP (Point-to-Point Protocol)
  76363.     01h 8250/16550 UART
  76364.     02h Niwot Networks synch
  76365.     03h Eicon Technologies
  76366.     Class 11h  802.5 with expanded RIFs
  76367.     types same as for class 3
  76368.     Class 12h  reserved for LCP/NCPs
  76369. Note: class and type numbers are cleared through FTP Software
  76370. --------G-6002-------------------------------
  76371. INT 60 - MDEBUG - SET STATUS
  76372.     AH = 02h
  76373.     DS:SI -> password or a null byte
  76374.     ES = new value for the register SE
  76375.     DI = new value for the register OF
  76376.     CH = new monitor color if nonzero
  76377.     CL = new interpreter color if nonzero
  76378.     BH = new monitor start line if nonzero
  76379.     BL = new interpreter start line if nonzero
  76380.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  76381.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  76382.           if nonzero
  76383.     DH = if nonzero, new basic process number for communication with the
  76384.           drivers (DH = multiplex number for the display driver,
  76385.           DH+1 = multiplex number for the command driver or drivers)
  76386. Return: AX = return code
  76387.         FFFFh call not allowed
  76388.         FFFEh password is invalid
  76389.         FFFDh display mode is invalid
  76390.         0000h successful, status changed
  76391.         else AL = error reasons (see #1816)
  76392. Note:    the values of the registers SE and OF are always changed, the other
  76393.       values are only changed if they are valid
  76394. SeeAlso: AH=00h"MDEBUG"
  76395. Index:    hotkeys;MDEBUG
  76396.  
  76397. Bitfields for MDEBUG error reasons:
  76398. Bit(s)    Description    (Table 1816)
  76399.  0    invalid monitor start line
  76400.  1    invalid interpreter start line
  76401.  2    invalid hotkey
  76402.  3    invalid process number
  76403.  4-7    reserved
  76404. --------N-6002-------------------------------
  76405. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  76406.     AH = 02h
  76407.     AL = interface class
  76408.     BX = interface type
  76409.     DL = interface number
  76410.     DS:SI -> type
  76411.     CX = length of type (0000h for all packets)
  76412.     ES:DI -> receiver
  76413. Return: CF set on error
  76414.         DH = error code (see #1814)
  76415.     CF clear if successful
  76416.         AX = handle
  76417. SeeAlso: AH=03h"FTP"
  76418.  
  76419. (Table 1817)
  76420. Values packet driver receiver is called with when a packet is received:
  76421.     AX = subfunction
  76422.         00h get packet buffer
  76423.         CX = buffer length
  76424.         DX = lookahead length (v1.10+)
  76425.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  76426.         DI = error flags (class dependent) (v1.10+)
  76427.         Return: ES:DI -> packet buffer
  76428.                 0000h:0000h means throw away packet
  76429.             CX = size of buffer (v1.10+), may be smaller than
  76430.                   incoming data
  76431.         01h copy completed
  76432.         DS:SI -> buffer
  76433.         CX = bytes actually copied (v1.10+)
  76434.     BX = handle
  76435. --------G-6002-------------------------------
  76436. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  76437.     AH = 02h
  76438. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  76439.       Issue 47
  76440. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  76441. --------G-6003-------------------------------
  76442. INT 60 - MDEBUG - POP UP
  76443.     AH = 03h
  76444.     DS:SI -> password or a null byte
  76445.     ES -> new value for the register SE
  76446.     DI -> new value for the register OF
  76447. Return: AX = return code (see #1818)
  76448. SeeAlso: AH=04h"MDEBUG"
  76449.  
  76450. (Table 1818)
  76451. Values for MDEBUG return code:
  76452.  FFFFh    call not allowed
  76453.  FFFEh    password is invalid
  76454.  FFFDh    display mode is invalid
  76455.  else    successful
  76456. --------N-6003-------------------------------
  76457. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  76458.     AH = 03h
  76459.     BX = handle
  76460. Return: CF set on error
  76461.        DH = error code (see #1814)
  76462.     CF clear if successful
  76463. SeeAlso: AH=02h"FTP"
  76464. --------G-6003-------------------------------
  76465. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  76466.     AH = 03h
  76467. Return: ES:BX -> profiling table
  76468. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  76469.       Issue 47
  76470. SeeAlso: AH=04h"SYS_PROF"
  76471. --------N-6004-------------------------------
  76472. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  76473.     AH = 04h
  76474.     DS:SI -> buffer
  76475.     CX = length
  76476. Return: CF set on error
  76477.         DH = error code (see #1814)
  76478.     CF clear if successful
  76479. Note:    the buffer may be modified immediately upon return from this call
  76480. SeeAlso: AH=0Bh
  76481. --------G-6004-------------------------------
  76482. INT 60 - MDEBUG - POP UP
  76483.     AH = 04h
  76484.     DS:SI -> password or a null byte
  76485. Return: AX = return code (see #1818)
  76486. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  76487. --------G-6004-------------------------------
  76488. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  76489.     AH = 04h
  76490. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  76491.       Issue 47
  76492. SeeAlso: AH=03h"SYS_PROF"
  76493. --------N-6005-------------------------------
  76494. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  76495.     AH = 05h
  76496.     BX = handle (optional for v1.10+)
  76497. Return: CF set on error
  76498.        DH = error code (see #1814)
  76499.     CF clear if successful
  76500. --------G-6005-------------------------------
  76501. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  76502.     AH = 05h
  76503.     DS:SI -> password or a null byte
  76504.     BL = new value for the semaphor of MDEBUG
  76505.          00h  enable popup of MDEBUG
  76506.          else disable popup of MDEBUG
  76507. Return: AX = return code
  76508.         FFFEh password is invalid
  76509.         FFFDh display mode is invalid
  76510.         else successful
  76511.         BL = old value of the semaphor of MDEBUG
  76512.         BH = old value of the INT 08h semaphor
  76513.             (this semaphor is always reset after this function)
  76514. --------N-6006-------------------------------
  76515. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  76516.     AH = 06h
  76517.     BX = handle (optional for v1.10+)
  76518.     ES:DI -> buffer
  76519.     CX = length
  76520. Return: CF set on error
  76521.         DH = error code (see #1814)
  76522.     CF clear if successful
  76523.         CX = length
  76524. Note:    copies the local net address associated with the handle into the buffer
  76525. --------G-6006-------------------------------
  76526. INT 60 - MDEBUG - GET PASSWORD STATUS
  76527.     AH = 06h
  76528. Return: AL = status
  76529.         00h password inactive
  76530.         01h password active
  76531. --------N-6007-------------------------------
  76532. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  76533.     AH = 07h
  76534.     BX = handle (optional for v1.10+)
  76535. Return: CF set on error
  76536.         DH = error code (see #1814)
  76537.     CF clear if successful
  76538. --------G-6007-------------------------------
  76539. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  76540.     AH = 07h
  76541. Return: AL = active part for the next popup session of MDEBUG:
  76542.         bit 0: the next popup session will start in the interpreter rather
  76543.           than in the monitor
  76544.         bit 1: the next popup session will sart in the online-help
  76545. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  76546. --------G-6008-------------------------------
  76547. INT 60 - MDEBUG - UNUSED
  76548.     AH = 08h-FFh
  76549. Return: AX = FFFCh
  76550. --------N-600A-------------------------------
  76551. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  76552.     AH = 0Ah
  76553. Return: CF set on error
  76554.         DH = error code (0Bh) (see #1814)
  76555.     CF clear if successful
  76556.         ES:DI -> parameter table (see #1819)
  76557.  
  76558. Format of packet driver parameter table:
  76559. Offset    Size    Description    (Table 1819)
  76560.  00h    BYTE    major revision of packet driver spec driver conforms to
  76561.  01h    BYTE    minor revision of packet driver spec
  76562.  02h    BYTE    length of this structure in bytes
  76563.  03h    BYTE    length of a MAC-layer address
  76564.  04h    WORD    maximum transfer unit, including MAC headers
  76565.  06h    WORD    buffer size for multicast addr
  76566.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  76567.  0Ah    WORD    number of transmit buffers
  76568.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  76569. --------N-600B-------------------------------
  76570. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  76571.     AH = 0Bh
  76572.     DS:SI -> buffer
  76573.     CX = length of buffer
  76574.     ES:DI -> FAR function to call when buffer becomes available
  76575. Return: CF set on error
  76576.         DH = error code (0Bh,0Ch) (see #1814)
  76577.     CF clear if successful
  76578. Notes:    unlike function 04h, the buffer is not available for modification as
  76579.       soon as the call returns; the buffer may be queued by the driver and
  76580.       not processed until later
  76581.     this function has been dropped from v1.10+ of the specification and
  76582.       replaced by function 0Ch
  76583. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  76584.  
  76585. (Table 1820)
  76586. Values packet driver completion function is called with:
  76587.     AX = result
  76588.         00h copy OK
  76589.         nonzero error
  76590.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  76591. --------N-600C-------------------------------
  76592. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  76593.     AH = 0Ch
  76594.     ES:DI -> pointer to IOCB
  76595. Return: CF set on error
  76596.         DH = error code (see #1814)
  76597.     CF clear if successful
  76598. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  76599.  
  76600. Format of packet driver IOCB:
  76601. Offset    Size    Description    (Table 1821)
  76602.  00h    DWORD    pointer to buffer
  76603.  04h    WORD    length of buffer
  76604.  06h    BYTE    flags
  76605.         bit 0: packet driver is finished with IOCB
  76606.         bit 1: application requests upcall when driver completes
  76607.  07h    DWORD    function address for upcall
  76608.  0Bh  4 BYTEs    future gather write
  76609.  0Fh    BYTE    ???
  76610.  10h  8 BYTEs    private driver workspace
  76611.  
  76612. (Table 1822)
  76613. Values completion function is called with:
  76614.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  76615. --------N-600C-------------------------------
  76616. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  76617.     AH = 0Ch
  76618. Return: AL = status
  76619.         00h successful
  76620.         ES:SI -> 6-byte station address
  76621.         02h semaphore service is unavailable
  76622. --------N-600D-------------------------------
  76623. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  76624.     AH = 0Dh
  76625.     ES:DI -> IOCB
  76626. Return: CF set on error
  76627.         DH = error code (see #1814)
  76628.     CF clear if successful
  76629. SeeAlso: AH=0Ch"Packet Driver"
  76630. --------N-6011-------------------------------
  76631. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  76632.     AH = 11h
  76633.     AL = drive number or 0
  76634.     DX = number of seconds to wait
  76635.     ES:SI = Ethernet address or 0
  76636.     DS:BX -> 31-byte ASCIZ semaphore name
  76637. Return: AL = status (see #1823)
  76638. SeeAlso: AH=12h,AH=13h
  76639.  
  76640. (Table 1823)
  76641. Values for 3com semaphore status:
  76642.  00h    successful
  76643.  01h    timeout
  76644.  02h    server not responding
  76645.  03h    invalid semaphore name
  76646.  04h    semaphore list is full
  76647.  05h    invalid drive ID
  76648.  06h    invalid Ethernet address
  76649.  07h    not logged in
  76650.  08h    write to network failed
  76651.  09h    semaphore already logged for this CPU
  76652. --------N-6012-------------------------------
  76653. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  76654.     AH = 12h
  76655.     AL = drive number or 00h
  76656.     ES:SI = Ethernet address or 0000h:0000h
  76657.     DS:BX -> 31-byte ASCIZ semaphore name
  76658. Return: AL = status (see also #1823)
  76659.         01h semaphore currently locked by another PC
  76660. Note:    unlike function 11h, this function returns immediately
  76661. SeeAlso: AH=11h,AH=13h
  76662. --------N-6013-------------------------------
  76663. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  76664.     AH = 13h
  76665.     AL = drive number or 00h
  76666.     ES:SI = Ethernet address or 0000h:0000h
  76667.     DS:BX -> 31-byte ASCIZ semaphore name
  76668. Return: AL = status (see also #1823)
  76669.         01h semaphore not locked
  76670. SeeAlso: AH=11h,AH=12h
  76671. --------N-6014-------------------------------
  76672. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  76673.     AH = 14h
  76674.     BX = handle (optional for v1.10+)
  76675.     CX = mode (see #1824)
  76676. Return: CF set on error
  76677.        DH = error code (01h,08h) (see #1814)
  76678.     CF clear if successful
  76679. SeeAlso: AH=15h
  76680.  
  76681. (Table 1824)
  76682. Values for packet driver receive mode:
  76683.  01h    turn off receiver
  76684.  02h    receive only packets sent to this interface
  76685.  03h    mode 2 plus broadcast packets
  76686.  04h    mode 3 plus limited multicast packets
  76687.  05h    mode 3 plus all multicast packets
  76688.  06h    all packets
  76689.  07h    raw mode for serial line only (v1.10+)
  76690. --------N-6015-------------------------------
  76691. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  76692.     AH = 15h
  76693.     BX = handle (optional for v1.10+)
  76694. Return: CF set on error
  76695.         DH = error code (01h) (see #1814)
  76696.     CF clear if successful
  76697.         AX = receive mode (see #1824)
  76698. SeeAlso: AH=14h
  76699. --------N-6016-------------------------------
  76700. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  76701.     AH = 16h
  76702.     ES:DI -> multicast list
  76703.     CX = length of list in bytes
  76704. Return: CF set on error
  76705.         DH = error code (06h,09h,0Eh) (see #1814)
  76706.     CF clear if successful
  76707. SeeAlso: AH=17h
  76708. --------N-6017-------------------------------
  76709. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  76710.     AH = 17h
  76711. Return: CF set on error
  76712.         DH = error code (06h,09h) (see #1814 at AX=01FFh)
  76713.     CF clear if successful
  76714.         ES:DI -> multicast addresses (do not modify)
  76715.         CX = bytes of multicast addresses currently in use
  76716. SeeAlso: AH=16h
  76717. --------N-6018-------------------------------
  76718. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  76719.     AH = 18h
  76720.     BX = handle (optional for v1.10+)
  76721. Return: CF set on error
  76722.         DH = error code (01h) (see #1814)
  76723.     CF clear if successful
  76724.         DS:SI -> statistics (see #1825)
  76725.  
  76726. Format of packet driver statistics:
  76727. Offset    Size    Description    (Table 1825)
  76728.  00h    DWORD    packets in
  76729.  04h    DWORD    packets out
  76730.  08h    DWORD    bytes in
  76731.  0Ch    DWORD    bytes out
  76732.  10h    DWORD    errors in
  76733.  14h    DWORD    errors out
  76734.  18h    DWORD    packets dropped
  76735. --------N-6019-------------------------------
  76736. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  76737.     AH = 19h
  76738.     ES:DI -> address
  76739.     CX = length of address
  76740. Return: CF set on error
  76741.         DH = error code (0Dh,0Eh) (see #1814)
  76742.     CF clear if successful
  76743.         CX = length
  76744. --------N-601A-------------------------------
  76745. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  76746.     AH = 1Ah
  76747.     DS:SI -> buffer
  76748.     CX = length of buffer
  76749. Return: CF set on error
  76750.         DH = error code (see #1814 at AX=01FFh)
  76751.     CF clear if successful
  76752. SeeAlso: AH=1Ch
  76753. --------N-601B-------------------------------
  76754. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  76755.     AH = 1Bh
  76756. Return: CF set on error
  76757.         DH = error code (see #1814)
  76758.     CF clear if successful
  76759. SeeAlso: AH=1Ch
  76760. --------N-601C-------------------------------
  76761. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  76762.     AH = 1Ch
  76763.     DS:SI -> buffer
  76764.     CX = length of buffer
  76765.     DX = timeout in clock ticks
  76766. Return: CF set on error
  76767.         DH = error code (see #1814 at AX=01FFh)
  76768.     CF clear if successful
  76769.         CX = number of bytes transferred to buffer
  76770. SeeAlso: AH=1Ah,AH=1Bh
  76771. --------a-60AD-------------------------------
  76772. INT 60 - AccessDOS - API
  76773.     AH = ADh
  76774.     AL = function
  76775.         E1h ???
  76776.         Return: AX = ???
  76777.         E2h get configuration
  76778.         Return: BX:AX -> configuration data
  76779. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  76780.       Development Center which provides extensions for keyboard, mouse,
  76781.       and sound access by the visually, hearing, or motor-control
  76782.       impaired.
  76783. Range:    INT 60 to INT 66, selected by scanning for 0000h:0000h vector
  76784. --------N-60E9-------------------------------
  76785. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  76786.     AH = E9h
  76787.     ???
  76788. Return: ???
  76789. --------!---Section--------------------------
  76790. Interrupt List, part 10 of 12
  76791. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  76792. --------*-61---------------------------------
  76793. INT 61 - reserved for user interrupt
  76794. --------b-61---------------------------------
  76795. INT 61 - Atari Portfolio - EXTENDED BIOS
  76796. Desc:    provides subfunctions such as turning off the machine, accessing
  76797.       internal variables, and mapping memory cards
  76798. SeeAlso: INT 60"Atari"
  76799. --------b-61---------------------------------
  76800. INT 61 - HP 95LX System Manager - LOAD DS
  76801. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  76802. --------r-61---------------------------------
  76803. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  76804. SeeAlso: INT 60"JPI"
  76805. --------d-61---------------------------------
  76806. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  76807. Desc:    this vector stores the second four bytes of the parameter table for
  76808.       hard disk 0
  76809. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  76810. --------I-61---------------------------------
  76811. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  76812.     BX:DX -> control block
  76813. SeeAlso: INT 67"Sangoma"
  76814. --------v-61---------------------------------
  76815. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  76816. Note:    the virus copies the original INT 21h vector into INT 61h
  76817. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  76818. --------U-61---------------------------------
  76819. INT 61 - PC-Magazin - PAGE, SWAPx
  76820.     details not yet available
  76821. Program: PAGE and SWAPx are utilities from PC-Magazin, the German edition of
  76822.       PC Magazine, issue 47/85, page 31
  76823. SeeAlso: INT 66"INCA"
  76824. --------N-61---------------------------------
  76825. INT 61 - TCPOpen kernel - API
  76826.     ES:BX -> request packet (see #1826)
  76827. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  76828. Range:    INT 60 to INT 7F, selected by configuration file
  76829. Note:    there does not appear to be an installation check, though function
  76830.       FFFFh can be used to verify that the software is indeed functioning
  76831.  
  76832. Format of TCPOpen request packet:
  76833. Offset    Size    Description    (Table 1826)
  76834.  00h  8 BYTEs    ???
  76835.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  76836.  0Ah    WORD    ???
  76837.  0Ch  2 BYTEs    ???
  76838.  0Eh    WORD    (return) return code
  76839.  10h  2 BYTEs    ???
  76840.  12h    WORD    ???
  76841.  14h    WORD    (return) 0001h if requested function complete
  76842.  16h    WORD    (return) ???
  76843.  18h  6 BYTEs    ???
  76844.  1Eh    DWORD    -> ???
  76845.  22h    WORD    ??? or 0000h
  76846.  24h    WORD    (return) ???
  76847.  
  76848. (Table 1827)
  76849. Call TCPOpen Function FFFFh: installation verification
  76850. Return: offset 10h = BEEFh
  76851.     offset 14h = 0001h
  76852.     offset 24h = ???
  76853. Index:    installation check;TCPOpen kernel
  76854. --------N-61---------------------------------
  76855. INT 61 - XFS v1.76 - XFSKRNL.EXE - API
  76856.     AX = function
  76857.         8000h installation check???
  76858.         Return: AX = 0000h
  76859.         8001h ???
  76860.         ES:DI -> DWORD ???
  76861.         Return: AX = status???
  76862.         8002h ???
  76863.         BX = ???
  76864.         CX = ???
  76865.         ES:DI -> ???
  76866.         Return: AX = status???
  76867.         8003h ???
  76868.         BX = ???
  76869.         CX = ???
  76870.         ES:DI -> ???
  76871.         Return: AX = status???
  76872.         8004h ???
  76873.         BX = ???
  76874.         Return: AX = status???
  76875.         8005h wait until ???
  76876.         Return: DX:AX = ???
  76877.         8006h get ???
  76878.         Return: DX:AX -> ??? record
  76879.         8007h set IP address??? (or htonl/ntohl)
  76880.         DX:BX = IP address???
  76881.         Return: DX:AX = byte-swapped IP address
  76882.         8008h set IP address??? (or htonl/ntohl)
  76883.         DX:AX = IP address???
  76884.         Return: DX:AX = byte-swapped IP address
  76885.         8009h ???
  76886.         ES:DI -> ???
  76887.         Return: DX:AX = ???
  76888.         800Ah ???
  76889.         800Bh ???
  76890.         Return: DX:AX = ???
  76891.         800Ch ???
  76892.         800Dh ???
  76893.         800Eh ???
  76894.         800Fh ???
  76895.         8010h get ??? record
  76896.         Return: DX:AX -> ??? record
  76897.         8011h ???
  76898.         8012h ???
  76899.         BX = ???
  76900.         Return: DX:AX = ???
  76901.         8013h get ??? record
  76902.         Return: DX:AX -> ??? record
  76903.         8014h ???
  76904.         ES:DI -> ???
  76905.         Return: nothing
  76906.         8015h get ??? record
  76907.         Return: DX:AX -> 8-byte ??? record
  76908.         8016h get ??? record
  76909.         Return: DX:AX -> 6-byte ??? record
  76910.         8017h ???
  76911.         ES:DI -> ???
  76912.         Return: DX:AX = ???
  76913.         8018h get ??? record
  76914.         Return: DX:AX -> ??? record
  76915.         8019h get ??? record
  76916.         Return: DX:AX -> 14-byte ??? record
  76917.         801Ah get ??? record
  76918.         Return: DX:AX -> ??? record (max 98 bytes)
  76919.         801Bh get ??? record
  76920.         Return: DX:AX -> ??? record
  76921.         801Ch ???
  76922.         Return: nothing
  76923.         801Dh get ???
  76924.         Return: AL = ???
  76925.         801Eh ???
  76926.         Return: AX = ???
  76927.         801Fh uninstall
  76928.         Return: AX = status
  76929.                 0000h successful
  76930.                 other interrupt which could not be released
  76931.     AX = other
  76932.         Return: AX:BX = ??? (0000h:0000h by default)
  76933. Program: XFS is a shareware Network File System client by Robert Juhasz
  76934. Range:    INT 60 to INT 65, selected by scanning for two consecutive free
  76935.       vectors and hooking the first
  76936. SeeAlso: INT 62"XFS"
  76937. --------N-61---------------------------------
  76938. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  76939.     AH = system call number (see also entries below)
  76940.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  76941.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  76942. Return: CF clear if successful
  76943.     CF set on error
  76944.         AL = basic error (see #1828)
  76945.         AH = suberror number (see #1829,#1830)
  76946. Range:    INT 20h to INT E0h, selected by configuration
  76947. Notes:    the installation check consists of testing for the signature "TCPTSR"
  76948.       three bytes beyond the start of the interrupt handler
  76949. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  76950.       greater than 54h in AH may crash the system.    Other kernels may have
  76951.       this bug as well.
  76952. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  76953. Index:    installation check;PC/TCP
  76954.  
  76955. (Table 1828)
  76956. Values for PC/TCP error code:
  76957.  00h "NET_NOERR" successful
  76958.  01h "NET_ERR_INUSE" protocol or socket already in use
  76959.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  76960.  03h "NET_ERR_NOMEM" out of memory
  76961.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  76962.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  76963.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  76964.  07h "NET_ERR_NOHOST" no host bound to specified connection
  76965.  08h "NET_ERR_CANTOPEN" unable to open file
  76966.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  76967.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  76968.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  76969.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  76970.  0Dh "NET_ERR_TIMEOUT" operation timed out
  76971.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  76972.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  76973.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  76974.     Subcodes: 0= no error, 1 = Host unreachable
  76975.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  76976.             is zero
  76977.  12h "NET_ERR_BADARG" invalid argument
  76978.  13h "NET_ERR_EOF" foreign host closed its end of connection
  76979.  14h "NET_ERR_RESET" connection has been reset
  76980.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  76981.             with no data available
  76982.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  76983.  17h "NET_ERR_NODESC" could not allocate network descriptor
  76984.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  76985.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  76986.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  76987.  1Bh kernel busy, try again later
  76988.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  76989.     (see subcodes below)
  76990. ---v2.1+---
  76991.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  76992.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  76993.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  76994.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  76995.  21h "NET_ERR_EMM" expanded memory error
  76996.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  76997.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  76998.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  76999.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  77000.  
  77001. (Table 1829)
  77002. Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
  77003.  00h    no error
  77004.  01h    host unreachable
  77005.  02h    ARP failed
  77006.  03h    hardware failure
  77007.  04h    link failure
  77008.  05h    no route
  77009.  06h    gateway down
  77010.  
  77011. (Table 1830)
  77012. Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
  77013.  07h    unrecognised
  77014.  08h    can't fragment
  77015.  09h    srcr_fail
  77016.  0Ah    source quench
  77017.  0Bh    time exceeded
  77018.  0Ch    parameter problem
  77019.  0Dh    admin_prohib. see also code 0Ah
  77020. --------N-6100-------------------------------
  77021. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  77022.     AH = 00h
  77023.     DS:SI -> 216-byte buffer for network debugging information (see #1831)
  77024. Return: CF clear
  77025.     AX = 0000h
  77026.     buffer filled
  77027. Notes:    this call is not documented by FTP, Inc. for any version
  77028.     most of the information returned by this call is available via the
  77029.       documented get_kernel_info or net_info commands.
  77030.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  77031. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  77032.  
  77033. Format of network debugging information:
  77034. Offset    Size    Description    (Table 1831)
  77035.  00h    DWORD    number of interrupts
  77036.  04h    DWORD    receive buffer low-water mark
  77037.  08h    DWORD    transmit buffer low-water mark
  77038.  0Ch    DWORD    number of packets received
  77039.  10h    DWORD    number of packets transmitted
  77040.  14h    DWORD    total receive errors
  77041.  18h    DWORD    total transmit errors
  77042.  1Ch  4 BYTEs    ???
  77043.  20h    DWORD    receive resets
  77044.  24h    DWORD    transmit resets
  77045.  28h    DWORD    number of "runts" received
  77046.  2Ch    DWORD    number of alignment errors on received packets
  77047.  30h    DWORD    number of CRC errors on received packets
  77048.  34h    DWORD    number of parity errors on received packets
  77049.  38h    DWORD    number of receive overflow errors
  77050.  3Ch    DWORD    number of oversized packets received
  77051.  40h    DWORD    number of packets lost due to lack of buffers
  77052.  44h    DWORD    receive timeouts
  77053.  48h 32 BYTEs    ???
  77054.  68h    DWORD    number of transmit collisions
  77055.  6Ch    DWORD    number of transmit timeouts
  77056.  70h    DWORD    number of transmit underflows
  77057.  74h    DWORD    number of lost "crs" on transmit
  77058.  78h    DWORD    number of times heartbeat failed on transmit
  77059.  7Ch 24 BYTEs    ???
  77060.  94h    WORD    free packet buffers
  77061.  96h    WORD    total packet buffers
  77062.  98h    WORD    minimum number of packet buffers free since kernel started
  77063.  9Ah 24 BYTEs    ???
  77064.  B2h    DWORD    pointer to TCP connection list???
  77065.  B6h    DWORD    pointer to IP routing table???
  77066.  BAh 30 BYTEs    ???
  77067. --------V-610000-----------------------------
  77068. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  77069.     AX = 0000h
  77070.     BX = zoom factor (0-7)
  77071. Desc:    zooms the display based on the given zoom factor
  77072. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  77073.       obtained by calling INT 16/AH=FFh
  77074.     not all vendors include the Tseng TSR which supports these functions
  77075. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  77076. SeeAlso: INT 16/AH=FFh"OPTIMA"
  77077. --------N-610001SF0001-----------------------
  77078. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  77079.     AX = 0001h subfn 0001h
  77080.     DS:DX -> communications control block (function 0001h)
  77081. Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #1832)
  77082. Range:    INT 60h to INT 66h
  77083. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77084.       the four bytes immediately preceding the interrupt handler
  77085. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  77086.  
  77087. (Table 1832)
  77088. Values for VINES status:
  77089.  0000h    successful
  77090.  0001h    service not installed
  77091.  0002h    invalid service ID
  77092.  0098h    resource already in use
  77093.  0003h-000Ah reserved for BANV interface errors
  77094.  0097h    invalid socket identifier
  77095.  009Bh    destination node unreachable
  77096.  009Ch    message overflow
  77097.  009Dh    destination socket nonexistent
  77098.  009Eh    address family does not exist
  77099.  009Fh    socket type does not exist
  77100.  00A0h    protocol does not exist
  77101.  00A1h    no more sockets available
  77102.  00A2h    no more buffer space available
  77103.  00A3h    timeout
  77104.  00A5h    resource not available
  77105.  00A6h    internal communication failure
  77106.  00B1h    resource disconnect
  77107.  
  77108. Format of VINES control block to open socket:
  77109. Offset    Size    Description    (Table 1833)
  77110.  00h    WORD    0001h
  77111.  02h    WORD    pointer to argument block
  77112.  04h    WORD    error return code
  77113.  06h  4 BYTEs    reserved
  77114.  
  77115. Format of VINES argument block for opening socket:
  77116. Offset    Size    Description    (Table 1834)
  77117.  00h    WORD    pointer to 2-byte buffer for socket identifier
  77118.  02h    WORD    address family
  77119.         0003h Banyan
  77120.  04h    WORD    socket type
  77121.         in address family 0003h
  77122.             0001h IPC socket
  77123.             0002h SPP socket
  77124.  06h    WORD    protocol number
  77125.         FFFFh default
  77126.  08h    WORD    pointer to 16-byte buffer for socket address
  77127.  0Ah    WORD    local port number
  77128.         0000h if service should assign transient port number
  77129.         0001h to 01FFh well-known port number (assigned by Banyan)
  77130.  
  77131. Format of IPC port:
  77132. Offset    Size    Description    (Table 1835)
  77133.  00h    WORD    address family (always 0003h for Banyan ports)
  77134.  04h  4 BYTEs    network number (server's serial number)
  77135.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  77136.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  77137.  0Ah    BYTE    hop count
  77138.  0Bh  5 BYTEs    filler
  77139. --------N-610001SF0002-----------------------
  77140. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  77141.     AX = 0001h subfn 0002h
  77142.     DS:DX -> communications control block (function 0002h) (see #1836)
  77143. Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
  77144.         (see #1832)
  77145. Range:    INT 60h to INT 66h
  77146. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77147.       the four bytes immediately preceding the interrupt handler
  77148. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  77149.  
  77150. Format of VINES control block for subfunction 0002h:
  77151. Offset    Size    Description    (Table 1836)
  77152.  00h    WORD    0002h
  77153.  02h    WORD    pointer to argument block (see #1837)
  77154.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  77155.         (see #1832)
  77156.  06h  4 BYTEs    reserved
  77157.  
  77158. Format of VINES argument block for subfunction 0002h:
  77159. Offset    Size    Description    (Table 1837)
  77160.  00h    WORD    routine metric
  77161.  02h    WORD    error return code
  77162.  04h    WORD    socket identifier
  77163.  06h    WORD    pointer to send buffer (see #1839)
  77164.  08h    WORD    length of send buffer
  77165.  0Ah    WORD    message request flags (see #1838)
  77166.  0Ch 16 BYTEs    socket address (see #1840)
  77167.  1Ch    WORD    timeout value in multiples of 200ms
  77168.  1Eh    WORD    connection identifier
  77169.  20h    WORD    type of request
  77170.         0001h send message
  77171.         0002h establish a virtual connection
  77172.         0003h terminate a virtual connection
  77173.  
  77174. Bitfields for message request flags:
  77175. Bit(s)    Description    (Table 1838)
  77176.  0    async request
  77177.  1    reliable message
  77178.  2    flush receive buffer on overflow
  77179.  3    end of user message received
  77180.  4    vectored request (if set, send buffer contains buffer descriptors)
  77181.  5    connection-specific receive
  77182.  6    change to connection-specific receive mode
  77183.  
  77184. Format of buffer descriptor:
  77185. Offset    Size    Description    (Table 1839)
  77186.  00h    WORD    data segment
  77187.  02h    WORD    buffer pointer
  77188.  04h    WORD    buffer length
  77189.  06h    WORD    character count
  77190.  
  77191. Format of VINES socket address for unreliable datagrams:
  77192. Offset    Size    Description    (Table 1840)
  77193.  00h    WORD    0003h      address family
  77194.  02h    DWORD    FFFFFFFFh network number
  77195.  06h    WORD    FFFFh      subnet number
  77196.  08h    WORD          local port number
  77197.  0Ah    BYTE    00h-0Fh      hop count
  77198.  0Bh  5 BYTEs    0000h      filler
  77199. --------N-610001SF0003-----------------------
  77200. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  77201.     AX = 0001h subfn 0003h
  77202.     DS:DX -> communications control block (function 0003h) (see #1841)
  77203. Return: AX = status (00-0Ah,97h,A2h,A3h) (see #1832)
  77204. Range:    INT 60h to INT 66h
  77205. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77206.       the four bytes immediately preceding the interrupt handler
  77207. SeeAlso: AX=0001h/SF=0002h
  77208.  
  77209. Format of VINES control block for subfunction 0003h:
  77210. Offset    Size    Description    (Table 1841)
  77211.  00h    WORD    0003h
  77212.  02h    WORD    pointer to argument block (see #1842)
  77213.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  77214.         (see #1832)
  77215.  06h  4 BYTEs    reserved
  77216.  
  77217. Format of VINES argument block for subfunction 0003h:
  77218. Offset    Size    Description    (Table 1842)
  77219.  00h    WORD    character count
  77220.  02h    WORD    error return code
  77221.  04h    WORD    socket identifier
  77222.  06h    WORD    pointer to receive buffer
  77223.  08h    WORD    length of receive buffer
  77224.  0Ah    WORD    message request flags (see #1838)
  77225.  0Ch 16 BYTEs    socket address
  77226.  1Ch    WORD    timeout value in multiples of 200ms
  77227.  1Eh    WORD    connection identifier
  77228.  20h    WORD    type of response
  77229.         0001h message received
  77230.         0002h virtual connection established
  77231.         0003h virtual connection terminated
  77232.  
  77233. Format of buffer descriptor:
  77234. Offset    Size    Description    (Table 1843)
  77235.  00h    WORD    data segment
  77236.  02h    WORD    buffer pointer
  77237.  04h    WORD    buffer length
  77238.  06h    WORD    character count
  77239. --------N-610001SF0004-----------------------
  77240. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  77241.     AX = 0001h subfn 0004h
  77242.     DS:DX -> communications control block (function 0004h)
  77243. Return: AX = status (0000h-000Ah,0097h) (see #1832)
  77244. Range:    INT 60h to INT 66h
  77245. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77246.       the four bytes immediately preceding the interrupt handler
  77247. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  77248.  
  77249. Format of VINES control block to close socket:
  77250. Offset    Size    Description    (Table 1844)
  77251.  00h    WORD    0004h
  77252.  02h    WORD    pointer to argument block (see #1845)
  77253.  04h    WORD    error return code (see #1832)
  77254.  06h  4 BYTEs    reserved
  77255.  
  77256. Format of VINES argument block for closing socket:
  77257. Offset    Size    Description    (Table 1845)
  77258.  00h    WORD    socket identifier
  77259. --------N-610001SF0005-----------------------
  77260. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  77261.     AX = 0001h subfn 0005h
  77262.     DS:DX -> communications control block (see #1847)
  77263. Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #1846)
  77264. Range:    INT 60h to INT 66h
  77265. Notes:    The Banyan interrupt handler is identified by the string "BANV" in
  77266.       the four bytes immediately preceding the interrupt handler
  77267.     returns results for all asynchronous operations invoked from the
  77268.       data segment used for this call
  77269. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  77270.  
  77271. (Table 1846)
  77272. Values for VINES function status:
  77273.  0000h    successful
  77274.  0001h    service not installed
  77275.  0002h    invalid service ID
  77276.  0003h-000Ah reserved for BANV interface errors
  77277.  00A2h    no more buffer space available
  77278.  00A3h    timeout event
  77279.  
  77280. Format of VINES control block for subfunction 0005h:
  77281. Offset    Size    Description    (Table 1847)
  77282.  00h    WORD    0005h
  77283.  02h    WORD    pointer to argument block (see #1848)
  77284.  04h    WORD    error return code
  77285.  06h  4 BYTEs    reserved
  77286.  
  77287. Format of VINES argument block for subfunction 0005h:
  77288. Offset    Size    Description    (Table 1848)
  77289.  00h    WORD    pointer to WORD event pointer
  77290.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  77291. --------N-610001SF0008-----------------------
  77292. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  77293.     AX = 0001h subfn 0008h
  77294.     DS:DX -> communications control block (function 0008h)
  77295. Return: AX = status
  77296.         0000h  successful
  77297.         00A2h  no more buffer space available
  77298. Range:    INT 60h to INT 66h
  77299. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77300.       the four bytes immediately preceding the interrupt handler
  77301. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  77302.  
  77303. Format of VINES control block for subfunction 0006h:
  77304. Offset    Size    Description    (Table 1849)
  77305.  00h    WORD    0008h
  77306.  02h    WORD    process type
  77307.         0001h transient process
  77308.         0002h resident process
  77309.  04h    WORD    error return code
  77310.  06h  4 BYTEs    reserved
  77311. --------N-610001SF000B-----------------------
  77312. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  77313.     AX = 0001h subfn 000Bh
  77314.     DS:DX -> communications control block (function 000Bh) (see #1850)
  77315. Return: AX = status (00h-0Ah,A2h) (see #1846)
  77316. Range:    INT 60h to INT 66h
  77317. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  77318.       the four bytes immediately preceding the interrupt handler
  77319. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  77320.  
  77321. Format of VINES control block for subfunction 000Bh:
  77322. Offset    Size    Description    (Table 1850)
  77323.  00h    WORD    000Bh
  77324.  02h    WORD    pointer to argument block (see #1851)
  77325.  04h    WORD    error return code (see #1832)
  77326.  06h  2 BYTEs    reserved
  77327.  08h    WORD    user CS register
  77328.  
  77329. Format of VINES argument block for subfunction 000Bh:
  77330. Offset    Size    Description    (Table 1851)
  77331.  00h    WORD    pointer to user interrupt function (see #1852)
  77332.  02h    WORD    pointer to user stack
  77333.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  77334.  
  77335. (Table 1852)
  77336. Values FAR user function is invoked with:
  77337.     SS = DS = ES = segment of control block
  77338.     STACK:    DWORD    return address
  77339.         WORD    argument pointer (sosend or sorec argument block)
  77340.         WORD    error return code
  77341.             0000h argument pointer is valid
  77342.             00A3h timeout
  77343. --------V-610001-----------------------------
  77344. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  77345.     AX = 0001h
  77346.     BX = X coordinate to center
  77347.     CX = Y coordinate to center
  77348. Desc:    Positions the zoom window such that the specified window-relative
  77349.       coordinates appear as close as possible to the center of the
  77350.       display.  Useful for scrolling and panning.
  77351. Range:    unknown
  77352. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  77353.       obtained by calling INT 16/AH=FFh
  77354.     not all vendors include the Tseng TSR which supports these functions
  77355. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  77356. SeeAlso: INT 16/AH=FFh"OPTIMA"
  77357. --------I-610002-----------------------------
  77358. INT 61 - Banyan VINES - 3270 INTERFACE
  77359.     AX = 0002h
  77360.     BH = function number (see #1853)
  77361.     DS:CX -> argument block (except BH=00h,1Ah)
  77362. Return: AX = status (see #1854)
  77363. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  77364.       which is loaded first.  The other interface will use AX=000Ah
  77365.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  77366.       or 3270/BSC resident driver, which must be reloaded by the user
  77367.  
  77368. (Table 1853)
  77369. Values for VINES 3270 interface function number:
  77370.  00h "pi2reset"     reset 3270/SNA or 3270/BSC driver
  77371.  02h "pi2bsc"     (3270/BSC only)
  77372.  03h "pi2get"     get information stored in 3270 resident driver
  77373.  04h "pi2put"     store information in 3270 resident driver
  77374.  05h "pi2gcur"     get current screen position
  77375.  07h "pi2sdat"     send data keystroke
  77376.  08h "pi2scom"     send command keystroke
  77377.  0Ah "pi2field"     get field info for arbitrary screen positions
  77378.  0Fh "pi2stat"     get logical unit/device status
  77379.  12h "pi2nlus"     determine logical unit/device assignment
  77380.  13h "pi2gate"     specifies comm port address to gateway service
  77381.  14h "pi2attach" attach a logical unit/device
  77382.  15h "pi2sdev"     save logical unit/device info in resident driver
  77383.         (not supported in >3.0)
  77384.  16h "pi2gdev"     get device information (not supported in >3.0)
  77385.  17h "pi2luinfo" get info about specific logical unit/device
  77386.  18h "pi2gerr"     get finer error detail
  77387.  19h "pi2dhold"     (3270/SNA only)  holds a 3270 device
  77388.  1Ah "pi2shut"     release memory-resident module
  77389.  1Ch "pi2sprof"     save profile info in res driver (not supp in >3.0)
  77390.  1Dh "pi2gprof"     get prevsly stored profile info (not supp in >3.0)
  77391.  
  77392. (Table 1854)
  77393. Values for VINES 3270 status:
  77394.  0000h    successful
  77395.  000Bh    invalid parameter or data does not fit data area
  77396.  000Ch    another code path currently active in resident driver
  77397.  000Dh    operation currently not allowed
  77398.  0032h    encountered connection disconnect error
  77399.  0033h    encountered "sosend" completion error
  77400.  0034h    encountered "sosend" communication error
  77401.  0035h    attach request refused.    extended error info via "pi2gerr":
  77402.     01h resource unavailable
  77403.     02h invalid type
  77404.     03h version mismatch
  77405.     04h invalid logical unit number
  77406.     05h error during ARL processing
  77407.     06h no access for user
  77408.  0071h    encountered "sosock" error
  77409.  0072h    encountered unrecognizable error
  77410.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  77411.  0074h    encountered invalid type-of-request on "sowait"
  77412.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  77413.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  77414.  0077h    encountered connection request
  77415.  0078h    encountered unrecognizable data
  77416.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  77417.  
  77418. Format of argument block for BH=03h,04h:
  77419. Offset    Size    Description    (Table 1855)
  77420.  00h    WORD    size of data area (max 256)
  77421.  02h  N BYTEs    data area
  77422.  
  77423. Format of argument block for BH=05h:
  77424. Offset    Size    Description    (Table 1856)
  77425.  00h    WORD    logical unit/device number
  77426.  02h    WORD    pointer to WORD buffer for cursor index
  77427.  04h    WORD    pointer to BYTE buffer for current field attribute
  77428.  
  77429. Format of argument block for BH=07h:
  77430. Offset    Size    Description    (Table 1857)
  77431.  00h    WORD    logical unit/device number
  77432.  02h    WORD    ASCII data byte
  77433.  04h    WORD    pointer to WORD count of characters which will need updating
  77434.  
  77435. Format of argument block for BH=08h:
  77436. Offset    Size    Description    (Table 1858)
  77437.  00h    WORD    logical unit/device number
  77438.  02h    WORD    3270 keystroke (see #1859)
  77439.  
  77440. (Table 1859)
  77441. Values for 3270 keystroke:
  77442.  0000h    Enter
  77443.  0001h    Clear
  77444.  0002h    PA1
  77445.  0003h    PA2
  77446.  0004h    PA3
  77447.  0005h    PF1
  77448.  ...
  77449.  001Ch    PF24
  77450.  001Dh    CSELECT (cursor select)
  77451.  001Eh    Insert
  77452.  001Fh    Delete
  77453.  0020h    EOField
  77454.  0021h    EINPUT (erase input)
  77455.  0022h    Reset
  77456.  0023h    Attention
  77457.  0024h    SysReq
  77458.  0025h    Duplicate
  77459.  0026h    Fieldmark
  77460.  0027h    Home
  77461.  0028h    NextLine
  77462.  0029h    Tab
  77463.  002Ah    BackTab
  77464.  002Bh    cursor up
  77465.  002Ch    cursor down
  77466.  002Dh    cursor right
  77467.  002Eh    cursor left
  77468.  002Fh    double cursor right
  77469.  0030h    double cursor left
  77470.  0031h    PRINT
  77471.  0032h    CANCEL
  77472.  0033h    Backspace    
  77473.  
  77474. Format of argument block for BH=0Ah:
  77475. Offset    Size    Description    (Table 1860)
  77476.  00h    WORD    logical unit/device number
  77477.  02h    WORD    screen index
  77478.  04h    WORD    pointer to WORD buffer for field length
  77479.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  77480.  
  77481. Format of argument block for BH=0Fh:
  77482. Offset    Size    Description    (Table 1861)
  77483.  00h    WORD    logical unit/device number
  77484.  02h    WORD    clear mask (clear these bits of status after returning status)
  77485.  04h    WORD    pointer to WORD buffer for device status (see #1862)
  77486.  
  77487. Bitfields for device status:
  77488. Bit(s)    Description    (Table 1862)
  77489.  10    status modified
  77490.  9    buffer modified
  77491.  8    set cursor
  77492.  5    sound alarm
  77493.  1-0    size of print line for printer logical units
  77494.     00  unformatted line
  77495.     01  40-character line
  77496.     10  64-character line
  77497.     11  80-character line
  77498.  
  77499. Format of argument block for BH=12h:
  77500. Offset    Size    Description    (Table 1863)
  77501.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  77502.  02h    WORD    pointer to WORD buffer for version number
  77503.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  77504.  
  77505. Format of argument block for BH=13h:
  77506. Offset    Size    Description    (Table 1864)
  77507.  00h 16 BYTEs    communications port address (see #1835)
  77508.  
  77509. Format of argument block for BH=14h:
  77510. Offset    Size    Description    (Table 1865)
  77511.  00h    WORD    logical unit/device number
  77512.         0000h attach any free device of the specified type
  77513.  02h    WORD    logical unit/device type
  77514.         (3270/SNA) 01h, 02h, or 03h
  77515.         (3270/BSC) 02h display
  77516.         (3270/BSC) 03h printer
  77517.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  77518.  
  77519. Format of argument block for BH=16h:
  77520. Offset    Size    Description    (Table 1866)
  77521.  00h    WORD    pointer to 18-byte buffer for device block (see #1871)
  77522.         first WORD must be set to desired logical unit/device number
  77523.  
  77524. Format of argument block for BH=17h:
  77525. Offset    Size    Description    (Table 1867)
  77526.  00h    WORD    logical unit/device number
  77527.  02h    WORD    pointer to information block in caller's DS (see #1872)
  77528.  
  77529. Format of argument block for BH=18h:
  77530. Offset    Size    Description    (Table 1868)
  77531.  00h    WORD    pointer to WORD buffer for major error code
  77532.  02h    WORD    pointer to WORD buffer for minor error code
  77533.  
  77534. Format of argument block for BH=19h:
  77535. Offset    Size    Description    (Table 1869)
  77536.  00h    WORD    logical unit/device number
  77537.  
  77538. Format of argument block for BH=1Ch,1Dh:
  77539. Offset    Size    Description    (Table 1870)
  77540.  00h    WORD    pointer to profile block in caller's DS (see #1875)
  77541.  
  77542. Format of device block, argument block for BH=15h:
  77543. Offset    Size    Description    (Table 1871)
  77544.  00h    WORD    logical unit/device number
  77545.  02h    WORD    logical unit/device type
  77546.  04h    WORD    display model number
  77547.  06h    WORD    numeric checking
  77548.  08h    WORD    status line
  77549.  0Ah    BYTE    unprotected normal field attribute
  77550.  0Bh    BYTE    unprotected intensified field attribute
  77551.  0Ch    BYTE    protected normal field attribute
  77552.  0Dh    BYTE    protected intensified field attribute
  77553.  0Eh    WORD    reserved
  77554.  10h    WORD    printer port number
  77555.  
  77556. Format of information block:
  77557. Offset    Size    Description    (Table 1872)
  77558.  00h    WORD    device model number
  77559.  02h    DWORD    screen buffer pointer
  77560.  06h    DWORD    status line pointer (see #1873)
  77561.  0Ah    DWORD    reserved
  77562.  
  77563. Format of status line:
  77564. Offset    Size    Description    (Table 1873)
  77565.  00h    BYTE    comm line status
  77566.         00h inactive
  77567.         01h active
  77568.  01h    BYTE    activation level
  77569.         01h physical unit activated
  77570.         02h logical unit also activated
  77571.         03h session is bound
  77572.  02h    BYTE    data traffic state
  77573.         00h inactive
  77574.         01h active
  77575.  03h    BYTE    screen ownership
  77576.         00h SLU->PLU session owns screen
  77577.         01h SLU->SSCP session owns screen
  77578.  04h    BYTE    keyboard status (see #1874)
  77579.  05h    BYTE    insert mode
  77580.         01h if in insert mode
  77581.  06h    BYTE    numeric
  77582.         01h if current screen buffer is numeric only
  77583.  07h    BYTE    printer status
  77584.         00h printer not assigned
  77585.         01h printer is inactive
  77586.         02h printer error
  77587.         03h currently printing
  77588.         04h printer is busy
  77589.         05h printer is very busy
  77590.  08h    BYTE    printer assignment
  77591.  09h    BYTE    maximum size of network name
  77592.  0Ah  N BYTEs    ASCIZ network name
  77593.     BYTE    maximum size of message window
  77594.       M BYTEs    null-terminated message window
  77595.     BYTE    code set
  77596.         00h EBCDIC
  77597.         01h ASCII
  77598.       M BYTEs    extended attributes
  77599.         01h extended attributes are in effect (stored at screen+1920)
  77600.             each extended attribute specifies
  77601.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  77602.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  77603.                   100=green,101=turquoise,110=yellow,111=white
  77604.     BYTE    extended color
  77605.         01h other than base color is in effect
  77606.  
  77607. (Table 1874)
  77608. Values for keyboard status:
  77609.  00h    UNLOCK - ready to accept data
  77610.  01h    TIME - aid was struck
  77611.  02h    SYSTEM - received response no restore
  77612.  03h    FUNCTION - unavailable keyboard function
  77613.  04h    INPUT - not currently used
  77614.  05h    ENDFIELD - field filled in insert mode
  77615.  06h    PROTECTED - attempt to enter in protected field
  77616.  07h    NUMERIC - attempt to enter in numeric field
  77617.  08h    PROGRAM - error in outbound data stream
  77618.  
  77619. Format of profile block:
  77620. Offset    Size    Description    (Table 1875)
  77621.  00h 64 BYTEs    gateway service name
  77622.  40h 16 BYTEs    gateway comm port address
  77623.  50h    WORD    primary logical unit number
  77624.  52h    WORD    secondary logical unit type
  77625.  54h    WORD    secondary logical unit number
  77626.  56h    WORD    printer assignment
  77627.  58h 50 BYTEs    keyboard definitions filename
  77628. --------V-610002-----------------------------
  77629. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  77630.     AX = 0002h
  77631. Desc:    switches off zoom and returns window to its original state
  77632. Range:    unknown
  77633. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  77634.       obtained by calling INT 16/AH=FFh
  77635.     not all vendors include the Tseng TSR which supports these functions
  77636. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  77637. --------N-610003SF00-------------------------
  77638. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  77639.     AX = 0003h subfn 00h
  77640.     DS:BX -> argument block (see #1877)
  77641. Return: AX = status (see #1876)
  77642. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  77643.  
  77644. (Table 1876)
  77645. Values for VINES function status:
  77646.  0000h    successful
  77647.  000Bh    invalid session ID
  77648.  000Ch    session not active
  77649.  000Dh    invalid request type
  77650.  000Eh    invalid parameters
  77651.  000Fh    out of heap space
  77652.  0010h    timeout on send
  77653.  0011h    Banyan communications error
  77654.  0012h    session not waiting for host
  77655.  0013h    session is active
  77656.  0014h    duplicate suspend session request
  77657.  0015h    no session suspended
  77658.  0016h    ring data buffer full
  77659.  0017h    printer error encountered
  77660.  0018h    Banyan communications error
  77661.  0019h    unable to make connection
  77662.  001Ah    no ring buffer specified at startup
  77663.  001Bh    service is down
  77664.  001Ch    invalid service name
  77665.  001Dh    service is closed
  77666.  001Eh    invalid connection name
  77667.  001Fh    max session limit reached for service
  77668.  0020h    access rights list for connection/dialout does not include this user
  77669.  0021h    service not responding
  77670.  0022h    missing telephone number
  77671.  
  77672. Format of VINES argument block:
  77673. Offset    Size    Description    (Table 1877)
  77674.  00h    BYTE    session ID (00h)
  77675.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  77676.  02h    WORD    -> user buffer ptr info area in caller's current DS (see #1878)
  77677.  
  77678. Format of user buffer ptr info area:
  77679. Offset    Size    Description    (Table 1878)
  77680.  00h    WORD    flags
  77681.         0000h don't read interface's data buffer
  77682.         0001h read data buffer
  77683.  02h    DWORD    pointer to ring buffer
  77684.  06h    WORD    length of ring buffer
  77685.  08h    WORD    ring buffer offset to last byte read by caller
  77686.  0Ah    DWORD    pointer to WORD containing offset of last byte
  77687.           in ring buffer filled
  77688.  0Eh    DWORD    pointer to screen buffer
  77689.  12h    DWORD    pointer to field containing cursor position
  77690.  16h    DWORD    pointer to terminal status area (see #1879)
  77691.  
  77692. Format of VINES terminal status area:
  77693. Offset    Size    Description    (Table 1879)
  77694.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  77695.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  77696.  02h    BYTE    current keypad mode (VT100,VT52 only)
  77697.         4Eh ("N") numeric mode
  77698.         41h ("A") application mode
  77699.  03h  4 BYTEs    current state of LEDs (VT100 only)
  77700.         00h off
  77701.         01h on
  77702.  07h    WORD    line error count
  77703.  09h    WORD    primary error code (see #1880)
  77704.  0Bh    WORD    secondary error code
  77705.  
  77706. (Table 1880)
  77707. Values for VINES primary error code:
  77708.  0000h    no error
  77709.  0001h    unable to make connection
  77710.  0002h    communications error, restart session
  77711.  0003h    async terminal emulation service unavailable
  77712.  0004h    lost carrier
  77713.  0005h    all matching lines busy
  77714.  0006h    no lines defined for connection name
  77715.  0007h    no dial lines available on server
  77716.  0008h    no matching dial lines available
  77717.  0009h    out of heap space
  77718.  000Ah    service error encountered
  77719.  000Bh    timed out waiting to connect
  77720.  000Ch    communications error
  77721.  000Dh    communications error
  77722.  000Eh    host wants file transferred to/from PC
  77723.  000Fh    host software changed session parameter
  77724.  0010h    host software changed tap settings
  77725.  0011h    host software changed LED indicator
  77726.  0012h    host software changed display background (secondary error code 00h for
  77727.       white on black, 01h for black on white)
  77728.  0013h    host software changed display option (secondary error code 00h for off,
  77729.       01h for on)
  77730.  0014h    communications error
  77731.  0015h    communications error
  77732.  0016h    unable to make connection
  77733.  0017h    unable to make connection
  77734. --------N-610003SF01-------------------------
  77735. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  77736.     AX = 0003h subfn 01h
  77737.     DS:BX -> argument block (see #1881)
  77738. Return: AX = status (see #1876)
  77739. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  77740.  
  77741. Format of VINES argument block for Function 0003h subfunction 01h:
  77742. Offset    Size    Description    (Table 1881)
  77743.  00h    BYTE    session ID (00h)
  77744.  01h    BYTE    01h (function "send to host")
  77745.  02h    BYTE    type
  77746.         00h ASCII byte
  77747.         01h ASCII string
  77748.         02h terminal function code
  77749.         03h up arrow
  77750.         04h down arrow
  77751.         05h left arrow
  77752.         06h right arrow
  77753.         07h break
  77754.  03h  N BYTEs    type-specific info (see #1882)
  77755.  
  77756. Format of type-specific info:
  77757. Offset    Size    Description    (Table 1882)
  77758. ---ASCII byte---
  77759.  03h    BYTE    byte to send to host
  77760. ---ASCII string---
  77761.  03h    WORD    length of string
  77762.  05h    WORD    pointer to string
  77763. ---terminal function code (VT52/VT100)---
  77764.  03h    BYTE    function code
  77765.         00h keypad 0
  77766.         01h keypad 1
  77767.         ...
  77768.         09h keypad 9
  77769.         0Ah keypad -
  77770.         0Bh keypad ,
  77771.         0Ch keypad .
  77772.         0Dh keypad ENTER
  77773.         0Eh PF1
  77774.         0Fh PF2
  77775.         10h PF3
  77776.         11h PF4
  77777. ---terminal function code (IBM3101)---
  77778.  03h    BYTE    function code
  77779.         00h PF1
  77780.         ...
  77781.         07h PF8
  77782.         08h Home
  77783. --------N-610003SF02-------------------------
  77784. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  77785.     AX = 0003h subfn 02h
  77786.     DS:BX -> argument block (see #1883)
  77787. Return: AX = status (see #1876)
  77788. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  77789.  
  77790. Format of VINES argument block for Function 0003h subfunction 02h:
  77791. Offset    Size    Description    (Table 1883)
  77792.  00h    BYTE    session ID (00h)
  77793.  01h    BYTE    02h (function "control monitor")
  77794.  02h    BYTE    display flag
  77795.         00h don't display data received from host
  77796.         01h display data
  77797. --------N-610003SF03-------------------------
  77798. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  77799.     AX = 0003h subfn 03h
  77800.     DS:BX -> argument block (see #1884)
  77801. Return: AX = status (see #1876)
  77802. Desc:    this function permits the caller to freeze/unfreeze the display and
  77803.       the ring buffer
  77804. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  77805.  
  77806. Format of VINES argument block for Function 0003h subfunction 03h:
  77807. Offset    Size    Description    (Table 1884)
  77808.  00h    BYTE    session ID (00h)
  77809.  01h    BYTE    03h (function "flow control data")
  77810.  02h    BYTE    flow control flag
  77811.         00h allow characters to be put into display or ring buffer
  77812.         01h don't place any more characters into display or ring buffer
  77813. --------N-610003SF04-------------------------
  77814. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  77815.     AX = 0003h subfn 04h
  77816.     DS:BX -> argument block (see #1885)
  77817. Return: AX = status (see #1876)
  77818. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  77819.  
  77820. Format of VINES argument block for ending active session:
  77821. Offset    Size    Description    (Table 1885)
  77822.  00h    BYTE    session ID (00h)
  77823.  01h    BYTE    04h (function "end active session")
  77824. --------N-610003SF05-------------------------
  77825. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  77826.     AX = 0003h subfn 05h
  77827.     DS:BX -> argument block (see #1886)
  77828. Return: AX = status (see #1876)
  77829. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  77830.  
  77831. Format of VINES argument block for setting session parameters:
  77832. Offset    Size    Description    (Table 1886)
  77833.  00h    BYTE    session ID (00h)
  77834.  01h    BYTE    05h (function "set session parameter")
  77835.  02h    BYTE    parameter number (see #1887)
  77836.  03h    BYTE    new parameter value
  77837.  
  77838. (Table 1887)
  77839. Values for parameter number:
  77840.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  77841.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  77842.  01h    parity (00h=none, 01h=odd, 02h=even)
  77843.  02h    duplex (00h=full, 01h=half)
  77844.  03h    character size (00h=7 bits, 01h=8 bits)
  77845.  04h    stop bits (00h=1, 01h=2)
  77846.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  77847.  07h    intercharacter delay in tenths of a second
  77848.  08h    interline delay in tenths of a second
  77849.  09h    auto linefeed (00h=no, 01h=yes)
  77850.  0Ah    filter control characters (00h=no, 01h=yes)
  77851.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  77852.  0Ch    auto wrap (00h=no, 01h=yes)
  77853.  0Dh    cursor shape (00h=underscore, 01h=block)
  77854.  0Eh    character set (00h=UK, 01h=US ASCII)
  77855.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  77856. --------N-610003SF06-------------------------
  77857. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  77858.     AX = 0003h subfn 06h
  77859.     DS:BX -> argument block (see #1888)
  77860. Return: AX = status (see #1876)
  77861. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  77862.  
  77863. Format of VINES argument block for getting session parameters:
  77864. Offset    Size    Description    (Table 1888)
  77865.  00h    BYTE    session ID (00h)
  77866.  01h    BYTE    06h (function "get session parameter")
  77867.  02h    BYTE    parameter number (see #1887)
  77868.  03h    BYTE    (return) current parameter value
  77869. --------N-610003SF07-------------------------
  77870. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  77871.     AX = 0003h subfn 07h
  77872.     DS:BX -> argument block (see #1889)
  77873. Return: AX = status (see #1876)
  77874. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  77875.  
  77876. Format of VINES argument block for setting tab settings:
  77877. Offset    Size    Description    (Table 1889)
  77878.  00h    BYTE    session ID (00h)
  77879.  01h    BYTE    07h (function "set tab settings")
  77880.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  77881.           each byte = 00h if no tab, 01h if tab at that position
  77882. --------N-610003SF08-------------------------
  77883. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  77884.     AX = 0003h subfn 08h
  77885.     DS:BX -> argument block (see #1890)
  77886. Return: AX = status (see #1876)
  77887. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  77888.  
  77889. Format of VINES argument block for getting tab settings:
  77890. Offset    Size    Description    (Table 1890)
  77891.  00h    BYTE    session ID (00h)
  77892.  01h    BYTE    08h (function "get tab settings")
  77893.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  77894.         each byte set to 00h if no tab, 01h if tab at that position
  77895. --------N-610003SF09-------------------------
  77896. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  77897.     AX = 0003h subfn 09h
  77898.     DS:BX -> argument block (see #1891)
  77899. Return: AX = status (see #1876)
  77900. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  77901.  
  77902. Format of VINES argument block for Function 0003h subfunction 09h:
  77903. Offset    Size    Description    (Table 1891)
  77904.  00h    BYTE    session ID (00h)
  77905.  01h    BYTE    09h (function "refresh emulation screen")
  77906. --------N-610003SF0A-------------------------
  77907. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  77908.     AX = 0003h subfn 0Ah
  77909.     DS:BX -> argument block (see #1892)
  77910. Return: AX = status (see #1876)
  77911. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  77912.  
  77913. Format of VINES argument block:
  77914. Offset    Size    Description    (Table 1892)
  77915.  00h    BYTE    session ID (00h)
  77916.  01h    BYTE    0Ah (function "suspend session temporarily")
  77917.  02h    WORD    size of session information to be saved
  77918.  04h    WORD    pointer to buffer in caller's DS
  77919. --------N-610003SF0B-------------------------
  77920. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  77921.     AX = 0003h subfn 0Bh
  77922.     DS:BX -> argument block (see #1893)
  77923. Return: AX = status (see #1876)
  77924. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  77925.  
  77926. Format of VINES argument block:
  77927. Offset    Size    Description    (Table 1893)
  77928.  00h    BYTE    session ID (00h)
  77929.  01h    BYTE    0Bh (function "restore previously suspended session")
  77930.  02h    WORD    size of buffer into which session info is restored
  77931.  04h    WORD    pointer to buffer in caller's DS
  77932. --------N-610003SF0C-------------------------
  77933. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  77934.     AX = 0003h subfn 0Ch
  77935.     DS:BX -> argument block (see #1894)
  77936. Return: AX = status (see #1876)
  77937. SeeAlso: AX=0003h/SF=00h
  77938.  
  77939. Format of VINES argument block:
  77940. Offset    Size    Description    (Table 1894)
  77941.  00h    BYTE    session ID (00h)
  77942.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  77943.  02h    BYTE    check_scroll_lock flag
  77944.         00h off
  77945.         01h on (display of host data stopped while ScrollLock on)
  77946. --------N-610003SF0D-------------------------
  77947. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  77948.     AX = 0003h subfn 0Dh
  77949.     DS:BX -> argument block (see #1895)
  77950. Return: AX = status (see #1876)
  77951. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  77952.  
  77953. Format of VINES argument block:
  77954. Offset    Size    Description    (Table 1895)
  77955.  00h    BYTE    session ID (00h)
  77956.  01h    BYTE    0Dh (function "exit emulation")
  77957. --------N-610003SF0E-------------------------
  77958. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  77959.     AX = 0003h subfn 0Eh
  77960.     DS:BX -> argument block (see #1896)
  77961. Return: AX = status (see #1876)
  77962. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  77963.  
  77964. Format of VINES argument block:
  77965. Offset    Size    Description    (Table 1896)
  77966.  00h    BYTE    session ID (00h)
  77967.  01h    BYTE    0Eh (function "interrupt on character from host")
  77968.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  77969.  06h    DWORD    stack pointer to use when call is made
  77970. --------N-610003SF0F-------------------------
  77971. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  77972.     AX = 0003h subfn 0Fh
  77973.     DS:BX -> argument block (see #1897)
  77974. Return: AX = status (see #1876)
  77975. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  77976.  
  77977. Format of VINES argument block:
  77978. Offset    Size    Description    (Table 1897)
  77979.  00h    BYTE    session ID (00h)
  77980.  01h    BYTE    0Fh (function "start a session")
  77981.  02h    WORD    pointer to information area in caller's current DS (see #1898)
  77982.  
  77983. Format of VINES information area:
  77984. Offset    Size    Description    (Table 1898)
  77985.  00h    WORD    length of service name
  77986.  02h    WORD    pointer to service name in caller's DS
  77987.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  77988.  05h    WORD    length of connection name/telephone number
  77989.  07h    WORD    pointer to connection name/telephone number
  77990. --------N-610003SF10-------------------------
  77991. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  77992.     AX = 0003h subfn 10h
  77993.     DS:BX -> argument block (see #1899)
  77994. Return: AX = status (see #1876)
  77995. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  77996.  
  77997. Format of VINES argument block:
  77998. Offset    Size    Description    (Table 1899)
  77999.  00h    BYTE    session ID (00h)
  78000.  01h    BYTE    10h (function "start/stop printing of data received from host)
  78001.  02h    WORD    print capture flag (00h=off, 01h=on)
  78002. --------N-610003SF11-------------------------
  78003. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  78004.     AX = 0003h subfn 11h
  78005.     DS:BX -> argument block (see #1900)
  78006. Return: AX = status (see #1876)
  78007. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  78008.  
  78009. Format of VINES argument block:
  78010. Offset    Size    Description    (Table 1900)
  78011.  00h    BYTE    session ID (00h)
  78012.  01h    BYTE    11h (function "get file transfer parameters")
  78013.  02h    WORD    pointer to info area in caller's current DS (see #1901)
  78014.  
  78015. Format of VINES info area:
  78016. Offset    Size    Description    (Table 1901)
  78017.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  78018.  01h    BYTE    direction flag (00h send, 01h receive)
  78019.  02h    BYTE    length of null-terminated PC filename
  78020.  03h    DWORD    pointer to null-terminated PC filename
  78021.  07h    BYTE    length of null-terminated host filename
  78022.  08h    DWORD    pointer to null-terminated host filename
  78023. --------N-610003SF12-------------------------
  78024. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  78025.     AX = 0003h subfn 12h
  78026.     DS:BX -> argument block (see #1902)
  78027. Return: AX = status (see #1876)
  78028. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  78029.  
  78030. Format of VINES argument block:
  78031. Offset    Size    Description    (Table 1902)
  78032.  00h    BYTE    session ID (00h)
  78033.  01h    BYTE    12h (function "get connection information")
  78034.  02h    WORD    offset of buffer for connection information (see #1903)
  78035.  
  78036. Format of VINES connection information:
  78037. Offset    Size    Description    (Table 1903)
  78038.  00h    WORD    length of service name (returned)
  78039.  02h    WORD    pointer to 64-byte buffer for service name
  78040.  04h    BYTE    type of connection
  78041.         00h connection name
  78042.         01h dialout
  78043.  05h    WORD    length of connection name/telephone number
  78044.  07h    WORD    pointer to 64-byte buffer for name/telno
  78045.  09h    BYTE    server line number being used (returned)
  78046. --------N-610003SF13-------------------------
  78047. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  78048.     AX = 0003h subfn 13h
  78049.     DS:BX -> argument block (see #1904)
  78050. Return: AX = status (see #1876)
  78051. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  78052.  
  78053. Format of VINES argument block:
  78054. Offset    Size    Description    (Table 1904)
  78055.  00h    BYTE    session ID (00h)
  78056.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  78057.  02h    BYTE    trace flag (00h=off, 01h=on)
  78058. --------N-610003SF14-------------------------
  78059. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  78060.     AX = 0003h subfn 14h
  78061.     DS:BX -> argument block (see #1905)
  78062. Return: AX = status (see #1876)
  78063. SeeAlso: AX=0003h/SF=0Eh
  78064.  
  78065. Format of VINES argument block:
  78066. Offset    Size    Description    (Table 1905)
  78067.  00h    BYTE    session ID (00h)
  78068.  01h    BYTE    14h (function "interrupt on message from host")
  78069.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  78070.  06h    DWORD    stack pointer to use when call is made
  78071. --------N-610003SF15-------------------------
  78072. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  78073.     AX = 0003h subfn 15h
  78074.     DS:BX -> argument block (see #1906)
  78075. Return: AX = status (see #1876)
  78076. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  78077.  
  78078. Format of VINES argument block:
  78079. Offset    Size    Description    (Table 1906)
  78080.  00h    BYTE    session ID (00h)
  78081.  01h    BYTE    15h (function "reset error")
  78082. --------V-610003-----------------------------
  78083. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  78084.     AX = 0003h
  78085. Return: AX = zoom factor
  78086. Desc:    returns the current zoom factor
  78087. Range:    unknown
  78088. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  78089.       obtained by calling INT 16/AH=FFh
  78090.     not all vendors include the Tseng TSR which supports these functions
  78091. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  78092. --------N-610004SF0008-----------------------
  78093. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  78094.     AX = 0004h subfn 0008h
  78095.     DS:DX -> request block (see #1907)
  78096. Return: AX = status
  78097.         0000h server ID returned in request block
  78098.         000Fh invalid drive
  78099.         0015h drive not ready
  78100.  
  78101. Format of VINES request block for getting server serial number:
  78102. Offset    Size    Description    (Table 1907)
  78103.  00h    WORD    0008h
  78104.  02h    WORD    drive number (0=default, 1=A, ...)
  78105.  04h  6 BYTEs    buffer for server ID
  78106. --------V-610004-----------------------------
  78107. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  78108.     AX = 0004h
  78109. Range:    unknown
  78110. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  78111.       panning and zooming via the numeric keypad.
  78112.     INT 61 is the default interrupt; the actual interrupt number can be
  78113.       obtained by calling INT 16/AH=FFh
  78114.     not all vendors include the Tseng TSR which supports these functions
  78115. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  78116. --------N-610005-----------------------------
  78117. INT 61 - Banyan VINES - PRINTER CONTROL
  78118.     AX = 0005h
  78119.     DS:DX -> request block (see #1908)
  78120. Return: AX = status
  78121.         0000h successful
  78122.         0001h network software not installed or incompatible
  78123. SeeAlso: INT 2F/AX=D702h
  78124.  
  78125. Format of VINES request block for printer control:
  78126. Offset    Size    Description    (Table 1908)
  78127.  00h    WORD    function
  78128.         0201h "endspool" all data for a print job has been sent
  78129.         0205h "getactive" get currently active printer port
  78130.  02h    WORD    number of active port (1-3)
  78131.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  78132.  06h    WORD    0000h
  78133. --------V-610005-----------------------------
  78134. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  78135.     AX = 0005h
  78136.     BX:CX -> buffer for window parameters (see #1909)
  78137. Range:    unknown
  78138. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  78139.       obtained by calling INT 16/AH=FFh
  78140.     not all vendors include the Tseng TSR which supports these functions
  78141. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  78142. SeeAlso: INT 16/AH=FFh"OPTIMA"
  78143.  
  78144. Format of Optima 1024 window parameters:
  78145. Offset    Size    Description    (Table 1909)
  78146.  00h    WORD    X start of zoom window
  78147.  02h    WORD    Y start of zoom window
  78148.  04h    WORD    X end of zoom window
  78149.  06h    WORD    Y end of zoom window
  78150.  08h    WORD    current zoom factor
  78151.  0Ah    WORD    zoom offset start X
  78152.  0Ch    WORD    zoom offset start Y
  78153. --------V-610006-----------------------------
  78154. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  78155.     AX = 0006h
  78156.     BX:CX -> zoom window description (see #1910)
  78157. Range:    unknown
  78158. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  78159.       factor
  78160.     INT 61 is the default interrupt; the actual interrupt number can be
  78161.       obtained by calling INT 16/AH=FFh
  78162.     not all vendors include the Tseng TSR which supports these functions
  78163. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  78164. SeeAlso: INT 16/AH=FFh"OPTIMA"
  78165.  
  78166. Format of Optima 1024 zoom window description:
  78167. Offset    Size    Description    (Table 1910)
  78168.  00h    WORD    X start of zoom window
  78169.  02h    WORD    Y start of zoom window
  78170.  04h    WORD    X end of zoom window
  78171.  06h    WORD    Y end of zoom window
  78172. --------V-610007-----------------------------
  78173. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  78174.     AX = 0007h
  78175. Return: AX = current state (0000h/0001h)
  78176. Desc:    returns the current toggle state of the application (END) key in
  78177.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  78178.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  78179. Notes:    In specify mode, the END key has been reserved for applications.
  78180.     INT 61 is the default interrupt; the actual interrupt number can be
  78181.       obtained by calling INT 16/AH=FFh
  78182.     not all vendors include the Tseng TSR which supports these functions
  78183. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  78184. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
  78185. --------N-610007BX0002-----------------------
  78186. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  78187.     AX = 0007h
  78188.     BX = 0002h
  78189.     DS:DX -> StreetTalk service name
  78190.     DS:DI -> port record block (see #1912)
  78191. Return: AX = status (see #1911)
  78192. SeeAlso: AX=0007h/BX=0004h
  78193.  
  78194. (Table 1911)
  78195. Values for VINES function status:
  78196.  0000h    successful
  78197.  0001h    PC network software not installed or incompatible
  78198.  03E9h    incorrect name syntax
  78199.  03EAh    organization name too long
  78200.  03EBh    group name too long
  78201.  03ECh    item name too long
  78202.  03EDh    StreetTalk name too long
  78203.  03F3h    organization not found
  78204.  03F4h    group not found
  78205.  03F5h    StreetTalk name not found
  78206.  03F8h    not a StreetTalk name
  78207.  0409h    modify access denied
  78208.  040Dh    appropriate StreetTalk name unavailable
  78209.  
  78210. Format of VINES port record block:
  78211. Offset    Size    Description    (Table 1912)
  78212.  00h    WORD    number of 17-byte elements
  78213.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  78214.         (see #1835 for port format)
  78215. --------N-610007BX0004-----------------------
  78216. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  78217.     AX = 0007h
  78218.     BX = 0004h
  78219.     DS:DX -> StreetTalk name of service
  78220.     DS:DI -> port record block (see #1913)
  78221. Return: AX = status (see #1911)
  78222. SeeAlso: AX=0007h/BX=0002h
  78223.  
  78224. Format of VINES port record block:
  78225. Offset    Size    Description    (Table 1913)
  78226.  00h    WORD    number of 17-byte elements
  78227.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  78228.         (see #1835 for port format)
  78229. --------N-610007BX0005-----------------------
  78230. INT 61 - Banyan VINES - GET USER NAME
  78231.     AX = 0007h
  78232.     BX = 0005h
  78233.     DS:DX -> 64-byte buffer for user's StreetTalk name
  78234. Return: AX = status
  78235.         0000h successful
  78236.         0001h network software not installed or incompatible
  78237. Note:    if no user logged in, first byte of returned name will be 00h
  78238. SeeAlso: AX=0007h/BX=0007h
  78239. --------N-610007BX0006-----------------------
  78240. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  78241.     AX = 0007h
  78242.     BX = 0006h
  78243.     SI = error code (>100)
  78244.     DS:DX -> 80-byte buffer for error text
  78245. Return: AX = status
  78246.         0000h successful
  78247.         0001h network software not installed or incompatible
  78248. --------N-610007BX0007-----------------------
  78249. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  78250.     AX = 0007h
  78251.     BX = 0007h
  78252.     DS:DX -> NiceName block (see #1914)
  78253. Return: AX = status (see #1911)
  78254. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  78255.  
  78256. Format of VINES NiceName block:
  78257. Offset    Size    Description    (Table 1914)
  78258.  00h    WORD    type of name
  78259.         0064h (100) organization
  78260.         00C8h (200) group
  78261.         012Ch (300) item
  78262.  02h    WORD    pointer to ASCIZ input name
  78263.  04h    WORD    pointer to 64-byte buffer for output name
  78264. --------N-610007BX0008-----------------------
  78265. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  78266.     AX = 0007h
  78267.     BX = 0008h
  78268.     DS:DX -> enumerate block (see #1915)
  78269. Return: AX = status
  78270.         0000h successful
  78271.         0411h all matching names have been returned
  78272.         0412h some groups unavailable, all available matches returned
  78273. Note:    each program using this call should continue until a nonzero status
  78274.       is returned; otherwise, some resources will not be freed for several
  78275.       hours
  78276. SeeAlso: AX=0007h/BX=0007h
  78277.  
  78278. Format of VINES enumerate block:
  78279. Offset    Size    Description    (Table 1915)
  78280.  00h    WORD    return code
  78281.  02h    WORD    pointer to pattern string
  78282.  04h    WORD    enumerate type
  78283.         0064h (100) organization
  78284.         00C8h (200) group
  78285.         012Ch (300) item
  78286.  06h    WORD    enumerate class
  78287.         0000h unspecified (return all matching items)
  78288.         0001h user names
  78289.         0002h service names
  78290.         0003h list names
  78291.         0004h nicknames
  78292.  08h    WORD    pointer to category criteria block (see #1916) or 0
  78293.  0Ah    WORD    pointer to array of 64-byte returned names
  78294.  0Ch    WORD    number of names returned
  78295.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  78296.           call)
  78297.  
  78298. Format of category criteria block:
  78299. Offset    Size    Description    (Table 1916)
  78300.  00h    WORD    exclude flag
  78301.         0000h return only items with the specified categories
  78302.         0001h return all items except those with the given categories
  78303.  02h    WORD    number of categories
  78304.  04h    WORD    category 1 value
  78305.  06h    WORD    category 2 value
  78306.         ...
  78307.  
  78308. (Table 1917)
  78309. Values for common VINES service categories:
  78310.  0002h    file service
  78311.  0003h    print service
  78312.  0004h    mail service
  78313.  0005h    StreetTalk
  78314.  0006h    time service
  78315.  0008h    semaphore service
  78316.  0009h    3270/SNA service
  78317.  000Ah    asynchronous terminal emulation service
  78318.  000Ch    NETBIOS service
  78319.  000Dh    PC-based service
  78320. --------V-610008-----------------------------
  78321. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  78322.     AX = 0008h
  78323.     BX = X start of zoom offset
  78324.     CX = Y start of zoom offset
  78325. Desc:    specifies the first byte of video memory to appear in the zoom window
  78326. Range:    unknown
  78327. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  78328.       obtained by calling INT 16/AH=FFh
  78329.     not all vendors include the Tseng TSR which supports these functions
  78330. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  78331. --------N-610008BX0002-----------------------
  78332. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  78333.     AX = 0008h
  78334.     BX = 0002h
  78335.     CX = message display flags (see #1918)
  78336.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  78337. Return: AX = status
  78338.         0000h successful
  78339.         000Bh message display function currently busy
  78340.         000Ch message queue full
  78341. Note:    queues up to three messages to be displayed on the bottom line
  78342. SeeAlso: AX=0008h/BX=0003h
  78343.  
  78344. Bitfields for VINES message display flags:
  78345. Bit(s)    Description    (Table 1918)
  78346.  0    message will remain on screen until user presses ^X
  78347.  1    ring bell after displaying message
  78348.  2    blink
  78349. --------N-610008BX0003-----------------------
  78350. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  78351.     AX = 0008h
  78352.     BX = 0003h
  78353.     DS:DX -> request block (see #1919)
  78354. Return: AX = status
  78355.         0000h successful
  78356.         0001h network software not installed or incompatible
  78357. Notes:    message handler should not call BIOS or DOS functions, and should
  78358.       either call next handler or simply return
  78359.     to stop intercepting messages, set prev and next request blocks to
  78360.       point at each other
  78361. SeeAlso: AX=0008h/BX=0002h
  78362.  
  78363. Format of VINES request block for 25-th line messages:
  78364. Offset    Size    Description    (Table 1919)
  78365.  00h    DWORD    pointer to user-written message handler
  78366.  04h    DWORD    pointer to next request block (filled in by VINES)
  78367.  08h    DWORD    pointer to previous request block (filled in by VINES)
  78368.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see #1920)
  78369.  
  78370. Format of message storage area:
  78371. Offset    Size    Description    (Table 1920)
  78372.  00h 16 BYTEs    IPC port of message sender (see #1835)
  78373.  10h    BYTE    message flags
  78374.  11h    WORD    reserved
  78375.  13h    BYTE    length of message
  78376.  14h 80 BYTEs    message text
  78377. --------N-61000A-----------------------------
  78378. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  78379.     AX = 000Ah
  78380. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  78381.       which is loaded second.  The first interface loaded will use AX=0002h
  78382. SeeAlso: INT 61/AX=0002h
  78383. --------N-6101-------------------------------
  78384. INT 61 - Banyan VINES - CHECK SERVICE
  78385.     AH = 01h
  78386.     AL = service ID (see #1921)
  78387. Return: AX = status
  78388.         0000h installed
  78389.         0001h not installed
  78390.         0002h invalid ID
  78391.  
  78392. (Table 1921)
  78393. Values for VINES service ID:
  78394.  01h    communications
  78395.  02h    primary 3270 emulation
  78396.  03h    async terminal emulation
  78397.  04h    file deflection
  78398.  07h    StreetTalk
  78399.  08h    environment
  78400.  0Ah    secondary 3270 emulation
  78401.  0Bh    semaphore service
  78402.  0Ch    3270 emulation active status
  78403.  0Dh    3270 keyboard interrupt simulator
  78404. --------N-6101--BX0000-----------------------
  78405. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  78406.     AH = 01h
  78407.     BX = 0000h
  78408.     DH = tag number
  78409.     DL = device number
  78410.     DS:SI -> buffer to send to kernel
  78411.     ES:DI -> integer containing size of buffer
  78412. Return: CF clear if successful
  78413.     CF set on error
  78414.         AX = error code (see INT 61"PC/TCP")
  78415. Range:    INT 20 to INT E0, selected by configuration
  78416. Notes:    there are a large number of tags available; the items returned
  78417.       all refer to local kernel configuration, and are not needed in
  78418.       normal use.
  78419.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78420. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  78421. --------N-6102-------------------------------
  78422. INT 61 - Banyan VINES - GET REVISION NUMBER
  78423.     AH = 02h
  78424.     DS:DX -> 2-byte buffer for result
  78425. Return: AX = 0000h installed
  78426.         DS:DX buffer contains revision number as
  78427.         10000d * major_ver + 100d * minor_ver + patch_revision
  78428. --------N-6102--BX0000-----------------------
  78429. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  78430.     AH = 02h
  78431.     BX = 0000h
  78432.     DH = tag number
  78433.     DL = device number
  78434.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  78435.     ES:DI -> integer containing size of buffer
  78436. Return: CF clear if successful
  78437.         Data loaded into specified buffer, and size value altered
  78438.     CF set on error
  78439.         AX = error code (see INT 61"PC/TCP")
  78440. Range:    INT 20 to INT E0, selected by configuration
  78441. Notes:    there are a large number of tags available; the items returned
  78442.       all refer to local kernel configuration, and are not needed in
  78443.       normal use.
  78444.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78445. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  78446. --------N-6105-------------------------------
  78447. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  78448.     AH = 05h
  78449.     BX = network descriptor
  78450. Return: CF clear if successful
  78451.         DX:AX = Internet address of ND
  78452.     CF set on error
  78453.         AX = error code (see INT 61"PC/TCP")
  78454. Range:    INT 20 to INT E0, selected by configuration
  78455. Notes:    the installation check consists of testing for the signature "TCPTSR"
  78456.       three bytes beyond the start of the interrupt handler
  78457. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  78458. SeeAlso: INT 63/AH=25h"BW-TCP"
  78459. --------N-6106-------------------------------
  78460. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  78461.     AH = 06h
  78462.     BX = network descriptor (must be allocated and open)
  78463.     DS:SI -> 38-byte buffer for interface statistics (see #1922)
  78464. Return: CF clear if successful
  78465.         buffer filled
  78466.     CF set on error
  78467.         AX = error code (see INT 61"PC/TCP")
  78468. Desc:    returns the statistics relevant to the particular network interface
  78469.        used by the specified network descriptor
  78470. Range:    INT 20 to INT E0, selected by configuration
  78471. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  78472.  
  78473. Format of PC/TCP interface statistics:
  78474. Offset    Size    Description    (Table 1922)
  78475.  00h    WORD    interface class (e.g. 802.3)
  78476.  02h    WORD    type (manufacturer) of interface
  78477.  04h    WORD    interface number
  78478.  06h    DWORD    (big-endian) IP address of interface
  78479.  0Ah    DWORD    subnet mask
  78480.  0Eh    WORD    0001h if interface is up
  78481.  10h    DWORD    total packets received
  78482.  14h    DWORD    total packets sent
  78483.  18h    DWORD    receive errors
  78484.  1Ch    DWORD    send errors
  78485.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  78486.  22h    DWORD    pointer to local net address
  78487. --------N-6107-------------------------------
  78488. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  78489.     AH = 07h
  78490.     BX = local network descriptor
  78491. Return: CF clear if successful
  78492.         AX = global network descriptor
  78493.     CF set on error
  78494.         AX = error code (see INT 61"PC/TCP")
  78495. Notes:    the new network descriptor can be accessed from all processes and is
  78496.       independent of DOS
  78497.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78498. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  78499. SeeAlso: INT 61/AH=29h
  78500. --------N-6108-------------------------------
  78501. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  78502.     AH = 08h
  78503.     BX = network descriptor
  78504. Return: CF clear if successful
  78505.         AX = 0000h (BWPCTCP shim)
  78506.     CF set on error
  78507.         AX = error code (see INT 61"PC/TCP")
  78508. Range:    INT 20 to INT E0, selected by configuration
  78509. Note:    the descriptor will be closed and resources released.  If a stream
  78510.       descriptor, the protocol (FIN etc) is completed unless the
  78511.       non-blocking option has been set.
  78512. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  78513. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  78514. --------N-6109-------------------------------
  78515. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  78516.     AH = 09h
  78517. Return: CF clear
  78518. Range:    INT 20 to INT E0, selected by configuration
  78519. Notes:    this call performs function 08h on every non-global network descriptor.
  78520.       Global descriptors must be released individually.
  78521. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  78522. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  78523. --------N-610A-------------------------------
  78524. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  78525.     AH = 0Ah
  78526.     ???
  78527. Return: ???
  78528. Notes:    this function is described as "unused" in the v2.05 and v2.2
  78529.       documentation
  78530.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78531. SeeAlso: AH=0Bh
  78532. --------N-610B-------------------------------
  78533. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  78534.     AH = 0Bh
  78535.     ???
  78536. Return: ???
  78537. Range:    INT 20 to INT E0, selected by configuration
  78538. Notes:    this function is described as "unused" in the v2.05 and v2.2
  78539.       documentation
  78540.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78541. SeeAlso: AH=0Ah
  78542. --------N-610C-------------------------------
  78543. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  78544.     AH = 0Ch
  78545.     BX = network descriptor or one of the following:
  78546.         FFFCh for kernel ICMP statistics
  78547.         FFFDh for kernel UDP statistics
  78548.         FFFEh for kernel IP statistics
  78549.         FFFFh for kernel TCP statistics
  78550.     DS:DX -> 64-byte buffer
  78551. Return: CF clear if successful
  78552.         buffer filled
  78553.     CF set on error
  78554.         AX = error code (see INT 61"PC/TCP")
  78555. Notes:    the fields filled in for a network descriptor depend on the protocol
  78556.       family used by that descriptor's connection
  78557.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78558. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78559.  
  78560. Format of PC/TCP kernel TCP statistics:
  78561. Offset    Size    Description    (Table 1923)
  78562.  00h 16 BYTEs    unused
  78563.  10h    DWORD    bytes sent
  78564.  14h    DWORD    bytes received
  78565.  18h  8 BYTEs    unused
  78566.  20h    DWORD    packets sent
  78567.  24h    DWORD    packets received
  78568.  28h    DWORD    bad checksums
  78569.  2Ch    DWORD    count of window ignored by remote
  78570.  30h    DWORD    timeouts
  78571.  34h    DWORD    resets
  78572.  38h    DWORD    duplicate packets
  78573.  3Ch    DWORD    retransmits
  78574.  
  78575. Format of PC/TCP kernel IP statistics:
  78576. Offset    Size    Description    (Table 1924)
  78577.  00h  8 BYTEs    unused
  78578.  08h    DWORD    invalid IP header length errors
  78579.  0Ch    DWORD    protocol errors (unwanted packets)
  78580.  10h    DWORD    duplicate fragments received
  78581.  14h    DWORD    bad fragments received
  78582.  18h    DWORD    security errors
  78583.  1Ch    DWORD    count of bad IP addresses received
  78584.  20h    DWORD    packets sent
  78585.  24h    DWORD    packets received
  78586.  28h    DWORD    bad checksums received
  78587.  2Ch    DWORD    total IP protocol errors
  78588.  30h    DWORD    fragmentation errors
  78589.  34h    DWORD    IP packets discarded + bad security + bad fragments
  78590.  38h    DWORD    fragments received
  78591.  3Ch  4 BYTEs    unused
  78592.  
  78593. Format of PC/TCP kernel UDP statistics:
  78594. Offset    Size    Description    (Table 1925)
  78595.  00h 28 BYTEs    unused
  78596.  1Ch    DWORD    packets dropped for lack of buffers
  78597.  20h    DWORD    packets sent
  78598.  24h    DWORD    packets received
  78599.  28h    DWORD    bad checksums
  78600.  2Ch    DWORD    port not listening errors
  78601.  30h  4 BYTEs    unused
  78602.  34h    DWORD    truncated receives
  78603.  38h  8 BYTEs    unused
  78604.  
  78605. Format of PC/TCP kernel ICMP statistics:
  78606. Offset    Size    Description    (Table 1926)
  78607.  00h    DWORD    "TimeEx" sent
  78608.  04h    DWORD    "TimeEx" received
  78609.  08h    DWORD    "ParamProb" sent
  78610.  0Ch    DWORD    "ParamProb" received
  78611.  10h    DWORD    redirects received
  78612.  14h    DWORD    source quenches received
  78613.  18h    DWORD    ICMP Echo Requests ("ping") sent
  78614.  1Ch    DWORD    ICMP Echo Requests received
  78615.  20h    DWORD    packets sent
  78616.  24h    DWORD    packets received
  78617.  28h    DWORD    bad packets received
  78618.  2Ch    DWORD    "DestUn" received
  78619.  30h    DWORD    packet send errors
  78620.  34h    DWORD    "DestUn" sent
  78621.  38h    DWORD    ICMP Echo replies received
  78622.  3Ch    DWORD    ICMP Echo replies sent
  78623. --------N-610D-------------------------------
  78624. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  78625.     AH = 0Dh
  78626.     BX = possible network descriptor
  78627. Return: CF clear if valid
  78628.     CF set on error
  78629.         AX = error code (see INT 61"PC/TCP")
  78630. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  78631. SeeAlso: INT 61/AH=22h
  78632. --------N-610E-------------------------------
  78633. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  78634.     AH = 0Eh
  78635.     BX = maximum value of network descriptor for which to return info
  78636.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  78637.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  78638. Return: CF clear
  78639. Range:    INT 20 to INT E0, selected by configuration
  78640. Notes:    bits in the DS:DX buffer are set if the corresponding network
  78641.       descriptor may be read without blocking; bits in the ES:DI buffer
  78642.       are set if the corresponding network descriptor may be written
  78643.       without blocking.  This implies that the network descriptor has
  78644.       opened correctly and the protocol initialized.
  78645.     the installation check consists of testing for the signature "TCPTSR"
  78646.       three bytes beyond the start of the interrupt handler
  78647. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78648. --------N-610F-------------------------------
  78649. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  78650.     AH = 0Fh
  78651. Return: CF clear
  78652.     AX = version (AH = major, AL = minor)
  78653.     BX = patch level
  78654. Notes:    patch levels are no longer used starting with version 2.10; instead,
  78655.       the minor version level is incremented.
  78656.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  78657.       set BX
  78658. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78659. --------N-6110-------------------------------
  78660. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  78661.     AH = 10h
  78662. Return: CF clear if successful
  78663.     CF set on error
  78664.         AX = error code (see INT 61"PC/TCP")
  78665. Range:    INT 20 to INT E0, selected by configuration
  78666. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78667. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78668. --------N-6111-------------------------------
  78669. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  78670.     AH = 11h
  78671. Return: CF clear
  78672.     AX = previous state
  78673.         0000h async calls were already disabled
  78674.         else  async calls were enabled
  78675. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  78676. --------N-6112-------------------------------
  78677. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  78678.     AH = 12h
  78679. Return: CF clear
  78680.     AX = previous state
  78681.         0000h async calls were disabled
  78682.         else  async calls were already enabled
  78683. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  78684. --------N-6113-------------------------------
  78685. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  78686.     AH = 13h
  78687.     BX = network descriptor (FFFFh for automatic net_getdesc)
  78688.     DX = protocol (see #1927)
  78689.     DS:SI -> buffer for "addr" structure (see #1928)
  78690. Return: CF clear if successful
  78691.         AX = network descriptor used or allocated
  78692.     CF set on error
  78693.         AX = error code (see INT 61"PC/TCP")
  78694. Notes:    resets the connection with AH=19h in various cases
  78695.     will wait for protocol on stream connections unless non-blocking was
  78696.       set with AH=20h
  78697. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  78698. SeeAlso: INT 63/AH=14h"BW-TCP"
  78699.  
  78700. (Table 1927)
  78701. Values for PC/TCP protocol:
  78702.  0001h    raw net (undocumented)
  78703.  0002h    raw IP
  78704.  0003h    datagram (UDP)
  78705.  0004h    stream (TCP)
  78706.  0005h    raw ICMP
  78707.  
  78708. Format of structure "addr":
  78709. Offset    Size    Description    (Table 1928)
  78710.  00h    DWORD    Internet address (network order)
  78711.  04h    WORD    remote socket number (network order)
  78712.  06h    WORD    local socket number (network order) 0000h means "you choose"
  78713.  08h    BYTE    protocol (see #1927)
  78714. --------N-6114-------------------------------
  78715. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  78716.     AH = 14h
  78717.     BX = network descriptor
  78718. Return: CF set
  78719.         AX = 0018h (see INT 61"PC/TCP")
  78720. Notes:    displays error message "Illegal system call!  Please upgrade your
  78721.       PCserver software" to standard output
  78722.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78723. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  78724. --------N-6115-------------------------------
  78725. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  78726.     AH = 15h
  78727.     ???
  78728. Return: ???
  78729. Notes:    this function is described as "unused" in the v2.2 documentation
  78730.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78731. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  78732. --------N-6116-------------------------------
  78733. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  78734.     AH = 16h
  78735.     BX = network descriptor
  78736.     DS:DX -> 9-byte buffer for "addr" structure (see #1928)
  78737. Return: CF clear if successful
  78738.         buffer filled
  78739.     CF set on error
  78740.         AX = error code (see INT 61"PC/TCP")
  78741. Range:    INT 20 to INT E0, selected by configuration
  78742. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78743. --------N-6117-------------------------------
  78744. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  78745.     AH = 17h
  78746. Return: CF clear if successful
  78747.     CF set on error
  78748.         AX = error code (see INT 61"PC/TCP")
  78749. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  78750.       in v2.1+, this function calls AH=01h which should be used instead
  78751.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78752. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  78753. --------N-6118-------------------------------
  78754. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  78755.     AH = 18h
  78756.     BX = network descriptor
  78757. Return: CF clear if successful
  78758.     CF set on error
  78759.         AX = error code (see INT 61"PC/TCP")
  78760. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  78761.       although the connection remains open
  78762. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  78763. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  78764. --------N-6119-------------------------------
  78765. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  78766.     AH = 19h
  78767.     BX = network descriptor
  78768. Return: CF clear if successful
  78769.     CF set on error
  78770.         AX = error code (see INT 61"PC/TCP")
  78771. Desc:    immediately destroys the specified connection
  78772. Note:    send a TCP "RST" command if a stream connection is open
  78773. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  78774. --------N-611A-------------------------------
  78775. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  78776.     AH = 1Ah
  78777.     BX = network descriptor
  78778.     CX = number of bytes to transmit (0000h allowed)
  78779.     DX = send options (see #1929)
  78780.     DS:SI -> data to be written
  78781. Return: CF clear if successful
  78782.         AX = number of bytes actually written
  78783.         DX = ???
  78784.     CF set on error
  78785.         AX = error code (see INT 61"PC/TCP")
  78786. Range:    INT 20h to INT E0h, selected by configuration
  78787. Notes:    the installation check consists of testing for the signature "TCPTSR"
  78788.       three bytes beyond the start of the interrupt handler
  78789. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  78790. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  78791.  
  78792. Bitfields for PC/TCP send options:
  78793. Bit(s)    Description    (Table 1929)
  78794.  0    signal "URG"ent data
  78795.  3    attempt rerouting on non-stream calls if first attempt fails
  78796.  4    send data with PUSH flag (no override of Nagle) (see option 0Ch)
  78797.  5    fail rather than truncating datagram
  78798.  6    fail rather than blocking
  78799.  7    broadcast packet
  78800. --------N-611B-------------------------------
  78801. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  78802.     AH = 1Bh
  78803.     BX = network descriptor
  78804.     CX = maximum number of bytes to read
  78805.     DX = receive options (see #1930)
  78806.     DS:SI -> buffer for data
  78807.     ES:DI -> "addr" structure (see #1928) for remote from which to read
  78808.         0000h:0000h for any
  78809. Return: CF clear if successful
  78810.         AX = number of bytes actually read
  78811.         DX = ???
  78812.     CF set on error
  78813.         AX = error code (see INT 61"PC/TCP")
  78814. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  78815.  
  78816. Bitfields for PC/TCP receive options:
  78817. Bit(s)    Description    (Table 1930)
  78818.  1    do not remove data from queue, just copy it
  78819.  2    do not copy data, just remove it from queue
  78820.  5    fail if datagram would be truncated
  78821.  6    do not block, return error if no data available
  78822. Note:    special case for UDP: if both 1 and 2 set, return number of datagrams
  78823. --------N-611C-------------------------------
  78824. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  78825.     AH = 1Ch
  78826.     BX = network descriptor
  78827.     CX = number of bytes to transmit (0000h allowed)
  78828.     DX = send options (see #1929)
  78829.     DS:SI -> data to be written
  78830.     ES:DI -> "addr" structure (see #1928)
  78831. Return: CF clear if successful
  78832.         AX = number of bytes actually written
  78833.         DX = ???
  78834.     CF set on error
  78835.         AX = error code (see INT 61"PC/TCP")
  78836. Note:    this function differs from AH=1Ah in that the address and socket
  78837.       numbers can be overridden
  78838. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  78839. SeeAlso: INT 63/AH=21h"BW-TCP"
  78840. --------N-611D-------------------------------
  78841. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  78842.     AH = 1Dh
  78843.     BX = network descriptor
  78844.     CX = maximum number of bytes to read
  78845.     DX = receive options (see #1929)
  78846.     DS:SI -> buffer for received data
  78847.     ES:DI -> 9-byte buffer containing "addr" structure (see #1928)
  78848. Return: CF clear if successful
  78849.         AX = number of bytes read
  78850.         DX = ???
  78851.     CF set on error
  78852.         AX = error code (see INT 61"PC/TCP")
  78853. Notes:    this function can read from any host or a designated host depending
  78854.       on settings in the "addr" structure
  78855.     only for use with datagram or Raw descriptors
  78856. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  78857. --------N-611E-------------------------------
  78858. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  78859.     AH = 1Eh
  78860.     BX = network descriptor
  78861. Return: CF clear if successful
  78862.     CF set on error
  78863.         AX = error code (see INT 61"PC/TCP")
  78864. Range:    INT 20 to INT E0, selected by configuration
  78865. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  78866.       if necessary
  78867.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78868. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78869. --------N-611F-------------------------------
  78870. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  78871.     AH = 1Fh
  78872.     BX = network descriptor
  78873.     CX = event type (see #1931)
  78874.     DS:SI -> event handler routine (see #1932)
  78875.     ES:DI = 32-bit hint passed to handler
  78876. Return: CF clear if successful
  78877.         DS:DX -> previous handler
  78878.     CF set on error
  78879.         AX = error code (see INT 61"PC/TCP")
  78880. Note:    ICMP messages do not trigger events on stream connections
  78881. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  78882.  
  78883. (Table 1931)
  78884. Values for PC/TCP event type:
  78885.  00h    alarm
  78886.  01h    open (successfully opened stream connection)
  78887.  02h    receive (data available)
  78888.  03h    transmit (ACK received on stream connection)
  78889.  04h    transmit flush???
  78890.  05h    foreign close (remote host closed data connection)
  78891.  06h    close (local host closed connection and protocol is complete)
  78892.  07h    error (error code passed to handler as arg)
  78893.  
  78894. (Table 1932)
  78895. Values PC/TCP user event handler is called with:
  78896.     BX = network descriptor
  78897.     CX = event type (see #1931)
  78898.     DS:DX -> arg
  78899.     ES:DI = 32-bit hint value
  78900.     STACK:    small stack, possibly the DOS stack
  78901. --------N-6120-------------------------------
  78902. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  78903.     AH = 20h
  78904.     BX = network descriptor
  78905.     CX = length of buffer (usually 04h)
  78906.     DS:DX -> buffer containing option
  78907.     SI = (ignored by v2.2-)
  78908.     DI = option to set (see #1933)
  78909. Return: CF clear if successful
  78910.     CF set on error
  78911.         AX = error code (see INT 61"PC/TCP")
  78912. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  78913.       others return CF clear
  78914. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  78915.  
  78916. (Table 1933)
  78917. Values for PC/TCP option to get or set:
  78918.  01h    set non-blocking mode if non-zero
  78919.  02h    timeout of call in milliseconds
  78920.  03h    user-defined 4-byte magic cookie (not used by kernel)
  78921.  04h    TCP window or UDP buffer count (WORD, unsigned)
  78922.  06h    do TCP keep-alives if non-zero
  78923.  09h    (v2.1+) set IP precedence
  78924.  0Ah    (v2.1+) set IP type of service
  78925.  0Bh    use a privileged port if port = 0
  78926.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  78927. Note:    use "C" true or false values for boolean options
  78928. --------N-6121-------------------------------
  78929. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  78930.     AH = 21h
  78931.     BX = network descriptor
  78932.     CX = length of buffer
  78933.     DS:DX -> buffer for return values
  78934.     SI = 0004h (ignored by v2.2-)
  78935.     DI = option (see #1933)
  78936. Return: CF clear if successful
  78937.         DS:DX -> value (usually 32 bits) returned by selected option
  78938.     CF set on error
  78939.         AX = error code (see INT 61"PC/TCP")
  78940. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  78941. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  78942. --------N-6122-------------------------------
  78943. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  78944.     AH = 22h
  78945. Return: CF clear if successful
  78946.         AX = network descriptor
  78947.     CF set on error
  78948.         AX = error code (see INT 61"PC/TCP")
  78949. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  78950.       is made to allocate this as a file descriptor.  Hence a number may
  78951.       not refer to a PC/TCP network descriptor and a DOS file handle
  78952.       simultaneously.
  78953. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  78954. --------N-6123-------------------------------
  78955. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  78956.     AH = 23h
  78957.     BX = network descriptor or FFFFh to allocate descriptor
  78958.     DX = type of service
  78959.     DS:SI -> "addr" structure (see #1928)
  78960. Return: CF clear if successful
  78961.         AX = network descriptor
  78962.     CF set on error
  78963.         AX = error code (see INT 61"PC/TCP")
  78964. Notes:    type of service and "addr" structure are as for AH=13h
  78965.     any of the address structure can be zero; normally local socket number
  78966.       is filled in prior to call
  78967. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  78968. SeeAlso: INT 63/AH=12h"BW-TCP"
  78969. --------N-6124-------------------------------
  78970. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  78971.     AH = 24h
  78972. Return: always successful
  78973. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  78974. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  78975. --------N-6125-------------------------------
  78976. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  78977.     AH = 25h
  78978.     DX,BX = IP address in network order
  78979.     CX = length of buffer for name
  78980.     DS:SI -> buffer for host name
  78981. Return: CF clear if successful
  78982.        buffer filled with ASCIZ host name
  78983.     CF set on error
  78984.         AX = error code (see INT 61"PC/TCP")
  78985. Note:    this function will use the host table and or DNS to resolve the
  78986.       address, depending on kernel configuration.  Use this call for the
  78987.       normal gethostbyaddr function.
  78988. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  78989. --------N-6126-------------------------------
  78990. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  78991.     AH = 26h
  78992.     DX,BX = IP address in network order
  78993.     CX = length of buffer
  78994.     DS:SI -> buffer for host name
  78995. Return: CF clear if successful
  78996.         buffer filled with ASCIZ host name
  78997.     CF set on error
  78998.         AX = error code (see INT 61"PC/TCP")
  78999. Notes:    normally one would use AH=25h instead of this function
  79000.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79001. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  79002. --------N-6127-------------------------------
  79003. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  79004.     AH = 27h
  79005.     DX,BX = IP address in network order
  79006.     CX = length of buffer
  79007.     DS:SI -> buffer for host name
  79008. Return: CF clear if successful
  79009.         buffer filled with ASCIZ host name
  79010.     CF set on error
  79011.         AX = error code (see INT 61"PC/TCP")
  79012. Note:    normally one would use AH=25h instead of this function
  79013. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  79014. --------N-6128-------------------------------
  79015. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  79016.     AH = 28h
  79017.     BX = network descriptor 1
  79018.     CX = network descriptor 2
  79019. Return: CF clear if successful
  79020.     CF set on error
  79021.         AX = error code (see INT 61"PC/TCP")
  79022. Note:    the two descriptors will exchange places; both must be local or both
  79023.       global
  79024. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  79025. --------N-6129-------------------------------
  79026. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  79027.     AH = 29h
  79028. Return: CF clear if successful
  79029.         AX = network descriptor
  79030.     CF set on error
  79031.         AX = error code (see INT 61"PC/TCP")
  79032. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  79033.       kernel; the returned descriptor will be >= 40h and cannot be used
  79034.       with "net_select" (AH=0Eh)
  79035. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  79036. SeeAlso: INT 61/AH=22h
  79037. --------N-612A-------------------------------
  79038. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  79039.     AH = 2Ah
  79040.     DS:SI -> 26-byte buffer for configuration information (see #1934)
  79041. Return: CF clear
  79042.     AX = 0000h
  79043.     buffer filled
  79044. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  79045.       versions 2.05 through 2.2
  79046.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79047. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  79048.  
  79049. Format of PC/TCP configuration information:
  79050. Offset    Size    Description    (Table 1934)
  79051.  00h    BYTE    maximum TCP connections available
  79052.  01h    BYTE    maximum UDP connections available
  79053.  02h    BYTE    maximum IP connections available
  79054.  03h    BYTE    maximum Raw Net connections available
  79055.  04h    BYTE    number of TCP connections currently in use
  79056.  05h    BYTE    number of UDP connections currently in use
  79057.  06h    BYTE    number of IP connections currently in use
  79058.  07h    BYTE    number of Raw Net connections currently in use
  79059.  08h    WORD    number of local network descriptors active
  79060.  0Ah    WORD    number of global network descriptors active
  79061.  0Ch    BYTE    maximum header size on network
  79062.  0Dh    BYTE    maximum trailer size on network
  79063.  0Eh    WORD    size of large packet buffer
  79064.  10h    WORD    number of network interfaces attached
  79065.  12h    DWORD    milliseconds since kernel started
  79066.  16h    DWORD    IP broadcast address
  79067. --------N-612B-------------------------------
  79068. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  79069.     AH = 2Bh
  79070.     BX = network descriptor
  79071.     CX,DX = time before alarm in milliseconds
  79072.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  79073.     ES:DI = 32-bit cookie passed to handler
  79074. Return: CF clear if successful
  79075.     CF set on error
  79076.         AX = error code (see INT 61"PC/TCP")
  79077. Notes:    this function will cause a NET_AS_ALARM to be generated; it is intended
  79078.       for TSRs, etc. to regain control periodically
  79079.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79080. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  79081. --------N-6130-------------------------------
  79082. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  79083.     AH = 30h
  79084.     BX,DX = IP address of host
  79085.     CX = length of data to send
  79086. Return: CF clear if successful (i.e. reply received)
  79087.     CF set on error
  79088.         AX = error code (see INT 61"PC/TCP")
  79089. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79090. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  79091. --------N-61---------------------------------
  79092. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  79093.     AH = function
  79094.         31h "net_add_route"
  79095.         32h "net_del_route"
  79096.         33h "net_dump_routes"
  79097. Notes:    these functions are described as "unused" in the v2.2 documentation
  79098.     router configuration can be altered using INT 61/AH=01h
  79099.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79100. --------N-6134-------------------------------
  79101. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  79102.     AH = 34h
  79103.     ???
  79104. Return: ???
  79105. Notes:    this function is described as "reserved" in the v2.2 documentation
  79106.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  79107. --------N-6150-------------------------------
  79108. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  79109.     AH = 50h
  79110.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  79111. Return: CF clear if successful
  79112.         DX:AX -> IP address
  79113.     CF set on error
  79114.         AX = error code (see INT 61"PC/TCP")
  79115. Range:    INT 20 to INT E0, selected by configuration
  79116. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  79117. --------N-6151-------------------------------
  79118. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  79119.     AH = 51h
  79120.     CX = size of destination buffer
  79121.     DS:DX -> ASCIZ host name (max 127 chars)
  79122.     ES:DI -> destination buffer or 0000h:0000h
  79123. Return: CF clear if successful
  79124.         DX:AX -> IP address of host
  79125.         destination buffer filled with canonical host name
  79126.     CF set on error
  79127.         AX = error code (see INT 61"PC/TCP")
  79128. Note:    this function calls DOS, and can fail if the DOS call fails
  79129. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  79130. --------N-6152-------------------------------
  79131. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  79132.     AH = 52h
  79133.     CX = size of destination buffer
  79134.     DS:DX -> ASCIZ host name (max 127 chars)
  79135.     ES:DI -> destination buffer or 0000h:0000h
  79136. Return: CF clear if successful
  79137.         DX:AX -> IP address of host
  79138.         destination buffer filled with canonical host name
  79139.     CF set on error
  79140.         AX = error code (see INT 61"PC/TCP")
  79141. Note:    this function will poll all configured domain name servers if necessary
  79142. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  79143. --------N-6153-------------------------------
  79144. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  79145.     AH = 53h
  79146.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  79147. Return: CF clear if successful
  79148.         DX:AX -> IP address of host
  79149.     CF set on error
  79150.         AX = error code (see INT 61"PC/TCP")
  79151. Range:    INT 20 to INT E0, selected by configuration
  79152. Note:    this function is not supported by v2.10+
  79153. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  79154. --------N-6154-------------------------------
  79155. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  79156.     AH = 54h
  79157.     CX = size of destination buffer
  79158.     DS:DX -> ASCIZ host name (max 127 chars)
  79159.     ES:DI -> destination buffer or 0000h:0000h
  79160. Return: CF clear if successful
  79161.         DX:AX -> IP address of host
  79162.         destination buffer filled with canonical host name
  79163.     CF set on error
  79164.         AX = error code (see INT 61"PC/TCP")
  79165. Note:    this function uses all configured methods in turn to resolve the
  79166.       name (numerical, then host table, then DNS, then IEN116)
  79167. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  79168.       greater than 54h in AH may crash the system.    Other kernels may have
  79169.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  79170. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  79171. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  79172. --------*-62---------------------------------
  79173. INT 62 - reserved for user interrupt
  79174. --------d-62---------------------------------
  79175. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  79176. Notes:    this vector stores the third four bytes of the parameter table for
  79177.       hard disk 0
  79178. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  79179. --------b-62---------------------------------
  79180. INT 62 - HP 95LX - USED BY CALCULATOR
  79181. SeeAlso: INT 60"HP 95LX"
  79182. ----------62---------------------------------
  79183. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  79184.     AH = function (00h to 07h)
  79185.     CX = FFFEh
  79186.     DX = FFFFh
  79187.     ???
  79188. Return: ???
  79189. Note:    the installation check consists of testing for the string "DBLIBRARY"
  79190.       2 bytes past the interrupt handler
  79191. SeeAlso: AH=08h"SQL"
  79192. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  79193. ----------62---------------------------------
  79194. INT 62 - MPAUSE - ???
  79195.     details not yet avialable
  79196. Program: MPAUSE is a program by Manfred Michael which appeared in the German
  79197.      _EGA-Handbuch_ from  m&t-Verlag
  79198. --------N-62---------------------------------
  79199. INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
  79200. Program: XFS is a shareware Network File System client by Robert Juhasz
  79201. Desc:    XFS requires a packet driver to operate.  Since it does redirections,
  79202.       etc., it provides its own packet driver entry point, changing the
  79203.       signature string of the original packet driver to "XKT DRVR" so that
  79204.       it will no longer be found by the packet driver installation check
  79205. Range:    INT 61 to INT 66, selected by scanning for two consecutive free
  79206.       vectors and hooking the second
  79207. Note:    the installation check for this vector is the same as that for the
  79208.       packet driver specification: scan for the signature string "PKT DRVR"
  79209.       three bytes past the interrupt handler
  79210. SeeAlso: INT 60"Packet Driver",INT 61"XFS"
  79211. --------N-6200-------------------------------
  79212. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  79213.     AH = 00h
  79214.     DS:DX -> 6-byte buffer for address
  79215. Return: AX = length of hardware address???
  79216. Range:    INT 60 to INT 65 ???
  79217. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  79218.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  79219.       consecutive interrupt (64h by default) if it is loaded
  79220. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  79221. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  79222. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  79223. --------V-620000-----------------------------
  79224. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  79225.     AX = 0000h
  79226.     BX = page number (0000h-003Fh)
  79227. Return: AX = status (0000h,0001h,0007h,0008h) (see #1935)
  79228. Program: FGDRIVER is the external video driver for the shareware
  79229.       Fastgraph/Light by Ted Gruber Software
  79230. Notes:    For FGDRIVER v1.10, this function was "FG_GETMODE" (see AX=003Fh);
  79231.       "FG_ALLOCATE" was AX=0042h
  79232.     The amount of memory required by the virtual video page depends on the
  79233.       current video mode
  79234.     The installation check consists of testing for the signature "FG" ten
  79235.       bytes beyond the start of the interrupt handler
  79236. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=002Eh
  79237. Index:    installation check;Fastgraph/Light
  79238.  
  79239. (Table 1935)
  79240. Values for FGDRIVER status:
  79241.  0000h    successful
  79242.  0001h    specified page is a physical or logical page
  79243.  0007h    virtual page created/released, but memory control blocks corrupted
  79244.  0008h    not enough memory
  79245.  0009h    attempt to free a page which was never created
  79246.  FFFCh    insufficient memory
  79247.  FFFDh    page already created, or exists as physical or virtual page
  79248.  FFFEh    invalid page number
  79249.  FFFFh    memory manager not initialized
  79250. --------V-620001-----------------------------
  79251. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  79252.     AX = 0001h
  79253.     BX = page number (0001h-003Fh)
  79254. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  79255. Notes:    For FGDRIVER v1.10, this function was "FG_SETMODE" (see AX=0093h);
  79256.       "FG_ALLOCCMS" was AX=009Dh
  79257.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  79258.       (see AX=0012h)
  79259. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0012h,AX=002Eh
  79260. --------V-620002-----------------------------
  79261. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  79262.     AX = 0002h
  79263.     BX = page number (0001h-003Fh)
  79264. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  79265. Notes:    For FGDRIVER v1.10, this function was "FG_TESTMODE" (see AX=00A7h);
  79266.       "FG_ALLOCEMS" was AX=009Eh
  79267.     You must first call "FG_INITEMS" (see AX=004Ch) before using this
  79268.       function
  79269.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  79270.       (see AX=0012h)
  79271. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0012h,AX=002Eh,AX=004Ch
  79272. --------V-620003-----------------------------
  79273. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  79274.     AX = 0003h
  79275.     BX = page number (0001h-003Fh)
  79276. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #1935)
  79277. Notes:    For FGDRIVER v1.10, this function was "FG_BESTMODE" (see AX=0005h),
  79278.       and "FG_ALLOCXMS" was AX=009Fh
  79279.     You must first call "FG_INITXMS" (see AX=004Eh) before using this
  79280.       function
  79281.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  79282.       (see AX=0012h)
  79283. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0012h,AX=002Eh,AX=004Eh
  79284. --------V-620004-----------------------------
  79285. INT 62 u - FGDRIVER v1.10,3.03 - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  79286.     AX = 0004h
  79287. Return: AX = proposed video mode number (see #1949 at AX=0093h)
  79288. Program: FGDRIVER is the external video driver for the shareware
  79289.       Fastgraph/Light by Ted Gruber Software
  79290. SeeAlso: AX=0005h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  79291. --------V-620005-----------------------------
  79292. INT 62 u - FGDRIVER v3.03 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  79293.     AX = 0005h
  79294.     BX = horizontal resolution
  79295.     CX = vertical resolution
  79296.     DX = number of video pages required (both physical and virtual)
  79297. Return: AX = proposed video mode number or FFFFh if no matching video mode
  79298. Notes:    For FGDRIVER v1.10, this function was "FG_EGACHECK" (see AX=0023h);
  79299.        "FG_BESTMODE" was AX=0003h
  79300.     You must first call "FG_SVGAINIT" (see AX=00A1h) to get SVGA video
  79301.       modes
  79302. SeeAlso: AX=0004h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  79303. --------V-620006-----------------------------
  79304. INT 62 u - FGDRIVER v3.03 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  79305.     AX = 0006h
  79306.     BX = left column
  79307.     CX = right column
  79308.     DX = top row
  79309.     SI = bottom row
  79310. Notes:    For FGDRIVER v1.10, this function was "FG_RESET" (see AX=0081h);
  79311.       "FG_BOX" was AX=00A2h
  79312.     The rectangle is drawn in screen space, respecting the clipping region,
  79313.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  79314.       (default = 1 is set by "FG_SETMODE")
  79315.     This function has no effect in text modes
  79316. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0014h,AX=001Bh,AX=0024h,AX=0076h
  79317. --------V-620007-----------------------------
  79318. INT 62 u - FGDRIVER v3.03 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  79319.     AX = 0007h
  79320.     BX = width of left and right edges in pixels (> 0)
  79321.     CX = width of top and bottom edges in pixels (> 0)
  79322. Note:    For FGDRIVER v1.10, this function was "FG_CURSOR" (see AX=0013h);
  79323.       "FG_BOXDEPTH" was AX=00A3h
  79324. SeeAlso: AX=0006h,AX=0008h
  79325. --------V-620008-----------------------------
  79326. INT 62 u - FGDRIVER v3.03 - "FG_BOXX" - XOR HOLLOW RECTANGLE
  79327.     AX = 0008h
  79328.     BX = left column
  79329.     CX = right column
  79330.     DX = top row
  79331.     SI = bottom row
  79332. Notes:    For FGDRIVER v1.10, this function was unused and "FG_BOXX" did not
  79333.       exist yet
  79334.     The rectangle is XORed into screen space, respecting the clipping
  79335.       region, with edges of the width specified with "FG_BOXDEPTH"
  79336.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  79337.     This function has no effect in text modes
  79338. SeeAlso: AX=0006h,AX=0007h,AX=001Fh,AX=0020h,AX=0077h
  79339. --------V-620009-----------------------------
  79340. INT 62 u - FGDRIVER v3.03 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  79341.     AX = 0009h
  79342.     BX = joystick number (0001h or 0002h)
  79343. Return: AX = button states
  79344.         bit 0: top button pressed
  79345.         bit 1: bottom button pressed
  79346. Note:    For FGDRIVER v1.10, this function was unused; "FG_BUTTON" was AX=0078h
  79347. SeeAlso: AX=0044h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  79348. --------V-62000A-----------------------------
  79349. INT 62 u - FGDRIVER v3.03 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  79350.     AX = 000Ah
  79351. Return: AX = CapsLock state (0000h off, 0001h on)
  79352. Note:    For FGDRIVER v1.10, this function was "FG_GETMAXX" (see AX=003Dh);
  79353.       "FG_CAPSLOCK" was AX=0070h
  79354. SeeAlso: AX=006Ch,AX=0088h,AX=008Bh,AX=0094h
  79355. --------V-62000B-----------------------------
  79356. INT 62 u - FGDRIVER v3.03 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  79357.     AX = 000Bh
  79358.     BX = number of characters to recolor
  79359. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAXY" (see AX=003Eh);
  79360.       "FG_CHGATTR" was AX=0035h
  79361.     This call is ignored in graphics modes
  79362.     Starting at the current text cursor position, the specified number of
  79363.       characters have their attributes to the current text attribute
  79364. SeeAlso: AX=000Ch,AX=0030h,AX=008Ah
  79365. --------V-62000C-----------------------------
  79366. INT 62 u - FGDRIVER v3.03 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  79367.     AX = 000Ch
  79368.     CX = length of string
  79369.     ES:BX -> string to be displayed
  79370. Return: text cursor updated
  79371. Notes:    For FGDRIVER v1.10, this function was "FG_XALPHA" (see AX=00B0h);
  79372.       "FG_CHGTEXT" was AX=0036h
  79373.     This call is ignored in graphics modes
  79374. SeeAlso: AX=000Bh,AX=007Ch
  79375. --------V-62000D-----------------------------
  79376. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  79377.     AX = 000Dh
  79378.     BX = radius in horizontal screen space units (> 0)
  79379. Notes:    For FGDRIVER v1.10, this function was "FG_YALPHA" (see AX=00B2h);
  79380.       "FG_CIRCLE" was AX=0030h
  79381.     The circle is drawn in screen space, centered at the current graphics
  79382.       cursor position
  79383.     This call is ignored in text modes
  79384. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0024h,AX=0079h
  79385. --------V-62000E-----------------------------
  79386. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  79387.     AX = 000Eh
  79388.     BX = radius in horizontal screen space units (> 0)
  79389. Notes:    For FGDRIVER v1.10, this function was "FG_XCONVERT" (see AX=00B1h);
  79390.       "FG_CIRCLEF" did not exist yet
  79391. SeeAlso: AX=0008h,AX=000Dh,AX=0025h,AX=0078h
  79392. --------V-62000F-----------------------------
  79393. INT 62 u - FGDRIVER v3.03 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  79394.     AX = 000Fh
  79395.     ES:BX -> array containing image stored as a masking map (see #1936)
  79396.     CX = number of pixel runs in masking map
  79397.     DX = width of masking map in pixels
  79398. Notes:    For FGDRIVER v1.10, this function was "FG_YCONVERT" (see AX=00B3h);
  79399.        "FG_CLIPMASK" was AX=0052h
  79400.     This call is ignored in text modes and in native EGA and VGA graphics
  79401.       modes
  79402.     The image is drawn with its lower left corner at the current graphics
  79403.       cursor position
  79404. SeeAlso: AX=0010h,AX=001Dh,AX=002Ah,AX=0086h,AX=008Ch,AX=00A5h
  79405. --------V-620010-----------------------------
  79406. INT 62 u - FGDRIVER v3.03 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  79407.     AX = 0010h
  79408.     ES:BX -> mode-specific bitmap
  79409.     CX = width of bit map in bytes
  79410.     DX = height of bit map in pixel rows
  79411. Notes:    For FGDRIVER v1.10, this function was "FG_GETLINES" (see AX=003Bh);
  79412.       "FG_CLPIMAGE" was AX=004Ah
  79413.     This call is ignored in text modes
  79414.     The image is drawn with its lower left corner at the current graphics
  79415.       cursor position
  79416.     The current clipping region is used, extended to a byte boundary
  79417. SeeAlso: AX=000Fh,AX=0022h,AX=002Ch,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  79418. --------V-620011-----------------------------
  79419. INT 62 u - FGDRIVER v3.03 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  79420.     AX = 0011h
  79421.     BX = screen space column of left edge
  79422.     CX = screen space column of right edge
  79423.     DX = screen space row of top edge
  79424.     SI = screen space row of bottom edge
  79425. Notes:    For FGDRIVER v1.10, this function was "FG_SETLINES" (see AX=0092h);
  79426.       "FG_CLPRECT" was AX=002Bh
  79427.     This call is ignored in text modes
  79428. SeeAlso: AX=0006h,AX=000Fh,AX=0010h,AX=0021h,AX=0080h,AX=008Ch
  79429. --------V-620012-----------------------------
  79430. INT 62 u - FGDRIVER v3.03 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  79431.     AX = 0012h
  79432.     BX = source page number (0000h-003Fh)
  79433.     CX = destination page number (0000h-003Fh)
  79434. Notes:    For FGDRIVER v1.10, this function was unused;"FG_COPYPAGE" was AX=005Fh
  79435.     If both source and destination pages are logical pages, they must both
  79436.       be located in the same type (conventional, EMS, XMS) of memory
  79437. SeeAlso: AX=0083h,AX=0087h,AX=00A6h,AX=00A9h
  79438. --------V-620013-----------------------------
  79439. INT 62 u - FGDRIVER v3.03 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  79440.     AX = 0013h
  79441.     BX = new state (0000h invisible, 0001h visible)
  79442. Notes:    For FGDRIVER v1.10, this function was unused; "FG_CURSOR" was AX=0007h
  79443.     This call is ignored in text modes
  79444. SeeAlso: AX=000Ch,AX=0045h,AX=0047h,AX=0055h,AX=005Fh,AX=0063h,AX=0068h
  79445. SeeAlso: AX=00AFh
  79446. --------V-620014-----------------------------
  79447. INT 62 u - FGDRIVER v3.03 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  79448.     AX = 0014h
  79449.     BX = endpoint column
  79450.     CX = endpoint row
  79451.     DX = dash pattern (set bits cause drawn pixels)
  79452. Notes:    For FGDRIVER v1.10, this function was "FG_DEFCOLOR" (see AX=0016h);
  79453.       "FG_DASH" was AX=0027h
  79454.     This call is ignored in text modes
  79455.     The starting point is the current graphics cursor position; the cursor
  79456.       position is updated
  79457. SeeAlso: AX=0015h,AX=001Bh,AX=0076h
  79458. --------V-620015-----------------------------
  79459. INT 62 u - FGDRIVER v3.03 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  79460.     AX = 0015h
  79461.     BX = endpoint column offset
  79462.     CX = endpoint row offset
  79463.     DX = dash pattern (set bits cause drawn pixels)
  79464. Notes:    For FGDRIVER v1.10, this function was "FG_GETCOLOR" (see AX=0034h);
  79465.       "FG_DASHREL" was AX=0028h
  79466.     This call is ignored in text modes
  79467.     The starting point is the current graphics cursor position; the cursor
  79468.       position is updated
  79469. SeeAlso: AX=0014h,AX=001Ch,AX=0076h
  79470. --------V-620016-----------------------------
  79471. INT 62 u - FGDRIVER v3.03 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  79472.     AX = 0016h
  79473.     BX = color index (0000h-00FFh)
  79474.     CX = new color value (0 to maximum color value for current video mode)
  79475. Notes:    For FGDRIVER v1.10, this function was "FG_GETINDEX" (see AX=0039h);
  79476.       "FG_DEFCOLOR" was AX=0014h
  79477.     This call is ignored in text modes and 256-color graphics modes
  79478. SeeAlso: AX=0034h,AX=0039h,AX=008Dh
  79479. --------V-620017-----------------------------
  79480. INT 62 u - FGDRIVER v3.03 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  79481.     AX = 0017h
  79482.     BX = source page
  79483.     CX = destination page
  79484. Desc:    specify the source and destination SVGA banks for block transfers on
  79485.       extended video pages
  79486. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTE" (see AX=006Fh);
  79487.       "FG_DEFPAGES" did not exist yet
  79488.     This function is ignored if the video controller does not support
  79489.       extended pages or the current video mode does not allow them
  79490. SeeAlso: AX=0012h,AX=00A9h
  79491. --------V-620018-----------------------------
  79492. INT 62 u - FGDRIVER v3.03 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  79493.     AX = 0018h
  79494.     ES:BX -> ASCIZ filename
  79495.     CX = image width in pixels (> 0)
  79496.     DX = image format
  79497.         0000h Fastgraph standard pixel run format
  79498.         0001h packed pixel run format
  79499. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTES" (see AX=0070h);
  79500.       "FG_DISPFILE" was AX=004Fh
  79501.     This call is ignored in text modes
  79502.     The image is displayed with its lower left corner at the current
  79503.       graphics cursor position
  79504. SeeAlso: AX=0019h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  79505. --------V-620019-----------------------------
  79506. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  79507.     AX = 0019h
  79508.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  79509.     CX = number of pixel runs to display
  79510.     DX = width of image in pixels (> 0)
  79511. Notes:    For FGDRIVER v1.10, this function was "FG_SETATTR" (see AX=008Ah);
  79512.       "FG_DISPLAY" was AX=004Dh
  79513.     This call is ignored in text modes
  79514.     The image is displayed with its lower left corner at the current
  79515.       graphics cursor position
  79516. SeeAlso: AX=0018h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  79517. --------V-62001A-----------------------------
  79518. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  79519.     AX = 001Ah
  79520.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  79521.           contains the color for the first run in its high nybble and
  79522.           the color for the second run in its low nybble)
  79523.     CX = number of pixel runs to display
  79524.     DX = width of image in pixels (> 0)
  79525. Notes:    For FGDRIVER v1.10, this function was "FG_SETCOLOR" (see AX=008Dh);
  79526.       "FG_DISPLAYP" was AX=004Eh
  79527.     This call is ignored in text modes
  79528.     The image is displayed with its lower left corner at the current
  79529.       graphics cursor position
  79530. SeeAlso: AX=0018h,AX=0019h,AX=009Ah,AX=009Bh,AX=009Ch
  79531. --------V-62001B-----------------------------
  79532. INT 62 u - FGDRIVER v3.03 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  79533.     AX = 001Bh
  79534.     BX = endpoint column
  79535.     CX = endpoint row
  79536. Notes:    For FGDRIVER v1.10, this function was "FG_SETRGB" (see AX=0096h);
  79537.       "FG_DRAW" was AX=0025h
  79538.     This call is ignored in text modes
  79539.     The starting point is the current graphics cursor position; the cursor
  79540.       position is updated
  79541. SeeAlso: AX=0014h,AX=001Eh,AX=001Fh,AX=0024h,AX=0076h,AX=0077h
  79542. --------V-62001C-----------------------------
  79543. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  79544.     AX = 001Ch
  79545.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  79546.     CX = width of bitmap in bytes
  79547.     DX = height of bitmap in pixel rows
  79548. Note:    For FGDRIVER v1.10, this function was "FG_GETRGB" (see AX=0042h);
  79549.       "FG_DRAWMAP" was AX=0047h
  79550. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  79551. --------V-62001D-----------------------------
  79552. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  79553.     AX = 001Dh
  79554.     ES:BX -> array containing image stored as a masking map (see #1936)
  79555.     CX = number of pixel runs in masking map
  79556.     DX = width of masking map in pixels
  79557. Notes:    For FGDRIVER v1.10, this function was "FG_MAPRGB" (see AX=005Ah);
  79558.       "FG_DRAWMASK" was AX=0051h
  79559.     This call is ignored in text modes and in native EGA and VGA graphics
  79560.       modes
  79561.     The image is drawn with its lower left corner at the current graphics
  79562.       cursor position
  79563. SeeAlso: AX=000Fh,AX=001Dh,AX=0086h,AX=008Ch
  79564.  
  79565. Format of FGDRIVER masking map:
  79566. Offset    Size    Description    (Table 1936)
  79567.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  79568.  01h    BYTE    length of first "zero" run (pixels set to background color)
  79569.  02h    BYTE    length of second "protect" run
  79570.  03h    BYTE    length of second "zero" run
  79571.     ...
  79572. --------V-62001E-----------------------------
  79573. INT 62 u - FGDRIVER v3.03 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  79574.     AX = 001Eh
  79575.     BX = endpoint column offset
  79576.     CX = endpoint row offset
  79577. Notes:    For FGDRIVER v1.10, this function was "FG_ERASE" (see AX=0026h);
  79578.       "FG_DRAWREL" was AX=0026h
  79579.     This call is ignored in text modes
  79580.     The starting point is the current graphics cursor position; the cursor
  79581.       position is updated
  79582. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Fh,AX=0024h,AX=0076h
  79583. --------V-62001F-----------------------------
  79584. INT 62 u - FGDRIVER v3.03 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  79585.     AX = 001Fh
  79586.     BX = endpoint column offset
  79587.     CX = endpoint row offset
  79588. Desc:    draw a solid line, XORing each pixel onto the screen
  79589. Notes:    For FGDRIVER v1.10, this function was "FG_POINT" (see AX=0076h);
  79590.       "FG_DRAWRELX" did not exist yet
  79591.     This call is ignored in text modes
  79592.     The starting point is the current graphics cursor position; the cursor
  79593.       position is updated
  79594. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Eh,AX=0024h,AX=0077h
  79595. --------V-620020-----------------------------
  79596. INT 62 u - FGDRIVER v3.03 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  79597.     AX = 0020h
  79598.     BX = endpoint column
  79599.     CX = endpoint row
  79600. Desc:    draw a solid line, XORing each pixel onto the screen
  79601. Notes:    For FGDRIVER v1.10, this function was "FG_GETPIXEL" (see AX=0041h);
  79602.       "FG_DRAWX" did not exist yet
  79603.     This call is ignored in text modes
  79604.     The starting point is the current graphics cursor position; the cursor
  79605.       position is updated
  79606. SeeAlso: AX=001Bh,AX=001Fh,AX=0076h
  79607. --------V-620021-----------------------------
  79608. INT 62 u - FGDRIVER v3.03 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  79609.     AX = 0021h
  79610.     BX = screen space column of left edge
  79611.     CX = screen space column of right edge
  79612.     DX = screen space row of top edge
  79613.     SI = screen space row of bottom edge
  79614.     ES:DI -> dithering matrix (video-mode dependent)
  79615. Notes:    For FGDRIVER v1.10, this function was "FG_GETXPOS" (see AX=0045h);
  79616.       "FG_DRECT" was AX=002Ch
  79617.     This call is ignored in text modes
  79618. SeeAlso: AX=0006h,AX=0008h,AX=0011h,AX=0031h,AX=0072h,AX=0080h
  79619. --------V-620022-----------------------------
  79620. INT 62 u - FGDRIVER v3.03 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  79621.     AX = 0022h
  79622.     ES:BX -> video mode-specific bitmap
  79623.     CX = width of bitmap in bytes
  79624.     DX = height of bitmap in pixel rows
  79625. Notes:    For FGDRIVER v1.10, this function was "FG_GETYPOS" (see AX=0047h);
  79626.       "FG_DRWIMAGE" was AX=0049h
  79627.     The image will be drawn with its lower left corner at the current
  79628.       cursor position (either text or graphics)
  79629. SeeAlso: AX=0010h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  79630. --------V-620023-----------------------------
  79631. INT 62 u - FGDRIVER v3.03 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  79632.     AX = 0023h
  79633. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  79634.           without an Enhanced Color Display
  79635. Note:    For FGDRIVER v1.10, this function was "FG_MOVE" (see AX=0068h);
  79636.       "FG_EGACHECK" was AX=0005h
  79637. SeeAlso: AX=00A2h
  79638. --------V-620024-----------------------------
  79639. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  79640.     AX = 0024h
  79641.     BX = horizontal semi-axis length in screen space units
  79642.     CX = vertical semi-axis length in screen space units
  79643. Notes:    For FGDRIVER v1.10, this function was "FG_MOVEREL" (see AX=0069h);
  79644.       "FG_ELLIPSE" was AX=002Dh
  79645.     This call is ignored in text modes
  79646.     The ellipse is centered at the current graphics cursor position
  79647. SeeAlso: AX=0006h,AX=000Dh,AX=0025h,AX=0076h,AX=0079h
  79648. --------V-620025-----------------------------
  79649. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  79650.     AX = 0025h
  79651.     BX = horizontal semi-axis length in screen space units
  79652.     CX = vertical semi-axis length in screen space units
  79653. Notes:    For FGDRIVER v1.10, this function was "FG_DRAW" (see AX=001Bh);
  79654.       "FG_ELLIPSEF" did not exist yet
  79655.     This call is ignored in text modes
  79656.     The ellipse is centered at the current graphics cursor position
  79657. SeeAlso: AX=0006h,AX=000Eh,AX=0024h,AX=0076h,AX=0078h
  79658. --------V-620026-----------------------------
  79659. INT 62 u - FGDRIVER v3.03 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  79660.     AX = 0026h
  79661. Note:    For FGDRIVER v1.10, this function was "FG_DRAWREL" (see AX=001Eh);
  79662.       "FG_ERASE" was AX=001Eh
  79663.     This function sets each pixel to 0 in graphics modes, each character
  79664.       cell to a blank with a gray foreground attribute in text modes
  79665. SeeAlso: AX=0027h,AX=0029h,AX=002Bh
  79666. --------V-620027-----------------------------
  79667. INT 62 u - FGDRIVER v3.03 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  79668.     AX = 0027h
  79669.     BX = delay (0000h = fastest possible fade-in)
  79670. Notes:    For FGDRIVER v1.10, this function was "FG_DASH" (see AX=0014h);
  79671.       "FG_FADEIN" was AX=0064h
  79672.     The current hidden page is copied to the current visible page in small
  79673.       random sections to produce a fade-in effect
  79674.     This call is ignored in text modes
  79675. SeeAlso: AX=0026h,AX=0028h,AX=0029h
  79676. --------V-620028-----------------------------
  79677. INT 62 u - FGDRIVER v3.03 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  79678.     AX = 0028h
  79679.     BX = delay (0000h = fastest possible fade-out)
  79680. Notes:    For FGDRIVER v1.10, this function was "FG_DASHREL" (see AX=0015h);
  79681.       "FG_FADEOUT" was AX=0065h
  79682.     The current visible page is filled with pixels of the current color in
  79683.       small random sections to give a fade-out effect
  79684.     This call is ignored in text modes
  79685. SeeAlso: AX=0026h,AX=0027h,AX=0029h
  79686. --------V-620029-----------------------------
  79687. INT 62 u - FGDRIVER v3.03 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  79688.     AX = 0029h
  79689. Desc:    fill the active video page with pixels of the current color (graphics
  79690.       modes) or the block character DBh with the current character
  79691.       attributes (text modes)
  79692. Note:    For FGDRIVER v1.10, this function was "FG_SETCLIP" (see AX=008Ch);
  79693.       "FG_FILLPAGE" did not exist yet
  79694. SeeAlso: AX=0026h,AX=0027h,AX=0028h
  79695. --------V-62002A-----------------------------
  79696. INT 62 u - FGDRIVER v3.03 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  79697.     AX = 002Ah
  79698.     ES:BX -> array containing image stored as a masking map (see #1936)
  79699.     CX = number of pixel runs in masking map
  79700.     DX = width of masking map in pixels
  79701. Notes:    For FGDRIVER v1.10, this function was "FG_RECT" (see AX=0080h);
  79702.       "FG_FLIPMASK" was AX=0054h
  79703.     This call is ignored in text modes and in native EGA and VGA graphics
  79704.       modes
  79705.     The image is drawn with its lower left corner at the current graphics
  79706.       cursor position
  79707. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ch,AX=0086h,AX=008Ch,AX=00A5h
  79708. --------V-62002B-----------------------------
  79709. INT 62 u - FGDRIVER v3.03 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  79710.     AX = 002Bh
  79711.     BX = starting column
  79712.     CX = starting row
  79713. Desc:    fill the bounded region around the specified point (respecting clipping
  79714.       region) with the currrent color
  79715. Notes:    For FGDRIVER v1.10, this function was "FG_CLPRECT" (see AX=0011h);
  79716.       "FG_FLOOD" did not exist yet
  79717.     This function is ignored in text modes
  79718. SeeAlso: AX=0026h,AX=006Eh
  79719. --------V-62002C-----------------------------
  79720. INT 62 u - FGDRIVER v3.03 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  79721.     AX = 002Ch
  79722.     ES:BX -> mode-specific bitmap
  79723.     CX = width of bit map in bytes
  79724.     DX = height of bit map in pixel rows
  79725. Notes:    For FGDRIVER v1.10, this function was "FG_DRECT" (see AX=0021h);
  79726.       "FG_FLPIMAGE" was AX=004Ch
  79727.     This call is ignored in text modes
  79728.     The image is drawn with its lower left corner at the current graphics
  79729.       cursor position
  79730.     The current clipping region is used, extended to a byte boundary
  79731. SeeAlso: AX=0010h,AX=0022h,AX=002Ah,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  79732. --------V-62002D-----------------------------
  79733. INT 62 u - FGDRIVER v3.03 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  79734.     AX = 002Dh
  79735.     BX = desired character height in scan lines (8, 14, 16)
  79736. Notes:    For FGDRIVER v1.10, this function was "FG_ELLIPSE" (see AX=0024h);
  79737.       "FG_FONTSIZE" did not exist yet
  79738.     This call is ignored if the current mode is not a VGA or SVGA graphics
  79739.       mode, or the specified character height is not 8, 14, or 16
  79740. SeeAlso: AX=007Ch
  79741. --------V-62002E-----------------------------
  79742. INT 62 u - FGDRIVER v3.03 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  79743.     AX = 002Eh
  79744.     BX = page number (0000h-003Fh)
  79745. Return: AX = status (0000h,0001h,0007h,0009h) (see #1935)
  79746. Note:    For FGDRIVER v1.10, this function was "FG_POLYGON" (see AX=0079h);
  79747.       "FG_FREEPAGE" was AX=0043h
  79748. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  79749. --------V-62002F-----------------------------
  79750. INT 62 u - FGDRIVER v3.03 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  79751.     AX = 002Fh
  79752. Return: AX = segment of active video page
  79753. Note:    For FGDRIVER v1.10, this function was "FG_PAINT" (see AX=006Eh);
  79754.       "FG_GETADDR" was AX=0044h
  79755. SeeAlso: AX=0036h,AX=008Fh
  79756. --------V-620030-----------------------------
  79757. INT 62 u - FGDRIVER v3.03 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  79758.     AX = 0030h
  79759.     BX = row
  79760.     CX = column
  79761. Return: AX = character attribute at specified location on active video page
  79762. Notes:    For FGDRIVER v1.10, this function was "FG_CIRCLE" (see AX=000Dh);
  79763.       "FG_GETATTR" was AX=0037h
  79764.     This call is ignored in graphics modes
  79765. SeeAlso: AX=000Bh,AX=0032h,AX=0034h,AX=008Ah
  79766. --------V-620031-----------------------------
  79767. INT 62 u - FGDRIVER v3.03 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  79768.     AX = 0031h
  79769.     ES:BX -> buffer for screen contents
  79770.     CX = leftmost column
  79771.     DX = rightmost column
  79772.     SI = top row
  79773.     DI = bottom row
  79774. Notes:    For FGDRIVER v1.10, this function was unused, and "FG_GETBLOCK" did not
  79775.       exist yet
  79776.     In text modes, coordinates are character positions; in graphics modes,
  79777.       they are defined in screen space, and the left and right edges are
  79778.       adjusted to a byte boundary if necessary
  79779.     Use "FG_IMAGESIZ" (see AX=004Bh) to determine the required buffer size
  79780. SeeAlso: AX=0038h,AX=004Bh,AX=007Dh
  79781. --------V-620032-----------------------------
  79782. INT 62 u - FGDRIVER v3.03 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  79783.     AX = 0032h
  79784.     BX = row
  79785.     CX = column
  79786. Return: AX = character at specified location on active video page
  79787. Notes:    For FGDRIVER v1.10, this function was "FG_TEXT" (see AX=00A8h);
  79788.       "FG_GETCHAR" was AX=0038h
  79789.     This call is ignored in graphics modes
  79790. SeeAlso: AX=000Bh,AX=0030h,AX=007Ch,AX=008Ah,AX=00A8h
  79791. --------V-620033-----------------------------
  79792. INT 62 u - FGDRIVER v3.03 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  79793.     AX = 0033h
  79794. Return: DX:AX = number of clock ticks since midnight
  79795. Note:    For FGDRIVER v1.10, this function was "FG_LOCATE" (see AX=0055h);
  79796.       "FG_GETCLOCK" was AX=0099h
  79797. SeeAlso: INT 1A/AH=00h
  79798. --------V-620034-----------------------------
  79799. INT 62 u - FGDRIVER v3.03 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  79800.     AX = 0034h
  79801. Return: AX = current text attribute or color index (graphics modes)
  79802. Note:    For FGDRIVER v1.10, this function was "FG_WHERE" (see AX=00AFh);
  79803.       "FG_GETCOLOR" was AX=0015h
  79804. SeeAlso: AX=000Bh,AX=0030h,AX=008Ah
  79805. --------V-620035-----------------------------
  79806. INT 62 u - FGDRIVER v3.03 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  79807.     AX = 0035h
  79808.     CX = number of DAC registers to return (0001h to 0100h)
  79809.     DX = starting DAC register number (0000h to 00FFh)
  79810.     ES:BX -> buffer for DAC red/green/blue triples
  79811. Notes:    For FGDRIVER v1.10, this function was "FG_CHGATTR" (see AX=000Bh);
  79812.       "FG_GETDACS" was AX=00A4h
  79813.     The register number wraps back to zero after FFh
  79814. SeeAlso: AX=0042h,AX=006Fh,AX=008Eh
  79815. --------V-620036-----------------------------
  79816. INT 62 u - FGDRIVER v3.03 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  79817.     AX = 0036h
  79818.     ES:BX -> variable pointer record (see #1937)
  79819.     CX = page number (00h-3Fh)
  79820. Notes:    For FGDRIVER v1.10, this function was "FG_CHGTEXT" (see AX=000Ch);
  79821.       "FG_GETENTRY" did not exist yet
  79822.     Page addresses are segments for pages stored in conventional memory
  79823.       (including physical and virtual pages), and EMS or XMS handles for
  79824.       pages stored in EMS or XMS
  79825. SeeAlso: AX=0000h,AX=008Fh
  79826.  
  79827. Format of FGDRIVER variable pointer record:
  79828. Offset    Size    Description    (Table 1937)
  79829.  00h    WORD    segment of WORD buffer for page address
  79830.  02h    WORD    offset of WORD buffer for page address
  79831.  04h    WORD    segment of WORD buffer for page type (se #1938)
  79832.  06h    WORD    offset of WORD buffer for page type
  79833.  
  79834. (Table 1938)
  79835. Values for FGDRIVER page type:
  79836.  0000h    unallocated
  79837.  0001h    physical
  79838.  0002h    virtual
  79839.  0003h    logical page, stored in expanded memory (EMS)
  79840.  0004h    logical page, stored in extended memory (XMS)
  79841.  0005h    logical page, stored in conventional memory
  79842. --------V-620037-----------------------------
  79843. INT 62 u - FGDRIVER v3.03 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  79844.     AX = 0037h
  79845. Return: AX = current hidden video page number (0000h-003Fh)
  79846. Note:    For FGDRIVER v1.10, this function was "FG_GETATTR" (see AX=0030h);
  79847.       "FG_GETHPAGE" was AX=0040h
  79848. SeeAlso: AX=0040h,AX=0043h,AX=0091h
  79849. --------V-620038-----------------------------
  79850. INT 62 u - FGDRIVER v3.03 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  79851.     AX = 0038h
  79852.     ES:BX -> buffer for video mode-specific bitmap
  79853.     CX = width of bitmap in bytes
  79854.     DX = height of bitmap in pixel rows
  79855. Note:    For FGDRIVER v1.10, this function was "FG_GETCHAR" (see AX=0032h);
  79856.       "FG_GETIMAGE" was AX=0048h
  79857. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=007Eh,AX=0085h
  79858. --------V-620039-----------------------------
  79859. INT 62 u - FGDRIVER v3.03 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  79860.     AX = 0039h
  79861.     BX = color index (0000h to 00FFh)
  79862. Return: AX = color value for specified color index
  79863. Notes:    For FGDRIVER v1.10, this function was unused;"FG_GETINDEX" was AX=0016h
  79864.     This call returns the value passed to it in text and 256-color
  79865.       graphics modes
  79866. SeeAlso: AX=0016h,AX=0034h
  79867. --------V-62003A-----------------------------
  79868. INT 62 u - FGDRIVER v3.03 - "FG_GETKEY" - GET NEXT KEYSTROKE
  79869.     AX = 003Ah
  79870.     ES:BX -> variable pointer record (see #1939)
  79871. Return: (after next keystroke if no typeahead) variables updated
  79872. Note:    For FGDRIVER v1.10, this function was unused; "FG_GETKEY" was AX=006Eh
  79873. SeeAlso: AX=000Ah,AX=0051h,AX=0054h,AX=00ADh,INT 16/AH=00h
  79874.  
  79875. Format of FGDRIVER variable pointer record:
  79876. Offset    Size    Description    (Table 1939)
  79877.  00h    WORD    segment of BYTE buffer for ASCII keycode
  79878.  02h    WORD    offset of BYTE buffer for ASCII keycode
  79879.  04h    WORD    segment of BYTE buffer for extended keycode
  79880.  06h    WORD    offset of BYTE buffer for extended keycode
  79881. --------V-62003B-----------------------------
  79882. INT 62 u - FGDRIVER v3.03 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  79883.     AX = 003Bh
  79884. Return: AX = number of text rows on screen in current video mode
  79885. Note:    For FGDRIVER v1.10, this function was unused;"FG_GETLINES" was AX=0010h
  79886. SeeAlso: AX=0092h,AX=00A2h
  79887. --------V-62003C-----------------------------
  79888. INT 62 u - FGDRIVER v3.03 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  79889.     AX = 003Ch
  79890.     ES:BX -> buffer for video mode-independent bitmap
  79891.     CX = width of bitmap in bytes
  79892.     DX = height of bitmap in pixel rows
  79893. Return: each bit in bitmap is set if corresponding pixel is of the current
  79894.       color, cleared otherwise
  79895. Notes:    For FGDRIVER v1.10, this function was "FG_GETPAGE" (see AX=0040h);
  79896.       "FG_GETMAP" was AX=0046h
  79897.     This call is ignored in text modes
  79898. SeeAlso: AX=0010h,AX=001Ch,AX=0022h
  79899. --------V-62003D-----------------------------
  79900. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  79901.     AX = 003Dh
  79902. Return: AX = maximum X coordinate in screen space
  79903.         (or character space if in text mode)
  79904. Note:    For FGDRIVER v1.10, this function was "FG_SETPAGE" (see AX=0095h);
  79905.       "FG_GETMAXX" was AX=000Ah
  79906. SeeAlso: AX=003Eh,AX=00A1h
  79907. --------V-62003E-----------------------------
  79908. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  79909.     AX = 003Eh
  79910. Return: AX = maximum Y coordinate in screen space
  79911.         (or character space if in text mode)
  79912. Note:    For FGDRIVER v1.10, this function was "FG_GETVPAGE" (see AX=0043h);
  79913.       "FG_GETMAXY" was AX=000Bh
  79914. SeeAlso: AX=003Dh,AX=00A1h
  79915. --------V-62003F-----------------------------
  79916. INT 62 u - FGDRIVER v3.03 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  79917.     AX = 003Fh
  79918.     ES:BX -> WORD ???
  79919. Return: AX = current video mode number
  79920. Note:    For FGDRIVER v1.10, this function was "FG_SETVPAGE" (see AX=0098h);
  79921.       "FG_GETMODE" was AX=0000h
  79922. SeeAlso: AX=0093h
  79923. --------V-620040-----------------------------
  79924. INT 62 u - FGDRIVER v3.03 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  79925.     AX = 0040h
  79926. Return: AX = active video page (0000h-003Fh)
  79927. Note:    For FGDRIVER v1.10, this function was "FG_GETHPAGE" (see AX=0037h);
  79928.       "FG_GETPAGE" was AX=003Ch
  79929. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0095h
  79930. --------V-620041-----------------------------
  79931. INT 62 u - FGDRIVER v3.03 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  79932.     AX = 0041h
  79933.     BX = column in screen space
  79934.     CX = row in screen space
  79935. Return: AX = color value of pixel (0 to num_colors-1)
  79936.         0000h in text modes
  79937. Note:    For FGDRIVER v1.10, this function was "FG_SETHPAGE" (see AX=0091h);
  79938.       "FG_GETPIXEL" was AX=0020h
  79939. SeeAlso: AX=0030h,AX=0032h,AX=0076h,AX=0077h
  79940. --------V-620042-----------------------------
  79941. INT 62 u - FGDRIVER v3.03 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  79942.     AX = 0042h
  79943.     ES:BX -> variable pointer record (see #1940)
  79944.     CX = DAC register number
  79945. Return: variables updated
  79946. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCATE" (see AX=0000h);
  79947.       "FG_GETRGB" was AX=001Ch
  79948.     This call is ignored in text modes and CGA/EGA video modes (since
  79949.       they do not use DAC registers)
  79950. SeeAlso: AX=0035h,AX=006Fh,AX=008Eh
  79951.  
  79952. Format of FGDRIVER variable pointer record:
  79953. Offset    Size    Description    (Table 1940)
  79954.  00h    WORD    segment of WORD buffer for red component of DAC register
  79955.  02h    WORD    offset of WORD buffer for red component
  79956.  04h    WORD    segment of WORD buffer for green component of DAC register
  79957.  06h    WORD    offset of WORD buffer for green component
  79958.  08h    WORD    segment of WORD buffer for blue component of DAC register
  79959.  0Ah    WORD    offset of WORD buffer for blue component
  79960. --------V-620043-----------------------------
  79961. INT 62 u - FGDRIVER v3.03 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  79962.     AX = 0043h
  79963. Return: AX = visible video page (0000h-003Fh)
  79964. Note:    For FGDRIVER v1.10, this function was "FG_FREEPAGE" (see AX=002Eh);
  79965.       "FG_GETVPAGE" was AX=003Eh
  79966. SeeAlso: AX=0037h,AX=0040h,AX=0098h
  79967. --------V-620044-----------------------------
  79968. INT 62 u - FGDRIVER v3.03 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  79969.     AX = 0044h
  79970.     BX = joystick number (0001h or 0002h)
  79971. Return: AX = horizontal position of joystick
  79972.         FFFFh if joystick uninitialized or not present
  79973. Notes:    For FGDRIVER v1.10, this function was "FG_GETADDR" (see AX=002Fh);
  79974.       "FG_GETXJOY" was AX=0076h
  79975.     The actual coordinates are processor- and joystick-dependent
  79976.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  79977. SeeAlso: AX=0009h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  79978. --------V-620045-----------------------------
  79979. INT 62 u - FGDRIVER v3.03 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  79980.     AX = 0045h
  79981. Return: AX = screen space X coordinate of graphics cursor position
  79982. Note:    For FGDRIVER v1.10, this function was "FG_RESIZE" (see AX=0082h);
  79983.       "FG_GETXPOS" was AX=0021h
  79984. SeeAlso: AX=0047h,AX=0068h,AX=0069h
  79985. --------V-620046-----------------------------
  79986. INT 62 u - FGDRIVER v3.03 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  79987.     AX = 0046h
  79988.     BX = joystick number (0001h or 0002h)
  79989. Return: AX = vertical position of joystick
  79990.         FFFFh if joystick uninitialized or not present
  79991. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAP" (see AX=003Ch);
  79992.       "FG_GETYJOY" was AX=0077h
  79993.     The actual coordinates are processor- and joystick-dependent
  79994.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  79995. SeeAlso: AX=0009h,AX=0044h,AX=004Dh,AX=0050h,AX=0061h
  79996. --------V-620047-----------------------------
  79997. INT 62 u - FGDRIVER v3.03 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  79998.     AX = 0047h
  79999. Return: AX = screen space Y coordinate of graphics cursor position
  80000. Note:    For FGDRIVER v1.10, this function was "FG_DRAWMAP" (see AX=001Ch);
  80001.       "FG_GETYPOS" was AX=0022h
  80002. SeeAlso: AX=0045h,AX=0068h,AX=0069h
  80003. --------V-620048-----------------------------
  80004. INT 62 u - FGDRIVER v3.03 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  80005.     AX = 0048h
  80006. Notes:    For FGDRIVER v1.10, this function was "FG_GETIMAGE" (see AX=0038h);
  80007.       "FG_HUSH" was AX=008Eh
  80008.     This function immediately stops any sounds started with "FG_MUSICB",
  80009.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  80010.       is playing
  80011. SeeAlso: AX=0049h,AX=006Bh,AX=009Eh,AX=00ABh
  80012. --------V-620049-----------------------------
  80013. INT 62 u - FGDRIVER v3.03 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  80014.     AX = 0049h
  80015. Program: FGDRIVER is the external video driver for the shareware
  80016.       Fastgraph/Light by Ted Gruber Software
  80017. Notes:    For FGDRIVER v1.10, this function was "FG_DRWIMAGE" (see AX=0022h);
  80018.       "FG_HUSHNEXT" was AX=008Fh
  80019.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  80020.       or "FG_VOICES" after the current repetition completes; it is ignored
  80021.       unless asynchronous sound is continuous
  80022. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  80023. --------V-62004A-----------------------------
  80024. INT 62 u - FGDRIVER v3.03 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  80025.     AX = 004Ah
  80026.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  80027.           images
  80028.     CX = size of buffer in bytes or 0000h to use internal buffer
  80029. Notes:    For FGDRIVER v1.10, this function was "FG_CLPIMAGE" (see AX=0010h);
  80030.       "FG_IMAGEBUF" did not exist yet
  80031.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  80032.       application to define a larger buffer which will typically speed
  80033.       processing
  80034. SeeAlso: AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  80035. --------V-62004B-----------------------------
  80036. INT 62 u - FGDRIVER v3.03 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  80037.     AX = 004Bh
  80038.     BX = image width in pixels
  80039.     CX = image height in pixels
  80040. Note:    For FGDRIVER v1.10, this function was "FG_REVIMAGE" (see AX=0085h);
  80041.       "FG_IMAGESIZ" was AX=0062h
  80042. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  80043. SeeAlso: AX=0031h,AX=007Dh
  80044. --------V-62004C-----------------------------
  80045. INT 62 u - FGDRIVER v3.03 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  80046.     AX = 004Ch
  80047. Return: AX = status
  80048.         0000h successful
  80049.         FFFFh expanded memory manager inaccessible or not installed
  80050. Notes:    For FGDRIVER v1.10, this function was "FG_FLPIMAGE" (see AX=002Ch);
  80051.       "FG_INITEMS" was AX=00A0h
  80052. SeeAlso: AX=0002h,AX=004Eh
  80053. --------V-62004D-----------------------------
  80054. INT 62 u - FGDRIVER v3.03 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  80055.     AX = 004Dh
  80056.     BX = joystick number (0001h or 0002h)
  80057. Return: AX = status
  80058.         0000h successful
  80059.         FFFFh joystick not connected or no game port
  80060. Notes:    For FGDRIVER v1.10, this function was "FG_DISPLAY" (see AX=0019h);
  80061.       "FG_INITJOY" was AX=0075h
  80062.     Fastgraph assumes that the requested joystick is centered at the time
  80063.       this function is called
  80064. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=0050h,AX=0061h
  80065. --------V-62004E-----------------------------
  80066. INT 62 u - FGDRIVER v3.03 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  80067.     AX = 004Eh
  80068. Return: AX = status
  80069.         0000h successful
  80070.         FFFFh extended memory manager inaccessible or not installed
  80071. Note:    For FGDRIVER v1.10, this function was "FG_DISPLAYP" (see AX=001Ah);
  80072.       "FG_INITXMS" was AX=00A1h
  80073. SeeAlso: AX=0003h,AX=004Ch
  80074. --------V-62004F-----------------------------
  80075. INT 62 u - FDGRIVER v3.03 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  80076.     AX = 004Fh
  80077.     ES:BX -> vertex array
  80078.     CX = number of vertices
  80079.     DX = screen space column of point to test
  80080.     SI = screen space row of point to test
  80081. Return: AX = result
  80082.         0000h point is outside polygon
  80083.         0001h point is inside polygon
  80084.         undefined if not a convex polygon
  80085. Note:    For FGDRIVER v1.10, this function was "FG_DISPFILE" (see AX=0018h);
  80086.       "FG_INSIDE" did not exist yet
  80087. SeeAlso: AX=0078h,AX=0079h,AX=007Ah
  80088. --------V-620050-----------------------------
  80089. INT 62 u - FGDRIVER v3.03 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  80090.     AX = 0050h
  80091.     CX = joystick number (0001h or 0002h)
  80092.     ES:BX -> variable pointer record (see #1941)
  80093. Notes:    For FGDRIVER v1.10, this function was "FG_PATTERN" (see AX=0072h);
  80094.       "FG_INTJOY" was AX=0079h
  80095.     If the indicated joystick has not been initialized with AX=0075h, both
  80096.       the button code and joystick position will be set to 00h
  80097.     If either button is pressed, a button code of 0Dh is returned;
  80098.       otherwise, a button code of 00h is returned
  80099. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=004Dh,AX=0061h
  80100.  
  80101. Format of FGDRIVER variable pointer record:
  80102. Offset    Size    Description    (Table 1941)
  80103.  00h    WORD    segment of BYTE buffer for button code
  80104.  02h    WORD    offset of BYTE buffer for button code
  80105.  04h    WORD    segment of BYTE buffer for joystick position
  80106.  06h    WORD    offset of BYTE buffer for joystick position
  80107. --------V-620051-----------------------------
  80108. INT 62 u - FGDRIVER v3.03 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  80109.     AX = 0051h
  80110.     ES:BX -> variable pointer record (see #1942)
  80111. Return: variables updated
  80112. Notes:    For FGDRIVER v1.10, this function was "FG_DRAWMASK" (see AX=001Dh);
  80113.       "FG_INTKEY" was AX=006Fh
  80114.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  80115.       are set to 00h
  80116. SeeAlso: AX=000Ah,AX=003Ah,AX=0054h,AX=00ADh,INT 16/AH=01h
  80117.  
  80118. Format of FGDRIVER variable pointer record:
  80119. Offset    Size    Description    (Table 1942)
  80120.  00h    WORD    segment of BYTE buffer for ASCII keycode
  80121.  02h    WORD    offset of BYTE buffer for ASCII keycode
  80122.  04h    WORD    segment of BYTE buffer for extended keycode
  80123.  06h    WORD    offset of BYTE buffer for extended keycode
  80124. --------V-620052-----------------------------
  80125. INT 62 u - FGDRIVER v3.03 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  80126.     AX = 0052h
  80127.     BX = horizontal justification
  80128.           (00h centered, 01h right-justified, FFh left-justified)
  80129.     CX = vertical justification
  80130.           (00h centered, 01h top of characters, FFh bottom of chars)
  80131. Note:    For FGDRIVER v1.10, this function was "FG_CLIPMASK" (see AX=000Fh);
  80132.       "FG_JUSTIFY" did not exist yet
  80133. SeeAlso: AX=000Ch,AX=002Dh,AX=007Ch
  80134. --------V-620053-----------------------------
  80135. INT 62 u - FGDRIVER v3.03 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  80136.     AX = 0053h
  80137.     BX = new state (0000h disabled, 0001h enabled)
  80138. Notes:    For FGDRIVER v1.10, this function was "FG_REVMASK" (see AX=0086h);
  80139.       "FG_KBINIT" did not exist yet
  80140.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  80141.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  80142.       services become unavailable
  80143. SeeAlso: AX=0054h
  80144. --------V-620054-----------------------------
  80145. INT 62 u - FGDRIVER v3.03 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  80146.     AX = 0054h
  80147.     BX = scan code of desired key
  80148. Return: AX = state
  80149.         0000h key is not pressed
  80150.         0001h key is currently pressed
  80151. Notes:    For FGDRIVER v1.10, this function was "FG_FLIPMASK" (see AX=002Ah);
  80152.       "FG_KBTEST" did not exist yet
  80153.     The low-level keyboard handler must have been enabled with AX=0053h
  80154. SeeAlso: AX=0053h,INT 16/AH=01h
  80155. --------V-620055-----------------------------
  80156. INT 62 u - FGDRIVER v3.03 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  80157.     AX = 0055h
  80158.     BX = row
  80159.     CX = column
  80160. Notes:    For FGDRIVER v1.10, this function was unused; "FG_LOCATE" was AX=0033h
  80161.     There are only eight text cursors shared by successive groups of
  80162.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  80163.       share the second, etc)
  80164. SeeAlso: AX=0045h,AX=0047h,AX=0068h,AX=00AFh
  80165. --------V-620056-----------------------------
  80166. INT 62 u - FGDRIVER v3.03 - UNUSED
  80167.     AX = 0056h
  80168. Return: AX destroyed
  80169. --------V-620057-----------------------------
  80170. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  80171.     AX = 0057h
  80172.     BX = left edge in screen space units
  80173.     CX = right edge in screen space units
  80174.     DX = top edge in screen space units
  80175.     SI = bottom edge in screen space units
  80176.     ES:DI -> ASCIZ filename of PCX file to create
  80177. Return: AX = status
  80178.         0000h successful
  80179.         0001h file not created
  80180. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPCX" was AX=0061h
  80181.     The PCX file is created from the specified region of the active video
  80182.       page; the left and right edges are adjusted to a byte boundary if
  80183.       necessary
  80184.     If the specified file already exists, it is overwritten
  80185.     This call is ignored in text and Hercules low-resolution graphics modes
  80186. SeeAlso: AX=004Ah,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  80187. --------V-620058-----------------------------
  80188. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  80189.     AX = 0058h
  80190.     BX = left edge in screen space units
  80191.     CX = right edge in screen space units
  80192.     DX = top edge in screen space units
  80193.     SI = bottom edge in screen space units
  80194.     ES:DI -> ASCIZ filename of PPR file to create
  80195. Return: AX = status
  80196.         0000h successful
  80197.         0001h file not created
  80198. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPPR" did not
  80199.       exist yet
  80200.     The PPR file is created from the specified region of the active video
  80201.       page; the left and right edges are adjusted to byte boundaries if
  80202.       necessary
  80203.     If the specified file already exists, it is overwritten
  80204.     This call is ignored in text modes
  80205. SeeAlso: AX=004Ah,AX=0057h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  80206. --------V-620059-----------------------------
  80207. INT 62 u - FGDRIVER v3.03 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  80208.     AX = 0059h
  80209.     BX = left edge in screen space units
  80210.     CX = right edge in screen space units
  80211.     DX = top edge in screen space units
  80212.     SI = bottom edge in screen space units
  80213.     ES:DI -> ASCIZ filename of SPR file to create
  80214. Return: AX = status
  80215.         0000h successful
  80216.         0001h file not created
  80217. Note:    For FGDRIVER v1.10, this function was unused; "FG_MAKESPR" did not
  80218.       exist yet
  80219.     The SPR file is created from the specified region of the active video
  80220.       page; the left and right edges are adjusted to byte boundaries if
  80221.       necessary
  80222.     If the specified file already exists, it is overwritten
  80223.     This call is ignored in text modes
  80224. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=009Ah,AX=009Bh,AX=009Ch
  80225. --------V-62005A-----------------------------
  80226. INT 62 u - FGDRIVER v3.03 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  80227.     AX = 005Ah
  80228.     BX = red component
  80229.     CX = green component
  80230.     DX = blue component
  80231. Return: AX = mode-specific palette value corresponding to specified components
  80232. Notes:    For FGDRIVER v1.10, this function was "FG_SAVE" (see AX=0087h);
  80233.       "FG_MAPRGB" was AX=001Dh
  80234.     This function is only meaningful in 16-color graphics modes
  80235. SeeAlso: AX=0042h,AX=0096h
  80236. --------V-62005B-----------------------------
  80237. INT 62 u - FGDRIVER v3.03 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  80238.     AX = 005Bh
  80239. Return: AX = delay units per clock tick (processor-dependent)
  80240. Notes:    For FGDRIVER v1.10, this function was "FG_RESTORE" (see AX=0083h);
  80241.       "FG_MEASURE" was AX=0098h
  80242.     These delay units are used by "FG_STALL" (see AX=009Fh)
  80243. SeeAlso: AX=009Fh
  80244. --------V-62005C-----------------------------
  80245. INT 62 u - FGDRIVER v3.03 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  80246.     AX = 005Ch
  80247. Return: DX:AX = number of bytes of conventional memory available
  80248. Note:    For FGDRIVER v1.10, this function was "FG_TRANSFER" (see AX=00A9h);
  80249.       "FG_MEMAVAIL" was AX=009Bh
  80250. SeeAlso: AX=004Ch,AX=005Dh
  80251. --------V-62005D-----------------------------
  80252. INT 62 u - FGDRIVER v3.03 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  80253.     AX = 005Dh
  80254. Return: AX = size of video memory in KB
  80255. Notes:    For FGDRIVER v1.10, this function was "FG_TCXFER" (see AX=00A6h);
  80256.       "FG_MEMORY" did not exist yet
  80257.     You must first call "FG_SVGAINIT" (see AX=00A1h) before using this
  80258.       function
  80259. SeeAlso: AX=005Ch
  80260. --------V-62005E-----------------------------
  80261. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  80262.     AX = 005Eh
  80263.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  80264.           -1=left release, -2=right release, -3=middle release)
  80265.     ES:BX -> variable pointer record (see #1943)
  80266. Return: variables updated
  80267. Notes:    For FGDRIVER v1.10, this function was "FG_TCMASK" (see AX=00A5h);
  80268.       "FG_MOUSEBUT" was AX=007Ch
  80269.     This function returns the count of presses or releases since the last
  80270.       call to this function; if the count is zero, row and column will
  80271.       also be zero
  80272. SeeAlso: AX=005Fh,AX=0061h,AX=0064h
  80273.  
  80274. Format of FGDRIVER variable pointer record:
  80275. Offset    Size    Description    (Table 1943)
  80276.  00h    WORD    segment of WORD buffer for press/release count
  80277.  02h    WORD    offset of WORD buffer for press/release count
  80278.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  80279.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  80280.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  80281.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  80282. --------V-62005F-----------------------------
  80283. INT 62 u - FGDRIVER v3.03 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  80284.     AX = 005Fh
  80285.     BX = screen mask
  80286.     CX = cursor mask
  80287. Notes:    For FGDRIVER v1.10, this function was "FG_COPYPAGE" (see AX=0012h);
  80288.       "FG_MOUSECUR" was AX=007Eh
  80289.     This call is ignored in graphics modes
  80290. SeeAlso: AX=0065h,AX=0067h
  80291. --------V-620060-----------------------------
  80292. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  80293.     AX = 0060h
  80294.     ES:BX -> ASCIZ filename
  80295.     CX = flags
  80296.         bit 0: use current palette rather than PCX file's palette
  80297.         bits 1-15 reserved (0)
  80298. Return: AX = status
  80299.         0000h success
  80300.         0001h file not found
  80301.         0002h file is not a valid PCX file
  80302. Notes:    This call is ignored in text modes and Hercules low-resolution graphics
  80303.     The image is displayed with its upper left corner at the current
  80304.       graphics cursor position
  80305. SeeAlso: AX=009Ah
  80306. --------V-620060-----------------------------
  80307. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  80308.     AX = 0060h
  80309. Notes:    For FGDRIVER v1.10, this function was "FG_DISPPCX", which no longer
  80310.       exists; "FG_MOUSEFIN" did not exist yet
  80311.     This function should be called before switching back to text mode if
  80312.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  80313. SeeAlso: AX=0061h
  80314. --------V-620061-----------------------------
  80315. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  80316.     AX = 0061h
  80317. Return: AX = status
  80318.         0002h two-button mouse
  80319.         0003h three-button mouse
  80320.         FFFFh initialization failed
  80321. Notes:    For FGDRIVER v1.10, this function was "FG_MAKEPCX" (see AX=0057h);
  80322.       "FG_MOUSEINI" was AX=007Ah
  80323.     After this call, the mouse cursor is invisible
  80324. SeeAlso: AX=0060h"3.03",AX=0062h,AX=0066h
  80325. --------V-620062-----------------------------
  80326. INT 62 u - FGDRIVER v3.03 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  80327.     AX = 0062h
  80328.     BX = left-most position allowed for mouse cursor
  80329.     CX = right-most position allowed
  80330.     DX = top-most position allowed
  80331.     SI = bottom-most position allowed
  80332. Note:    For FGDRIVER v1.10, this function was "FG_IMAGESIZ" (see AX=004Bh);
  80333.       "FG_MOUSELIM" was AX=0080h
  80334. SeeAlso: AX=0061h,AX=0063h,INT 33/AX=0007h,INT 33/AX=0008h
  80335. --------V-620063-----------------------------
  80336. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  80337.     AX = 0063h
  80338.     BX = new column
  80339.     CX = new row
  80340. Notes:    For FGDRIVER v1.10, this function was unused;"FG_MOUSEMOV" was AX=0081h
  80341.     This function will not move the mouse cursor outside the bounding box
  80342.       specified with AX=0080h
  80343. SeeAlso: AX=0062h,AX=0064h,INT 33/AX=0004h
  80344. --------V-620064-----------------------------
  80345. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  80346.     AX = 0064h
  80347.     ES:BX -> variable pointer record (see #1944)
  80348. Notes:    For FGDRIVER v1.10, this function was "FG_FADEIN" (see AX=0027h);
  80349.       "FG_MOUSEPOS" was AX=007Dh
  80350. SeeAlso: AX=0063h
  80351.  
  80352. Format of FGDRIVER variable pointer record:
  80353. Offset    Size    Description    (Table 1944)
  80354.  00h    WORD    segment of WORD buffer for mouse column
  80355.  02h    WORD    offset of WORD buffer for mouse column
  80356.  04h    WORD    segment of WORD buffer for mouse row
  80357.  06h    WORD    offset of WORD buffer for mouse row
  80358.  08h    WORD    segment of WORD buffer for button status
  80359.  0Ah    WORD    offset of WORD buffer for button status
  80360. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  80361. --------V-620065-----------------------------
  80362. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  80363.     AX = 0065h
  80364.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  80365.     CX = X offset of hot spot from upper left corner
  80366.     DX = Y offset of hot spot from upper left corner
  80367. Notes:    For FGDRIVER v1.10, this function was "FG_FADEOUT" (see AX=0028h);
  80368.       "FG_MOUSEPTR" was AX=007Fh
  80369.     This call is ignored in text modes
  80370. SeeAlso: AX=005Fh,INT 33/AX=0009h
  80371. --------V-620066-----------------------------
  80372. INT 62 u - FGDRIVER v3.03 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  80373.     AX = 0066h
  80374.     BX = horizontal mickeys per eight pixels of movement (default 16)
  80375.     CX = vertical mickeys per eight pixels of movement (default 16)
  80376. Note:    For FGDRIVER v1.10, this function was "FG_PAN" (see AX=0071h);
  80377.       "FG_MOUSESPD" was AX=0082h
  80378. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  80379. --------V-620067-----------------------------
  80380. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  80381.     AX = 0067h
  80382.     BX = new state (0000h invisible, 0001h visible)
  80383. Note:    For FGDRIVER v1.10, this function was "FG_SCROLL" (see AX=0089h);
  80384.       "FG_MOUSEVIS" was AX=007Bh
  80385. SeeAlso: AX=0061h,INT 33/AX=0001h,INT 33/AX=0002h
  80386. --------V-620068-----------------------------
  80387. INT 62 u - FGDRIVER v3.03 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  80388.     AX = 0068h
  80389.     BX = new column
  80390.     CX = new row
  80391. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVE" was AX=0023h
  80392.     This call is ignored in text modes
  80393. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0063h,AX=0069h,AX=00AFh
  80394. --------V-620069-----------------------------
  80395. INT 62 u - FGDRIVER v3.03 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  80396.     AX = 0069h
  80397.     BX = column offset
  80398.     CX = row offset
  80399. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVEREL" was AX=0024h
  80400.     This call is ignored in text modes
  80401. SeeAlso: AX=0045h,AX=0047h,AX=0068h
  80402. --------V-62006A-----------------------------
  80403. INT 62 u - FGDRIVER v3.03 - "FG_MUSIC" - PLAY SERIES OF NOTES
  80404.     AX = 006Ah
  80405.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  80406. Return: after music completed
  80407. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSIC" was AX=008Ch
  80408.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  80409.       AX=008Dh) is already in progress
  80410. SeeAlso: AX=006Bh,AX=009Dh,AX=00AAh
  80411. --------V-62006B-----------------------------
  80412. INT 62 u - FGDRIVER v3.03 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  80413.     AX = 006Bh
  80414.     CX = number of repetitions (negative = continuous play)
  80415.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  80416. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSICB" was AX=008Dh
  80417.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  80418.       AX=008Dh) is already in progress
  80419. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  80420. --------V-62006C-----------------------------
  80421. INT 62 u - FGDRIVER v3.03 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  80422.     AX = 006Ch
  80423. Return: AX = NumLock state (0000h off, 0001h on)
  80424. Note:    For FGDRIVER v1.10, this function was unused; "FG_NUMLOCK" was AX=0072h
  80425. SeeAlso: AX=000Ah,AX=0088h,AX=008Bh,AX=0094h
  80426. --------V-62006D-----------------------------
  80427. INT 62 u - FGDRIVER v3.03 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  80428.     AX = 006Dh
  80429. Return: DX:AX = page size in bytes
  80430. Note:    For FGDRIVER v1.10, this function was "FG_WAITKEY" (see AX=00ADh);
  80431.       "FG_PAGESIZE" did not exist yet
  80432. SeeAlso: AX=005Dh
  80433. --------V-62006E-----------------------------
  80434. INT 62 u - FGDRIVER v3.03 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  80435.     AX = 006Eh
  80436.     BX = column
  80437.     CX = row
  80438. Notes:    For FGDRIVER v1.10, this function was "FG_GETKEY" (see AX=003Ah);
  80439.       "FG_PAINT" was AX=002Fh
  80440.     This function fills an arbitrary closed region around the specified
  80441.       point with the current color; the screen edges are not considered
  80442.       region boundaries
  80443.     This call is ignored in text modes
  80444. SeeAlso: AX=002Bh
  80445. --------V-62006F-----------------------------
  80446. INT 62 u - FGDRIVER v3.03 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  80447.     AX = 006Fh
  80448. ---CGA 4-color graphics---
  80449.     BX = CGA paletee number
  80450.     CX = background color
  80451. ---CGA 2-color graphics---
  80452.     BX ignored
  80453.     CX = foreground color
  80454. ---16-color graphics---
  80455.     BX = palette register number
  80456.     CX = palette value
  80457. ---256-color graphics---
  80458.     BX = DAC register number
  80459.     CX =  DAC value
  80460. Notes:    For FGDRIVER v1.10, this function was "FG_INTKEY" (see AX=0051h);
  80461.       "FG_PALETTE" was AX=0017h
  80462.     This function is ignored in text modes and Hercules graphics modes
  80463.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  80464. SeeAlso: AX=0035h,AX=0042h,AX=0070h,AX=008Eh
  80465. --------V-620070-----------------------------
  80466. INT 62 u - FGDRIVER v3.03 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  80467.     AX = 0070h
  80468.     ES:BX -> array of 16 WORDs containing values for palette registers
  80469.           (or first 16 DAC registers in 256-color modes)
  80470. Notes:    For FGDRIVER v1.10, this function was "FG_CAPSLOCK" (see AX=000Ah);
  80471.       "FG_PALETTES" was AX=0018h
  80472.     This function is ignored in text modes, CGA and Hercules graphics modes
  80473. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,AX=008Eh
  80474. --------V-620071-----------------------------
  80475. INT 62 u - FGDRIVER v3.03 - "FG_PAN" - SET SCREEN ORIGIN
  80476.     AX = 0071h
  80477.     BX = new column for screen origin
  80478.     CX = new row for screen origin
  80479. Note:    For FGDRIVER v1.10, this function was "FG_SETCAPS" (see AX=008Bh);
  80480.       "FG_PAN" was AX=0066h
  80481. SeeAlso: AX=0095h
  80482. --------V-620072-----------------------------
  80483. INT 62 u - FGDRIVER v3.03 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  80484.     AX = 0072h
  80485.     BX = index of pattern to define
  80486.     CX = number of predefined display pattern
  80487. Notes:    For FGDRIVER v1.10, this function was "FG_NUMLOCK" (see AX=006Ch);
  80488.       "FG_PATTERN" was AX=0050h
  80489.     When displaying a pixel run map, Fastgraph uses the pattern associated
  80490.       with each color index rather than displaying the actual color
  80491.     This call has no effect in text and 256-color graphics modes
  80492. SeeAlso: AX=0021h,AX=0039h
  80493. --------V-620073-----------------------------
  80494. INT 62 u - FGDRIVER v3.03 - "FG_PCXHEAD" - GET PCX FILE HEADER
  80495.     AX = 0073h
  80496.     ES:BX -> variable pointer record (see #1945)
  80497. Return: AX = status
  80498.         0000h successful
  80499.         FFFEh not a PCX file
  80500.         FFFFh file does not exist
  80501. Note:    For FGDRIVER v1.10, this function was "FG_SETNUM" (see AX=0094h);
  80502.       "FG_PCXHEAD" did not exist yet
  80503. SeeAlso: AX=0074h,AX=009Ah
  80504.  
  80505. Format of FGDRIVER variable pointer record:
  80506. Offset    Size    Description    (Table 1945)
  80507.  00h    WORD    segment of ASCIZ filename
  80508.  02h    WORD    offset of ASCIZ filename
  80509.  04h    WORD    segment of 128-byte buffer for PCX header
  80510.  06h    WORD    offset of 128-byte buffer for PCX header
  80511. --------V-620074-----------------------------
  80512. INT 62 u - FGDRIVER v3.03 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  80513.     AX = 0074h
  80514.     ES:BX -> PCX header (see AX=0073h)
  80515. Return: AX = optimal video mode for PCX file
  80516.         FFFEh not a valid PCX header
  80517.         FFFFh unable to determine compatible video mode
  80518. Note:    For FGDRIVER v1.10, this function was "FG_SCRLOCK" (see AX=0088h);
  80519.       "FG_PCXMODE" did not exist yet
  80520. SeeAlso: AX=0073h,AX=009Ah
  80521. --------V-620075-----------------------------
  80522. INT 62 u - FGDRIVER v3.03 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  80523.     AX = 0075h
  80524. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  80525. Note:    For FGDRIVER v1.10, this function was "FG_INITJOY" (see AX=004Dh);
  80526.       "FG_PLAYING" was AX=0091h
  80527. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  80528. --------V-620076-----------------------------
  80529. INT 62 u - FGDRIVER v3.03 - "FG_POINT" - DISPLAY A PIXEL
  80530.     AX = 0076h
  80531.     BX = column
  80532.     CX = row
  80533. Notes:    For FGDRIVER v1.10, this function was "FG_GETXJOY" (see AX=0044h);
  80534.       "FG_POINT" was AX=001Fh
  80535.     This call is ignored in text modes
  80536. SeeAlso: AX=0006h,AX=001Bh,AX=0041h,AX=0077h
  80537. --------V-620077-----------------------------
  80538. INT 62 u - FGDRIVER v3.03 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  80539.     AX = 0077h
  80540.     BX = column
  80541.     CX = row
  80542. Notes:    For FGDRIVER v1.10, this function was "FG_GETYJOY" (see AX=0046h);
  80543.       "FG_POINTX" did not exist yet
  80544.     This call is ignored in text modes
  80545. SeeAlso: AX=0041h,AX=0076h
  80546. --------V-620078-----------------------------
  80547. INT 62 u - FGDRIVER v3.03 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  80548.     AX = 0078h
  80549.     CX = number of vertices
  80550.     ES:BX -> variable pointer record (see #1946)
  80551. Notes:    For FGDRIVER v1.10, this function was "FG_BUTTON" (see AX=0009h);
  80552.       "FG_POLYFILL" did not exist yet
  80553.     The vertex array consists of pairs of words specifying the X and Y
  80554.       coordinates of each vertex; the work array is used internally and
  80555.       must contain at least four times as many bytes as the polygon is
  80556.       high in pixels
  80557.     This function is ignored in text modes
  80558.     If the polygon is non-convex, only a portion of it may be filled
  80559. SeeAlso: AX=000Eh,AX=0025h,AX=0079h,AX=007Ah,AX=007Bh
  80560.  
  80561. Format of FGDRIVER variable pointer record:
  80562. Offset    Size    Description    (Table 1946)
  80563.  00h    WORD    segment of vertex array
  80564.  02h    WORD    offset of vertex array
  80565.  04h    WORD    segment of work array
  80566.  06h    WORD    offset of work array
  80567. --------V-620079-----------------------------
  80568. INT 62 u - FGDRIVER v3.03 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  80569.     AX = 0079h
  80570.     CX = number of vertices in polygon
  80571.     ES:BX -> variable pointer record (see #1947)
  80572. Notes:    For FGDRIVER v1.10, this function was "FG_INTJOY" (see AX=0050h);
  80573.       "FG_POLYGON" was AX=002Eh
  80574.     This call is ignored in text modes
  80575. SeeAlso: AX=0078h,AX=007Ah,AX=007Bh
  80576.  
  80577. Format of FGDRIVER variable pointer record:
  80578. Offset    Size    Description    (Table 1947)
  80579.  00h    WORD    segment of WORD array containing vertex columns
  80580.  02h    WORD    offset of WORD array containing vertex columns
  80581.  04h    WORD    segment of WORD array containing vertex rows
  80582.  06h    WORD    offset of WORD array containing vertex rows
  80583. --------V-62007A-----------------------------
  80584. INT 62 u - FGDRIVER v3.03 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  80585.     AX = 007Ah
  80586.     CX = number of vertices in polygon
  80587.     ES:BX -> vertex array (see #1948)
  80588. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEINI" (see AX=0061h);
  80589.       "FG_POLYLINE" did not exist yet
  80590.     This function is equivalent to "FG_POLYGON", but uses only a single
  80591.       array to define the vertices
  80592.     This call is ignored in text modes
  80593. SeeAlso: AX=0076h,AX=0078h,AX=0079h,AX=007Bh
  80594.  
  80595. Format of FGDRIVER vertex array element:
  80596. Offset    Size    Description    (Table 1948)
  80597.  00h    WORD    column
  80598.  02h    WORD    row
  80599. --------V-62007B-----------------------------
  80600. INT 62 u - FGDRIVER v3.03 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  80601.     AX = 007Bh
  80602.     BX = horizontal offset (default 0)
  80603.     CX = vertical offset (default 0)
  80604. Desc:    define the offsets applied to all vertices of polygons drawn with
  80605.       "FG_POLYFILL" or "FG_POLYLINE"
  80606. Note:    For FGDRIVER v1.10, this function was "FG_MOUSEVIS" (see AX=0067h);
  80607.       "FG_POLYOFF" did not exist yet
  80608. SeeAlso: AX=0078h,AX=007Ah
  80609. --------V-62007C-----------------------------
  80610. INT 62 u - FGDRIVER v3.03 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  80611.     AX = 007Ch
  80612.     CX = length of string
  80613.     ES:BX -> string to display
  80614. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEBUT" (see AX=005Eh);
  80615.       "FG_PRINT" did not exist yet
  80616.     The string is displayed in the current color, and the graphics cursor
  80617.       is updated to be just to the right of the last displayed character
  80618.     This function is ignored in text modes
  80619. SeeAlso: AX=000Ch,AX=002Dh,AX=0052h
  80620. --------V-62007D-----------------------------
  80621. INT 62 u - FGDRIVER v3.03 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  80622.     AX = 007Dh
  80623.     ES:BX -> buffer containing previously-saved image
  80624.     CX = left edge
  80625.     DX = right edge
  80626.     SI = top edge
  80627.     DI = bottom edge
  80628. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPOS" (see AX=0064h);
  80629.       "FG_PUTBLOCK" did not exist yet
  80630.     In text modes, coordinates are character positions; in graphics modes,
  80631.       they are defined in screen space, and the left and right edges are
  80632.       adjusted to a byte boundary if necessary
  80633. SeeAlso: AX=0031h,AX=007Eh
  80634. --------V-62007E-----------------------------
  80635. INT 62 u - FGDRIVER v3.03 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  80636.     AX = 007Eh
  80637.     ES:BX -> buffer containing mode-specific bitmap
  80638.     CX = width in bytes
  80639.     DX = height in pixel rows
  80640. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSECUR" (see AX=005Fh);
  80641.       "FG_PUTIMAGE" did not exist yet
  80642.     The bitmap is displayed with its lower left corner at the graphics
  80643.       cursor position; color 0 is NOT treated as transparent
  80644. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Dh
  80645. --------V-62007F-----------------------------
  80646. INT 62 u - FGDRIVER v3.03 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  80647.     AX = 007Fh
  80648. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPTR" (see AX=0065h);
  80649.       "FG_QUIET" was AX=0090h
  80650.     This call has no effect if there is no continuous sound playing
  80651. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00ABh
  80652. --------V-620080-----------------------------
  80653. INT 62 u - FGDRIVER v3.03 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  80654.     AX = 0080h
  80655.     BX = left edge column
  80656.     CX = right edge column
  80657.     DX = top edge row
  80658.     SI = bottom edge row
  80659. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSELIM" (see AX=0062h);
  80660.       "FG_RECT" was AX=002Ah
  80661. SeeAlso: AX=0006h,AX=0011h,AX=0021h,AX=0031h
  80662. --------V-620081-----------------------------
  80663. INT 62 u - FGDRIVER v3.03 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  80664.     AX = 0081h
  80665. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEMOV" (see AX=0063h);
  80666.       "FG_RESET" was AX=0006h
  80667.     This call is ignored in graphics modes
  80668.     The screen attributes are only restored if ANSI.SYS is loaded
  80669. SeeAlso: AX=0026h,AX=0093h
  80670. --------V-620082-----------------------------
  80671. INT 62 u - FGDRIVER v3.03 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  80672.     AX = 0082h
  80673.     BX = new page width in pixels
  80674.     CX = new page height in pixels
  80675. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSESPD" (see AX=0066h);
  80676.       "FG_RESIZE" was AX=0045h
  80677.     The visible page must be set to 0000h before making this call
  80678.     The mouse, joysticks, expanded memory, and extended memory must be
  80679.       reinitialized after this call
  80680. SeeAlso: AX=006Dh,AX=008Fh
  80681. --------V-620083-----------------------------
  80682. INT 62 u - FGDRIVER v3.03 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  80683.     AX = 0083h
  80684.     BX = left edge column
  80685.     CX = right edge column
  80686.     DX = top edge row
  80687.     SI = bottom edge row
  80688. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESTORE" was AX=005Bh
  80689.     The left and right edges are adjusted to byte boundaries if necessary
  80690. SeeAlso: AX=0087h,AX=00A6h
  80691. --------V-620084-----------------------------
  80692. INT 62 u - FGDRIVER v3.03 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  80693.     AX = 0084h
  80694. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESUME" was AX=0092h
  80695. SeeAlso: AX=009Eh,AX=00A0h
  80696. --------V-620085-----------------------------
  80697. INT 62 u - FGDRIVER v3.03 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  80698.     AX = 0085h
  80699.     ES:BX -> mode-specific bitmap
  80700.     CX = width of bitmap in bytes
  80701.     DX = height of bitmap in pixel rows
  80702. Notes:    For FGDRIVER v1.10, this function was unused;"FG_REVIMAGE" was AX=004Bh
  80703.     This call is ignored in text modes
  80704.     The image is drawn with its lower left corner at the current graphics
  80705.       cursor position
  80706. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=0086h,AX=008Ch,AX=009Ah
  80707. --------V-620086-----------------------------
  80708. INT 62 u - FGDRIVER v3.03 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  80709.     AX = 0086h
  80710.     ES:BX -> array containing image stored as a masking map (see #1936)
  80711.     CX = number of pixel runs in masking map
  80712.     DX = width of masking map in pixels
  80713. Notes:    For FGDRIVER v1.10, this function was unused; "FG_REVMASK" was AX=0053h
  80714.     This call is ignored in text modes and in native EGA and VGA graphics
  80715.       modes
  80716.     The image is drawn with its lower left corner at the current graphics
  80717.       cursor position
  80718. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0085h,AX=008Ch,AX=00A5h
  80719. --------V-620087-----------------------------
  80720. INT 62 u - FGDRIVER v3.03 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  80721.     AX = 0087h
  80722.     BX = left edge column
  80723.     CX = right edge column
  80724.     DX = top edge row
  80725.     SI = bottom edge row
  80726. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SAVE" was AX=005Ah
  80727.     The left and right edges are adjusted to byte boundaries if necessary
  80728. SeeAlso: AX=0083h,AX=00A6h
  80729. --------V-620088-----------------------------
  80730. INT 62 u - FGDRIVER v3.03 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  80731.     AX = 0088h
  80732. Return: AX = ScrollLock state (0000h off, 0001h on)
  80733. Program: FGDRIVER is the external video driver for the shareware
  80734.       Fastgraph/Light by Ted Gruber Software
  80735. Note:    For FGDRIVER v1.10, this function was "FG_SOUND" (see AX=009Dh);
  80736.       "FG_SCRLOCK" was AX=0074h
  80737. SeeAlso: AX=000Ah,AX=006Ch,AX=008Bh,AX=0094h
  80738. --------V-620089-----------------------------
  80739. INT 62 u - FGDRIVER v3.03 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  80740.     AX = 0089h
  80741.     BX = left edge column
  80742.     CX = right edge column
  80743.     DX = top edge row
  80744.     SI = bottom edge row
  80745.     DI = number of pixels by which to scroll (positive scrolls up,
  80746.           negative scrolls down)
  80747.     ES = type of scroll
  80748.         0000h circular (rows scrolled off are copied to vacated rows)
  80749.         else vacated rows are filled with the current color
  80750. Notes:    For FGDRIVER v1.10, this function was "FG_SOUNDS" (see AX=009Eh);
  80751.       "FG_SCROLL" was AX=0067h
  80752.     In graphics modes, the left and right edges are adjusted to byte
  80753.       boundaries if necessary
  80754.     Circular scrolling uses part of the hidden page as a workspace
  80755. SeeAlso: AX=0071h,AX=0095h
  80756. --------V-62008A-----------------------------
  80757. INT 62 u - FGDRIVER v3.03 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  80758.     AX = 008Ah
  80759.     BX = foreground
  80760.     CX = background
  80761.     DX = blink (0000h nonblinking, 0001h blink)
  80762. Notes:    For FGDRIVER v1.10, this function was "FG_VOICE" (see AX=00AAh);
  80763.       "FG_SETATTR" was AX=0019h
  80764.     This call is ignored in graphics modes
  80765. SeeAlso: AX=000Bh,,AX=0030h,AX=0034h
  80766. --------V-62008B-----------------------------
  80767. INT 62 u - FGDRIVER v3.03 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  80768.     AX = 008Bh
  80769.     BX = new state (0000h off, 0001h on)
  80770. Note:    For FGDRIVER v1.10, this function was "FG_VOICES" (see AX=00ABh);
  80771.       "FG_SETCAPS" was AX=0071h
  80772. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=0094h
  80773. --------V-62008C-----------------------------
  80774. INT 62 u - FGDRIVER v3.03 - "FG_SETCLIP" - SET CLIPPING REGION
  80775.     AX = 008Ch
  80776.     BX = left edge of clipping region
  80777.     CX = right edge of clipping region
  80778.     DX = top edge of clipping region
  80779.     SI = bottom edge of clipping region
  80780. Note:    For FGDRIVER v1.10, this function was "FG_MUSIC" (see AX=006Ah);
  80781.       "FG_SETCLIP" was AX=0029h
  80782. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0086h,AX=00A5h
  80783. --------V-62008D-----------------------------
  80784. INT 62 u - FGDRIVER v3.03 - "FG_SETCOLOR" - SET CURRENT COLOR
  80785.     AX = 008Dh
  80786.     BX = new color index (or text attribute in text modes)
  80787. Note:    For FGDRIVER v1.10, this function was "FG_MUSICB" (see AX=006Bh);
  80788.       "FG_SETCOLOR" was AX=001Ah
  80789. SeeAlso: AX=0016h,AX=0034h,AX=0039h
  80790. --------V-62008E-----------------------------
  80791. INT 62 u - FGDRIVER v3.03 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  80792.     AX = 008Eh
  80793.     CX = number of DAC registers to set (0001h to 0100h)
  80794.     DX = starting DAC register number (0000h to 00FFh)
  80795.     ES:BX -> buffer containing DAC red/green/blue triples
  80796. Notes:    For FGDRIVER v1.10, this function was "FG_HUSH" (see AX=0048h);
  80797.       "FG_SETDACS" was AX=00A5h
  80798.     The register number wraps back to zero after reaching FFh
  80799.     This call has no effect in text modes or graphics modes below 11h
  80800. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,INT 10/AX=1012h
  80801. --------V-62008F-----------------------------
  80802. INT 62 u - FGDRIVER v3.03 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  80803.     AX = 008Fh
  80804.     BX = page number (00h-3Fh)
  80805.     CX = page address
  80806.     DX = page type (see #1938 at AX=0036h)
  80807. Notes:    For FGDRIVER v1.10, this function was "FG_HUSHNEXT" (see AX=0049h);
  80808.       "FG_SETENTRY" did not exist yet
  80809. SeeAlso: AX=002Eh,AX=0036h,AX=0093h
  80810. --------V-620090-----------------------------
  80811. INT 62 u - FGDRIVER v3.03 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  80812.     AX = 0090h
  80813.     BX = operation
  80814.         0000h replacement
  80815.         0001h AND
  80816.         0002h OR
  80817.         0003h XOR
  80818. Notes:    For FGDRIVER v1.10, this function was "FG_QUIET" (see AX=007Fh);
  80819.       "FG_SETFUNC" was AX=009Ch
  80820.     This function is only available in native EGA/VGA graphics modes
  80821.       (0Dh to 12h)
  80822. SeeAlso: AX=001Ch,AX=0076h
  80823. --------V-620091-----------------------------
  80824. INT 62 u - FGDRIVER v3.03 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  80825.     AX = 0091h
  80826.     BX = new hidden page (0000h to 003Fh)
  80827. Notes:    For FGDRIVER v1.10, this function was "FG_PLAYING" (see AX=0075h);
  80828.       "FG_SETHPAGE" was AX=0041h
  80829.     The specified page must be a physical page or a virtual page
  80830. SeeAlso: AX=0037h,AX=0095h,AX=0098h
  80831. --------V-620092-----------------------------
  80832. INT 62 u - FGDRIVER v3.03 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  80833.     AX = 0092h
  80834.     BX = new screen size (25, 43, 50)
  80835. Note:    For FGDRIVER v1.10, this function was "FG_RESUME" (see AX=0084h);
  80836.       "FG_SETLINES" was AX=0011h
  80837. SeeAlso: AX=003Bh
  80838. --------V-620093-----------------------------
  80839. INT 62 u - FGDRIVER v3.03 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  80840.     AX = 0093h
  80841.     BX = new video mode or FFFFh for current mode
  80842.     ES:DX -> WORD ???
  80843. Notes:    For FGDRIVER v1.10, this function was "FG_SUSPEND" (see AX=00A0h);
  80844.       "FG_SETMODE" was AX=0001h
  80845.     This call resets the active video page to page 0000h, the clipping
  80846.       region to the entire screen, text rows to 25, etc.
  80847. SeeAlso: AX=003Fh,INT 10/AH=00h
  80848.  
  80849. (Table 1949)
  80850. Values for FGDRIVER video mode:
  80851.  00h-07h standard BIOS modes
  80852.  09h    PCjr/Tandy1000 320x200x16
  80853.  0Bh    Hercules graphics 720x348
  80854.  0Ch    Hercules graphics 320x200
  80855.  0Dh-13h standard BIOS modes
  80856.  14h    VGA graphics 320x200x256
  80857.  15h    VGA graphics 320x400x256
  80858.  16h    VGA graphics 320x240x256
  80859.  17h    VGA graphics 320x480x256
  80860.  18h    SVGA graphics 640x400x256
  80861.  19h    SVGA graphics 640x480x256
  80862.  1Ah    SVGA graphics 800x600x256
  80863.  1Bh    SVGA graphics 1024x768x256
  80864.  1Ch    SVGA graphics 800x600x16
  80865.  1Dh    SVGA graphics 1024x768x16
  80866. --------V-620094-----------------------------
  80867. INT 62 u - FGDRIVER v3.03 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  80868.     AX = 0094h
  80869.     BX = new state (0000h off, 0001h on)
  80870. Note:    For FGDRIVER v1.10, this function was unused; "FG_SETNUM" was AX=0073h
  80871. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=008Bh
  80872. --------V-620095-----------------------------
  80873. INT 62 u - FGDRIVER v3.03 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  80874.     AX = 0095h
  80875.     BX = new video page (0000h to 003Fh)
  80876. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SETPAGE" was AX=003Dh
  80877.     The specified page must be a physical or virtual page
  80878. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0071h
  80879. --------V-620096-----------------------------
  80880. INT 62 u - FGDRIVER v3.03 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  80881.     AX = 0096h
  80882.     BX = palette or DAC register number
  80883.     CX = red color component
  80884.     DX = green component
  80885.     SI = blue component
  80886. Notes:    For FGDRIVER v1.10, this function was "FG_WAITFOR" (see AX=00ACh);
  80887.       "FG_SETRGB" was AX=001Bh
  80888.     The register number may be negative for Tandy, PCjr, and 200-line
  80889.       EGA graphics modes to specify an intense color
  80890.     This call has no effect in text, CGA graphics, and Hercules graphics
  80891.       modes
  80892. SeeAlso: AX=0042h
  80893. --------V-620097-----------------------------
  80894. INT 62 u - FGDRIVER v3.03 - UNUSED
  80895.     AX = 0097h
  80896. Return: AX = 0000h
  80897. Note:    For FGDRIVER v1.10, this function was "FG_STALL" (see AX=009Fh)
  80898. --------V-620098-----------------------------
  80899. INT 62 u - FGDRIVER v3.03 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  80900.     AX = 0098h
  80901.     BX = new video page (0000h to 003Fh)
  80902. Notes:    For FGDRIVER v1.10, this function was "FG_MEASURE" (see AX=005Bh);
  80903.       "FG_SETVPAGE" was AX=003Fh
  80904.     The specified page must be a physical or virtual page
  80905. SeeAlso: AX=0037h,AX=0091h,AX=0095h
  80906. --------V-620099-----------------------------
  80907. INT 62 u - FGDRIVER v3.03 - UNUSED
  80908.     AX = 0099h
  80909. Return: AX destroyed
  80910. Note:    For FGDRIVER v1.10, this function was "FG_GETCLOCK" (see AX=0033h)
  80911. --------V-62009A-----------------------------
  80912. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  80913.     AX = 009Ah
  80914.     ES:BX -> ASCIZ filename of PCX image
  80915.     CX = flags (see #1950)
  80916. Return: AX = status
  80917.         0000h success
  80918.         0001h file not found
  80919.         0002h not a PCX file
  80920. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SHOWPCX" did not
  80921.       exist yet
  80922.     This function is ignored in text modes and Hercules low-res graphics
  80923. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=0060h"1.10",AX=009Bh,AX=009Ch
  80924.  
  80925. Bitfields for FGDRIVER flags:
  80926. Bit(s)    Description    (Table 1950)
  80927.  0    use current palette rather than PCX file's palette
  80928.  1    display image at cursor position instead of position in PCX header
  80929.  2-15    reserved
  80930. --------V-62009B-----------------------------
  80931. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  80932.     AX = 009Bh
  80933.     ES:BX -> ASCIZ filename of packed pixel run image
  80934.     CX = width in pixels (nonzero)
  80935. Return: AX = status
  80936.         0000h successful
  80937.         0001h file not found
  80938. Notes:    For FGDRIVER v1.10, this function was "FG_MEMAVAIL" (see AX=005Ch);
  80939.       "FG_SHOWPPR" did not exist yet
  80940.     The image is displayed with its lower left corner at the current
  80941.       graphics cursor position
  80942.     This function is ignored in text modes and 256-color graphics modes
  80943. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Ch
  80944. --------V-62009C-----------------------------
  80945. INT 62 u - FGDRIVER v3.03 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  80946.     AX = 009Ch
  80947.     ES:BX -> ASCIZ filename of standard pixel run image
  80948.     CX = width in pixels (nonzero)
  80949. Return: AX = status
  80950.         0000h successful
  80951.         0001h file not found
  80952. Notes:    For FGDRIVER v1.10, this function was "FG_SETFUNC" (see AX=0090h);
  80953.       "FG_SHOWSPR" did not exist yet
  80954.     The image is displayed with its lower left corner at the current
  80955.       graphics cursor position
  80956.     This function is ignored in text modes
  80957. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh
  80958. --------V-62009D-----------------------------
  80959. INT 62 u - FGDRIVER v3.03 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  80960.     AX = 009Dh
  80961.     BX = frequency in Hertz (18-32767)
  80962.     CX = duration in clock ticks (0000h or negative for continuous sound)
  80963. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCCMS" (see AX=0001h);
  80964.       "FG_SOUND" was AX=0088h
  80965.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  80966.       AX=008Dh) is already in progress
  80967. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  80968. --------V-62009E-----------------------------
  80969. INT 62 u - FGDRIVER v3.03 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  80970.     AX = 009Eh
  80971.     CX = number of times to cycle through sound list
  80972.     ES:BX -> sounds array (see #1951)
  80973. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCEMS" (see AX=0002h);
  80974.       "FG_SOUNDS" was AX=0089h
  80975.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  80976.       AX=008Dh) is already in progress
  80977. SeeAlso: AX=0048h,AX=006Bh,AX=009Dh,AX=00A0h,AX=00ABh
  80978.  
  80979. Format of FGDRIVER sounds array element:
  80980. Offset    Size    Description    (Table 1951)
  80981.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  80982.  02h    WORD    duration of sound in clock ticks
  80983. --------V-62009F-----------------------------
  80984. INT 62 u - FGDRIVER v3.03 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  80985.     AX = 009Fh
  80986.     BX = duration in processor-dependent delay units (see AX=005Bh)
  80987. Return: after delay elapses
  80988. Note:    For FGDRIVER v1.10, this function was "FG_ALLOCXMS" (see AX=0003h);
  80989.       "FG_STALL" was AX=0097h
  80990. SeeAlso: AX=005Bh,INT 2F/AX=1224h
  80991. --------V-6200A0-----------------------------
  80992. INT 62 u - FGDRIVER v3.03 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  80993.     AX = 00A0h
  80994. Notes:    For FGDRIVER v1.10, this function was "FG_INITEMS" (see AX=004Ch);
  80995.       "FG_SUSPEND" was AX=0093h
  80996.     This call has no effect if there is no asynchronous sound in progress
  80997.     The program must not exit while sound is suspended
  80998. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  80999. --------V-6200A1-----------------------------
  81000. INT 62 u - FGDRIVER v3.03 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  81001.     AX = 00A1h
  81002.     BX = method (see #1952)
  81003. Return: AX = status
  81004.         0000h no VESA BIOS or supported SVGA chipset
  81005.         0001h using VESA BIOS
  81006.         0002h-0016h specific chipset being used (same as "method" below)
  81007. Notes:    For FGDRIVER v1.10, this function was "FG_INITXMS" (see AX=004Eh);
  81008.       "FG_SVGAINIT" did not exist yet
  81009.     This function must be called before attempting to set SVGA graphics
  81010.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  81011.       "FG_MEMORY"
  81012. SeeAlso: AX=0023h,AX=00A2h,AX=00A3h
  81013.  
  81014. (Table 1952)
  81015. Values for FGDRIVER SVGA method:
  81016.  0000h    autodetect, give chipset-specific code priority over VESA
  81017.  0001h    autodetect, give VESA priority over chipset-specific code
  81018.  0002h    Ahead type "A"
  81019.  0003h    Ahead type "B"
  81020.  0004h    ATI 18800
  81021.  0005h    ATI 18800-1
  81022.  0006h    ATI 28800
  81023.  0007h    Chips & Technologies 82c451/455/456
  81024.  0008h    C&T 82c452
  81025.  0009h    C&T 82c453
  81026.  000Ah    Genoa 6000 series
  81027.  000Bh    Oak OTI-067
  81028.  000Ch    Paradise PVGA1a
  81029.  000Dh    Paradise WD90C00/WD90C10
  81030.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  81031.  000Fh    Trident 8800
  81032.  0010h    Trident 8900
  81033.  0011h    Tseng ET3000
  81034.  0012h    Tseng ET4000
  81035.  0013h    Video7
  81036.  0014h    Cirrus Logic 5400 series
  81037.  0015h    S3
  81038.  0016h    Trident 8900B/8900C/9000
  81039. --------V-6200A2-----------------------------
  81040. INT 62 u - FGDRIVER v3.03 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  81041.     AX = 00A2h
  81042. Return: AX = chipset information (see #1953)
  81043. Note:    For FGDRIVER v1.10, this function was "FG_BOX" (see AX=0006h);
  81044.       "FG_SVGASTAT" did not exist yet
  81045. SeeAlso: AX=0023h,AX=00A1h,AX=00A3h
  81046.  
  81047. Bitfields for FGDRIVER chipset information:
  81048. Bit(s)    Description    (Table 1953)
  81049.  0    SVGA kernel initialized
  81050.  1    VESA support enabled
  81051.  2    extended video pages available in modes 13-23
  81052.  3    SVGA chipset has separate read and write banks
  81053.  4-15    reserved (0)
  81054. --------V-6200A3-----------------------------
  81055. INT 62 u - FGDRIVER v3.03 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  81056.     AX = 00A3h
  81057.     ES:BX -> variable pointer record (see #1954)
  81058. Note:    For FGDRIVER v1.10, this function was "FG_BOXDEPTH" (see AX=0007h);
  81059.       "FG_SVGAVER" did not exist yet
  81060. SeeAlso: AX=00A1h,AX=00A2h
  81061.  
  81062. Format of FGDRIVER variable pointer record:
  81063. Offset    Size    Description    (Table 1954)
  81064.  00h    WORD    segment of WORD buffer for major version
  81065.  02h    WORD    offset of WORD buffer for major version
  81066.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  81067.  06h    WORD    offset of WORD buffer for minor version
  81068. --------V-6200A4-----------------------------
  81069. INT 62 u - FGDRIVER v3.03 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  81070.     AX = 00A4h
  81071.     BX = color index
  81072.     CX = transparency (00h opaque, other transparent)
  81073. Notes:    For FGDRIVER v1.10, this function was "FG_GETDACS" (see AX=0035h);
  81074.       "FG_TCDEFINE" did not exist yet
  81075.     This function is ignored in text modes
  81076. SeeAlso: AX=00A5h,AX=00A6h
  81077. --------V-6200A5-----------------------------
  81078. INT 62 u - FGDRIVER v3.03 - "FG_TCMASK" - SET TRANSPARENT COLORS
  81079.     AX = 00A5h
  81080.     BX = colors to consider transparent (bit 0 = color 0, etc)
  81081. Notes:    For FGDRIVER v1.10, this function was "FG_SETDACS" (see AX=008Eh);
  81082.       "FG_TCMASK" was AX=005Eh
  81083.     This call is ignored in text modes
  81084.     The specified colors are considered transparent by "FG_TCXFER"
  81085. SeeAlso: AX=00A4h,AX=00A6h
  81086. --------V-6200A6-----------------------------
  81087. INT 62 u - FGDRIVER v3.03 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  81088.     AX = 00A6h
  81089.     CX = source video page
  81090.     DX = destination video page
  81091.     ES:BX -> copy record (see #1955)
  81092. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TCXFER" was AX=005Dh
  81093.     Pixels which are in any of the colors defined as transparent with
  81094.       "FG_TCMASK" (see AX=00A5h) are left unchanged in the destination
  81095.       region
  81096.     The source and destination regions must not overlap if they are located
  81097.       on the same page
  81098.     This call is ignored in text modes
  81099. SeeAlso: AX=00A4h,AX=00A5h,AX=00A9h
  81100. --------V-6200A7-----------------------------
  81101. INT 62 u - FGDRIVER v3.03 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  81102.     AX = 00A7h
  81103.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  81104.     CX = required number of video pages (ignore memory size if <= 0)
  81105. Return: AX = status
  81106.         0000h mode not available with requested number of pages
  81107.         0001h mode is available
  81108. Note:    For FGDRIVER v1.10, this function was unused;"FG_TESTMODE" was AX=0002h
  81109. SeeAlso: AX=0005h,AX=0093h
  81110. --------V-6200A8-----------------------------
  81111. INT 62 u - FGDRIVER v3.03 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  81112.     AX = 00A8h
  81113.     CX = length of string
  81114.     ES:BX -> string
  81115. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TEXT" was AX=0032h
  81116.     The string is displayed starting at the text cursor position using the
  81117.       current text attribute (text modes) or color index (graphics modes)
  81118.     The text cursor position is updated after this call
  81119. SeeAlso: AX=000Ch,AX=007Ch
  81120. --------V-6200A9-----------------------------
  81121. INT 62 u - FGDRIVER v3.03 - "FG_TRANSFER" - COPY REGION
  81122.     AX = 00A9h
  81123.     CX = source video page
  81124.     DX = destination video page
  81125.     ES:BX -> copy record (see #1955)
  81126. Notes:    For FGDRIVER v1.10, this function was unused;"FG_TRANSFER" was AX=005Ch
  81127.     The source and destination regions must not overlap if they are located
  81128.       on the same page
  81129. SeeAlso: AX=0083h,AX=0087h,AX=0089h,AX=00A6h
  81130.  
  81131. Format of FGDRIVER copy record:
  81132. Offset    Size    Description    (Table 1955)
  81133.  00h    WORD    left edge column of source region
  81134.  02h    WORD    right edge column of source region
  81135.  04h    WORD    top edge row of source region
  81136.  06h    WORD    bottom edge row of source region
  81137.  08h    WORD    left edge of destination
  81138.  0Ah    WORD    bottom edge of destination
  81139. --------V-6200AA-----------------------------
  81140. INT 62 u - FGDRIVER v3.03 - "FG_VOICE" - START SOUND
  81141.     AX = 00AAh
  81142.     BX = channel on TI sound chip
  81143.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  81144.         5 = channel 4 with white noise
  81145.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  81146.           2=2048 Hz for channels 4 and 5)
  81147.     DX = volume
  81148.     SI = duration in clock ticks (continuous if <= 0)
  81149. Program: FGDRIVER is the external video driver for the shareware
  81150.       Fastgraph/Light by Ted Gruber Software
  81151. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICE" was AX=008Ah
  81152.     This function is only available on the PCjr and Tandy 1000 machines
  81153. SeeAlso: AX=006Ah,AX=009Dh,AX=00ABh
  81154. --------V-6200AB-----------------------------
  81155. INT 62 u - FGDRIVER v3.03 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  81156.     AX = 00ABh
  81157.     ES:BX -> tone array (see #1956)
  81158.     CX = number of times to repeat tone array
  81159. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICES" was AX=008Bh
  81160.     This function is only available on the PCjr and Tandy 1000 machines
  81161. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00AAh
  81162.  
  81163. Format of FGDRIVER tone array element:
  81164. Offset    Size    Description    (Table 1956)
  81165.  00h    WORD    channel number (0000h terminates array)
  81166.  02h    WORD    frequency
  81167.  04h    WORD    volume
  81168.  06h    WORD    duration in 1/72.8 seconds
  81169. --------V-6200AC-----------------------------
  81170. INT 62 u - FGDRIVER v3.03 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  81171.     AX = 00ACh
  81172.     BX = duration in clock ticks
  81173. Return: after delay elapses
  81174. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITFOR" was AX=0096h
  81175. SeeAlso: AX=009Fh,INT 1A/AX=FF01h
  81176. --------V-6200AD-----------------------------
  81177. INT 62 u - FGDRIVER v3.03 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  81178.     AX = 00ADh
  81179. Return: after next key pressed
  81180. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITKEY" was AX=006Dh
  81181. SeeAlso: AX=000Ah,AX=003Ah,AX=0051h,AX=0054h,INT 16/AH=00h
  81182. --------V-6200AE-----------------------------
  81183. INT 62 u - FGDRIVER v3.03 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  81184.     AX = 00AEh
  81185.     BX = new state (0000h disabled, 0001h enabled)
  81186. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITVR" did not
  81187.       exist yet
  81188. --------V-6200AF-----------------------------
  81189. INT 62 u - FGDRIVER v3.03 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  81190.     AX = 00AFh
  81191.     ES:BX -> variable pointers (see #1957)
  81192. Return: indicated variables filled with cursor row and column for active
  81193.       display
  81194. Note:    For FGDRIVER v1.10, this function was unused; "FG_WHERE" was AX=0034h
  81195. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0068h
  81196.  
  81197. Format of FGDRIVER variable pointers:
  81198. Offset    Size    Description    (Table 1957)
  81199.  00h    WORD    segment of WORD buffer for cursor row
  81200.  02h    WORD    offset of WORD buffer for cursor row
  81201.  04h    WORD    segment WORD buffer for cursor column
  81202.  06h    WORD    offset WORD buffer for cursor column
  81203. --------V-6200B0-----------------------------
  81204. INT 62 u - FGDRIVER v3.03 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  81205.     AX = 00B0h
  81206.     BX = screen space column
  81207. Return: AX = character space column containing specified coordinate
  81208. Note:    For FGDRIVER v1.10, this function was unused; "FG_XALPHA" was AX=000Ch
  81209. SeeAlso: AX=00B1h,AX=00B2h
  81210. --------V-6200B1-----------------------------
  81211. INT 62 u - FGDRIVER v3.03 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  81212.     AX = 00B1h
  81213.     BX = character space column
  81214. Return: AX = screen space column of leftmost pixel in specified character col
  81215. Note:    For FGDRIVER v1.10, this function was unused;"FG_XCONVERT" was AX=000Eh
  81216. SeeAlso: AX=00B0h,AX=00B3h
  81217. --------V-6200B2-----------------------------
  81218. INT 62 u - FGDRIVER v3.03 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  81219.     AX = 00B2h
  81220.     BX = screen space row
  81221. Return: AX = character space row containing specified coordinate
  81222. Note:    For FGDRIVER v1.10, this function was unused; "FG_YALPHA" was AX=000Dh
  81223. SeeAlso: AX=00B0h,AX=00B3h
  81224. --------V-6200B3-----------------------------
  81225. INT 62 u - FGDRIVER v3.03 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  81226.     AX = 00B3h
  81227.     BX = character space row
  81228. Return: AX = screen space row of topmost pixel in specified character row
  81229. Program: FGDRIVER is the external video driver for the shareware
  81230.       Fastgraph/Light by Ted Gruber Software
  81231. Note:    For FGDRIVER v1.10, this function was unused;"FG_YCONVERT" was AX=000Fh
  81232. SeeAlso: AX=00B1h,AX=00B2h
  81233. --------T-6201-------------------------------
  81234. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  81235.     AH = 01h
  81236. Program: Cswitch is a set of multitasking functions by Herb Rose
  81237. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  81238. --------N-6201-------------------------------
  81239. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  81240.     AH = 01h
  81241. Return: CF clear if successful
  81242.     CF set on error
  81243.         AL = error code
  81244. Range:    INT 60 to INT 65 ???
  81245. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81246. --------T-6202-------------------------------
  81247. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  81248.     AH = 02h
  81249.     DX = semaphore number (0-63)
  81250. Return: AX = FFFFh bad semaphore number
  81251.          else  success
  81252. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  81253. --------N-6202-------------------------------
  81254. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  81255.     AH = 02h
  81256. Return: CF clear if successful
  81257.     CF set on error
  81258.         AL = error code
  81259. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  81260. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  81261. --------T-6203-------------------------------
  81262. INT 62 - Cswitch - CHECK SEMAPHORE
  81263.     AH = 03h
  81264.     DX = semaphore number (0-63)
  81265. Return: AX = status
  81266.         FFFFh not owned
  81267.         else  owned
  81268. SeeAlso: AH=02h,AH=04h
  81269. --------N-6203-------------------------------
  81270. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  81271.     AH = 03h
  81272.     DS:SI -> DWORD buffer for IP address
  81273. Return: CF clear if successful
  81274.     CF set on error
  81275.         AL = error code
  81276. Range:    INT 60 to INT 65 ???
  81277. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81278.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81279.       consecutive interrupt (64h by default) if it is loaded
  81280. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81281. --------T-6204-------------------------------
  81282. INT 62 - Cswitch - TRIGGER SEMAPHORE
  81283.     AH = 04h
  81284.     DX = semaphore number (0-63)
  81285. Return: AX = status
  81286.         FFFFh bad semaphore number
  81287.         else  success
  81288. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  81289. --------N-6204-------------------------------
  81290. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  81291.     AH = 04h
  81292.     BX = ???
  81293.     ES:SI -> FAR routine for ???
  81294. Return: CF clear if successful
  81295.     CF set on error
  81296.         AL = error code
  81297. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81298. --------T-6205-------------------------------
  81299. INT 62 - Cswitch - SLEEP
  81300.     AH = 05h
  81301.     BX = seconds to sleep
  81302. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  81303. --------N-6205-------------------------------
  81304. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81305.     AH = 05h
  81306.     ???
  81307. Return: CF clear if successful
  81308.     CF set on error
  81309.         AL = error code
  81310. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81311. --------T-6206-------------------------------
  81312. INT 62 - Cswitch - SUSPEND
  81313.     AH = 06h
  81314. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  81315. --------N-6206-------------------------------
  81316. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81317.     AH = 06h
  81318.     ???
  81319. Return: CF clear if successful
  81320.     CF set on error
  81321.         AL = error code
  81322. Range:    INT 60 to INT 65 ???
  81323. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81324.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81325.       consecutive interrupt (64h by default) if it is loaded
  81326. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81327. --------T-6207-------------------------------
  81328. INT 62 - Cswitch - SPAWN
  81329.     AH = 07h
  81330.     ES:BX -> function address to start executing at
  81331.     CX = priority (1-10)
  81332. Return: AX = result/status
  81333.         FFFDh  no free memory control blocks
  81334.         FFFEh  no free task control blocks
  81335.         FFFFh  not enough memory to create new task stack
  81336.         >0       the tcb number of the new task, indicating no error
  81337. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  81338. --------N-6207-------------------------------
  81339. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81340.     AH = 07h
  81341.     DS:SI -> ???
  81342. Return: CF clear if successful
  81343.     CF set on error
  81344.         AL = error code
  81345. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81346. --------T-6208-------------------------------
  81347. INT 62 - Cswitch - WAKE UP TASK
  81348.     AH = 08h
  81349.     BX = tcb identifier
  81350. SeeAlso: AH=05h,AH=06h
  81351. --------N-6208-------------------------------
  81352. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81353.     AH = 08h
  81354.     CX = ???
  81355.     ES:SI -> ??? buffer (see #1958)
  81356. Return: CF clear if successful
  81357.     CF set on error
  81358.         AL = error code
  81359. Range:    INT 60 to INT 65 ???
  81360. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81361.  
  81362. Format of BW-TCP ??? buffer:
  81363. Offset    Size    Description    (Table 1958)
  81364.  00h  6 BYTEs    hardware address???
  81365.  06h  6 BYTEs    ???
  81366.  0Ch    WORD    ???
  81367.  0Eh    WORD    ???
  81368. ----------6208--CXFFFE-----------------------
  81369. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  81370.     AH = 08h
  81371.     CX = FFFEh
  81372.     DX = FFFFh
  81373. Return: AX = PSP address of resident DBLIBRARY
  81374. Note:    this call does not free the memory allocated to the TSR; the calling
  81375.       code must do the deallocation.
  81376. SeeAlso: INT 62"DBLIBRARY"
  81377. --------T-6209-------------------------------
  81378. INT 62 - Cswitch - SET PRIORITY
  81379.     AH = 09h
  81380.     BX = new base priority (1-10)
  81381. Note:    the lower the priority is numerically, the more often the task will run
  81382. --------N-6209-------------------------------
  81383. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  81384.     AH = 09h
  81385. Return: CF clear if successful
  81386.         AX = handler ID
  81387.     CF set on error
  81388.         AL = error code
  81389. Range:    INT 60 to INT 65 ???
  81390. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81391.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81392.       consecutive interrupt (64h by default) if it is loaded
  81393. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  81394. SeeAlso: INT 64"BW-NFS"
  81395. --------T-620A-------------------------------
  81396. INT 62 - Cswitch - TEST MESSAGE QUEUE
  81397.     AH = 0Ah
  81398.     DX = queue number (0-63)
  81399. Return: AX = result/message size
  81400.         0000h nothing on queue
  81401.         FFFFh bad queue number
  81402.         else  number of bytes in first message in queue
  81403. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  81404. --------N-620A-------------------------------
  81405. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  81406.     AH = 0Ah
  81407.     DX = handler ID
  81408. Return: CF clear if successful
  81409.     CF set on error
  81410.         AL = error code
  81411. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  81412. SeeAlso: INT 64"BW-NFS"
  81413. --------T-620B-------------------------------
  81414. INT 62 - Cswitch - SEND MESSAGE
  81415.     AH = 0Bh
  81416.     CX = number of bytes to write
  81417.     DS:SI -> buffer
  81418.     DX = queue number (0-63)
  81419. Return: AX = result/message size
  81420.         0000h no message was on queue
  81421.         FFFEh triggered by something arriving, redo the call
  81422.         FFFFh bad queue number
  81423.         else  number of bytes in message
  81424. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  81425. --------N-620B-------------------------------
  81426. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  81427.     AH = 0Bh
  81428.     AL = ???
  81429.     DX = ???
  81430.     BP = ???
  81431.     ES:SI -> ???
  81432. Return: CF clear if successful
  81433.     CF set on error
  81434.         AL = error code
  81435. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  81436. SeeAlso: INT 64"BW-NFS"
  81437. --------T-620C-------------------------------
  81438. INT 62 - Cswitch - READ MESSAGE
  81439.     AH = 0Ch
  81440.     CX = number of bytes to read
  81441.     DS:SI -> buffer
  81442.     DX = queue number (0-63)
  81443. Return: AX = status
  81444.         FFFFh bad queue number
  81445.         else  number of bytes transferred
  81446. SeeAlso: AH=0Ah,AH=0Bh
  81447. --------N-620C-------------------------------
  81448. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  81449.     AH = 0Ch
  81450.     DX = ???
  81451.     BP = ???
  81452. Return: CF clear if successful
  81453.     CF set on error
  81454.         AL = error code
  81455. Range:    INT 60 to INT 65 ???
  81456. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81457.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81458.       consecutive interrupt (64h by default) if it is loaded
  81459. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  81460. SeeAlso: INT 64"BW-NFS"
  81461. --------T-620D-------------------------------
  81462. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  81463.     AH = 0Dh
  81464. SeeAlso: AH=0Eh"Cswitch"
  81465. --------N-620D-------------------------------
  81466. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  81467.     AH = 0Dh
  81468. Return: CF clear if successful
  81469.     CF set on error
  81470.         AL = error code
  81471. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81472. --------T-620E-------------------------------
  81473. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  81474.     AH = 0Eh
  81475. SeeAlso: AH=0Dh"Cswitch"
  81476. --------N-620E-------------------------------
  81477. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  81478.     AH = 0Eh
  81479. Return: CF clear if successful
  81480.     CF set on error
  81481.         AL = error code
  81482. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  81483. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  81484. --------T-620F-------------------------------
  81485. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  81486.     AH = 0Fh
  81487.     ES:BX -> command line
  81488.     CX = priority (1-10)
  81489.     DX = background flag (nonzero allows loading to EMS)
  81490. Return: AX = status
  81491.         0000h task loader queue is full
  81492.         0001h  no error
  81493. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  81494. --------N-620F-------------------------------
  81495. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  81496.     AH = 0Fh
  81497. Return: CF clear if successful
  81498.     CF set on error
  81499.         AL = error code
  81500. Range:    INT 60 to INT 65 ???
  81501. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81502.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81503.       consecutive interrupt (64h by default) if it is loaded
  81504. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  81505. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  81506. --------T-6210-------------------------------
  81507. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  81508.     AH = 10h
  81509. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  81510. --------N-6210-------------------------------
  81511. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  81512.     AH = 10h
  81513. Return: CF clear if no critical section active
  81514.     CF set if in critical section
  81515. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  81516. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  81517. --------T-6211-------------------------------
  81518. INT 62 - Cswitch - GET TCB INFORMATION
  81519.     AH = 11h
  81520.     ES:BX -> a pointer which will be set to the tcb address
  81521. Return: AX = tcb indentifier
  81522. SeeAlso: AH=12h
  81523. --------N-6211-------------------------------
  81524. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  81525.     AH = 11h
  81526.     ES:SI -> ???
  81527. Return: CF clear
  81528. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81529. --------T-6212-------------------------------
  81530. INT 62 - Cswitch - GET TCB ADDRESS
  81531.     AH = 12h
  81532.     ES:BX -> a pointer which will be set to the tcb table address
  81533. Return: AX = tcb indentifier
  81534. SeeAlso: AH=11h"Cswitch"
  81535. --------N-6212-------------------------------
  81536. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  81537.     AH = 12h
  81538. Return: CF clear if successful
  81539.         AX = socket number??? (memory variable incremented after reading)
  81540.     CF set on error
  81541.         AL = error code
  81542. Range:    INT 60 to INT 65 ???
  81543. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81544.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81545.       consecutive interrupt (64h by default) if it is loaded
  81546. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81547. --------T-6213-------------------------------
  81548. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  81549.     AH = 13h
  81550. Return: AX = result
  81551.         FFFCh no Memory Control Blocks available
  81552.         FFFDh no TCBs available
  81553.         FFFEh insufficient memory
  81554.         FFFFh cannot open file
  81555.         0000h load in progress (not done yet)
  81556.         else  tcb indentifier
  81557. SeeAlso: AH=0Fh
  81558. --------N-6213-------------------------------
  81559. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81560.     AH = 13h
  81561.     CX = ???
  81562. Return: CF clear if successful
  81563.         AL = 00h
  81564.     CF set on error
  81565.         AL = error code
  81566. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81567. --------N-6214-------------------------------
  81568. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81569.     AH = 14h
  81570.     ES:SI -> ???
  81571. Return: CF clear if successful
  81572.         AL = 00h
  81573.     CF set on error
  81574.         AL = error code
  81575. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81576. --------N-6215-------------------------------
  81577. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  81578.     AH = 15h
  81579. Return: CF clear if successful
  81580.         AX = ??? (destroyed???)
  81581.     CF set on error
  81582.         AL = error code
  81583. Range:    INT 60 to INT 65 ???
  81584. Notes:    call this function after reading the "ETHDEV27" device
  81585.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81586.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81587.       consecutive interrupt (64h by default) if it is loaded
  81588. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81589. --------N-6216-------------------------------
  81590. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81591.     AH = 16h
  81592.     ???
  81593. Return: CF clear if successful
  81594.     CF set on error
  81595.         AL = error code
  81596. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81597. --------N-6217-------------------------------
  81598. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  81599.     AH = 17h
  81600.     DX = segment of ???
  81601. Return: CF clear
  81602. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81603. --------N-6218-------------------------------
  81604. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  81605.     AH = 18h
  81606. Return: CF clear if successful
  81607.     CF set on error
  81608.         AL = error code
  81609. Range:    INT 60 to INT 65 ???
  81610. Notes:    calls function 17h after EMS allocated and mapped
  81611.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81612.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81613.       consecutive interrupt (64h by default) if it is loaded
  81614. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  81615. --------R-6247-------------------------------
  81616. INT 62 - PC Tools v7 COMMUTE - ???
  81617.     AH = 47h
  81618.     AL = subfunction (00h-31h)
  81619.     ???
  81620.     CF set
  81621. Return: ???
  81622. Program: COMMUTE is a remote-control program bundled with Central Point
  81623.       Software's PC Tools
  81624. --------R-6248-------------------------------
  81625. INT 62 - PC Tools v7 COMMUTE - ???
  81626.     AH = 48h
  81627.     AL = ???
  81628.     ???
  81629.     CF set
  81630. Return: ???
  81631. --------R-6249-------------------------------
  81632. INT 62 - PC Tools v7 COMMUTE - ???
  81633.     AH = 49h
  81634.     ???
  81635.     CF set
  81636. Return: ???
  81637. Note:    may be the same as AH=4Ch
  81638. --------R-624A-------------------------------
  81639. INT 62 - PC Tools v7 COMMUTE - ???
  81640.     AH = 4Ah
  81641.     AL = subfunction (00h-46h)
  81642.     ???
  81643.     CF set
  81644. Return: ???
  81645. --------R-624B--BX1234-----------------------
  81646. INT 62 - PC Tools v7 COMMUTE - ???
  81647.     AH = 4Bh
  81648.     BX = 1234h
  81649.     CX = 1234h
  81650.     ES = ???
  81651.     CF set
  81652. Return: ???
  81653. Program: COMMUTE is a remote-control program bundled with Central Point
  81654.       Software's PC Tools
  81655. --------R-624C-------------------------------
  81656. INT 62 - PC Tools v7 COMMUTE - ???
  81657.     AH = 4Ch
  81658.     BL = subfunction
  81659.         00h ???
  81660.         02h ???
  81661. Return: CF clear if successful
  81662.     CF set on error
  81663. --------R-626262-----------------------------
  81664. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  81665.     AX = 6262h
  81666.     CF set
  81667. Return: AX = 0000h
  81668.     BX = segment of resident code's PSP
  81669. Program: COMMUTE is a remote-control program bundled with Central Point
  81670.       Software's PC Tools
  81671. --------s-62C0-------------------------------
  81672. INT 62 U - GWBTSR - API
  81673.     AH = C0h
  81674.     AL = function
  81675.         00h installation check
  81676.         Return: AX = 00FFh if installed
  81677.         01h ???
  81678. Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
  81679.       sound card (OEM version of Aztech Sound Galaxy)
  81680. Index:    installation check;GWBTSR
  81681. --------N-62FE-------------------------------
  81682. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  81683.     AH = FEh
  81684.     AL = direction
  81685.         00h map in driver's memory block
  81686.         01h map out driver's memory block
  81687. Return: CF clear if successful
  81688.     CF set on error
  81689.         AL = error code
  81690. Range:    INT 60 to INT 65 ???
  81691. Notes:    this function is supported by at least the SLIP and ODI versions of
  81692.       ETHDEV.SYS
  81693.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81694.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81695.       consecutive interrupt (64h by default) if it is loaded
  81696. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  81697. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  81698. --------*-63---------------------------------
  81699. INT 63 - reserved for user interrupt
  81700. --------d-63---------------------------------
  81701. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  81702. Desc:    this vector stores the last four bytes of the parameter table for
  81703.       hard disk 0
  81704. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  81705. ----------63---------------------------------
  81706. INT 63 - Oracle SQL Protected Mode Executive - ???
  81707. --------d-63---------------------------------
  81708. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  81709. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  81710.       INT 13 has been moved there) and places the old value here
  81711. ----------63---------------------------------
  81712. INT 63 - Kofax KF9X00 image manipulation card interface
  81713. --------Q-63---------------------------------
  81714. INT 63 - DESQview/X - SOCKET API
  81715. Notes:    parameters are passed by patching!! data field immediately following
  81716.       the entry point, as detailed below; the preferred method for calling
  81717.       the socket API is via INT 15/AX=DE2Eh
  81718.     the installation check consists of testing for the string "dvxunix"
  81719.       (yes, lowercase) at offset 9 from the interrupt handler start
  81720. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  81721. Index:    installation check;DESQview/X socket interface
  81722.  
  81723. Format of DESQview/X socket interrupt handler entry:
  81724. Offset    Size    Description    (Table 1959)
  81725.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  81726.  03h    WORD    offset from following pointer for initial top of local stack
  81727.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  81728.  09h  7 BYTEs    signature "dvxunix"
  81729. --------b-6300-------------------------------
  81730. INT 63 - HP 100LX - MAP HIGH MEMORY
  81731.     AH = 00h
  81732.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  81733.     BX = zero-based logical page
  81734.     CX = page number
  81735.     DX = device ID (00h system ROM, 05h plugin, etc.)
  81736. Return: ???
  81737. SeeAlso: AH=01h
  81738. --------N-6300-------------------------------
  81739. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  81740.     AH = 00h
  81741.     DS:BX -> DWORD containing IP address (big-endian)
  81742. Return: CF clear if successful
  81743.     CF set on error
  81744.     AX destroyed
  81745. Range:    INT 61 to INT 66 ???
  81746. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81747.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81748.       consecutive interrupt (64h by default) if it is loaded
  81749. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  81750. --------b-6301-------------------------------
  81751. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  81752.     AH = 01h
  81753.     AL = function (00h save, 01h restore)
  81754.     ???
  81755. Return: ???
  81756. --------N-6301-------------------------------
  81757. INT 63 - BW-TCP - TCPIP.SYS - ???
  81758.     AH = 01h
  81759.     ES:BX -> ???
  81760.     ???
  81761. Return: ???
  81762. Range:    INT 61 to INT 66 ???
  81763. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  81764.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  81765.       consecutive interrupt (64h by default) if it is loaded
  81766. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  81767. --------N-6302-------------------------------
  81768. INT 63 - BW-TCP - TCPIP.SYS - ???
  81769.     AH = 02h
  81770.     ???
  81771. Return: ???
  81772. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  81773. --------N-6303-------------------------------
  81774. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  81775.     AH = 03h
  81776.     DS:SI -> buffer for DWORD IP address (big-endian)
  81777. Return: AX destroyed
  81778.     CF clear if successful
  81779.     CF set on error
  81780. Note:    this call may use ARP or RARP to determine the address
  81781. --------N-6304-------------------------------
  81782. INT 63 - BW-TCP - TCPIP.SYS - ???
  81783.     AH = 04h
  81784.     ???
  81785. Return: ???
  81786. --------N-6305-------------------------------
  81787. INT 63 - BW-TCP - TCPIP.SYS - ???
  81788.     AH = 05h
  81789.     DS:BX -> ???
  81790.     ES:SI -> ???
  81791. Return: ???
  81792. Range:    INT 61 to INT 66 ???
  81793. --------N-6306-------------------------------
  81794. INT 63 - BW-TCP - TCPIP.SYS - ???
  81795.     AH = 06h
  81796.     ???
  81797. Return: ???
  81798. --------N-6307-------------------------------
  81799. INT 63 - BW-TCP - TCPIP.SYS - ???
  81800.     AH = 07h
  81801.     ???
  81802. Return: ???
  81803. --------N-6308-------------------------------
  81804. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  81805.     AH = 08h
  81806.     DS:BX -> DWORD containing IP address
  81807. Return: CF clear if successful
  81808.     CF set on error
  81809.     ???
  81810. --------N-6309-------------------------------
  81811. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  81812.     AH = 09h
  81813.     BL = handler type
  81814.     ES:SI -> FAR handler of specified type
  81815. Return: ???
  81816. SeeAlso: AH=0Ah,AH=0Dh
  81817. --------N-630A-------------------------------
  81818. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  81819.     AH = 0Ah
  81820.     BL = handler type
  81821. Return: CF clear if successful
  81822.     CF set on error (no handler of specified type installed)
  81823. SeeAlso: AH=09h
  81824. --------N-630B-------------------------------
  81825. INT 63 - BW-TCP - TCPIP.SYS - ???
  81826.     AH = 0Bh
  81827.     AL = ???
  81828.     DL = ???
  81829.     DS:BX -> ???
  81830.     ES:SI -> ???
  81831. Return: ???
  81832. --------N-630C-------------------------------
  81833. INT 63 - BW-TCP - TCPIP.SYS - ???
  81834.     AH = 0Ch
  81835.     ???
  81836. Return: ???
  81837. Range:    INT 61 to INT 66 ???
  81838. --------N-630D-------------------------------
  81839. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  81840.     AH = 0Dh
  81841.     ???
  81842. Return: ???
  81843. Note:    if not already installed, installs a type 06h handler with AH=09h
  81844. SeeAlso: AH=09h
  81845. --------N-630E-------------------------------
  81846. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  81847.     AH = 0Eh
  81848.     ???
  81849. Return: ???
  81850. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  81851. --------N-630F-------------------------------
  81852. INT 63 - BW-TCP - TCPIP.SYS - ???
  81853.     AH = 0Fh
  81854.     AL = ???
  81855.     SI = ???
  81856.     DS:DI -> ???
  81857.     ???
  81858. Return: ???
  81859. Range:    INT 61 to INT 66 ???
  81860. --------N-6310-------------------------------
  81861. INT 63 - BW-TCP - TCPIP.SYS - ???
  81862.     AH = 10h
  81863.     DS:DI -> ???
  81864.     ???
  81865. Return: ???
  81866. --------N-6311-------------------------------
  81867. INT 63 - BW-TCP - TCPIP.SYS - ???
  81868.     AH = 11h
  81869.     ???
  81870. Return: ???
  81871. --------N-6312-------------------------------
  81872. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  81873.     AH = 12h
  81874.     DS:SI -> ???
  81875.     ES:BP -> ???
  81876. Return: ???
  81877. SeeAlso: INT 61/AH=23h
  81878. --------N-6313-------------------------------
  81879. INT 63 - BW-TCP - TCPIP.SYS - NOP
  81880.     AH = 13h
  81881. Return: nothing
  81882. Range:    INT 61 to INT 66 ???
  81883. --------N-6314-------------------------------
  81884. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  81885.     AH = 14h
  81886.     BX = network descriptor???
  81887.     DS:SI -> ???
  81888.     ES:BP -> ???
  81889. Return: ???
  81890. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  81891. --------N-6315-------------------------------
  81892. INT 63 - BW-TCP - TCPIP.SYS - ???
  81893.     AH = 15h
  81894.     DS:DI -> ???
  81895.     ???
  81896. Return: ???
  81897. --------N-6316-------------------------------
  81898. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  81899.     AH = 16h
  81900.     DS:DI -> ???
  81901. Return: ???
  81902. Note:    calls AH=17h after preprocessing
  81903. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  81904. --------N-6317-------------------------------
  81905. INT 63 - BW-TCP - TCPIP.SYS - ???
  81906.     AH = 17h
  81907.     DS:DI -> ???
  81908.     ???
  81909. Return: ???
  81910. Range:    INT 61 to INT 66 ???
  81911. SeeAlso: AH=18h
  81912. --------N-6318-------------------------------
  81913. INT 63 - BW-TCP - TCPIP.SYS - ???
  81914.     AH = 18h
  81915.     DS:DI -> ???
  81916.     ???
  81917. Return: ???
  81918. Note:    same as AH=17h, except performed with interrupts disabled
  81919. SeeAlso: AH=17h
  81920. --------N-6319-------------------------------
  81921. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  81922.     AH = 19h
  81923.     DS:DI -> ???
  81924.     ???
  81925. Return: BX = number of bytes NOT written
  81926.     ???
  81927. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  81928. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  81929. --------N-631A-------------------------------
  81930. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  81931.     AH = 1Ah
  81932.     CX = maximum number of bytes to read
  81933.     ES:BP -> ???
  81934.     ???
  81935. Return: CX = number of bytes actually read
  81936.     ???
  81937. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  81938. --------N-631B-------------------------------
  81939. INT 63 - BW-TCP - TCPIP.SYS - ???
  81940.     AH = 1Bh
  81941.     CX = ???
  81942.     ES:BP -> ???
  81943. Return: DX = ???
  81944.     ???
  81945. Range:    INT 61 to INT 66 ???
  81946. --------N-631C-------------------------------
  81947. INT 63 - BW-TCP - TCPIP.SYS - ???
  81948.     AH = 1Ch
  81949.     DS:DI -> ???
  81950.     ???
  81951. Return: ???
  81952. Note:    calls AH=17h with ???
  81953. SeeAlso: AH=17h
  81954. --------N-631D-------------------------------
  81955. INT 63 - BW-TCP - TCPIP.SYS - ???
  81956.     AH = 1Dh
  81957.     ???
  81958. Return: ???
  81959. --------N-631E-------------------------------
  81960. INT 63 - BW-TCP - TCPIP.SYS - ???
  81961.     AH = 1Eh
  81962.     DS:BX -> DWORD containing IP address (big-endian)
  81963.     ???
  81964. Return: CF clear if successful
  81965.     CF set on error
  81966.     ???
  81967. --------N-631F-------------------------------
  81968. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  81969.     AH = 1Fh
  81970.     BX = socket number
  81971.     ES:SI -> FAR function for ???
  81972. Return: CF clear if successful
  81973.     CF set on error (out of slots)
  81974. SeeAlso: AH=20h
  81975. --------N-6320-------------------------------
  81976. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  81977.     AH = 20h
  81978.     BX = socket number
  81979. Return: CF clear if successful
  81980.     CF set on error (not set)
  81981. Range:    INT 61 to INT 66 ???
  81982. SeeAlso: AH=1Fh
  81983. --------N-6321-------------------------------
  81984. INT 63 - BW-TCP - TCPIP.SYS - ???
  81985.     AH = 21h
  81986.     ES:SI -> ???
  81987. Return: ???
  81988. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  81989. --------N-6322-------------------------------
  81990. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  81991.     AH = 22h
  81992. Return: CF clear
  81993. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  81994.       if the counter reaches zero
  81995. --------N-6323-------------------------------
  81996. INT 63 - BW-TCP - TCPIP.SYS - ???
  81997.     AH = 23h
  81998.     DS:BX -> ???
  81999.     ES:SI -> 6-byte buffer for ???
  82000. Return: CF clear if successful
  82001.     CF set on error
  82002. --------N-6324-------------------------------
  82003. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  82004.     AH = 24h
  82005. Return: AX = socket number (0400h-FFFFh)
  82006. Range:    INT 61 to INT 66 ???
  82007. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  82008.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  82009.       consecutive interrupt (64h by default) if it is loaded
  82010. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  82011. --------N-6325-------------------------------
  82012. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  82013.     AH = 25h
  82014. Return: CL:CH:DL:DH = caller's Internet address
  82015. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  82016. --------N-6326-------------------------------
  82017. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  82018.     AH = 26h
  82019.     CL:CH:DL:DH = Internet address
  82020. Return: nothing
  82021. Note:    this function sets a different variable than AH=25h returns
  82022. SeeAlso: AH=25h
  82023. --------N-6327-------------------------------
  82024. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  82025.     AH = 27h
  82026.     BX = ???
  82027.     ES:SI -> ???
  82028. Return: ???
  82029. --------N-6328-------------------------------
  82030. INT 63 - BW-TCP - TCPIP.SYS - ???
  82031.     AH = 28h
  82032.     ???
  82033. Return: ???
  82034. --------N-6329-------------------------------
  82035. INT 63 - BW-TCP - TCPIP.SYS - ???
  82036.     AH = 29h
  82037.     ???
  82038. Return: ???
  82039. Range:    INT 61 to INT 66 ???
  82040. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  82041.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  82042.       consecutive interrupt (64h by default) if it is loaded
  82043. --------*-64---------------------------------
  82044. INT 64 - reserved for user interrupt
  82045. --------d-64---------------------------------
  82046. INT 64 - Adaptec controllers - DRIVE 1 DATA
  82047. Desc:    this vector stores the first four bytes of the parameter table for
  82048.       hard disk 1
  82049. Notes:    these vectors are used by the following Adaptec controllers:
  82050.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  82051.     these vectors are NOT used by the following Adaptec controllers:
  82052.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  82053. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  82054. ----------64---------------------------------
  82055. INT 64 - Oracle SQL Protected Mode Executive - ???
  82056. --------N-64---------------------------------
  82057. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  82058. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  82059.       versions do not use this interrupt for IPX/SPX access, instead
  82060.       getting an entry point from INT 2F/AX=7A00h
  82061. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  82062. --------h-64---------------------------------
  82063. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  82064. SeeAlso: INT 65"DG10",INT 66"DG10"
  82065. --------r-64---------------------------------
  82066. INT 64 - Extended Batch Language v3.14+
  82067.     AH = function
  82068.         00h to 5Fh chained to previous handler
  82069.         60h to 6Ch reserved, return immediately
  82070.         80h to FFh chained to previous handler
  82071.         6Dh (v4.01+) insert tone in queue
  82072.         AL = ???
  82073.         CX = frequency in Hertz
  82074.         DL = duration in clock ticks
  82075.         Return: AL = 00h if note stored
  82076.                = 01h if no room to store
  82077.         6Eh clear ??? counter/flag
  82078.         6Fh return counter/flag that AH=6Eh clears
  82079.         70h ???
  82080.         AL = ???
  82081.         71h ???
  82082.         AL = ???
  82083.         72h ???
  82084.         73h insert byte at end of keyboard buffer
  82085.         AL = byte to insert
  82086.         Return: AL = 00h if byte inserted
  82087.                = 01h if no room to store
  82088.         74h insert byte at front of keyboard buffer
  82089.         AL = byte to insert
  82090.         Return: AL = 00h if byte inserted
  82091.                = 01h if no room to store
  82092.         75h ???
  82093.         76h get keyboard "stack" status
  82094.         AL = 'K' if kbd read will read physical keyboard
  82095.              'S' if it will read EBL internal keyboard buffer
  82096.         AH = ???
  82097.         77h clear internal keyboard buffer
  82098.         78h ???
  82099.         AL = ???
  82100.         79h ???
  82101.         7Ah ???
  82102.         AL = ???
  82103.         7Bh ???
  82104.         AL = ???
  82105.         7Ch ???
  82106.         AL = ???
  82107.         7Dh ???
  82108.         AL = ???
  82109.         7Eh clear buffer for ???
  82110.         7Fh installation check
  82111.         Return: CX = version in BCD
  82112.             DI = segment of ???
  82113.             BX = segment of next program's PSP???
  82114. Program: Extended Batch Language is a batch-file enhancer by Seaware
  82115. Notes:    the chaining does not check whether the interrupt had been hooked
  82116.       before, so if you try to chain when the previous vector was
  82117.       0000h:0000h, you'll be in trouble
  82118.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  82119.       floating-point and extended function packages
  82120. Index:    installation check;EBL|installation check;Extended Batch Language
  82121. --------d-64---------------------------------
  82122. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  82123. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  82124.       It can either destroy 4 vectors and take no memory or TSR and take
  82125.       up some memory.
  82126. SeeAlso: INT 65"Pdisk"
  82127. --------N-6401-------------------------------
  82128. INT 64 U - BW-NFS - BWRPC - ???
  82129.     AH = 01h
  82130.     ES:BX -> ??? (at least 8 bytes)
  82131.     ES:BP -> DWORD ???
  82132.     ???
  82133. Return: CF clear if successful
  82134.         ???
  82135.     CF set on error
  82136.         CX = 0000h
  82137. Range:    INT 62 to INT 67 ???
  82138. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  82139.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  82140.       consecutive interrupt (64h by default) if it is loaded
  82141.     the BWRPC installation check consists of determining the interrupt
  82142.       vector assigned to it (two more than the value returned by reading
  82143.       the ETHDEV27 device), and testing whether the word immediately
  82144.       preceding the interrupt handler is 4257h ('BW')
  82145. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  82146. Index:    installation checks;BWRPC
  82147. --------N-6402-------------------------------
  82148. INT 64 U - BW-NFS - BWRPC - ???
  82149.     AH = 02h
  82150.     DS:DI -> ???
  82151. Return: ???
  82152. Note:    this call is passed directly through to INT 62/AH=07h
  82153. SeeAlso: INT 62/AH=07h"ETHDEV"
  82154. --------N-6403-------------------------------
  82155. INT 64 U - BW-NFS - BWRPC - ADD ???
  82156.     AH = 03h
  82157.     AL = ???
  82158.     BP = ???
  82159.     ES:SI -> ???
  82160. Return: ???
  82161. Note:    this call is passed directly through to INT 62/AH=0Bh
  82162. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  82163. --------N-6404-------------------------------
  82164. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  82165.     AH = 04h
  82166.     BP = ???
  82167. Return: ???
  82168. Range:    INT 62 to INT 67 ???
  82169. Note:    this call is passed directly through to INT 62/AH=0Ch
  82170. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  82171. --------N-6405-------------------------------
  82172. INT 64 U - BW-NFS - BWRPC - ???
  82173.     AH = 05h
  82174.     CX = ???
  82175. Return: ???
  82176. Note:    this call is passed directly through to INT 62/AH=13h
  82177. SeeAlso: INT 62/AH=13h"ETHDEV"
  82178. --------N-6406-------------------------------
  82179. INT 64 U - BW-NFS - BWRPC - ???
  82180.     AH = 06h
  82181.     ES:SI -> ???
  82182. Return: AL = 00h if CF clear
  82183. Note:    this call is passed directly through to INT 62/AH=14h
  82184. SeeAlso: INT 62/AH=14h"ETHDEV"
  82185. --------N-6407-------------------------------
  82186. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  82187.     AH = 07h
  82188. Return: CX:DX = IP address
  82189. --------N-6410-------------------------------
  82190. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  82191.     AH = 10h
  82192.     AL = ETHDEV function number
  82193.     other registers as appropriate for ETHDEV call
  82194. Return: as returned by ETHDEV
  82195. Note:    this call is passed directly through to INT 62
  82196. SeeAlso: INT 62/AH=00h"ETHDEV"
  82197. --------N-6411-------------------------------
  82198. INT 64 U - BW-NFS - BWRPC - NOP???
  82199.     AH = 11h
  82200. Return: CF clear
  82201. Range:    INT 62 to INT 67 ???
  82202. --------N-64FE-------------------------------
  82203. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  82204.     AH = FEh
  82205.     AL = direction
  82206.         00h map in driver's memory block
  82207.         01h map out driver's memory block
  82208. Return: CF clear if successful
  82209.     CF set on error
  82210.         AL = error code
  82211. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  82212. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  82213. --------*-65---------------------------------
  82214. INT 65 - reserved for user interrupt
  82215. --------d-65---------------------------------
  82216. INT 65 - Adaptec controllers - DRIVE 1 DATA
  82217. Desc:    this vector stores the second four bytes of the parameter table for
  82218.       hard disk 1
  82219. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  82220. --------h-65---------------------------------
  82221. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  82222. SeeAlso: INT 64"DG10",INT 66"DG10"
  82223. --------N-65---------------------------------
  82224. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  82225. --------U-65---------------------------------
  82226. INT 65 - SD.COM v6.2
  82227. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  82228.       to count the number of invocations, displaying a registration
  82229.       reminder each time after the 20th use.
  82230. --------d-65---------------------------------
  82231. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  82232. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  82233. --------s-65---------------------------------
  82234. INT 65 - Ad Lib SOUND.COM - INTERFACE
  82235.     SI = function number (see also entries below)
  82236.         0000h Init
  82237.         0002h RelTimeStart
  82238.         0003h SetState
  82239.         0004h GetState
  82240.         0005h Flush
  82241.         0006h SetMode
  82242.         0007h GetMode
  82243.         0008h SetRelVolume
  82244.         0009h SetTempo
  82245.         000Ah SetTranspose
  82246.         000Bh GetTranspose
  82247.         000Ch SetActVoice
  82248.         000Dh GetActVoice
  82249.         000Eh PlayNoteDel
  82250.         000Fh PlayNote
  82251.         0010h SetTimbre
  82252.         0011h SetPitch
  82253.         0012h SetTickBeat
  82254.         0013h NoteOn
  82255.         0014h NoteOff
  82256.         0015h Timbre
  82257.         0016h SetPitchBend
  82258.         0017h WaveForm
  82259.     ES:BX -> arguments
  82260. Note:    the installation check consists of checking for the signature block
  82261.       immediately preceding the interrupt handler (see #1960)
  82262. SeeAlso: SI=8000h
  82263. Index:    installation check;Ad Lib SOUND.COM
  82264.  
  82265. Format of AdLib signature block:
  82266. Offset    Size    Description    (Table 1960)
  82267.  00h    WORD    version number
  82268.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  82269.  15h    BYTE    01h
  82270.  16h    BYTE    01h
  82271.  17h    BYTE    00h
  82272. --------s-65----SI0000-----------------------
  82273. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  82274.     SI = 0000h
  82275. --------s-65----SI0003-----------------------
  82276. INT 65 - Ad Lib SOUND.COM - SET STATE
  82277.     SI = 0003h
  82278.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  82279. SeeAlso: SI=0004h
  82280. --------s-65----SI0004-----------------------
  82281. INT 65 - Ad Lib SOUND.COM - GET STATE
  82282.     SI = 0004h
  82283. Return: AX = status
  82284.         0000h all done playing sounds
  82285.         else  still playing sounds
  82286. SeeAlso: SI=0003h
  82287. --------s-65----SI0006-----------------------
  82288. INT 65 - Ad Lib SOUND.COM - SET MODE
  82289.     SI = 0006h
  82290.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  82291. SeeAlso: SI=0007h
  82292. --------s-65----SI0007-----------------------
  82293. INT 65 - Ad Lib SOUND.COM - GET MODE
  82294.     SI = 0007h
  82295. Return: AX = mode
  82296.         0000h melodic
  82297.         0001h percussive
  82298. SeeAlso: SI=0006h
  82299. --------s-65----SI000C-----------------------
  82300. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  82301.     SI = 000Ch
  82302.     ES:BX -> WORD voice = 0000h to 0008h
  82303. SeeAlso: SI=000Dh
  82304. --------s-65----SI000D-----------------------
  82305. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  82306.     SI = 000Dh
  82307. Return: AX = voice (0000h to 0008h)
  82308. SeeAlso: SI=000Ch
  82309. --------s-65----SI8000-----------------------
  82310. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  82311.     SI = 8000h
  82312. Return: DX:AX -> internal data structures
  82313. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  82314.       Pro Audio Spectrum sound boards
  82315. SeeAlso: SI=8001h
  82316. --------s-65----SI8001-----------------------
  82317. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  82318.     SI = 8001h
  82319. Return: AX = ???
  82320.     DX = number of voices??? (09h or 0Bh)
  82321. SeeAlso: SI=8000h
  82322. --------s-65----SI8002-----------------------
  82323. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  82324.     SI = 8002h
  82325. SeeAlso: SI=8003h
  82326. --------s-65----SI8003-----------------------
  82327. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  82328.     SI = 8003h
  82329. SeeAlso: SI=8002h
  82330. --------s-65----SI8004-----------------------
  82331. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  82332.     SI = 8004h
  82333. Return: AX = ??? (0280h)
  82334.     DX = ??? (01A0h)
  82335. --------s-65----SI8005-----------------------
  82336. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  82337.     SI = 8005h
  82338.     ???
  82339. Return: ???
  82340. SeeAlso: SI=8000h
  82341. --------S-65---------------------------------
  82342. INT 65 U - EZRECV v1.0 - API
  82343.     AX = function
  82344.         0000h ???
  82345.         Return: AX = ??? or FFFFh
  82346.         0001h ???
  82347.         Return: AX = status (0000h or 0001h)
  82348.         0002h ???
  82349.         Return: AX = status (0000h or 0001h)
  82350.         0003h set ??? to 0001h
  82351.         Return: AX = 0000h
  82352.         0004h ???
  82353.         Return: AX = ???
  82354. Return: BH = COM port being used
  82355.     BL = speed???
  82356.     CH = ???
  82357.     CL = ???
  82358.     DX = ???
  82359.     DS = ???
  82360.     ES = EZRECV data segment
  82361. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  82362. --------*-66---------------------------------
  82363. INT 66 - reserved for user interrupt
  82364. --------d-66---------------------------------
  82365. INT 66 - Adaptec controllers - DRIVE 1 DATA
  82366. Desc:    this vector stores the third four bytes of the parameter table for
  82367.       hard disk 1
  82368. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  82369. --------h-66---------------------------------
  82370. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  82371. SeeAlso: INT 64"DG10"
  82372. --------N-66---------------------------------
  82373. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  82374. Program: TurboNET is a NetBIOS-based file redirector and server
  82375. Note:    hooked but not used (IRET) by both redirector and server; called from
  82376.       server's INT 28 handler
  82377. SeeAlso: INT 2F/AX=8100h
  82378. --------d-66---------------------------------
  82379. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  82380. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  82381. --------W-66---------------------------------
  82382. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  82383. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  82384.       which will expire and call INT 66.  This timer can be used to
  82385.       calculate elapsed execution time etc.
  82386. --------K-66---------------------------------
  82387. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  82388. Return: immediately (IRET)
  82389. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  82390. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  82391. Note:    the installation check consists of testing for the signature bytes
  82392.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  82393. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  82394.       before falling back to INT 60-67, but only uses the last of these
  82395.       ranges in v5.4
  82396. SeeAlso: INT 2F/AX=E300h
  82397. Index: installation checks;Newkey|Newkey;installation check
  82398. --------U-66---------------------------------
  82399. INT 66 - PC-Magazin - INCA
  82400.     details not yet availble
  82401. Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
  82402.       issue 51-52/85.
  82403. SeeAlso: INT 61"SWAPx"
  82404. --------F-6601-------------------------------
  82405. INT 66 - BitFax Scheduler - SET MODE???
  82406.     AH = 01h
  82407. SeeAlso: AH=02h
  82408. --------F-6602-------------------------------
  82409. INT 66 - BitFax Scheduler - SET MODE???
  82410.     AH = 02h
  82411. SeeAlso: AH=01h
  82412. --------F-6603-------------------------------
  82413. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  82414.     AH = 03h
  82415.     ???
  82416. Return: ???
  82417. SeeAlso: AH=05h
  82418. --------F-6604-------------------------------
  82419. INT 66 - BitFax Scheduler - GET STATUS???
  82420.     AH = 04h
  82421. Return: AX = ??? (0000h or 0001h)
  82422.     DX = BitSched version???  (for versions >= 3.00)
  82423.         9796h (ver. 3.00)
  82424.         97E6h (ver. 3.02)
  82425.         92D0h (ver. 3.04.06)
  82426.         9510h (ver. 3.06.02)
  82427. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  82428. --------F-6605-------------------------------
  82429. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  82430.     AH = 05h
  82431.     BX:CX -> command block (see #1961)
  82432.     ???
  82433. Return: ???
  82434. SeeAlso: AH=03h
  82435.  
  82436. Format of BitFax command block:
  82437. Offset    Size    Description    (Table 1961)
  82438.  00h 18 BYTEs    configuration bytes???
  82439.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  82440.  52h    BYTEs    ASCIZ directory containing BitFax executables
  82441.  92h    BYTEs    ASCIZ telephone number
  82442.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  82443.  C3h 15 BYTEs    configuration bytes???
  82444.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  82445.           configuration information???)
  82446. 122h    BYTEs    configuration bytes???
  82447. 12Ch    BYTE    00h don't send cover page
  82448.         01h send cover page
  82449. 12Dh  7 BYTEs    configuration bytes???
  82450. 134h    BYTEs    ASCIZ path of file to send
  82451. 174h    BYTEs    more configuration bytes???
  82452.     ???
  82453. --------F-6606-------------------------------
  82454. INT 66 - BitFax Scheduler - SET MODE???
  82455.     AH = 06h
  82456. Return: DX = BitSched version??? (same as AH=04h)
  82457. SeeAlso: AH=04h
  82458. --------s-660688-----------------------------
  82459. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  82460.     AX = 0688h
  82461.     DS:SI -> SNDSTRUC (see #1962)
  82462. Return: ???
  82463. Program: The IBMSND driver is part of John W. Ratcliff's
  82464.        The IBM Digitized Sound Package
  82465. Note:    the installation check consists of looking for a valid signature
  82466.       string six bytes prior to the interrupt handler; this string may
  82467.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  82468.       determine whether IBMSND is installed)
  82469. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  82470.  
  82471. Format of IBMSND driver SNDSTRUC:
  82472. Offset    Size    Description    (Table 1962)
  82473.  00h    DWORD    -> audio data
  82474.  04h    WORD    length of audio data in bytes
  82475.  06h    DWORD    -> playback status flag
  82476.  0Ah    WORD    playback frequency
  82477. --------s-660689-----------------------------
  82478. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  82479.     AX = 0689h
  82480. Return: AX = status
  82481.         0000h no sound playing
  82482.         0001h sound effect is currently playing
  82483. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  82484. --------s-66068A-----------------------------
  82485. INT 66 - IBMSND driver - PREFORMAT SOUND
  82486.     AX = 068Ah
  82487.     DS:SI -> SNDSTRUC (see #1962)
  82488. Desc:    convert audio data into output hardware format
  82489. SeeAlso: AX=068Bh
  82490. --------s-66068B-----------------------------
  82491. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  82492.     AX = 068Bh
  82493.     DS:SI -> SNDSTRUC (see #1962)
  82494. Return: AX = ???
  82495. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  82496. --------s-66068C-----------------------------
  82497. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  82498.     AX = 068Ch
  82499. Return: AX = capabilities (see #1963)
  82500.     DX = playback rate if fixed-frequency playback
  82501. SeeAlso: AX=0689h,AX=068Dh
  82502.  
  82503. Bitfields for IBMSND driver capabilities:
  82504. Bit(s)    Description    (Table 1963)
  82505.  0    can play audio in background
  82506.  1    data is massaged
  82507.  2    driver plays at fixed frequency, resampling input data to fit
  82508.  3    driver uses timer interrupt
  82509. --------s-66068D-----------------------------
  82510. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  82511.     AX = 068Dh
  82512. Return: AX = current playback address
  82513. Desc:    determine what point in the audio data the playback has reached, for
  82514.       synchronization with video or animation effects
  82515. Notes:    this function applies to background playback only
  82516.     the reported address may be an approximation rather than the exact
  82517.       address
  82518. SeeAlso: AX=068Ch,AX=0691h
  82519. --------s-66068E-----------------------------
  82520. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  82521.     AX = 068Eh
  82522.     BX:DX -> callback function
  82523.         0000h:0000h to disable callback
  82524.     DS = value to load into DS when calling the callback function
  82525. Desc:    specify the function to be called when playback of a sound effect is
  82526.       completed
  82527. Note:    the callback function will typically be called during a hardware
  82528.       interrupt, so all the usual precautions should be taken except for
  82529.       preserving registers
  82530. SeeAlso: AX=0691h
  82531. --------s-66068F-----------------------------
  82532. INT 66 - IBMSND driver - STOP CURRENT SOUND
  82533.     AX = 068Fh
  82534. Desc:    cause any currently-playing sound effect to be terminated
  82535. SeeAlso: AX=0688h,AX=068Bh
  82536. --------s-660690-----------------------------
  82537. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  82538.     AX = 0690h
  82539. Note:    this function is no longer implemented
  82540. --------s-660691-----------------------------
  82541. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  82542.     AX = 0691h
  82543. Return: AX:DX -> current callback function
  82544.     BX = original caller's DS register
  82545. Program: The IBMSND driver is part of John W. Ratcliff's
  82546.        The IBM Digitized Sound Package
  82547. SeeAlso: AX=068Eh
  82548. --------s-660701-----------------------------
  82549. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  82550.     AX = 0701h
  82551. Return: AX = digitized sound capabilities
  82552.         0000h if digitized sound driver (functions 06xxh) not available
  82553. Note:    the installation check for the MIDI driver is to test for the signature
  82554.       "MIDI" six bytes before the interrupt handler
  82555. SeeAlso: AX=0688h
  82556. --------n-6610-------------------------------
  82557. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  82558.     AH = 10h
  82559. Return: CF clear
  82560.     AX = 0000h
  82561.     BX = ??? (0012h)
  82562.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  82563. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  82564.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  82565.       Corporation which makes applications pen-aware
  82566. --------n-6611-------------------------------
  82567. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  82568.     AH = 11h
  82569.     DX:BX -> new handler for ???
  82570. Return: CF clear
  82571.     AX = 0000h
  82572.     DX:BX -> old handler for ??? (points at RETF by default)
  82573. --------n-6612-------------------------------
  82574. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  82575.     AH = 12h
  82576. Return:    CF clear
  82577.     AX = 0000h
  82578. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  82579.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  82580. SeeAlso: AH=13h
  82581. --------n-6613-------------------------------
  82582. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  82583.     AH = 13h
  82584. Return: CF clear
  82585.     other register as returned by INT 33/AX=0000h
  82586. SeeAlso: AH=12h
  82587. --------n-6614-------------------------------
  82588. INT 66 - PenDOS - TDMOUSE.EXE - ???
  82589.     AH = 14h
  82590.     BX = ???
  82591.     CX = ???
  82592. Return: CF clear
  82593.     AX = 0000h
  82594. --------n-6615-------------------------------
  82595. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  82596.     AH = 15h
  82597.     DX:BX -> new handler for ???
  82598. Return: CF clear
  82599.     AX = 0000h
  82600.     DX:BX -> old handler (points at RETF by default)
  82601. --------n-6616-------------------------------
  82602. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  82603.     AH = 16h to 1Fh
  82604. Return: CF set
  82605. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  82606.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  82607.       Corporation which makes applications pen-aware
  82608. --------n-6621-------------------------------
  82609. INT 66 - PenDOS - PINK - ???
  82610.     AH = 21h
  82611. Return: CF clear if successful
  82612.     CF set on error
  82613. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  82614. --------n-6622-------------------------------
  82615. INT 66 - PenDOS - PINK - ???
  82616.     AH = 22h
  82617.     DX:BX -> ???
  82618.     CL = ???
  82619. Return: CF clear if successful
  82620.     CF set on error
  82621.     ???
  82622. SeeAlso: AH=24h
  82623. --------n-6623-------------------------------
  82624. INT 66 - PenDOS - PINK - ???
  82625.     AH = 23h
  82626.     ???
  82627. Return: CF clear if successful
  82628.     CF set on error
  82629.     ???
  82630. --------n-6624-------------------------------
  82631. INT 66 - PenDOS - PINK - ???
  82632.     AH = 24h
  82633.     DX:BX -> ???
  82634.     CL = ???
  82635. Return: CF clear if successful
  82636.     CF set on error
  82637.     ???
  82638. SeeAlso: AH=22h
  82639. --------n-6625-------------------------------
  82640. INT 66 - PenDOS - PINK - ???
  82641.     AH = 25h
  82642.     CL = ??? (NOP if 00h)
  82643.     ???
  82644. Return: CF clear if successful
  82645.     CF set on error
  82646.     ???
  82647. --------n-6627-------------------------------
  82648. INT 66 - PenDOS - PINK - ???
  82649.     AH = 27h
  82650.     BL = ???
  82651.     BH = ???
  82652.     CL = ??? (0-3)
  82653.     DL = ??? (> BL)
  82654.     DH = ??? (> BH)
  82655. Return: ???
  82656. --------n-6628-------------------------------
  82657. INT 66 - PenDOS - PINK - ???
  82658.     AH = 28h
  82659.     ???
  82660. Return: CF clear if successful
  82661.     CF set on error
  82662.     ???
  82663. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  82664. --------n-6629-------------------------------
  82665. INT 66 - PenDOS - PINK - ???
  82666.     AH = 29h
  82667.     ???
  82668. Return: ???
  82669. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  82670. --------n-662A-------------------------------
  82671. INT 66 - PenDOS - PINK - ???
  82672.     AH = 2Ah
  82673.     DL = ??? (nonzero)
  82674.     DH = ??? (nonzero)
  82675. Return: CF clear if successful
  82676.     CF set on error
  82677.     ???
  82678. --------n-662B-------------------------------
  82679. INT 66 - PenDOS - PINK - ???
  82680.     AH = 2Bh
  82681.     ???
  82682. Return: CF clear if successful
  82683.     CF set on error
  82684.     ???
  82685. --------n-662F-------------------------------
  82686. INT 66 - PenDOS - PINK - INITIALIZE
  82687.     AH = 2Fh
  82688.     ???
  82689. Return: AX = status
  82690.         0000h failed
  82691.         FFFFh successful
  82692.     ???
  82693. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  82694. --------F-663345-----------------------------
  82695. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  82696.     AX = 3345h
  82697. Return: AX = FFFFh error removing TSR
  82698. Note:    the installation check consists of checking for the signature
  82699.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  82700. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  82701. Index:    installation check;BitFax Scheduler
  82702. --------n-6640-------------------------------
  82703. INT 66 - PenDOS - PKEYUS - GET VERSION
  82704.     AH = 40h
  82705. Return: CF clear
  82706.     AX = 0000h
  82707.     BH = major version (02h for version bundled with IBM DOS 6.1)
  82708.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  82709.     DL = ??? (4Eh)
  82710.     DH = ??? (0Eh)
  82711. --------n-6641-------------------------------
  82712. INT 66 - PenDOS - PKEYUS - SET ???
  82713.     AH = 41h
  82714.     BX = ???
  82715.     CL = ??? (08h-20h)
  82716.     DL = screen column??? (<= 50h)
  82717.     DH = screen row???  (<= 3Ch)
  82718. Return: AX = status (0000h successful, 0001h error)
  82719. Note:    this function also sets an internal flag
  82720. SeeAlso: AH=42h,AH=43h
  82721. --------n-6642-------------------------------
  82722. INT 66 - PenDOS - PKEYUS - ???
  82723.     AH = 42h
  82724. Return: CF clear
  82725.     AX = 0000h
  82726. Note:    this function also clears the flag set by AH=41h
  82727. SeeAlso: AH=41h
  82728. --------n-6643-------------------------------
  82729. INT 66 - PenDOS - PKEYUS - ???
  82730.     AH = 43h
  82731.     BX = ???
  82732.     DX = ???
  82733. Return: AX = status
  82734.         0000h if AH=41h flag set
  82735.         else
  82736.         AH = ???
  82737.         AL = ???
  82738.         BX = ???
  82739.         DX = ???
  82740. SeeAlso: AH=41h    
  82741. --------n-6644-------------------------------
  82742. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  82743.     AH = 44h to 4Fh
  82744. Return: CF set
  82745. --------n-6650-------------------------------
  82746. INT 66 - PenDOS - PMOUSE - SET ???
  82747.     AH = 50h
  82748.     BX = ???
  82749.     CH = ???
  82750.     DX = ???
  82751. Return: CF clear
  82752.     AX = 0000h
  82753. --------n-6651-------------------------------
  82754. INT 66 - PenDOS - PMOUSE - NOP
  82755.     AH = 51h
  82756. Return: CF set
  82757. --------n-6652-------------------------------
  82758. INT 66 - PenDOS - PMOUSE - ???
  82759.     AH = 52h
  82760.     BX = ???
  82761.     CL = ???
  82762.     DX = ???
  82763. Return: ???
  82764. --------n-6653-------------------------------
  82765. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  82766.     AH = 53h to 57h
  82767. Return: CF set
  82768. --------n-66---------------------------------
  82769. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  82770.     AH = function (58h-5Fh)
  82771. Note:    these functions exactly duplicate AH=50h-57h
  82772. ----------66AA02-----------------------------
  82773. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  82774.     AX = AA02h
  82775. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  82776. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  82777. --------n-66C5-------------------------------
  82778. INT 66 - PenDOS - VLOAD - API
  82779.     AH = C5h
  82780.     ???
  82781. Return: ???
  82782. --------t-66FFFBBXFFFB-----------------------
  82783. INT 66 - MicroHelp Stay-Res Plus - ???
  82784.     AX = FFFBh
  82785.     BX = FFFBh
  82786.     ???
  82787. Return: ???
  82788. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  82789. --------t-66FFFEBXFFFE-----------------------
  82790. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  82791.     AX = FFFEh
  82792.     BX = FFFEh
  82793. Return: only if unsuccessful
  82794. Notes:    installation check is for the interrupt handler to begin with the bytes
  82795.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  82796.       appear at offset 0005h (older versions) or the offset returned by
  82797.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  82798.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  82799.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  82800. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  82801. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  82802. Index:    installation check;Personal Calendar|installation check;CAL
  82803. --------t-66FFFFBXFFF0-----------------------
  82804. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  82805.     AX = FFFFh
  82806.     BX = FFF0h
  82807. Return: DI = offset of program name in interrupt handler segment
  82808. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  82809. --------d-67---------------------------------
  82810. INT 67 - Adaptec controllers - DRIVE 1 DATA
  82811. Desc:    this vector stores the last four bytes of the parameter table for
  82812.       hard disk 1
  82813. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  82814. --------d-67---------------------------------
  82815. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  82816. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  82817. --------I-67---------------------------------
  82818. INT 67 - Sangoma CCPOP 3270 resident module
  82819. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  82820. --------U-67---------------------------------
  82821. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  82822. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  82823.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  82824. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  82825.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  82826.       the signature value 434Ch:4F4Bh ('CLOK')
  82827. --------N-6700-------------------------------
  82828. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  82829.     AH = 00h
  82830.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  82831. Return: AL = status (see #1964)
  82832.     AH = semaphore owner if status=02h
  82833. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  82834.  
  82835. (Table 1964)
  82836. Values for PC-NET semaphore function status:
  82837.  00h    successful
  82838.  01h    invalid function
  82839.  02h    semaphore already locked
  82840.  03h    unable to lock semaphore
  82841.  04h    semaphore space exhausted
  82842. --------N-6701-------------------------------
  82843. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  82844.     AH = 01h
  82845.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  82846. Return: AL = status (see #1964)
  82847.     AH = semaphore owner if status=02h
  82848. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  82849. --------N-6702-------------------------------
  82850. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  82851.     AH = 02h
  82852.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  82853. Return: AL = status (see #1964)
  82854.     AH = semaphore owner if status=02h
  82855. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  82856. --------m-671E-------------------------------
  82857. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  82858.     AH = 1Eh
  82859. Return: AH = 00h if installed
  82860.         AL destroyed
  82861.         ES:DI -> ASCII signature "MemLimit"
  82862. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  82863. --------m-671F-------------------------------
  82864. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  82865.     AH = 1Fh
  82866.     DS:SI -> request packet (see #1965)
  82867. Return: AH = status (00h successful, 84h invalid function code, etc.)
  82868. SeeAlso: AH=1Eh
  82869.  
  82870. Format of 386MAX MEMLIMIT request packet:
  82871. Offset    Size    Description    (Table 1965)
  82872.  00h    WORD    function code (00h-0Fh)
  82873.  02h    WORD    return code (see #1966)
  82874.  04h  4 BYTEs    ???
  82875.  08h    WORD    ???
  82876.     ???
  82877.  
  82878. (Table 1966)
  82879. Values for 386MAX MEMLIMIT return code:
  82880.  00h    unknown request
  82881.  01h    invalid parameter for VCPI limit
  82882.  02h    VCPI limit set
  82883.  03h    invalid parameter for EMS limit
  82884.  04h    EMS limit set
  82885.  05h    DPMI disabled
  82886.  06h    XMS disabled
  82887.  07h    XMS limit set
  82888.  08h    unable to uninstall
  82889.  09h    unloaded
  82890. --------m-673F--CX5145-----------------------
  82891. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  82892.     AH = 3Fh
  82893.     CX = 5145h ("QE")
  82894.     DX = 4D4Dh ("MM")
  82895. Return: AH = 00h if installed
  82896.         ES:DI -> QEMM API entry point
  82897. Notes:    if no other program has hooked INT 67, an alternate installation
  82898.       check is to test for the string
  82899.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  82900.       handler's segment; the word at offset 12h contains the offset in
  82901.       the handler's segment of the API entry point
  82902.     although this function is still undocumented, Quarterdeck has recently
  82903.       documented two alternate methods for determining the QEMM API entry
  82904.       point, as well as several of the API functions
  82905.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  82906.       the alternate QEMM installation check and entry point functions 00h,
  82907.       02h, and 03h; version 4D only provides the signature string if the
  82908.       commandline argument "DV" is provided
  82909.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  82910.       recognize the returned entry point as providing QEMM's capabilities
  82911.       because a) only functions 0Ch (different from QEMM 0Ch) and
  82912.             1000h-1009h are supported,
  82913.           b) status is returned as for EMS functions, not QEMM funcs
  82914.           c) the protected-mode entry point returned by function 1000h
  82915.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  82916.     the string check mentioned above is not supported by 386MAX
  82917. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  82918. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  82919.  
  82920. (Table 1967)
  82921. Values for calling QEMM "QPI_GetStatus" function:
  82922.     AH = 00h get QEMM state
  82923. Return: CF clear
  82924.     AL = QEMM state
  82925.         bit 0 set if QEMM turned OFF
  82926.         bit 1 set if in "Auto" mode
  82927. Note:    this function is officially documented
  82928.  
  82929. (Table 1968)
  82930. Values for calling QEMM "QPI_SetStatus" function:
  82931.     AH = 01h set QEMM state
  82932.     AL = new state
  82933.         bit 0 set: place QEMM in OFF state
  82934. Return: CF clear if successful
  82935.     CF set on error
  82936. Note:    this function is officially documented
  82937.  
  82938. (Table 1969)
  82939. Values for calling QEMM QPI function 02h:
  82940.     AH = 02h get ???
  82941. Return: CF clear
  82942.     AX = segment of ??? data structure
  82943.     Data Structure
  82944.     Offset    Size    Description
  82945.      00h    DWORD    page table entry for ???
  82946.         ???
  82947.  
  82948. (Table 1970)
  82949. Values for calling QEMM "QPI_GetVersion" function:
  82950.     AH = 03h get QEMM version
  82951. Return: CF clear
  82952.     AX = BX = version in BCD
  82953. Notes:    this function is officially documented.     The most recent official docs
  82954.       state that the version is returned in both AX and BX; older
  82955.       documentation only mentions BX
  82956.     MICEMM returns AX=0001h, BX unchanged
  82957.  
  82958. (Table 1971)
  82959. Values for calling QEMM QPI function 04h:
  82960.     AH = 04h allocate 4K page and set AUTO/ON mode
  82961. Return: CF clear if successful
  82962.         DX = page number of a 4K page
  82963.     CF set if unable to allocate page
  82964. Note:    QEMM mode unchanged if not AUTO/OFF
  82965.  
  82966. (Table 1972)
  82967. Values for calling QEMM QPI function 05h:
  82968.     AH = 05h free 4K page and turn QEMM off
  82969.     DX = page number returned by function 04h
  82970. Return: CF clear
  82971. Note:    QEMM mode unchanged if not AUTO/ON
  82972.  
  82973. (Table 1973)
  82974. Values for calling QEMM QPI function 06h:
  82975.     AH = 06h make new mapping context???
  82976.     DX = page number of 4K page to hold page table
  82977. Return: CF clear
  82978. Note:    copies page table into given page and then sets ??? page table entry
  82979.       to point at copy
  82980.  
  82981. (Table 1974)
  82982. Values for calling QEMM QPI function 07h:
  82983.     AH = 07h get mapping context
  82984. Return: CF clear
  82985.     DX = page number of page table for current mapping context
  82986.  
  82987. (Table 1975)
  82988. Values for calling QEMM QPI function 08h:
  82989.     AH = 08h set mapping context???
  82990.     DX = linear page number of page table
  82991. Return: CF clear
  82992.  
  82993. (Table 1976)
  82994. Values for calling QEMM QPI function 09h:
  82995.     AH = 09h get linear page number for page table entry
  82996.     CX = page table index
  82997. Return: CF clear
  82998.     DX = linear page number
  82999.  
  83000. (Table 1977)
  83001. Values for calling QEMM QPI function 0Ah:
  83002.     AH = 0Ah set linear page number for page table entry
  83003.     CX = page table index
  83004.     DX = linear page number
  83005. Return: CF clear
  83006.  
  83007. (Table 1978)
  83008. Values for calling QEMM QPI function 0Bh:
  83009.     AH = 0Bh map 4K pages
  83010.     BX = number of pages
  83011.     CX = first page number (must be 0100h to allocate HMA)
  83012.     DX = EMS handle (memory belonging to EMS handle will be mapped
  83013.           into the address space beginning with the first page
  83014.           allocated to the handle)
  83015. Return: AH = 00h
  83016.  
  83017. (Table 1979)
  83018. Values for calling QEMM QPI function 0Ch:
  83019.     AH = 0Ch get available memory
  83020. Return: CF clear
  83021.     BX = 0001h
  83022.     CX = total 4K pages???
  83023.     DX = number of 4K pages free
  83024.  
  83025. (Table 1980)
  83026. Values for calling QEMM QPI function 0Dh:
  83027.     AH = 0Dh CRT controller I/O port trapping
  83028.     AL = mode
  83029.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  83030.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  83031.           03D4h, and 03D5h
  83032.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  83033. Return: CF clear
  83034.  
  83035. (Table 1981)
  83036. Values for calling QEMM QPI function 0Eh:
  83037.     AH = 0Eh set cursor virtualization callbacks
  83038.     DS:BX -> FAR routine for getting hardware cursor address
  83039.     ES:DX -> FAR routine for setting hardware cursor address
  83040. Return: CF clear
  83041. Note:    both callbacks are invoked with CL indicating which
  83042.       CRT controller register to access (0Eh for high
  83043.       byte of cursor address, 0Fh for low byte)
  83044.     the DS:BX callback should return BX=cursor address;
  83045.       ES:DX is called with BL or BH (depending on CL)
  83046.       set to the appropriate half of the cursor's address
  83047.  
  83048. (Table 1982)
  83049. Values for calling QEMM QPI function 0Fh:
  83050.     AH = 0Fh unmap 4K pages
  83051.     CX = first page number
  83052.     DX = number of pages
  83053. Return: CF clear
  83054.     AL = 00h/01h if ???
  83055. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  83056.       simulate a disabled A20
  83057.  
  83058. (Table 1983)
  83059. Values for calling QEMM QPI function 1000h:
  83060.     AX = 1000h get protected-mode interface
  83061.     DS:SI -> 16-byte buffer for two GDT entries
  83062.     ES:DI -> buffer for 4K page table
  83063. Return: CF clear
  83064.     EAX = offset of protected-mode API entry point
  83065.     DS:SI buffer filled with two GDT descriptors
  83066.         first is QEMM code segment, second is data???
  83067.     ES:DI buffer filled with 4K page table
  83068.     DI points to first unused page table entry
  83069. SeeAlso: INT 67/AX=DE01h
  83070.  
  83071. (Table 1984)
  83072. Values for calling QEMM QPI function 1001h:
  83073.     AX = 1001h get CPU debug registers
  83074.     ES:DI -> buffer for debug registers (8 DWORDs)
  83075. Return: CF clear
  83076.     BL = INT01 handling (see function 1002h)
  83077.     ES:DI buffer filled
  83078.  
  83079. (Table 1985)
  83080. Values for calling QEMM QPI function 1002h:
  83081.     AX = 1002h set CPU debug registers
  83082.     BL = INT01 handling
  83083.         00h     reflect all debugging exceptions as V86-mode INT 01's
  83084.         else convert debugging exceptions other than single-step
  83085.           into V86-mode INT 03's, single-step to INT 01's
  83086.     ES:DI -> buffer containing debug registers (8 DWORDs)
  83087. Return: CF clear
  83088. Notes:    identical to INT 67/AX=DE09h if BL=01h
  83089.     the INT01 handling flag is set to 01h by the general-protection
  83090.       violation handler for certain privileged instructions
  83091.  
  83092. (Table 1986)
  83093. Values for calling QEMM QPI function 1003h:
  83094.     AX = 1003h get machine status word CR0
  83095. Return: CF clear
  83096.     EAX = contents of CR0
  83097. SeeAlso: INT 67/AX=DE07h
  83098.  
  83099. (Table 1987)
  83100. Values for calling QEMM QPI function 1004h:
  83101.     AX = 1004h allocate a 4K page
  83102. Return: CF clear if successful
  83103.         EDX = linear address of allocated page
  83104.     CF set on error
  83105. SeeAlso: INT 67/AX=DE04h
  83106.  
  83107. (Table 1988)
  83108. Values for calling QEMM QPI function 1005h:
  83109.     AX = 1005h free 4K page
  83110.     EDX = linear address of page to free
  83111. Return: CF clear
  83112. SeeAlso: INT 67/AX=DE05h
  83113.  
  83114. (Table 1989)
  83115. Values for calling QEMM QPI function 1006h:
  83116.     AX = 1006h NOP
  83117. Return: CF set
  83118.  
  83119. (Table 1990)
  83120. Values for calling QEMM QPI function 1007h:
  83121.     AX = 1007h get maximum physical memory address
  83122. Return: CF clear
  83123.     EDX = physical address of highest 4K memory page
  83124. SeeAlso: INT 67/AX=DE02h
  83125.  
  83126. (Table 1991)
  83127. Values for calling QEMM QPI function 1008h:
  83128.     AX = 1008h get physical address of page in first megabyte
  83129.     CX = page number (linear address shifted right 12 bits)
  83130. Return: CF clear
  83131.     EDX = linear address of page
  83132. SeeAlso: function 1F00h
  83133.  
  83134. (Table 1992)
  83135. Values for calling QEMM QPI function 1009h:
  83136.     AX = 1009h switch to protected mode
  83137.     ESI = linear address in first megabyte of system reg values
  83138.           (see INT 67/AX=DE0Ch)
  83139.     interrupts disabled
  83140. Return: interrupts disabled
  83141.     GDTR, IDTR, LDTR, TR loaded
  83142.     SS:ESP must have at least 16 bytes space, and the
  83143.           entry point is required to set up a new stack
  83144.           before enabling interrupts
  83145.     EAX, ESI, DS, ES, FS, GS destroyed
  83146.  
  83147. (Table 1993)
  83148. Values for calling QEMM QPI function 100Ah:
  83149.     AX = 100Ah switch back to virtual-86 mode
  83150.     DS = selector for data segment from function 1000h
  83151.     SS:ESP in first megabyte of linear memory
  83152.     interrupts disabled
  83153.     STACK:    QWORD  return address from FAR call to 32-bit segment
  83154.         DWORD  EIP
  83155.         DWORD  CS
  83156.         DWORD  reserved for EFLAGS
  83157.         DWORD  ESP
  83158.         DWORD  SS
  83159.         DWORD  ES
  83160.         DWORD  DS
  83161.         DWORD  FS
  83162.         DWORD  GS
  83163.     will switch to virtual86 mode with interrupts disabled, all
  83164.       segment registers loaded, and EAX destroyed.
  83165.  
  83166. (Table 1994)
  83167. Values for calling QEMM QPI function 11h:
  83168.     AH = 11h get memory type map
  83169.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  83170.           by QEMM 6.00)
  83171.     ES:DI -> 256-byte buffer for memory types
  83172. Return: CF clear
  83173.     BL = ???
  83174.     ES:DI buffer filled
  83175. Note:    each byte of the buffer corresponds to a 4K page, and
  83176.       contains the type of that page: 00h = mappable,
  83177.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  83178.       05h = video, 06h = ROM, 07h = adapter ROM,
  83179.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  83180.       0Bh = conventional, 83h = high RAM under MS Windows
  83181.  
  83182. (Table 1995)
  83183. Values for calling QEMM QPI function 12h:
  83184.     AH = 12h get HIRAM chain
  83185. Return: CF clear
  83186.     BX = segment of first MCB in high memory
  83187.         0000h if no high memory
  83188.  
  83189. (Table 1996)
  83190. Values for calling QEMM QPI function 1300h:
  83191.     AX = 1300h VIDRAMEGA???
  83192.     BL = 00h copy ???
  83193.          nonzero copy ??? (reverse)
  83194. Return: CF clear
  83195.     AL = status
  83196.         00h if all pages clean
  83197.         01h if any page dirty
  83198.  
  83199. (Table 1997)
  83200. Values for calling QEMM QPI function 1301h:
  83201.     AX = 1301h check if pages modified
  83202.     DX:DI = start address of range to check
  83203.     CX = length of range in paragraphs
  83204. Return: CF clear
  83205.     CX = status
  83206.         0000h none of the indicated pages is dirty
  83207.         DI destroyed
  83208.         1000h one or more pages is dirty
  83209.         DI = low word of first dirty page's linear addr
  83210.  
  83211. (Table 1998)
  83212. Values for calling QEMM QPI function 1302h:
  83213.     AX = 1302h ???
  83214.     BL = ???
  83215.     BH = ???
  83216.     CX = ???
  83217.     SI = offset of ???
  83218.     DI = offset of ???
  83219.     ???
  83220. Return: CF clear
  83221.     ???
  83222. Note:    disables certain interrupts at the two 8259 PICs during
  83223.       execution; also modifies CRT controller during
  83224.       execution under certain circumstances
  83225.  
  83226. (Table 1999)
  83227. Values for calling QEMM QPI function 1303h:
  83228.     AX = 1303h initialize EGA graphics virtualization
  83229.     BX = number of pages (less 1) of EMS to allocate
  83230. Return: CF clear if successful
  83231.         DX = EMS handle
  83232.     CF set on error
  83233.  
  83234. (Table 2000)
  83235. Values for calling QEMM QPI function 1304h:
  83236.     AX = 1304h shutdown EGA graphics virtualization
  83237.     DX = EMS handle being used for virtualization
  83238. Return: CF clear
  83239.  
  83240. (Table 2001)
  83241. Values for calling QEMM QPI function 1305h:
  83242.     AX = 1305h select portion of EGA graphics to virtualize???
  83243.     (related to graphics virtualization, changes memory mappings)
  83244.     CX = start offset within A000h segment of virtualized mem???
  83245. Return: CF clear
  83246. Note:    disables certain interrupts at the two 8259 PICs during
  83247.       execution (see func 130Ch) and runs inside a QEMM
  83248.       critical section
  83249.  
  83250. (Table 2002)
  83251. Values for calling QEMM QPI function 1306h:
  83252.     AX = 1306h set DESQview critical section counter address
  83253.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  83254. Return: CF clear
  83255. Note:    also sets a pointer in the low-memory part of QEMM to
  83256.       the current value of INT 15 if ES:BX not 0000h:0000h
  83257.  
  83258. (Table 2003)
  83259. Values for calling QEMM QPI function 1307h:
  83260.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  83261. Return: CF clear
  83262. Note:    disables certain interrupts at the two 8259 PICs during
  83263.       execution (see func 130Ch) and runs inside a QEMM
  83264.       critical section
  83265.  
  83266. (Table 2004)
  83267. Values for calling QEMM QPI function 1308h:
  83268.     AX = 1308h start/reset CRT controller I/O trapping
  83269.     BL = subfunction
  83270.         00h restore CRTC I/O port trapping to previous state
  83271.         else start trapping all accesses to I/O ports 03B0-03DF
  83272. Return: CF clear
  83273. Note:    if called more than once in a row with BL nonzero, the
  83274.       original state of the I/O port trapping will be lost
  83275.  
  83276. (Table 2005)
  83277. Values for calling QEMM QPI function 1309h:
  83278.     AX = 1309h Hercules mode-change support
  83279.     ES:BX -> new address for Hercules mode-change callback
  83280. Return: CF clear
  83281. Note:    the callback function is called whenever the CRTC mode
  83282.       register is written, with AL set to the value written
  83283.  
  83284. (Table 2006)
  83285. Values for calling QEMM QPI function 130Ah:
  83286.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  83287.     CX:DX -> DAC register virtualization buffer (see #2088)
  83288.         or 0000h:0000h to disable
  83289. Return: CF clear
  83290.  
  83291. (Table 2007)
  83292. Values for calling QEMM QPI function 130Bh:
  83293.     AX = 130Bh ???
  83294.     BL = ??? (??? or 00h)
  83295. Return: CF clear
  83296.     ???
  83297. Note:    calls AX=130Eh in some cases
  83298.  
  83299. (Table 2008)
  83300. Values for calling QEMM QPI function 130Ch:
  83301.     AX = 130Ch set interrupts to mask
  83302.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  83303.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  83304. Return: CF clear
  83305.  
  83306. (Table 2009)
  83307. Values for calling QEMM QPI function 130Dh:
  83308.     AX = 130Dh map EGA memory at A0000h
  83309.     ???
  83310. Return: CF clear
  83311. Note:    disables certain interrupts at the two 8259 PICs during execution
  83312.       (see #2008) and runs inside a QEMM critical section
  83313.     calls AX=1307h (see #2003)
  83314.  
  83315. (Table 2010)
  83316. Values for calling QEMM QPI function 130Eh:
  83317.     AX = 130Eh ??? (modifies CRT controller setup)
  83318.     ???
  83319. Return: CF clear
  83320.  
  83321. (Table 2011)
  83322. Values for calling QEMM QPI function 130Fh:
  83323.     AX = 130Fh reset ???
  83324. Return: CF clear
  83325.  
  83326. (Table 2012)
  83327. Values for calling QEMM QPI function 1310h:
  83328.     AX = 1310h copy modified pages to physical video RAM???
  83329.     ???
  83330. Return: CF clear
  83331. Note:    disables certain interrupts at the two 8259 PICs during execution
  83332.       (see #2008) and runs inside a QEMM critical section
  83333.     also calls AX=130Dh (see #2009)
  83334.  
  83335. (Table 2013)
  83336. Values for calling QEMM QPI function 1311h:
  83337.     AX = 1311h set ???
  83338.     BL = zero/nonzero???
  83339. Return: CF clear
  83340. Note:    certain operations will be performed with interrupts
  83341.       (as set by AX=130Ch) enabled rather than disabled if
  83342.       called with BL nonzero
  83343.  
  83344. (Table 2014)
  83345. Values for calling QEMM QPI function 1312h:
  83346.     AX = 1312h (v6.02) NOP???
  83347. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  83348.  
  83349. (Table 2015)
  83350. Values for calling QEMM QPI function 1400h:
  83351.     AX = 1400h initialize DESQview "protection level" support
  83352.     ES:DI -> protection level configuration (at least 24 bytes)
  83353.         (see #2082)
  83354.     BL = highest ??? to return (one less than number of words)
  83355. Return: CF clear
  83356.     AX = ??? (4204h for v6.00)
  83357. Note:    QEMM also sets the protected mode INT 02 and INT 06
  83358.       vectors to alternate handlers in certain cases
  83359.  
  83360. (Table 2016)
  83361. Values for calling QEMM QPI function 1401h:
  83362.     AX = 1401h turn off DESQview protection level support
  83363.         Return: CF clear
  83364.             ???
  83365.         Notes:    clears the DV critical-section flag address set with
  83366.               function 1306h
  83367.             QEMM also sets the protected mode INT 02 and INT 06
  83368.               vectors to the default handlers if they had been
  83369.               revectored by function 1400h
  83370.  
  83371. (Table 2017)
  83372. Values for calling QEMM QPI function 1402h:
  83373.     AX = 1402h set protection level???
  83374.         BL = protection level???
  83375.             00h NOP
  83376.             01h ???
  83377.             02h ???
  83378.             other (03h) ???
  83379.         ES:DI -> ???
  83380.         Return: CF clear
  83381.             ???
  83382.         Format of Data structure:
  83383.         Offset    Size    Description
  83384.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  83385.          02h    WORD    segment of ??? (word at X:0124h set to this)
  83386.          04h    WORD    number of paragraphs of ???
  83387.          06h  3 WORDs    ??? (copied to X:0000h)
  83388.          0Ch    WORD    ???
  83389.  
  83390. (Table 2018)
  83391. Values for calling QEMM QPI function 1403h:
  83392.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  83393.         ES:DI -> ??? structure added to end of ??? list
  83394.             (at least 31 bytes, DWORD at offset 06h used for
  83395.              storing pointer to next struc, WORD at offset 00h
  83396.              seems to be a key or index)
  83397.         Return: CF clear
  83398.  
  83399. (Table 2019)
  83400. Values for calling QEMM QPI function 1404h:
  83401.     AX = 1404h NOP
  83402.         Return: CF clear
  83403.  
  83404. (Table 2020)
  83405. Values for calling QEMM QPI function 1405h:
  83406.     AX = 1405h remove ??? from ??? list
  83407.         BX = key???
  83408.         Return: CF clear
  83409.  
  83410. (Table 2021)
  83411. Values for calling QEMM QPI function 1406h:
  83412.     AX = 1406h ???
  83413.         ???
  83414.         Return: CF clear
  83415.             ???
  83416.         Notes:    this function is a NOP unless protection level 2 or 3
  83417.               is active
  83418.             when not a NOP, one of the actions is to write-protect
  83419.               certain memory pages
  83420.  
  83421. (Table 2022)
  83422. Values for calling QEMM QPI function 1407h:
  83423.     AX = 1407h ???
  83424.         ???
  83425.         Return: CF clear
  83426.             ???
  83427.         Note:    same as function 1406h, but only does anything if
  83428.               protection level 2 is active
  83429.  
  83430. (Table 2023)
  83431. Values for calling QEMM QPI function 1408h:
  83432.     AX = 1408h unprotect???
  83433.         ???
  83434.         Return: CF clear
  83435.             ???
  83436.  
  83437. (Table 2024)
  83438. Values for calling QEMM QPI function 1409h:
  83439.     AX = 1409h abort program causing protection violation???
  83440.         ???
  83441.         Return: CF clear
  83442.             ???
  83443.  
  83444. (Table 2025)
  83445. Values for calling QEMM QPI function 140Ah:
  83446.     AX = 140Ah set ???
  83447.         BX = index of ???
  83448.         Return: CF clear
  83449.             ???
  83450.         Notes:    no range checking is performed on BX
  83451.             this function is a NOP unless protection level 3 active
  83452.  
  83453. (Table 2026)
  83454. Values for calling QEMM QPI function 140Bh:
  83455.     AX = 140Bh get ???
  83456.         BX = index of ???
  83457.         SI = 0000h
  83458.         Return: CF clear
  83459.             SI = segment of 256-byte buffer??? or 0000h
  83460.         Notes:    no range checking is performed on BX
  83461.             this function is a NOP unless protection level 3 active
  83462.  
  83463. (Table 2027)
  83464. Values for calling QEMM QPI function 15h:
  83465.     AH = 15h set timer channel 0 virtualization buffer
  83466.         ES:BX -> WORD buffer for timer channel 0 divisor
  83467.             0000h:0000h to disable virtualization
  83468.         Return: CF clear
  83469.  
  83470. (Table 2028)
  83471. Values for calling QEMM v5.00+ QPI function 1600h:
  83472.     AX = 1600h get memory access status
  83473.         ES:DI -> 256-byte buffer
  83474.         Return: ES:DI buffer filled
  83475.         Note:    each byte of the buffer indicates the status of a 4K
  83476.               page (bit 0 set if read, bit 1 set if written)
  83477.  
  83478. (Table 2029)
  83479. Values for calling QEMM v5.00+ QPI function 1601h:
  83480.     AX = 1601h set memory access status
  83481.         ES:DI -> 256-byte buffer containing access statuses (see above)
  83482.  
  83483. (Table 2030)
  83484. Values for calling QEMM v5.00+ QPI function 17h:
  83485.     AH = 17h get memory usage statistics
  83486.         ES:DI -> 81-byte buffer for memory statistics (see #2086)
  83487.         Return: CF clear
  83488.  
  83489. (Table 2031)
  83490. Values for calling QEMM v5.11+ QPI function 18h:
  83491.     AH = 18h check whether conventional memory mapped into address range
  83492.         ES:BX = starting address
  83493.         CX = number of 4K pages
  83494.         Return: CF clear
  83495.             AL = 00h one or more pages is remapped
  83496.                  01h all pages in range are conventional memory
  83497.                 (physical address == virtual address)
  83498.  
  83499. (Table 2032)
  83500. Values for calling QEMM v5.11+ QPI function 19h:
  83501.     AH = 19h NOP
  83502.         Return: CF set
  83503.  
  83504. (Table 2033)
  83505. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  83506.     AX = 1A00h get byte from I/O port
  83507.     DX = port number
  83508. Return: CF clear
  83509.     BL = port value
  83510. Note:    this function was officially documented with the release of QEMM 7.50
  83511.  
  83512. (Table 2034)
  83513. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  83514.     AX = 1A01h send byte to I/O port
  83515.     BL = value to send
  83516.     DX = port number
  83517. Return: CF clear
  83518. Note:    this function was officially documented with the release of QEMM 7.50
  83519.  
  83520. (Table 2035)
  83521. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  83522.     AX = 1A02h
  83523.     BH = index value to send
  83524.     DX = base port number
  83525. Return: CF clear
  83526.     BL = value read from I/O port (DX+1)
  83527. Note:    this function was officially documented with the release of QEMM 7.50
  83528.  
  83529. (Table 2036)
  83530. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  83531.     AX = 1A03h send bytes to two consecutive I/O ports
  83532.     BH = value for first I/O port (DX)
  83533.     BL = value for second I/O port (DX+1)
  83534.     DX = base port number
  83535. Return: CF clear
  83536. Note:    this function was officially documented with the release of QEMM 7.50
  83537.  
  83538. (Table 2037)
  83539. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  83540.     AX = 1A04h
  83541.     BX = value to write to port
  83542.     CX = direction and size
  83543.         bit 2: output instead of input
  83544.         bit 3: word instead of byte
  83545.     DX = I/O port to be accessed
  83546. Return: CF clear
  83547.     BX = value read (if CX indicates read)
  83548. Note:    this function was officially documented with the release of QEMM 7.50
  83549.  
  83550. (Table 2038)
  83551. Values for calling QEMM v7.03+ function 1A05h
  83552.     AX = 1A05h
  83553.     ???
  83554. Return: ???
  83555.  
  83556. (Table 2039)
  83557. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  83558.     AX = 1A06h
  83559. Return: CF clear
  83560.     ES:DI -> current I/O callback function
  83561. Note:    this function was officially documented with the release of QEMM 7.50
  83562.  
  83563. (Table 2040)
  83564. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  83565.     AX = 1A07h
  83566.     ES:DI -> new I/O callback function
  83567. Return: CF clear
  83568. Note:    this function was officially documented with the release of QEMM 7.50
  83569.  
  83570. (Table 2041)
  83571. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  83572.     AX = 1A08h
  83573.     DX = I/O port number
  83574. Return: CF clear
  83575.     BL = trapping state (00h not being trapped, 01h trap installed)
  83576. Note:    this function was officially documented with the release of QEMM 7.50
  83577.  
  83578. (Table 2042)
  83579. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  83580.     AX = 1A09h
  83581.     DX = I/O port number
  83582. Return: CF clear
  83583. Note:    this function was officially documented with the release of QEMM 7.50
  83584.  
  83585. (Table 2043)
  83586. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  83587.     AX = 1A0Ah
  83588.     DX = I/O port number
  83589. Return: CF clear
  83590. Note:    this function was officially documented with the release of QEMM 7.50
  83591.  
  83592. (Table 2044)
  83593. Values for calling QEMM v5.11+ QPI function 1B00h:
  83594.     AX = 1B00h get EMM Import Structure address
  83595.     ES:DI -> buffer for EMM import data structure (see #2084)
  83596. Return: CF set on error
  83597.     CF clear if successful
  83598. SeeAlso: INT 21/AX=4402h/SF=01h
  83599.  
  83600. (Table 2045)
  83601. Values for calling QEMM v5.11+ QPI function 1B01h:
  83602.     AX = 1B01h disable V86 mode
  83603. Return: CF set on error
  83604.         (i.e. no Global EMM Import rec. allocated)
  83605.     CF clear if successful
  83606. Note:    shuts down EMS and initializes Global EMM Import record; this function
  83607.       is invoked from the callback supplied by INT 2F/AX=1605h
  83608.  
  83609. (Table 2046)
  83610. Values for calling QEMM v5.11+ QPI function 1B02h:
  83611.     AX = 1B02h enable V86 mode
  83612. Return: CF set on error
  83613.     CF clear if successful
  83614. Note:    restarts EMS and frees Global EMM Import record; this function is
  83615.       invoked from the callback supplied by INT 2F/AX=1605h
  83616.  
  83617. (Table 2047)
  83618. Values for calling QEMM v5.11+ QPI function 1B03h:
  83619.     AX = 1B03h MS Windows initializing
  83620.     CX = segment from which Windows init broadcast made???
  83621.     DX = Windows startup flags
  83622.     DI = Windows version number (major in upper byte)
  83623. Return: CF clear if successful
  83624.         DS:SI -> V86 mode enable/disable callback (see INT 2F/AX=1605h)
  83625.         ES:BX -> startup info structure (see INT 2F/AX=1605h)
  83626.     CF set on error (unable to start Windows)
  83627. SeeAlso: INT 2F/AX=1605h
  83628.  
  83629. (Table 2048)
  83630. Values for calling QEMM v5.11+ QPI function 1B04h:
  83631.     AX = 1B04h MS Windows terminating
  83632. Return: CF clear
  83633.  
  83634. (Table 2049)
  83635. Values for calling QEMM v5.11+ QPI function 1B05h:
  83636.     AX = 1B05h determine whether program is driver
  83637.     DS:DX -> ASCIZ filename
  83638. Return: CF clear
  83639.     AL = status
  83640.         01h if string ends in ".DRV"
  83641.         FFh if string ends in "GDI.EXE"
  83642.         00h otherwise
  83643. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  83644.       until GDI.EXE is loaded
  83645.  
  83646. (Table 2050)
  83647. Values for calling QEMM v5.11+ QPI function 1B06h:
  83648.     AX = 1B06h patch protected-mode check in Windows driver
  83649.     CX = length of data pointed at by DS:DX
  83650.     DS:DX -> buffer containing Windows driver code
  83651. Return: CF clear
  83652. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  83653.       sequences, which has the effect that the protected-mode check will
  83654.       only indicate protected mode in native protected mode and not in V86
  83655.       mode
  83656.  
  83657. (Table 2051)
  83658. Values for calling QEMM v5.11+ QPI function 1B07h:
  83659.     AX = 1B07h
  83660. BUG: QEMM 6.00-7.01 accept this and branch randomly
  83661.  
  83662. (Table 2052)
  83663. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  83664.     AX = 1B08h to 1BFFh
  83665. Return: CF set
  83666.  
  83667. (Table 2053)
  83668. Values for calling QEMM v5.11+ QPI function 1C00h:
  83669.     AX = 1C00h disable IRQ0-7 calldowns
  83670. Return: CF clear
  83671.  
  83672. (Table 2054)
  83673. Values for calling QEMM v5.11+ QPI function 1C01h:
  83674.     AX = 1C01h set V86-mode IRQ0-7 handlers
  83675.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  83676. Return: CF clear
  83677.  
  83678. (Table 2055)
  83679. Values for calling QEMM v5.11+ QPI function 1C02h:
  83680.     AX = 1C02h disable IRQ8-15 handlers
  83681. Return: CF clear
  83682.  
  83683. (Table 2056)
  83684. Values for calling QEMM v5.11+ QPI function 1C03h:
  83685.     AX = 1C03h set V86-mode IRQ8-15 handlers
  83686.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  83687. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  83688.       attempt to use it for any value of AL between 00h and 2Ah, thus
  83689.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  83690.       similarly for AL=04h-1Bh
  83691. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  83692.       handlers in virtual-86 mode after the CPU automatically invokes the
  83693.       protected-mode handler inside QEMM
  83694.  
  83695. (Table 2057)
  83696. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  83697.     AX = 1C04h
  83698.     BX = number of interrupt to simulate
  83699. Return: ???
  83700. Notes:    this function will allow proper simulation of a hardware interrupt
  83701.       under DESQview and DESQview/X, where the correct interrupt handler
  83702.       may be in a different process with a completely different address
  83703.       space
  83704.     this function was officially documented with the release of QEMM v7.50
  83705.  
  83706. (Table 2058)
  83707. Values for calling QEMM v6.00+ QPI function 1D00h:
  83708.     AX = 1D00h switch to pre-Stealth interrupt vector table
  83709. Return: CF clear if supported (QEMM v6.x)
  83710.     CF set if not supported (QEMM v7+)
  83711. Notes:    also switches VGA Save table pointer
  83712.       (0040h:00A8h) and overwrites the vectors
  83713.       currently assigned for use by the two
  83714.       interrupt controllers (see INT 67/AX=DE0Ah)
  83715.       with the vectors for INT 08-0F and 70-77 (to
  83716.       avoid crashing the system).
  83717.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  83718.       set
  83719.  
  83720. (Table 2059)
  83721. Values for calling QEMM v6.00+ QPI function 1D01h:
  83722.     AX = 1D01h restore user interrupt vector table
  83723. Return: CF clear if supported (QEMM v6.x)
  83724.     CF set if not supported (QEMM v7+)
  83725. Notes:    interrupts should be disabled around the
  83726.       AX=1D00h and AX=1D01h calls because QEMM does
  83727.       not modify the memory maps to map in ROM, so
  83728.       an interrupt could be disastrous
  83729.     clears any pending IRQ7 at end of function
  83730.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  83731.       set
  83732.  
  83733. (Table 2060)
  83734. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  83735.     AX = 1D02h to 1DFFh
  83736. Return: CF set
  83737.  
  83738. (Table 2061)
  83739. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  83740.     AX = 1E00h get Stealth configuration
  83741. Return:    CF clear
  83742.     BL = memory configuration flags (documented as "reserved") (see #2085)
  83743.     BH = (v7.00+) disk buffer flags
  83744.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  83745.         bit 1: buffer has already been used
  83746.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  83747.     CH = suspend/resume interrupt (00h none)
  83748.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  83749.     DH = reserved (always 00h for v6.00)
  83750.     SI = reserved (always 0000h for v6.00)
  83751.     DI = reserved (always 0000h for v6.00)
  83752. Note:    this function is officially documented
  83753.  
  83754. (Table 2062)
  83755. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  83756.     AX = 1E01h get number of Stealth'ed ROMs
  83757. Return: CF clear
  83758.     BX = number of Stealth'ed ROMs
  83759. Note:    this function is officially documented
  83760.  
  83761. (Table 2063)
  83762. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  83763.     AX = 1E02h
  83764.     ES:DI -> buffer for Stealth ROM info (see #2087)
  83765. Return: CF clear
  83766.     BX = number of Stealth'ed ROMs
  83767.     ES:DI buffer filled
  83768. Note:    this function is officially documented
  83769.  
  83770. (Table 2064)
  83771. Values for unimplemented Stealth information functions:
  83772.     AX = 1E03h to 1EFFh
  83773. Return: CF set
  83774.  
  83775.  
  83776. (Table 2065)
  83777. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  83778.     AX = 1F00h get page table entry
  83779.     CX = page number (0000h-010Fh)
  83780. Return:    CF clear
  83781.     EDX = page table entry
  83782. Note:    this function is officially documented
  83783.  
  83784. (Table 2066)
  83785. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  83786.     AX = 1F01h set page table entry
  83787.     CX = page number (0000h-010Fh)
  83788.     EDX = new page table entry
  83789. Return: CF clear
  83790. Note:    this function is officially documented
  83791. SeeAlso: function 1008h
  83792.  
  83793. (Table 2067)
  83794. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  83795.     AX = 1F02h to 1FFFh
  83796. Return: CF set
  83797.  
  83798. (Table 2068)
  83799. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  83800.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  83801. Return: CF clear
  83802.     BL = flags
  83803.         bit 7: VirtualHDIRQ setting respected
  83804.           (set if Stealth active)
  83805.         bits 6-1 reserved
  83806.         bit 0: VirtualHDIRQ currently enabled
  83807.         (INT 15/AH=90h suppressed when enabled)
  83808. Note:    this function is officially documented
  83809. SeeAlso: #2069
  83810.  
  83811. (Table 2069)
  83812. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  83813.     AX = 2001h set VirtualHDIRQ state
  83814.     BL bit 0 = new VirtualHDIRQ state
  83815. Return: CF clear
  83816.     BL = old VHI setting (bits 0 and 7, see #2068)
  83817. Note:    this function is officially documented
  83818. SeeAlso: #2068
  83819.  
  83820. (Table 2070)
  83821. Values for calling QEMM v6.00+ QPI function 20xxh:
  83822.     AX = 2002h to 20FFh
  83823. Return: CF set
  83824.  
  83825. (Table 2071)
  83826. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  83827.     AX = 2100h copy data from Stealthed address space
  83828.     DS:SI -> start address of hidden memory to copy
  83829.     ES:DI -> buffer for copied data
  83830.     ECX = number of bytes to copy
  83831. Return: CF clear if successful
  83832.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  83833. Note:    this function was officially documented with the release of QEMM 7.50
  83834.  
  83835. (Table 2072)
  83836. Values for calling QEMM v6.00+ QPI function 21xxh:
  83837.     AX = 2101h to 21FFh
  83838. Return: CF set
  83839.  
  83840. (Table 2073)
  83841. Values for calling QEMM v6.03+ QPI function 2200h:
  83842.     AX = 2200h DESQview/X support -- get ???
  83843. Return: CF clear
  83844.     ES:DI -> ???
  83845.  
  83846. (Table 2074)
  83847. Values for calling QEMM v6.03+ QPI function 2201h:
  83848.     AX = 2201h DESQview/X support -- set ???
  83849.     ES:DI -> ??? or 0000h:0000h
  83850. Return: CF clear if successful
  83851.     CF set on error
  83852.  
  83853. (Table 2075)
  83854. Values for calling QEMM v6.04+ QPI function 2300h:
  83855.     AX = 2300h get ???
  83856.     BX = which ??? to get (must be 0000h for v6.04)
  83857. Return: CF clear if successful
  83858.         ES:DI -> ???
  83859.     CF set on error
  83860.  
  83861. (Table 2076)
  83862. Values for calling QEMM v6.04+ QPI function 2301h:
  83863.     AX = 2301h set ???
  83864.     BX = which ??? to set (must be 0000h for v6.04)
  83865.     ES:DI -> ???
  83866. Return: CF clear if successful
  83867.     CF set on error
  83868.  
  83869. (Table 2077)
  83870. Values for calling QEMM v6.04+ QPI function 2302h:
  83871.     AX = 2302h clear specified ???
  83872.     BX = which ??? to clear (must be 0000h for v6.04)
  83873. Return: CF clear if successful
  83874.     CF set on error
  83875.  
  83876. (Table 2078)
  83877. Values for calling QEMM v6.04+ QPI function 23FFh:
  83878.     AX = 23FFh clear all ???
  83879. Return: CF clear if successful
  83880.     CF set on error
  83881.  
  83882. (Table 2079)
  83883. Values for calling QEMM v6.04+ QPI function 23xxh:
  83884.     AX = 2303h to 23FEh
  83885. Return: CF set
  83886.  
  83887. (Table 2080)
  83888. Values for calling QEMM v7.01+ QPI function 24h:
  83889.     AH = 24h ST-DBL support
  83890.     AL = subfunction
  83891.         00h set ???
  83892.         EDX -> information table (EDX = segment SHL 16 + offset)
  83893.         01h ???
  83894. Return: CF clear if successful
  83895.     CF set on error
  83896.  
  83897. (Table 2081)
  83898. Values for calling QEMM unimplemented QPI functions:
  83899.     AH = 25h to FFh
  83900. Return: CF set
  83901.  
  83902. Format of QEMM protection level configuration:
  83903. Offset    Size    Description    (Table 2082)
  83904.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  83905.           DESQview protection level 3 interrupt vector checking, or
  83906.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  83907.           breakpoints
  83908.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  83909.           when interrupt vectors are pointed at protection level 3
  83910.           breakpoints
  83911.  06h    DWORD    far pointer to ??? region list (see #2083)
  83912.  0Ah    DWORD    far pointer to buffer for returned ???
  83913.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  83914.  12h    WORD    segment of ???
  83915.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  83916.           ??? for segment at offset 12h
  83917.     ???
  83918.  
  83919. Format of protection level Region List:
  83920. Offset    Size    Description    (Table 2083)
  83921.  00h    WORD    number of PAIRS of pointers to follow
  83922.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  83923. Note:    QEMM converts the segmented addresses into linear addresses in place
  83924.  
  83925. Format of EMM Import structure:
  83926. Offset    Size    Description    (Table 2084)
  83927.  00h    DWORD    physical address of EMM import struct
  83928.  04h    BYTE    major version (v6.00 sets to 01h)
  83929.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  83930. SeeAlso: INT 21/AX=4402h/SF=01h
  83931.  
  83932. Bitfields for memory configuration flags:
  83933. Bit(s)    Description    (Table 2085)
  83934.  0    conventional memory sorted
  83935.  1    conventional memory filled
  83936.  2    ???
  83937.  3    ???
  83938.  4    expanded memory is in use
  83939.  5    ???
  83940.  
  83941. Format of QEMM 6.0 memory statistics:
  83942. Offset    Size    Description    (Table 2086)
  83943.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  83944.  01h    DWORD    initial conventional memory in bytes
  83945.  05h    DWORD    initial extended memory in bytes
  83946.  09h    DWORD    initial expanded memory in bytes
  83947.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  83948.  11h    DWORD    Unavailable conventional memory in bytes
  83949.  15h    DWORD    Unavailable extended memory in bytes
  83950.  19h    DWORD    Unavailable expanded memory in bytes
  83951.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  83952.         Add to offset 49h for Total unavailable top/shadow.
  83953.  21h    DWORD    QEMM code size in bytes
  83954.  25h    DWORD    QEMM data size in bytes
  83955.  29h    DWORD    bytes used for TASKS=
  83956.  2Dh    DWORD    DMA buffer size
  83957.  31h    DWORD    bytes used for MAPS=
  83958.  35h    DWORD    bytes of high RAM
  83959.  39h    DWORD    bytes used by mapped ROMs
  83960.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  83961.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  83962.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  83963.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  83964.         Add to offset 1Dh for Total unavailable top/shadow.
  83965.  4Dh    DWORD    conventional memory overhead in bytes
  83966.         (set to 0 by QEMM.COM prior to call)
  83967.  
  83968. Format of Stealth ROM info [array]:
  83969. Offset    Size    Description    (Table 2087)
  83970.  00h    WORD    starting segment of ROM
  83971.  02h    WORD    length of ROM in paragraphs
  83972.  
  83973. Format of QEMM EGA/VGA DAC register virtualization buffer:
  83974. Offset    Size    Description    (Table 2088)
  83975.  00h    BYTE    (temp) current color register number
  83976.  01h    BYTE    (temp) number of bytes written so far for current color reg
  83977.  02h 768 BYTEs    three bytes per color register
  83978. --------m-6740-------------------------------
  83979. INT 67 - LIM EMS - GET MANAGER STATUS
  83980.     AH = 40h
  83981. Return: AH = status (00h,80h,81h,84h) (see #2089)
  83982. Note:    this call can be used only after establishing that the EMS driver is in
  83983.       fact present
  83984. SeeAlso: AH=3Fh,AX=FFA5h
  83985.  
  83986. (Table 2089)
  83987. Values for EMS function status:
  83988.  00h    successful
  83989.  80h    internal error
  83990.  81h    hardware malfunction
  83991.  83h    invalid handle
  83992.  84h    undefined function requested by application
  83993.  85h    no more handles available
  83994.  86h    error in save or restore of mapping context
  83995.  87h    insufficient memory pages in system
  83996.  88h    insufficient memory pages available
  83997.  89h    zero pages requested
  83998.  8Ah    invalid logical page number encountered
  83999.  8Bh    invalid physical page number encountered
  84000.  8Ch    page-mapping hardware state save area is full
  84001.  8Dh    save of mapping context failed
  84002.  8Eh    restore of mapping context failed
  84003.  8Fh    undefined subfunction
  84004.  90h    undefined attribute type
  84005.  91h    feature not supported
  84006.  92h    successful, but a portion of the source region has been overwritten
  84007.  93h    length of source or destination region exceeds length of region
  84008.       allocated to either source or destination handle
  84009.  94h    conventional and expanded memory regions overlap
  84010.  95h    offset within logical page exceeds size of logical page
  84011.  96h    region length exceeds 1M
  84012.  97h    source and destination EMS regions have same handle and overlap
  84013.  98h    memory source or destination type undefined
  84014.  9Ah    specified alternate map register or DMA register set not supported
  84015.  9Bh    all alternate map register or DMA register sets currently allocated
  84016.  9Ch    alternate map register or DMA register sets not supported
  84017.  9Dh    undefined or unallocated alternate map register or DMA register set
  84018.  9Eh    dedicated DMA channels not supported
  84019.  9Fh    specified dedicated DMA channel not supported
  84020.  A0h    no such handle name
  84021.  A1h    a handle found had no name, or duplicate handle name
  84022.  A2h    attempted to wrap around 1M conventional address space
  84023.  A3h    source array corrupted
  84024.  A4h    operating system denied access
  84025. --------m-6741-------------------------------
  84026. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  84027.     AH = 41h
  84028. Return: AH = status (see also AH=40h)
  84029.         00h function successful
  84030.         BX = segment of page frame
  84031. SeeAlso: AH=58h,AH=68h
  84032. --------m-6742-------------------------------
  84033. INT 67 - LIM EMS - GET NUMBER OF PAGES
  84034.     AH = 42h
  84035. Return: AH = status (see also AH=40h)
  84036.         00h function successful
  84037.         BX = number of unallocated pages
  84038.         DX = total number of pages
  84039. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  84040.       when this call is made; use AH=46h to ensure that EMM386 is ON
  84041.       before making this call
  84042. SeeAlso: INT 2F/AX=2702h
  84043. --------m-6743-------------------------------
  84044. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  84045.     AH = 43h
  84046.     BX = number of logical pages to allocate
  84047. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2089)
  84048.     DX = handle if AH=00h
  84049. SeeAlso: AH=45h
  84050. --------m-6744-------------------------------
  84051. INT 67 - LIM EMS - MAP MEMORY
  84052.     AH = 44h
  84053.     AL = physical page number (0-3)
  84054.     BX = logical page number
  84055.         or FFFFh to unmap (QEMM)
  84056.     DX = handle
  84057. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2089)
  84058. SeeAlso: AH=69h
  84059. --------m-6745-------------------------------
  84060. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  84061.     AH = 45h
  84062.     DX = EMM handle
  84063. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2089)
  84064. SeeAlso: AH=43h
  84065. --------m-6746-------------------------------
  84066. INT 67 - LIM EMS - GET EMM VERSION
  84067.     AH = 46h
  84068. Return: AH = status (00h,80h,81h,84h) (see #2089)
  84069.     AL = EMM version number if AH=00h
  84070. --------m-6747-------------------------------
  84071. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  84072.     AH = 47h
  84073.     DX = handle
  84074. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2089)
  84075. SeeAlso: AH=48h
  84076. --------m-6748-------------------------------
  84077. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  84078.     AH = 48h
  84079.     DX = handle
  84080. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2089)
  84081. SeeAlso: AH=47h
  84082. --------m-6749-------------------------------
  84083. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  84084.     AH = 49h
  84085. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  84086. --------m-674A-------------------------------
  84087. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  84088.     AH = 4Ah
  84089. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  84090. --------m-674B-------------------------------
  84091. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  84092.     AH = 4Bh
  84093. Return: AH = status (00h,80h,81h,83h,84h) (see #2089)
  84094.     BX = number of EMM handles if AH=00h
  84095. --------m-674C-------------------------------
  84096. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  84097.     AH = 4Ch
  84098.     DX = EMM handle
  84099. Return: AH = status (see #1393)
  84100.     BX = number of logical pages if AH=00h
  84101. SeeAlso: AH=4Dh
  84102. --------m-674D-------------------------------
  84103. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  84104.     AH = 4Dh
  84105.     ES:DI -> array to receive information
  84106. Return: AH = status (00h,80h,81h,84h) (see #2089)
  84107.     ---if AH=00h---
  84108.     BX = number of active EMM handles
  84109.     array filled with 2-word entries, consisting of a handle and the
  84110.       number of pages allocated to that handle
  84111. SeeAlso: AH=4Ch
  84112. --------m-674E-------------------------------
  84113. INT 67 - LIM EMS - GET OR SET PAGE MAP
  84114.     AH = 4Eh
  84115.     AL = subfunction
  84116.         00h get mapping registers
  84117.         01h set mapping registers
  84118.         02h get and set mapping registers at once
  84119.         03h get size of page-mapping array
  84120.     DS:SI -> array holding information (AL=01h/02h)
  84121.     ES:DI -> array to receive information (AL=00h/02h)
  84122. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  84123.         00h successful
  84124.         AL = bytes in page-mapping array (AL=03h only)
  84125.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  84126. Notes:    this function was designed to be used by multitasking operating systems
  84127.       and should not ordinarily be used by appplication software.
  84128.     MD386 returns the size of the page-mapping array in AX instead of AL
  84129. SeeAlso: AH=4Fh
  84130. --------m-674F-------------------------------
  84131. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  84132.     AH = 4Fh
  84133.     AL = subfunction
  84134.         00h get partial page map
  84135.            DS:SI -> structure containing list of segments whose mapping
  84136.             contexts are to be saved
  84137.            ES:DI -> array to receive page map
  84138.         01h set partial page map
  84139.            DS:SI -> structure containing saved partial page map
  84140.         02h get size of partial page map
  84141.            BX = number of mappable segments in the partial map to be saved
  84142. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  84143.         8Bh one of the specified segments is not mappable
  84144.         A3h contents of partial page map corrupted or count of mappable
  84145.         segments exceeds total number of mappable segments in system
  84146.     AL = size of partial page map for subfunction 02h
  84147. SeeAlso: AH=4Eh
  84148. --------m-6750-------------------------------
  84149. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  84150.     AH = 50h
  84151.     AL = subfunction
  84152.         00h use physical page numbers
  84153.         01h use segment addresses
  84154.     DX = handle
  84155.     CX = number of entries in array
  84156.     DS:SI -> mapping array (see #2090)
  84157. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  84158. SeeAlso: AH=40h
  84159.  
  84160. Format of EMS mapping array entry:
  84161. Offset    Size    Description    (Table 2090)
  84162.  00h    WORD    logical page number or FFFFh to unmap physical page
  84163.  02h    WORD    physical page number or segment address
  84164. --------m-6751-------------------------------
  84165. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  84166.     AH = 51h
  84167.     DX = handle
  84168.     BX = number of pages to be allocated to handle
  84169. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2091)
  84170.     BX = actual number of pages allocated to handle
  84171.  
  84172. (Table 2091)
  84173. Values for EMS function status:
  84174.  00h    successful
  84175.  80h    internal error
  84176.  81h    hardware malfunction
  84177.  83h    invalid handle
  84178.  84h    undefined function requested
  84179.  87h    more pages requested than present in system
  84180.  88h    more pages requested than currently available
  84181.  8Ah    invalid logical page number encountered
  84182.  8Bh    invalid physical page number encountered
  84183.  8Fh    undefined subfunction
  84184.  90h    undefined attribute type
  84185.  91h    feature not supported
  84186.  A0h    no such handle name
  84187.  A1h    duplicate handle name
  84188. --------m-6752-------------------------------
  84189. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  84190.     AH = 52h
  84191.     AL = subfunction
  84192.         00h get handle attributes
  84193.         Return: AL = attribute
  84194.                 00h handle is volatile
  84195.                 01h handle is nonvolatile
  84196.         01h set handle attributes
  84197.         BL = new attribute (see returned AL)
  84198.         02h get attribute capability
  84199.         Return: AL = attribute capability
  84200.                 00h only volatile handles supported
  84201.                 01h both volatile and non-volatile supported
  84202.     DX = handle
  84203. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2089)
  84204. SeeAlso: AH=53h
  84205. --------m-6753-------------------------------
  84206. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  84207.     AH = 53h
  84208.     AL = subfunction
  84209.         00h get handle name
  84210.            ES:DI -> 8-byte buffer for handle name
  84211.         01h set handle name
  84212.            DS:SI -> 8-byte handle name
  84213.     DX = handle
  84214. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2089)
  84215. SeeAlso: AH=52h
  84216. --------m-6754-------------------------------
  84217. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  84218.     AH = 54h
  84219.     AL = subfunction
  84220.         00h get handle directory
  84221.            ES:DI -> buffer for handle directory (see #2092)
  84222.         01h search for named handle
  84223.            DS:SI -> 8-byte name
  84224.         02h get total number of handles
  84225. Return: AL = number of entries in handle directory (subfunction 00h)
  84226.     DX = value of named handle (subfunction 01h)
  84227.     BX = total number of handles (subfunction 02h)
  84228.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2091)
  84229.         A1h a handle found had no name
  84230.  
  84231. Format of EMS handle directory entry:
  84232. Offset    Size    Description    (Table 2092)
  84233.  00h    WORD    handle
  84234.  02h  8 BYTEs    handle's name
  84235. --------m-6755-------------------------------
  84236. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  84237.     AH = 55h
  84238.     AL = subfunction
  84239.         00h physical page numbers provided by caller
  84240.         01h segment addresses provided by caller
  84241.     DX = handle
  84242.     DS:SI -> structure containing map and jump address
  84243. Return: (at target address unless error)
  84244.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  84245. SeeAlso: AH=56h
  84246. --------m-6756-------------------------------
  84247. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  84248.     AH = 56h
  84249.     AL = subfunction
  84250.         00h physical page numbers provided by caller
  84251.         DX = handle
  84252.         DS:SI -> structure containing page map and call address
  84253.         01h segment addresses provided by caller
  84254.         DX = handle
  84255.         DS:SI -> structure containing page map and call address
  84256.         02h get page map stack space required
  84257.         Return: BX = stack space required
  84258. Return: (if successful, the target address is called.  Use a RETF to return and
  84259.      restore mapping context)
  84260.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2089)
  84261. SeeAlso: AH=55h
  84262. --------m-6756FF-----------------------------
  84263. INT 67 - RM386 v6.00 - ???
  84264.     AX = 56FFh
  84265.     DS:SI -> ???
  84266.     ???
  84267. Return: ???
  84268. --------m-6757-------------------------------
  84269. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  84270.     AH = 57h
  84271.     AL = subfunction
  84272.         00h move memory region
  84273.         01h exchange memory region
  84274.     DS:SI -> structure describing source and destination (see #2094)
  84275. Return: AH = status (see #2093)
  84276. Note:    source and destination may overlap for a move, in which case the copy
  84277.       direction is chosen such that the destination receives an intact copy
  84278.       of the source region
  84279.  
  84280. (Table 2093)
  84281. Values for EMS function status:
  84282.  00h    successful
  84283.  80h    internal error
  84284.  81h    hardware failure
  84285.  83h    invalid handle
  84286.  84h    undefined function requested
  84287.  8Ah    invalid logical page number encountered
  84288.  8Fh    undefined subfunction
  84289.  92h    successful, but a portion of the source region has been overwritten
  84290.  93h    length of source or destination region exceeds length of region
  84291.       allocated to either source or destination handle
  84292.  94h    conventional and expanded memory regions overlap
  84293.  95h    offset within logical page exceeds size of logical page
  84294.  96h    region length exceeds 1M
  84295.  97h    source and destination EMS regions have same handle and overlap
  84296.  98h    memory source or destination type undefined
  84297.  A2h    attempted to wrap around 1M conventional address space
  84298.  
  84299. Format of EMS copy data:
  84300. Offset    Size    Description    (Table 2094)
  84301.  00h    DWORD    region length in bytes
  84302.  04h    BYTE    source memory type
  84303.         00h conventional
  84304.         01h expanded
  84305.  05h    WORD    source handle (0000h if conventional memory)
  84306.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  84307.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  84308.  0Bh    BYTE    destination memory type
  84309.         00h conventional
  84310.         01h expanded
  84311.  0Ch    WORD    destination handle
  84312.  0Eh    WORD    destination initial offset
  84313.  10h    WORD    destination initial segment or page
  84314. --------m-6758-------------------------------
  84315. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  84316.     AH = 58h
  84317.     AL = subfunction
  84318.         00h get mappable physical address array
  84319.         ES:DI -> buffer to be filled with array
  84320.         01h get number of entries in m.p.a. array
  84321. Return: CX = number of entries in array
  84322.     AH = status (00h,80h,81h,84h,8Fh) (see #2093)
  84323. Note:    the returned array for subfunction 00h is filled in physical segment
  84324.       address order
  84325.  
  84326. Format of EMS mappable physical address entry:
  84327. Offset    Size    Description    (Table 2095)
  84328.  00h    WORD    physical page segment
  84329.  02h    WORD    physical page number
  84330. --------m-675857-----------------------------
  84331. INT 67 U - NETROOM??? - ???
  84332.     AX = 5857h
  84333.     BX = function??? (0057h,0059h,0159h seen)
  84334.     ???
  84335. Return: ???
  84336. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  84337.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  84338.       AX=580xh or AX=5857h/BX=0x59h should be used
  84339. SeeAlso: AX=5BF0h
  84340. --------m-6759-------------------------------
  84341. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  84342.     AH = 59h
  84343.     AL = subfunction
  84344.         00h get hardware configuration array
  84345.         ES:DI -> buffer to be filled with array (see #2096)
  84346.         01h get unallocated raw page count
  84347.         Return: BX = unallocated raw pages
  84348.             DX = total raw pages
  84349. Return: AH = status (see also AH=58h"EMS 4.0")
  84350.         A4h access denied by operating system
  84351. Note:    subfunction 00h is for use by operating systems only, and can be
  84352.       enabled or disabled at any time by the operating system
  84353.  
  84354. Format of EMS hardware configuration array:
  84355. Offset    Size    Description    (Table 2096)
  84356.  00h    WORD    size of raw EMM pages in paragraphs
  84357.  02h    WORD    number of alternate register sets
  84358.  04h    WORD    size of mapping-context save area in bytes
  84359.  06h    WORD    number of register sets assignable to DMA
  84360.  08h    WORD    DMA operation type
  84361.         0000h DMA with alternate register sets
  84362.         0001h only one DMA register set
  84363. --------m-675A-------------------------------
  84364. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  84365.     AH = 5Ah
  84366.     AL = subfunction
  84367.         00h allocate standard pages
  84368.         01h allocate raw pages
  84369.     BX = number of pages to allocate
  84370. Return: DX = handle
  84371.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2089)
  84372. --------m-675B-------------------------------
  84373. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  84374.     AH = 5Bh
  84375.     AL = subfunction
  84376.         00h get alternate map register set
  84377.         Return: BL = current active alternate map register set number
  84378.             ES:DI -> map register context save area if BL=00h
  84379.         01h set alternate map register set
  84380.         BL = new alternate map register set number
  84381.         ES:DI -> map register context save area if BL=0
  84382.         02h get alternate map save array size
  84383.         Return: DX = array size in bytes
  84384.         03h allocate alternate map register set
  84385.         Return: BL = number of map register set; 00h = not supported
  84386.         04h deallocate alternate map register set
  84387.         BL = number of alternate map register set
  84388. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2097)
  84389. Note:    this function is for use by operating systems only, and can be
  84390.       enabled or disabled at any time by the operating system
  84391.  
  84392. (Table 2097)
  84393. Values for EMS function status:
  84394.  00h    successful
  84395.  80h    internal error
  84396.  81h    hardware malfunction
  84397.  84h    undefined function requested
  84398.  8Fh    undefined subfunction
  84399.  9Ah    specified alternate map register or DMA register set not supported
  84400.  9Bh    all alternate map register or DMA register sets currently allocated
  84401.  9Ch    alternate map register or DMA register sets not supported
  84402.  9Dh    undefined or unallocated alternate map register/DMA register set
  84403.  9Eh    dedicated DMA channels not supported
  84404.  9Fh    specified dedicated DMA channel not supported
  84405.  A3h    source array corrupted
  84406.  A4h    operating system denied access
  84407. --------m-675B-------------------------------
  84408. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  84409.     AH = 5Bh
  84410.     AL = subfunction
  84411.         05h allocate DMA register set
  84412.         Return: BL = DMA register set number, 00h if not supported
  84413.         06h enable DMA on alternate map register set
  84414.            BL = DMA register set number
  84415.            DL = DMA channel number
  84416.         07h disable DMA on alternate map register set
  84417.            BL = DMA register set number
  84418.         08h deallocate DMA register set
  84419.            BL = DMA register set number
  84420. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2097)
  84421. Note:    this function is for use by operating systems only, and can be
  84422.       enabled or disabled at any time by the operating system
  84423. --------m-675BE0-----------------------------
  84424. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  84425.     AX = 5BE0h
  84426.     ES:BX -> memory for which to get linear address
  84427. Return: AH = 00h
  84428.     CX:DX = linear address of physical memory corresponding to ES:BX
  84429. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  84430.       MICEMM is a memory manager for some Micronics motherboards
  84431. Note:    this has been superceded by AX=DE06h, which should be used instead
  84432. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  84433. --------m-675BE1-----------------------------
  84434. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  84435.     AX = 5BE1h
  84436. Return: AH = 00h
  84437.     CX = code and data size in bytes
  84438.     DX:BX = physical address of RM386 code
  84439.     DI:SI = total size of RM386 area including handle tables
  84440.     BP = number of additional pages (high DOS, etc.)
  84441. SeeAlso: AX=5BE0h,AX=5BE2h
  84442. --------m-675BE2-----------------------------
  84443. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  84444.     AX = 5BE2h
  84445. Return: DS:SI -> V86-mode table (see #2098)
  84446.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  84447. SeeAlso: AX=5BE0h,AX=5BE1h
  84448.  
  84449. Format of RM386 V86-mode table:
  84450. Offset    Size    Description    (Table 2098)
  84451.  00h    DWORD    original INT 13 vector
  84452.  04h    DWORD    original INT 15 vector
  84453.  08h    DWORD    original INT 19 vector
  84454.  0Ch    DWORD    original INT 21 vector
  84455.  10h    DWORD    original INT 4B vector
  84456.  14h    DWORD    original INT 67 vector
  84457. --------m-675BF0-----------------------------
  84458. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  84459.     AX = 5BF0h
  84460. Return: AH = 00h if MICEMM or RM386 present
  84461.         BX = code segment of driver
  84462. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  84463.       manager included in Helix Software's Netroom
  84464. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  84465. --------m-675BF1-----------------------------
  84466. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  84467.     AX = 5BF1h
  84468.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  84469. Return: AH = 00h
  84470.     ES:BX buffer filled (see #2099)
  84471. Note:    each byte in the buffer specifies the type of a 4K page of memory
  84472. SeeAlso: AX=5BE0h,AX=5BF0h
  84473.  
  84474. (Table 2099)
  84475. Values for MICEMM/RM386 memory type:
  84476.  00h    unused (MICEMM), RAM/available (RM386)
  84477.  02h    DOS extension (XMS UMB)
  84478.  04h    shadowed ROM
  84479.  08h    mappable EMS
  84480.  10h    page frame
  84481.  20h    ROM
  84482.  40h    reserved (video memory, etc)
  84483.  80h    RAM (MICEMM), Windows UMB (RM386)
  84484. --------m-675BF2-----------------------------
  84485. INT 67 - RM386 - GET RM386 INTERNAL DATA
  84486.     AX = 5BF2h
  84487.     CX = size of buffer
  84488.     DS:SI -> buffer for internal data
  84489.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  84490. Return: buffer filled
  84491. Note:    the data returned by this function is release-specific
  84492. SeeAlso: AX=5BF0h
  84493. --------m-675BF3-----------------------------
  84494. INT 67 - RM386 - RETURN TO REAL MODE
  84495.     AX = 5BF3h
  84496. Return: nothing
  84497. Note:    use AX=5DE0h instead of this functin
  84498. SeeAlso: AX=5BF0h,AX=5DE0h
  84499. --------m-675BF4-----------------------------
  84500. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  84501.     AX = 5BF4h
  84502. Return: AH = 00h
  84503.     BX = global flags 1 (see #2100)
  84504.     CX = global flags 2 (see #2101)
  84505.     DX = global flags 3 (see #2102)
  84506.     SI = global flags 4 (see #2103)
  84507. SeeAlso: AX=5BF0h
  84508.  
  84509. Bitfields for RM386 global flags 1:
  84510. Bit(s)    Description    (Table 2100)
  84511.  0-3    reserved
  84512.  4    V86 mode
  84513.  5    reserved
  84514.  6    80386 or higher CPU
  84515.  7,8    reserved
  84516.  9    A20 enabled at startup
  84517.  10    "HIGH_IO"
  84518.  11    ROM
  84519.  12    large frame
  84520.  13,14    reserved
  84521.  15    PS/2-style A20 control
  84522.  
  84523. Bitfields for RM386 global flags 2:
  84524. Bit(s)    Description    (Table 2101)
  84525.  0    HMA in use
  84526.  1    XMS present
  84527.  2    using XMS driver memory
  84528.  3    HIGH (NEAT only)
  84529.  4-7    reserved
  84530.  8    NOBKTRAP
  84531.  9    NORESET
  84532.  10    ALTMAP
  84533.  11    NOFRAME
  84534.  12-15    reserved
  84535.  
  84536. Bitfields for RM386 global flags 3:
  84537. Bit(s)    Description    (Table 2102)
  84538.  0    NOTEST
  84539.  1    NOEBDA
  84540.  2    Windows3 support
  84541.  3    system board mouse
  84542.  4    DISKBUF
  84543.  5    EBDALOW
  84544.  6    A20 global enable flag
  84545.  7    A20 flag
  84546.  8    EBDA moved to stub
  84547.  9    VXD file was found
  84548.  10    reserved
  84549.  11    NOBOOTMAP
  84550.  12    AUTO
  84551.  13    PS/2 machine
  84552.  14    Compaq ROM merge active
  84553.  15    NOHMA set
  84554.  
  84555. Bitfields for RM386 global flags 4:
  84556. Bit(s)    Description    (Table 2103)
  84557.  0    "NOV8259" don't virtualize interrupt controller
  84558.  1    NOSCSI
  84559.  2    NOSCAN
  84560.  3    NOTR
  84561.  4    ALTBOOT
  84562.  5    NOCOMPQ
  84563.  6    KB2TRAP
  84564.  7    DESHADOW
  84565.  8    Video 7 VGA detected
  84566.  9    reserved
  84567.  10    NOVGA
  84568.  11    NOPS2
  84569.  12    DEBUG
  84570.  13    NOVKB
  84571.  14,15    reserved
  84572. --------m-675BF5-----------------------------
  84573. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  84574.     AX = 5BF5h
  84575. Return: AH = status
  84576.         00h successful
  84577.         BX = current number of allocated EMS handles
  84578.         84h function not available
  84579. SeeAlso: AX=5BF0h
  84580. --------m-675C-------------------------------
  84581. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  84582.     AH = 5Ch
  84583. Return: AH = status (see #2104)
  84584.  
  84585. (Table 2104)
  84586. Values for EMS function status:
  84587.  00h    successful
  84588.  80h    internal error
  84589.  81h    hardware malfunction
  84590.  84h    undefined function requested
  84591. --------m-675D-------------------------------
  84592. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  84593.     AH = 5Dh
  84594.     AL = subfunction
  84595.         00h enable OS Function Set
  84596.         01h disable OS Function Set
  84597.         02h return access key (resets memory manager, returns access key at
  84598.         next invocation)
  84599.     BX,CX = access key returned by first invocation
  84600. Return: BX,CX = access key, returned only on first invocation of function
  84601.     AH = status (see also AH=5Ch)
  84602.         8Fh undefined subfunction
  84603.         A4h operating system denied access
  84604. --------m-675D03-----------------------------
  84605. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  84606.     AX = 5D03h
  84607.     ???
  84608. Return: ???
  84609. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  84610.       for use with the MultiDOS Plus multitasker
  84611. SeeAlso: AX=5D04h,AX=5E00h
  84612. --------m-675D04-----------------------------
  84613. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  84614.     AX = 5D04h
  84615.     BX = alternate register set number
  84616.     ES:DI -> 1024-byte buffer for map structure
  84617. Return: AH = status (see #2089)
  84618.     buffer filled if AH=00h
  84619. Note:    used for debugging purposes
  84620. SeeAlso: AX=5D05h
  84621. --------m-675D05-----------------------------
  84622. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  84623.     AX = 5D05h
  84624.     BX = handle number
  84625.     ES:DI -> 1024-byte buffer for handle table
  84626. Return: AH = status (see #2089)
  84627.     buffer filled if AH=00h
  84628. Note:    used for debugging purposes
  84629. SeeAlso: AX=5D04h
  84630. --------m-675DE0-----------------------------
  84631. INT 67 - RM386 - DISABLE RM386
  84632.     AX = 5DE0h
  84633. Note:    RM386 traps this function on the initial transition to protected
  84634.       mode caused by the INT instruction, which means it can not be
  84635.       overridden simply by hooking the interrupt
  84636. SeeAlso: AX=5DE1h
  84637. --------m-675DE1-----------------------------
  84638. INT 67 - RM386 - ENABLE RM386
  84639.     AX = 5DE1h
  84640. Note:    RM386 traps this function on the initial transition to protected
  84641.       mode caused by the INT instruction, which means it can not be
  84642.       overridden simply by hooking the interrupt
  84643. SeeAlso: AX=5DE0h
  84644. --------m-675DE2-----------------------------
  84645. INT 67 - RM386 - GET PAGE TABLE
  84646.     AX = 5DE2h
  84647.     ES:DI -> 1088-byte buffer for page table
  84648. Return: ES:DI buffer filled
  84649. Note:    RM386 traps this function on the initial transition to protected
  84650.       mode caused by the INT instruction, which means it can not be
  84651.       overridden simply by hooking the interrupt
  84652. SeeAlso: AX=5DE3h
  84653. --------m-675DE3-----------------------------
  84654. INT 67 - RM386 - SET PAGE TABLE
  84655.     AX = 5DE3h
  84656.     ES:DI -> 1088-byte buffer containing page table
  84657. Notes:    only the access bits of the page table are used, the remainder is
  84658.       ignored
  84659.     RM386 traps this function on the initial transition to protected
  84660.       mode caused by the INT instruction, which means it can not be
  84661.       overridden simply by hooking the interrupt
  84662. SeeAlso: AX=5DE2h
  84663. --------m-675DE4-----------------------------
  84664. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  84665.     AX = 5DE4h
  84666.     BL = page number
  84667.     BH = access (00h read-only, 01h read-write)
  84668. Note:    RM386 traps this function on the initial transition to protected
  84669.       mode caused by the INT instruction, which means it can not be
  84670.       overridden simply by hooking the interrupt
  84671. --------m-675DE5-----------------------------
  84672. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  84673.     AX = 5DE5h
  84674.     EBX = physical page number
  84675.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  84676. Return: AH = status
  84677.         00h successful
  84678.         8Bh invalid destination page (not in first megabyte)
  84679. Note:    RM386 traps this function on the initial transition to protected
  84680.       mode caused by the INT instruction, which means it can not be
  84681.       overridden simply by hooking the interrupt
  84682. SeeAlso: AX=5DE6h
  84683. --------m-675DE6-----------------------------
  84684. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  84685.     AX = 5DE6h
  84686.     BX = logical page number in 4K pages from beginning of memory for EMS
  84687.           handle
  84688.     CX = segment in first megabyte to be remapped
  84689.     DX = previously-allocated EMS handle
  84690. Return: AH = status
  84691.         00h successful
  84692.         83h invalid handle
  84693.         8Ah invalid logical page (out of handle's range)
  84694.         8Bh invalid destination page (not in first megabyte)
  84695. Note:    RM386 traps this function on the initial transition to protected
  84696.       mode caused by the INT instruction, which means it can not be
  84697.       overridden simply by hooking the interrupt
  84698. SeeAlso: AX=5DE5h
  84699. --------m-675DE7-----------------------------
  84700. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  84701.     AX = 5DE7h
  84702.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  84703.     CX = number of pages to set
  84704.     DX = first page number to set (in first megabyte)
  84705. Return: AH = status
  84706.         00h successful
  84707.         8Bh invalid destination page (not in first megabyte)
  84708.         A5h invalid page bits
  84709.         A6h invalid page count (overflows first megabyte)
  84710. Note:    RM386 traps this function on the initial transition to protected
  84711.       mode caused by the INT instruction, which means it can not be
  84712.       overridden simply by hooking the interrupt
  84713. --------m-675DE8-----------------------------
  84714. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  84715.     AX = 5DE8h
  84716.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  84717.     CX = number of page table entries to get
  84718.     ES:DI -> buffer for DWORD page table entries
  84719. Return: AH = status (00h successful, 8Bh invalid page)
  84720. Note:    RM386 traps this function on the initial transition to protected
  84721.       mode caused by the INT instruction, which means it can not be
  84722.       overridden simply by hooking the interrupt
  84723. SeeAlso: AX=5DE9h
  84724. --------m-675DE9-----------------------------
  84725. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  84726.     AX = 5DE9h
  84727.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  84728.     CX = number of page table entries to get
  84729.     DS:SI -> buffer of DWORD page table entries
  84730. Return: AH = status (00h successful, 8Bh invalid destination page)
  84731. Note:    RM386 traps this function on the initial transition to protected
  84732.       mode caused by the INT instruction, which means it can not be
  84733.       overridden simply by hooking the interrupt
  84734. SeeAlso: AX=5DE8h
  84735. --------m-675DEA-----------------------------
  84736. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  84737.     AX = 5DEAh
  84738.     BX = function
  84739.         00h globally disable V86-mode trapping
  84740.         01h globally enable V86-mode trapping
  84741.         CL = interrupt to use for trapping
  84742.         02h get I/O trapping state
  84743. Return: AH = status
  84744.         00h successful
  84745.         BX = current trapping state (function 02h)
  84746.             0000h disabled, 0001h enabled
  84747.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  84748. Notes:    RM386 traps this function on the initial transition to protected
  84749.       mode caused by the INT instruction, which means it can not be
  84750.       overridden simply by hooking the interrupt
  84751.     when I/O trapping is enabled and I/O port access occurs, RM386
  84752.       simulates an INT instruction for the specified interrupt; the
  84753.       interrupt handler is responsible for decoding the trapped instruction
  84754.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  84755.       similar but more-easily used interface.
  84756. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  84757. --------m-675DEB-----------------------------
  84758. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  84759.     AX = 5DEBh
  84760.     BX = function
  84761.         00h disable V86-mode trapping for specified port
  84762.         01h enable V86-mode trapping for specified port
  84763.         02h get V86-mode trapping state for specified port
  84764.     DX = port for which to enable/disable/query trapping
  84765. Return: AH = status
  84766.         00h successful
  84767.         BX = current trapping state (00h off, 01h on) (function 02)
  84768.         A7h invalid port ID
  84769.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  84770. Notes:    RM386 traps this function on the initial transition to protected
  84771.       mode caused by the INT instruction, which means it can not be
  84772.       overridden simply by hooking the interrupt
  84773. SeeAlso: AX=5DEAh
  84774. --------m-675DFD-----------------------------
  84775. INT 67 U - RM386 v6.00 - ???
  84776.     AX = 5DFDh
  84777.     ???
  84778. Return: ???
  84779. Note:    RM386 traps this function on the initial transition to protected
  84780.       mode caused by the INT instruction, which means it can not be
  84781.       overridden simply by hooking the interrupt
  84782. SeeAlso: AX=5DFEh
  84783. --------m-675DFE-----------------------------
  84784. INT 67 U - RM386 v6.00 - ???
  84785.     AX = 5DFEh
  84786.     ???
  84787. Return: ???
  84788. Note:    RM386 traps this function on the initial transition to protected
  84789.       mode caused by the INT instruction, which means it can not be
  84790.       overridden simply by hooking the interrupt
  84791. SeeAlso: AX=5DFDh
  84792. --------m-675DFF-----------------------------
  84793. INT 67 U - RM386 v6.00 - ???
  84794.     AX = 5DFFh
  84795.     ???
  84796. Return: ???
  84797. Note:    RM386 traps this function on the initial transition to protected
  84798.       mode caused by the INT instruction, which means it can not be
  84799.       overridden simply by hooking the interrupt
  84800. SeeAlso: AX=5DFDh,AX=5DFEh
  84801. --------m-675E00-----------------------------
  84802. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  84803.     AX = 5E00h
  84804.     DH = breakpoint number (0-3)
  84805.     DL = breakpoint attributes (used to set DR7)
  84806.     CX:BX = linear address of breakpoint
  84807. SeeAlso: AX=5D03h,AX=5E01h
  84808. --------m-675E01-----------------------------
  84809. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  84810.     AX = 5E01h
  84811.     BL = register number (0-3,7)
  84812. Return: CX:BX = value of specified DRx register
  84813. SeeAlso: AX=5E00h
  84814. --------m-675E02-----------------------------
  84815. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  84816.     AX = 5E02h
  84817.     CX:BX -> exception handler
  84818. Note:    the specified exception handler is called with a simulated interrupt
  84819.       whenever a debug exception occurs which was caused by a hardware
  84820.       breakpoint set with the debug registers
  84821. SeeAlso: AX=5E04h,AX=5E05h
  84822. --------m-675E03-----------------------------
  84823. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  84824.     AX = 5E03h
  84825.     BL = register map set number
  84826.     BH = new state (00h read-only, else read-write)
  84827.     CX = linear page number (linear address SHR 12)
  84828. Note:    setting write protection in map set 0 will cause the setting to become
  84829.       the default for newly-allocated map sets
  84830. --------m-675E04-----------------------------
  84831. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  84832.     AX = 5E04h
  84833. Return: BL = debug exception (low byte of DR6 register)
  84834. SeeAlso: AX=5E02h,AX=5E05h
  84835. --------m-675E05-----------------------------
  84836. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  84837.     AX = 5E05h
  84838. Note:    may be required when using AX=5E02h for handling instruction
  84839.       breakpoints
  84840. SeeAlso: AX=5E02h,AX=5E04h
  84841. --------m-6760-------------------------------
  84842. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  84843.     AH = 60h
  84844.     ES:DI -> buffer
  84845. Return: AH = status (see also AH=40h)
  84846.     AL = number of entries
  84847.     buffer at ES:DI filled
  84848. --------m-6761-------------------------------
  84849. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  84850.     AH = 61h
  84851.     ???
  84852. Return: ???
  84853. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  84854.       ensuring that the cache accurately reflects what the processor would
  84855.       see without the cache.
  84856. --------m-6768-------------------------------
  84857. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  84858.     AH = 68h
  84859.     ES:DI -> buffer
  84860. Return: AH = status (see also AH=40h)
  84861.     AL = number of entries
  84862.     buffer at ES:DI filled
  84863. Note:    equivalent to LIM 4.0 function 58h
  84864. --------m-6769-------------------------------
  84865. INT 67 - EEMS - MAP PAGE INTO FRAME
  84866.     AH = 69h
  84867.     AL = frame number
  84868.     BX = page number
  84869.     DX = handle
  84870. Return: AH = status (see also AH=40h)
  84871. Note:    similar to EMS function 44h
  84872. SeeAlso: AH=44h,AH=50h,AH=6Ah
  84873. --------m-676A-------------------------------
  84874. INT 67 - EEMS - PAGE MAPPING
  84875.     AH = 6Ah
  84876.     AL = subfunction
  84877.         00h save partial page map
  84878.         CH = first page frame
  84879.         CL = number of frames
  84880.         ES:DI -> buffer which is to be filled
  84881.         01h restore partial page map
  84882.         CH = first page frame
  84883.         CL = number of frames
  84884.         DI:SI -> previously saved page map
  84885.         02h save and restore partial page map
  84886.         CH = first page frame
  84887.         CL = number of frames
  84888.         ES:DI = buffer for current page map
  84889.         DI:SI = new page map
  84890.         03h get size of save array
  84891.         CH = first page frame
  84892.         CL = number of frames
  84893.         Return: AL = size of array in bytes
  84894.         04h switch to standard map register setting
  84895.         05h switch to alternate map register setting
  84896.         06h deallocate pages mapped to frames in conventional memory
  84897.         CH = first page frame
  84898.         CL = number of frames
  84899. Return: AH = status (see #2089)
  84900. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  84901.       specified
  84902. SeeAlso: AH=69h
  84903. --------m-676B-------------------------------
  84904. INT 67 - DESQview 2.42-2.53 - BUG
  84905.     AH = 6Bh
  84906. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  84907.       function due to a fencepost error
  84908. --------m-67DD-------------------------------
  84909. INT 67 - Quadtel QMAPS - API
  84910.     AH = DDh
  84911.     AL = function
  84912.     ???
  84913. Return: ???
  84914. Notes:    details are not yet available
  84915.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  84916.       supports this API
  84917. SeeAlso: AH=3Fh,AX=FFA5h
  84918. --------E-67DE00-----------------------------
  84919. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  84920.     AX = DE00h
  84921. Return: AH = status
  84922.         00h VCPI is present
  84923.         BH = major version number
  84924.         BL = minor version number
  84925.         nonzero  VCPI not present
  84926. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  84927. SeeAlso: INT 2F/AX=1687h
  84928. --------E-67DE01-----------------------------
  84929. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  84930.     AX = DE01h
  84931.     ES:DI -> 4K page table buffer
  84932.     DS:SI -> three descriptor table entries in GDT
  84933.         first becomes code segment descriptor, other two for use by
  84934.           main control program
  84935. Return: AH = 00h successful
  84936.         DI -> first unused page table entry in buffer
  84937.         EBX -> protected mode entry point in code segment
  84938.     AH = nonzero  failed
  84939. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  84940.       AX=DE0Ch (in each case, all other registers as appropriate for
  84941.       the function)
  84942. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  84943.  
  84944. (Table 2105)
  84945. Call QEMM v6.03 protected mode entry point additionally with:
  84946.     AX = DF00h ???
  84947.         ???
  84948.         Return: ???
  84949.     AX = DF01h ???
  84950.         ???
  84951.         Return: ???
  84952. --------E-67DE02-----------------------------
  84953. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  84954.     AX = DE02h
  84955. Return: AH = 00h  successful
  84956.         EDX = physical address of highest 4K memory page
  84957.     AH nonzero: failed
  84958. SeeAlso: AH=3Fh
  84959. --------E-67DE03-----------------------------
  84960. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  84961.     AX = DE03h
  84962. Return: AH = 00h  successful
  84963.         EDX = number of free 4K pages
  84964.     AH nonzero: failed
  84965. Notes:    returns total number of pages available to ALL tasks in system
  84966.     also available in protected mode by calling the protected-mode VCPI
  84967.       entry point (see AX=DE01h,#2105)
  84968. SeeAlso: AX=DE04h
  84969. --------E-67DE04-----------------------------
  84970. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  84971.     AX = DE04h
  84972. Return: AH = 00h successful
  84973.         EDX = physical address of allocated page
  84974.     AH nonzero: failed
  84975. Notes:    the client program is responsible for freeing all memory allocated
  84976.       with this call before terminating
  84977.     also available in protected mode by calling the protected-mode VCPI
  84978.       entry point (see AX=DE01h,#2105)
  84979. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  84980. --------E-67DE05-----------------------------
  84981. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  84982.     AX = DE05h
  84983.     EDX = physical address of 4K page
  84984. Return: AH = status
  84985.         00h successful
  84986.         nonzero failed
  84987. Note:    also available in protected mode by calling the protected-mode VCPI
  84988.       entry point (see AX=DE01h,#2105)
  84989. SeeAlso: AH=3Fh,AX=DE04h
  84990. --------E-67DE06-----------------------------
  84991. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  84992.     AX = DE06h
  84993.     CX = page number (linear address shifted right 12 bits)
  84994. Return: AH = status
  84995.         00h successful
  84996.         EDX = physical address of page
  84997.         nonzero invalid page number (AH = 8Bh recommended)
  84998. SeeAlso: AX=5BE0h
  84999. --------E-67DE07-----------------------------
  85000. INT 67 - Virtual Control Program Interface - READ CR0
  85001.     AX = DE07h
  85002. Return: AH = 00h
  85003.     EBX = value of Control Register 0
  85004. SeeAlso: AH=3Fh,AX=DE07h
  85005. --------E-67DE08-----------------------------
  85006. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  85007.     AX = DE08h
  85008.     ES:DI -> array of 8 DWORDs
  85009. Return: AH = 00h
  85010.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  85011. SeeAlso: AH=3Fh,AX=DE09h
  85012. --------E-67DE09-----------------------------
  85013. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  85014.     AX = DE09h
  85015.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  85016. Return: AH = 00h
  85017. Note:    values for DR4 and DR5 ignored
  85018. SeeAlso: AH=3Fh,AX=DE08h
  85019. --------E-67DE0A-----------------------------
  85020. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  85021.     AX = DE0Ah
  85022. Return: AH = 00h successful
  85023.         BX = first vector used by master 8259 (IRQ0)
  85024.         CX = first vector used by slave 8259 (IRQ8)
  85025.     AH nonzero: failed
  85026. Note:    CX is undefined in systems without a slave 8259
  85027. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  85028. --------E-67DE0B-----------------------------
  85029. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  85030.     AX = DE0Bh
  85031.     BX = first vector used by master 8259
  85032.     CX = first vector used by slave 8259
  85033.     interrupts disabled
  85034. Return: AH = 00h successful
  85035.     AH nonzero: failed
  85036. Notes:    This call merely informs the server that the client has changed the
  85037.       interrupt mappings.  The client may not change the mappings if they
  85038.       have already been changed by the server or another client, and is
  85039.       responsible for restoring the original mappings before terminating.
  85040. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  85041. --------E-67DE0C-----------------------------
  85042. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  85043.     AX = DE0Ch
  85044.     ESI = linear address in first megabyte of values for system registers
  85045.     interrupts disabled
  85046. Return: interrupts disabled
  85047.     GDTR, IDTR, LDTR, TR loaded
  85048.     SS:ESP must have at least 16 bytes space, and the entry point is
  85049.           required to set up a new stack before enabling interrupts
  85050.     EAX, ESI, DS, ES, FS, GS destroyed
  85051. Note:    in protected mode, calling the protected-mode VCPI entry point with
  85052.       AX = DE0Ch
  85053.       DS = segment selector mapping entire linear address space obtained
  85054.           via AX=DE01h
  85055.       SS:ESP in first megabyte of linear memory
  85056.       STACK:QWORD  return address from FAR call to 32-bit segment
  85057.         DWORD  EIP
  85058.         DWORD  CS
  85059.         DWORD  reserved for EFLAGS
  85060.         DWORD  ESP
  85061.         DWORD  SS
  85062.         DWORD  ES
  85063.         DWORD  DS
  85064.         DWORD  FS
  85065.         DWORD  GS
  85066.       and interrupts disabled, will switch to virtual86 mode with
  85067.         interrupts disabled, all segment registers loaded, and EAX
  85068.         destroyed.
  85069. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  85070.  
  85071. Format of system register values for switch to protected mode:
  85072. Offset    Size    Description    (Table 2106)
  85073.  00h    DWORD    value for CR3
  85074.  04h    DWORD    linear address in first megabyte of value for GDTR
  85075.  08h    DWORD    linear address in first megabyte of value for IDTR
  85076.  0Ch    WORD    value for LDTR
  85077.  0Eh    WORD    value for TR
  85078.  10h    PWORD    CS:EIP of protected mode entry-point
  85079. --------m-67DE0F-----------------------------
  85080. INT 67 - Netroom3 - ???
  85081.     AX = DE0Fh
  85082.     ???
  85083. Return: ???
  85084. Note:    called by Netroom's DPMI.EXE
  85085. --------m-67EF-------------------------------
  85086. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  85087.     AH = EFh
  85088.     AL = function (00h-12h,80h-8Fh)
  85089.     other register as appropriate for XMS function
  85090. Return: varies by function (see INT 2F/AX=4310h)
  85091. Note:    these functions appear to be equivalent to the XMS functions with the
  85092.       same numbers
  85093. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  85094. --------m-67FFA5-----------------------------
  85095. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  85096.     AX = FFA5h
  85097. Return: AX = 845Ah/84A5h if loaded
  85098.         BX:CX -> API entry point
  85099. Notes:    this call is available even if EMM386 is not providing EMS
  85100.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  85101.     if no other program has hooked INT 67, an alternate installation
  85102.       check is to test for the string
  85103.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  85104.       handler's segment; the word immediately preceding this string
  85105.       contains the offset of the API entry point
  85106. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  85107.  
  85108. (Table 2107)
  85109. Call EMM386.EXE API entry point with:
  85110.     AH = 00h get memory manager's status
  85111.         Return: AH = status
  85112.             bit 0: not active (OFF)
  85113.             bit 1: in "Auto" mode
  85114.     AH = 01h set memory manager's state
  85115.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  85116.     AH = 02h Weitek coprocessor support
  85117.         AL = subfunction
  85118.         00h get Weitek support state
  85119.             Return: AL = status
  85120.                 bit 0: Weitek coprocessor is present
  85121.                 bit 1: Weitek support is enabled
  85122.         01h turn on Weitek support
  85123.         02h turn off Weitek support
  85124.      --- v4.20-4.41 only ---
  85125.     AH = 03h Windows support???
  85126.         AL = subfunction (00h, 01h)
  85127.     AH = 04h print copyright notice to standard output
  85128.          (using INT 21/AH=09h)
  85129.     AH = 05h print available report
  85130.          (the one shown when running EMM386 from the DOS prompt)
  85131. SeeAlso: #0660 at INT 21/AX=4402h/SF=02h,#1309 at INT 2F/AX=12FFh/BX=0106h
  85132. --------m-67FFA5BX4345-----------------------
  85133. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  85134.     AX = FFA5h
  85135.     BX = 4345h ("CE")
  85136.     DX = subfunction
  85137.         0000h unshadow video ROM???
  85138.         0001h shadow video ROM???
  85139.         0002h map pages
  85140.         CX = number of pages (00h=one)
  85141.         ESI = linear address of first page to map into address space
  85142.         EDI = linear starting address at which pages are to be visible
  85143.         0003h get ???
  85144.         Return: DX = ??? (0-2)
  85145.         0004h BUG: crashes system due to fencepost error
  85146. Return: AH = 84h
  85147.     AL = status (84h = error, FFh = success)
  85148. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  85149.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  85150. SeeAlso: AX=FFA5h"EMM386",#0660 at INT 21/AX=4402h/SF=02h,#2107
  85151. --------!---Section--------------------------
  85152. Interrupt List, part 11 of 12
  85153. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  85154. --------I-68---------------------------------
  85155. INT 68 - Sangoma CCPOP 3270 resident module
  85156. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  85157. --------N-68---------------------------------
  85158. INT 68 - Novell NetWare LU6.2
  85159. Note:    the installation check consists of testing for the signature string
  85160.       "APPC/PC" nine bytes before the interrupt handler
  85161. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  85162. --------h-68---------------------------------
  85163. INT 68 - Hewlett Packard - EXTENDED BIOS - 8041 SERVICE REQUEST ISR
  85164. SeeAlso: INT 08"IRQ0",INT 69"Hewlett Packard"
  85165. --------N-6801--SF1B00-----------------------
  85166. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  85167.     AH = 01h subfn 1B00h
  85168.     DS:DX -> control block (see #2108)
  85169. Return: control block updated
  85170. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  85171.  
  85172. Format of APPC/PC "DISPLAY" control block:
  85173. Offset    Size    Description    (Table 2108)
  85174.  00h 12 BYTEs    reserved
  85175.  0Ch    WORD    1B00h (verb "DISPLAY")
  85176.  0Eh  6 BYTEs    00h
  85177.  14h    DWORD    (big-endian) return code (see #2109)
  85178.  18h    WORD    00h
  85179.  1Ah  8 BYTEs    (big-endian) logical unit ID
  85180.  22h  8 BYTEs    (big-endian) partner logical unit name
  85181.  2Ah  8 BYTEs    (big-endian) mode name
  85182.  32h    BYTE    logical unit session limit
  85183.  33h    BYTE    partner logical unit session limit
  85184.  34h    BYTE    node maximum negotiable session limit
  85185.  35h    BYTE    current session limit
  85186.  36h    BYTE    minimum negotiated winner limit
  85187.  37h    BYTE    maximum negotiated loser limit
  85188.  38h    BYTE    active session count
  85189.  39h    BYTE    active CONWINNER session count
  85190.  3Ah    BYTE    active CONLOSER session count
  85191.  3Bh    BYTE    session termination count
  85192.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  85193.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  85194.  
  85195. (Table 2109)
  85196. Values for APPC/PC return code:
  85197.  0000h    successful
  85198.  0001h    BAD_TP_ID
  85199.  0002h    BAD_CONV_ID
  85200.  0003h    bad logical unit ID
  85201.  0008h    no physical unit attached
  85202.  0110h    bad state
  85203.  01B1h    BAD_PART_LUNAME
  85204.  01B2h    bad mode name
  85205.  0201h    physical unit already active
  85206.  0211h    logical unit already active
  85207.  0212h    BAD_PART_SESS
  85208.  0213h    BAD_RU_SIZES
  85209.  0214h    BAD_MODE_SESS
  85210.  0216h    BAD_PACING_CNT
  85211.  0219h    EXTREME_RUS
  85212.  021Ah    SNASVCMG_1
  85213.  0223h    SSCP_CONNECTED_LU
  85214.  0230h    invalid change
  85215.  0243h    too many TPs
  85216.  0272h    adapter close failure
  85217.  0281h    GET_ALLOC_BAD_TYPE
  85218.  0282h    unsuccessful
  85219.  0283h    DLC failure
  85220.  0284h    unrecognized DLC
  85221.  0286h    duplicate DLC
  85222.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  85223.  0302h    data exceeds RU size
  85224.  0401h    invalid direction
  85225.  0402h    invalid type
  85226.  0403h    segment overlap
  85227.  0404h    invalid first character
  85228.  0405h    table error
  85229.  0406h    conversion error
  85230.  F0010000h    APPC disabled
  85231.  F0020000h    APPC busy
  85232.  F0030000h    APPC abended
  85233.  F0040000h    incomplete
  85234. --------N-6801--SF2000-----------------------
  85235. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  85236.     AH = 01h subfn 2000h
  85237.     DS:DX -> control block (see #2110)
  85238. Return: control block updated
  85239. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  85240.  
  85241. Format of APPC/PC "Attach Physical Unit" control block:
  85242. Offset    Size    Description    (Table 2110)
  85243.  00h 12 BYTEs    reserved
  85244.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  85245.  0Eh  6 BYTEs    00h
  85246.  14h    DWORD    (big-endian) return code (see #2109)
  85247.  18h    WORD    00h
  85248.  1Ah    BYTE    version
  85249.  1Bh    BYTE    release
  85250.  1Ch  8 BYTEs    (big-endian) net name
  85251.  24h  8 BYTEs    (big-endian) physical unit name
  85252.  2Ch  8 BYTEs    00h
  85253.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  85254.         (see also AH=01h/SF=2100h)
  85255.  38h    DWORD    00h
  85256.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  85257.         01h RETURN_CONTROL: INCOMPLETE
  85258. --------N-6801--SF2100-----------------------
  85259. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  85260.     AH = 01h subfn 2100h
  85261.     DS:DX -> control block (see #2111)
  85262. Return: control block updated
  85263. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  85264.  
  85265. Format of APPC/PC "Attach Logical Unit" control block:
  85266. Offset    Size    Description    (Table 2111)
  85267.  00h 12 BYTEs    reserved
  85268.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  85269.  0Eh  6 BYTEs    00h
  85270.  14h    DWORD    (big-endian) return code (see #2109)
  85271.  18h    WORD    70  offset to partner logical unit record
  85272.  1Ah  8 BYTEs    (big-endian) logical unit name
  85273.  22h  8 BYTEs    (big-endian) logical unit ID
  85274.  2Ah    BYTE    logical unit local address
  85275.  2Bh    BYTE    logical unit session limit
  85276.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  85277.         FFFFFFFFh = reject incoming ALLOCATEs
  85278.         00000000h = queue ALLOCATEs
  85279.  30h    DWORD    00h
  85280.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  85281.  38h    DWORD    00h
  85282.  3Ch    BYTE    maximum TPs
  85283.  3Dh    BYTE    queue depth
  85284.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  85285.  42h    DWORD    00h
  85286.  46h    WORD    total length of partner records
  85287.  48h    var    array of partner logical unit records (see #2112)
  85288.  
  85289. Format of APPC/PC partner logical unit record:
  85290. Offset    Size    Description    (Table 2112)
  85291.  00h    WORD    length of this partner logical unit record
  85292.  02h    WORD    42  offset to mode records
  85293.  04h  8 BYTEs    (big-endian) partner logical unit name
  85294.  0Ch    BYTE    partner logical unit security capabilities
  85295.         bit 7: already verified
  85296.         bit 6: conversation level security
  85297.         bit 5: session level security
  85298.  0Dh    BYTE    partner logical unit session limit
  85299.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  85300.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  85301.  18h    BYTE    partner logical unit adapter number
  85302.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  85303.  2Ah    WORD    total length of mode records
  85304.  2Ch 16N BYTEs    array of mode records (see #2113)
  85305.  
  85306. Format of mode record:
  85307. Offset    Size    Description    (Table 2113)
  85308.  00h    WORD    16  length of this mode record
  85309.  02h  8 BYTEs    (big-endian) mode name
  85310.  0Ah    WORD    RU_SIZE high bound
  85311.  0Ch    WORD    RU_SIZE low bound
  85312.  0Eh    BYTE    mode maximum negotiable session limit
  85313.  0Fh    BYTE    pacing size for receive
  85314.  
  85315. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  85316. pointers are called by pushing the DWORD pointer to the verb on the stack and
  85317. then performing a FAR call.
  85318.  
  85319. Format of ACCESS_LU_LU_PW verb:
  85320. Offset    Size    Description    (Table 2114)
  85321.  00h 12 BYTEs    reserved
  85322.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  85323.  0Eh  8 BYTEs    (big-endian) logical unit ID
  85324.  16h  8 BYTEs    (big-endian) logical unit name
  85325.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  85326.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  85327.  37h    BYTE    password available (0=no, 1=yes)
  85328.  38h  8 BYTEs    password
  85329.  
  85330. Format of CREATE_TP verb:
  85331. Offset    Size    Description    (Table 2115)
  85332.  00h 12 BYTEs    reserved
  85333.  0Ch    WORD    2300h (verb "CREATE_TP")
  85334.  0Eh  6 BYTEs    00h
  85335.  14h    DWORD    (big-endian) sense code (see #2116)
  85336.  18h  8 BYTEs    (big-endian) TP ID
  85337.  20h  8 BYTEs    (big-endian) logical unit ID
  85338.  28h    DWORD    (big-endian) conversation ID
  85339.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  85340.  2Dh    BYTE    0 no sync level, 1 confirm
  85341.  2Eh    BYTE    reserved
  85342.  2Fh 65 BYTEs    (counted string) transaction program name
  85343.  70h  6 BYTEs    00h
  85344.  76h    WORD    length of ERROR_LOG_DATA to return
  85345.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  85346.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  85347.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  85348.  96h  8 BYTEs    (big-endian) mode name
  85349.  9Eh 12 BYTEs    00h
  85350.  AAh 11 BYTEs    (counted string) password
  85351.  B5h 11 BYTEs    (counted string) user ID
  85352.  C0h    BYTE    0 verification should be performed
  85353.         1 already verified
  85354.  
  85355. (Table 2116)
  85356. Values for APPC/PC sense code:
  85357.  00000000h    Ok
  85358.  080F6051h    SECURITY_NOT_VALID
  85359.  084B6031h    TP_NOT_AVAIL_RETRY
  85360.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  85361.  10086021h    TP_NAME_NOT_RECOGNIZED
  85362.  10086034h    CONVERSATION_TYPE_MISMATCH
  85363.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  85364.  
  85365. Format of SYSLOG verb:
  85366. Offset    Size    Description    (Table 2117)
  85367.  00h 12 BYTEs    reserved
  85368.  0Ch    WORD    2600h (verb "SYSLOG")
  85369.  0Eh 10 BYTEs    00h
  85370.  18h    WORD    (big-endian) type
  85371.  1Ah    DWORD    (big-endian) subtype
  85372.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  85373.  22h    DWORD    (big-endian) conversation ID
  85374.  26h  8 BYTEs    (big-endian) TP ID
  85375.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  85376.  36h    WORD    length of data
  85377.  38h    DWORD    pointer to data
  85378.  3Ch    BYTE    00h
  85379. --------N-6801--SF2200-----------------------
  85380. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  85381.     AH = 01h subfn 2200h
  85382.     DS:DX -> control block (see #2118)
  85383. Return: control block updated
  85384. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  85385.  
  85386. Format of APPC/PC "Detach Logical Unit" control block:
  85387. Offset    Size    Description    (Table 2118)
  85388.  00h 12 BYTEs    reserved
  85389.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  85390.  0Eh  6 BYTEs    00h
  85391.  14h    DWORD    (big-endian) return code (see #2109)
  85392.  18h  8 BYTEs    (big-endian) logical unit ID
  85393.  20h    BYTE    00h
  85394. --------N-6801--SF2700-----------------------
  85395. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  85396.     AH = 01h subfn 2700h
  85397.     DS:DX -> control block (see #2119)
  85398. Return: control block updated
  85399. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  85400.  
  85401. Format of APPC/PC "Detach Physical Unit" control block:
  85402. Offset    Size    Description    (Table 2119)
  85403.  00h 12 BYTEs    reserved
  85404.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  85405.  0Eh  6 BYTEs    00h
  85406.  14h    DWORD    (big-endian) return code (see #2109)
  85407.  18h    BYTE    00h  type: hard
  85408.         01h  type: soft
  85409. --------N-6801--SF2B00-----------------------
  85410. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  85411.     AH = 01h subfn 2B00h
  85412.     DS:DX -> control block (see #2120)
  85413. Return: control block updated
  85414. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  85415.  
  85416. Format of APPC/PC "Activate DLC" control block:
  85417. Offset    Size    Description    (Table 2120)
  85418.  00h 12 BYTEs    reserved
  85419.  0Ch    WORD    2B00h (verb "Activate DLC")
  85420.  0Eh  6 BYTEs    00h
  85421.  14h    DWORD    (big-endian) return code (see #2109)
  85422.  18h  8 BYTEs    (big-endian) DLC name
  85423.  20h    BYTE    adapter number
  85424. --------N-6802--SF0100-----------------------
  85425. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  85426.     AH = 02h subfn 0100h
  85427.     DS:DX -> control block (see #2121)
  85428. Return: control block updated
  85429. SeeAlso: AH=02h/SF=0500h
  85430.  
  85431. Format of APPC/PC "Allocate" control block:
  85432. Offset    Size    Description    (Table 2121)
  85433.  00h 12 BYTEs    reserved
  85434.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  85435.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85436.         0 if basic verb
  85437.  0Fh  5 BYTEs    reserved (0)
  85438.  14h    WORD    (big-endian) primary return code (see #2122)
  85439.  16h    DWORD    (big-endian) error code (see #2123)
  85440.  1Ah  8 BYTEs    (big-endian) TP_ID
  85441.  22h    DWORD    (big-endian) conversation ID
  85442.  26h    BYTE    (MC_Allocate only) conversation type
  85443.         0 basic conversation
  85444.         1 mapped conversation
  85445.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  85446.  28h    WORD    0000h
  85447.  2Ah    BYTE    RETURN_CONTROL
  85448.         00h when session allocated
  85449.         01h immediate
  85450.         02h when session free
  85451.  2Bh  8 BYTEs    00h
  85452.  33h  8 BYTEs    (big-endian) partner logical unit name
  85453.  3Bh  8 BYTEs    (big-endian) mode name
  85454.  43h 65 BYTEs    (counted string) TP name
  85455.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  85456.  85h 11 BYTEs    00h
  85457.  90h 11 BYTEs    (counted string) password
  85458.  9Bh 11 BYTEs    (counted string) user ID
  85459.  A6h    WORD    PIP_DATA length
  85460.  A8h    DWORD    pointer to PIP_DATA
  85461.  
  85462. (Table 2122)
  85463. Values for APPC/PC primary return code:
  85464.  0000h    successful
  85465.  0001h    parameter check
  85466.  0002h    state check
  85467.  0003h    allocation error
  85468.  0005h    deallocate abended
  85469.  0006h    deallocate abended program
  85470.  0007h    deallocate abended SVC
  85471.  0008h    deallocate abended timer
  85472.  0009h    deallocate normal return
  85473.  000Ah    data posting blocked
  85474.  000Bh    posting not active
  85475.  000Ch    PROG_ERROR_NO_TRUNC
  85476.  000Dh    PROG_ERROR_TRUNC
  85477.  000Eh    PROG_ERROR_PURGING
  85478.  000Fh    CONV_FAILURE_RETRY
  85479.  0010h    CONV_FAILURE_NO_RETRY
  85480.  0011h    SVC_ERROR_NO_TRUNC
  85481.  0012h    SVC_ERROR_TRUNC
  85482.  0013h    SVC_ERROR_PURGING
  85483.  0014h    unsuccessful
  85484.  0018h    CNOS partner logical unit reject
  85485.  0019h    conversation type mixed
  85486.  F001h    APPC disabled
  85487.  F002h    APPC busy
  85488.  F003h    APPC abended
  85489.  F004h    incomplete
  85490.  
  85491. (Table 2123)
  85492. Values for APPC/PC error code:
  85493.  0001h    bad TP ID
  85494.  0002h    bad conversation ID
  85495.  0004h    allocation error, no retry
  85496.  0005h    allocation error, retry
  85497.  0006h    data area crosses segment boundary
  85498.  0010h    bad TPN length
  85499.  0011h    bad CONV length
  85500.  0012h    bad SYNC level
  85501.  0013h    bad security selection
  85502.  0014h    bad return control
  85503.  0015h    SEC_TOKENS too big
  85504.  0016h    PIP_LEN incorrect
  85505.  0017h    no use of SNASVCMG
  85506.  0018h    unknown partner mode
  85507.  0031h    confirm: SYNC_NONE
  85508.  0032h    confirm: bad state
  85509.  0033h    confirm: NOT_LL_BDY
  85510.  0041h    confirmed: bad state
  85511.  0051h    deallocate: bad type
  85512.  0052h    deallocate: flush bad state
  85513.  0053h    deallocate: confirm bad state
  85514.  0055h    deallocate: NOT_LL_BDY
  85515.  0057h    deallocate: log LL_WRONG
  85516.  0061h    flush: not send state
  85517.  0091h    post on receipt: invalid length
  85518.  0092h    post on receipt: not in receive state
  85519.  0093h    post on receipt: bad fill
  85520.  00A1h    prepare to receive:invalid type
  85521.  00A2h    prepare to receive: unfinished LL
  85522.  00A3h    prepare to receive: not in send state
  85523.  00B1h    receive and wait: bad state
  85524.  00B2h    receive and wait: NOT_LL_BDY
  85525.  00B5h    receive and wait: bad fill
  85526.  00C1h    receive immediate: not in receive state
  85527.  00C4h    receive immediate: bad fill
  85528.  00E1h    request to send: not in receive state
  85529.  00F1h    send data: bad LL
  85530.  00F2h    send data: not in send state
  85531.  0102h    send error: log LL wrong
  85532.  0103h    send error: bad type
  85533.  0121h    test: invalid type
  85534.  0122h    test: not in receive state
  85535. --------N-6802--SF0300-----------------------
  85536. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  85537.     AH = 02h subfn 0300h
  85538.     DS:DX -> control block (see #2124)
  85539. Return: control block updated
  85540. SeeAlso: AH=02h/SF=0400h
  85541.  
  85542. Format of APPC/PC "Confirm" control block:
  85543. Offset    Size    Description    (Table 2124)
  85544.  00h 12 BYTEs    reserved
  85545.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  85546.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85547.         0 if basic verb
  85548.  0Fh  5 BYTEs    reserved (0)
  85549.  14h    WORD    (big-endian) primary return code (see #2122)
  85550.  16h    DWORD    (big-endian) error code (see #2123)
  85551.  1Ah  8 BYTEs    (big-endian) TP_ID
  85552.  22h    DWORD    (big-endian) conversation ID
  85553.  26h    BYTE    request to send received (0=no, 1=yes)
  85554. --------N-6802--SF0400-----------------------
  85555. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  85556.     AH = 02h subfn 0400h
  85557.     DS:DX -> control block (see #2125)
  85558. Return: control block updated
  85559. SeeAlso: AH=02h/SF=0300h
  85560.  
  85561. Format of APPC/PC "Confirmed" control block:
  85562. Offset    Size    Description    (Table 2125)
  85563.  00h 12 BYTEs    reserved
  85564.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  85565.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85566.         0 if basic verb
  85567.  0Fh  5 BYTEs    reserved (0)
  85568.  14h    WORD    (big-endian) primary return code (see #2122)
  85569.  16h    DWORD    (big-endian) error code (see #2123)
  85570.  1Ah  8 BYTEs    (big-endian) TP_ID
  85571.  22h    DWORD    (big-endian) conversation ID
  85572. --------N-6802--SF0500-----------------------
  85573. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  85574.     AH = 02h subfn 0500h
  85575.     DS:DX -> control block (see #2126)
  85576. Return: control block updated
  85577. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  85578.  
  85579. Format of APPC/PC "Deallocate" control block:
  85580. Offset    Size    Description    (Table 2126)
  85581.  00h 12 BYTEs    reserved
  85582.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  85583.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85584.         0 if basic verb
  85585.  0Fh  5 BYTEs    reserved (0)
  85586.  14h    WORD    (big-endian) primary return code (see #2122)
  85587.  16h    DWORD    (big-endian) error code (see #2123)
  85588.  1Ah  8 BYTEs    (big-endian) TP_ID
  85589.  22h    DWORD    (big-endian) conversation ID
  85590.  26h    BYTE    00h
  85591.  27h    BYTE    type
  85592.         00h SYNC_LEVEL
  85593.         01h FLUSH
  85594.         02h ABEND_PROC
  85595.         03h ABEND_SVC
  85596.         04h ABEND_TIMER
  85597.         05h ABEND
  85598.  28h    WORD    (MC_Deallocate only) length of error log data
  85599.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  85600. --------N-6802--SF0600-----------------------
  85601. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  85602.     AH = 02h subfn 0600h
  85603.     DS:DX -> control block (see #2127)
  85604. Return: control block updated
  85605. SeeAlso: AH=02h/SF=0300h
  85606.  
  85607. Format of APPC/PC "Flush" control block:
  85608. Offset    Size    Description    (Table 2127)
  85609.  00h 12 BYTEs    reserved
  85610.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  85611.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85612.         0 if basic verb
  85613.  0Fh  5 BYTEs    reserved (0)
  85614.  14h    WORD    (big-endian) primary return code (see #2122)
  85615.  16h    DWORD    (big-endian) error code (see #2123)
  85616.  1Ah  8 BYTEs    (big-endian) TP_ID
  85617.  22h    DWORD    (big-endian) conversation ID
  85618. --------N-6802--SF0700-----------------------
  85619. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  85620.     AH = 02h subfn 0700h
  85621.     DS:DX -> control block (see #2128)
  85622. Return: control block updated
  85623. SeeAlso: AH=02h/SF=0300h
  85624.  
  85625. Format of APPC/PC "Get_Attributes" control block:
  85626. Offset    Size    Description    (Table 2128)
  85627.  00h 12 BYTEs    reserved
  85628.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  85629.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85630.         0 if basic verb
  85631.  0Fh  5 BYTEs    reserved (0)
  85632.  14h    WORD    (big-endian) primary return code (see #2122)
  85633.  16h    DWORD    (big-endian) error code (see #2123)
  85634.  1Ah  8 BYTEs    (big-endian) TP_ID
  85635.  22h    DWORD    (big-endian) conversation ID
  85636.  26h  8 BYTEs    (big-endian) logical unit ID
  85637.  2Eh    BYTE    00h
  85638.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  85639.  30h  8 BYTEs    (big-endian) mode name
  85640.  38h  8 BYTEs    (big-endian) own net name
  85641.  40h  8 BYTEs    (big-endian) own logical unit name
  85642.  48h  8 BYTEs    (big-endian) partner logical unit name
  85643.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  85644.  62h    BYTE    00h
  85645.  63h 11 BYTEs    (counted string) user ID
  85646. --------N-6802--SF0800-----------------------
  85647. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  85648.     AH = 02h subfn 0800h
  85649.     DS:DX -> control block (see #2129)
  85650. Return: control block updated
  85651. SeeAlso: AH=02h/SF=0300h
  85652.  
  85653. Format of APPC/PC "Get_Type" control block:
  85654. Offset    Size    Description    (Table 2129)
  85655.  00h 12 BYTEs    reserved
  85656.  0Ch    WORD    0800h (verb "Get_Type")
  85657.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85658.         0 if basic verb
  85659.  0Fh  5 BYTEs    reserved (0)
  85660.  14h    WORD    (big-endian) primary return code (see #2122)
  85661.  16h    DWORD    (big-endian) error code (see #2123)
  85662.  1Ah  8 BYTEs    (big-endian) TP_ID
  85663.  22h    DWORD    (big-endian) conversation ID
  85664.  26h    BYTE    (return) type (0=basic conversation, 1=mapped conversation)
  85665. --------N-6802--SF0900-----------------------
  85666. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  85667.     AH = 02h subfn 0900h
  85668.     DS:DX -> control block (see #2130)
  85669. Return: control block updated
  85670. SeeAlso: AH=02h/SF=0A00h
  85671.  
  85672. Format of APPC/PC "Post_on_Receipt" control block:
  85673. Offset    Size    Description    (Table 2130)
  85674.  00h 12 BYTEs    reserved
  85675.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  85676.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85677.         0 if basic verb
  85678.  0Fh  5 BYTEs    reserved (0)
  85679.  14h    WORD    (big-endian) primary return code (see #2122)
  85680.  16h    DWORD    (big-endian) error code (see #2123)
  85681.  1Ah  8 BYTEs    (big-endian) TP_ID
  85682.  22h    DWORD    (big-endian) conversation ID
  85683.  26h    WORD    maximum length
  85684.  28h    BYTE    fill (0=buffer, 1=LL)
  85685. --------N-6802--SF0A00-----------------------
  85686. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  85687.     AH = 02h subfn 0A00h
  85688.     DS:DX -> control block (see #2131)
  85689. Return: control block updated
  85690. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  85691.  
  85692. Format of APPC/PC "Prepare_to_Receive" control block:
  85693. Offset    Size    Description    (Table 2131)
  85694.  00h 12 BYTEs    reserved
  85695.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  85696.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85697.         0 if basic verb
  85698.  0Fh  5 BYTEs    reserved (0)
  85699.  14h    WORD    (big-endian) primary return code (see #2122)
  85700.  16h    DWORD    (big-endian) error code (see #2123)
  85701.  1Ah  8 BYTEs    (big-endian) TP_ID
  85702.  22h    DWORD    (big-endian) conversation ID
  85703.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  85704.  27h    BYTE    locks (0=short, 1=long)
  85705. --------N-6802--SF0B00-----------------------
  85706. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  85707.     AH = 02h subfn 0B00h
  85708.     DS:DX -> control block (see #2132)
  85709. Return: control block updated
  85710. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  85711.  
  85712. Format of APPC/PC "Receive_and_Wait" control block:
  85713. Offset    Size    Description    (Table 2132)
  85714.  00h 12 BYTEs    reserved
  85715.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  85716.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85717.         0 if basic verb
  85718.  0Fh  5 BYTEs    reserved (0)
  85719.  14h    WORD    (big-endian) primary return code (see #2122)
  85720.  16h    DWORD    (big-endian) error code (see #2123)
  85721.  1Ah  8 BYTEs    (big-endian) TP_ID
  85722.  22h    DWORD    (big-endian) conversation ID
  85723.  26h    BYTE    type of information received (see #2133)
  85724.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  85725.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  85726.  29h    WORD    maximum length
  85727.  2Bh    WORD    data length
  85728.  2Dh    DWORD    pointer to data
  85729.  
  85730. (Table 2133)
  85731. Values for type of information received:
  85732.  00h    data
  85733.  01h    data complete
  85734.  02h    data incomplete
  85735.  03h    confirm
  85736.  04h    confirm send
  85737.  05h    confirm deallocate
  85738.  06h    send
  85739. --------N-6802--SF0C00-----------------------
  85740. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  85741.     AH = 02h subfn 0C00h
  85742.     DS:DX -> control block (see #2134)
  85743. Return: control block updated
  85744. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  85745.  
  85746. Format of APPC/PC "Receive_Immediate" control block:
  85747. Offset    Size    Description    (Table 2134)
  85748.  00h 12 BYTEs    reserved
  85749.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  85750.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85751.         0 if basic verb
  85752.  0Fh  5 BYTEs    reserved (0)
  85753.  14h    WORD    (big-endian) primary return code (see #2122)
  85754.  16h    DWORD    (big-endian) error code (see #2123)
  85755.  1Ah  8 BYTEs    (big-endian) TP_ID
  85756.  22h    DWORD    (big-endian) conversation ID
  85757.  26h    BYTE    type of information received (see #2133)
  85758.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  85759.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  85760.  29h    WORD    maximum length
  85761.  2Bh    WORD    data length
  85762.  2Dh    DWORD    pointer to data
  85763. --------N-6802--SF0E00-----------------------
  85764. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  85765.     AH = 02h subfn 0E00h
  85766.     DS:DX -> control block (see #2135)
  85767. Return: control block updated
  85768. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  85769.  
  85770. Format of APPC/PC "Request_to_Send" control block:
  85771. Offset    Size    Description    (Table 2135)
  85772.  00h 12 BYTEs    reserved
  85773.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  85774.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85775.         0 if basic verb
  85776.  0Fh  5 BYTEs    reserved (0)
  85777.  14h    WORD    (big-endian) primary return code (see #2122)
  85778.  16h    DWORD    (big-endian) error code (see #2123)
  85779.  1Ah  8 BYTEs    (big-endian) TP_ID
  85780.  22h    DWORD    (big-endian) conversation ID
  85781. --------N-6802--SF0F00-----------------------
  85782. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  85783.     AH = 02h subfn 0F00h
  85784.     DS:DX -> control block (see #2136)
  85785. Return: control block updated
  85786. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  85787.  
  85788. Format of APPC/PC "Send_Data" control block:
  85789. Offset    Size    Description    (Table 2136)
  85790.  00h 12 BYTEs    reserved
  85791.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  85792.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85793.         0 if basic verb
  85794.  0Fh  5 BYTEs    reserved (0)
  85795.  14h    WORD    (big-endian) primary return code (see #2122)
  85796.  16h    DWORD    (big-endian) error code (see #2123)
  85797.  1Ah  8 BYTEs    (big-endian) TP_ID
  85798.  22h    DWORD    (big-endian) conversation ID
  85799.  26h    BYTE    request to send received (0=no, 1=yes)
  85800.  27h    BYTE    00h
  85801.  28h    WORD    data length
  85802.  2Ah    DWORD    pointer to data
  85803. --------N-6802--SF1000-----------------------
  85804. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  85805.     AH = 02h subfn 1000h
  85806.     DS:DX -> control block (see #2137)
  85807. Return: control block updated
  85808. SeeAlso: AH=02h/SF=0F00h
  85809.  
  85810. Format of APPC/PC "Send_Error" control block:
  85811. Offset    Size    Description    (Table 2137)
  85812.  00h 12 BYTEs    reserved
  85813.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  85814.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85815.         0 if basic verb
  85816.  0Fh  5 BYTEs    reserved (0)
  85817.  14h    WORD    (big-endian) primary return code (see #2122)
  85818.  16h    DWORD    (big-endian) error code (see #2123)
  85819.  1Ah  8 BYTEs    (big-endian) TP_ID
  85820.  22h    DWORD    (big-endian) conversation ID
  85821.  26h    BYTE    request to send received (0=no, 1=yes)
  85822.  27h    BYTE    type (0=program, 1=SVC)
  85823.  28h    DWORD    00h
  85824.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  85825.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  85826. --------N-6802--SF1200-----------------------
  85827. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  85828.     AH = 02h subfn 1200h
  85829.     DS:DX -> control block (see #2138)
  85830. Return: control block updated
  85831. SeeAlso: AH=02h/SF=1300h
  85832.  
  85833. Format of APPC/PC "Test" control block:
  85834. Offset    Size    Description    (Table 2138)
  85835.  00h 12 BYTEs    reserved
  85836.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  85837.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85838.         0 if basic verb
  85839.  0Fh  5 BYTEs    reserved (0)
  85840.  14h    WORD    (big-endian) primary return code (see #2122)
  85841.  16h    DWORD    (big-endian) error code (see #2123)
  85842.  1Ah  8 BYTEs    (big-endian) TP_ID
  85843.  22h    DWORD    (big-endian) conversation ID
  85844.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  85845. Note:    error code has different interpretations for:
  85846.     0 posted data
  85847.     1 posted not data (primary return code = 0)
  85848.     1 bad TP_ID (primary return code = 1)
  85849. --------N-6802--SF1300-----------------------
  85850. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  85851.     AH = 02h subfn 1300h
  85852.     DS:DX -> control block (see #2139)
  85853. Return: control block updated
  85854. SeeAlso: AH=02h/SF=1200h
  85855.  
  85856. Format of APPC/PC "Wait" control block:
  85857. Offset    Size    Description    (Table 2139)
  85858.  00h 12 BYTEs    reserved
  85859.  0Ch    WORD    1300h (verb "Wait")
  85860.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  85861.         0 if basic verb
  85862.  0Fh  5 BYTEs    reserved (0)
  85863.  14h    WORD    (big-endian) primary return code (see #2122)
  85864.  16h    DWORD    (big-endian) error code (see #2123,#2138)
  85865.  1Ah  8 BYTEs    (big-endian) TP_ID
  85866.  22h    DWORD    (big-endian) conversation ID
  85867.  26h    BYTE    number of conversations to wait on
  85868.         Note: error codes have interpretations as for AH=02h/SF=1200h
  85869. --------N-6803--SF2400-----------------------
  85870. INT 68 - APPC/PC - TP STARTED
  85871.     AH = 03h subfn 2400h
  85872.     DS:DX -> control block (see #2140)
  85873. Return: control block updated
  85874.  
  85875. Format of APPC/PC "TP Started" control block:
  85876. Offset    Size    Description    (Table 2140)
  85877.  00h 12 BYTEs    reserved
  85878.  0Ch    WORD    2400h (verb "TP Started")
  85879.  0Eh  6 BYTEs    00h
  85880.  14h    DWORD    (big-endian) return code (see #2109)
  85881.  18h    WORD    00h
  85882.  1Ah  8 BYTEs    (big-endian) logical unit ID
  85883.  22h  8 BYTEs    (big-endian) TP ID
  85884. --------N-6803--SF2800-----------------------
  85885. INT 68 - APPC/PC - GET ALLOCATE
  85886.     AH = 03h subfn 2800h
  85887.     DS:DX -> control block (see #2141)
  85888. Return: control block updated
  85889.  
  85890. Format of APPC/PC "Get ALLOCATE" control block:
  85891. Offset    Size    Description    (Table 2141)
  85892.  00h 12 BYTEs    reserved
  85893.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  85894.  0Eh  6 BYTEs    00h
  85895.  14h    DWORD    (big-endian) return code (see #2109)
  85896.  18h    WORD    00h
  85897.  1Ah  8 BYTEs    (big-endian) logical unit ID
  85898.  22h    BYTE    type (00h dequeue, 01h test)
  85899.  23h    DWORD    pointer to CREATE_TP record
  85900. --------N-6803--SF2A00-----------------------
  85901. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  85902.     AH = 03h subfn 2A00h
  85903.     DS:DX -> control block (see #2142)
  85904. Return: control block updated
  85905.  
  85906. Format of APPC/PC "Change Logical Unit" control block:
  85907. Offset    Size    Description    (Table 2142)
  85908.  00h 12 BYTEs    reserved
  85909.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  85910.  0Eh  6 BYTEs    00h
  85911.  14h    DWORD    (big-endian) return code (see #2109)
  85912.  18h    WORD    00h
  85913.  1Ah  8 BYTEs    (big-endian) logical unit ID
  85914.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  85915.         00000000h queue ALLOCATEs
  85916.         FFFFFFFFh reject incoming ALLOCATEs
  85917.  26h    DWORD    00000000h
  85918.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  85919.  2Eh    DWORD    00000000h
  85920.  32h    BYTE    maximum TPs
  85921.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  85922.         01h resume QUEUE_ALLOCATEs
  85923.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  85924.  38h    DWORD    00000000h
  85925. --------N-6804-------------------------------
  85926. INT 68 - APPC/PC - TRANSACTION PROCESSING
  85927.     AH = 04h
  85928.     DS:DX -> control block (see #2143)
  85929. Return: control block updated
  85930.  
  85931. Format of APPC/PC control block:
  85932. Offset    Size    Description    (Table 2143)
  85933.  00h 12 BYTEs    reserved
  85934.  0Ch    WORD    verb (action)
  85935.         2500h TP_ENDED
  85936.         2900h TP_VALID
  85937.  0Eh  6 BYTEs    00h
  85938.  14h    DWORD    (big-endian) return code (see #2109)
  85939.  18h    WORD    00h
  85940.  1Ah  8 BYTEs    (big-endian) TP_ID
  85941.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  85942. --------N-6805-------------------------------
  85943. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  85944.     AH = 05h
  85945.     DS:DX -> control block (see #2144)
  85946. Return: control block updated
  85947.  
  85948. Format of APPC/PC "Transfer Message Data" control block:
  85949. Offset    Size    Description    (Table 2144)
  85950.  00h 12 BYTEs    reserved
  85951.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  85952.  0Eh    BYTE    data type
  85953.         00h user defined
  85954.         01h NMVT
  85955.         02h alert subvectors
  85956.         03h PDSTATS subvectors
  85957.  0Fh  5 BYTEs    00h
  85958.  14h    DWORD    (big-endian) return code (see #2109)
  85959.  18h 12 BYTEs    00h
  85960.  24h    BYTE    flags
  85961.         bit 0: don't add correlation subvector
  85962.         bit 1: don't add product set ID subvector
  85963.         bit 2: don't do SYSLOG
  85964.         bit 3: don't send SSCP_PU_SESSION
  85965.  25h    BYTE    00h
  85966.  26h    WORD    length of data
  85967.  28h  N BYTEs    data
  85968. --------N-6806-------------------------------
  85969. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  85970.     AH = 06h
  85971.     DS:DX -> control block (see #2145)
  85972. Return: control block updated
  85973.  
  85974. Format of APPC/PC "Change Number of Sessions" control block:
  85975. Offset    Size    Description    (Table 2145)
  85976.  00h 12 BYTEs    reserved
  85977.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  85978.  0Eh  6 BYTEs    00h
  85979.  14h    WORD    (big-endian) primary return code (see #2122)
  85980.  16h    DWORD    (big-endian) secondary return code (see #2109,#2146)
  85981.  1Ah  8 BYTEs    (big-endian) logical unit ID
  85982.  22h  8 BYTEs    blanks
  85983.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  85984.  32h  8 BYTEs    (big-endian) mode name
  85985.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  85986.         bit 6: set negotiable values
  85987.  3Bh    BYTE    partner logical unit mode session limit
  85988.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  85989.  3Dh    BYTE    maximum CONWINNERS_TARGET
  85990.  3Eh    BYTE    automatic activation
  85991.  3Fh    BYTE    00h
  85992.  40h    BYTE    flags
  85993.         bit 7: drain target
  85994.         bit 6: drain source
  85995.         bit 5: target responsible, not source
  85996.  
  85997. (Table 2146)
  85998. Values for secondary return code (see also AH=01h/SF=1B00h):
  85999.  0000h    accepted
  86000.  0001h    negotiated
  86001.  0003h    bad logical unit ID
  86002.  0004h    allocation failure, no retry
  86003.  0005h    allocation failure, retry
  86004.  0151h    can't raise limits
  86005.  0153h    all modes must reset
  86006.  0154h    bad SNASVCMG limits
  86007.  0155h    minimum greater than total
  86008.  0156h    mode closed (primary return code = 1)
  86009.     CNOS mode closed (primary return code = 18h)
  86010.  0157h    bad mode name (primary return code = 1)
  86011.     CNOS bad mode name (primary return code = 18h)
  86012.  0159h    reset SNA drains
  86013.  015Ah    single not SRC response
  86014.  015Bh    bad partner logical unit
  86015.  015Ch    exceeds maximum allowed
  86016.  015Dh    change SRC drains
  86017.  015Eh    logical unit detached
  86018.  015Fh    CNOS command race reject
  86019. --------N-6807-------------------------------
  86020. INT 68 - APPC/PC - PASSTHROUGH
  86021.     AH = 07h
  86022.     DS:DX -> control block (format depends on application subsystem)
  86023. Return: control block updated
  86024. SeeAlso: AH=FFh
  86025. ----------684300-----------------------------
  86026. INT 68 U - ??? - INSTALLATION CHECK???
  86027.     AX = 4300h
  86028. Return: AX = F386h if ???
  86029.     ???
  86030. Note:    called by Novell DOS 7.0 EMM386.EXE
  86031. SeeAlso: AX=4400h,INT 41/AX=004Fh
  86032. ----------684400-----------------------------
  86033. INT 68 U - ???
  86034.     AX = 4400h
  86035.     BX = ???
  86036.     CX = ???
  86037.     DX = ???
  86038.     DS:SI = real-mode address of protected-mode GDT
  86039.     ES:DI = real-mode address of protected-mode IDT
  86040. Return: ???
  86041. Note:    called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
  86042. SeeAlso: AX=4300h
  86043. ----------6847-------------------------------
  86044. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  86045.     AH = 47h
  86046.     ES:SI -> string
  86047. Notes:    output a string (to inform a debugger of some events)
  86048.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  86049. SeeAlso: INT 41/AX=0012h
  86050. --------N-68FA-------------------------------
  86051. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  86052.     AH = FAh
  86053.     AL bit 0 = new state (0 enable, 1 disable)
  86054. SeeAlso: AH=FDh,INT 68"Novell"
  86055. --------N-68FB-------------------------------
  86056. INT 68 - APPC/PC - CONVERT
  86057.     AH = FBh
  86058.     DS:DX -> control block (see #2147)
  86059. Return: control block updated
  86060.  
  86061. Format of APPC/PC "CONVERT" control block:
  86062. Offset    Size    Description    (Table 2147)
  86063.  00h 12 BYTEs    reserved
  86064.  0Ch    WORD    1A00h (verb "CONVERT")
  86065.  0Eh  6 BYTEs    00h
  86066.  14h    DWORD    (big-endian) return code
  86067.  18h    BYTE    conversion
  86068.         00h ASCII to EBCDIC
  86069.         01h EBCDIC to ASCII
  86070.  19h    BYTE    character set
  86071.         00h AE
  86072.         01h A
  86073.         02h G
  86074.  1Ah    WORD    length of string to convert
  86075.  1Ch    DWORD    pointer to source
  86076.  20h    DWORD    pointer to target
  86077. --------N-68FC-------------------------------
  86078. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  86079.     AH = FCh
  86080.     AL = new state
  86081.         00h disable tracing
  86082.         01h enable tracing
  86083.         DX = number of bytes to keep (0=all)
  86084. SeeAlso: AH=FDh,AH=FEh
  86085. --------N-68FD-------------------------------
  86086. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  86087.     AH = FDh
  86088.     AL = new tracing state (00h disabled, 01h enabled)
  86089. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  86090. --------N-68FE-------------------------------
  86091. INT 68 - APPC/PC - SET TRACE DESTINATION
  86092.     AH = FEh
  86093.     AL = trace destinations (see #2148)
  86094.     DS:DX -> trace stats record if AL bit 0 set (see #2149)
  86095. SeeAlso: AH=FCh,AH=FDh
  86096.  
  86097. Bitfields for trace destinations:
  86098. Bit(s)    Description    (Table 2148)
  86099.  0    storage (DS:DX -> trace stats record)
  86100.  1    display
  86101.  2    file (trace written to file OUTPUT.PC)
  86102.  3    printer
  86103.  
  86104. Format of APPC/PC Trace Statistics Record:
  86105. Offset    Size    Description    (Table 2149)
  86106.  00h    DWORD    pointer to storage trace buffer
  86107.  04h    WORD    max number of 80-byte records in trace
  86108.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  86109.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  86110.  0Ch    DWORD    reserved
  86111. Note:    do not move record while trace is active
  86112. --------N-68FF-------------------------------
  86113. INT 68 - APPC/PC - SET PASSTHROUGH
  86114.     AH = FFh
  86115.     DS:DX -> passthrough exit routine
  86116. SeeAlso: AH=07h,INT 68"Novell"
  86117. --------b-69---------------------------------
  86118. INT 69 - Zenith AT BIOS - ???
  86119. Note:    called by INT 09 handler
  86120. --------h-69---------------------------------
  86121. INT 69 - Hewlett Packard - EXTENDED BIOS - KEYBOARD OBF SERVICE ROUTINE
  86122. SeeAlso: INT 09"IRQ0",INT 68"Hewlett Packard",INT 6A"Hewlett Packard"
  86123. --------N-690100-----------------------------
  86124. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  86125.     AX = 0100h
  86126. Return: AL = FFh if present
  86127. SeeAlso: AX=010Fh
  86128. --------N-690101-----------------------------
  86129. INT 69 - DECnet DOS CTERM - SEND BYTE
  86130.     AX = 0101h
  86131.     BL = character
  86132.     DX = session handle
  86133. Return: AH >= 80h on error
  86134. SeeAlso: AX=0102h
  86135. --------N-690102-----------------------------
  86136. INT 69 - DECnet DOS CTERM - READ BYTE
  86137.     AX = 0102h
  86138.     DX = session handle
  86139. Return: AH >= 80h on error
  86140.     AH < 80h if successful
  86141.         AL = character
  86142. SeeAlso: AX=0101h
  86143. --------N-690103-----------------------------
  86144. INT 69 - DECnet DOS CTERM - STATUS
  86145.     AX = 0103h
  86146.     DX = session handle
  86147. Return: AH status flags (see #2150)
  86148.     AL = reason code if DECnet error (see #2151)
  86149. SeeAlso: AX=0104h
  86150.  
  86151. Bitfields for DECnet DOS CTERM status flags:
  86152. Bit(s)    Description    (Table 2150)
  86153.  7    session has been aborted
  86154.  6    DECnet error
  86155.  1    trace data available
  86156.  0    receive data available
  86157.  
  86158. (Table 2151)
  86159. Values for reason code:
  86160.  00h    normal disconnect
  86161.  01h    unknown message from host
  86162.  02h    protocol violation from host
  86163.  03h    could not process the initiate message
  86164.  04h    error receiving message from host
  86165.  05h    error sending message to host
  86166.  06h    error checking for message from host
  86167.  07h    remote system does not support CTERM
  86168.  08h    remote system does not support correct protocol version
  86169.  09h    did not receive BIND message from host
  86170.  0Ah    could not send BIND message to host
  86171.  0Bh    no more sessions available
  86172.  0Ch    session does not exist
  86173.  0Dh    not enough memory to complete operation
  86174.  0Eh    connection has broken
  86175. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  86176. --------N-690104-----------------------------
  86177. INT 69 - DECnet DOS CTERM - DECnet STATUS
  86178.     AX = 0104h
  86179.     DX = session handle
  86180. Return: AX = reason code (see #2151)
  86181. Note:    use this call when AX=0103h returns a DECnet error
  86182. SeeAlso: AX=0103h
  86183. --------N-690105-----------------------------
  86184. INT 69 - DECnet DOS CTERM - OPEN SESSION
  86185.     AX = 0105h
  86186.     DS:BX -> ASCIZ node name
  86187.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  86188. Return: AX <= 0 on error
  86189.     AX > 0 session handle
  86190. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  86191. --------N-690106-----------------------------
  86192. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  86193.     AX = 0106h
  86194.     DX = session handle
  86195. Return: AH = status
  86196.         00h good close
  86197.         other error code (see #2151)
  86198. SeeAlso: AX=0103h,AX=0105h
  86199. --------N-69010A-----------------------------
  86200. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  86201.     AX = 010Ah
  86202. Return: AX = length of session control block in bytes
  86203. SeeAlso: AX=0105h
  86204. --------N-69010B-----------------------------
  86205. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  86206.     AX = 010Bh
  86207.     DX = session handle
  86208. Return: AX > 0    DECnet socket for the session
  86209.     AX = 0    no match for handle
  86210. --------N-69010F-----------------------------
  86211. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  86212.     AX = 010Fh
  86213. Return: AH = status
  86214.         00h successful uninstall
  86215.         other error code (see #2151)
  86216. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  86217. SeeAlso: AX=0100h
  86218. Index:    uninstall;DECnet DOS CTERM
  86219. --------N-690A-------------------------------
  86220. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  86221.     AH = 0Ah
  86222.     AL = function number (see #2152)
  86223.     ES:BX -> Datalink Communication Block
  86224. Return: AX = status (see #2153)
  86225. SeeAlso: INT 6D"DECnet"
  86226.  
  86227. (Table 2152)
  86228. Values for DECnet DOS Data Link Layer function:
  86229.  00h    initialize
  86230.  01h    open portal
  86231.  02h    close portal
  86232.  03h    enable multicast address
  86233.  04h    disable multicast address
  86234.  05h    transmit
  86235.  06h    request transmit buffer
  86236.  07h    deallocate transmit buffer
  86237.  08h    read channel status
  86238.  09h    read datalink portal list
  86239.  0Ah    read information about a datalink portal
  86240.  0Bh    read and/or clear counters
  86241.  0Ch    request to boot from a network server
  86242.  0Dh    enable Ethernet channel
  86243.  0Eh    disable Ethernet channel
  86244.  0Fh    start MOP/send a System ID message
  86245.  10h    stop MOP
  86246.  11h    get DECPARM
  86247.  12h    set DECPARM
  86248.  13h    external loopback
  86249.  
  86250. (Table 2153)
  86251. Values for DECnet DOS Data Link Layer status:
  86252.  00h    successful
  86253.  01h    hardware failed to initialize
  86254.  02h    channel state was not off (must be off to execute that command)
  86255.  03h    channel state is off (must be on to execute that command)
  86256.  04h    address not set
  86257.  05h    hardware missing
  86258.  06h    buffer too small
  86259.  07h    no more buffers available
  86260.  08h    no more resources available
  86261.  09h    promiscuous receiver active
  86262.  0Ah    non exclusive
  86263.  0Bh    unrecognized portal
  86264.  0Ch    protocol type in use
  86265.  0Dh    not a valid Multicast address
  86266.  0Eh    outstanding calls
  86267.  0Fh    hardware doesn't support receiving bad frames
  86268.  10h    none outstanding
  86269.  11h    no events
  86270.  12h    broken
  86271.  13h    buffer quota exceeded
  86272.  14h    already initialized
  86273.  15h    loopback failure
  86274. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  86275.  
  86276. Format of Datalink Communication Block:
  86277. Offset    Size    Description    (Table 2154)
  86278.  00h    WORD    portal ID
  86279.  02h  6 BYTEs    source address
  86280.  08h  6 BYTEs    destination address
  86281.  0Eh    DWORD    buffer pointer
  86282.  12h    WORD    buffer length
  86283.  14h    WORD    operation
  86284.  16h    BYTE    pad flag (used on open)
  86285.         00h no pad
  86286.         01h pad
  86287.  17h    BYTE    mode flag (used on open)
  86288.         00h 802.3
  86289.         01h Ethernet
  86290.         02h promiscuous
  86291.  18h    DWORD    line status change function
  86292.  1Ch    DWORD    received data function
  86293.  20h    DWORD    transmitted data function
  86294.  24h    BYTE    maximum outstanding transmits/receives
  86295.  25h  2 BYTEs    protocol type
  86296.  27h    WORD    buffers lost
  86297. --------N-694001-----------------------------
  86298. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86299.     AX = 4001h
  86300. Return: CF clear
  86301.     AX = 0000h
  86302.     ES:SI -> ???
  86303. Range:    INT 60 to INT 7F, selected by configuration
  86304. Note:    the signature "SYSV" immediately before the interrupt handler serves
  86305.       as the installation check
  86306. SeeAlso: AX=4002h
  86307. Index:    installation check;10NET SYSSVC
  86308. --------N-694002-----------------------------
  86309. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86310.     AX = 4002h
  86311.     ???
  86312. Return: ???
  86313. Range:    INT 60 to INT 7F, selected by configuration
  86314. Note:    the signature "SYSV" immediately before the interrupt handler serves
  86315.       as the installation check
  86316. --------N-694101-----------------------------
  86317. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86318.     AX = 4101h
  86319. Return: CF clear
  86320.     ES:SI -> ???
  86321. Range:    INT 60 to INT 7F, selected by configuration
  86322. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  86323. --------N-694102-----------------------------
  86324. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86325.     AX = 4102h
  86326.     ???
  86327. Return: ???
  86328. --------N-694103-----------------------------
  86329. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86330.     AX = 4103h
  86331.     ???
  86332. Return: ???
  86333. --------N-694104-----------------------------
  86334. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86335.     AX = 4104h
  86336.     ???
  86337. Return: ???
  86338. --------N-6942-------------------------------
  86339. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86340.     AH = 42h
  86341.     AL = function (01h-14h)
  86342.     ???
  86343. Return: ???
  86344. Range:    INT 60 to INT 7F, selected by configuration
  86345. --------N-6943-------------------------------
  86346. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86347.     AH = 43h
  86348.     AL = function (01h-05h)
  86349.     ???
  86350. Return: ???
  86351. --------N-6944-------------------------------
  86352. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  86353.     AH = 44h
  86354.     AL = function (01h-03h)
  86355.     ???
  86356. Return: ???
  86357. Range:    INT 60 to INT 7F, selected by configuration
  86358. --------N-6949-------------------------------
  86359. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  86360.     AH = 49h
  86361. Note:    due to a fencepost error, this function branches to hyperspace
  86362. SeeAlso: AX=4001h,AH=FFh
  86363. --------G-696996-----------------------------
  86364. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  86365.     AX = 6996h
  86366.     DS:DX -> interrupt handler or 0000h:0000h to disable
  86367. Return: AX = 9669h
  86368. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  86369.       a program to provide hardware interrupt handlers even while being
  86370.       debugged with a debugger that swaps interrupt vectors during
  86371.       debugging.
  86372. Note:    the interrupt vector which is to be reflected is set at installation
  86373.       time and cannot be changed
  86374. --------N-69FF-------------------------------
  86375. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  86376.     AH = FFh
  86377. Return: never???
  86378. Desc:    displays "System Error" message and register dump, then halts system
  86379. Range:    INT 60 to INT 7F, selected by configuration
  86380. Notes:    the signature "SYSV" immediately before the interrupt handler serves
  86381.       as the installation check
  86382. SeeAlso: AX=4001h,AH=49h
  86383. --------U-6A---------------------------------
  86384. INT 6A - OPTHELP.COM
  86385. Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
  86386.       assembler
  86387. Range:    INT 60h to INT 7Fh, selected by configuration
  86388. --------N-6A---------------------------------
  86389. INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM
  86390. Note:    the installation check consists of testing for a signature area
  86391.       immediately preceding the interrupt handler
  86392. SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
  86393. Index:    installation check;DECnet DOS Local Area Transport
  86394.  
  86395. Format of DECnet DOS signature area:
  86396. Offset    Size    Description    (Table 2155)
  86397.  -5    BYTE    major version number
  86398.  -4    BYTE    minor version number
  86399.  -3   3 BYTEs    signature (ASCII "LAT")
  86400. --------h-6A---------------------------------
  86401. INT 6A - Hewlett Packard - EXTENDED BIOS - HARDWARE INTERRUPT
  86402. SeeAlso: INT 0A"IRQ0",INT 69"Hewlett Packard",INT 6B"Hewlett Packard"
  86403. --------N-6A0000-----------------------------
  86404. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
  86405.     AX = 0000h
  86406. Return: AX = 4357h ('CW')
  86407. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  86408. Note:    an alternate installation check is to test for the ASCIZ signature
  86409.       "FTC Super-TCP" three bytes past the interrupt handler
  86410. SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
  86411. SeeAlso: INT 61"PCTCP",INT 62/AH=00h"ETHDEV"
  86412. --------N-6A0001-----------------------------
  86413. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  86414.     AX = 0001h
  86415.     BH = function number
  86416.         01h ???
  86417.         DS:SI -> ??? 24-byte record1 (see #2157)
  86418.         ES:DI -> buffer containing ???
  86419.         02h ???
  86420.         DS:SI -> ??? 18-byte record2 (see #2158)
  86421.         ES:DI -> buffer containing ???
  86422.         04h ???
  86423.         BL = subfunction
  86424.             01h
  86425.             DS:SI -> ??? 28-byte record3 (see #2159)
  86426.             ES:DI -> buffer containing ???
  86427.             02h
  86428.             DS:SI -> ??? 28-byte record3 (see #2159)
  86429.             ES:DI -> buffer containing ???
  86430.             03h
  86431.             DS:SI -> ??? 28-byte record3 (see #2159)
  86432.             else Return: AX = 0005h
  86433.         05h ???
  86434.         DS:SI -> ??? 20-byte record4 (see #2160)
  86435.         ES:DI -> buffer containing ???
  86436.         06h ???
  86437.         BL = subfunction
  86438.             01h
  86439.             DS:SI -> ??? 40-byte record5 (see #2161)
  86440.             02h
  86441.             DS:SI -> ??? 20-byte record6 (see #2162)
  86442.             ES:DI -> ???
  86443.             03h
  86444.             DS:SI -> ??? 20-byte record6 (see #2162)
  86445.             04h
  86446.             DS:SI -> ??? 46-byte record7 (see #2163)
  86447.             else Return: AX = 0005h
  86448.         11h ???
  86449.         DS:SI -> ??? 28-byte record8 (see #2164)
  86450.         ES:DI -> ???
  86451. Return: AX = function status (see #2156)
  86452. SeeAlso: AX=0000h
  86453.  
  86454. (Table 2156)
  86455. Values for Super-TCP function status:
  86456.  0000h    successful
  86457.  0005h    unsupported function
  86458.  000Ah    out of memory
  86459.  
  86460. Format of record1:
  86461. Offset    Size    Description    (Table 2157)
  86462.  00h  4 BYTEs    ???
  86463.  04h    WORD    size of ES:DI buffer
  86464.  06h 18 BYTEs    ???
  86465.  
  86466. Format of record2:
  86467. Offset    Size    Description    (Table 2158)
  86468.  00h  4 BYTEs    ???
  86469.  04h    WORD    size of ES:DI buffer
  86470.  06h 12 BYTEs    ???
  86471.  
  86472. Format of record3:
  86473. Offset    Size    Description    (Table 2159)
  86474.  00h  2 BYTEs    ???
  86475.  02h    WORD    ???
  86476.  04h    WORD    size of ES:DI buffer
  86477.  06h    WORD    ???
  86478.  08h    WORD    operation number (for function 0401h)
  86479.  0Ah    DWORD    -> ???
  86480.  0Eh    WORD    (return) ???
  86481.  10h 12 BYTEs    ???
  86482.  
  86483. Format of record4:
  86484. Offset    Size    Description    (Table 2160)
  86485.  00h  4 BYTEs    ???
  86486.  04h    WORD    size of ES:DI buffer
  86487.  06h 14 BYTEs    ???
  86488.  
  86489. Format of record5:
  86490. Offset    Size    Description    (Table 2161)
  86491.  00h    BYTE    operation??? (00h-07h)
  86492.  01h    BYTE    ???
  86493.  02h    WORD    (return) ???
  86494.  04h    DWORD    -> ???
  86495.  08h  4 BYTEs    ???
  86496.  0Ch    DWORD    -> ??? or 0000h:0000h
  86497.  10h 16 BYTEs    ???
  86498.  20h    DWORD    ???
  86499.  24h  4 BYTEs    ???
  86500.  
  86501. Format of record6:
  86502. Offset    Size    Description    (Table 2162)
  86503.  00h  4 BYTEs    ???
  86504.  04h    WORD    size of ES:DI buffer
  86505.  06h 14 BYTEs    ???
  86506.  
  86507. Format of record7:
  86508. Offset    Size    Description    (Table 2163)
  86509.  00h    WORD    ???
  86510.  02h    WORD    ???
  86511.  04h    WORD    ???
  86512.  06h 40 BYTEs    ???
  86513.  
  86514. Format of record8:
  86515. Offset    Size    Description    (Table 2164)
  86516.  00h  4 BYTEs    ???
  86517.  04h    WORD    size of ES:DI buffer
  86518.  06h  6 BYTEs    ???
  86519.  0Ch    WORD    (return) ???
  86520.  0Eh    WORD    operation??? (01h-03h)
  86521.  10h 12 BYTEs    ???
  86522. --------N-6A0002-----------------------------
  86523. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
  86524.     AX = 0002h
  86525.     BX = ??? (zero/nonzero)
  86526.     CX = ??? identifier (see AX=0004h)
  86527.     DS:SI -> 40-byte buffer for ??? or 0000h:0000h
  86528.     ES:DI -> buffer for ??? or 0000h:0000h
  86529. Return: AX = 0000h (successful) ???
  86530.     BL = ???
  86531.     BH = ???
  86532.     CX = ???
  86533.     DX = ???
  86534. --------N-6A0003-----------------------------
  86535. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
  86536.     AX = 0003h
  86537. Return: CX:DX -> data area (see #2165)
  86538.  
  86539. Format of Super-TCP data area:
  86540. Offset    Size    Description    (Table 2165)
  86541.  00h  2 BYTEs    ???
  86542.  02h    DWORD    original INT 6A vector
  86543.  06h  2 BYTEs    ???
  86544.  08h 96 BYTEs    array of 16 6-byte ???
  86545.  68h    WORD    number of elements of above array in use
  86546.  6Ah    WORD    ???
  86547.     ???
  86548. --------N-6A0004-----------------------------
  86549. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
  86550.     AX = 0004h
  86551.     CX = size in ???
  86552. Return: AX = 0000h (successful)
  86553.     CX = DX = ???
  86554. SeeAlso: AX=0005h,AX=000Fh
  86555. --------N-6A0005-----------------------------
  86556. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
  86557.     AX = 0005h
  86558.     CX = ??? identifier (from AX=0004h)
  86559. Return: AX = status (0000h successful, FFFFh failed)
  86560. SeeAlso: AX=0004h,AX=000Fh
  86561. --------N-6A000F-----------------------------
  86562. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
  86563.     AX = 000Fh
  86564. Return: AX = 0000h (successful)
  86565. SeeAlso: AX=0000h,AX=0004h,AX=0005h
  86566. --------N-6A0010-----------------------------
  86567. INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
  86568.     AX = 0010h
  86569. Return: AX = status
  86570.         0000h successful
  86571.         0002h can't uninstall, interrupt vector hooked by another program
  86572. Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
  86573. Note:    if AX is not one of the values listed here on entry, Super-TCP
  86574.       returns AX=FFFEh
  86575. SeeAlso: AX=0000h
  86576. --------N-6A01--DHFF-------------------------
  86577. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
  86578.     AH = 01h
  86579.     DH = FFh
  86580.     AL = character
  86581.     DL = handle
  86582. Return: AH >= 80h on error
  86583. SeeAlso: AH=02h
  86584. --------N-6A02--DHFF-------------------------
  86585. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
  86586.     AH = 02h
  86587.     DH = FFh
  86588.     DL = handle
  86589. Return: AH < 80h if successful
  86590.         AL = character
  86591.     AH >= 80h on error
  86592. SeeAlso: AH=01h
  86593. --------N-6A03--DHFF-------------------------
  86594. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
  86595.     AH = 03h
  86596.     DH = FFh
  86597.     DL = handle
  86598. Return: AH = status flags (see #2166)
  86599.  
  86600. Bitfields for DECnet DOS LAT status flags:
  86601. Bit(s)    Description    (Table 2166)
  86602.  5    transmit buffer empty
  86603.  3    session in start state
  86604.  2    session not active
  86605.  1    unable to queue transmit data
  86606.  0    receive data available
  86607. --------N-6AD0--DHFF-------------------------
  86608. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
  86609.     AH = D0h
  86610.     DH = FFh
  86611.     AL = password flag
  86612.         FFh no password
  86613.         0Fh password at ES:DI
  86614.     ES:BX -> LAT session control block (see #2167)
  86615.     ES:DI -> 16-byte blank-padded password (optional)
  86616. Return: AH = 00h success
  86617.         DL = handle
  86618. SeeAlso: AX=D000h
  86619.  
  86620. Format of LAT Session Control Block:
  86621. Offset    Size    Description    (Table 2167)
  86622.  00h 18 BYTEs    service name
  86623.  12h 18 BYTEs    node name (future use)
  86624.  24h 18 BYTEs    port name (future use)
  86625.  36h    DWORD    -> session stopped post routine
  86626.  3Ah    DWORD    -> service table overflow post routine
  86627.  3Eh    DWORD    -> transmit post routine
  86628.  42h    DWORD    -> receive post routine
  86629.  46h    WORD    session status
  86630.         04h circuit failure
  86631.         08h stop slot received
  86632. ---LAT v???---
  86633.  48h    WORD    slot state (LAT driver use)
  86634.  4Ah    WORD    local credits (LAT driver use)
  86635.  4Ch    DWORD    -> VCB (LAT driver use)
  86636.  50h    WORD    backward slot (LAT driver use)
  86637.  52h    WORD    forward slot (LAT driver use)
  86638.  54h    WORD    remote slot ID (LAT driver use)
  86639.  56h    WORD    local slot ID (LAT driver use)
  86640.  58h    WORD    slot byte count (LAT driver use)
  86641.  5Ah    BYTE    remote credits (LAT driver use)
  86642.  5Bh 255 BYTEs    transmitted data slot
  86643. 15Ah    BYTE    number of receive data slots (4 recommended)
  86644. 15Bh    BYTE    number of occupied slots
  86645. 15Ch    BYTE    index of next receive slot to use
  86646. 15Dh    BYTE    index of current receive slot
  86647. 15Eh    WORD    pointer to first received character
  86648. 160h  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  86649.      259N BYTEs    buffers
  86650. Note:    set post routines to 0000h:0000h if polled operation will be used
  86651. ---LAT v4.1.17---
  86652.  48h    WORD    session state (LAT driver use)
  86653.  4Ah    BYTE    local credits (LAT driver use)
  86654.  4Bh    DWORD    -> VCB (LAT driver use)
  86655.  4Fh    WORD    backward slot (LAT driver use)
  86656.  51h    WORD    forward slot (LAT driver use)
  86657.  53h    BYTE    remote slot ID (LAT driver use)
  86658.  54h    BYTE    local slot ID (LAT driver use)
  86659.  55h    BYTE    slot byte count (LAT driver use)
  86660.  56h    BYTE    remote credits (LAT driver use)
  86661.  57h 255 BYTEs    transmitted data slot
  86662. 156h    BYTE    number of receive data slots (4 recommended)
  86663. 157h    BYTE    number of occupied slots
  86664. 158h    BYTE    index of next receive slot to use
  86665. 159h    BYTE    index of current receive slot
  86666. 15Ah    WORD    pointer to first received character
  86667. 15Ch  N WORDs    pointers to receive slots (buffers); each is 259 bytes
  86668.      259N BYTEs    buffers
  86669. Note:    set post routines to 0000h:0000h if polled operation will be used
  86670. --------N-6AD000DHFF-------------------------
  86671. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
  86672.     AX = D000h
  86673.     DH = FFh
  86674.     DL = handle
  86675. Return: AX = status (see #2168)
  86676. SeeAlso: AH=D0h
  86677.  
  86678. (Table 2168)
  86679. Values for DECnet DOS LAT function status:
  86680.  0000h    successful
  86681.  0001h    no such session
  86682.  0002h    session not running, try again later
  86683. --------N-6AD100DHFF-------------------------
  86684. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
  86685.     AX = D100h
  86686.     DH = FFh
  86687.     DL = handle
  86688. Return: AX = 0000h if successful
  86689.     AH bit 7 set if unable to send break
  86690. --------N-6AD300DHFF-------------------------
  86691. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
  86692.     AX = D300h
  86693.     DH = FFh
  86694. SeeAlso: AX=D400h
  86695. --------N-6AD400DHFF-------------------------
  86696. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
  86697.     AX = D400h
  86698.     DH = FFh
  86699.     CX = buffer size
  86700.     ES:BX -> buffer for LAT counters
  86701. Return: AX = status
  86702.         0000h counters copied into buffer
  86703.         FFFFh buffer too small
  86704. SeeAlso: AX=D300h
  86705. --------N-6AD500DHFF-------------------------
  86706. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
  86707.     AX = D500h
  86708.     DH = FFh
  86709.     ES:BX -> 17-byte buffer for name
  86710. Return: AH = 00h if successful
  86711.        ES:BX buffer filled
  86712.     AX = FFFFh if end of table or no name available
  86713. Notes:    use this function to get the names of the hosts on the network
  86714.     successive calls are necessary to get all names
  86715. SeeAlso: AX=D600h
  86716. --------N-6AD600DHFF-------------------------
  86717. INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
  86718.     AX = D600h
  86719.     DH = FFh
  86720. Return: AX = number of service table entries
  86721.     BX = status
  86722.         0000h service table has not overflowed
  86723.         FFFFh service table has overflowed
  86724. SeeAlso: AX=D500h
  86725. --------N-6B---------------------------------
  86726. INT 6B - DECnet DOS - PORT DRIVER
  86727. Note:    the installation check consists of testing for a signature area
  86728.       (see #2169) immediately preceding the interrupt handler
  86729. SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
  86730. Index:    installation check;DECnet DOS Port Driver
  86731.  
  86732. Format of DECnet DOS signature area:
  86733. Offset    Size    Description    (Table 2169)
  86734.  -5    BYTE    major version number
  86735.  -4    BYTE    minor version number
  86736.  -3   3 BYTEs    signature (ASCII "PDV")
  86737. --------v-6B---------------------------------
  86738. INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
  86739. SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
  86740. --------h-6B---------------------------------
  86741. INT 6B - Hewlett Packard - EXTENDED BIOS - HARDWARE INTERRUPT
  86742. SeeAlso: INT 0B"IRQ0",INT 6A"Hewlett Packard",INT 6C"Hewlett Packard"
  86743. --------S-6B0000-----------------------------
  86744. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
  86745.     AX = 0000h
  86746.     CX = length
  86747.     ES:BX -> buffer
  86748. Return: CX = number of bytes written
  86749. Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
  86750.       from Network Products Corp, who call it NCSI) which runs on
  86751.       workstations; NACS is the NetWare Asynchronous Communications
  86752.       Services module which runs on servers
  86753. Notes:    the installation check consists of testing for the signature string
  86754.       "NCSI" three bytes past the interrupt handler; see also AH=02h.
  86755.       As of version 3.0, Novell's NASI can be distinguished from NPC's
  86756.       NCSI by the presence of an 'A' immediately following the signature
  86757.     this function is also supported by TelAPI, NPC NCSI, and Connection
  86758.       Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
  86759.       connection ID
  86760.     Connection Manager returns CF set/AL=FFh if called while an INT 6B
  86761.       call is already in progress
  86762. SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
  86763. --------S-6B0100-----------------------------
  86764. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
  86765.     AX = 0100h
  86766.     CX = length of buffer
  86767.     ES:BX -> buffer
  86768. Return: CX = number of bytes read
  86769. Note:    also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
  86770.       AL specify a connection ID
  86771. SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
  86772. --------S-6B02-------------------------------
  86773. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
  86774.     AH = 02h
  86775.     AL nonzero
  86776. Return: AL = 00h if present and OK
  86777. Note:    this function is also supported by TelAPI and NPC NCSI
  86778. SeeAlso: AX=0700h
  86779. --------S-6B0600-----------------------------
  86780. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
  86781.     AX = 0600h
  86782.     CX = command
  86783.         02h send break
  86784.         04h disconnect
  86785.         06h hold
  86786. Return: CF clear if successful
  86787.         AL = 00h
  86788.     CF set on error
  86789.         AX < 0
  86790. Note:    this function is also supported by TelAPI and NPC NCSI
  86791. --------S-6B0700-----------------------------
  86792. INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
  86793.     AX = 0700h
  86794. Return: CH <> 00h if connection active
  86795. Notes:    this function is also supported by TelAPI and NPC NCSI
  86796.     Novell TelAPI returns CX=FF01h and CF clear
  86797. SeeAlso: AH=02h,AH=10h
  86798. --------N-6B08-------------------------------
  86799. INT 6B - TelAPI - ???
  86800.     AH = 08h
  86801. Return: CF clear
  86802.         AL = 00h
  86803.         CX = 0000h
  86804. Note:    this function also clears ??? flag
  86805. SeeAlso: INT 14/AX=FF00h
  86806. --------S-6B10-------------------------------
  86807. INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
  86808.     AH = 10h
  86809.     AL = connection ID (Novell TELAPI.EXE)
  86810.     CX = ???
  86811. Return: CF clear if successful
  86812.         CL = ???
  86813.         CH = ???
  86814.     CF set on error
  86815.     ???
  86816. Notes:    this function is also supported by TelAPI
  86817.     when shelled out to an external protocol from Novell NASI, the circuit
  86818.       whose status indicates that it is connected is the currently active
  86819.       circuit
  86820. SeeAlso: AX=0700h,AH=12h,AH=1Fh
  86821. --------S-6B11--DX0001-----------------------
  86822. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
  86823.     AH = 11h
  86824.     DX = 0001h
  86825.     AL = 00h
  86826.     ES:BX -> service name string (8 characters, blank-padded)
  86827. Return: CF clear if successful
  86828.         AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
  86829.         CL = ??? (01h for Novell TELAPI.EXE)
  86830.         CH = ??? (01h for Novell TELAPI.EXE)
  86831.     CF set on error
  86832.         ???
  86833. Note:    this function is also supported by TelAPI
  86834. SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
  86835. --------S-6B12-------------------------------
  86836. INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
  86837.     AH = 12h
  86838.     AL = virtual circuit number
  86839.     CL = ???
  86840.     ES:BX -> ???
  86841. Return: ???
  86842. Note:    this function is also supported by TelAPI
  86843. SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
  86844. --------S-6B13-------------------------------
  86845. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
  86846.     AH = 13h
  86847.     AL = virtual circuit number
  86848.     CL = direction (00h get, nonzero set)
  86849.     ES:BX -> buffer for/containing service name
  86850. Return: ???
  86851. Note:    this function is also supported by TelAPI
  86852. SeeAlso: AH=14h,AH=15h
  86853. --------S-6B14-------------------------------
  86854. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
  86855.     AH = 14h
  86856.     AL = virtual circuit number
  86857.     ES:BX -> buffer for/containing service address
  86858. Return: ???
  86859. Note:    this function is also supported by TelAPI, which only supports
  86860.       retrieving the address
  86861. SeeAlso: AH=13h,AH=15h,AH=21h
  86862. --------S-6B15-------------------------------
  86863. INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
  86864.     AH = 15h
  86865.     AL = virtual circuit number
  86866.     CL = direction (00h get, nonzero set)
  86867.     ES:BX -> buffer for/containing virtual circuit config (see #2170)
  86868. Return: ES:BX buffer filled
  86869. Note:    this function is also supported by TelAPI
  86870. SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
  86871.  
  86872. Format of virtual circuit configuration:
  86873. Offset    Size    Description    (Table 2170)
  86874.  00h    WORD    buffer length
  86875.  02h    WORD    port ID
  86876.  04h    WORD    receive rate
  86877.  06h    WORD    receive word length
  86878.  08h    WORD    receive stop bits
  86879.  0Ah    WORD    receive parity
  86880.  0Ch    WORD    transmit rate
  86881.  0Eh    WORD    transmit word length
  86882.  10h    WORD    transmit stop bits
  86883.  12h    WORD    transmit parity
  86884.  14h    WORD    DTR
  86885.  16h    WORD    RTS
  86886. --------S-6B16-------------------------------
  86887. INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
  86888.     AH = 16h
  86889.     AL = virtual circuit number
  86890.     CL = ??? switch (00h, ???)
  86891. Return: CF clear if successful
  86892.         AL = virtual circuit number
  86893.     CF set on error
  86894.         ???
  86895. Note:    this function is also supported by TelAPI, which always returns CF
  86896.       clear and AL=00h
  86897. SeeAlso: AH=11h,AH=12h,AH=17h
  86898. --------S-6B17-------------------------------
  86899. INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
  86900.     AH = 17h
  86901.     AL = virtual circuit number
  86902. Return: CF clear if successful
  86903.     CF set on error
  86904.     ???
  86905. Note:    this function is also supported by TelAPI, which always returns CF
  86906.       clear and AL=00h
  86907. SeeAlso: AH=11h,AH=16h
  86908. --------S-6B18-------------------------------
  86909. INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
  86910.     AH = 18h
  86911.     AL = virtual circuit number
  86912.     CX = number of characters to send
  86913.     ES:BX -> buffer containing characters to be sent
  86914. Return: CF clear if successful
  86915.     CF set on error
  86916.     ???
  86917. Note:    this function is also supported by TelAPI, which always returns CF
  86918.       clear and AL=30h
  86919. SeeAlso: AX=0000h,AH=12h,AH=19h
  86920. --------S-6B19-------------------------------
  86921. INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
  86922.     AH = 19h
  86923.     AL = virtual circuit number
  86924.     CX = number of characters to read
  86925.     ES:BX -> buffer for received characters
  86926. Return: CX = 0000h if failed
  86927.     CX = nonzero (possibly number of characters received) if successful
  86928. Note:    this function is also supported by TelAPI
  86929. SeeAlso: AX=0100h,AH=12h,AH=18h
  86930. --------S-6B1A-------------------------------
  86931. INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
  86932.     AH = 1Ah
  86933.     ???
  86934. Return: ???
  86935. SeeAlso: AH=12h,AH=1Bh
  86936. --------S-6B1B-------------------------------
  86937. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
  86938.     AH = 1Bh
  86939.     ???
  86940. Return: ???
  86941. SeeAlso: AH=12h,AH=1Ah
  86942. --------S-6B1C-------------------------------
  86943. INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
  86944.     AH = 1Ch
  86945.     AL = circuit number
  86946. Return: nothing
  86947. SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
  86948. --------S-6B1D-------------------------------
  86949. INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
  86950.     AH = 1Dh
  86951.     ???
  86952. Return: ???
  86953. SeeAlso: AH=1Ch,AH=1Eh
  86954. --------S-6B1E-------------------------------
  86955. INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
  86956.     AH = 1Eh
  86957.     ???
  86958. Return: ???
  86959. SeeAlso: AH=1Ch,AH=1Dh
  86960. --------S-6B1F-------------------------------
  86961. INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
  86962.     AH = 1Fh
  86963.     ???
  86964. Return: ???
  86965. SeeAlso: AH=10h,AH=12h
  86966. --------S-6B20-------------------------------
  86967. INT 6B - Connection Manager CLIENT.EXE - ???
  86968.     AH = 20h
  86969.     ???
  86970. Return: ???
  86971. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  86972.       serial ports over an IPX or NetBIOS-based network
  86973. Note:    CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
  86974. --------S-6B21-------------------------------
  86975. INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
  86976.     AH = 21h
  86977.     AL = virtual circuit number
  86978.     CL = ??? (00h or 01h)
  86979.     ES:BX -> buffer for service name structure (see #2171)
  86980. Return: CF clear if successful
  86981.         ES:BX buffer filled
  86982.     CF set on error
  86983. Notes:    a program should call this function after allocating a virtual circuit
  86984.       and check that the general name matches the requested service
  86985.     prior to version 3.0, Novell's NASI returned the first available port;
  86986.       v3.0+ returns the first port found--check the returned status to
  86987.       determine whether the port is available
  86988. SeeAlso: AH=14h"NCSI"
  86989.  
  86990. Format of NCSI service name structure:
  86991. Offset    Size    Description    (Table 2171)
  86992.  00h    WORD    buffer length
  86993.  02h  8 BYTEs    service name
  86994.  0Ah  8 BYTEs    general name
  86995.  12h  8 BYTEs    specific name
  86996.  1Ah  4 BYTEs    ???
  86997. ---Novell NASI v3.0+ ---
  86998.  1Eh    BYTE    port number
  86999.  1Fh    BYTE    port status
  87000.         00h idle (available)
  87001.         01h allocated (available)
  87002.         02h connected
  87003.         03h on hold
  87004. ----------6B6B-------------------------------
  87005. INT 6B - Tandy SCHOOLMATE PLUS - API
  87006.     AH = 6Bh
  87007.     AL = E0h to FFh
  87008. Note:    details not yet available
  87009. ----------6C---------------------------------
  87010. INT 6C - system resume vector (CONVERTIBLE)
  87011. ----------6C---------------------------------
  87012. INT 6C - DOS 3.2 Realtime Clock update
  87013. --------N-6C---------------------------------
  87014. INT 6C - DECnet DOS network scheduler
  87015. Notes:    the installation check consists of testing for a signature area
  87016.       immediately preceding the interrupt handler
  87017.     also supported by DEC Pathworks for DOS
  87018. SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
  87019. Index:    installation check;DECnet DOS scheduler
  87020.  
  87021. Format of DECnet DOS signature area:
  87022. Offset    Size    Description    (Table 2172)
  87023.  -5    BYTE    major version number
  87024.  -4    BYTE    minor version number
  87025.  -3   3 BYTEs    signature (ASCII "SCH")
  87026. --------h-6C---------------------------------
  87027. INT 6C - Hewlett Packard - EXTENDED BIOS - HP-HIL CONTROLLER SERVICE ROUTINE
  87028. SeeAlso: INT 0C"IRQ0",INT 6B"Hewlett Packard",INT 6D"Hewlett Packard"
  87029. --------V-6D---------------------------------
  87030. INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
  87031. Desc:    points at the original INT 10 entry point set up by the VGA BIOS
  87032. Note:    used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
  87033. SeeAlso: INT 10
  87034. --------V-6D---------------------------------
  87035. INT 6D - Trident SVGA - VIDEO BIOS HANDLER
  87036. Note:    the BIOS INT 10 handler on various Trident VGA cards consists merely
  87037.       of a call to INT 6D followed by an IRET.
  87038. --------N-6D---------------------------------
  87039. INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
  87040.     AH = function
  87041.     ???
  87042. Return: ???
  87043. Note:    the installation check consists of testing for a signature area
  87044.       immediately preceding the interrupt handler
  87045. SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
  87046. Index:    installation check;DECnet DOS Data Link Layer
  87047.  
  87048. Format of DECnet DOS signature area:
  87049. Offset    Size    Description    (Table 2173)
  87050.  -5    BYTE    major version number
  87051.  -4    BYTE    minor version number
  87052.  -3   3 BYTEs    signature (ASCII "DLL")
  87053. --------h-6D---------------------------------
  87054. INT 6D - Hewlett Packard - EXTENDED BIOS - HARDWARE INTERRUPT
  87055. SeeAlso: INT 0D"IRQ0",INT 6C"Hewlett Packard",INT 6E"Hewlett Packard"
  87056. --------N-6E---------------------------------
  87057. INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
  87058. Notes:    this is the main DECnet DOS access, and is described in Digital manual
  87059.       AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
  87060.     there is a signature/data area immediately prior to the interrupt
  87061.       handler which may be used as an installation check
  87062. Index:    installation check;DECnet DOS
  87063.  
  87064. Format of DECnet DOS signature area:
  87065. Offset    Size    Description    (Table 2174)
  87066.  -5    BYTE    major version number
  87067.  -4    BYTE    minor version number
  87068.  -3   3 BYTEs    signature (ASCII "DNP")
  87069. --------h-6E---------------------------------
  87070. INT 6E - Hewlett Packard - EXTENDED BIOS - HARDWARE INTERRUPT
  87071. SeeAlso: INT 0E"IRQ0",INT 6D"Hewlett Packard",INT 6F/AH=00h"HP HIL Vectras"
  87072. --------N-6F---------------------------------
  87073. INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
  87074.     AX = function
  87075.         0000h enter terminal mode
  87076.         Return: AX = status
  87077.                 0000h no action requested
  87078.                 0001h screen save
  87079.         0001h reset interface and set configuration parameters
  87080.         DX = bitfields
  87081.             bits 2-0: model number
  87082.             bits 4-3: I/O address
  87083.             bits 6-5: DMA channel
  87084.         Return: nothing
  87085.         0002h set display parameters
  87086.         DX = bitfields
  87087.             bits 1-0: OIA mode
  87088.             bits 4-2: monitor support
  87089.         Return: nothing
  87090.         0003h read status
  87091.         Return: AX = status word (see #2175)
  87092.         0004h read cursor position
  87093.         Return: AX = cursor position
  87094.         0005h get character from device buffer
  87095.         DX = cursor position
  87096.         Return: AH = type (00h data, 01h attribute)
  87097.             AL = data or attribute character
  87098.         0006h send character
  87099.         DH = type (00h ASCII, 01h extended code)
  87100.         DL = ASCII character or extended code
  87101.         Return: nothing
  87102.         0007h set timeout
  87103.         DX = timeout in seconds
  87104.         Return: nothing
  87105.         0008h wait for location to be modified
  87106.         DX = cursor position
  87107.         Return: AX = status (0000h modified, nonzero timeout)
  87108.         0009h NOP
  87109.         000Ah restore display
  87110.         Return: nothing
  87111.         000Bh update device buffer
  87112.         Return: AX = cursor positoin
  87113.         000Ch write string to add information area
  87114.         DS:DX -> string
  87115.         Return: nothing
  87116.         000Dh maintenance operations
  87117.         DX = maintenance operation code
  87118.         Return: AX = operation status
  87119.         000Eh get control program version
  87120.         Return: AH = release number (major version)
  87121.             AL = level number (minor version)
  87122.         000Fh get microcode version
  87123.         Return: AH = release number (major version)
  87124.             AL = level number (minor version)
  87125.         0010h save or display graphics
  87126.         BX = length of data buffer
  87127.         CX = subfunction request code
  87128.         DS:DX -> data buffer
  87129.         Return: AX = return code
  87130.             CX = length of PIF data
  87131.         0011h perform structured field operation
  87132.         CX = request number
  87133.         DS:DX -> parameter list
  87134.         Return: AX = status word (see #2175)
  87135.             CX = error number
  87136.         0012h set cursor position for direct write buffer
  87137.         DX = new cursor position
  87138.         Return: AX = status word (see #2175)
  87139.         0013h write direct to buffer
  87140.         DL = character to be written
  87141.         DH = translation option
  87142.         Return: AX = status word (see #2175)
  87143.         0014h write direct to buffer without echo
  87144.         DL = character to be written
  87145.         DH = translation option
  87146.         Return: AX = status word (see #2175)
  87147.         0015h set direct write string length
  87148.         DX = string value
  87149.         Return: nothing
  87150.         0016h write string direct to buffer
  87151.         DS:DX -> string
  87152.         Return: AX = status word (see #2175)
  87153.         0017h write string direct to buffer, untranslated
  87154.         DS:DX -> string
  87155.         Return: AX = status word (see #2175)
  87156.         0018h get direct-write cursor position
  87157.         Return: AX = cursor position
  87158.         0019h convert row/column to cursor position
  87159.         DH = display row (1-43)
  87160.         DL = display column (1-132)
  87161.         Return: AX = cursor position
  87162.         001Ah convert cursor position to row/column
  87163.         DX = cursor position
  87164.         Return: AH = display row
  87165.             AL = display column
  87166.         001Bh find next field
  87167.         DX = initial cursor position
  87168.         Return: AX = field cursor position
  87169.         001Ch find previous field
  87170.         DX = initial cursor position
  87171.         Return: AX = field cursor position
  87172.         001Dh find next unprotected field
  87173.         DX = initial cursor position
  87174.         Return: AX = field cursor position
  87175.         001Eh find previous unprotected field
  87176.         DX = initial cursor position
  87177.         Return: AX = field cursor position
  87178.         001Fh find next protected field
  87179.         DX = initial cursor position
  87180.         Return: AX = field cursor position
  87181.         0020h find previous protected field
  87182.         DX = initial cursor position
  87183.         Return: AX = field cursor position
  87184.         0021h masked search forward
  87185.         DH = mask
  87186.         DL = search pattern
  87187.         Return: AX = cursor position or 0000h
  87188.         0022h masked search backward
  87189.         DH = mask
  87190.         DL = search pattern
  87191.         Return: AX = cursor position or 0FFFh
  87192.         0023h find field length
  87193.         DX = cursor position
  87194.         Return: AX = field length
  87195.         0024h read field
  87196.         DS:DX -> buffer for field contents
  87197.         Return: AX = status word (see #2175)
  87198.         0025h read screen
  87199.         DS:DX -> buffer for screen contents
  87200.         Return: AX = status word (see #2175)
  87201.         0026h read buffer untranslated
  87202.         DX = cursor position
  87203.         Return: AX = buffer code
  87204.             CX:BX -> 3278/79 device buffer image
  87205.         0027h enable/disable keyboard
  87206.         DL = new state of keyboard breaks (00h enabled, 01h disabled)
  87207.         Return: nothing
  87208.         0028h select host session
  87209.         DL = session short name
  87210.         Return: AX = session information
  87211.         0029h retrieve host session name
  87212.         AX = short name (DFT) or 0000h (not available, CUT mode)
  87213.         002Ah get current device buffer size
  87214.         Return: AX = device buffer size
  87215.             CX = segment of EAB
  87216.         002Bh arm modified location trigger
  87217.         DX = cursor position
  87218.         Return: AX = status (0000h not available, 0001h successful)
  87219.  
  87220. Bitfields for PCOX status word:
  87221. Bit(s)    Description    (Table 2175)
  87222.  0,1    cursor type
  87223.  2    cursor inhibited
  87224.  3    display inhibited
  87225.  4    feature step inhibited
  87226.  5    480-character format code
  87227.  6,7    unused
  87228.  8-10    model number (2-5)
  87229.  11    unit has been reset by controller (cleared after status returned)
  87230.  12    buffer has been written into (cleared after status returned)
  87231.  13    alarm has been sounded (cleared after status returned)
  87232.  14-15    monitor type (01 mono, 10 color, 11 hybrid)
  87233. --------N-6F00-------------------------------
  87234. INT 6F - 10NET - LOGIN
  87235.     AH = 00h
  87236.     DS:DX -> login record (see #2176)
  87237. Return: CL = security level
  87238.     AX = status (see #2177)
  87239. SeeAlso: AH=01h,AH=80h,INT 21/AX=4402h"10MEMMGR"
  87240.  
  87241. Format of 10NET login record:
  87242. Offset    Size    Description    (Table 2176)
  87243.  00h  8 BYTEs    user name
  87244.  08h  8 BYTEs    password
  87245.  10h 12 BYTEs    name of SuperStation
  87246.  
  87247. (Table 2177)
  87248. Values for 10NET status:
  87249.  0000h    successful
  87250.  01FFh    "RTO_NERR" transmit interrupt lost (time out on response)
  87251.  02FFh    "NET_NERR" network (hardware) error
  87252.  03FFh    "PAS_NERR" invalid password
  87253.  04FFh    "LRN_NERR" local resource not available
  87254.  05FFh    "SRN_NERR" server resource not available
  87255.  06FFh    "LNM_NERR" already logged in under different name
  87256.  07FFh    "LSF_NERR" login security failure (node)
  87257.  08FFh    "NLI_NERR" not logged in
  87258.  09FFh    "DIVZ_NERR" position calc error
  87259.  0AFFh    "NT1_NERR" receive subfunction not = send subfunction (i.e. read,write)
  87260.  0BFFh    "RFNC_NERR" request function not in range
  87261.  0CFFh    "NSFH_NERR" no more server file handle entries left
  87262.  0DFFh    "NFTAB_NERR" no more shared file table entries left
  87263.  0EFFh    "NUFH_NERR" no more user file handle entries left
  87264.  0FFFh    "CHAT_NERR" chat permit not on
  87265.  10FFh    "NSRV_NERR" not a server on request
  87266.  11FFh    "NOBD_NERR" no transporter board error
  87267.  12FFh    "STO_NERR" time out on send
  87268.  13FFh    "INF_NERR" item not found (spool item not on queue)
  87269.  14FFh    "DACS_NERR" DOS access incompatible
  87270.  15FFh    "RLOCK_NERR" record already locked
  87271.  16FFh    "IVP_NERR" invalid parameter
  87272.  17FFh    "RLTO_NERR" record lock time out error
  87273.  18FFh    "CSPL_NERR" currently spooling to named device
  87274.  19FFh    "DRP_NERR" dropped receive message (throttle)
  87275.  1AFFh    "SOPV_NERR" open sharing violation
  87276.  1BFFh    "NTUF_NERR" no more tuf entries left
  87277.  1CFFh    "NOWN_NERR" not file owner on open
  87278.  1DFFh    "RSEC_NERR" read security not passed
  87279.  1EFFh    "WSEC_NERR" write security not passed
  87280.  1FFFh    "GSEC_NERR" group security not passed
  87281.  20FFh    "SEC1_NERR" security file failure
  87282.  21FFh    "ACT1_NERR" activity file failure
  87283.  22FFh    "SPL1_NERR" spool control file failure
  87284.  23FFh    "NMT_NERR" device not mounted (spooling)
  87285.  24FFh    "RSPL_NERR" spool file has not been terminated
  87286.  25FFh    "DNSH_NERR" device not mounted or is not being shared
  87287.  26FFh    "DUP_NERR" duplicate node ID
  87288.  27FFh    "FNF_NERR" file not found error
  87289.  28FFh    "NMF_NERR" no more files
  87290.  29FFh    "UN_NERR" unknown internal system error
  87291.  2AFFh    "QCP_NERR" print queue is full or corrupted
  87292.  2BFFh    "IFNC_NERR" invalid function
  87293.  2CFFh    "IVH_NERR" invalid handle
  87294.  2DFFh    "TOF_NERR" too many files opened
  87295.  2EFFh    "PNF_NERR" path not found
  87296.  2FFFh    "SACT_NERR" named file is active
  87297. ---10NET v5.0+ ---
  87298.  30FFh    "NAK_NERR" received NAK on send (destination out of buffers)
  87299.  31FFh    "RENT_NERR" reentrancy in driver F_SEND
  87300.  32FFh    "RECV_NERR" driver could not be put in receive mode
  87301.  33FFh    "NRLT_NERR" no more RLTAB entries left
  87302.  34FFh    "DIAL_NERR" function requires an unsupported dialect
  87303.  35FFh    "IVD_NERR" invalid device
  87304.  36FFh    "NALV_NERR" netname access level violated
  87305.  37FFh    "NPIDNF_NERR" network path not found
  87306.  38FFh    "SP_NERR" server is paused
  87307.  39FFh    "TMNM_NERR" too many remote user names
  87308.  3AFFh    "DUPD_NERR" duplicate network device
  87309.  3BFFh    "DIU_NERR" shared device in use, can't delete
  87310.  3CFFh    "NNWD_NERR" network name was deleted
  87311.  3DFFh    "NPFS_NERR" not enough space for print file
  87312.  3EFFh    "NNNF_NERR" network name not found (can't find the call name)
  87313.  3FFFh    "NB_NERR" network busy
  87314.  40FFh    "NDNLE_NERR" network device no longer exists
  87315.  41FFh    "NBCLE_NERR" NetBIOS command limit exceeded
  87316.  42FFh    "FINT24_NERR" Fail on INT 24h
  87317.  43FFh    "PEXP_NERR" password expired
  87318.  44FFh    "NPUP_NERR" new password error
  87319.  45FFh    "MAXS_NERR" maximum allowed disk space exceeded
  87320.  46FFh    "TDOW_NERR" time-of-day/day-of-week error
  87321. SeeAlso: #2188
  87322. Index:    error codes;10Net|10Net;error codes
  87323. --------b-6F00-------------------------------
  87324. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_ISR" - RESPOND TO LOGICAL ISR
  87325.     AH = 00h
  87326.     BP = ID for driver (0012h???)
  87327.     ???
  87328. Return: ???
  87329. SeeAlso: INT 6F/AH=02h"Hewlett Packard"
  87330. --------N-6F01-------------------------------
  87331. INT 6F - 10NET - LOGOFF
  87332.     AH = 01h
  87333.     DS:DX -> superstation ID or nulls (12 bytes)
  87334. Return: CX = number of files closed
  87335.     AX = status (see also #2177)
  87336.         08FFh superstation ID not already logged in
  87337. SeeAlso: AH=00h"10NET",AH=81h
  87338. --------N-6F02-------------------------------
  87339. INT 6F - 10NET - STATUS OF NODE
  87340.     AH = 02h
  87341.     DS:DX -> 512-byte status record (see #2179)
  87342. Return:    CF clear if successful
  87343.     CF set on error
  87344.         AX = error code (see #2177)
  87345. SeeAlso: INT 21/AX=5E01h"10NET"
  87346.  
  87347. (Table 2178)
  87348. Values for 10NET station type:
  87349.  00h    workstation
  87350.  01h    superstation
  87351.  02h    gateway station
  87352.  03h    gateway active
  87353.  04h    logged into multiple superstations
  87354.  05h    reserved
  87355.  
  87356. Format of 10NET node status record:
  87357. Offset    Size    Description    (Table 2179)
  87358.  00h  8 BYTEs    user name (0 if none)
  87359.  08h    BYTE    station type (see #2178)
  87360.  09h 24 BYTEs    list of superstations logged into more than one superstation
  87361.  21h 12 BYTEs    node ID
  87362.  2Dh    WORD    message count for this station (send for user node, receive for
  87363.           superstations)
  87364. ---for superstations only---
  87365.  2Fh    WORD    drives allocated (bit 0=A:, bit 1=B:,...)
  87366.  31h    BYTE    user service flags (see #2180)
  87367.  32h    BYTE    printers allocated (bit 0=LPT1,...)
  87368.  33h    BYTE    number of unprinted spool files
  87369.  34h    BYTE    number of opened files
  87370.  35h    BYTE    number of logged on nodes
  87371.  36h    BYTE    primary drive (1=A:)
  87372.  37h    BYTE    reserved
  87373.  38h  N BYTEs    list of logged on node IDs (each 12 bytes, max 37 IDs)
  87374. 1F4h  3 BYTEs    time: sec/min/hrs
  87375. 1F7h  3 BYTEs    date: day/mon/year-1980
  87376.  
  87377. Bitfields for 10NET user service flags:
  87378. Bit(s)    Description    (Table 2180)
  87379.  7    gate
  87380.  6    print permit on
  87381.  4    SUBMIT is on
  87382.  3    mail waiting for node
  87383.  2    calendar waiting for you
  87384.  1    news waiting for you
  87385.  0    mail waiting for you
  87386. --------b-6F02-------------------------------
  87387. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_SYSTEM" - SYSTEM FUNCTIONS
  87388.     AH = 02h
  87389.     BP = driver ID
  87390.     AL = subfunction
  87391.         00h "SF_INIT" start initializing a driver
  87392.         02h "SF_START" complete driver initialization
  87393.         04h "SF_RPT_STAT" report driver state
  87394.         06h "SF_VER_DESC" get driver's revision number and date code
  87395.         08h "SF_DEF_ATTR" get driver's default configuration
  87396.         0Ah "SF_GET_ATTR" get driver's current configuration
  87397.         0Ch "SF_SET_ATTR" specify new configuration for driver
  87398.         0Eh "SF_OPEN" reserve driver for exclusive access
  87399.         10h "SF_CLOSE" release driver from exclusive access
  87400.         12h "SF_TIMEOUT" tell driver that a requested timeout has occurred
  87401.         14h "SF_INTERVAL" tell driver that a requested 60Hz interval done
  87402.         16h "SF_TEST" tell driver to perform hardware test
  87403.     ??? details not yet available
  87404. Return: ???
  87405. SeeAlso: AH=00h"Hewlett Packard",AH=04h"Hewlett Packard"
  87406. --------W-6F0204-----------------------------
  87407. INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
  87408.     AX = 0204h
  87409. Return: AX = status
  87410.         0000h switch is allowed
  87411.         other switch not allowed
  87412. Note:    intercepting this call will allow a DOS application to ensure that
  87413.       Windows will not switch away from it.
  87414. --------N-6F03-------------------------------
  87415. INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
  87416.     AH = 03h
  87417.     DS:DI -> node ID (optional)
  87418. Return: ES:BX -> configuration table (see #2181)
  87419. SeeAlso: AH=13h,INT 21/AX=5E01h"10NET"
  87420.  
  87421. Format of 10NET configuration table:
  87422. Offset    Size    Description    (Table 2181)
  87423. -41    WORD    local device table address
  87424. -39    WORD    extended network error mapping table address
  87425. -37    WORD    shared device table address
  87426. -35    WORD    mounted device table address
  87427. -33    BYTE    receive buffer counter
  87428. -32    BYTE    collect buffer counter
  87429. -31    WORD    TUF address
  87430. -29    BYTE    enable flag
  87431. -28    BYTE    FCB keep flag
  87432. -27    WORD    reserved
  87433. ---up to here, 10NET v3.3---
  87434. -25    WORD    count of dropped Send6F
  87435. -23    WORD    buffer start address
  87436. -21    WORD    comm driver base address
  87437. -19    WORD    send/receive retry count
  87438. -17    BYTE    number of 550ms loops before timeout
  87439. -16    WORD    UFH address
  87440. -14    WORD    CDIR address
  87441. -12    WORD    LTAB address
  87442. -10    WORD    SFH address
  87443. -8    WORD    FTAB address
  87444. -6    WORD    RLTAB address
  87445. -4    WORD    SMI address
  87446. -2    WORD    NTAB address
  87447.  00h    WORD    address of first CT_DRV
  87448.  02h    BYTE    number of DRV entries
  87449.  03h  8 BYTEs    login name
  87450.  0Bh 12 BYTEs    node ID (blank-padded)
  87451.  17h  6 BYTEs    node address
  87452.  1Dh    BYTE    flag
  87453.  1Eh    BYTE    CT_CFLG (chat permit)
  87454.         bit 1: sound bell
  87455.         bit 0: CHAT permit
  87456.  1Fh    BYTE    CT_PSFLG (see #2182)
  87457.  20h    BYTE    in 10Net flag
  87458.  21h    WORD    receive message count
  87459.  23h    WORD    send message count
  87460.  25h    WORD    retry count
  87461.  27h    WORD    failed count
  87462.  29h    WORD    driver errors
  87463.  2Bh    WORD    dropped responses/CHATs
  87464.  2Dh  9 BYTEs    LIST ID/NTAB address (3 entries--LPT1-3)
  87465.  36h  6 BYTEs    AUX ID/NTAB address (2 entries--COM1-2)
  87466.  3Ch    BYTE    active CB channel
  87467.  3Dh    BYTE    received 6F messages on queue
  87468.  3Eh  9 BYTEs    activity counters for channels 1-9
  87469. ---beyond here, 10NET v3.3---
  87470.  47h    BYTE    bit 0: RS232 gate
  87471.         bit 1: Send6F gate (user set)
  87472.  48h    DWORD    pointer into gate (user set)
  87473.  4Ch    DWORD    pointer into 10Net send
  87474.  50h  N WORDs    addresses of timer blocks
  87475.  
  87476. Bitfields for CT_PSFLG:
  87477. Bit(s)    Description    (Table 2182)
  87478.  5    PRINT permit
  87479.  4    KB initiated
  87480.  3    CHAT called FOXPTRM
  87481.  2    SUBMIT active
  87482.  1    SUBMIT received
  87483.  0    SUBMIT permit
  87484. --------N-6F04-------------------------------
  87485. INT 6F - 10NET - SEND
  87486.     AH = 04h
  87487.     DS:BX -> send record (see #2183)
  87488.     DS:DX -> data (max 1024 bytes)
  87489. Return:    CF clear if successful
  87490.     CF set on error
  87491.         AX = error code (see #2177)
  87492. SeeAlso: AH=05h,AH=09h,AH=0Ah
  87493.  
  87494. Format of 10NET send record:
  87495. Offset    Size    Description    (Table 2183)
  87496.  00h 12 BYTEs    receiving node's ID
  87497.         if first byte has high-order bit set, message is directed to
  87498.           the CT_RGATE vector at the receiver
  87499.         if second byte is 00h, first byte is taken as a CB
  87500.           channel number and delivered to all nodes on same channel
  87501.  0Ch    WORD     length of data at DX
  87502. --------b-6F04-------------------------------
  87503. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_IO_CTRL" - DRIVER CONTROL
  87504.     AH = 04h
  87505.     BP = driver ID
  87506.     AL = subfunction
  87507.         00h "SF_LOCK" reserve specified sub-addresses for exclusive access
  87508.         02h "SF_UNLOCK" release specified sub-addresses
  87509.         others driver-dependent
  87510.     ??? details not yet available
  87511. Return: ???
  87512. SeeAlso: AH=02h"Hewlett Packard",AH=06h"Hewlett Packard"
  87513. --------N-6F05-------------------------------
  87514. INT 6F - 10NET - RECEIVE
  87515.     AH = 05h
  87516.     CX = number of seconds before timeout
  87517.     DS:DX -> receive buffer (see #2184)
  87518. Return:    CF clear if successful
  87519.         AH = FEh if dequeued message is a CB message
  87520.     CF set on error
  87521.         AX = error code (see #2177)
  87522. SeeAlso: AH=04h"10NET"
  87523.  
  87524. Format of 10NET receive buffer:
  87525. Offset    Size    Description    (Table 2184)
  87526.  00h 12 BYTEs    sending node's ID
  87527.  0Ch    WORD    length of message
  87528.  0Eh  N BYTEs    message (maximum 1024 bytes)
  87529. --------b-6F06-------------------------------
  87530. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_PUT_BYTE" WRITE A BYTE OF DATA
  87531.     AH = 06h
  87532.     BP = driver ID
  87533.     ??? details not yet available
  87534. Return: ???
  87535. SeeAlso: AH=04h"Hewlett Packard",AH=08h"Hewlett Packard",AH=0Ah"Hewlett"
  87536. --------N-6F07-------------------------------
  87537. INT 6F - 10NET - LOCK HANDLE
  87538.     AH = 07h
  87539.     BX = file handle
  87540.     CX:DX = starting offset in file
  87541.     SI = record length
  87542. Return:    CF clear if successful
  87543.     CF set on error
  87544.         AX = error code (see also AH=00h)
  87545.         0002h file not found
  87546. SeeAlso: AH=08h"10NET",AH=0Fh,INT 21/AH=5Ch
  87547. --------N-6F08-------------------------------
  87548. INT 6F - 10NET - UNLOCK HANDLE
  87549.     AH = 08h
  87550.     BX = file handle
  87551.     AL = mode
  87552.         00h unlock all
  87553.         01h unlock record at CX:DX
  87554. Return:    CF clear if successful
  87555.     CF set on error
  87556.         AX = error code (see also AH=00h)
  87557.         0002h file not found
  87558. SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
  87559. --------b-6F08-------------------------------
  87560. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_GET_BYTE" READ A BYTE OF DATA
  87561.     AH = 08h
  87562.     BP = driver ID
  87563.     ??? details not yet available
  87564. Return: ???
  87565. SeeAlso: AH=06h"Hewlett Packard",AH=0Ah"Hewlett Packard",AH=0Ch"Hewlett"
  87566. --------N-6F09-------------------------------
  87567. INT 6F - 10NET - SUBMIT
  87568.     AH = 09h
  87569.     DS:BX -> submit record (see #2185)
  87570. SeeAlso: AH=04h"10NET"
  87571.  
  87572. Format of 10NET submit record:
  87573. Offset    Size    Description    (Table 2185)
  87574.  00h 12 BYTEs    destination node ID (must be logged in)
  87575.  0Ch    WORD    length+2 of following 'command line' text
  87576.  0Eh  N BYTEs    command line text (<=100 bytes), system adds CR
  87577. --------N-6F0A-------------------------------
  87578. INT 6F - 10NET - CHAT
  87579.     AH = 0Ah
  87580.     DS:BX -> control parameters (see #2186)
  87581.     DS:DX -> chat message (see #2187)
  87582. SeeAlso: AH=04h"10NET",AH=8Ah
  87583.  
  87584. Format of 10NET chat control parameters:
  87585. Offset    Size    Description    (Table 2186)
  87586.  00h  8 BYTEs    sender ID, defaults to node's userID if nulls
  87587.  08h  8 BYTEs    destination user ID, 'EVERYONE' may be used
  87588.  10h 12 BYTEs    destination node ID
  87589.  
  87590. Format of 10NET chat message:
  87591. Offset    Size    Description    (Table 2187)
  87592.  00h    WORD    length+2 of following text
  87593.  02h  N BYTEs    text, max 101 bytes
  87594. --------b-6F0A-------------------------------
  87595. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_PUT_BUF" WRITE A BUFFER
  87596.     AH = 0Ah
  87597.     BP = driver ID
  87598.     ??? details not yet available
  87599. Return: ???
  87600. SeeAlso: AH=06h"Hewlett Packard",AH=0Ch"Hewlett Packard"
  87601. --------N-6F0B-------------------------------
  87602. INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
  87603.     AH = 0Bh
  87604.     AL = drive number or 0
  87605.     ES:SI = Ethernet address or 0
  87606.     DS:BX -> 31-byte ASCIZ semaphore name
  87607. Return: AL = status (see #2188)
  87608. Note:    same as INT 60/AH=12h
  87609. SeeAlso: AH=0Ch"10NET",INT 60/AH=12h
  87610.  
  87611. (Table 2188)
  87612. Values for 10NET status:
  87613.  00h    successful
  87614.  01h    semaphore currently locked
  87615.  02h    server not responding
  87616.  03h    invalid semaphore name
  87617.  04h    semaphore list is full
  87618.  05h    invalid drive ID
  87619.  06h    invalid Ethernet address
  87620.  07h    not logged in
  87621.  08h    write to network failed
  87622.  09h    semaphore already logged in this CPU
  87623. SeeAlso: #2177
  87624. Index:    error codes;10-Net|10-Net;error codes
  87625. --------N-6F0C-------------------------------
  87626. INT 6F - 10NET - UNLOCK SEMAPHORE
  87627.     AH = 0Ch
  87628.     AL = drive number or 0
  87629.     ES:SI = Ethernet address or 0
  87630.     DS:BX -> 31-byte ASCIZ semaphore name
  87631. Return: AL = status (see also #2188)
  87632.         01h semaphore not locked
  87633. Note:    same as INT 60/AH=13h
  87634. SeeAlso: AH=0Bh,INT 60/AH=13h
  87635. --------b-6F0C-------------------------------
  87636. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_GET_BUF" READ A BUFFER OF DATA
  87637.     AH = 0Ch
  87638.     BP = driver ID
  87639.     ??? details not yet available
  87640. Return: ???
  87641. SeeAlso: AH=08h"Hewlett Packard",AH=0Ah"Hewlett Packard",AH=0Eh"Hewlett"
  87642. --------N-6F0D-------------------------------
  87643. INT 6F - 10NET - "WHO" - ENUMERATE USERS ON NETWORK
  87644.     AH = 0Dh
  87645.     AL = type code
  87646.         01h return superstations only
  87647.         02h return non-superstations only
  87648.         otherwise return all
  87649.     CX = length of data buffer
  87650.     DS:DX -> array of records to be filled (see #2189)
  87651. Return: CL = number of records returned (responding stations)
  87652. SeeAlso: AH=16h,AH=8Dh
  87653.  
  87654. Format of station record:
  87655. Offset    Size    Description    (Table 2189)
  87656.  00h 12 BYTEs    node ID
  87657.  0Ch    BYTE    station flags (see #2190)
  87658. ---if AL = 01h---
  87659.  0Dh    BYTE    version number
  87660.  0Eh    WORD    level number of 10Net software in responding node
  87661. ---if AL = 02h---
  87662.  0Dh  8 BYTEs    user ID
  87663.  15h    BYTE    version number
  87664.  16h    WORD    level number
  87665.  
  87666. Bitfields for station flags:
  87667. Bit(s)    Description    (Table 2190)
  87668.  1    workstation
  87669.  2    superstation
  87670.  3    xgate
  87671.  4    active gate
  87672. --------N-6F0E-------------------------------
  87673. INT 6F - 10NET - SPOOL/PRINT
  87674.     AH = 0Eh
  87675.     DS:DX -> spool/print record (see #2192)
  87676. Return:    CF clear if successful
  87677.     CF set on error
  87678.         AX = error code (see also #2177)
  87679.         17FFh device not mounted
  87680.         18FFh already spooling to named device
  87681.  
  87682. (Table 2191)
  87683. Values for 10NET spooler operation code:
  87684.  0000h    initiate spool
  87685.  0001h    abort print
  87686.  0002h    close spool
  87687.  0003h    delete spool
  87688.  0004h    print
  87689.  0005h    get report info
  87690.  0006h    set chat template
  87691.  0007h    queue
  87692.  0008h    return queue
  87693.  0009h    queue non-spooled file for printing
  87694.  
  87695. Format of 10NET Spool/Print record:
  87696. Offset    Size    Description    (Table 2192)
  87697.  00h    WORD    operation code (see #2191)
  87698.  02h 11 BYTEs    file name in FCB format
  87699. ---if operation code = 00h or 06h---
  87700.  0Dh    BYTE    notification flags (see #2193)
  87701.  0Eh    BYTE    days to keep (FFh=forever)
  87702.  0Fh    BYTE    bits 0,1: device (1=LPT1)
  87703.         bits 4-7: remote drive to store spool file (1=A,...)
  87704.  10h    WORD    length of following data area
  87705.  12h  N BYTEs    up to 64 bytes of description
  87706. ---if operation code = 03h---
  87707.  0Dh  8 BYTEs    user ID to associate with filename
  87708. ---if operation code = 04h---
  87709.  0Dh    WORD    block number
  87710.  0Fh  8 BYTEs    user ID to associate with filename
  87711. ---if operation code = 05h---
  87712.  0Dh    BYTE    RRN to start retrieve
  87713.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  87714.         bit 3: if set, return entries for all users
  87715.  0Fh    WORD    length of following area
  87716.  11h  N BYTEs    up to 1500 bytes to receive $SCNTL records returned
  87717. ---if operation code = 07h---
  87718.  0Dh    BYTE    queue number
  87719.  0Eh    BYTE    bits 0,1: local print device (LPTx)
  87720.  0Fh    WORD    number of bytes of test print to be done
  87721.  11h    BYTE    code:
  87722.         01h print device
  87723.         02h test print count
  87724.         03h prn
  87725. ---if operation code = 08h---
  87726.  0Dh    BYTE    queue location or $SCNTL location to start access
  87727.         returns next item for access:
  87728.             00h-7Fh queued items
  87729.             80h-FEh non-queued, non-printed items
  87730.             FFh    no more items
  87731.  0Eh    WORD    unused
  87732.  10h    WORD    length of following area
  87733.  12h  N BYTEs    up to 64 bytes to receive $SCNTL records
  87734. ---if operation code = 09h---
  87735.  0Dh  3 BYTEs    unused
  87736.  10h  N BYTEs    path to non-spooled file to be queued for printing
  87737.  
  87738. Bitfields for notification flags:
  87739. Bit(s)    Description    (Table 2193)
  87740.  7    queue to top
  87741.  6    do ID page
  87742.  5    no form feed
  87743.  4    reserved
  87744.  3    explicit queuing only
  87745.  2    notify at print completion
  87746.  1    notify server operator, with reply
  87747.  0    notify at print start
  87748.  
  87749. Format of 10NET $SCNTL record:
  87750. Offset    Size    Description    (Table 2194)
  87751.  00h  8 BYTEs    user ID
  87752.  08h 11 BYTEs    filename in FCB format
  87753.  13h  6 BYTEs    node ID
  87754.  19h  3 BYTEs    creation date
  87755.  1Ch    BYTE    notification flags (see #2193)
  87756.  1Dh    BYTE    retention time in days
  87757.  1Eh    BYTE    printing device (LPTx)
  87758.  1Fh  3 BYTEs    date last printed (0 = never)
  87759.  22h    BYTE    device containing spoolfile
  87760.  23h    WORD    bytes to print for test print
  87761.  25h    WORD    block number to start print
  87762.  27h    BYTE    reserved
  87763. --------b-6F0E-------------------------------
  87764. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_PUT_WORD" WRITE A WORD OF DATA
  87765.     AH = 0Eh
  87766.     BP = driver ID
  87767.     ??? details not yet available
  87768. Return: ???
  87769. SeeAlso: AH=06h"Hewlett Packard",AH=0Ah"Hewlett Packard",AH=10h"Hewlett"
  87770. --------N-6F0F-------------------------------
  87771. INT 6F - 10NET v5.0 - "RM LOCK" - ???
  87772.     AH = 0Fh
  87773.     ???
  87774. Return: ???
  87775. SeeAlso: AH=07h,AH=08h"10NET"
  87776. --------N-6F10-------------------------------
  87777. INT 6F - 10NET - ATTACH/DETACH PRINTER
  87778.     AH = 10h
  87779.     AL = subfunction
  87780.         00h initiate spooling if LPT1 is mounted
  87781.         01h terminate spooling if LPT1 is mounted
  87782. SeeAlso: INT 21/AX=5D08h
  87783. --------b-6F10-------------------------------
  87784. INT 6F - Hewlett Packard - EXTENDED BIOS - "F_GET_WORD" READ A WORD OF DATA
  87785.     AH = 10h
  87786.     BP = driver ID
  87787.     ??? details not yet available
  87788. Return: ???
  87789. SeeAlso: AH=08h"Hewlett Packard",AH=0Ah"Hewlett Packard",AH=0Eh"Hewlett"
  87790. --------N-6F11-------------------------------
  87791. INT 6F - 10NET - LOCK FCB
  87792.     AH = 11h
  87793.     AL = mode
  87794.         01h sequential
  87795.         02h random
  87796.         03h random block
  87797.         CX = number of records
  87798.     DS:DX -> FCB (see #0506 at INT 21/AH=0Fh)
  87799. Return:    CF clear if successful
  87800.     CF set on error
  87801.         AX = error code (see also #2177)
  87802.         0002h file not found
  87803. SeeAlso: AH=12h,INT 21/AH=0Fh
  87804. --------N-6F12-------------------------------
  87805. INT 6F - 10NET - UNLOCK FCB
  87806.     AH = 12h
  87807.     AL = mode
  87808.         00h sequential
  87809.         01h random
  87810.         02h random block
  87811.         CX = number of records
  87812.     DS:DX -> FCB (see #0506 at INT 21/AH=0Fh)
  87813. Return:    CF clear if successful
  87814.     CF set on error
  87815.         AX = error code (see also #2177)
  87816.         0002h file not found
  87817. SeeAlso: AH=11h
  87818. --------N-6F13-------------------------------
  87819. INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
  87820.     AH = 13h
  87821.     DS:DX -> node ID, 12 bytes blank-padded
  87822. Return:    CF clear if successful
  87823.         ES:BX = configuration table address on given machine
  87824.     CF set on error
  87825.         AX = error code (see #2177)
  87826. SeeAlso: AH=03h
  87827. --------N-6F14-------------------------------
  87828. INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
  87829.     AH = 14h
  87830.     BX:SI = address of remote memory
  87831.     CX = length (<=1024 bytes)
  87832.     DS:DX -> node ID, 12 bytes blank-padded
  87833.     DS:DI -> area to receive remote memory image
  87834. Return:    CF clear if successful
  87835.         CX = amount of memory copied to DS:SI
  87836.     CF set on error
  87837.         AX = error code (see #2177)
  87838. --------N-6F1501-----------------------------
  87839. INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
  87840.     AX = 1501h
  87841.     BX = zero-based index
  87842.     DS:SI -> node ID, 12 bytes blank-padded
  87843.     ES:DI -> 85-byte buffer for shared device table entry (see #2195)
  87844. Return:    CF clear if successful
  87845.         ES:DI buffer contains shared device table entry of BXth device
  87846.     CF set on error
  87847.         AX = error code (see #2177)
  87848. SeeAlso: AX=1502h,AX=1503h,AX=9501h
  87849.  
  87850. Format of 10NET shared device table entry:
  87851. Offset    Size    Description    (Table 2195)
  87852.  00h  8 BYTEs    device
  87853.  08h  8 BYTEs    alias
  87854.  10h 64 BYTEs    path
  87855.  50h  8 BYTEs    password
  87856.  58h    BYTE    access
  87857.  59h  4 BYTEs    mask
  87858. --------N-6F1502-----------------------------
  87859. INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
  87860.     AX = 1502h
  87861.     DS:SI -> node ID, 12 bytes blank-padded
  87862.     ES:DI -> valid shared device table entry
  87863. Return:    CF clear if successful
  87864.     CF set on error
  87865.         AX = error code (see #2177)
  87866. SeeAlso: AX=1501h,AX=1503h,AX=9502h
  87867. --------N-6F1503-----------------------------
  87868. INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
  87869.     AX = 1503h
  87870.     BX = zero-based index
  87871.     DS:SI -> node ID, 12 bytes blank-padded
  87872. Return:    CF clear if successful
  87873.     CF set on error
  87874.         AX = error code (see #2177)
  87875. SeeAlso: AX=1501h,AX=1502h,AX=9503h
  87876. --------N-6F16-------------------------------
  87877. INT 6F - 10NET v5.0 - "GL WHO" - ???
  87878.     AH = 16h
  87879.     ???
  87880. Return: ???
  87881. SeeAlso: AH=0Dh
  87882. --------N-6F17-------------------------------
  87883. INT 6F - 10NET v3.3+ - MOUNT
  87884.     AH = 17h
  87885.     AL = local drive number (0=A:)
  87886.     BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
  87887.     DS:DX -> node ID, 12 bytes blank-padded
  87888. Return:    CF clear if successful
  87889.     CF set on error
  87890.         AX = error code (see #2177)
  87891. SeeAlso: AH=18h
  87892. --------N-6F18-------------------------------
  87893. INT 6F - 10NET v3.3+ - UNMOUNT
  87894.     AH = 18h
  87895.     AL = local drive number (0=A:)
  87896.     BL = type
  87897.         00h        disk
  87898.         01h-03h LPTn
  87899.         04h,05h COMx
  87900. Return:    CF clear if successful
  87901.     CF set on error
  87902.         AX = error code (see #2177)
  87903. SeeAlso: AH=17h
  87904. --------N-6F19-------------------------------
  87905. INT 6F U - 10NET v5.0 - AUDIT
  87906.     AH = 19h
  87907.     ???
  87908. Return: ???
  87909. SeeAlso: AH=99h
  87910. --------N-6F1A-------------------------------
  87911. INT 6F U - 10NET v5.0 - "BULL" - ???
  87912.     AH = 1Ah
  87913.     ???
  87914. Return: ???
  87915. --------N-6F1B-------------------------------
  87916. INT 6F U - 10NET v5.0 - "GMOUNT" - ???
  87917.     AH = 1Bh
  87918.     ???
  87919. Return: ???
  87920. --------N-6F1C-------------------------------
  87921. INT 6F U - 10NET v5.0 - "GLOGIN" - GET LOGIN LIST
  87922.     AH = 1Ch
  87923.     ???
  87924. Return: ???
  87925. --------N-6F1D-------------------------------
  87926. INT 6F U - 10NET v5.0 - "TABDATA" - ???
  87927.     AH = 1Dh
  87928.     ???
  87929. Return: ???
  87930. --------N-6F1E-------------------------------
  87931. INT 6F U - 10NET v5.0 - "SCHED" - ???
  87932.     AH = 1Eh
  87933.     ???
  87934. Return: ???
  87935. --------N-6F1F-------------------------------
  87936. INT 6F U - 10NET v5.0 - "WHOAMI" - ???
  87937.     AH = 1Fh
  87938.     ???
  87939. Return: ???
  87940. --------N-6F20-------------------------------
  87941. INT 6F U - 10NET v5.0 - ???
  87942.     AH = 20h
  87943.     ???
  87944. Return: ???
  87945. --------N-6F21-------------------------------
  87946. INT 6F U - 10NET v5.0 - ???
  87947.     AH = 21h
  87948.     ???
  87949. Return: ???
  87950. --------N-6F22-------------------------------
  87951. INT 6F U - 10NET v5.0 - ???
  87952.     AH = 22h
  87953.     ???
  87954. Return: ???
  87955. --------b-6F22--BP0012-----------------------
  87956. INT 6F - HP HIL Vectras - EXTENDED BIOS - READ CMOS MEMORY
  87957.     AH = 22h
  87958.     BP = 0012h (ID of V_SYSTEM driver)
  87959.     BL = address of CMOS byte to read
  87960. Return: AH = status
  87961.     AL = byte read
  87962.     BP, DS destroyed
  87963. Note:    supported by ES, QS, and RS series HP Vectras
  87964. SeeAlso: BP=0012h/AH=24h
  87965. --------b-6F24--BP0012-----------------------
  87966. INT 6F - HP HIL Vectras - EXTENDED BIOS - WRITE CMOS MEMORY
  87967.     AH = 24h
  87968.     BP = 0012h (ID of V_SYSTEM driver)
  87969.     BL = address of CMOS byte to write
  87970.     AL = new value
  87971. Return: AH = status
  87972.     BP, DS destroyed
  87973. SeeAlso: BP=0012h/AH=22h
  87974. --------N-6F80-------------------------------
  87975. INT 6F - 10NET v5.0 - LOGIN
  87976.     AH = 80h
  87977.     DS:DX -> login record (see #2196)
  87978. Return: CF clear if successful
  87979.         BL = number of days until password expires (00h = never)
  87980.         CL = security level
  87981.     CF set on error
  87982.         AX = status (see #2177)
  87983. SeeAlso: AH=00h,AH=81h
  87984.  
  87985. Format of 10NET login record:
  87986. Offset    Size    Description    (Table 2196)
  87987.  00h  8 BYTEs    user name
  87988.  08h  8 BYTEs    password
  87989.  10h 15 BYTEs    server node ID
  87990.  1Fh  8 BYTEs    new password
  87991.  27h    BYTE    invoke mode (00h command line, 01h interactive)
  87992. --------N-6F81-------------------------------
  87993. INT 6F - 10NET v5.0 - LOGOUT
  87994.     AH = 81h
  87995.     DS:DX -> server node ID (DX=0000h for universal logout)
  87996. Return: AX = status (see #2177)
  87997. SeeAlso: AH=01h,AH=80h
  87998. --------N-6F8A-------------------------------
  87999. INT 6F - 10NET v5.0 - CHAT
  88000.     AH = 8Ah
  88001.     DS:BX -> chat parameters (see #2197)
  88002.     DS:DX -> chat message (see #2198)
  88003. Return: CF clear if successful
  88004.     CF set on error
  88005.         AX = status (see #2177)
  88006. SeeAlso: AH=0Ah
  88007.  
  88008. Format of 10NET chat parameters:
  88009. Offset    Size    Description    (Table 2197)
  88010.  00h  8 BYTEs    sender's user name
  88011.  08h  8 BYTEs    destination user name
  88012.  10h 15 BYTEs    destination node (0 if broadcast-style chat)
  88013.  
  88014. Format of 10NET chat message:
  88015. Offset    Size    Description    (Table 2198)
  88016.  00h    WORD    message length
  88017.  02h  N BYTEs    chat message contents
  88018. --------N-6F8D-------------------------------
  88019. INT 6F - 10NET v5.0 - "WHO" - ENUMERATE USERS ON NETWORK
  88020.     AH = 8Dh
  88021.     BX = service mask (see #2199)
  88022.     CX = length of buffer
  88023.     DS:DX -> buffer for array of Who data structures (see #2200)
  88024. Return: CF clear if successful
  88025.         CX = number of nodes matching service mask
  88026.         DS:DX buffer filled
  88027.     CF set on error
  88028.         AX = status (see #2177)
  88029. SeeAlso: AH=0Dh
  88030.  
  88031. Bitfields for 10NET service mask:
  88032. Bit(s)    Description    (Table 2199)
  88033.  0    workstation
  88034.  1    file server
  88035.  2    print server
  88036.  3    de-spool server
  88037.  
  88038. Format of 10NET Who data structure:
  88039. Offset    Size    Description    (Table 2200)
  88040.  00h  8 BYTEs    user name
  88041.  08h 15 BYTEs    node ID
  88042.  17h  3 BYTEs    unique portion of Ethernet address
  88043.  1Ah    BYTE    Who group number
  88044.  1Bh    WORD    service mask (see #2199)
  88045.  1Dh    DWORD    serial number
  88046.  21h    BYTE    maximum concurrent users with same serial number allowed on net
  88047.  22h    BYTE    chat mask (see #2201)
  88048.  23h    BYTE    internal system bits (see #2202)
  88049.  24h  9 BYTEs    version number in format MM.mm.xxx
  88050.  2Dh    BYTE    number of shared directories
  88051.  2Eh    BYTE    number of shared printer queues
  88052.  
  88053. Bitfields for 10NET chat mask:
  88054. Bit(s)    Description    (Table 2201)
  88055.  0    chat permitted
  88056.  1    bell enabled
  88057.  2    chat keyboard initiated
  88058.  3    in INT 16 handler
  88059.  4    in Get Input
  88060.  5    display has timed out
  88061.  6    chat is idle
  88062.  
  88063. Bitfields for 10NET internal system bits:
  88064. Bit(s)    Description    (Table 2202)
  88065.  0    submit permitted
  88066.  1    submit initiated
  88067.  2    submit executing
  88068.  3    internal client call/chat/spool/autospool
  88069.  4    in spool termination
  88070.  5    print permitted
  88071.  6    waiting for keyboard input
  88072. --------N-6F9501-----------------------------
  88073. INT 6F - 10NET v5.0 - GET SHARED DEVICE ENTRY
  88074.     AX = 9501h
  88075.     BX = zero-based index
  88076.     DS:SI -> server's node ID
  88077.     ES:DI -> buffer for shared device structure (see #2203)
  88078. Return: CF clear if successful
  88079.     CF set on error
  88080.         AX = status (see #2177)
  88081. SeeAlso: AX=1501h,AX=9502h,AX=9503h,AX=9504h
  88082.  
  88083. Format of 10NET shared device structure:
  88084. Offset    Size    Description    (Table 2203)
  88085.  00h  8 BYTEs    alias
  88086.  08h    BYTE    type (02h modem, 03h print queue, 04h directory)
  88087.  09h    BYTE    access rights
  88088.         bit 0: read
  88089.         bit 1: write
  88090.         bit 2: create
  88091.  0Ah  8 BYTEs    password
  88092.  12h 32 BYTEs    comment
  88093. ---directory---
  88094.  32h 64 BYTEs    pathname of shared directory
  88095. ---print queue---
  88096.  32h    BYTE    notification bit mask (see #2204)
  88097.  33h    BYTE    job control bit mask (see #2205)
  88098.  34h    WORD    number of days to retain file
  88099.  36h    WORD    test print length
  88100.  38h    BYTE    number of copies to print
  88101.  39h    BYTE    compression algorithm
  88102.  3Ah    BYTE    tab width (00h = don't expand)
  88103.  3Bh    BYTE    priority
  88104.  3Ch    WORD    time to open queue (FFFFh = always)
  88105.  3Eh    WORD    time to close queue
  88106.  40h    WORD    pause following queue switch, in clock ticks
  88107.  42h    WORD    pause between print jobs, in clock ticks
  88108.  44h    BYTE    associate queue file existence mask
  88109.         bit 0: queue switch file exists
  88110.         bit 1: initiate file exists
  88111.         bit 2: abort file exists
  88112.  45h  6 BYTEs    character sequence for page eject
  88113.  4Bh    BYTE    status of print queue
  88114.         bit 0: queue is closed
  88115.  4Ch    WORD    number of jobs on queue
  88116.  4Eh    WORD    offset of next print job to be dispatched (FFFFh = none)
  88117.  50h    BYTE    number of print devices in printer pool
  88118.  51h    WORD    offset of first print device structure (FFFFh if empty)
  88119.  
  88120. Bitfields for notification flags:
  88121. Bit(s)    Description    (Table 2204)
  88122.  0    user at print start
  88123.  1    operator at start, with reply
  88124.  2    user at print completion
  88125.  3    operator at completion, with reply
  88126.  4    user on queue switch
  88127.  5    operator on queue switch, with reply
  88128.  6    user on print error
  88129.  
  88130. Bitfields for 10NET job control mask:
  88131. Bit(s)    Description    (Table 2205)
  88132.  0    print banner page
  88133.  1    eject page at end of job
  88134.  2    mark as "held" (queue but don't print)
  88135.  3    rush job (queue at top)
  88136.  4    overwrite file with zeros before deletion
  88137.  5    hyperspool if possible
  88138. --------N-6F9502-----------------------------
  88139. INT 6F - 10NET v5.0 - SET SHARED DEVICE ENTRY
  88140.     AX = 9502h
  88141.     DS:SI -> server's node ID
  88142.     ES:DI -> shared device structure (see #2203)
  88143. Return: CF clear if successful
  88144.     CF set on error
  88145.         AX = status (see #2177)
  88146. SeeAlso: AX=1502h,AX=9501h,AX=9503h,AX=9504h
  88147. --------N-6F9503-----------------------------
  88148. INT 6F - 10NET v5.0 - DELETE SHARED DEVICE
  88149.     AX = 9503h
  88150.     BX = zero-based index
  88151.     DS:SI -> server's node ID
  88152. Return: CF clear if successful
  88153.     CF set on error
  88154.         AX = status (see #2177)
  88155. SeeAlso: AX=1503h,AX=9501h,AX=9502h,AX=9504h
  88156. --------N-6F9504-----------------------------
  88157. INT 6F - 10NET v5.0 - ENUMERATE USERS OF SHARED DEVICE
  88158.     AX = 9504h
  88159.     BX = zero-based shared device index
  88160.     CX = zero-based user index
  88161.     DS:SI -> server's node ID
  88162. Return: CF clear if successful
  88163.         ES:DI -> node ID of the CX'th user of the BX'th device
  88164.     CF set on error
  88165.         AX = status (see #2177)
  88166. SeeAlso: AX=9501h,AX=9502h,AX=9503h
  88167. --------N-6F99-------------------------------
  88168. INT 6F - 10NET v5.0 - AUDIT
  88169.     AH = 99h
  88170.     DS:SI -> server's node ID
  88171.     ES:DI -> data to be appended to audit trail file (max 106 bytes)
  88172. Return: CF clear if successful
  88173.     CF set on error
  88174.         AX = status (see #2177)
  88175. SeeAlso: AH=19h,AH=9Ch
  88176. --------N-6F9C-------------------------------
  88177. INT 6F - 10NET v5.0 - GET LOGIN LIST
  88178.     AH = 9Ch
  88179.     BX = zero-based index
  88180. Return: CF clear if successful
  88181.         DS:DI -> BX'th node ID that caller's machine is logged into
  88182.     CF set on error
  88183.         AX = status (see #2177)
  88184. --------H-70---------------------------------
  88185. INT 70 - IRQ8 - CMOS REAL-TIME CLOCK
  88186. Desc:    this interrupt is called when the real-time clock chip generates an
  88187.       alarm or periodic interrupt, among others.  The periodic interrupt
  88188.       occurs 1024 times per second.
  88189. Nots:    many BIOSes turn off the periodic interrupt in the INT 70h handler
  88190.       unless in an event wait (see INT 15/AH=83h or INT 15/AH=86h).
  88191.     may be masked by setting bit 0 on I/O port A1h
  88192. SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
  88193. SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview"
  88194. --------v-70---------------------------------
  88195. INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
  88196. Note:    the virus sets this interrupt to be the same as INT 21, and then
  88197.       performs only INT 70 calls; since INT 70 is also generated by the
  88198.       real-time clock on the PC/AT and higher, this could cause random
  88199.       actions on an infected system
  88200. SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
  88201. --------H-71---------------------------------
  88202. INT 71 - IRQ9 - REDIRECTED TO INT 0A BY BIOS
  88203. Notes:    may be masked by setting bit 1 on I/O port A1h
  88204.     the default BIOS handler invokes INT 0A for compatibility, since the
  88205.       pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
  88206.       AT expansion bus.
  88207.     under DESQview, only the INT 15h vector and BASIC segment address (the
  88208.       word at 0000h:0510h) may be assumed to be valid for the handler's
  88209.       process
  88210. SeeAlso: INT 0A,INT 59
  88211. --------H-72---------------------------------
  88212. INT 72 - IRQ10 - RESERVED
  88213. Note:    may be masked by setting bit 2 on I/O port A1h
  88214. SeeAlso: INT 5A
  88215. --------H-73---------------------------------
  88216. INT 73 - IRQ11 - RESERVED
  88217. Note:    may be masked by setting bit 3 on I/O port A1h
  88218. SeeAlso: INT 5B
  88219. --------H-74---------------------------------
  88220. INT 74 - IRQ12 - POINTING DEVICE (PS)
  88221. Notes:    may be masked by setting bit 4 on I/O port A1h
  88222.     under DESQview, only the INT 15h vector and BASIC segment address (the
  88223.       word at 0000h:0510h) may be assumed to be valid for the handler's
  88224.       process
  88225. SeeAlso: INT 33,INT 5C
  88226. --------H-75---------------------------------
  88227. INT 75 - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
  88228. Desc:    redirected to INT 02 by the BIOS, for compatibility with the PC
  88229. Notes:    may be masked by setting bit 5 on I/O port A1h
  88230.     not all clones wire the coprocessor to generate this IRQ; some systems
  88231.       generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
  88232.       (see INT 10"COPROCESSOR")
  88233.     under DESQview, only the INT 15h vector and BASIC segment address (the
  88234.       word at 0000h:0510h) may be assumed to be valid for the handler's
  88235.       process
  88236. SeeAlso: INT 10"COPROCESSOR",INT 5D
  88237. --------H-76---------------------------------
  88238. INT 76 - IRQ14 - HARD DISK CONTROLLER OPERATION COMPLETE (AT and later)
  88239. Notes:    may be masked by setting bit 6 on I/O port A1h
  88240.     on the PS/2, this interrupt is designed to be shared with other
  88241.       devices that produce an operation-complete interrupt, though
  88242.       the only current user is the hard disk
  88243. SeeAlso: INT 0E"IRQ6",INT 15/AH=91h,INT 5E
  88244. --------H-77---------------------------------
  88245. INT 77 - IRQ15 - RESERVED (AT,PS)
  88246. Note:    may be masked by setting bit 7 on I/O port A1h
  88247. SeeAlso: INT 5F
  88248. --------H-77---------------------------------
  88249. INT 77 - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
  88250. Note:    may be masked by setting bit 7 on I/O port A1h
  88251. SeeAlso: INT 15/AX=4600h,INT 5F
  88252. --------E-78---------------------------------
  88253. INT 78 - UofSalford DBOS DOS extender - API
  88254.     AH = function
  88255.         00h (PB) display 32-bit memory specified by command argument
  88256.         01h (PT) display 32-bit instruction(s) specified by command arg
  88257.         02h specify offset to subsequent PB and PT commands
  88258.         03h switch to protected mode
  88259.         DWORD following INT instruction point to map; protected-mode
  88260.               entry point is immediately following the DWORD
  88261.         Return: never
  88262.         Note:    if bit 31 of the map address is set, only a stub was
  88263.               loaded by DOS and DBOS will load the entire program
  88264.         04h specify that subsequent load (AH=03h) should leave program in
  88265.           memory
  88266.         05h release program from memory
  88267.         06h set break point at address and option count from commandline
  88268.         07h resume program execution
  88269.         08h single-step program
  88270.         09h set read/write breakpoint using 386 debug registers
  88271.         0Ah set write breakpoint using 386 debug register
  88272.         0Bh set memory byte to new value
  88273.         0Ch display CPU registers
  88274.         0Dh run until specified program address reached
  88275.         0Fh print trace from program map
  88276.         10h specify an offset using a map symbol
  88277.         14h print memory without any offset
  88278.         18h switch DBOS into/out of test mode (ON/OFF commandline args)
  88279.         1Dh get address of real/protected-mode communication buffer
  88280.         Return: ES:BP -> comm buffer
  88281.         1Eh set real-mode memory size (specify how much real-mode memory
  88282.           to leave free when running FTN77 programs)
  88283.         22h uninstall DBOS
  88284.         24h force DBOS to emulate coprocessor instructions
  88285.         26h set named DBOS switches from commandline
  88286.         27h reset named DBOS switched from commandline
  88287.         2Ah set list of dynamic link libraries to contents of commandline
  88288.           file
  88289.         35h specify that subsequent load (AH=03h) should stop at first
  88290.           instruction
  88291. Return: ???
  88292. Notes:    DBOS supports functions 00h through 50h; many of these functions
  88293.       provide a low-level debugging interface
  88294.     command arguments are read from the calling program's PSP
  88295. SeeAlso: INT 79"DBOS"
  88296. Index:    uninstall;DBOS DOS extender
  88297. --------E-78---------------------------------
  88298. INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
  88299. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  88300.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  88301. Notes:    this vector is overwritten when GO32 starts but is not restored by
  88302.       early versions of the extender
  88303.     the newest versions of GO32 dynamically allocate the vectors used
  88304.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  88305. SeeAlso: INT 08,INT 10/AH=FFh"GO32",INT 79"GO32"
  88306. --------A-78---------------------------------
  88307. INT 78 R - AutoCAD Device Interface - PLOTTER - SEND COMMAND
  88308.     AX = function
  88309.         0001h begin plot
  88310.         BX = file level
  88311.             0000h ASCII file
  88312.             0001h binary file
  88313.             0002h AutoCAD DXB file
  88314.             0003h installed ADI driver
  88315.         0002h end plot (close plotter)
  88316.         0003h move (pen up)
  88317.         BX = new X position
  88318.         CX = new Y position
  88319.         0004h move (pen down)
  88320.         BX = new X position
  88321.         CX = new Y position
  88322.         0005h select pen
  88323.         BX = pen number
  88324.         0006h select drawing speed
  88325.         BX = drawing speed N
  88326.         0007h select line style
  88327.         BX = line style N
  88328.         0008h raise pen
  88329.         0009h abort plot
  88330. Return: AX = 0000h (may be used for driver status in future releases)
  88331. SeeAlso: INT 79"AutoCAD",INT 7A/AX=0001h"AutoCAD",INT 7B/AX=8001h"AutoCAD"
  88332. --------d-78---------------------------------
  88333. INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
  88334. SeeAlso: INT 79"ADP-60"
  88335. --------d-7800-------------------------------
  88336. INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
  88337.     AH = 00h
  88338.     DX = interface board I/O port
  88339. Return: CF set on error
  88340.         AL = error code (see #2206)
  88341. Note:    if this routine is not called, the port is the driver's default
  88342.       (usually 0280h or 0300h)
  88343.     an installation check is performed by TARGA.DEV upon initialization
  88344.       by checking for the string "SCSI" at offset 03h into the interrupt
  88345.       handler
  88346. SeeAlso: AH=01h,AH=02h
  88347. Index:    installation check;TARGA.DEV
  88348.  
  88349. (Table 2206)
  88350. Values for TARGA.DEV error code:
  88351.  00h    illegal command given to SCSI code
  88352.  01h    invalid I/O port specified (must be from 100H to 3F8H, and must be on
  88353.       an 8-port boundary)
  88354.  02h    invalid DMA channel specified (must be from 1 to 3)
  88355.  03h    invalid SCSI board number specified (must be from 0 to 7)
  88356.  04h    error from data register test during self-test
  88357.  05h    SCSI input signals not all 0 when SCSI RST activated
  88358.  06h    SCSI input signals not all 0 before selecting a SCSI device
  88359.  07h    BSY signal is active; SCSI bus is busy
  88360.  08h    SCSI board not selected, BSY signal did not come on in response to
  88361.       raising SEL
  88362.  09h    time-out waiting for status state, signifying end of DMA transfer
  88363. ----------7800-------------------------------
  88364. INT 78 - HugeRealMode Driver - API
  88365.     AH = 00h
  88366.     AL = function
  88367.         00h installation check
  88368.         Return: AX = DBCA if installed
  88369.         01h get entry point
  88370.         Return: ES:BX -> far call entry point
  88371. Program: the HugeRealMode driver was published in the German DOS Extra Nr. 20
  88372.       (1992), and makes a 4G flat address space (for both data and code)
  88373.       available to real-mode DOS programs
  88374. --------d-7801-------------------------------
  88375. INT 78 - TARGA.DEV - GET I/O PORT
  88376.     AH = 01h
  88377. Return: DX = current interface board I/O port
  88378. SeeAlso: AH=00h,AH=03h"TARGA"
  88379. --------d-7802-------------------------------
  88380. INT 78 - TARGA.DEV - SET DMA CHANNEL
  88381.     AH = 02h
  88382.     AL = interface board DMA channel
  88383. Return: CF set on error
  88384.     AL = error code (see #2206)
  88385. Note:    if this routine is not called, the DMA channel is the driver's default
  88386.       (usually 3)
  88387. SeeAlso: AH=00h,AH=03h"TARGA"
  88388. --------d-7803-------------------------------
  88389. INT 78 - TARGA.DEV - GET DMA CHANNEL
  88390.     AH = 03h
  88391. Return: AL = current interface board DMA channel
  88392. SeeAlso: AH=01h,AH=02h
  88393. --------d-7804-------------------------------
  88394. INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
  88395.     AH = 04h
  88396.     AL = SCSI device number
  88397. Return: CF set on error
  88398.     AL = error code (see #2206)
  88399. Note:    if this routine is not called, the device number used is the driver's
  88400.       default (usually 0)
  88401. SeeAlso: AH=02h,AH=05h
  88402. --------d-7805-------------------------------
  88403. INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
  88404.     AH = 05h
  88405. Return: AL = current SCSI device number
  88406. SeeAlso: AH=03h"TARGA",AH=04h
  88407. --------d-7806-------------------------------
  88408. INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
  88409.     AH = 06h
  88410.     AL = new state
  88411.         00h clear early return mode
  88412.         01h set early return mode
  88413. Note:    if early return mode is set then SCSI will return with no errors
  88414.       when the last DMA transfer is started in a call with AH=13h or AH=14h
  88415.     if this routine is not called, early return mode is cleared
  88416. SeeAlso: AH=13h,AH=14h,AH=15h
  88417. --------d-7808-------------------------------
  88418. INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
  88419.     AH = 08h
  88420. Return: CF set on error
  88421.     AL = error code (see #2206)
  88422. Note:    the SCSI bus is also reset
  88423. SeeAlso: AH=09h
  88424. --------d-7809-------------------------------
  88425. INT 78 - TARGA.DEV - RESET SCSI BUS
  88426.     AH = 09h
  88427. Return: AL = error code if carry set (see #2206)
  88428. SeeAlso: AH=08h
  88429. --------d-7810-------------------------------
  88430. INT 78 - TARGA.DEV - SEND SCSI COMMAND
  88431.     AH = 10h
  88432.     DS:SI -> command bytes
  88433. Return: AH = SCSI status byte
  88434.     CF clear if successful
  88435.         AL = SCSI message byte
  88436.     CF set on error
  88437.         AL = error code (see #2206)
  88438. SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
  88439.  
  88440. Format of SCSI Command:
  88441. Offset    Size    Description    (Table 2207)
  88442.  00h    BYTE    length of command
  88443.  01h    ???    command bytes
  88444. --------d-7811-------------------------------
  88445. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
  88446.     AH = 11h
  88447.     DS:SI -> command bytes
  88448.     ES:BX -> data storage area
  88449.     CX = number of data bytes to transfer
  88450. Return: AH = SCSI status byte
  88451.     CF clear if successful
  88452.         AL = SCSI message byte
  88453.     CF set on error
  88454.         AL = error code (see #2206)
  88455. Note:    this command receives data internally one byte at a time
  88456. SeeAlso: AH=10h,AH=13h
  88457.  
  88458. Format of TARGA.DEV SCSI Command:
  88459. Offset    Size    Description    (Table 2208)
  88460.  00h    BYTE    length of command
  88461.  01h    ???    command bytes
  88462. --------d-7812-------------------------------
  88463. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
  88464.     AH = 12h
  88465.     DS:SI -> command bytes
  88466.     ES:BX -> data storage area
  88467.     CX = number of data bytes to transfer
  88468. Return: AH = SCSI status byte
  88469.     CF clear if successful
  88470.         AL = SCSI message byte
  88471.     CF set on error
  88472.         AL = error code (see #2206)
  88473. Note:    this command sends data internally one byte at a time
  88474. SeeAlso: AH=14h
  88475.  
  88476. Format of TARGA.DEV SCSI Command:
  88477. Offset    Size    Description    (Table 2209)
  88478.  00h    BYTE    length of command
  88479.  01h    ???    command bytes
  88480. --------d-7813-------------------------------
  88481. INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
  88482.     AH = 13h
  88483.     DS:SI -> command bytes
  88484.     ES:BX -> data storage area
  88485.     DX:CX = number of data bytes to transfer
  88486. Return: AH = SCSI status byte (if early return mode is clear)
  88487.     CF clear if successful
  88488.         AL = SCSI message byte (if early return mode is clear)
  88489.     CF set on error
  88490.         AL = error code (see #2206)
  88491. Note:    this command receives data using DMA
  88492. SeeAlso: AH=11h,AH=12h
  88493.  
  88494. Format of TARGA.DEV SCSI Command:
  88495. Offset    Size    Description    (Table 2210)
  88496.  00h    BYTE    length of command
  88497.  01h    ???    command bytes
  88498. --------d-7814-------------------------------
  88499. INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
  88500.     AH = 14h
  88501.     DS:SI -> command bytes
  88502.     ES:BX -> data storage area
  88503.     DX:CX = number of data bytes to transfer
  88504. Return: AH = SCSI status byte (if early return mode is clear)
  88505.     CF clear if successful
  88506.         AL = SCSI message byte (if early return mode is clear)
  88507.     CF set on error
  88508.         AL = error code (see #2206)
  88509. Note:    this command sends data using DMA
  88510. SeeAlso: AH=12h,AH=13h
  88511.  
  88512. Format of TARGA.DEV SCSI Command:
  88513. Offset    Size    Description    (Table 2211)
  88514.  00h    BYTE    length of command
  88515.  01h    ???    command bytes
  88516. --------d-7815-------------------------------
  88517. INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
  88518.     AH = 15h
  88519. Return: AH = SCSI status byte
  88520.     CF clear if successful
  88521.         AL = SCSI message byte
  88522.     CF set on error
  88523.         AL = error code (see #2206)
  88524. Note:    if AH=06h was previously called to set the early return mode, this
  88525.       function finishes a command AH=13h or AH=14h which returned before
  88526.       the last DMA transfer was finished
  88527. SeeAlso: AH=06h,AH=13h,AH=14h
  88528. --------V-79---------------------------------
  88529. INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
  88530. Return: CF set if no keystroke available
  88531.         AX = FFFFh
  88532.     CF clear if key pressed
  88533.         AX = keystroke
  88534. Program: AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
  88535.       AVATAR command codes just as ANSI.SYS interprets ANSI commands
  88536. Note:    if a keystroke is available, it is removed from the keyboard buffer
  88537.       before being returned
  88538. SeeAlso: INT 29,INT 2F/AX=1A00h/BX=4156h
  88539. --------E-79---------------------------------
  88540. INT 79 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ1
  88541. Notes:    this vector is overwritten when GO32 starts but is not restored by
  88542.       early versions of the extender
  88543.     the newest versions of GO32 dynamically allocate the vectors used
  88544.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  88545. SeeAlso: INT 09,INT 78"GO32",INT 7A"GO32"
  88546. --------d-79---------------------------------
  88547. INT 79 U - ADP-60 IDE adapter - ???
  88548. SeeAlso: INT 78"ADP-60"
  88549. --------E-79---------------------------------
  88550. INT 79 - DBOS DOS Extender
  88551.     details not available
  88552. Desc:    this interrupt is used by an MS Windows virtual device driver with
  88553.       which the DBOS extender communicates when run inside a Windows
  88554.       Enhanced Mode DOS box
  88555. SeeAlso: INT 78"DBOS"
  88556. --------A-790001-----------------------------
  88557. INT 79 R - AutoCAD Device Interface - DIGITIZER - INITIALIZE
  88558.     AX = 0001h
  88559.     BX = interface level (0001h)
  88560. Return: AX = status (0000h initialization failed, 0001h init successful)
  88561.     BX = digitizer type
  88562.         0000h relative pointing device (mouse, etc.)
  88563.         0001h digitizing tablet
  88564.     CX = digitizer dataflow type
  88565.         0000h continuous
  88566.         0001h pauses between packets
  88567. SeeAlso: AX=0002h,AX=0003h,INT 7A/AX=0001h"AutoCAD"
  88568. --------A-790002-----------------------------
  88569. INT 79 R - AutoCAD Device Interface - DIGITIZER - TERMINATE
  88570.     AX = 0002h
  88571. SeeAlso: AX=0001h,AX=0003h
  88572. --------A-790003-----------------------------
  88573. INT 79 R - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
  88574.     AX = 0003h
  88575. Return: AX = status
  88576.         0000h nothing
  88577.         0002h tracking point (no button pressed)
  88578.         BX = X coordinate
  88579.         CX = Y coordinate
  88580.         0003h picked point (button 0,A,B,C,D pressed)
  88581.         BX = X coordinate
  88582.         CX = Y coordinate
  88583.         0004h button pick
  88584.         BX = button number
  88585.         0005h button and coordinates
  88586.         BX = button number
  88587.         CX = X coordinate
  88588.         DX = Y coordinate
  88589. SeeAlso: AX=0001h,AX=0002h
  88590. --------N-7A---------------------------------
  88591. INT 7A U - Topware Network Operating System - ???
  88592.     AL = ???
  88593.     ???
  88594. Return: ???
  88595. SeeAlso: INT 21/AX=FF00h"Topware",INT 2F/AX=FF00h
  88596. --------N-7A---------------------------------
  88597. INT 7A - X.PC Packet software interface
  88598.     ES:BX -> parameter block
  88599. SeeAlso: INT 60/AX=01FFh
  88600. --------E-7A---------------------------------
  88601. INT 7A - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ2
  88602. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  88603.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  88604. Notes:    this vector is overwritten when GO32 starts but is not restored by
  88605.       early versions of the extender
  88606.     the newest versions of GO32 dynamically allocate the vectors used
  88607.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  88608. SeeAlso: INT 0A,INT 79"GO32",INT 7B"GO32"
  88609. --------P-7A---------------------------------
  88610. INT 7A O - PRINDIR - API (moved to INT 7C)
  88611. SeeAlso: INT 7C"PRINDIR"
  88612. --------N-7A---------------------------------
  88613. INT 7A - Novell NetWare - LOW-LEVEL API - Notes
  88614. Note:    this interrupt is used for IPX/SPX access in NetWare versions through
  88615.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  88616.       entry point even though INT 7A still exists.    For both INT 7A and
  88617.       the FAR entry point, BX contains the function number; IPX is
  88618.       sometimes called internally with BX bit 15 set, which causes the
  88619.       handler to bypass some initial checks and an optional call to the
  88620.       IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
  88621.       (see #1514)
  88622. SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
  88623. --------N-7A----BX0000-----------------------
  88624. INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
  88625.     BX = 0000h
  88626.     AL = socket longevity
  88627.         00h open until close or terminate
  88628.         FFh open until close
  88629.     DX = socket number (high byte in DL)
  88630.         0000h dynamic allocation
  88631.         else  socket to open (see #2212)
  88632. Return: AL = return code
  88633.         00h success
  88634.         DX = socket number
  88635.         FEh socket table full
  88636.         FFh socket already open
  88637. Notes:    TSRs which need to use sockets should set AL to FFh, non-resident
  88638.       programs should normally use AL=00h
  88639.     IPX can be configured to support up to 150 open sockets on a
  88640.       workstation, and defaults to 20
  88641.     this function is supported by Advanced NetWare 1.02+
  88642. SeeAlso: INT 7A/BX=0001h,INT 7A/BX=0004h,INT 7A/BX=0023h
  88643.  
  88644. (Table 2212)
  88645. Values for IPX socket number:
  88646.  0451h    File Service (NetWare Core Protocol)
  88647.  0452h    Service Advertising Protocol
  88648.  0453h    Routing Information Packet
  88649.  0455h    NetBIOS Packet
  88650.  0456h    diagnostics
  88651.  0457h    server serial numbers (labeled "Copy Protection" by Lanalyzer)
  88652.  4000h-7FFFh used for dynamic allocation
  88653.  4444h    Brightwork Development's SiteLock server
  88654.  5555h    Brightwork Development's SiteLock client (workstation)
  88655.  8000h-FFFFh assigned by Novell
  88656. Note:    SiteLock is an application metering product using IPX to communicate
  88657.       between the application and the license server
  88658. --------N-7A----BX0001-----------------------
  88659. INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
  88660.     BX = 0001h
  88661.     DX = socket number (high byte in DL)
  88662. Notes:    also cancels events set by any Event Control Blocks for the socket
  88663.     the program must close all open sockets before terminating
  88664.     this function is supported by Advanced NetWare 1.02+
  88665. SeeAlso: BX=0000h
  88666. --------N-7A----BX0002-----------------------
  88667. INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
  88668.     BX = 0002h
  88669.     ES:SI -> target internetwork address (see INT 7A/BX=000Bh)
  88670.     ES:DI -> 6-byte buffer for local target
  88671. Return: AL = return code
  88672.         00h success
  88673.            CX = expected one-way transfer time (clock ticks) for a 576-byte
  88674.               packet
  88675.            ES:DI -> local target
  88676.         FAh unsuccessful (no path to destination)
  88677. Notes:    the internetwork address consists of a 4-byte network address followed
  88678.       by a 6-byte node address.  The local target is only a 6-byte node
  88679.       address.  If the target is in the same network, the local target is
  88680.       just the node address of target; otherwise, the local target is the
  88681.       node address of the bridge that leads to the target.
  88682.     this function may be called from inside IPX and AES Event Service
  88683.       Routines, but not from other interrupt handlers
  88684.     this function is supported by Advanced NetWare 1.02+
  88685. SeeAlso: BX=0009h
  88686. --------N-7A----BX0003-----------------------
  88687. INT 7A - Novell NetWare - IPX Driver - SEND PACKET
  88688.     BX = 0003h
  88689.     ES:SI -> Event Control Block (see #2213,#2214)
  88690. Notes:    returns immediately; IPX attempts to send the packet in the background
  88691.     this function is supported by Advanced NetWare 1.02+
  88692.     this function is nearly identical to BX=000Fh, except that it always
  88693.       copies the source address into the IPX header assumed to be at the
  88694.       beginning of the first fragment
  88695. SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
  88696.  
  88697. Format of IPX Event Control Block:
  88698. Offset    Size    Description    (Table 2213)
  88699.  00h    DWORD    Link
  88700.  04h    DWORD    -> Event Service Routine (00000000h if none)
  88701.  08h    BYTE    in use flag (see #2215)
  88702.  09h    BYTE    completion code (see #2216)
  88703.  0Ah    WORD    (big-endian) socket number (see INT 7A/BX=0000h)
  88704.  0Ch  4 BYTEs    IPX workspace
  88705.  10h 12 BYTEs    driver workspace
  88706.  1Ch  6 BYTEs    immediate local node address
  88707.  22h    WORD    fragment count
  88708.  24h    var    fragment descriptors
  88709.         Offset    Size    Description
  88710.          00h    DWORD    -> fragment data
  88711.          04h    WORD    size of fragment in bytes.
  88712. Notes:    ESR is a far procedure that is called when the ECB has been handled.
  88713.       On call, the in use flag is zero if the ECB has been handled,
  88714.       non-zero otherwise. If the flag is zero, the completion code holds
  88715.       the result of the event.
  88716.     the first fragment should start with an IPX header
  88717.     all fragments are concatenated and sent in one piece
  88718.     node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
  88719.  
  88720. Format of AES-ECB:
  88721. Offset    Size    Description    (Table 2214)
  88722.  00h    DWORD    Link
  88723.  04h    DWORD    ESR address
  88724.  08h    BYTE    in use flag (see #2215)
  88725.  09h  5 BYTEs    AES workspace
  88726.  
  88727. (Table 2215)
  88728. Values for ECB in use flag:
  88729.  00h    available
  88730.  E0h    AES temporary
  88731.  F6h    \ special IPX/SPX processing for v3.02+
  88732.  F7h    /
  88733.  F8h    IPX in critical section
  88734.  F9h    SPX listening
  88735.  FAh    processing
  88736.  FBh    holding
  88737.  FCh    AES waiting
  88738.  FDh    AES couting down delay time
  88739.  FEh    awaiting packet reception
  88740.  FFh    sending packet
  88741.  
  88742. (Table 2216)
  88743. Values for ECB completion code:
  88744.  00h    success
  88745.  ECh    remote terminated connection without acknowledging packet
  88746.  EDh    abnormal connection termination
  88747.  EEh    invalid connection ID
  88748.  EFh    SPX connection table full
  88749.  F9h    event should not be cancelled
  88750.  FAh    cannot establish connection with specified destination
  88751.  FCh    cancelled
  88752.  FDh    malformed packet
  88753.  FEh    packet undeliverable
  88754.  FFh    physical error
  88755.  
  88756. (Table 2217)
  88757. Values event Service Routine is called with:
  88758.     AL = caller's identity (00h = AES, FFh = IPX)
  88759.     ES:SI -> event control block
  88760.     interrupts disabled
  88761.  
  88762. Format of IPX header:
  88763. Offset    Size    Description    (Table 2218)
  88764.  00h    WORD    (big-endian) checksum
  88765.  02h    WORD    (big-endian) length in bytes of total packet
  88766.  04h    BYTE    transport control
  88767.  05h    BYTE    packet type (see #2219)
  88768.  06h 10 BYTEs    destination internetwork address
  88769.  10h    WORD    (big-endian) destination socket
  88770.  12h 10 BYTEs    source internetwork address
  88771.  1Ch    WORD    (big-endian) source socket
  88772.  
  88773. (Table 2219)
  88774. Values for IPX packet type:
  88775.  00h    unknown packet type
  88776.  01h    routing information packet
  88777.  02h    echo packet
  88778.  03h    error packet
  88779.  04h    packet exchange packet (always use this one)
  88780.  05h    SPX packet
  88781.  11h    NetWare Core Protocol
  88782.  14h    Propagated Packet (for NetWare), NetBIOS name packet
  88783.  15h-1Eh experimental protocols
  88784. Note:    undocumented packet type 14h will cross up to 16 networks deep in
  88785.       all directions; as Aaron Martin of Origin Systems discovered, the
  88786.       first 64 bytes of the IPX data in such packets should be considered
  88787.       reserved, as IPX places the traversed server nodes there.
  88788.  
  88789. Format of Service Advertising Protocol Service Query Packet:
  88790. Offset    Size    Description    (Table 2220)
  88791.  00h 30 BYTEs    IPX header
  88792.  1Eh    WORD    (big-endian) query type
  88793.         0001h general find service
  88794.         0003h find nearest server
  88795.  20h    WORD    (big-endian) server type (see INT 21/AH=E3h"NetWare")
  88796.  
  88797. Format of Service Advertising Protocol Server Identification Packet:
  88798. Offset    Size    Description    (Table 2221)
  88799.  00h 30 BYTEs    IPX header
  88800.  1Eh    WORD    (big-endian) response type
  88801.         0002h general service
  88802.         0004h nearest service
  88803.  20h 64N BYTEs    server entries (1-7) (see #2222)
  88804.  
  88805. Format of SAP server entry:
  88806. Offset    Size    Description    (Table 2222)
  88807.  00h    WORD    (big-endian) server type (see INT 21/AH=E3h"NetWare")
  88808.  02h 48 BYTEs    ASCIZ server name
  88809.  32h  2 WORDs    (big-endian) network number
  88810.  34h  3 WORDs    (big-endian) node number
  88811.  3Ch    WORD    (big-endian) socket number
  88812.  3Eh    WORD    (big-endian) number of hops between caller and server
  88813.  
  88814. Format of IPX Routing Information packet:
  88815. Offset    Size    Description    (Table 2223)
  88816.  00h 30 BYTEs    IPX header
  88817.  1Eh    WORD    operation (0001h request, 0002h response)
  88818.  20h 8N BYTEs    network entries (1-50) (see #2224)
  88819.  
  88820. Format of RIP network entry:
  88821. Offset    Size    Description    (Table 2224)
  88822.  00h    DWORD    network number (FFFFFFFFh = general request)
  88823.  04h    WORD    (response) number of hops
  88824.  06h    WORD    (response) number of clock ticks to reach destination
  88825. --------N-7A----BX0004-----------------------
  88826. INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
  88827.     BX = 0004h
  88828.     ES:SI -> Event Control Block (see BX=0003h)
  88829. Return: AL = status
  88830.         00h successful
  88831.         FFh no listening socket for packet
  88832. Desc:    this function provides IPX with an ECB for receiving an IPX packet, but
  88833.       does not wait for a packet to arrive
  88834. Notes:    the application must open a socket and initialize the ECB's ESR
  88835.       address, socket number, fragment count, and fragment descriptor
  88836.       fields before invoking this function
  88837.     there is no limit on the number of ECBs which may simultaneously be
  88838.       listening on a socket
  88839.     this function is supported by Advanced NetWare 1.02+
  88840. SeeAlso: BX=0000h,BX=0003h
  88841. --------N-7A----BX0005-----------------------
  88842. INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
  88843.     BX = 0005h
  88844.     AX = delay time in clock ticks
  88845.     ES:SI -> Event Control Block (see BX=0003h)
  88846. Note:    this function is supported by Advanced NetWare 1.02+
  88847. SeeAlso: BX=0006h,BX=0007h,BX=0008h
  88848. --------N-7A----BX0006-----------------------
  88849. INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
  88850.     BX = 0006h
  88851.     ES:SI -> Event Control Block (see BX=0003h)
  88852. Return: AL = return code (see #2225)
  88853. Notes:    cannot cancel packets which the node's driver has already sent
  88854.     this function is supported by Advanced NetWare 1.02+
  88855. SeeAlso: BX=0005h
  88856.  
  88857. (Table 2225)
  88858. Values for IPX return code:
  88859.  00h    success
  88860.  F9h    event in use
  88861.  FCh    event cancelled
  88862.  FFh    unsuccessful, event not in use, or unrecognized ECB flag
  88863. --------N-7A----BX0007-----------------------
  88864. INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
  88865.     BX = 0007h
  88866.     AX = delay time
  88867.     ES:SI -> Event Control Block (see BX=0003h)
  88868. Note:    this function is supported by Advanced NetWare 1.02+
  88869. SeeAlso: BX=0006h
  88870. --------N-7A----BX0008-----------------------
  88871. INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
  88872.     BX = 0008h
  88873. Return: AX = interval marker in clock ticks
  88874. Notes:    may be used to measure the time elapsed between two events, up to one
  88875.       hour
  88876.     this function is supported by Advanced NetWare 1.02+
  88877. SeeAlso: BX=0005h
  88878. --------N-7A----BX0009-----------------------
  88879. INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
  88880.     BX = 0009h
  88881.     ES:SI -> buffer for own internetwork address (see #2226)
  88882. Return: ES:SI buffer filled
  88883.     SI destroyed
  88884. Note:    this function is supported by Advanced NetWare 1.02+
  88885. SeeAlso: BX=0002h,BX=000Bh
  88886.  
  88887. Format of IPX internetwork address:
  88888. Offset    Size    Description    (Table 2226)
  88889.  00h  4 BYTEs    (big-endian) network number
  88890.  04h  6 BYTEs    (big-endian) node number within network
  88891. --------N-7A----BX000A-----------------------
  88892. INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
  88893.     BX = 000Ah
  88894. Desc:    this call indicates that the application is idle and permits the IPX
  88895.       driver to do some work
  88896. Note:    this function is supported by Advanced NetWare 1.02+
  88897. SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
  88898. --------N-7A----BX000B-----------------------
  88899. INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
  88900.     BX = 000Bh
  88901.     ES:SI -> internetwork address (see #2227)
  88902. Notes:    this function permits the network software on the remote machine to
  88903.       remove any virtual connection with the calling machine
  88904.     only use in point-to-point networks
  88905.     should never be called from within an Event Service Routine
  88906.     this function is supported by Advanced NetWare 1.02+
  88907. SeeAlso: BX=0002h,BX=0009h
  88908.  
  88909. Format of IPX internetwork address:
  88910. Offset    Size    Description    (Table 2227)
  88911.  00h  4 BYTEs    (big-endian) destination network
  88912.  04h  6 BYTEs    (big-endian) destination node
  88913.  0Ah  2 BYTEs    (big-endian) destination socket
  88914. --------N-7A----BX000C-----------------------
  88915. INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
  88916.     BX = 000Ch
  88917.     CX:DX = global network address (see INT 7A/BX=0002h)
  88918.     ES:DI -> "OSINCRITICALSECTION" flag
  88919.     DS:SI -> current mode for socket
  88920. Note:    the address cannot be changed once it has been initialized
  88921. SeeAlso: INT 7A/BX=0024h
  88922. --------N-7A----BX000D-----------------------
  88923. INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
  88924.     BX = 000Dh
  88925. Return: AX = maximum packet size
  88926.     CX = retry count
  88927. SeeAlso: BX=001Ah
  88928. --------N-7A----BX000E-----------------------
  88929. INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
  88930.     BX = 000Eh
  88931. Return: nothing
  88932. Notes:    this function terminates all sockets opened with the current mode; this
  88933.       may be intended for future enhancements as the socket mode never
  88934.       changes in v2.15
  88935.     called by the NetWare shell if a program terminates
  88936. --------N-7A----BX000F-----------------------
  88937. INT 7A - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
  88938.     BX = 000Fh
  88939.     ES:SI -> Event Control Block (see BX=0003h)
  88940. Note:    nearly identical to function 0003h, but does not copy address into
  88941.       the first fragment, and bypasses normal error checking
  88942. SeeAlso: BX=0003h
  88943. --------N-7A----BX0010-----------------------
  88944. INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
  88945.     BX = 0010h
  88946.     AL = 00h
  88947. Return: AL = FFh if SPX loaded
  88948.         BH = SPX major version
  88949.         BL = SPX minor version
  88950.         CX = maximum SPX connections
  88951.         DX = SPX connections available
  88952. Notes:    this function is supported by Advanced NetWare 2.1+
  88953.     this interrupt is used for IPX/SPX access in NetWare versions through
  88954.       2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
  88955.       entry point even though INT 7A still exists.    For both INT 7A and
  88956.       the FAR entry point, BX contains the function number
  88957.     IPX is sometimes called internally with BX bit 15 set, which causes the
  88958.       entry point handler to bypass some checks and an optional call to
  88959.       the IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
  88960.       (see #1514)
  88961. SeeAlso: BX=0015h
  88962. --------N-7A----BX0011-----------------------
  88963. INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
  88964.     BX = 0011h
  88965.     AL = retry count
  88966.     AH = watchdog flag
  88967.     ES:SI -> Event Control Block (see BX=0003h)
  88968. Return: AL = status (see #2228)
  88969.     DX = assigned connection ID number
  88970. Desc:    attempt to establish a connection with a listening socket
  88971. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  88972.       that NetWare can perform its internal packet exchanges
  88973.     the first fragment should start with a SPX header.  Fill in all
  88974.       destination addresses.
  88975.     this function is supported by Advanced NetWare 2.1+
  88976. SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
  88977.  
  88978. (Table 2228)
  88979. Values for SPX function status:
  88980.  00h    attempting to contact destination socket
  88981.  EFh    local connection table full
  88982.  FDh    buffer size not 42 or fragment count not 1
  88983.  FFh    sending socket not open
  88984.  
  88985. Format of SPX header:
  88986. Offset    Size    Description    (Table 2229)
  88987.  00h    WORD    (big-endian) checksum
  88988.  02h    WORD    (big-endian) length in bytes of total packet
  88989.  04h    BYTE    transport control
  88990.  05h    BYTE    packet type (see INT 7A/BX=0003h)
  88991.  06h 10 BYTEs    destination internet address
  88992.  10h    WORD    (big-endian) destination socket
  88993.  12h 10 BYTEs    source internet address
  88994.  1Ch    WORD    (big-endian) source socket
  88995.  1Eh    BYTE    connection control (see #2230)
  88996.  1Fh    BYTE    datastream type
  88997.         FEh terminate connection request packet
  88998.         FFh terminate connection acknowledgement packet
  88999.         other user-defined, ignored by SPX
  89000.  20h    WORD    (big-endian) source connection ID
  89001.  22h    WORD    (big-endian) destination connection ID
  89002.  24h    WORD    (big-endian) sequence number
  89003.  26h    WORD    (big-endian) acknowledge number
  89004.  28h    WORD    (big-endian) allocation number
  89005.  
  89006. Bitfields for SPX connection control:
  89007. Bit(s)    Description    (Table 2230)
  89008.  3-0    unused???
  89009.  4    end of message
  89010.  5    reserved
  89011.  6    acknowledgement required
  89012.  7    system packet
  89013. --------N-7A----BX0012-----------------------
  89014. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
  89015.     BX = 0012h
  89016.     AH = watchdog flag (00h disabled, 01h enabled)
  89017.     AL = retry count (00h = default)
  89018.     ES:SI -> Event Control Block (see BX=0003h)
  89019. Notes:    there should always be at least two SPX ECB's listening to a socket, so
  89020.       that NetWare can perform its internal packet exchanges
  89021.     this function is supported by Advanced NetWare 2.1+
  89022. SeeAlso: BX=0011h,BX=0013h,BX=0014h
  89023. --------N-7A----BX0013-----------------------
  89024. INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
  89025.     BX = 0013h
  89026.     DX = connection ID to terminate
  89027.     ES:SI -> Event Control Block (see BX=0003h)
  89028. Note:    this function is supported by Advanced NetWare 2.1+
  89029. SeeAlso: BX=0011h,BX=0012h,BX=0014h
  89030. --------N-7A----BX0014-----------------------
  89031. INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
  89032.     BX = 0014h
  89033.     DX = connection ID to terminate
  89034. Notes:    this function is supported by Advanced NetWare 2.1+
  89035.     this function does not tell the other side that the connection has been
  89036.       terminated
  89037.     also aborts any outstanding Establish Connection, Terminate Connection,
  89038.       and Send Sequenced Packet commands
  89039. SeeAlso: BX=0011h,BX=0013h
  89040. --------N-7A----BX0015-----------------------
  89041. INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
  89042.     BX = 0015h
  89043.     DX = connection ID
  89044.     ES:SI -> status buffer (see #2231)
  89045. Return: AL = return code
  89046.         00h connection still valid
  89047.         ES:SI -> status buffer filled
  89048.         EEh no such connection
  89049. Note:    this function is supported by Advanced NetWare 2.1+
  89050. SeeAlso: BX=0010h,BX=0011h
  89051.  
  89052. Format of SPX status buffer:
  89053. Offset    Size    Description    (Table 2231)
  89054.  00h    BYTE    connection state
  89055.         01h waiting to establish connection
  89056.         02h starting (attempting to create connection)
  89057.         03h connection established
  89058.         04h terminating
  89059.  01h    BYTE    watchdog flag
  89060.         bit 0: used internally by SPX
  89061.         bit 1: SPX watchdog is monitoring connection
  89062.         bits 2-7 used internally by SPX
  89063.  02h    WORD    (big-endian) source connection ID
  89064.  04h    WORD    (big-endian) destination connection ID
  89065.  06h    WORD    (big-endian) sequence number of next packet sent
  89066.  08h    WORD    (big-endian) acknowledge number, expected sequence number of
  89067.           next received packet
  89068.  0Ah    WORD    (big-endian) maximum sequence number remote SPX may send
  89069.           without ACK from local SPX
  89070.  0Ch    WORD    (big-endian) remote acknowledge number, next sequence number
  89071.           remote SPX expects to receive
  89072.  0Eh    WORD    (big-endian) remote allocation number, maximum sequence number
  89073.           local SPX may send
  89074.  10h    WORD    (big-endian) connection socket
  89075.  12h  6 BYTEs    immediate node address--bridge on local network to destination
  89076.  18h 10 BYTEs    destination internetwork address (see INT 7A/BX=000Bh)
  89077.  22h    WORD    (big-endian) retransmit count
  89078.  24h    WORD    (big-endian) estimated roundtrip delay
  89079.  26h    WORD    (big-endian) retransmitted packets
  89080.  28h    WORD    (big-endian) suppressed packets
  89081.  2Ah 12 BYTEs    ??? (v2.15)
  89082. --------N-7A----BX0016-----------------------
  89083. INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
  89084.     BX = 0016h
  89085.     DX = connection ID
  89086.     ES:SI -> Event Control Block (see BX=0003h)
  89087. Notes:    this function is supported by Advanced NetWare 2.1+
  89088.     CX may need to be 0001h ???
  89089. SeeAlso: BX=0011h,BX=0017h
  89090. --------N-7A----BX0017-----------------------
  89091. INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
  89092.     BX = 0017h
  89093.     DX = connection ID (unused in v2.15)
  89094.     ES:SI -> Event Control Block (see BX=0003h)
  89095. Notes:    this function is supported by Advanced NetWare 2.1+
  89096.     CX may need to be 0001h ???
  89097. SeeAlso: BX=0011h,BX=0016h
  89098. --------N-7A----BX0018-----------------------
  89099. INT 7A U - Novell NetWare - IPX Driver - internal - ADD DIAGNOSTIC ELEMENT
  89100.     BX = 0018h
  89101.     ES:SI -> diagnostic element (see #2232) to be added to Diagnostic Queue
  89102. Note:    this function is supported on file servers only under v2.15; v3.02 also
  89103.       supports it on workstations
  89104. SeeAlso: BX=0019h
  89105.  
  89106. Format of IPX diagnostic element:
  89107. Offset    Size    Description    (Table 2232)
  89108.  00h    DWORD    pointer to next diagnostic element
  89109.  04h    DWORD    pointer to function for ???
  89110.  08h    DWORD    pointer to function for ???
  89111. --------N-7A----BX0019-----------------------
  89112. INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
  89113.     BX = 0019h
  89114.     ES:SI -> diagnostic element (see BX=0018h) to be removed
  89115. Note:    this function is supported on file servers only under v2.15; v3.02 also
  89116.       supports it on workstations
  89117. SeeAlso: BX=0018h
  89118. --------N-7A----BX001A-----------------------
  89119. INT 7A - Novell NetWare - IPX Driver - internal - GET DRIVER PACKT SIZE LIMIT
  89120.     BX = 001Ah
  89121. Return: AX = packet size with preamble
  89122.     CX = IPX retry count
  89123. Note:    this function is has existed since November 1989; it is documented in
  89124.       Novell document FYI.A.3709, 03May91
  89125. SeeAlso: BX=000Dh
  89126. --------N-7A----BX001B-----------------------
  89127. INT 7A U - Novell NetWare - IPX Driver - INTERNAL
  89128.     BX = 001Bh
  89129.     ???
  89130. Return: ???
  89131. Notes:    this function is supported on file servers only under v2.15; v3.02 also
  89132.       supports it on workstations
  89133.     used by NetWare Access Server
  89134. --------N-7A----BX001C-----------------------
  89135. INT 7A U - Novell NetWare - NetWare Access Server - ???
  89136.     BX = 001Ch to 001Eh
  89137.     ???
  89138. Return: ???
  89139.     BX corrupted
  89140. Notes:    these functions are NOPs for standard IPX drivers such as IPXODI v2.12
  89141. SeeAlso: INT 2F/AX=7AF1h
  89142. --------N-7A----BX001F-----------------------
  89143. INT 7A - Novell NetWare - IPXODI v2.12+ - GET IPX FLAGS
  89144.     BX = 001Fh
  89145.     DX = 0000h
  89146. Return: AX = ???
  89147.     BX:CX -> ??? entry point (see #2233)
  89148.     DX = flags
  89149.         bit 0: IPXODI rather than dedicated IPX
  89150.         bit 1: checksumming functions 0020h-0022h supported
  89151.     ES:SI -> array of words containing used socket number (undocumented);
  89152.         0000h ends array
  89153. Note:    IPXODI v2.12 is distributed as part of the Personal NetWare system
  89154.       bundled with Novell DOS 7
  89155. SeeAlso: BX=0020h,INT 2F/AX=7A2Fh
  89156.  
  89157. (Table 2233)
  89158. Call IPXODI entry point with:
  89159.     ES:SI -> ??? data (offset 24h is far pointer to ??? data)
  89160. --------N-7A----BX0020-----------------------
  89161. INT 7A - Novell NetWare - IPXODI v2.12+ - SEND WITH CHECKSUM
  89162.     BX = 0020h
  89163.     ES:SI -> ECB data (see #2234)
  89164. Return: DS preserved
  89165.     BX,BP corrupted
  89166. SeeAlso: BX=001Fh,BX=0021h,BX=0022h,INT 2F/AX=7A2Fh
  89167.  
  89168. Format of ECB data:
  89169. Offset    Size    Description    (Table 2234)
  89170.  00h  8 BYTEs    ???
  89171.  08h    BYTE    (return) ???
  89172.  09h    BYTE    (return) ???
  89173.  0Ah    WORD    ???
  89174.  0Ch 16 BYTEs    ???
  89175.  1Ch  3 WORDs    ???
  89176.  22h    WORD    number of records at offset 28h
  89177.  24h    DWORD    -> ???
  89178.  28h 6N BYTEs    ??? records
  89179. --------N-7A----BX0021-----------------------
  89180. INT 7A - Novell NetWare - IPXODI v2.12+ - IPX GENERATE CHECKSUM
  89181.     BX = 0021h
  89182.     ES:SI -> ECB data (see #2234)
  89183. Return: ES,DS,SI preserved
  89184.     BX,BP corrupted
  89185. Notes:    the checksum and TransportControl fields of the IPX packet are updated
  89186.     this function enables interrupts and is fully reentrant
  89187. SeeAlso: BX=001Fh,BX=0020h,BX=0022h,INT 2F/AX=7A2Fh
  89188. --------N-7A----BX0022-----------------------
  89189. INT 7A - Novell NetWare - IPXODI v2.12+ - IPX VERIFY CHECKSUM
  89190.     BX = 0022h
  89191.     ES:SI -> ECB data (see #2234)
  89192. Return: AX = status (0000h checksum matches)
  89193.     DS,ES,SI preserved
  89194.     BX,BP corrupted
  89195. Note:    this function enables interrupts and is fully reentrant
  89196. SeeAlso: BX=001Fh,BX=0020h,BX=0021h,INT 2F/AX=7A2Fh
  89197. --------N-7A----BX0023-----------------------
  89198. INT 7A - Novell NetWare - IPXODI v2.12+ - OPEN LOOK-AHEAD SOCKET
  89199.     BX = 0023h
  89200.     AL = ???
  89201.     DX = socket number
  89202.     ES:SI -> Look Ahead handler (see #2235)
  89203. Return: AL = 00h if successful
  89204.     BX corrupted
  89205. Notes:    the socket will always be long-lived, and must thus be explicitly
  89206.       closed with INT 7A/BX=0001h before the Look Ahead handler code is
  89207.       removed from memory (i.e. the program terminates)
  89208.     this function is only supported if INT 2F/AX=7A00h returns ES:BX
  89209.       pointing at an IPX version greater than 3.30
  89210. SeeAlso: INT 7A/BX=0000h,INT 7A/BX=0001h
  89211.  
  89212. (Table 2235)
  89213. Call IPX Look-Ahead handler with:
  89214.     AX = socket
  89215.     DS:SI -> look-ahead structure (see #1583 at INT 2F/AX=C000h"LSL")
  89216.     DF clear
  89217.     interrupt disabled (must remain disabled)
  89218. Return: AX = packet use
  89219.         0000h application want packet
  89220.         ES:SI -> ODI ECB (see #1584 at INT 2F/AX=C000h"LSL")
  89221.         8001h application does not want packet
  89222.     ZF set if AX=0000h
  89223.     DS,DI,BP,SS,SP preserved
  89224. --------N-7A----BX0024-----------------------
  89225. INT 7A U - Novell NetWare - IPXODI v2.20+ - SET INTERNETWORK ADDRESS
  89226.     BX = 0024h
  89227.     ES:SI -> buffer containing internetwork address (see #2227)
  89228. Return: BX,CX,SI,DI,ES destroyed
  89229. Note:    this function differs from INT 7A/BX=000Ch in that it unconditionally
  89230.       sets the address
  89231. SeeAlso: INT 7A/BX=000Ch
  89232. --------A-7A0001-----------------------------
  89233. INT 7A R - AutoCAD Device Interface - DISPLAY - INITIALIZE (INIT1)
  89234.     AX = 0001h
  89235.     BX = configuration
  89236.     CX = interface level (0001h)
  89237. Return: AX = status
  89238.         0000h initialization failed
  89239.         0001h pre-v4.0 driver initialized successfully
  89240.         0003h post-v3.1 driver initialized successfully (driver truncates
  89241.           excessivly long packets)
  89242.     BX = width of graphics area in pixels, or 0000h if using packet
  89243.           communication
  89244.     DX:CX -> packet-mode entry point (see #2236)
  89245. SeeAlso: AX=0001h,AX=0200h,AX=07D0h,INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD"
  89246. SeeAlso: INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD",INT 7C"AutoShade"
  89247.  
  89248. (Table 2236)
  89249. Call packet-mode entry point with:
  89250. STACK:    DWORD    pointer to request packet (see #2237)
  89251.     WORD    length of packet
  89252.  
  89253. Format of request packet:
  89254. Offset    Size    Description    (Table 2237)
  89255.  00h    WORD    function number (00h-45h for Compaq VGADI41.EXE)
  89256. --------A-7A0200BX0000-----------------------
  89257. INT 7A R - AutoCAD Device Interface - RENDERING DEVICE - INITIALIZE (RDLINKUP)
  89258.     AX = 0200h
  89259.     BX = 0000h
  89260.     CX = interface level (0001h)
  89261. Return: BX = 0000h (driver uses packet communication)
  89262.     DX:CX -> packet-mode entry point (see #2236)
  89263. SeeAlso: AX=0001h"AutoCAD",INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD"
  89264. --------I-7A04-------------------------------
  89265. INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
  89266.     AH = 04h
  89267.     ???
  89268. Return: ???
  89269. SeeAlso: AH=06h
  89270. --------I-7A06-------------------------------
  89271. INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
  89272.     AH = 06h
  89273.     ???
  89274. Return: ???
  89275. SeeAlso: AH=04h
  89276. ----------7A07D0-----------------------------
  89277. INT 7A R - AutoCAD Device Interface - Compaq VGADI41.EXE - GET ENTRY POINT
  89278.     AX = 07D0h
  89279. Return: AX = ??? (0003h)
  89280.     BX = 0000h
  89281.     DX:CX -> ADI entry point (see AX=0001h)
  89282. SeeAlso: AX=0001h
  89283. --------I-7A09--BX8020-----------------------
  89284. INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
  89285.     AH = 09h
  89286.     BX = 8020h (synchronous request)
  89287.     CX = 0000h
  89288.     DX = ID of session manager (SESSMGR)
  89289.     AL = service (see #2238)
  89290.     ES:DI -> control block
  89291. Return: ???
  89292.  
  89293. (Table 2238)
  89294. Values for service:
  89295.  01h    get session ID
  89296.  02h    get session info
  89297.  04h    dettach from session
  89298.  05h    attach to session
  89299.  06h    get list of windows available
  89300.  07h    get environment of window
  89301.  08h    get 'PIF' (program information file) info
  89302.  0Ah    get base window ID
  89303.  0Bh    get cursor info
  89304. --------I-7A09--BX8020-----------------------
  89305. INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
  89306.     AH = 09h
  89307.     BX = 8020h (synchronous request)
  89308.     CX = 0000h
  89309.     DX = ID of keyboard manager
  89310.     AL = service number (see #2239)
  89311.     ES:DI -> control block
  89312. Return: ???
  89313.  
  89314. (Table 2239)
  89315. Values for 3270 Workstation Program keyboard service:
  89316.  01h    connect to keyboard
  89317.  02h    disconnect from keyboard
  89318.  03h    read from keyboard
  89319.  04h    send keystroke to session
  89320.  05h    disable input
  89321.  06h    enable input
  89322.  07h    update status code
  89323. --------I-7A09--BX8020-----------------------
  89324. INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
  89325.     AH = 09h
  89326.     BX = 8020h (synchronous request)
  89327.     CX = 00FFh
  89328.     DX = ID of window service controller (WSCTRL)
  89329.     AL = service number (see #2240)
  89330.     ES:DI -> control block
  89331. Return: ???
  89332.  
  89333. (Table 2240)
  89334. Values for 3270 Workstation Program window service:
  89335.  01h    connect to WS control
  89336.  02h    disconnect from WS control
  89337.  03h    add a window
  89338.  04h    change window's position on screen
  89339.  05h    change window's size
  89340.  06h    change window's color
  89341.  07h    change window's position in the presentation space
  89342.  08h    hide/unhide toggle
  89343.  09h    enlarge/reduce toggle
  89344.  0Ah    change screen background color
  89345.  0Bh    get window's position on screen
  89346.  0Ch    get window's size
  89347.  0Dh    get window's color
  89348.  0Eh    get window's position in the presentation space
  89349.  0Fh    determine whether hidden
  89350.  10h    determine whether enlarged
  89351.  11h    get background color
  89352.  12h    get window names
  89353.  13h    delete all windows from profile
  89354.  14h    pick active window
  89355.  15h    redraw screen
  89356.  16h    redraw window
  89357.  17h    delete a window from profile
  89358.  18h    get active window
  89359.  19h    get active screen
  89360.  1Ah    get window data
  89361.  1Bh    change window data
  89362.  1Ch    select active screen
  89363. --------I-7A09--BX8020-----------------------
  89364. INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
  89365.     AH = 09h
  89366.     BX = 8020h
  89367.     CX = 00FFh
  89368.     DX = ID of PCPSM
  89369.     AL = service
  89370.         01h define presentation space
  89371.         02h delete presentation space
  89372.         03h display presentation space
  89373.         04h position cursor in presentation space
  89374.         05h change default presentation space
  89375.     ES:DI -> control block
  89376. Return: ???
  89377. --------I-7A09--BX8020-----------------------
  89378. INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
  89379.     AH = 09h
  89380.     BX = 8020h
  89381.     CX = 00FFh
  89382.     DX = ID of 3270EML
  89383.     AL = service
  89384.         01h connect
  89385.         02h disconnect
  89386.     ES:DI -> control block
  89387. Return: ???
  89388. --------I-7A09--BX8020-----------------------
  89389. INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
  89390.     AH = 09h
  89391.     BX = 8020h
  89392.     CX = 00FFh
  89393.     DX = ID of OIAM
  89394.     AL = service
  89395.         01h read Operator Information Area
  89396.         02h read OIA subset
  89397.     ES:DI -> control block
  89398. Return: ???
  89399. Note: the OIA is the 25th line on the Host session
  89400. --------I-7A09--BX8020-----------------------
  89401. INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
  89402.     AH = 09h
  89403.     BX = 8020h
  89404.     CX = 00FFh
  89405.     DX = ID of XLATE
  89406.     AL = service
  89407.         01h translate from host characters to ASCII and vice versa
  89408.         (determined by control block byte 11)
  89409.     ES:DI -> control block
  89410. Return: ???
  89411. --------I-7A09--BX8020-----------------------
  89412. INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
  89413.     AH = 09h
  89414.     BX = 8020h
  89415.     CX = 00FFh
  89416.     DX = ID of copy service
  89417.     AL = service
  89418.         01h copy string from one presentation space to another
  89419.         02h copy block from one presentation space to another
  89420.         03h connect to PC session for copy
  89421.         04h disconnect PC session from copy
  89422.     ES:DI -> control block
  89423. Return: ???
  89424. --------I-7A09--BX8020-----------------------
  89425. INT 7A - IBM 3270 Workstation Program API - Multi-DOS
  89426.     AH = 09h
  89427.     BX = 8020h
  89428.     CX = 00FFh
  89429.     ES:DI -> control block
  89430.     DX = ID of INDJQRY
  89431.         get environment size
  89432.        = ID of INDJASY
  89433.         request DOS functions from workstation
  89434.        = ID of MEMORY
  89435.         AL = function
  89436.             01h allocate memory
  89437.             02h deallocate memory
  89438.             03h modify allocated size
  89439. Return: ???
  89440. --------I-7A09-------------------------------
  89441. INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
  89442.     AH = 09h
  89443.     BX = request type (4000h async, 8028h synchronous)
  89444.     CX = 0000h
  89445.     DX = ID of MFIC
  89446.     AL = service (see #2241)
  89447.     ES:DI -> control block
  89448.  
  89449. (Table 2241)
  89450. Values for 3270 Workstation Program host service:
  89451.  01h    connect to host
  89452.  02h    disconnect from host
  89453.  03h    read DFT structured data from host
  89454.  04h    write DFT structured data to host
  89455.  05h    create a host buffer
  89456. --------I-7A13-------------------------------
  89457. INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
  89458.     AH = 13h
  89459.     ???
  89460. Return: ???
  89461. ----------7A7A-------------------------------
  89462. INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
  89463.     AH = 7Ah
  89464.     ???
  89465. Return: AX = status
  89466.         0000h success
  89467.         000Eh undefined function code
  89468. Range:    unknown, selected by device driver commandline arguments
  89469. --------I-7A81-------------------------------
  89470. INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
  89471.     AH = 81h
  89472.     ES:DI -> 8-char blank-padded gate name (see #2242)
  89473. Return: DX = gate ID
  89474.  
  89475. (Table 2242)
  89476. Values for 3270 Workstation Program gate name:
  89477.  "SESSMGR "
  89478.  "KEYBOARD"
  89479.  "WSCTRL  "
  89480.  "MFIC      "
  89481.  "PCPSM      "
  89482.  "3270EML "
  89483.  "COPY      "
  89484.  "XLATE      "
  89485.  "OIAM      "
  89486.  "MEMORY  "
  89487.  "INDJQRY "
  89488.  "INDJASY "
  89489. --------I-7A83-------------------------------
  89490. INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
  89491.     AH = 83h
  89492.     ???
  89493. Return: ???
  89494. --------I-7AFDCB-----------------------------
  89495. INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
  89496.     AX = FDCBh
  89497. Return: DX:AX -> PCS/3270 signature block if loaded (see #2243)
  89498.  
  89499. Format of Personal Communications/3270 signature block:
  89500. Offset    Size    Description    (Table 2243)
  89501.  04h    WORD    PCS/3270 signature (5741h)
  89502.  06h    WORD    version (0501h = PCS/3270 v1.0)
  89503. --------I-7AFE01-----------------------------
  89504. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  89505.     AX = FE01h
  89506.     ???
  89507. Return: ???
  89508. SeeAlso: AX=FE02h
  89509. --------I-7AFE02-----------------------------
  89510. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
  89511.     AX = FE02h
  89512.     ???
  89513. Return: ???
  89514. SeeAlso: AX=FE01h
  89515. --------I-7AFF01-----------------------------
  89516. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  89517.     AX = FF01h
  89518.     ES:DI -> API function handler routine
  89519. Return: CX = 1200h
  89520. SeeAlso: AX=FF02h,AX=FF03h
  89521. --------I-7AFF02-----------------------------
  89522. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
  89523.     AX = FF02h
  89524. Return: CX = 1200h
  89525. SeeAlso: AX=FF01h
  89526. --------I-7AFF03-----------------------------
  89527. INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
  89528.     AX = FF03h
  89529.     ES:DI -> send/receive function handler routine
  89530. Return: CX = 1200h
  89531. SeeAlso: AX=FF01h
  89532. --------I-7AFF04-----------------------------
  89533. INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
  89534.     AX = FF04h
  89535.     ES:DI -> ???
  89536. Return: CX = 1200h
  89537. --------f-7B---------------------------------
  89538. INT 7B - Btrieve API (single user)
  89539.     DS:DX -> 38-byte parameter record (see #2244)
  89540. Return: return code field set
  89541. Note:    Btrieve sets low byte of vector to 33h; this serves as the installation
  89542.       check
  89543. SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
  89544.  
  89545. Format of Btrieve parameter record:
  89546. Offset    Size    Description    (Table 2244)
  89547.  00h    DWORD    pointer to data buffer
  89548.  04h    WORD    data buffer length
  89549.  06h    DWORD    pointer to 90-byte record containing positioning info
  89550.         (should be same for all calls for same file)
  89551.  0Ah    DWORD    pointer to 38-byte FCB info buffer
  89552.         (should be same for all calls for same file)
  89553.  0Eh    WORD    function code (see #2245)
  89554.  10h    DWORD    pointer to file name/key buffer
  89555.  14h    BYTE    key length
  89556.  15h    BYTE    key number
  89557.  16h    DWORD    pointer to status code (see #2246)
  89558.  1Ah    WORD    interface code (version specific)
  89559.         6176h version 5.10
  89560.  
  89561. (Table 2245)
  89562. Values for function code:
  89563.  00h    open
  89564.  01h    close
  89565.  02h    insert
  89566.  03h    update
  89567.  04h    delete
  89568.  05h    get_equal
  89569.  06h    get_next
  89570.  07h    get_prev
  89571.  08h    get_greater
  89572.  09h    get_gr_eql
  89573.  0Ah    get_less
  89574.  0Bh    get_less_eq
  89575.  0Ch    get_first
  89576.  0Dh    get_last
  89577.  0Eh    create
  89578.  0Fh    stat
  89579.  10h    extend
  89580.  11h    set_dir: set directory information
  89581.  12h    get_dir: get directory information
  89582.  13h    begin_trans
  89583.  14h    end_trans
  89584.  15h    abort_trans
  89585.  16h    get_pos: get record position number
  89586.  17h    get_direct: get data by sending record position
  89587.  18h    step_next
  89588.  19h    stop
  89589.  1Ah    version
  89590.  1Bh    unlock
  89591.  1Ch    reset
  89592.  1Dh    set owner
  89593.  1Eh    clear owner
  89594.  1Fh    create supplemental index
  89595.  20h    drop supplemental index
  89596.  21h    step first
  89597.  22h    step last
  89598.  23h    step previous
  89599.  24h    get next extended: get multiple records using a filter
  89600.  25h    get previous extended: get multiple records using a filter
  89601.  26h    step next extended: get multiple records using a filter
  89602.  27h    step previous extended: get multiple records using a filter
  89603.  28h    insert extended: insert one or more records
  89604.  31h    ???
  89605. Notes:    add 50 (32h) to any "get" operation to just return the key data
  89606.     add 100 (64h) for a single-record wait lock (automatically released
  89607.       on next get)
  89608.     add 200 (C8h) for a single-record nowait lock (nowait lock returns
  89609.       error 54h or 55h if record already locked)
  89610.     add 300 (12Ch) for a multiple-record wait lock (not released until
  89611.       unlock called)
  89612.     add 400 (190h) for a multiple-record nowait lock (nowait lock returns
  89613.       error 54h or 55h if record already locked)
  89614.  
  89615. (Table 2246)
  89616. Values for Btrieve status code:
  89617.  00h    successful
  89618.  01h    invalid operation
  89619.  02h    I/O error
  89620.  03h    file not open
  89621.  04h    key value not found
  89622.  05h    duplicate key value
  89623.  06h    invalid key number
  89624.  07h    different key number
  89625.  08h    invalid positioning
  89626.  09h    end of file
  89627.  0Ah    modifiable key value error
  89628.  0Bh    invalid file name
  89629.  0Ch    file not found
  89630.  0Dh    extended file error
  89631.  0Eh    pre-image open error
  89632.  0Fh    pre-image I/O error
  89633.  10h    expansion error
  89634.  11h    close error
  89635.  12h    disk full
  89636.  13h    unrecoverable error
  89637.  14h    record manager inactive
  89638.  15h    key buffer too short
  89639.  16h    data buffer length overrun
  89640.  17h    position block length
  89641.  18h    page size error
  89642.  19h    create I/O error
  89643.  1Ah    number of keys
  89644.  1Bh    invalid key position
  89645.  1Ch    invalid record length
  89646.  1Dh    invalid key length
  89647.  1Eh    not a Btrieve file
  89648.  1Fh    file already extended
  89649.  20h    extended I/O error
  89650.  22h    invalid extension name
  89651.  23h    directory error
  89652.  24h    transaction error
  89653.  25h    transaction is active
  89654.  26h    transaction control file I/O error
  89655.  27h    end/abort transaction error
  89656.  28h    transaction max files
  89657.  29h    operation not allowed
  89658.  2Ah    incomplete accelerated access
  89659.  2Bh    invalid record address
  89660.  2Ch    null key path
  89661.  2Dh    inconsistent key flags
  89662.  2Eh    access to file denied
  89663.  2Fh    maximum open files
  89664.  30h    invalid alternate sequence definition
  89665.  31h    key type error
  89666.  32h    owner already set
  89667.  33h    invalid owner
  89668.  34h    error writing cache
  89669.  35h    invalid interface
  89670.  36h    variable page error
  89671.  37h    autoincrement error
  89672.  38h    incomplete index
  89673.  39h    expanded memory error
  89674.  3Ah    compression buffer too short
  89675.  3Bh    file already exists
  89676.  3Ch    reject count reached
  89677.  3Dh    work space too small
  89678.  3Eh    incorrect descriptor
  89679.  3Fh    invalid extended insert
  89680.  40h    filter limit reached
  89681.  41h    incorrect field offset
  89682.  4Ah    automatic transaction abort
  89683.  4Dh    Btrieve engine busy or resource locked by another user
  89684.  4Eh    deadlock detected
  89685.  50h    conflict
  89686.  51h    lock error
  89687.  52h    lost position
  89688.  53h    read outside transaction
  89689.  54h    record in use
  89690.  55h    file in use
  89691.  56h    file table full
  89692.  57h    handle table full
  89693.  58h    incompatible open mode
  89694.  5Ah    redirected device table full
  89695.  5Bh    server error
  89696.  5Ch    transaction table full
  89697.  5Dh    incompatible lock type
  89698.  5Eh    permission error
  89699.  5Fh    session no longer valid
  89700.  60h    communications environment error
  89701.  61h    data message too small
  89702.  62h    internal transaction error
  89703. --------I-7B---------------------------------
  89704. INT 7B - Eicon Access API (3270/5250 gateways)
  89705. SeeAlso: INT 5C"NetBIOS"
  89706. --------E-7B---------------------------------
  89707. INT 7B - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ3
  89708. Notes:    this vector is overwritten when GO32 starts but is not restored by
  89709.       early versions of the extender
  89710.     the newest versions of GO32 dynamically allocate the vectors used
  89711.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  89712. SeeAlso: INT 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
  89713. --------A-7B---------------------------------
  89714. INT 7B CR - AutoCAD Device Interface - PRINTER/PLOTTER - SEND PLOTTING DATA
  89715.     AX = data length (0000h-7FFFh)
  89716.     CX:BX -> data to be plotted
  89717.     DX = vertical position of line on page
  89718. Return: nothing
  89719. Notes:    This interrupt is called by AutoCAD to perform its output
  89720.     A data length of 0000h indicates that a blank line is to be output
  89721. SeeAlso: AX=8001h,AX=8002h,INT 78"AutoCAD",INT 7A/AX=0001h"AutoCAD"
  89722. ----------7B---------------------------------
  89723. INT 7B - Novell XQL - XQL PRIMITIVES MANAGER API
  89724.     DS:DX -> parameter block (see #2247)
  89725. Return: parameter block updated
  89726.  
  89727. (Table 2247)
  89728. Values for Novell XQL function number:
  89729.  00h    log in
  89730.  01h    log out
  89731.  02h    "tNewFcn"
  89732.  03h    "tFreeFcn"
  89733.  04h    "tMoveFldFcn"
  89734.  05h    "tFieldFcn"
  89735.  06h    "tDescribeFcn"
  89736.  07h    "tFetchFcn"
  89737.  08h    "tComputeFcn"
  89738.  09h    "tOrderFcn"
  89739.  0Ah    "tRestrictFcn"
  89740.  0Bh    "tJoinFcn"
  89741.  0Ch    "tInsertFcn"
  89742.  0Dh    "tUpdateFcn"
  89743.  0Eh    "tUpdallFcn"
  89744.  0Fh    "tRemoveFcn"
  89745.  10h    "tRemallFcn"
  89746.  11h    "tResetFcn"
  89747.  12h    "tTransFcn"
  89748.  13h    "tStatFcn"
  89749.  14h    "tDDCreFcn"
  89750.  15h    "tStoreFcn"
  89751.  16h    "tRecallFcn"
  89752.  17h    "tStopFcn"
  89753.  18h    "tDDFileFcn"
  89754.  19h    "tDDFieldFcn"
  89755.  1Ah    "tDDIndexFcn"
  89756.  1Bh    "tDDModFcn"
  89757.  1Ch    "tDDViewFcn"
  89758.  1Dh    "tDDDrpFcn"
  89759.  1Eh    "tDDPathFcn"
  89760.  1Fh    "tDDAttrFcn"
  89761.  20h    "tDDFcn"
  89762.  21h    "tSecurFcn"
  89763.  22h    "tUserFcn"
  89764.  23h    "tAccessFcn"
  89765.  24h    "tPswdFcn"
  89766.  25h    "tCharFcn"
  89767.  26h    "tVersionFcn"
  89768.  27h    "tCnvFcn"
  89769.  28h    "tValFcn"
  89770.  29h    "tMaskFcn"
  89771.  
  89772. Format of XQL parameter block:
  89773. Offset    Size    Description    (Table 2248)
  89774.  00h  4 BYTEs    signature "XQLP"
  89775.  04h    WORD    function number (see #2247)
  89776.  06h    WORD    handle
  89777.  08h    WORD    status
  89778.  0Ah    WORD    session ID
  89779.  0Ch    var    data record (varies by function)
  89780. ---function 00h---
  89781.  0Ch    DWORD    -> user name
  89782.  10h    DWORD    -> password
  89783.  14h    DWORD    -> dictionary
  89784.  18h    DWORD    -> filepath
  89785.  1Ch    DWORD    -> machine name
  89786.  20h    WORD    process ID
  89787. ---function 01h---
  89788.  no additional fields???
  89789. ---function 02h---
  89790.  0Ch    DWORD    -> filename
  89791.  10h    DWORD    -> owner name
  89792.  14h    WORD    open mode
  89793. ---function 03h---
  89794.  no additional fields???
  89795. ---function 04h---
  89796.  0Ch    WORD    "frompos"
  89797.  0Eh    WORD    "topos"
  89798. ---function 05h---
  89799.  0Ch    WORD    subfunction
  89800.  0Eh    WORD    position
  89801.  10h    WORD    count
  89802.  12h    DWORD    -> field list
  89803. ---function 06h---
  89804.  0Ch    WORD    subfunction
  89805.  0Eh    WORD    length of description
  89806.  10h    WORD    position
  89807.  12h    WORD    count
  89808.  14h    DWORD    pointer to description list
  89809. ---function 07h---
  89810.  0Ch    WORD    data length
  89811.  0Eh    WORD    "op"
  89812.  10h    DWORD    "select"
  89813.  14h    DWORD    "reject"
  89814.  18h    DWORD    pointer to data buffer
  89815. ---function 08h---
  89816.  0Ch    DWORD    -> field name
  89817.  10h    WORD    field type
  89818.  12h    WORD    field size
  89819.  14h    WORD    "flddec"
  89820.  16h    WORD    "explen"
  89821.  18h    DWORD    pointer to "expbuf"
  89822. ---function 09h---
  89823.  0Ch    WORD    count
  89824.  0Eh    DWORD    -> field list
  89825. ---function 0Ah---
  89826.  0Ch    WORD    "newexp"
  89827.  0Eh    WORD    "explen"
  89828.  10h    DWORD    -> "expbuf"
  89829. ---function 0Bh---
  89830.  0Ch    DWORD    -> filename
  89831.  10h    DWORD    -> owner name
  89832.  14h    WORD    type of join
  89833.  16h    WORD    "pCount"
  89834.  18h    DWORD    -> "pNames"
  89835.  1Ch    WORD    "sCount"
  89836.  1Eh    DWORD    -> "sNames"
  89837. ---functions 0Ch, 0Dh, 0Fh---
  89838.  0Ch    WORD    file count
  89839.  0Eh    DWORD    -> file list
  89840.  12h    DWORD    count
  89841.  16h    DWORD    -> buffer
  89842. ---function 0Eh---
  89843.  0Ch    WORD    file count
  89844.  0Eh    DWORD    -> file list
  89845.  12h    WORD    "op"
  89846.  14h    DWORD    "select"
  89847.  18h    DWORD    "reject"
  89848.  1Ch    WORD    count
  89849.  1Eh    DWORD    -> "res"
  89850.  22h    DWORD    -> "comp"
  89851. ---function 10h---
  89852.  0Ch    WORD    file count
  89853.  0Eh    DWORD    -> file list
  89854.  12h    WORD    "op"
  89855.  14h    DWORD    "select"
  89856.  18h    DWORD    "reject"
  89857. ---function 11h---
  89858.  0Ch    DWORD    machine name
  89859. ---function 12h---
  89860.  0Ch    WORD    option
  89861. ---function 13h---
  89862.  0Ch    WORD    subfunction
  89863.  0Eh    WORD    length of buffer
  89864.  10h    DWORD    -> buffer
  89865. ---function 14h---
  89866.  0Ch    WORD    subfunction
  89867.  0Eh    DWORD    -> filename
  89868.  12h    WORD    "create"
  89869.  14h    DWORD    -> pathname
  89870.  18h    DWORD    -> owner name
  89871.  1Ch    WORD    owner access restrictions
  89872.  1Eh    WORD    number of fields
  89873.  20h    DWORD    -> field list
  89874.  24h    WORD    number of keys
  89875.  28h    DWORD    -> key list
  89876.  2Ch    WORD    "buflen"
  89877.  2Eh    DWORD    -> create parameters
  89878. ---function 15h---
  89879.  0Ch    DWORD    -> "StoreName"
  89880.  10h    WORD    length of buffer
  89881.  12h    DWORD    -> buffer
  89882. ---function 16h---
  89883.  0Ch    DWORD    -> "RecallName"
  89884.  10h    WORD    owner number
  89885.  12h    DWORD    -> owner list
  89886.  16h    WORD    open mode
  89887.  18h    WORD    length of buffer
  89888.  1Ah    DWORD    -> buffer
  89889. ---function 17h---
  89890.  no additional fields???
  89891. ---function 18h---
  89892.  0Ch    WORD    "rtype"
  89893.  0Eh    WORD    count
  89894.  10h    DWORD    -> "filebuf"
  89895.  14h    WORD    length of following buffer
  89896.  16h    DWORD    -> output buffer
  89897. ---functions 19h, 1Ah---
  89898.  0Ch    WORD    "rtype"
  89899.  0Eh    WORD    count
  89900.  10h    DWORD    -> field buffer
  89901.  14h    WORD    length of following buffer
  89902.  16h    DWORD    -> output buffer
  89903. ---function 1Bh---
  89904.  0Ch    WORD    subfunction
  89905.  0Eh    DWORD    -> filename
  89906.  12h    WORD    "create"
  89907.  14h    DWORD    -> pathname
  89908.  18h    DWORD    -> owner name
  89909.  1Ch    WORD    owner access restrictions
  89910.  1Eh    WORD    field count
  89911.  20h    DWORD    -> field list
  89912.  24h    WORD    number of keys
  89913.  26h    DWORD    -> list of keys
  89914. ---function 1Ch---
  89915.  0Ch    WORD    count
  89916.  0Eh    DWORD    -> view name
  89917.  12h    WORD    length of following buffer
  89918.  14h    DWORD    -> output buffer
  89919. ---function 1Dh---
  89920.  0Ch    DWORD    -> filename
  89921.  10h    WORD    file type
  89922.  12h    WORD    "deletepath"
  89923. ---function 1Eh---
  89924.  0Ch    WORD    "dirtype"
  89925.  0Eh    DWORD    -> pathname
  89926. ---function 1Fh---
  89927.  0Ch    WORD    function
  89928.  0Eh    DWORD    -> field name
  89929.  12h    WORD    attribute
  89930.  14h    WORD    size of buffer
  89931.  16h    DWORD    -> buffer for attributes
  89932. ---function 20h---
  89933.  0Ch    DWORD    -> directory path
  89934.  10h    WORD    function
  89935. ---function 21h---
  89936.  0Ch    DWORD    -> master password
  89937.  10h    WORD    "securityflag"
  89938. ---function 22h---
  89939.  0Ch    DWORD    -> master password
  89940.  10h    WORD    function (add/modify/remove)
  89941.  12h    DWORD    -> user name
  89942.  16h    DWORD    -> password
  89943.  1Ah    WORD    global rights
  89944.  1Ch    WORD    count
  89945.  1Eh    WORD    length of following buffer
  89946.  20h    DWORD    -> "userbuf"
  89947. ---function 23h---
  89948.  0Ch    DWORD    -> master password
  89949.  10h    DWORD    -> user name
  89950.  14h    WORD    function (allow/deny/getrights)
  89951.  16h    WORD    rights
  89952.  18h    DWORD    -> filename
  89953.  1Ch    WORD    number of field names in following buffer
  89954.  1Eh    DWORD    -> field names
  89955.  22h    WORD    maximum buffer length
  89956.  24h    DWORD    -> output buffer
  89957. ---function 24h---
  89958.  0Ch    DWORD    -> user name
  89959.  10h    DWORD    -> password
  89960. ---function 25h---
  89961.  0Ch    WORD    "charFcn"
  89962.  0Eh    WORD    "charType"
  89963.  10h    WORD    "charValue"
  89964. ---function 26h---
  89965.  0Ch    DWORD    -> buffer
  89966. ---function 27h---
  89967.  0Ch    WORD    option
  89968.  0Eh    WORD    type
  89969.  10h    WORD    size
  89970.  12h    WORD    "dec"
  89971.  14h    WORD    "dsize"
  89972.  16h    DWORD    -> value
  89973.  1Ah    DWORD    -> "retval"
  89974.  1Eh    DWORD    -> mask
  89975.  22h    WORD    "justify"
  89976. ---function 28h---
  89977.  0Ch    DWORD    -> field name
  89978.  10h    WORD    length of buffer
  89979.  12h    DWORD    -> buffer for data
  89980. ---function 29h---
  89981.  0Ch    WORD    option
  89982.  0Eh    WORD    type
  89983.  10h    WORD    size
  89984.  12h    WORD    "dec"
  89985.  14h    WORD    length of mask
  89986.  16h    DWORD    -> mask
  89987. --------A-7B8001-----------------------------
  89988. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - BEGIN PLOT
  89989.     AX = 8001h
  89990.     BX = file level
  89991.         0000h binary file
  89992.         0001h CAD/camera image file
  89993.         0002h installed ADI driver
  89994.     CX = horizontal size in pixels
  89995.     DX = vertical size in pixels
  89996. Return: AX = status (0000h initialization failed, 0001h init successful)
  89997.     BX = allowed output format
  89998.         0000h monochrome
  89999.         0001h color (4 bits per pixel)
  90000. SeeAlso: AX=8002h,AX=8003h,INT 7B"AutoCAD",INT 7C"AutoShade"
  90001. --------A-7B8002-----------------------------
  90002. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - END PLOT
  90003.     AX = 8002h
  90004. SeeAlso: AX=8001h,AX=8003h
  90005. --------A-7B8003-----------------------------
  90006. INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - ABORT PLOT
  90007.     AX = 8003h
  90008. SeeAlso: AX=8001h,AX=8002h
  90009. --------r-7C---------------------------------
  90010. INT 7C U - IBM REXX88PC command language
  90011.     ???
  90012. --------E-7C---------------------------------
  90013. INT 7C - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ4
  90014. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  90015.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  90016. Notes:    this vector is overwritten when GO32 starts but is not restored by
  90017.       early versions of the extender
  90018.     the newest versions of GO32 dynamically allocate the vectors used
  90019.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  90020. SeeAlso: INT 0C,INT 7B"GO32",INT 7D"GO32"
  90021. --------P-7C---------------------------------
  90022. INT 7C - PRINDIR v8.02+ - API
  90023.     AH = function
  90024.        00h set output to Invisible mode
  90025.        01h set output to LPT1
  90026.        02h set output to LPT2
  90027.        03h set output to LPT3
  90028.        04h set output to COM1
  90029.        05h set output to COM2
  90030.        06h set output to COM3
  90031.        07h set output to COM4
  90032.        08h set output to screen
  90033.        09h set output to file
  90034.        0Ah change file path
  90035.            ES:DI -> new path
  90036.            CX = length of path (max 41, but not range-checked)
  90037.        0Bh change file name
  90038.            ES:DI -> new filename
  90039.            CX = length of new name (max 41, but not range-checked)
  90040.        0Ch set redirected device
  90041.         (01h = LPT1 ... 03h = LPT3, 04h = COM1 ... 07h = COM4)
  90042.        0Dh force buffer dump
  90043.        0Eh set display color
  90044.            AL = new color attribute (see INT 10/AH=08h)
  90045.        0Fh set popup hotkey
  90046.            AL = hotkey scancode
  90047.        10h toggle byte display
  90048.            AL = new state (00h off, 01h on)
  90049.        11h change buffer flush delay
  90050.            AL = timer ticks before flush
  90051. Return: AX = status
  90052.         0000h successful
  90053.         0001h invalid function or nothing in buffer to be dumped
  90054.         (documented as "nonzero = error")
  90055. Program: PRINDIR is a shareware printer-redirection program by J.M. Allen
  90056.       Creations
  90057. Notes:    the installation check consists of testing for the ASCIZ signature
  90058.       "PRINDIR N.NN" (where N.NN is the version number) two bytes beyond
  90059.       the start of the interrupt handler
  90060.     prior versions of PRINDIR used INT 7A instead of INT 7C
  90061. SeeAlso: INT 7A"PRINDIR"
  90062. Index:    hotkeys;PRINDIR
  90063. --------A-7C---------------------------------
  90064. INT 7C - AutoShade v2 - RENDERING HARDCOPY DRIVER
  90065. Note:    this is the default interrupt vector for rendering hardcopy drivers
  90066.       instead of INT 7A used by AutoCAD drivers
  90067. SeeAlso: INT 7A/AX=0001h"AutoCAD"
  90068. --------N-7C---------------------------------
  90069. INT 7C - SK-UPPS/SK-PASSPORT Data Link Interface (DLI) API
  90070. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90071.       which provides an API on top of it Data Link Interface, allowing the
  90072.       use of any of several network transport layers; this product is
  90073.       called SK-PASSPORT in the USA.
  90074. Notes:    The installation check consists of testing for the ASCII signature
  90075.       string "UPPS_DLI" immediately preceding the interrupt handler.
  90076.     To find the service interrupt being used by the driver, an application
  90077.       should scan through the interrupt table until it finds an interrupt
  90078.       vector with the "UPPS_DLI" string.
  90079.     There may be more than one DLI loaded, each having its own service
  90080.       interrupt.
  90081. SeeAlso: AX=0000h,AX=0002h,AX=000Fh
  90082. Index:    installation check;SK-UPPS
  90083. --------N-7C0000-----------------------------
  90084. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER VERSION
  90085.     AX = 0000h
  90086. Return: AH = major DLI version
  90087.     AL = minor DLI version
  90088.     DX = OEM signature (see #2249)
  90089.     CL = DLI 2.8+ topology: 1=Ethernet, 2=FDDI, 3=Token-Ring
  90090. SeeAlso: AX=0002h,AX=000Bh,AX=000Dh,AX=000Eh
  90091.  
  90092. (Table 2249)
  90093. Values for SK-UPPS Data Link Interface OEM signature (defined by SK):
  90094.  0001h        experimental
  90095.  3343h    ('3C')    3COM
  90096.  4942h    ('IB')    IBM
  90097.  4943h    ('IC')    Intellicom
  90098.  494Eh    ('IN')    Intel
  90099.  4B4Fh    ('KO')    Kodiak
  90100.  4D41h    ('MA')    Madge
  90101.  4E45h    ('NE')    Novell
  90102.  4F43h    ('OC')    Olicom
  90103.  5349h    ('SI')    Siemens
  90104.  534Bh    ('SK')    Schneider & Koch (SysKonnect)
  90105.  5744h    ('WD')    Western Digital
  90106. --------N-7C0001-----------------------------
  90107. INT 7C - SK-UPPS Data Link Interface API - DOWN DRIVER
  90108.     AX = 0001h
  90109. Return: AX = completion code (see #2250)
  90110. Note:    the DLI will refuse to unload if there are any protocols
  90111.       (see AX=0007h) or clients (see AX=0010h) active.
  90112. Index:    uninstall;SK-UPPS Data Link Interface
  90113.  
  90114. (Table 2250)
  90115. Values for SK-UPPS completion code:
  90116.  0000h    SUCCESS
  90117.  0005h    INVALID_MULTICAST
  90118.  0006h    BUFFER_TOO_SMALL
  90119.  0007h    NO_BUFFERS_LEFT
  90120.  0008h    NO_RESOURCES_LEFT
  90121.  000Bh    ILLEGAL_PROTOCOL_ID
  90122.  000Ch    PROTOCOL_IN_USE
  90123.  000Dh    NO_MULTICAST_ADDRESS
  90124.  000Fh    PROTOCOLS_ACTIVE
  90125.  0010h    CLIENTS_ACTIVE
  90126.  001Bh    INVALID_MODE
  90127.  001Ch    MODE_NOT_SUPPORTED
  90128.  FFFFh    UNKNOWN_SERVICE
  90129. --------N-7C0002-----------------------------
  90130. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATUS
  90131.     AX = 0002h
  90132.     ES:DI -> Status Information Block (SIB) (see #2262)
  90133. Return: AX = completion code (see #2250)
  90134. Note:    GET DRIVER INFO (AX=000Eh) should be used instead.
  90135. SeeAlso: AX=0000h,AX=000Bh,AX=000Dh,AX=000Eh
  90136. --------N-7C0003-----------------------------
  90137. INT 7C - SK-UPPS Data Link Interface API - CHANGE DRIVER ADDRESS
  90138.     AX = 0003h
  90139.     ES:DI -> new node address (6 bytes)
  90140. Return: AX = completion code (see #2250)
  90141. Note:    the DLI will refuse to change the address if any protocols
  90142.       (see AX=0007h) are active
  90143. SeeAlso: AX=0001h,AX=000Eh
  90144. --------N-7C0004-----------------------------
  90145. INT 7C - SK-UPPS Data Link Interface API - REQUEST BUFFER
  90146.     AX = 0004h
  90147.     DX = protocol ID (see AX=0007h,#2253)
  90148. Return: AX = completion code (see also #2250)
  90149.         0000h successful
  90150.         ES:BX -> Memory Buffer (Mbuf) (see #2251)
  90151. Note:    if the DLI has no free Mbufs, it will set an internal flag for the
  90152.       protocol and later call the protocol's Event Upcall with
  90153.       EV_BUFFER_AVAILABLE (see #2257,#2258) as soon as an Mbuf becomes
  90154.       available.  There will only be one "buffer available" Upcall, even
  90155.       if this function has been called several times before.
  90156. SeeAlso: AX=0005h,AX=0006h,AX=0012h,AX=0013h
  90157.  
  90158. Format of SK-UPPS Memory Buffer (Mbuf):
  90159. Offset    Size    Description    (Table 2251)
  90160.  00h    DWORD    -> NEXT Mbuf (linked list)
  90161.  04h    WORD    OFFSET of actual data within DATA area
  90162.  06h  2 BYTEs    reserved (currently unused)
  90163.  08h    WORD    LENGTH of actual data found in DATA area starting at OFFSET
  90164.  0Ah  2 BYTEs    reserved (currently unused)
  90165.  0Ch    DWORD    -> DATA area (size can be obtained via AX=000Eh call)
  90166.  10h    WORD    PROTOCOL ID of protocol currently "owning" the Mbuf
  90167.  12h    BYTE    IN USE flag; nonzero if Mbuf still in use by DLI (see AX=0006h)
  90168.  13h    BYTE    RECEIVE STATUS (bit 0-7 only; see AX=0007h - Receive Upcall)
  90169. --------N-7C0005-----------------------------
  90170. INT 7C - SK-UPPS Data Link Interface API - RELEASE BUFFER
  90171.     AX = 0005h
  90172.     ES:BX -> Mbuf (see #2251)
  90173. Return: nothing
  90174. SeeAlso: AX=0004h
  90175. --------N-7C0006-----------------------------
  90176. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME
  90177.     AX = 0006h
  90178.     ES:BX -> Mbuf (see #2251)
  90179. Return: nothing
  90180. Notes:    The DLI will send LENGTH bytes found in the Mbuf's DATA area starting
  90181.       at OFFSET. A complete and valid frame must be stored there. The DLI
  90182.       will only copy the current node address (see AX=0003h) to the
  90183.       source node field of the frame's MAC header.
  90184.     On Ethernet, the DLI will always send a minimum of 60 bytes, regardless
  90185.       of the value found in the LENGTH field.
  90186.     This function returns immediately; the DLI will call the protocol's
  90187.       Transmit Upcall (see #2252) when the frame has been sent.
  90188.     The Mbuf's IN USE field will be non-zero until the DLI calls the
  90189.       Transmit Upcall.
  90190. SeeAlso: AX=0002h,AX=0004h,AX=0013h
  90191.  
  90192. (Table 2252)
  90193. Values SK-UPPS Transmit Upcall is called with:
  90194.     ES:BX -> Mbuf (NEXT field destroyed)
  90195.     interrupts disabled
  90196. Note:    On FDDI the bytes of the source and destination node fields in the MAC
  90197.       header have been bit-swapped to physical address format.
  90198. --------N-7C0007-----------------------------
  90199. INT 7C - SK-UPPS Data Link Interface API - REGISTER PROTOCOL
  90200.     AX = 0007h
  90201.     ES:BX -> Protocol Control Block (see #2253)
  90202. Return: AX = completion code (see #2250)
  90203. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90204.       which provides an API on top of its Data Link Interface, allowing the
  90205.       use of any of several network transport layers
  90206. SeeAlso: AX=0008h,AX=000Bh
  90207.  
  90208. Format of SK-UPPS Protocol Control Block (PCB):
  90209. Offset    Size    Description    (Table 2253)
  90210.  00h    WORD    (big-endian) protocol type
  90211.  02h    WORD    protocol mode (see #2254)
  90212.  04h    DWORD    -> Receive Upcall routine
  90213.  08h    DWORD    -> Transmit Upcall routine
  90214.  0Ch    DWORD    -> Event Upcall routine
  90215.  10h    DWORD    -> ASCIZ protocol name (zero if none)
  90216.  14h    WORD    protocol ID will be returned here (always non-zero)
  90217.  
  90218. Bitfields for SK-UPPS protocol mode:
  90219. Bit(s)    Description    (Table 2254)
  90220.  0    promiscuous mode; protocol receives all frames regardless of their
  90221.       destination (PROTOCOL TYPE must be FFFFh)
  90222.  1    if set, protocol's Event Upcall will be called on entry and exit of the
  90223.       DLI's Interrupt Service Routine (see event codes below)
  90224.  2    DLI 2.2+ hook mode; protocol receives all directed frames destined for
  90225.       this station (PROTOCOL TYPE must be FFFFh)
  90226.  3    DLI 2.3+ receive error frames (only valid in promiscuous mode (0))
  90227.  4-5    DLI 2.5+ frame type:
  90228.     00 Ethernet II; specify type code in PROTOCOL TYPE field (high-low)
  90229.     01 IEEE 802.2; specify Service Access Point (SAP) in MSB
  90230.           (offset 0) of PROCOTOL TYPE field; LSB must be zero
  90231.     10 IEEE 802.2 with SNAP header; specify type code in PROTOCOL TYPE
  90232.           field (high-low)
  90233.     11 reserved (currently unused)
  90234.  6    DLI 2.5+ if set, protocol's Event Upcall will be called with event code
  90235.       EV_BUFFER_WANTED, when DLI runs out of Mbufs
  90236.  7    DLI 2.7+ chain mode; if set, client allows the specified frame type to
  90237.       be shared with other clients
  90238.  8    DLI 2.8+ receive non-LLC frames rather than LLC frames
  90239.  9    DLI 2.8+ receive all multicast frames (see also AX=0009h)
  90240.  10-15    reserved (currently unused; must be zero)
  90241. Notes:    If PROTOCOL TYPE is FFFFh and neither the "promiscuous" nor the "hook"
  90242.       mode is set, the protocol receives all frames that did not match
  90243.       any registered frame type (demultiplexor mode).
  90244.     Protocols using "promiscuous", "hook" or "chain" mode should always
  90245.       return from the Receive Upcall with the received Mbuf in ES:BX and
  90246.       the Carry Flag set. The DLI will then pass the Mbuf to the FEED BACK
  90247.       BUFFER function (see AX=000Fh).
  90248.     Some DLIs do not support all or even any of the "promiscuous",
  90249.       "receive non-LLC" and "receive all multicasts" mode bits.
  90250.  
  90251. (Table 2255)
  90252. Values SK-UPPS Receive Upcall is called with:
  90253.  ES:BX -> Mbuf
  90254.  AX = receive status (see #2256) (also stored in Mbuf's RECEIVE STATUS field)
  90255.  interrupts disabled
  90256.  
  90257. Bitfields for SK-UPPS receive status:
  90258. Bit(s)    Description    (Table 2256)
  90259.  0-2    reserved (0), currently unused
  90260.  3    frame check sequence (FCS) error
  90261.  4    overflow (frame too long)
  90262.  5    framing error
  90263.  6    reserved (0), currently unused
  90264.  7    non-LLC frame (see 8 of PCB's protocol mode field)
  90265.  8-15    reserved (0), currently unused
  90266. Notes:    The protocol's Receive Upcall routine will be called whenever a frame
  90267.       matching the specified frame type is received. A received frame is
  90268.       passed to the protocol in the Mbuf's DATA area at OFFSET and its size
  90269.       is LENGTH bytes.
  90270.     The receive status passed to the Receive Upcall in register AL is
  90271.       always zero, except for protocols using "non-LLC" mode (8 of PCB's
  90272.       protocol mode field) or "promiscuous" mode together with "receive
  90273.       error frames" (0 & 3).
  90274.     Upcalls are FAR routines and must return with a RET FAR. If the Carry
  90275.       Flag is set on return from a Receive or Transmit Upcall, then ES:BX
  90276.       must point to an Mbuf, which the DLI will then pass to the RELEASE
  90277.       BUFFER function (see AX=0005h). See also notes for PROTOCOL MODE.
  90278.  
  90279. (Table 2257)
  90280. Values SK-UPPS Event Upcall is called with:
  90281.  AX = event code (see #2258)
  90282. Note:    All Event Upcalls may be ignored by the protocol.
  90283.  
  90284. (Table 2258)
  90285. Values for SK-UPPS Event Upcall event code:
  90286.  00h    EV_BUFFER_AVAILABLE client may now call REQUEST BUFFER (AX=0004h)
  90287.  01h    EV_ISR_START        start of Interrupt Service Routine
  90288.  02h    EV_ISR_END        end of ISR (see bit 1 in PCB's protocol mode field)
  90289.  03h    EV_BUFFER_WANTED    DLI temporarily out of Mbufs
  90290.  04h    EV_NETWORK_STATUS   DLI 2.8+ network status (DX=status; see below)
  90291.  05h    EV_IO_CONTROL        DLI 2.8+ I/O control (DX=subfunction; see AX=0016h)
  90292.  
  90293. Bitfields for EV_NETWORK_STATUS in register DX:
  90294. Bit(s)    Description    (Table 2259)
  90295.     Token-Ring        FDDI
  90296.  15    SIGNAL_LOSS        SIGNAL_LOSS
  90297.  14    HARD_ERROR        HARD_ERROR
  90298.  13    SOFT_ERROR        SOFT_ERROR
  90299.  12    TRANSMIT_BEACON        TRANSMIT_BEACON
  90300.  11    LOBE_WIRE_FAULT        PATH_TEST_FAILED
  90301.  10    AUTO_REMOVAL        SELF_TEST_REQUIRED
  90302.  9    reserved        reserved
  90303.  8    REMOVE_RECEIVED        REMOTE_DISCONNECT
  90304.  7    COUNTER_OVERFLOW    reserved
  90305.  6    SINGLE_STATION        DUPLICATE_ADDRESS
  90306.  5    RING_RECOVERY        NO_RING_OP_STATUS
  90307.  4    reserved        VERSION_MISMATCH
  90308.  3    reserved        STUCK_BYPASS
  90309.  2    reserved        FDDI_EVENT
  90310.  1    reserved        RING_OP_CHANGE
  90311.  0    reserved        reserved
  90312. Note:    EV_NETWORK_STATUS is not supported on Ethernet
  90313. --------N-7C0008-----------------------------
  90314. INT 7C - SK-UPPS Data Link Interface API - DISABLE PROTOCOL
  90315.     AX = 0008h
  90316.     BX = protocol ID (see #2253)
  90317. Return: AX = completion code (see #2250)
  90318. Note:    the DLI will handle any Mbufs given to TRANSMIT FRAME (AX=0006h) as if
  90319.       they had been given to TRANSMIT FRAME RELEASE (AX=0013h).
  90320.     all multicast addresses registered for this protocol will be disabled.
  90321.     after this function returns, the protocol's Upcall routines will no
  90322.       longer be called.
  90323. SeeAlso: AX=0007h,AX=000Bh
  90324. --------N-7C0009-----------------------------
  90325. INT 7C - SK-UPPS Data Link Interface API - REGISTER MULTICAST
  90326.     AX = 0009h
  90327.     BX = protocol ID (see #2253)
  90328.     ES:DI -> multicast address (6 bytes)
  90329. Return: AX = completion code (see #2250)
  90330. Notes:    The broadcast address is always enabled.
  90331.     Set bit 9 of PCB's protocol mode field in REGISTER PROTOCOL call
  90332.       (AX=0007h) to receive all multicast frames.
  90333. SeeAlso: AX=000Ah,AX=0014h
  90334. --------N-7C000A-----------------------------
  90335. INT 7C - SK-UPPS Data Link Interface API - DISABLE MULTICAST
  90336.     AX = 000Ah
  90337.     BX = protocol ID (see #2253)
  90338.     ES:DI -> multicast address (6 bytes)
  90339. Return: AX = completion code (see #2250)
  90340. SeeAlso: AX=0009h,AX=0014h
  90341. --------N-7C000B-----------------------------
  90342. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL LIST
  90343.     AX = 000Bh
  90344.     ES:DI -> protocol ID buffer
  90345.     CX = number of 2-byte protocol IDs that may be stored in buffer
  90346. Return: AX = completion code (see #2250)
  90347.     CX = number of active protocols (regardless of value returned in AX)
  90348.     protocol ID buffer filled with active protocol IDs
  90349. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90350.       which provides an API on top of its Data Link Interface, allowing the
  90351.       use of any of several network transport layers
  90352. Note:    If the buffer supplied is too small, CX still contains the total number
  90353.       of active protocols and the buffer has been filled until full.
  90354. SeeAlso: AX=000Ch,AX=0014h
  90355. --------N-7C000C-----------------------------
  90356. INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL STATUS
  90357.     AX = 000Ch
  90358.     BX = protocol ID (see #2253,AX=000Bh)
  90359.     ES:DI -> Protocol Status Block (see #2260)
  90360. Return: AX = completion code (see #2250)
  90361. SeeAlso: AX=000Bh,AX=0014h
  90362.  
  90363. Format of SK-UPPS Protocol Status Block (PSB):
  90364. Offset    Size    Description    (Table 2260)
  90365.  00h    DWORD    -> ASCIZ protocol name
  90366.  04h    WORD    protocol mode (see #2254)
  90367.  06h    WORD    protocol type (see AX=0007h)
  90368.  08h    WORD    number of registered multicasts (see AX=0009h,AX=0014h)
  90369. --------N-7C000D-----------------------------
  90370. INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATISTICS
  90371.     AX = 000Dh
  90372.     BX = flag: 0=don't clear statistics, 1=clear statistics
  90373.     ES:DI -> Statistics Data Block (see #2261)
  90374. Return: AX = completion code (see #2250)
  90375. SeeAlso: AX=0002h,AX=0015h
  90376.  
  90377. Format of SK-UPPS Statistics Data Block (SDB):
  90378. Offset    Size    Description    (Table 2261)
  90379.  00h    DWORD    node uptime in ticks (1/18.21 sec.)
  90380.  04h    DWORD    bytes received
  90381.  08h    DWORD    bytes transmitted
  90382.  0Ch    DWORD    frames received
  90383.  10h    DWORD    frames transmitted
  90384.  14h    DWORD    multicast bytes received
  90385.  18h    DWORD    multicast frames received
  90386.  1Ch    DWORD    unrecognized frames
  90387.  20h    WORD    missed frames
  90388.  22h    WORD    frame check sequence (FCS) errors
  90389.  24h    WORD    framing errors
  90390.  26h    WORD    babbling errors
  90391.  28h    WORD    late collision errors
  90392.  2Ah    WORD    loss of carrier errors
  90393.  2Ch    WORD    16 retries failed errors
  90394.  2Eh    WORD    overflow errors
  90395. Note:    fields 26h through 2Ch are always zero, except in some very old
  90396.       versions of the DLI.    Use GET MEDIA STATISTICS (AX=0015h) to get
  90397.       more detailed information.
  90398. --------N-7C000E-----------------------------
  90399. INT 7C - SK-UPPS Data Link Interface API - DLI 2.5+ - GET DRIVER INFO
  90400.     AX = 000Eh
  90401.     ES:DI -> Driver Information Block (see #2262)
  90402.     BX = offset of 1st field within DIB to be returned
  90403.     CX = number of bytes to be returned
  90404. Return: AX = completion code (see #2250)
  90405.     CX = number of bytes copied (regardless of value returned in AX)
  90406. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90407.       which provides an API on top of its Data Link Interface, allowing the
  90408.       use of any of several network transport layers
  90409. SeeAlso: AX=0000h,AX=0002h,AX=000Bh,AX=000Dh,AX=0015h
  90410.  
  90411. Format of SK-UPPS Driver Information Block (DIB):
  90412. Offset    Size    Description    (Table 2262)
  90413.  00h  6 BYTEs    physical node address (from adapter's ROM)
  90414.  06h  6 BYTEs    current node address (see AX=0003h)
  90415.  0Ch    BYTE    adapter id (defined by OEM)
  90416.  0Dh    BYTE    IRQ line (FFh if none)
  90417.  0Eh    DWORD    -> shared memory (zero if none)
  90418.  12h    DWORD    size of shared memory (zero if none)
  90419.  16h    WORD    base I/O port (zero if none)
  90420.  18h    BYTE    DMA line (FFh if none)
  90421.  19h    BYTE    DLI 2.4+ topology (see AX=0000h)
  90422.  1Ah    WORD    size of an Mbuf's DATA area (see #2251)
  90423.  1Ch  2 BYTEs    reserved (currently unused)
  90424.  1Eh    WORD    total number of Mbufs the DLI has
  90425.  20h    WORD    maximum number of Mbufs that can be allocated via REQUEST
  90426.           BUFFER (AX=0004h) and SYNC REQUEST BUFFER (AX=0012h)
  90427.  ---- end of Status Information Block returned by GET DRIVER STATUS (AX=0002h)
  90428.  22h    DWORD    -> ASCIZ adapter name
  90429.  26h    WORD    number of I/O ports used (zero if none)
  90430.  28h    DWORD    line speed in bits/sec.
  90431. --------N-7C000F-----------------------------
  90432. INT 7C - SK-UPPS Data Link Interface API - FEED BACK BUFFER
  90433.     AX = 000Fh
  90434.     ES:BX -> Mbuf (see #2251)
  90435. Return: nothing
  90436. Notes:    A protocol may call this function instead of returning the Mbuf
  90437.       directly from the Receive Upcall if it is running in "promiscuous",
  90438.       "hook" or "chain" mode.
  90439. SeeAlso: AX=0007h
  90440. --------N-7C0010-----------------------------
  90441. INT 7C - SK-UPPS Data Link Interface API - CLIENT HOOK
  90442.     AX = 0010h
  90443. Return: nothing
  90444. Notes:    An application having no active protocols may call this function to
  90445.       prevent the DLI from unloading.
  90446. SeeAlso: AX=0001h,AX=0011h
  90447. --------N-7C0011-----------------------------
  90448. INT 7C - SK-UPPS Data Link Interface API - CLIENT UNHOOK
  90449.     AX = 0011h
  90450. Return: nothing
  90451. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90452.       which provides an API on top of its Data Link Interface, allowing the
  90453.       use of any of several network transport layers
  90454. SeeAlso: AX=0010h
  90455. --------N-7C0012-----------------------------
  90456. INT 7C - SK-UPPS Data Link Interface API - SYNC REQUEST BUFFER
  90457.     AX = 0012h
  90458.     DX = protocol ID (see #2253)
  90459. Return: AX = completion code (see #2250)
  90460.     if AX=0000h: ES:BX -> Mbuf (see #2251)
  90461. Note:    If the protocol wants to be informed when an Mbuf becomes available,
  90462.       REQUEST BUFFER (AX=0004h) should be used instead.
  90463. SeeAlso: AX=0004h,AX=0005h,AX=0006h,AX=0013h
  90464. --------N-7C0013-----------------------------
  90465. INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME RELEASE
  90466.     AX = 0013h
  90467.     ES:BX -> Mbuf (see #2251)
  90468. Return: nothing
  90469. Notes:    Returns immediately; The protocol's Transmit Upcall will NOT be called.
  90470.     The Mbuf may no more be used by the protocol in any way (i.e. the
  90471.       Mbuf's IN USE field may not be polled).
  90472. SeeAlso: AX=0004h,AX=0013h
  90473. --------N-7C0014-----------------------------
  90474. INT 7C - SK-UPPS Data Link Interface API - GET MULTICAST LIST
  90475.     AX = 0014h
  90476.     BX = protocol ID (see #2253,AX=000Bh)
  90477.     ES:DI -> multicast address buffer
  90478.     CX = number of 6-byte multicast addresses that may be stored in buffer
  90479. Return: AX = completion code (see #2250)
  90480.     CX = number of registered multicast addresses for this protocol
  90481.       (regardless of value returned in AX)
  90482.     multicast address buffer filled with multicast addresses registered for
  90483.       this protocol
  90484. Note:    If the buffer supplied is too small, CX still contains the total number
  90485.       of registered multicast addresses for this protocol and the buffer
  90486.       has been completely filled
  90487. SeeAlso: AX=000Bh,AX=0009h,AX=000Ch
  90488. --------N-7C0015-----------------------------
  90489. INT 7C - SK-UPPS Data Link Interface API - DLI 2.6+ - GET MEDIA STATISTICS
  90490.     AX = 0015h
  90491.     ES:DI -> media-specific statistics buffer (see #2263,#2264,#2265)
  90492.     BX = offset of 1st field within MSS to be returned
  90493.     CX = number of bytes to be returned
  90494. Return: AX = completion code (see #2250)
  90495.     CX = number of bytes copied (regardless of value returned in AX)
  90496. Note:    not supported by all DLIs (will return AX=FFFFh if not supported).
  90497. SeeAlso: AX=0000h,AX=000Dh
  90498.  
  90499. Format of SK-UPPS media-specific statistics for Ethernet:
  90500. Offset    Size    Description    (Table 2263)
  90501.  00h    DWORD    alignment errors
  90502.  04h    DWORD    frame check sequence (FCS) errors
  90503.  08h    DWORD    single collision frames
  90504.  0Ch    DWORD    multiple collision frames
  90505.  10h    DWORD    signal quality error (SQE) test errors
  90506.  14h    DWORD    deferred transmissions
  90507.  18h    DWORD    late collisions
  90508.  1Ch    DWORD    excessive collisions
  90509.  20h    DWORD    internal MAC transmit errors
  90510.  24h    DWORD    carrier sense errors
  90511.  28h    DWORD    excessive deferrals
  90512.  2Ch    DWORD    frame too longs
  90513.  30h    DWORD    in range length errors
  90514.  34h    DWORD    out of range length fields
  90515.  38h    DWORD    internal MAC receive errors
  90516.  
  90517. Format of SK-UPPS media-specific statistics for FDDI:
  90518. Offset    Size    Description    (Table 2264)
  90519.  00h    DWORD    SMT operating version id (refer to ANSI 7.1.2.2)
  90520.  04h    DWORD    SMT CF state: 1=Isolated, 2= Wrap_S, 3=Wrap_A, 4=Wrap_B,
  90521.           5=Wrap_AB, 6=Thru (refer to ANSI SMT 9.7.4.3)
  90522.  08h    DWORD    SMT frames sent
  90523.  0Ch    DWORD    SMT frames received
  90524.  10h    DWORD    SMT ring up count
  90525.  14h  6 BYTEs    MAC upstream neighbour
  90526.  1Ah  6 BYTEs    MAC downstream neighbour
  90527.  20h    DWORD    MAC frame counter (refer to ANSI MAC 2.2.1)
  90528.  24h    DWORD    MAC error counter ( " )
  90529.  28h    DWORD    MAC lost counter ( " )
  90530.  2Ch    BYTE    port 1 link error estimate (ranges from 10**-4 to 10**-15 and
  90531.           is reported as the absolute value of the exponent)
  90532.  2Dh    BYTE    port 2 link error estimate ( " )
  90533.  2Eh  2 BYTEs    reserved (currently unused)
  90534.  30h    DWORD    attachment class: 1=single-attachment (S PORT),
  90535.           2=dual-attachment (A/B PORT pairs), 3=concentrator (M PORTs)
  90536.  34h    DWORD    attachment optical bypass present: 1=true, 2=false
  90537.  
  90538. Format of SK-UPPS media-specific statistics for Token-Ring:
  90539. Offset    Size    Description    (Table 2265)
  90540.  00h  6 BYTEs    upstream neighbour
  90541.  06h    WORD    local ring number
  90542.  08h    DWORD    ring up count
  90543.  0Ch    DWORD    signal loss errors
  90544.  10h    DWORD    lobe wire faults
  90545.  14h    DWORD    ring recovery count
  90546.  18h    DWORD    line errors
  90547.  1Ch    DWORD    burst errors
  90548.  20h    DWORD    ARI/FCI errors
  90549.  24h    DWORD    lost frame errors
  90550.  28h    DWORD    receive congestion errors
  90551.  2Ch    DWORD    frame copied errors
  90552.  30h    DWORD    token errors
  90553.  34h    DWORD    DMA bus errors
  90554.  38h    DWORD    DMA parity errors
  90555.  3Ch    DWORD    receive overflow errors
  90556. --------N-7C0016-----------------------------
  90557. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - DRIVER I/O CONTROL
  90558.     AX = 0016h
  90559.     DX = subfunction; bits 14-15 specify direction of I/O:
  90560.         00 no data at all (ES:BX undefined)
  90561.         01 driver -> application (GET)
  90562.         10 application -> driver (SET)
  90563.         11 both directions (GET/SET)
  90564.     ES:BX -> I/O buffer (optional)
  90565.     CX = size of buffer (if ES:BX valid)
  90566. Return: AX = completion code; defined by OEM
  90567. Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
  90568.       which provides an API on top of its Data Link Interface, allowing the
  90569.       use of any of several network transport layers
  90570. Notes:    not supported by all DLIs (will return AX=FFFFh if not supported)
  90571.     subfunction codes are defined by OEMs
  90572. SeeAlso: AX=0001h
  90573. --------N-7C0017-----------------------------
  90574. INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - INTERRUPT REQUEST
  90575.     AX = 0017h
  90576. Return: AX = completion code (see #2250)
  90577. Notes:    not supported by all DLIs (will return AX=FFFFh, if not supported).
  90578.     must be called with interrupts disabled; when the client re-enables
  90579.       interrupts, an interrupt will be generated and reported to the client
  90580.       through an Event Upcall (see AX=0007h [EV_ISR_START/EV_ISR_END])
  90581. SeeAlso: AX=0007h
  90582. --------t-7D---------------------------------
  90583. INT 7D O - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
  90584. Note:    this interface has been moved to INT 2D; there are no known
  90585.       implementations on INT 7D
  90586. SeeAlso: INT 2D,INT 2F
  90587. --------S-7D---------------------------------
  90588. INT 7D U - YTERM 1.4 - CLOCK SUPPORT
  90589. SeeAlso: INT 7E"YTERM"
  90590. --------E-7D---------------------------------
  90591. INT 7D - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ5
  90592. Notes:    this vector is overwritten when GO32 starts but is not restored by
  90593.       early versions of the extender
  90594.     the newest versions of GO32 dynamically allocate the vectors used
  90595.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  90596. SeeAlso: INT 0D,INT 7C"GO32",INT 7E"GO32"
  90597. --------U-7D---------------------------------
  90598. INT 7D - HyperPAD v2.2 - API ACCESS
  90599. Note:    this vector is hooked but immediately passed on (without checking
  90600.       whether the previous handler was 0000h:0000h).  The sole purpose of
  90601.       this vector is to provide the address of the data area described
  90602.       below.
  90603.  
  90604. Format of HyperPAD data area:
  90605. Offset    Size    Description    (Table 2266)
  90606.  -16h    DWORD    pointer to ??? FAR function
  90607.  -12h    DWORD    pointer to callback setting function
  90608.         [C calling conventions, (*callback)(int (_loadds far *)()) ]
  90609.  -0Eh 6 BYTEs    signature "BRC001"
  90610.  -08h    DWORD    pointer to previous INT 7D handler
  90611.  -04h    DWORD    pointer to ??? data
  90612.  00h        HyperPAD INT 7D handler
  90613. ----------7D---------------------------------
  90614. INT 7D - IBM DOS 6.1 E.EXE - ???
  90615. Note:    E.EXE checks whether this interrupt is in use (not 0000h:0000h),
  90616.       and if it is used, attempts to load E55VGA.EX instead of the 
  90617.       default E.EX overlay.     However, E55VGA.EX is not included in
  90618.       IBM DOS 6.1.
  90619. ----------7D00-------------------------------
  90620. INT 7D - SCSILink - RESET SCSI BUS
  90621.     AH = 00h
  90622. Program: SCSILink is a TSR by Cross Products Ltd which allows its PC-hosted
  90623.       cross assemblers and similar products to communicate with Cross
  90624.       Products hardware debuggers
  90625. Desc:    reset all devices on the SCSI bus
  90626. Note:    the installation check is the signature "SCSILINK" immediately prior
  90627.       to the interrupt handler
  90628. Index:    installation check;SCSILink
  90629. ----------7D01-------------------------------
  90630. INT 7D - SCSILink - CONNECT TO TARGET
  90631.     AH = 01h
  90632.     AL = target ID
  90633. Return: CF clear if successful
  90634.     CF set on error
  90635.         AL = initiator error
  90636.         AH = target error
  90637. Desc:    arbitrate the use of the bus and select the specified target device
  90638. ----------7D02-------------------------------
  90639. INT 7D - SCSILink - SEND COMMAND
  90640.     AH = 02h
  90641.     ES:BX -> parameter block (see #2267)
  90642. Return: CF clear if successful
  90643.     CF set on error
  90644.         AL = initiator error
  90645.         AH = target error
  90646. Desc:    send the specified command block to the target device and perform any
  90647.       related I/O
  90648.  
  90649. Format of SCSILink parameter block:
  90650. Offset    Size    Description    (Table 2267)
  90651.  00h    DWORD    size of command block
  90652.  04h    DWORD    address of command block (see #2268)
  90653.  08h    DWORD    size of buffer
  90654.  0Ch    DWORD    address of buffer
  90655.  
  90656. Format of SCSILink command block:
  90657. Offset    Size    Description    (Table 2268)
  90658.  00h        info not yet available
  90659. ----------7D03-------------------------------
  90660. INT 7D - SCSILink - SET TIMEOUT
  90661.     AH = 03h
  90662.     AL = timeout selector (see #2269)
  90663.     BX = new value in 55ms ticks
  90664. Desc:    change an internal timeout value to allow communication with very
  90665.       slow targets
  90666.  
  90667. (Table 2269)
  90668. Values for SCSILink timeout selector:
  90669.  00h    time to wait for bus (default 18)
  90670.  01h    time to wait for new phase (default 5)
  90671.  02h    maximum time to send/receive block (default 18)
  90672.  03h    time to wait for reselect (default 180)
  90673. ----------7D04-------------------------------
  90674. INT 7D - SCSILink - GET ERROR STRING
  90675.     AH = 04h
  90676.     AL = error number
  90677. Return: ES:BX -> ASCIZ error string for error number
  90678. ----------7D05-------------------------------
  90679. INT 7D - SCSILink - GET ADDRESS
  90680.     AH = 05h
  90681. Return: AL = DMA channel
  90682.     AH = initiator ID
  90683.     BX = card address
  90684. Desc:    determine the current hardware configuration
  90685. ----------7D06-------------------------------
  90686. INT 7D - SCSILink - PUT DATA
  90687.     AH = 06h
  90688.     CX = number of bytes to store (0001h-0100h)
  90689.     ES:BX -> data to be saved
  90690. Return: CF clear if successful
  90691.     CF set on error
  90692.         AL = error code (01h = too much data)
  90693. Note:    the specified data is stored in SCSILink's PSP
  90694. SeeAlso: AH=07h
  90695. ----------7D07-------------------------------
  90696. INT 7D - SCSILink - GET DATA
  90697.     AH = 07h
  90698.     CX = number of bytes to retrieve (0001h-0100h)
  90699.     ES:BX -> buffer for data
  90700. Return: CF clear if successful
  90701.     CF set on error
  90702.         AL = error code (01h = too much data)
  90703. Note:    retrieve data previously stored with AH=06h
  90704. SeeAlso: AH=06h
  90705. ----------7D08-------------------------------
  90706. INT 7D - SCSILink - TERMINATE SESSION
  90707.     AH = 08h
  90708. Desc:    indicate to any other programs that intercept INT 7D that the program
  90709.       has finished with the link
  90710. Note:    the program should call this function even if a SCSI error caused its
  90711.       termination
  90712. ----------7D09-------------------------------
  90713. INT 7D - SCSILink - POLL REQUEST
  90714.     AH = 09h
  90715.     AL = target ID
  90716. Return: AL = status
  90717.         FEh resident driver experienced SCSI error
  90718.         FFh resident driver handleded event
  90719. Desc:    give any drivers chained onto INT 7D a chance to handle an exception
  90720.       not specifically handled by the calling program
  90721. Notes:    this service exists so that resident disk servers, etc. can continue
  90722.       running even while debuggers and profilers are active
  90723.     the resident driver assumes that a connection has been established and
  90724.       attempts to leave the target connected
  90725. --------*-7E---------------------------------
  90726. INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
  90727. --------S-7E---------------------------------
  90728. INT 7E U - YTERM 1.4 - ???
  90729. SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
  90730. --------E-7E---------------------------------
  90731. INT 7E - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ6
  90732. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  90733.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  90734. Notes:    this vector is overwritten when GO32 starts but is not restored by
  90735.       early versions of the extender
  90736.     the newest versions of GO32 dynamically allocate the vectors used
  90737.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  90738. SeeAlso: INT 0E,INT 7D"GO32",INT 7F"GO32"
  90739. --------s-7E00FE-----------------------------
  90740. INT 7E - SBOS - UNINSTALL
  90741.     AX = 00FEh
  90742. Return: nothing, SBOS removed
  90743. Program: SBOS is a SoundBlaster emulator for the Gravis UltraSound
  90744. Note:    this function may not be called if any SBOS vectors have been hooked
  90745. SeeAlso: INT 21/AX=FD12h
  90746. --------m-7E5857BL57-------------------------
  90747. INT 7E - XLOAD - INSTALLATION CHECK
  90748.     AX = 5857h
  90749.     BL = 57h
  90750. Return: AX = 0000h if installed
  90751. Program: XLOAD is the LOADHIGH-equivalent from Helix Software's Netroom
  90752. SeeAlso: AX=5857h/BL=5Ah,AX=5857h/BL=5Bh
  90753. --------m-7E5857BL5A-------------------------
  90754. INT 7E - XLOAD - GET ???
  90755.     AX = 5857h
  90756.     BL = 5Ah
  90757. Return: AX = 0000h
  90758.     CX = ???
  90759.     DS:SI -> ???
  90760. SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Bh
  90761. --------m-7E5857BL5B-------------------------
  90762. INT 7E - XLOAD - GET XLOAD MEMORY SIZE
  90763.     AX = 5857h
  90764.     BL = 5Bh
  90765. Return: AX = 0000h
  90766.     CX = segment of XLOAD TSR
  90767.     DX = size of memory block in which XLOAD TSR is located
  90768. SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Ah
  90769. --------!---Section--------------------------
  90770. Interrupt List, part 12 of 12
  90771. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  90772. --------V-7F---------------------------------
  90773. INT 7F - Halo88 - API
  90774.     BX = function number (see #2270)
  90775.     additional parameters on stack
  90776. Return: ???
  90777. Program: Halo88 is a suite of graphics routines
  90778. Note:    according to Stuart Kemp, the code appears to make no provisions for
  90779.        chaining
  90780.  
  90781. (Table 2270)
  90782. Values for Halo88 API function:
  90783.  64h    arc
  90784.  65h    bar
  90785.  66h    box
  90786.  67h    circle
  90787.  68h    clr
  90788.  69h    default hatch style
  90789.  6Ah    default line style
  90790.  6Bh    delhcur
  90791.  6Ch    delln / deltcur
  90792.  6Dh    ellipse
  90793.  6Eh    fill
  90794.  6Fh    flood
  90795.  70h    flood2
  90796.  71h    init graphics
  90797.  72h    init hcur
  90798.  73h    init marker
  90799.  74h    init tcur
  90800.  75h    inqarc
  90801.  76h    inqbknd
  90802.  77h    inqclr
  90803.  78h    inqerr
  90804.  79h    inqgcur
  90805.  7Ah    inqhcur
  90806.  7Bh    inqmarker
  90807.  7Dh    inqtcur
  90808.  7Eh    inqtext
  90809.  7Fh    lnabs
  90810.  80h    lnrel
  90811.  81h    markerabs
  90812.  82h    markerrel
  90813.  83h    moveabs
  90814.  84h    movehcurabs
  90815.  85h    movehcurrel
  90816.  86h    moverel
  90817.  87h    movetcurabs
  90818.  88h    movetcurrel
  90819.  89h    movefrom
  90820.  8Ah    moveto
  90821.  8Bh    pie
  90822.  8Ch    polylnabs
  90823.  8Dh    polylnrel
  90824.  8Eh    ptabs
  90825.  8Fh    ptrel
  90826.  91h    setasp
  90827.  92h    set color
  90828.  93h    set font
  90829.  94h    set hatch    style
  90830.  95h    set line style
  90831.  97h    settext
  90832.  98h    set text color
  90833.  99h    btext
  90834.  9Ah    setseg
  90835.  9Bh    display
  90836.  9Ch    setscreen
  90837.  9Eh    close graphics
  90838.  9Fh    ftinit
  90839.  A0h    ftlocate
  90840.  A1h    ftext
  90841.  A5h    set viewport
  90842.  A6h    set window
  90843.  A7h    set world
  90844.  AAh    ftcolor
  90845.  ACh    initlp
  90846.  ADh    inqasp
  90847.  AEh    inqdev
  90848.  AFh    inqdisplay
  90849.  B0h    inqft
  90850.  B1h    inqftcolor
  90851.  B2h    inqinterlace
  90852.  B3h    inqlpa
  90853.  B4h    inqlpg
  90854.  B5h    inqmode
  90855.  B6h    inqscreen
  90856.  B7h    inqversion
  90857.  B8h    roam
  90858.  B9h    scroll
  90859.  BAh    setieee
  90860.  BBh    set interlace
  90861.  BCh    shift
  90862.  BDh    start graphics
  90863.  BEh    vpan
  90864.  CBh    gwrite
  90865.  CCh    gread
  90866.  CDh    setxor
  90867.  CEh    rbox
  90868.  CFh    rcir
  90869.  D0h    rlnabs
  90870.  D1h    rlnrel
  90871.  D2h    delbox
  90872.  D3h    delcir
  90873.  D5h    setseg2
  90874.  DCh    worldoff
  90875.  DDh    mapwtod
  90876.  DEh    mapdtow
  90877.  DFh    mapwton
  90878.  E0h    mapntow
  90879.  E1h    mapdton
  90880.  E2h    mapntod
  90881.  E3h    inqworld
  90882.  E4h    inqviewport
  90883.  E5h    set line width
  90884.  E6h    lnjoint
  90885.  E7h    set locator
  90886.  E8h    read locator
  90887.  E9h    setdev
  90888.  EBh    setstext
  90889.  ECh    setstclr
  90890.  EDh    setstang
  90891.  EEh    stext
  90892.  EFh    inqstext
  90893.  F0h    setdegree
  90894.  F1h    inqstsize
  90895.  F2h    polyfabs
  90896.  F3h    polyfrel
  90897.  F4h    inqdrange
  90898.  F5h    inqstang
  90899.  F6h    orglocator
  90900.  F7h    inqlocator
  90901.  F8h    inqarea
  90902.  F9h    setipal
  90903.  FAh    setborder
  90904.  FBh    inqcrange
  90905.  FEh    setclip
  90906.  FFh    fcir
  90907. 100h    setcrange
  90908. 101h    setdrange
  90909. 102h    setlattr
  90910. 103h    polycabs
  90911. 104h    polycrel
  90912. 108h    memcom
  90913. 109h    memexp
  90914. 10Ah    memmov
  90915. 10Eh    movefx
  90916. 10Fh    movetx
  90917. 110h    inqrgb
  90918. 111h    save image
  90919. 112h    restore image
  90920. 113h    setapal
  90921. 114h    setxpal
  90922. 118h    inqtsize
  90923. 12Eh    gprint
  90924. 130h    setprn
  90925. 131h    setpattr
  90926. 133h    setbattr
  90927. 135h    pexpand
  90928. 136h    ptnorm
  90929. 137h    pfnorm
  90930. 13Bh    inqprn
  90931. 13Ch    lopen
  90932. 13Dh    lclose
  90933. 13Eh    lappend
  90934. 13Fh    lrecord
  90935. 140h    lswitch
  90936. 142h    inqfun
  90937. 15Dh    lsetup
  90938. 15Eh    lrest
  90939. 15Fh    lsave
  90940. --------N-7F---------------------------------
  90941. INT 7F - CONVERGENT TECHNOLOGIES ClusterShare CTOS ACCESS VECTOR
  90942.     AL = request ID
  90943.         01h "Request"/"RequestDirect"
  90944.         ES:BX -> pRq
  90945.         DX ignored
  90946.         04h "Wait"
  90947.         ES:BX -> ppMsgRet
  90948.         DX = exchange
  90949.         05h "AllocExch"
  90950.         ES:BX -> pExchRet
  90951.         06h "DeAllocExch"
  90952.         DX = exchange
  90953.         07h "Check"
  90954.         ES:BX -> ppMsgRet
  90955.         DX = exchange
  90956.     CX = 4354h ('CT')
  90957. Return: AX = status
  90958.         0000h successful
  90959. --------S-7F---------------------------------
  90960. INT 7F - Telebit ACS SERIAL I/O
  90961.     ES:SI-> parameter block (see #2271)
  90962. Return: CF set on error
  90963.     CF clear on success
  90964. Notes:    the signature "PDGATEWRKSTNIF" appears just prior to the interrupt
  90965.       handler; this serves as the installation check
  90966. Index:    installation check;Telebit ACS Serial I/O
  90967.  
  90968. Format of Telebit ACS parameter block:
  90969. Offset    Size    Description    (Table 2271)
  90970.  00h    BYTE    command (see #2272)
  90971.  01h    BYTE    gateway number
  90972.  02h    BYTE    reserved
  90973.  03h    BYTE    port
  90974.  04h 17 BYTEs    auxiliary buffer
  90975.  15h    BYTE    session
  90976.  16h    WORD    count of bytes passed to API
  90977.  18h    DWORD    buffer pointer passed to/from API
  90978.  1Ch    WORD    count of bytes passed from API
  90979.  1Eh    BYTE    return code (see #2273)
  90980.  
  90981. (Table 2272)
  90982. Values for Telebit ACS command:
  90983.  3Ch    status
  90984.  3Dh    connect
  90985.  3Eh    disconnect
  90986.  3Fh    read
  90987.  40h    data/command write
  90988.  41h    clear receive buffer
  90989.  42h    get configuration
  90990.  43h    get receiver status
  90991.  44h    raw write
  90992.  45h    search servers
  90993.  46h    set transmit buffer size
  90994.  
  90995. (Table 2273)
  90996. Values for Telebit ACS return code:
  90997.  00h    success
  90998.  01h    invalid session
  90999.  05h    servername invalid
  91000.  06h    NetWare fileserver bindery is locked
  91001.  07h    communication server not active
  91002.  08h    general failure in NetWare fileserver
  91003.  09h    not logged into a fileserver
  91004.  10h    connection table full
  91005.  11h    no response from communication server
  91006.  12h    connection attempt terminated abnormally
  91007.  13h    connection refused - no sessions available
  91008.  14h    gateway number/port already in use
  91009.  15h    invalid connection response
  91010.  16h    port invalid
  91011.  17h    incorrect version in server response
  91012.  18h    gateway number/port combination not configured
  91013.  19h    initialization has not been completed
  91014.  20h    no more sockets are available
  91015.  21h    no active poolname
  91016.  23h    FATAL internal interface error
  91017.  24h    registration of host workstation failed - name is already in use
  91018.  25h    registration of host workstation failed - workstation name table full
  91019.  26h    registration of host workstation failed - only one session may be
  91020.       registered for dial-in
  91021.  FFh    Telebit ACS API is busy - retry later
  91022. --------N-7F---------------------------------
  91023. INT 7F - Non-dedicated NetWare 2.x File Server - ENTER CONSOLE MODE
  91024. Notes:    the installation check consists of checking for the signature "Lynn"
  91025.       in the four bytes preceding the interrupt handler; if present, the
  91026.       current program is running as a DOS task on a non-dedicated NetWare
  91027.       2.x file server.
  91028.     Before placing the server into "console" mode, it is recommended that
  91029.       NetWare broadcast messages be disabled with INT 21/AH=DEh/DL=00h.
  91030. SeeAlso: INT 21/AH=DEh/DL=04h
  91031. Index:    installation check;non-dedicated NetWare server
  91032. --------S-7F---------------------------------
  91033. INT 7F U - YTERM - ???
  91034. SeeAlso: INT 7E"YTERM"
  91035. --------E-7F---------------------------------
  91036. INT 7F - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ7
  91037. Notes:    this vector is overwritten when GO32 starts but is not restored by
  91038.       early versions of the DOS extender
  91039.     the newest versions of GO32 dynamically allocate the vectors used
  91040.       for the relocated IRQs, much as DESQview does (see INT 50"DESQview")
  91041. SeeAlso: INT 0F,INT 7E"GO32"
  91042. ----------7F---------------------------------
  91043. INT 7F - Canon IXHND2 Scanner Interface
  91044. --------N-7F---------------------------------
  91045. INT 7F - Alloy 386/MultiWare (MW386), Novell-Type Network Executive (NTNX)
  91046. Notes:    the words at C800h:0000h and C800h:0002h will both be 584Eh if the
  91047.       MW386 multitasking system is present (i.e. signature "NXNX")
  91048.     NTNX allows its API to be placed on a different interrupt than 7Fh at
  91049.       load time.  To determine the actual vector used, open the device
  91050.       "SPOOLER" with INT 21/AX=3D02h, place it in RAW mode with
  91051.       INT 21/AX=4400h and INT 21/AX=4401h, then read one byte which will
  91052.       be the actual interrupt number being used; the other interrupts may
  91053.       be found with INT 7F/AH=09h/CL=03h
  91054. --------N-7F---------------------------------
  91055. INT 7F - Alloy NetWare Support Kit (ANSK) v2.2+ - INSTALLATION CHECK
  91056. Note:    a program may determine that it is running on an ANSK Slave by checking
  91057.       the five bytes at F000h:0000h for the ASCIZ signature "ANSK"; this
  91058.       address is RAM, and should not be written.  However, the above check
  91059.       will not work on Slaves with <1MB RAM or those using the SLIM.SYS
  91060.       device driver
  91061. --------N-7F00-------------------------------
  91062. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK AND WAIT
  91063.     AH = 00h
  91064.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  91065. Return: AL = status (see #2274)
  91066.     AH = semaphore owner if status=02h
  91067. SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
  91068.  
  91069. (Table 2274)
  91070. Values for Alloy function status:
  91071.  00h    successful
  91072.  01h    invalid function
  91073.  02h    semaphore already locked
  91074.  03h    unable to lock/unlock semaphore
  91075.  04h    semaphore space exhausted
  91076.  05h    host/target PC did not respond (NTNX)
  91077. --------N-7F00-------------------------------
  91078. INT 7F - G8BPQ - proposed addition - GET NODE/SWITCH VERSION AND DESCRIPTION
  91079.     AH = 00h
  91080.     ES:SI -> buffer for "USERS" text string
  91081. Return: AH = major version
  91082.     AL = minor version
  91083.     CX = length of returned string
  91084. Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
  91085.       John Wiseman which allows a PC to act as a node in an AX.25 network
  91086. SeeAlso: AH=01h"G8BPQ",AH=09h"G8BPQ"
  91087. --------N-7F01-------------------------------
  91088. INT 7F - Alloy NTNX, MW386 - SEMAPHORE LOCK
  91089.     AH = 01h
  91090.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  91091. Return: AL = status (see #2274)
  91092.     AH = semaphore owner if status=02h
  91093. SeeAlso: AH=00h,AH=02h,AH=41h
  91094. --------V-7F01-------------------------------
  91095. INT 7F - TIGA Communications Driver v2.05 - GET ENTRY POINTS
  91096.     AH = 01h
  91097. Return: BX = 1234h if installed
  91098.         DX:AX -> array of FAR entry points
  91099.         CH = driver major version
  91100.         CL = driver minor version
  91101. Note:    TIGACD 2.05 returns CF set on unrecognized functions in AX
  91102. SeeAlso: AX=1234h,AX=4321h
  91103. --------N-7F01-------------------------------
  91104. INT 7F - G8BPQ v4.00+ - HOST MODE - SET APPLICATION FLAGS AND MASK
  91105.     AH = 01h
  91106.     AL = stream number (01h-40h)
  91107.     CL = new application flags
  91108.         bit 7: monitored frames available via AH=0Bh"G8BPQ"
  91109.     DL = new application mask
  91110. Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
  91111.       John Wiseman which allows a PC to act as a node in an AX.25 network
  91112. Range:    INT 00h to INT FFh, set in configuration file BPQCFG.TXT for v4.03+
  91113.       (earlier versions were hard-wired for INT 7F)
  91114. SeeAlso: AH=00h"G8BPQ",AH=02h"G8BPQ",AH=0Bh"G8BPQ"
  91115. --------I-7F0104BX0000-----------------------
  91116. INT 7F - HLLAPI (IBM 3270 High-Level Language API)/LLAPI (Rabbit Low Level API)
  91117.     AX = 0104h (HLLAPI gate ID)
  91118.     BX = 0000h
  91119.     DS:SI -> parameter control block (see #2275)
  91120. Return: parameter control block updated
  91121. Note:    the installation check for the Novell HLLAPI TSR is the signature
  91122.       string "CXI" (for the company Novell bought) immediately prior to
  91123.       the interrupt handler
  91124. SeeAlso: AX=0105h,AX=ABCDh
  91125.  
  91126. Format of HLLAPI parameter control block:
  91127. Offset    Size    Description    (Table 2275)
  91128.  00h  3 BYTEs    signature = 'PCB'
  91129.  03h    BYTE    function number (see #2276,#2277)
  91130.  04h    WORD    segment of control string
  91131.  06h    WORD    offset of control string
  91132.  08h    WORD    length of control string, unless explicit end-of-str char set
  91133.  0Ah    BYTE    unused (IBM)
  91134.         ControlString[0] (Rabbit)
  91135.  0Bh    WORD    return code (see #2279)
  91136.  0Dh    WORD    maximum length of control string (IBM)
  91137.         unused (Rabbit)
  91138.  
  91139. (Table 2276)
  91140. Values for HLLAPI function number:
  91141.  00h    OEM function (Query system for Attachmate implementation)
  91142.  01h    Connect presentation space
  91143.  02h    Disconnect presentation space
  91144.  03h    Send string of keystrokes as if typed from keyboard
  91145.  04h    Wait ~60s, returns status of presentation space
  91146.  05h    Copy current presentation space into a user-defined buffer
  91147.  06h    Search presentation space for first occurrence of a specified string
  91148.  07h    Query cursor location in current presentation space
  91149.  08h    Copy part or all of current presentation space into user buffer
  91150.  09h    Set session parameters; parameters vary by vendor (see #2278)
  91151.  0Ah    Get info on sessions currently connected
  91152.  0Bh    Lock current presentation space
  91153.  0Ch    Unlock previously locked presentation space
  91154.  0Dh    Return copy of operator info area (OIA) of current presentation space
  91155.  0Eh    get attribute byte for given position in the current presentation space
  91156.  0Fh    copy string of characters to the current presentation space
  91157.  10h    workstation control functions
  91158.  11h    storage manager functions, intended primarily for BASIC applications
  91159.     (not implemented by Rabbit)
  91160.  12h    set delay period in half-second intervals
  91161.  14h    get info on level of workstation support used
  91162.  15h    reset session parameters to default values
  91163.  16h    get detailed info on the current session
  91164.  17h    start host notification to application on presentation sp or OIA update
  91165.  18h    check host update when host notification enabled
  91166.  19h    stop host notification
  91167.  1Eh    search field within current presentation space for string
  91168.  1Fh    get first positionof a selected field in the current presentation space
  91169.  20h    get length of specified field
  91170.  21h    copy string into a specified field
  91171.  22h    copy specified field into a user-defined buffer
  91172.  23h    create alternate presentation space (IBM only), don't use with BASIC
  91173.  24h    switch to alternate presentation space (IBM only), not with BASIC
  91174.  25h    display cursor in specified area (IBM only), don't use with BASIC
  91175.  26h    display alternate presentation space (IBM only), don't use with BASIC
  91176.  27h    delete alternate presentation space (IBM only), don't use with BASIC
  91177.  28h    set cursor
  91178.  29h    start Close Intercept
  91179.  2Ah    query Close Intercept
  91180.  2Bh    stop Close Intercept
  91181.  32h    start intercepting keystrokes to allow filtering
  91182.  33h    get keystrokes after turning on interception
  91183.  34h    notify operator when keystroke rejected by filter subroutine
  91184.  35h    stop intercepting keystrokes
  91185.  5Ah    send file
  91186.  5Bh    receive file
  91187.  5Ch    run a program (not implemented by Rabbit)
  91188.  5Dh    execute DOS command (not implemented by Rabbit)
  91189.  63h    change presentation space position to PC display row/col or vice versa
  91190.  65h    connect to Window Services
  91191.  66h    disconnect from Window Services
  91192.  67h    set/query window coordinates
  91193.  68h    set/query window status
  91194.  69h    change presentation space name
  91195.  78h    connect Structured Fields
  91196.  79h    disconnect Structured Fields
  91197.  7Ah    query size of communications buffer
  91198.  7Bh    allocate communications buffer
  91199.  7Ch    free communications buffer
  91200.  7Dh    get request completion state
  91201.  7Eh    read Structured Fields
  91202.  7Fh    write Structured Fields
  91203.  FFh    Get info on DCA implementation
  91204.  
  91205. (Table 2277)
  91206. Values for LLAPI function number:
  91207.  80h    initialize LLAPI (internal call)
  91208.  83h    set Session ID (one-character ID)
  91209.  84h    read Session ID (one-character ID)
  91210.  85h    lock 327x keyboard
  91211.  86h    unlock 327x keyboard
  91212.  87h    wait for Clear to Send
  91213.  88h    type ASCII character
  91214.  89h    type 327x key
  91215.  8Ah    read keyboard lock state
  91216.  8Fh    force screen update
  91217.  90h    view session
  91218.  91h    relinquish (suspend foreground until background becomes idle)
  91219.  92h    poke screen character
  91220.  93h    poke translated character
  91221.  94h    peek screen character
  91222.  95h    peek translated character
  91223.  96h    set cursor position
  91224.  97h    send scan code (Rabbit only)
  91225.  98h    synchronize (returns after keystroke queue empty)
  91226.  99h    type PC key (Rabbit only)
  91227.  
  91228. (Table 2278)
  91229. Values for HLLAPI Function 09h Session Parameters:
  91230.  ASCII        ??? (Rabbit only)
  91231.  ATTRIB        return attributes in hex
  91232.  NOATTRIB    return attributes as blanks
  91233.  CONPHYS    make physical connection
  91234.  CONLOG        only make logical connection
  91235.  EAB        copy extended attribute bytes along with data
  91236.  NOEAB        copy data only
  91237.  ESC=n        set escape character to "n" (default '@')
  91238.  EOT=n        set end of string character (default 00h)
  91239.  FPAUSE        full-duration pause
  91240.  FTNOWAIT    return immediately from functions 5Ah and 5Bh (Rabbit only)
  91241.  FTWAIT        wait for file transfer to complete (Rabbit only)
  91242.  IPAUSE        interruptable pause
  91243.  RABESC        ??? (Rabbit only)
  91244.  NORABESC    ??? (Rabbit only)
  91245.  SCANCODE    ??? (Rabbit only)
  91246.  STRLEN        use explicit string lengths
  91247.  STREOT        use terminated strings
  91248.  SRCHALL    search entire presentation space
  91249.  SRCHFROM    search from specified offset
  91250.  SRCHFRWD    search forward from position 1
  91251.  SRCHBKWD    search backward from last position in presentation space
  91252.  TIMEOUT=n    ??? (Rabbit only)
  91253.  TWAIT        wait specified time for keyboard ready
  91254.  LWAIT        wait until keyboard ready
  91255.  NWAIT        no wait
  91256.  TRON        enable tracing
  91257.  TROFF        disable tracing
  91258.  AUTORESET    send reset before sending keys with function 03h
  91259.  NORESET    don't send reset
  91260.  QUIET        don't display messages sent with INT 21/AH=09h
  91261.  NOQUIET    allow messages to be displayed
  91262.  TIMEOUT=n    set timeout in 30-second intervals, 0 = wait until ^Break
  91263.  XLATE        translate extended attribute bytes
  91264.  NOXLATE    don't translate
  91265.  NEWRET        use HLLAPI v3.0 return code conventions
  91266.  OLDRET        use HLLAPI v2.0 return code conventions
  91267.  
  91268. (Table 2279)
  91269. Values for Windows HLLAPI return code:
  91270.  00h    successful
  91271.  01h    Presentation Space not connected/requested size unavailable
  91272.  02h    invalid function or parameter error/invalid block ID
  91273.  03h    file transfer complete
  91274.  04h    file transfer complete (segmented)/Presentation Space busy
  91275.  05h    inhibited or keyboard locked
  91276.  06h    data truncated
  91277.  07h    invalid Presentation Space position
  91278.  08h    operation not available
  91279.  09h    system error
  91280.  0Ah    blocking error
  91281.  0Bh    resource not available
  91282.  0Ch    session stopped
  91283.  14h    undefined key combination
  91284.  15h    OIA updated
  91285.  16h    Presentation Space updated
  91286.  17h    both Presentation Space and OIA updated
  91287.  18h    no such field
  91288.  19h    no keystrokes available
  91289.  1Ah    Presentation Space or Operator Information Area changed
  91290.  1Bh    file transfer aborted
  91291.  1Ch    zero-length field
  91292.  1Eh    cursor type invalid
  91293.  1Fh    keystroke overflow
  91294.  20h    another application is already connected
  91295.  22h    message sent to host cancelled
  91296.  23h    transmission from host cancelled
  91297.  24h    lost contact with host
  91298.  25h    function successful
  91299.  26h    function incomplete
  91300.  27h    a DDM session is already connected
  91301.  28h    disconnected, but asynchronous requests still pending
  91302.  29h    buffer already in use
  91303.  2Ah    no matching request found
  91304. 12Dh    invalid function number
  91305. 12Eh    file not found
  91306. 131h    access denied
  91307. 134h    out of memory
  91308. 136h    environment invalid
  91309. 137h    format invalid
  91310. 270Eh (9998) invalid Presentation Space ID
  91311. 270Fh (9999) invalid row or column code
  91312. ---Windows HLLAPI extensions---
  91313. F000h    asynchronous call already in progress
  91314. F001h    invalid asynchronous task ID
  91315. F002h    blocking call cancelled
  91316. F003h    underlying subsystem not started
  91317. F004h    unsupported application version
  91318. --------V-7F0105-----------------------------
  91319. INT 7F - IBM 8514/A Adapter Interface (HDILOAD.EXE)
  91320.     AX = 0105h
  91321. Return: CF set on error
  91322.     CF clear if successful
  91323.         CX:DX -> array of FAR pointers to entry points (see #2280)
  91324. Note:    most functions are invoked by pushing the DWORD parameter block pointer
  91325.       and then performing a FAR call via the appropriate vector of the
  91326.       entry point array, placing the FAR address of the function's
  91327.       parameter block on the top of the stack
  91328. SeeAlso: AX=0104h,AX=0106h,AX=ABCDh
  91329.  
  91330. (Table 2280)
  91331. Values for HDILOAD function number: (do FAR call via entry_points+4*function)
  91332.  08h    HOPEN    Open Adapter (see #2313)
  91333.  09h    HSMX    Set Mix (see #2342)
  91334.  10h    HINT    Interrupt (see #2308)
  91335.  13h    HLDPAL    Load Palette (see #2309)
  91336.  15h    HBBW    BitBLT Write Image Data (see #2295)
  91337.  17h    HBBR    BitBLT Read Image Data (see #2296)
  91338.  18h    HBBCHN    Chained Data Go (see #2294)
  91339.  19h    HBBC    BitBLT Copy Data (see #2293)
  91340.  1Dh    HQMODE    Get Current Mode (see #2319)
  91341.  20h    HRECT    Fill Rectangle (see #2321)
  91342.  22h    HCLOSE    Close Adapter and place in quiescent state (see #2301)
  91343.  30h    HINIT    Initialize State (see #2307)
  91344.  31h    HSYNC    Synchronize Adapter (see #2346)
  91345.  39h    HSPAL    Save Palette (see #2343)
  91346.  3Ah    HRPAL    Restore Palette (see #2324)
  91347.  ???    HSGQ    Set Graphics Quality (see #2333)
  91348.  ???    HSCOORD    Set Coordinate Type (see #2330)
  91349.  ???    HESC    Escape, Terminate Processing (see #2306)
  91350.  ???    HSBCOL    Set Background Color (see #2325)
  91351.  ???    HSBP    Set Bit Plane Controls (see #2326)
  91352.  ???    HSCMP    Set Color Comparison Register (see #2328)
  91353.  ???    HSCOL    Set Color (see #2329)
  91354.  ???    HSHS    Set Scissors (clipping rectangle) (see #2334)
  91355.  ???    HXLATE    Assign Text Color (see #2347)
  91356.  ???    HQMODES    Get Adapter Modes (see #2320)
  91357.  ???    HQDPS    Get Drawing Process State Size (see #2318)
  91358.  ???    HQDFPAL    Get Default Palette (see #2317)
  91359.  ???    HQCOORD    Get Coordinate Type (see #2315)
  91360.  ???    HQCP    Get Current Position (see #2316)
  91361.  ???    HSMODE    Change Mode (see #2340)
  91362.  ???    HLINE    Draw Line at Given Position (see #2310)
  91363.  ???    HCLINE    Draw Line at Current Position (see #2300)
  91364.  ???    HRLINE    Draw Line Relative from Given Position (see #2322)
  91365.  ???    HCRLINE    Draw Line Relative at Current Position (see #2303)
  91366.  ???    HSLT    Set Line Type (see #2337)
  91367.  ???    HSLW    Set Line Width (see #2339)
  91368.  ???    HSLPC    Save Line Pattern Count (see #2336)
  91369.  ???    HRLPC    Restore Line Pattern Count (see #2323)
  91370.  ???    HCBBW    BitBLT Write Image Data at Current Position (see #2297)
  91371.  ???    HBAR    Begin Area (see #2292)
  91372.  ???    HEAR    End Area (see #2304)
  91373.  ???    HSPATT    Set Pattern (see #2344)
  91374.  ???    HSPATTO    Set Pattern Reference Point (see #2345)
  91375.  ???    HEGS    Erase Graphics Screen (see #2305)
  91376.  ???    HSCP    Set Current Position (see #2331)
  91377.  ???    HMRK    Set Marker (see #2312)
  91378.  ???    HCMRK    Set Marker at Current Position (see #2302)
  91379.  ???    HSMARK    Set Marker Shape (see #2341)
  91380.  ???    HSCS    Set Character Set (see #2332)
  91381.  ???    HCHST    Write Character String at Given Position (see #2299)
  91382.  ???    HCCHST    Write Character String at Current Position (see #2298)
  91383.  ???    HSCELL    Set Cell Size for Alphanumeric Text (see #2327)
  91384.  ???    ABLOCKMFI Write Character/Attribute Block MFI (see #2283)
  91385.  ???    ABLOCKCGA Write Character Block CGA (see #2281)
  91386.  ???    AERASE    Erase Rectangle (see #2286)
  91387.  ???    ASCROLL Scroll Rectangle (see #2287)
  91388.  ???    ACURSOR    Set Alphanumerics Cursor Position (see #2285)
  91389.  ???    ASCUR    Set Alphanumeric Cursor Shape (see #2288)
  91390.  ???    ASFONT    Set Font (see #2289)
  91391.  ???    AXLATE    Assign Alphanumeric Color (see #2291)
  91392.  
  91393. Format of ABLOCKCGA parameter block:
  91394. Offset    Size    Description    (Table 2281)
  91395.  00h    WORD    000Ah (length of following data)
  91396.  02h    WORD    top-left coordinate of character block
  91397.  04h    WORD    width of block
  91398.  06h    DWORD    -> block of WORDs describing characters (see #2282)
  91399.  0Ah    BYTE    length of block in characters
  91400.  0Bh    BYTE    highlight attribute
  91401.         bit 4: transparent background
  91402.         bit 5: overstrike
  91403.         bit 6: reverse video
  91404.         bit 7: underscore
  91405. SeeAlso: #2283
  91406.  
  91407. Bitfields for one character in ABLOCKCGA character block:
  91408. Bit(s)    Description    (Table 2282)
  91409.  3-0    foreground attribute
  91410.  7-4    background attribute
  91411.  15-8    character code
  91412.  
  91413. Format of ABLOCKMFI parameter block:
  91414. Offset    Size    Description    (Table 2283)
  91415.  00h    WORD    0009h (length of following data)
  91416.  02h    WORD    top-left coordinate of character block
  91417.  04h    WORD    width of block
  91418.  06h    DWORD    -> block of DWORDs describing characters (see #2284)
  91419.  0Ah    BYTE    length of block in characters
  91420. SeeAlso: #2281
  91421.  
  91422. Bitfields for one character in ABLOCKMFI character block:
  91423. Bit(s)    Description    (Table 2284)
  91424.  7-0    reserved
  91425.  9-8    low two bits of font number
  91426.  12    transparent background
  91427.  13    overstrike
  91428.  14    reverse video
  91429.  15    underscore
  91430.  19-16    foreground color attribute
  91431.  23-20    background color attribute
  91432.  31-24    character code
  91433.  
  91434. Format of ACURSOR parameter block:
  91435. Offset    Size    Description    (Table 2285)
  91436.  00h    WORD    0002h (length of following data)
  91437.  02h    BYTE    column (0-based)
  91438.  03h    BYTE    row (0-based)
  91439. SeeAlso: #2288
  91440.  
  91441. Format of AERASE parameter block:
  91442. Offset    Size    Description    (Table 2286)
  91443.  00h    WORD    0005h (length of following data)
  91444.  02h    BYTE    left-most column (0-based)
  91445.  03h    BYTE    top-most row (0-based)
  91446.  04h    BYTE    rectangle's width in character cells
  91447.  05h    BYTE    rectangle's height in character cells
  91448.  06h    BYTE    background color (bits 7-4)
  91449. SeeAlso: #2287
  91450.  
  91451. Format of ASCROLL parameter block:
  91452. Offset    Size    Description    (Table 2287)
  91453.  00h    WORD    0006h (length of following data)
  91454.  02h    BYTE    left-most column (0-based) of source
  91455.  03h    BYTE    top-most row (0-based) of source
  91456.  04h    BYTE    rectangle's width in character cells
  91457.  05h    BYTE    rectangle's height in character cells
  91458.  06h    BYTE    left-most column (0-based) of destination
  91459.  07h    BYTE    top-most row (0-based) of destination
  91460. SeeAlso: #2286
  91461.  
  91462. Format of ASCUR parameter block:
  91463. Offset    Size    Description    (Table 2288)
  91464.  00h    WORD    0003h (length of following data)
  91465.  02h    BYTE    cursor start line (00h = top of cell, FFh = keep current shape)
  91466.  03h    BYTE    cursor stop line
  91467.  04h    BYTE    cursor attribute
  91468.         00h normal
  91469.         01h hidden
  91470.         02h left-arrow (requires start = 2 and stop = bottom of cell)
  91471.         03h right-arrow (requires start = 2 and stop = bottom of cell)
  91472. Notes:    no cursor is shown if the start line is greater than the stop line
  91473.     the alphanumeric cursor is hidden after each mode change
  91474. SeeAlso: #2285,INT 10/AH=01h
  91475.  
  91476. Format of ASFONT parameter block:
  91477. Offset    Size    Description    (Table 2289)
  91478.  00h    WORD    0005h (length of following data)
  91479.  02h    BYTE    font number (0-3)
  91480.  03h    DWORD    -> character set definition block (see #2290)
  91481.  
  91482. Format of 8514/A character set definition block:
  91483. Offset    Size    Description    (Table 2290)
  91484.  00h    BYTE    reserved
  91485.  01h    BYTE    type of character set
  91486.         00h bitmapped, 01h&02h reserved, 03h short-stroke font
  91487.  02h    BYTE    reserved
  91488.  03h    DWORD    reserved
  91489.  07h    BYTE    cell width in pixels
  91490.  08h    BYTE    cell height in pixels
  91491.  09h    BYTE    reserved
  91492.  0Ah    WORD    cell size in bytes
  91493.  0Ch    WORD    flags
  91494.         bit 15: reserved (0)
  91495.         bit 14: color bitmap
  91496.         bit 13: proportional spacing
  91497.  0Eh    DWORD    -> index table
  91498.  12h    DWORD    -> character width table
  91499.  16h    BYTE    initial code point
  91500.  17h    BYTE    final code point
  91501.  18h    DWORD    -> character definition table
  91502.  1Ch    WORD    reserved
  91503.  1Eh    DWORD    -> second character definition table
  91504.  22h    WORD    reserved
  91505.  24h    DWORD    -> third character definition table
  91506.  
  91507. Format of AXLATE parameter block:
  91508. Offset    Size    Description    (Table 2291)
  91509.  00h    WORD    0080h (length of following data)
  91510.  02h 64 BYTEs    character foreground translation table
  91511.  42h 64 BYTEs    character background translation table
  91512.  
  91513. Format of HBAR parameter block:
  91514. Offset    Size    Description    (Table 2292)
  91515.  00h    WORD    0000h (no data following)
  91516. SeeAlso: #2304
  91517.  
  91518. Format of HBBC parameter block:
  91519. Offset    Size    Description    (Table 2293)
  91520.  00h    WORD    0010h (length of following data)
  91521.  02h    WORD    data format
  91522.         0000h across-the-plane copy (color expansion)
  91523.         0008h through-the-plane copy
  91524.  04h    WORD    data rectangle's width
  91525.  06h    WORD    data rectangle's height
  91526.  08h    BYTE    source bit plane number (across-the-plane copies only)
  91527.  09h    BYTE    reserved
  91528.  0Ah  2 WORDs    X,Y coordinates of source's upper-left corner in display memory
  91529.  0Eh  2 WORDs    X,Y coordinates of destination's upper-left corner in
  91530.           display memory
  91531. Note:    copies data from one location in video memory to another
  91532. SeeAlso: #2294
  91533.  
  91534. Format of HBBCHN parameter block:
  91535. Offset    Size    Description    (Table 2294)
  91536.  00h    WORD    0006h (length of following data)
  91537.  02h    DWORD    -> data buffer in system memory
  91538.  06h    WORD    number of bytes to transfer
  91539. Note:    this function performs the actual data transfer for a bitBLT set up
  91540.       with HBBR, HBBW, or HCBBW
  91541. SeeAlso: #2293,#2295,#2296,#2297
  91542.  
  91543. Format of HBBR parameter block:
  91544. Offset    Size    Description    (Table 2295)
  91545.  00h    WORD    000Ch or 0014h (length of following data)
  91546.  02h    WORD    data format
  91547.         0000h across-the-plane copy (color expansion)
  91548.         0008h through-the-plane copy
  91549.  04h    WORD    data rectangle's width
  91550.  06h    WORD    data rectangle's height
  91551.  08h    BYTE    source bit plane number
  91552.  09h    BYTE    reserved
  91553.  0Ah  2 WORDs    X,Y coordinates of destination's upper-left corner in
  91554.           display memory
  91555. ---optional---
  91556.  0Eh    WORD    sub-rectangle left margin in pixels
  91557.  10h    WORD    sub-rectangle top margin in pixels
  91558.  12h    WORD    sub-rectangle width
  91559.  14h    WORD    sub-rectangle height
  91560. SeeAlso: #2294,#2295,#2297
  91561.  
  91562. Format of HBBW parameter block:
  91563. Offset    Size    Description    (Table 2296)
  91564.  00h    WORD    000Ah or 0012h (length of following data)
  91565.  02h    WORD    data format
  91566.         0000h across-the-plane copy (color expansion)
  91567.         0008h through-the-plane copy
  91568.  04h    WORD    data rectangle's width
  91569.  06h    WORD    data rectangle's height
  91570.  08h  2 WORDs    X,Y coordinates of destination in display memory
  91571. ---optional---
  91572.  0Ch    WORD    sub-rectangle left margin in pixels
  91573.  0Eh    WORD    sub-rectangle top margin in pixels
  91574.  10h    WORD    sub-rectangle width
  91575.  12h    WORD    sub-rectangle height
  91576. SeeAlso: #2294,#2296,#2297
  91577.  
  91578. Format of HCBBW parameter block:
  91579. Offset    Size    Description    (Table 2297)
  91580.  00h    WORD    0006h or 000Eh (length of following data)
  91581.  02h    WORD    data format
  91582.         0000h across-the-plane copy (color expansion)
  91583.         0008h through-the-plane copy
  91584.  04h    WORD    data rectangle's width
  91585.  06h    WORD    data rectangle's height
  91586. ---optional---
  91587.  08h    WORD    sub-rectangle left margin in pixels
  91588.  0Ah    WORD    sub-rectangle top margin in pixels
  91589.  0Ch    WORD    sub-rectangle width
  91590.  0Eh    WORD    sub-rectangle height
  91591. SeeAlso: #2294,#2295,#2296
  91592.  
  91593. Format of HCCHST parameter block:
  91594. Offset    Size    Description    (Table 2298)
  91595.  00h    WORD    length of following data
  91596.  02h  N BYTEs    ASCII string to display (length given by 'length' field above)
  91597. SeeAlso: #2299
  91598.  
  91599. Format of HCHST parameter block:
  91600. Offset    Size    Description    (Table 2299)
  91601.  00h    WORD    length of following data
  91602.  02h  2 WORDs    X,Y of left-bottom corner of string on screen
  91603.  06h  N BYTEs    ASCII string to display (length given by 'length' field above)
  91604. SeeAlso: #2298
  91605.  
  91606. Format of HCLINE parameter block:
  91607. Offset    Size    Description    (Table 2300)
  91608.  00h    WORD    length of following data (multiple of 4)
  91609.  02h 2N WORDs    X,Y coordinates for each of N points in polyline
  91610. Notes:    the first line segment is drawn beginning at the current position
  91611.     on completion, the current position is set to the last point drawn
  91612. SeeAlso: #2310,#2322,#2303
  91613.  
  91614. Format of HCLOSE parameter block:
  91615. Offset    Size    Description    (Table 2301)
  91616.  00h    WORD    0001h (length of following data)
  91617.  01h    BYTE    (ret) return code
  91618. SeeAlso: #2313
  91619.  
  91620. Format of HCMRK parameter block:
  91621. Offset    Size    Description    (Table 2302)
  91622.  00h    WORD    length of following data
  91623.  02h 2N WORDs    X,Y of N points
  91624. Note:    draws N+1 marker symbols, the first one at the current position
  91625. SeeAlso: #2312
  91626.  
  91627. Format of HCRLINE parameter block:
  91628. Offset    Size    Description    (Table 2303)
  91629.  00h    WORD    length of following data (multiple of 4)
  91630.  02h 2N WORDs    X,Y coordinates relative to the position of the previous point
  91631.           (current position for first point) for each of N points in
  91632.           polyline
  91633. Notes:    the first line segment is drawn beginning at the current position
  91634.     on completion, the current position is set to the last point drawn
  91635. SeeAlso: #2310,#2300,#2322
  91636.  
  91637. Format of HEAR parameter block:
  91638. Offset    Size    Description    (Table 2304)
  91639.  00h    WORD    0001h (length of following data)
  91640.  02h    BYTE    area definition flags
  91641.         bits 7-6: End Area type
  91642.             00 complete, perform fill
  91643.             01 suspend definition
  91644.             10 complete, but don't fill
  91645. SeeAlso: #2292
  91646.  
  91647. Format of HEGS parameter block:
  91648. Offset    Size    Description    (Table 2305)
  91649.  00h    WORD    0000h (no data following)
  91650.  
  91651. Format of HESC parameter block:
  91652. Offset    Size    Description    (Table 2306)
  91653.  00h    WORD    0000h (no data following)
  91654.  
  91655. Format of HINIT parameter block:
  91656. Offset    Size    Description    (Table 2307)
  91657.  00h    WORD    0002h (length of following data)
  91658.  02h    WORD    segment of task buffer
  91659. SeeAlso: #2346
  91660.  
  91661. Format of HINT parameter block:
  91662. Offset    Size    Description    (Table 2308)
  91663.  00h    WORD    0004h (length of following data)
  91664.  02h    DWORD    interrupt/event identifier
  91665.         bit 31: vertical blanking
  91666.  
  91667. Format of HLDPAL parameter block:
  91668. Offset    Size    Description    (Table 2309)
  91669.  00h    WORD    000Ah (length of following data)
  91670.  02h    BYTE    palette ID (00h = user, 01h = default)
  91671.  03h    BYTE    reserved
  91672.  04h    WORD    number of first palette entry
  91673.  06h    WORD    number of entries
  91674.  08h    DWORD    -> palette entries
  91675. SeeAlso: #2343
  91676.  
  91677. Format of HLINE parameter block:
  91678. Offset    Size    Description    (Table 2310)
  91679.  00h    WORD    length of following data (multiple of 4)
  91680.  02h 2N WORDs    X,Y coordinates for each of N points in polyline
  91681. Note:    on completion, the current position is set to the last point drawn
  91682. SeeAlso: #2300,#2322,#2303
  91683.  
  91684. (Table 2311)
  91685. Values for 8514/A mix:
  91686.  00h    retain previous mix
  91687.  01h    source OR destination
  91688.  02h    source
  91689.  04h    source XOR destination
  91690.  05h    leave as-is
  91691.  06h    max(source,destination)
  91692.  07h    min(source,destination)
  91693.  08h    source+destination (clipped)
  91694.  09h    destination-source (clipped to zero)
  91695.  0Ah    source-destination (clipped to zero)
  91696.  0Bh    average source and destination
  91697.  10h    zero destination
  91698.  11h    source AND destination
  91699.  12h    source AND NOT destination
  91700.  13h    source
  91701.  14h    NOT source AND destination
  91702.  15h    leave as-is
  91703.  16h    source XOR destination
  91704.  17h    source OR destination
  91705.  18h    NOT source AND NOT destination
  91706.  19h    NOT (source XOR destination)
  91707.  1Ah    NOT destination
  91708.  1Bh    source OR NOT destination
  91709.  1Ch    NOT source
  91710.  1Dh    NOT source OR destination
  91711.  1Eh    NOT source OR NOT destination
  91712.  1Fh    set all bits of destination
  91713.  
  91714. Format of HMRK parameter block:
  91715. Offset    Size    Description    (Table 2312)
  91716.  00h    WORD    length of following data (multiple of 4)
  91717.  02h 2N WORDs    X,Y for N points
  91718. SeeAlso: #2302
  91719.  
  91720. Format of HOPEN parameter block:
  91721. Offset    Size    Description    (Table 2313)
  91722.  00h    WORD    0003h (length of following data)
  91723.  01h    BYTE    initialization flags
  91724.         bit 6: don't load default palette
  91725.         bit 7: clear bitplanes
  91726.  02h    BYTE    mode type (see #2314)
  91727.  03h    BYTE    (ret) return code
  91728.         bit 7: no adapter (hardware mismatch)
  91729. SeeAlso: #2301
  91730.  
  91731. (Table 2314)
  91732. Values for 8514/A display mode:
  91733.  0000h    12x20 characters, 1024x768
  91734.  0001h    8x14 characters, 640x480
  91735.  0002h    8x14 characters, 1024x768
  91736.  0003h    7x15 characters, 1024x768
  91737.  
  91738. Format of HQCOORD parameter block:
  91739. Offset    Size    Description    (Table 2315)
  91740.  00h    WORD    0004h (length of following data)
  91741.  02h    BYTE    (ret) coordinate format
  91742.         bits 7-4: bytes per coordinate
  91743.         bits 3-0: fraction bytes in coordinate
  91744.  03h    BYTE    (ret) relative coordinate format
  91745.         bits 7-4: bytes per coordinate
  91746.         bits 3-0: fraction bytes in coordinate
  91747.  04h    BYTE    (ret) number of dimensions (2-4)
  91748.  05h    BYTE    (ret) test results
  91749.         bit 7: coordinate format not supported
  91750.         bit 6: relative coordinate format not supported
  91751.         bit 5: specified dimension not supported
  91752.  
  91753. Format of HQCP parameter block:
  91754. Offset    Size    Description    (Table 2316)
  91755.  00h    WORD    0004h (length of following data)
  91756.  02h    WORD    (ret) current X position
  91757.  04h    WORD    (ret) current Y position
  91758.  
  91759. Format of HQDFPAL parameter block:
  91760. Offset    Size    Description    (Table 2317)
  91761.  00h    WORD    0040h (length of following data)
  91762.  02h 16    DWORDs    (ret) color index values
  91763. Note:    the default palette is set to match the default EGA/VGA 16-color
  91764.       palettes
  91765.  
  91766. Format of HQDPS parameter block:
  91767. Offset    Size    Description    (Table 2318)
  91768.  00h    WORD    0006h (length of following data)
  91769.  02h    WORD    (ret) size of data buffer in bytes
  91770.  04h    WORD    (ret) stack size in bytes
  91771.  06h    WORD    (ret) size of palette save buffer in bytes
  91772.  
  91773. Format of HQMODE parameter block:
  91774. Offset    Size    Description    (Table 2319)
  91775.  00h    WORD    0012h (length of following data)
  91776.  02h    BYTE    current video mode (see #2314)
  91777.  03h    WORD    driver version
  91778.         bit 6: 80286/8086 CPU
  91779.         bit 5: 8 bit planes instead of 4 planes
  91780.         bits 4-0: hardware release number
  91781.  05h    BYTE    adapter type
  91782.         03h 8514/A
  91783.         04h XGA
  91784.  06h    BYTE    reserved (display type)
  91785.  07h    BYTE    character cell width
  91786.  08h    BYTE    character cell height
  91787.  09h    BYTE    number of bit planes
  91788.  0Ah    WORD    screen width (pixels)
  91789.  0Ch    WORD    screen height (pixels)
  91790.  0Eh    WORD    horizontal resolution (pixels/inch)
  91791.  10h    WORD    vertical resolution (pixels/inch)
  91792.  12h    BYTE    flag: 00h = monochrome, FFh = color
  91793.  13h    BYTE    intensity levels
  91794. SeeAlso: #2320
  91795.  
  91796. Format of HQMODES parameter block:
  91797. Offset    Size    Description    (Table 2320)
  91798.  00h    WORD    0021h (length of following data)
  91799.  02h    BYTE    (ret) adapter type
  91800.  03h 32 BYTEs    (ret) available display modes (FFh byte marks end of data)
  91801. SeeAlso: #2319
  91802.  
  91803. Format of HRECT parameter block:
  91804. Offset    Size    Description    (Table 2321)
  91805.  00h    WORD    0008h (legth of following data)
  91806.  02h  2 WORDs    X,Y coordinates of top left corner or rectangle
  91807.  06h    WORD    rectangle's width
  91808.  08h    WORD    rectangle's height
  91809. Note:    the rectangle is filled using the current pattern, color, and mix
  91810.  
  91811. Format of HRLINE parameter block:
  91812. Offset    Size    Description    (Table 2322)
  91813.  00h    WORD    length of following data (multiple of 4)
  91814.  02h  2 WORDs    X,Y coordinates of starting point
  91815.  06h 2N WORDs    X,Y coordinates relative to the position of the previous point
  91816.           for each of N points in polyline
  91817. Note:    on completion, the current position is set to the last point drawn
  91818. SeeAlso: #2310,#2300,#2303
  91819.  
  91820. Format of HRLPC parameter block:
  91821. Offset    Size    Description    (Table 2323)
  91822.  00h    WORD    0000h (no data following)
  91823. Note:    used for continuity of lines crossing scissors boundaries
  91824. SeeAlso: #2336
  91825.  
  91826. Format of HRPAL parameter block:
  91827. Offset    Size    Description    (Table 2324)
  91828.  00h    WORD    0300h (length of following data)
  91829.  02h 768 BYTEs    buffer containing previously-saved palette table
  91830. SeeAlso: #2343
  91831.  
  91832. Format of HSBCOL parameter block:
  91833. Offset    Size    Description    (Table 2325)
  91834.  00h    WORD    0004h (length of following data)
  91835.  02h    DWORD    color index for new background color
  91836. SeeAlso: #2329
  91837.  
  91838. Format of HSBP parameter block:
  91839. Offset    Size    Description    (Table 2326)
  91840.  00h    WORD    000Ch (length of following data)
  91841.  02h    DWORD    bitmask for graphics updates
  91842.  06h    DWORD    bitmask for alphanumeric updates
  91843.  0Ah    DWORD    display bitmask
  91844.  
  91845. Format of HSCELL parameter block:
  91846. Offset    Size    Description    (Table 2327)
  91847.  00h    
  91848.  
  91849. Format of HSCMP parameter block:
  91850. Offset    Size    Description    (Table 2328)
  91851.  00h    WORD    0005h (length of following data)
  91852.  02h    DWORD    comparison color
  91853.  06h    BYTE    logical operation
  91854.         00h True
  91855.         01h pel > testcolor
  91856.         02h pel == testcolor
  91857.         03h pel < testcolor
  91858.         04h False
  91859.         05h pel >= testcolor
  91860.         06h pel <> testcolor
  91861.         07h pel <= testcolor
  91862.  
  91863. Format of HSCOL parameter block:
  91864. Offset    Size    Description    (Table 2329)
  91865.  00h    WORD    0004h (length of following data)
  91866.  02h    DWORD    color index for new foreground color
  91867. SeeAlso: #2325
  91868.  
  91869. Format of HSCOORD parameter block:
  91870. Offset    Size    Description    (Table 2330)
  91871.  00h    WORD    0003h (length of following data)
  91872.  02h    BYTE    coordinate format
  91873.         bits 7-4: bytes per coordinate
  91874.         bits 3-0: fraction bytes in coordinate
  91875.  03h    BYTE    relative coordinates format
  91876.         bits 7-4: bytes per coordinate
  91877.         bits 3-0: fraction bytes in coordinate
  91878.  04h    BYTE    number of dimensions (2-4)
  91879.  
  91880. Format of HSCP parameter block:
  91881. Offset    Size    Description    (Table 2331)
  91882.  00h    WORD    0004h (length of following data)
  91883.  02h  2 WORDs    X,Y or coordinate for new current position
  91884.  
  91885. Format of HSCS parameter block:
  91886. Offset    Size    Description    (Table 2332)
  91887.  00h    WORD    0004h (length of following data)
  91888.  02h    DWORD    -> character set definition
  91889.  
  91890. Format of HSGQ parameter block:
  91891. Offset    Size    Description    (Table 2333)
  91892.  00h    WORD    0002h (length of following data)
  91893.  02h    WORD    quality settings (see #2335)
  91894.  
  91895. Format of HSHS parameter block:
  91896. Offset    Size    Description    (Table 2334)
  91897.  00h    WORD    0008h (length of following data)
  91898.  02h    WORD    left edge of clipping rectangle (-2048 to +6143)
  91899.  04h    WORD    right edge
  91900.  06h    WORD    top edge
  91901.  08h    WORD    bottom edget
  91902.  
  91903. Bitfields for 8514/A quality settings:
  91904. Bit(s)    Description    (Table 2335)
  91905.  15    reserved
  91906.  14    high precision
  91907.  13    reserved
  91908.  12-11    pel code
  91909.     00 not drawn
  91910.     01 drawn
  91911.     02 conditional on overpainting/mixes
  91912.  10    don't close areas to be filed
  91913.  9-0    reserved
  91914.  
  91915. Format of HSLPC parameter block:
  91916. Offset    Size    Description    (Table 2336)
  91917.  00h    WORD    0000h (no data following)
  91918. Note:    used for continuity of lines crossing scissors boundaries
  91919. SeeAlso: #2323
  91920.  
  91921. Format of HSLT parameter block:
  91922. Offset    Size    Description    (Table 2337)
  91923.  00h    WORD    0006h (length of following data)
  91924.  02h    BYTE    line type (see #2338)
  91925.  03h    BYTE    reserved
  91926.  04h    DWORD    -> user line-type definition (if user type)
  91927. SeeAlso: #2339
  91928.  
  91929. (Table 2338)
  91930. Values for 8514/A line type:
  91931.  00h    user line type
  91932.  01h    dotted
  91933.  02h    short dashes
  91934.  03h    dash-dot
  91935.  04h    double dotted
  91936.  05h    dashed
  91937.  06h    dash double dot
  91938.  07h    solid
  91939.  08h    invisible
  91940. SeeAlso: #2337
  91941.  
  91942. Format of HSLW parameter block:
  91943. Offset    Size    Description    (Table 2339)
  91944.  00h    WORD    0001h (length of following data)
  91945.  02h    BYTE    width of line in pixels
  91946. SeeAlso: #2337
  91947.  
  91948. Format of HSMODE parameter block:
  91949. Offset    Size    Description    (Table 2340)
  91950.  00h    WORD    0001h (length of following data)
  91951.  02h    BYTE    new display mode number (see #2314)
  91952.  
  91953. Format of HSMRK paramter block:
  91954. Offset    Size    Description    (Table 2341)
  91955.  00h    WORD    000Eh (length of following data)
  91956.  02h    BYTE    cell width
  91957.  03h    BYTE    cell height
  91958.  04h    BYTE    flags
  91959.  05h    BYTE    reserved
  91960.  06h    WORD    length of marker symbol
  91961.  08h    DWORD    -> image definition data
  91962.  0Ch    DWORD    -> color definition data
  91963. SeeAlso: #2344
  91964.  
  91965. Format of HSMX parameter block:
  91966. Offset    Size    Description    (Table 2342)
  91967.  00h    WORD    0002h (length of following data)
  91968.  02h    BYTE    foreground mix (see #2311)
  91969.  03h    BYTE    background mix (see #2311)
  91970.  
  91971. Format of HSPAL parameter block:
  91972. Offset    Size    Description    (Table 2343)
  91973.  00h    WORD    0300h (length of following data)
  91974.  02h 768 BYTEs    buffer for palette table
  91975. SeeAlso: #2309,#2324
  91976.  
  91977. Format of HSPATT parameter block:
  91978. Offset    Size    Description    (Table 2344)
  91979.  00h    WORD    000Eh (length of following data)
  91980.  02h    BYTE    cell width
  91981.  03h    BYTE    cell height
  91982.  04h    BYTE    flags
  91983.  05h    BYTE    reserved
  91984.  06h    WORD    length of marker symbol
  91985.  08h    DWORD    -> image definition data
  91986.  0Ch    DWORD    -> color definition data
  91987. SeeAlso: #2341,#2345
  91988.  
  91989. Format of HSPATTO parameter block:
  91990. Offset    Size    Description    (Table 2345)
  91991.  00h    WORD    0004h (length of following data)
  91992.  02h  2 WORDs    X,Y of pattern reference point (origin)
  91993. SeeAlso: #2344
  91994.  
  91995. Format of HSYNC parameter block:
  91996. Offset    Size    Description    (Table 2346)
  91997.  00h    WORD    0002h (length of following data)
  91998.  02h    WORD    segment of task state buffer
  91999. SeeAlso: #2307
  92000.  
  92001. Format of HXLATE parameter block:
  92002. Offset    Size    Description    (Table 2347)
  92003.  00h    WORD    0020h (length of following data)
  92004.  02h 32 BYTEs    color index table
  92005. --------V-7F0105-----------------------------
  92006. INT 7F - IBM XGA Adapter Interface (XGAAIDOS.SYS)
  92007.     AX = 0105h
  92008. Return: CF set on error
  92009.     CF clear if successful
  92010.         CX:DX -> array of FAR pointers to entry points (see #2280)
  92011. Note:    this API is a superset of the 8514/A Adapter Interface
  92012.       (see AX=0105h"HDILOAD")
  92013. ----------7F0106-----------------------------
  92014. INT 7F - HDILOAD Mach32 Adapter Interface - UNINSTALL
  92015.     AX = 0106h
  92016. Return: AX = 0105h if successfully unloaded
  92017. SeeAlso: AX=0105h
  92018. --------N-7F02-------------------------------
  92019. INT 7F - Alloy NTNX, MW386 - RELEASE SEMAPHORE
  92020.     AH = 02h
  92021.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  92022. Return: AL = status (see #2274)
  92023.     AH = semaphore owner if status=02h
  92024. SeeAlso: AH=00h,AH=01h,AH=42h
  92025. --------N-7F02-------------------------------
  92026. INT 7F - G8BPQ v4.00+ - HOST MODE - SEND FRAME
  92027.     AH = 02h
  92028.     AL = stream number (01h-40h)
  92029.     CX = length of frame
  92030.     ES:SI -> frame to be sent
  92031. SeeAlso: AH=03h"G8BPQ",AH=07h"G8BPQ",AH=0Ah"G8BPQ"
  92032. --------f-7F0200-----------------------------
  92033. INT 7F - Btrieve Multi-User - GIVE UP TIME???
  92034.     AX = 0200h
  92035. SeeAlso: INT 2F/AX=AB01h,INT 2F/AX=AB02h,INT 7B"Btrieve"
  92036. --------N-7F03-------------------------------
  92037. INT 7F - Alloy ANSK, NTNX, MW386 - GET USER NUMBER
  92038.     AH = 03h
  92039. Return: AL = user number
  92040.     AH = machine number (MW386)
  92041. Note:    this function call is the recommended method for a CPU-bound process to
  92042.       prevent its priority from being lowered
  92043. SeeAlso: AH=04h,AH=05h,AH=A1h
  92044. --------N-7F03-------------------------------
  92045. INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE FRAME
  92046.     AH = 03h
  92047.     AL = stream number (01h-40h)
  92048.     ES:DI -> buffer for frame (must be large enough for a full frame; 350
  92049.           bytes is usually sufficient)
  92050. Return:    BX = number of pending frames (0000h if returned frame was last avail)
  92051.     CX = length of received frame
  92052. SeeAlso: AH=02h"G8BPQ",AH=07h"G8BPQ",AH=0Bh"G8BPQ"
  92053. --------N-7F04-------------------------------
  92054. INT 7F - Alloy NTNX, MW386 - GET NUMBER OF USERS
  92055.     AH = 04h
  92056. Return: AL = total number of users on currrent machine (MW386)
  92057.     AL = number of slaves on system (NTNX)
  92058. SeeAlso: AH=03h
  92059. --------N-7F04-------------------------------
  92060. INT 7F - G8BPQ v4.00+ - HOST MODE - GET STREAM STATUS
  92061.     AH = 04h
  92062.     AL = stream number (01h-40h)
  92063. Return: CX = state (0000h disconnected, 0001h connected)
  92064.     DX = delta state (0000h no change, 0001h changed since last check)
  92065. SeeAlso: AH=02h"G8BPQ",AH=05h"G8BPQ"
  92066. --------N-7F05-------------------------------
  92067. INT 7F - Alloy NTNX (Host) - LOCK/UNLOCK SYSTEM, SPOOLER CONTROL
  92068.     AH = 05h
  92069.     AL = function
  92070.         00h lock system (disable slave services)
  92071.         01h unlock system
  92072.         02h enable spooler
  92073.         03h disable spooler
  92074.         04h enable slave timer update
  92075.         05h disable slave timer update
  92076.         06h enable form feeds
  92077.         07h disable form feeds
  92078. SeeAlso: INT 17/AH=A4h
  92079. --------N-7F05-------------------------------
  92080. INT 7F - Alloy NTNX (Slave), MW386 - GET USER PARAMETERS
  92081.     AH = 05h
  92082.     DX:DI -> buffer for user information record (see #2348)
  92083. Notes:    MW386 provides this function for backward compatibility only, and sets
  92084.       many of the fields to zero because they are meaningless under MW386
  92085.     this function has no effect when called by the host (user 0)
  92086. SeeAlso: AH=03h
  92087.  
  92088. Format of Alloy user information record:
  92089. Offset    Size    Description    (Table 2348)
  92090.  00h    WORD    segment of video RAM
  92091.  02h    WORD    segment of secondary copy of video RAM
  92092.  04h    WORD    offset of screen update flag (see INT 10/AH=8Bh)
  92093.         flag nonzero if update needed
  92094.  06h    WORD    video NMI enable port
  92095.         (not used by MW386, set to 0000h)
  92096.  08h    WORD    video NMI disable port
  92097.         (not used by MW386, set to 0000h)
  92098.  0Ah    BYTE    processor type
  92099.         00h 8088
  92100.         01h V20
  92101.         02h 8086
  92102.         03h V30
  92103.         06h 80386
  92104.  0Bh    WORD    multitasking flag (00h = single tasking, 01h = multitasking)
  92105.         (not used by MW386, set to 0000h)
  92106.  0Dh    WORD    offset of terminal driver
  92107.         (not used by MW386, set to 0000h)
  92108.  0Fh    BYTE    port for console I/O
  92109.         (not used by MW386, set to 0000h)
  92110.  10h    WORD    offset of processor communication busy flag
  92111.         bit 7 set when slave communicating with host
  92112.  12h    WORD    pointer to FAR NX system call
  92113.         (not used by MW386, set to 0000h)
  92114.  14h    WORD    offset of 16-byte user configuration record (see AH=38h)
  92115.  16h    WORD    offset of command/status word
  92116.  18h    WORD    offset of screen valid flag (see INT 10/AH=93h)
  92117.         nonzero if screen must be repainted
  92118.  1Ah    WORD    offset of screen repaint flag
  92119.  1Ch    WORD    pointer to NEAR NX system call
  92120.         (not used by MW386, set to 0000h)
  92121.  1Eh    WORD    offset for intercept flags
  92122.         (not used by MW386, set to 0000h)
  92123.         intercept flag = FFh if MS-DOS intercepts should be disabled
  92124.  20h    WORD    offset of terminal lock flag (see INT 10/AH=92h)
  92125.         lock flag = FFh if backgrnd screen updates should be suspended
  92126.  22h 26 BYTEs    reserved
  92127. --------N-7F05-------------------------------
  92128. INT 7F - G8BPQ v4.00+ - HOST MODE - ACKNOWLEDGE STREAM STATUS CHANGE
  92129.     AH = 05h
  92130.     AL = stream number (01h-40h)
  92131. Note:    this function must be called in order to receive a report of another
  92132.       status change
  92133. SeeAlso: AH=04h"G8BPQ"
  92134. --------N-7F06-------------------------------
  92135. INT 7F - Alloy NTNX (Host) - GET SHARED DRIVE INFO
  92136.     AH = 06h
  92137.     AL = drive number (1=A:, 2=B:, etc)
  92138.     ES:DI -> drive info record (see #2349)
  92139. Return: AX = status
  92140.         0000h successful
  92141.         ES:DI buffer filled
  92142.         0001h not shared drive
  92143.  
  92144. Format of Alloy drive info record:
  92145. Offset    Size    Description    (Table 2349)
  92146.  00h    WORD    segment of drive IO-REQUEST structure (MS-DOS DPB)
  92147.  02h    WORD    segment of allocation map (owner table)
  92148.         one byte per FAT entry, containing user ID owning that entry
  92149.  04h    WORD    segment of master FAT for drive (copy of FAT on disk)
  92150.  06h    WORD    pointer to configuration file
  92151.  08h    WORD    total number of clusters
  92152.  0Ah    WORD    bytes per sector
  92153.  0Ch    WORD    sectors per cluster
  92154.  0Eh    BYTE    FAT type (0Ch = 12-bit, 10h = 16-bit)
  92155. --------N-7F06-------------------------------
  92156. INT 7F - Alloy NTNX (Slave) - ALLOCATE FREE CLUSTER ON SHARED DRIVE
  92157.     AH = 06h
  92158.     DL = drive number (1=A:,2=B:,etc)
  92159.     CX = number of clusters to allocate
  92160. Return: AH = status
  92161.         00h successful
  92162.         CX = number of clusters still free
  92163.         10h invalid shared drive request
  92164.         CL = first and second shared drives
  92165.         11h invalid cluster count (must be 01h-FFh)
  92166. --------N-7F06-------------------------------
  92167. INT 7F - G8BPQ v4.00+ - HOST MODE - SESSION CONTROL
  92168.     AH = 06h
  92169.     AL = stream number (01h-40h)
  92170.     CX = subfunction
  92171.         0000h connect to node
  92172.         DL bit 0: use BBS callsign instead of Node Call
  92173.         0001h connect to node
  92174.         use BBS Call if APPLMASK=1
  92175.         0002h disconnect
  92176.         0003h return user to node
  92177. SeeAlso: AH=01h"G8BPQ",AH=04h"G8BPQ"
  92178. --------N-7F07-------------------------------
  92179. INT 7F - Alloy NTNX, MW386 - GET LIST OF SHARED DRIVES
  92180.     AH = 07h
  92181. Return: ES:DI -> shared drive list (see #2350)
  92182. Note:    MW386 considers all fixed disks to be shared drives; only C and D will
  92183.       be returned as shared
  92184.  
  92185. Format of Alloy shared drive list:
  92186. Offset    Size    Description    (Table 2350)
  92187.  00h    BYTE    string length
  92188.  01h    BYTE    number of shared drives
  92189.  02h  N BYTEs    one byte per shared drive
  92190. --------N-7F07-------------------------------
  92191. INT 7F - G8BPQ v4.00+ - HOST MODE - GET BUFFER COUNTS FOR STREAM
  92192.     AH = 07h
  92193.     AL = stream number (01h-40h)
  92194. Return: BX = number of pending receive frames
  92195.     CX = number of unacknowledged sent frames
  92196.     DX = number of buffers available
  92197. SeeAlso: AH=02h"G8BPQ",AH=03h"G8BPQ"
  92198. --------N-7F08-------------------------------
  92199. INT 7F - Alloy NTNX (Host) - GET INTERRUPT VECTORS
  92200.     AH = 08h
  92201.     CL = function
  92202.         00h get original interrupt vector
  92203.         01h get Network Executive interrrupt
  92204.     AL = interrupt number
  92205.     DX:SI -> DWORD to hold interrupt vector
  92206. Return: AL = status
  92207.         00h successful
  92208.         01h interrupt vector not used by network executive
  92209.         02h invalid subfunction
  92210. Note:    the network executive uses interrupts 02h,08h,09h,0Fh,10h,13h,16h-19h,
  92211.       1Ch,20h,28h,2Ah,2Fh,5Bh,67h,7Fh,ECh, and F0h-FFh
  92212. SeeAlso: AH=09h/CL=03h,INT 21/AH=35h
  92213. --------N-7F08--CL02-------------------------
  92214. INT 7F - Alloy NTNX - SET MESSAGE DISPLAY TIMEOUT
  92215.     AH = 08h
  92216.     CL = 02h
  92217.     DX = timeout in seconds
  92218. Return: AL = status
  92219.         00h successful
  92220.         02h invalid subfunction
  92221. --------N-7F08-------------------------------
  92222. INT 7F - G8BPQ v4.00+ - HOST MODE - PORT CONTROL/INFORMATION
  92223.     AH = 08h
  92224.     AL = stream number (01h-40h)
  92225. Return: ES:DI -> 10-byte buffer containing blank-padded callsign
  92226.     ---v4.05+ ---
  92227.     AL = radio port to which channel is connected (level 2)
  92228.     AH = session type (see #2351)
  92229.     BX = L2 paclen for session
  92230.     CX = maximum frame size
  92231.     DX = L4 window size or 0000h if not L4 circuit
  92232. Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
  92233.       John Wiseman which allows a PC to act as a node in an AX.25 network
  92234. SeeAlso: AH=01h"G8BPQ",AH=02h"G8BPQ",AH=03h"G8BPQ",AH=0Ah"G8BPQ"
  92235.  
  92236. Bitfields for G8BPQ session type:
  92237. Bit(s)    Description    (Table 2351)
  92238.  0    L2LINK
  92239.  1    SESSION
  92240.  2    UPLINK
  92241.  3    DOWNLIND
  92242.  5    BPQHOST
  92243. --------T-7F09-------------------------------
  92244. INT 7F - MultiLink Advanced - SET TASK PRIORITY
  92245.     AH = 09h
  92246.     AL = priority (0-7)
  92247. Note:    the installation check consists of ensuring that the interrupt vector
  92248.       is not pointing at segment 0000h, then checking whether the byte
  92249.       at offset 0000h in the interrupt handler's segment is E9h
  92250. Index:    installation check;MultiLink Advanced
  92251. --------N-7F09-------------------------------
  92252. INT 7F - G8BPQ - proposed addition - GET NODE/APPLICATION CALLSIGN AND ALIAS
  92253.     AH = 09h
  92254.     AL = application
  92255.         00h node
  92256.         01h BBS
  92257.         02h HOST
  92258.         03h SYSOP
  92259.     BL = what to get (00h callsign, 01h application name)
  92260.     ES:SI -> buffer for callsign/name string
  92261. Return: CX = length of returned string
  92262. SeeAlso: AH=00h"G8BPQ",AH=01h"G8BPQ",AH=0Ch"G8BPQ"
  92263. --------N-7F09-------------------------------
  92264. INT 7F - Alloy NTNX - ENABLE/DISABLE MUD FILE CHECKING
  92265.     AH = 09h
  92266.     CL = function
  92267.         00h enable checking of RTNX.MUD file
  92268.         01h disable RTNX.MUD checking
  92269. --------N-7F09--CL02-------------------------
  92270. INT 7F - Alloy NTNX - SWITCH HOST TO DEDICATED MODE
  92271.     AH = 09h
  92272.     CL = 02h
  92273. Note:    in dedicated mode, the host will only poll for I/O requests from the
  92274.       slave processors, and not provide workstation services
  92275. --------N-7F09--CL03-------------------------
  92276. INT 7F - Alloy NTNX,MW386 - GET ALTERNATE INTERRUPT
  92277.     AH = 09h
  92278.     CL = 03h
  92279.     AL = default interrupt number (67h,7Fh,etc)
  92280. Return: CL = actual interrupt which handles specified interrupt's calls
  92281. SeeAlso: AH=08h
  92282. --------N-7F0A--CL00-------------------------
  92283. INT 7F - Alloy NTNX - GET SYSTEM FLAGS
  92284.     AH = 0Ah
  92285.     CL = 00h
  92286.     ES:DI -> buffer for system flags (see #2352)
  92287. Return: ES:DI buffer filled
  92288. Notes:    on a slave, only the NX_Busy flag is returned
  92289.     all three flags are at fixed positions, so this function only needs to
  92290.       be called once
  92291.     an interrupt handler should only perform DOS or device accesses when
  92292.       all three flags are 00h
  92293.  
  92294. Format of Alloy system flags:
  92295. Offset    Size    Description    (Table 2352)
  92296.  00h    DWORD    pointer to NX_Busy flag (nonzero when communicating with users)
  92297.  04h    DWORD    pointer to device driver busy flag
  92298.  08h    DWORD    pointer to InTimer flag
  92299. --------N-7F0A-------------------------------
  92300. INT 7F - G8BPQ v4.00+ - HOST MODE - TRANSMIT RAW (KISS) FRAME
  92301.     AH = 0Ah
  92302.     AL = radio port
  92303.     ES:SI -> buffer containing data to be sent
  92304.     CX = number of bytes to send
  92305. SeeAlso: AH=02h"G8BPQ",AH=08h"G8BPQ",AH=0Bh"G8BPQ"
  92306. --------N-7F0B--CL02-------------------------
  92307. INT 7F - Alloy NTNX (Host) - SET/RESET GRAPHICS DOS ON SLAVE
  92308.     AH = 0Bh
  92309.     CL = 02h
  92310.     AL = slave ID number
  92311.     CH = DOS to activate
  92312.         00h graphics DOS
  92313.         01h character DOS
  92314. Return: AL = status
  92315.         00h successful
  92316.         01h nothing done, proper DOS type already loaded
  92317. --------N-7F0B-------------------------------
  92318. INT 7F - G8BPQ v4.00+ - HOST MODE - RECEIVE TRACE (RAW DATA) FRAME
  92319.     AH = 0Bh
  92320.     ES:DI -> buffer for received data (see #2353)
  92321. Return: CX = number of bytes received
  92322. Note:    the specified buffer must be large enough to receive a full frame
  92323. SeeAlso: AH=03h"G8BPQ",AH=08h"G8BPQ",AH=0Ah"G8BPQ"
  92324.  
  92325. Format of G8BPQ received data:
  92326. Offset    Size    Description    (Table 2353)
  92327.  00h    WORD    internal control information
  92328.  02h    BYTE    port number (bit 7 set if transmitted frame)
  92329.  03h    WORD    frame length including this header
  92330.  05h    var    user data
  92331. --------N-7F0C-------------------------------
  92332. INT 7F - G8BPQ v4.00+ - HOST MODE - UPDATE SWITCH INFORMATION
  92333.     AH = 0Ch
  92334.     DX = function
  92335.         0001h update beacon text
  92336.         CX = length of data
  92337.         ES:SI -> data to be sent in beacons
  92338. SeeAlso: AH=09h"G8BPQ"
  92339. --------N-7F0F-------------------------------
  92340. INT 7F - G8BPQ v4.00+ - HOST MODE - GET TIME MARKER
  92341.     AH = 0Fh
  92342. Return: AX = time marker (clock ticks modulo 64K)
  92343. Program: the G8BPQ AX25 Networking Package is amateur packet radio software by
  92344.       John Wiseman which allows a PC to act as a node in an AX.25 network
  92345. SeeAlso: AH=01h"G8BPQ",INT 1A/AH=00h
  92346. --------N-7F10--CL00-------------------------
  92347. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - OPEN CHANNEL
  92348.     AH = 10h
  92349.     CL = 00h
  92350.     AL = channel number
  92351.     DX:DI -> channel buffer
  92352. Return: AL = status (00h-03h,0Dh) (see #2354)
  92353. Note:    may not be invoked from within a hardware interrupt handler
  92354. SeeAlso: AH=10h/CL=01h,AH=10h/CL=04h,AH=14h/CL=02h
  92355.  
  92356. (Table 2354)
  92357. Values for Alloy function status:
  92358.  00h    successful
  92359.  01h    busy
  92360.  02h    channel range error (not 00h-3Fh)
  92361.  03h    invalid subfunction
  92362.  0Ah    channel not open
  92363.  0Ch    channel already locked
  92364.  0Dh    unable to open
  92365. --------N-7F10--CL01-------------------------
  92366. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE CHANNEL
  92367.     AH = 10h
  92368.     CL = 01h
  92369.     AL = channel number
  92370. Return: AL = status (00h-03h,0Ah) (see #2354)
  92371. Note:    may not be invoked from within a hardware interrupt handler
  92372. SeeAlso: AH=10h/CL=00h,AH=10h/CL=05h
  92373. --------N-7F10--CL02-------------------------
  92374. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK CHANNEL
  92375.     AH = 10h
  92376.     CL = 02h
  92377.     AL = channel number
  92378. Return: AL = status (00h-03h,0Ah,0Ch) (see #2354)
  92379. Note:    may not be invoked from within a hardware interrupt handler
  92380. SeeAlso: AH=10h/CL=03h,AH=10h/CL=06h,AH=10h/CL=08h
  92381. --------N-7F10--CL03-------------------------
  92382. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK CHANNEL
  92383.     AH = 10h
  92384.     CL = 03h
  92385.     AL = channel number
  92386. Return: AL = status (00h-03h,0Ah) (see #2354)
  92387. Notes:    should only be used on channels locked with AH=10h/CL=02h, not on those
  92388.       locked by receipt of a datagram
  92389.     may not be invoked from within a hardware interrupt handler
  92390. SeeAlso: AH=10h/CL=02h,AH=10h/CL=04h,AH=10h/CL=09h
  92391. --------N-7F10--CL04-------------------------
  92392. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - RELEASE BUFFER
  92393.     AH = 10h
  92394.     CL = 04h
  92395.     AL = channel number
  92396. Return: AL = status (00h-03h) (see #2354)
  92397. Notes:    unlocks buffer after received datagram has been processed
  92398.     may not be invoked from within a hardware interrupt handler
  92399. SeeAlso: AH=10h/CL=00h
  92400. --------N-7F10--CL05-------------------------
  92401. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - CLOSE ALL CHANNELS
  92402.     AH = 10h
  92403.     CL = 05h
  92404. Return: AL = status (00h-03h) (see #2354)
  92405. Notes:    clears all pending datagrams and clears buffer pointers before closing
  92406.       the channels
  92407.     may not be invoked from within a hardware interrupt handler
  92408. SeeAlso: AH=10h/CL=01h
  92409. --------N-7F10--CL06-------------------------
  92410. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK ALL OPEN CHANNELS
  92411.     AH = 10h
  92412.     CL = 06h
  92413. Return: AL = status (00h-03h) (see #2354)
  92414. Note:    may not be invoked from within a hardware interrupt handler
  92415. SeeAlso: AH=10h/CL=02h,AH=10h/CL=08h
  92416. --------N-7F10--CL07-------------------------
  92417. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK ALL LOCKED IDLE CHANNELS
  92418.     AH = 10h
  92419.     CL = 07h
  92420. Return: AL = status (00h-03h) (see #2354)
  92421. Notes:    unlocks all locked channels which have no pending datagrams
  92422.     may not be invoked from within a hardware interrupt handler
  92423. SeeAlso: AH=10h/CL=03h,AH=10h/CL=09h
  92424. --------N-7F10--CL08-------------------------
  92425. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - LOCK MULTIPLE CHANNELS
  92426.     AH = 10h
  92427.     CL = 08h
  92428.     DX = maximum channel number to lock
  92429. Return: AL = status (00h-03h) (see #2354)
  92430. Notes:    locks channels numbered 00h through the value in DX
  92431.     may not be invoked from within a hardware interrupt handler
  92432. SeeAlso: AH=10h/CL=02h,AH=10h/CL=06h,AH=10h/CL=09h
  92433. --------N-7F10--CL09-------------------------
  92434. INT 7F - Alloy NTNX, MW386 - CHANNEL CONTROL - UNLOCK MULTIPLE CHANNELS
  92435.     AH = 10h
  92436.     CL = 09h
  92437.     DX = maximum channel number to unlock
  92438. Return: AL = status (00h-03h) (see #2354)
  92439. Notes:    unlocks channels numbered 00h through the value in DX
  92440.     may not be invoked from within a hardware interrupt handler
  92441. SeeAlso: AH=10h/CL=03h,AH=10h/CL=07h,AH=10h/CL=08h
  92442. --------N-7F11-------------------------------
  92443. INT 7F - Alloy NTNX, MW386 - SEND DATAGRAM
  92444.     AH = 11h
  92445.     DX:SI -> request block (see #2356)
  92446. Return: AL = status (see #2355)
  92447. Note:    if wildcard channel FFh used, actual channel number will be filled in
  92448. SeeAlso: AH=12h
  92449.  
  92450. (Table 2355)
  92451. Values for Alloy function status:
  92452.  00h    successful
  92453.  01h    busy
  92454.  02h    channel range error (not 00h-3Fh)
  92455.  03h    invalid subfunction
  92456.  0Ah    packet too large (or <2 bytes if NTNX)
  92457.  0Bh    can't send packet to itself
  92458.  0Ch    invalid number of destinations
  92459.  0Dh    destination channel number out of range
  92460.  0Eh    destination user is busy
  92461.  0Fh    destination user has locked channel
  92462.  10h    channel not open
  92463.  11h    no datagram server on destination (NTNX)
  92464.  
  92465. Format of Alloy request block:
  92466. Offset    Size    Description    (Table 2356)
  92467.  00h    DWORD    pointer to packet to send
  92468.  04h    WORD    packet size in bytes (1-4096)
  92469.  06h    BYTE    number of destinations for packet (max 1Fh)
  92470.  07h 31 BYTEs    destination user IDs (FFh = broadcast to all except sender)
  92471.  26h 31 BYTEs    destination channels (FFh = first available channel)
  92472.  45h 31 BYTEs    return destination statuses
  92473. --------N-7F12-------------------------------
  92474. INT 7F - Alloy NTNX, MW386 - ACKNOWLEDGE DATAGRAM
  92475.     AH = 12h
  92476.     AL = channel number being acknowledged
  92477.     DI:DX = 32-bit status to return to sender
  92478. Return: AL = status (see #2357)
  92479. Note:    also unlocks the channel, allowing the next datagram to be received
  92480. SeeAlso: AH=11h,AH=15h/CL=04h
  92481.  
  92482. (Table 2357)
  92483. Values for Alloy function status:
  92484.  00h    successful
  92485.  01h    busy
  92486.  02h    channel range error (not 00h-3Fh)
  92487.  03h    invalid subfunction
  92488.  0Ah    channel not open
  92489.  0Bh    no message in channel
  92490.  0Ch    destination slave busy--retry (NTNX)
  92491.  0Dh    destination user not active
  92492.  0Eh    destination slave not active (NTNX)
  92493.  0Fh    destination disabled datagram service
  92494. --------V-7F1234-----------------------------
  92495. INT 7F - TIGA Communications Driver v2.05 - UNINSTALL
  92496.     AX = 1234h
  92497. SeeAlso: AX=4321h
  92498. --------N-7F13--CL00-------------------------
  92499. INT 7F - Alloy NTNX, MW386 - RESET USER DATAGRAMS
  92500.     AH = 13h
  92501.     CL = 00h
  92502. Note:    clears all pending datagrams and removes all channels opened in NTNX
  92503.       compatibility mode
  92504. --------N-7F14--CL00-------------------------
  92505. INT 7F - Alloy NTNX, MW386 -  SET RECEIVE ISR
  92506.     AH = 14h
  92507.     CL = 00h
  92508.     DX:DI -> application FAR receive service routine (see #2358)
  92509. Return: AL = status (00h-03h) (see #2357)
  92510. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  92511.  
  92512. (Table 2358)
  92513. Values Alloy receive service routine is called with:
  92514.     DH = sender ID
  92515.     DL = channel with datagram
  92516.     interrupts disabled
  92517. Return: AL = response code
  92518.         00h leave buffer locked, set channel status, and repeat call later
  92519.         01h release channel buffer
  92520.         02h change buffer pointer to DX:DI
  92521.     AH,CX,DX,DI,SI may be destroyed
  92522. --------N-7F14--CL01-------------------------
  92523. INT 7F - Alloy NTNX, MW386 - SET ACKNOWLEDGE ISR
  92524.     AH = 14h
  92525.     CL = 01h
  92526.     DX:DI -> application FAR acknowledge service routine (see #2359)
  92527. Return: AL = status (00h-03h) (see #2357)
  92528. Note:    the service routine will be called as soon as an acknowledgment arrives
  92529. SeeAlso: AH=12h,AH=14h/CL=00h,AH=14h/CL=04h,AH=15h/CL=04h
  92530.  
  92531. (Table 2359)
  92532. Values Alloy acknowledge service routine is called with:
  92533.     DS:SI -> acknowledge structure (see #2363)
  92534. Return: AL = response code
  92535.         00h application busy, network executive should call again later
  92536.         01h acknowledge accepted
  92537.     AH,DX,SI may be destroyed
  92538. --------N-7F14--CL02-------------------------
  92539. INT 7F - Alloy NTNX, MW386 - SET CHANNEL BUFFER POINTER
  92540.     AH = 14h
  92541.     CL = 02h
  92542.     AL = channel number
  92543.     DX:DI -> receive buffer
  92544. Return: AL = status (00h-03h) (see #2357)
  92545. Note:    may be called from within a receive ISR or when a datagram is pending
  92546. SeeAlso: AH=10h/CL=00h,AH=14h/CL=00h
  92547. --------N-7F14--CL03-------------------------
  92548. INT 7F - Alloy NTNX, MW386 - GET RECEIVE ISR
  92549.     AH = 14h
  92550.     CL = 03h
  92551. Return: DX:DI -> current receive ISR
  92552. SeeAlso: AH=14h/CL=00h,AH=14h/CL=04h
  92553. --------N-7F14--CL04-------------------------
  92554. INT 7F - Alloy NTNX, MW386 - GET ACKNOWLEDGE ISR
  92555.     AH = 14h
  92556.     CL = 04h
  92557. Return: DX:DI -> current acknowledge ISR
  92558. SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
  92559. --------N-7F14--CL05-------------------------
  92560. INT 7F - Alloy NTNX (Host), MW386 - GET BUSY POINTER
  92561.     AH = 14h
  92562.     CL = 05h
  92563.     DX:DI -> buffer for busy structure (see #2360)
  92564. Return: DX:DI buffer filled
  92565.  
  92566. Format of Alloy busy structure:
  92567. Offset    Size    Description    (Table 2360)
  92568.  00h    DWORD    pointer to busy flag byte
  92569.  04h    WORD    fixed port address (FF00h)
  92570. --------N-7F15--CL00-------------------------
  92571. INT 7F - Alloy NTNX, MW386 - GET CHANNEL STATUS
  92572.     AH = 15h
  92573.     CL = 00h
  92574.     AL = channel number
  92575.     DX:DI -> status structure (see #2361)
  92576. Return: AL = status (00h-03h) (see #2357)
  92577. SeeAlso: AH=15h/CL=01h
  92578.  
  92579. Format of Alloy channel status structure:
  92580. Offset    Size    Description    (Table 2361)
  92581.  00h    BYTE    channel status
  92582.         bit 0: channel open
  92583.         bit 1: channel buffer contains received data
  92584.         bit 7: channel locked
  92585.  01h    BYTE    sender ID
  92586. --------N-7F15--CL01-------------------------
  92587. INT 7F - Alloy NTNX, MW386 - GET NEXT FULL CHANNEL
  92588.     AH = 15h
  92589.     CL = 01h
  92590.     DX:DI -> full-channel structure (see #2362)
  92591. Return: AL = status
  92592.         00h successful
  92593.         01h busy
  92594.         0Ah no datagrams available
  92595. Note:    MW386 v1.0 returns the lowest channel with a datagram; newer versions
  92596.       and NTNX return the oldest datagram
  92597. SeeAlso: AH=15h/CL=00h
  92598.  
  92599. Format of Alloy full-channel structure:
  92600. Offset    Size    Description    (Table 2362)
  92601.  00h    BYTE    number of channel with oldest datagram
  92602.  01h    BYTE    sender ID
  92603. --------N-7F15--CL02-------------------------
  92604. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM NUMBER OF CHANNELS
  92605.     AH = 15h
  92606.     CL = 02h
  92607. Return: AH = number of channels available (40h for MW386)
  92608. Note:    the application may always assume at least 32 channels available
  92609. SeeAlso: AH=15h/CL=03h
  92610. --------N-7F15--CL03-------------------------
  92611. INT 7F - Alloy NTNX, MW386 - GET MAXIMUM PACKET SIZE
  92612.     AH = 15h
  92613.     CL = 03h
  92614.     DX:DI -> WORD for return value
  92615. Return: buffer WORD filled with maximum packet size (4096 for MW386)
  92616. SeeAlso: AH=15h/CL=02h
  92617. --------N-7F15--CL04-------------------------
  92618. INT 7F - Alloy NTNX, MW386 - GET AND CLEAR ACKNOWLEDGE STATUS
  92619.     AH = 15h
  92620.     CL = 04h
  92621.     DX:DI -> status structure (see #2363)
  92622. Return: AL = status
  92623.         00h successful
  92624.         DX:DI structure filled
  92625.         01h busy
  92626.         0Ah no acknowledgement has arrived
  92627. SeeAlso: AH=12h,AH=14h/CL=01h
  92628.  
  92629. Format of Alloy status structure:
  92630. Offset    Size    Description    (Table 2363)
  92631.  00h    BYTE    sender ID
  92632.  01h    BYTE    channel number
  92633.  02h  4 BYTEs    receiver status (see #2357)
  92634. --------N-7F16-------------------------------
  92635. INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
  92636.     AH = 16h
  92637.     DX:SI -> transfer structure (see #2364)
  92638. Return: AL = status
  92639.         00h successful
  92640.         0Ah source or destination out of range
  92641.         0Bh transfer kernal busy--try again
  92642. Notes:    this call transfers memory contents directly between users; both source
  92643.       and destination user IDs may differ from the caller's ID
  92644.     no segment wrap is allowed
  92645.  
  92646. Format of Alloy transfer structure:
  92647. Offset    Size    Description    (Table 2364)
  92648.  00h    WORD    bytes to transfer
  92649.  02h    BYTE    source ID
  92650.         FEh = caller
  92651.  03h    DWORD    source address
  92652.  07h    BYTE    destination ID
  92653.         FFh = all slaves except caller
  92654.         FEh = caller
  92655.  08h    DWORD    destination address
  92656. --------N-7F21-------------------------------
  92657. INT 7F - Alloy NTNX, MW386 - SEND MESSAGE OR COMMAND TO USER(S)
  92658.     AH = 21h
  92659.     AL = sender's user ID
  92660.     DS:DX -> control packet (see #2365)
  92661. Note:    messages or commands are ignored if disabled by the destination user
  92662. SeeAlso: AH=22h
  92663.  
  92664. Format of Alloy control packet:
  92665. Offset    Size    Description    (Table 2365)
  92666.  00h    BYTE    packet type
  92667.         00h message
  92668.         01h NTNX command
  92669.         02h MW386 command
  92670.  01h    BYTE    destination user ID or 'A' for all users
  92671.  02h 62 BYTEs    ASCIZ message (packet type 00h)
  92672.         BIOS keycodes terminated by NUL byte (type 01h) or word (02h)
  92673. Note:    a maximum of 16 keycodes will be processed for NTNX and MW386 commands
  92674. --------N-7F22-------------------------------
  92675. INT 7F - Alloy NTNX - GET MESSAGE
  92676.     AH = 22h
  92677. Return: pending messages displayed on user's screen
  92678. SeeAlso: AH=21h
  92679. --------N-7F24-------------------------------
  92680. INT 7F - Alloy NTNX, MW386 - ATTACH OR RELEASE DRIVE FOR LOW-LEVEL WRITE ACCESS
  92681.     AH = 24h
  92682.     CL = function
  92683.         00h attach
  92684.         01h release
  92685.     CH = drive (0=A:,1=B:,etc)
  92686. Return: AX = status (see #2366)
  92687. Note:    only drives on the current machine may be attached
  92688.  
  92689. (Table 2366)
  92690. Values for Alloy function status:
  92691.  00h    successful
  92692.  01h    invalid request
  92693.  02h    already attached
  92694.  03h    not attached
  92695.  04h    lock table full
  92696. --------N-7F24-------------------------------
  92697. INT 7F - Alloy NTNX - ATTACH/RELEASE HOST PROCESSOR
  92698.     AH = 24h
  92699.     CL = function
  92700.         02h attach host
  92701.         03h release host
  92702. Return: AX = status (see #2366)
  92703. Note:    the host processor may be attached in order to perform I/O via the host
  92704. --------N-7F25--CL00-------------------------
  92705. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE VERSION
  92706.     AH = 25h
  92707.     CL = 00h
  92708. Return: AH = version suffix letter
  92709.     CH = major version number
  92710.     CL = minor version number
  92711. SeeAlso: AH=25h/CL=01h
  92712. --------N-7F25--CL01-------------------------
  92713. INT 7F - Alloy ANSK, NTNX, MW386 - GET NETWORK EXECUTIVE TYPE
  92714.     AH = 25h
  92715.     CL = 01h
  92716. Return: CL = executive type (see #2367)
  92717. SeeAlso: AH=25h/CL=00h
  92718.  
  92719. (Table 2367)
  92720. Values for Alloy network executive type:
  92721.  00h    RTNX
  92722.  01h    ATNX
  92723.  02h    NTNX
  92724.  03h    BTNX
  92725.  04h    MW386
  92726.  05h    ANSK
  92727. ----------7F2525-----------------------------
  92728. INT 7F - TIGA Communications Driver v2.05 - ???
  92729.     AX = 2525h
  92730.     BX = ???
  92731. Return: ???
  92732. SeeAlso: AX=4321h,AX=5555h
  92733. --------N-7F26--CL00-------------------------
  92734. INT 7F - Alloy NTNX, MW386 - GET NTNX FILE MODE
  92735.     AH = 26h
  92736.     CL = 00h
  92737. Return: AX = file mode bits (see #2368)
  92738. Note:    MW386 does not support file modes, and always returns AX=001Fh
  92739. SeeAlso: AH=26h,AH=26h/CL=06h
  92740.  
  92741. Bitfields for Alloy file mode bits:
  92742. Bit(s)    Description    (Table 2368)
  92743.  0    directory protection enabled
  92744.  1    extended open enabled
  92745.  2    flush on every disk write
  92746.  3    flush on every disk write in locked interval
  92747.  4    flush on reads from simultaneously opened file
  92748. --------N-7F26-------------------------------
  92749. INT 7F - Alloy NTNX - SET FILE I/O CHECKING LEVEL
  92750.     AH = 26h
  92751.     CL = check type to set/reset
  92752.         01h directory protection
  92753.         02h extended open
  92754.         03h flush on every disk write
  92755.         04h flush on disk write if any lock set during write
  92756.         05h flush on all reads if file written
  92757.     AL = new state (00h off, 01h on)
  92758. SeeAlso: AH=26h/CL=00h,AH=26h/CL=06h
  92759. --------N-7F26--CL06-------------------------
  92760. INT 7F - Alloy NTNX - CANCEL FLUSH ON WRITE
  92761.     AH = 26h
  92762.     CL = 06h
  92763. Note:    cancels flags set by AH=26h/CL=03h and AH=26h/CL=04h
  92764. SeeAlso: AH=26h/CL=00h
  92765. --------N-7F30-------------------------------
  92766. INT 7F - Alloy MW386 - GET PORT INFORMATION
  92767.     AH = 30h
  92768.     CX = MW386 port number
  92769. Return: AL = result
  92770.         FFh if port not found
  92771.         else driver unit number
  92772.         BL = port mode
  92773.         BH = port type
  92774.             02h remote
  92775.         DH = owner's machine ID
  92776.         DL = owner's user ID
  92777. SeeAlso: INT 17/AH=8Bh
  92778. --------N-7F31-------------------------------
  92779. INT 7F - Alloy MW386 v1.x only - CHECK PORT ASSIGNMENT
  92780.     AH = 31h
  92781.     ???
  92782. Return: ???
  92783. --------N-7F37-------------------------------
  92784. INT 7F - Alloy NTNX (Host) - GET SEMAPHORE TABLE
  92785.     AH = 37h
  92786. Return: ES:AX -> semaphore table
  92787. --------N-7F37-------------------------------
  92788. INT 7F - Alloy ANSK, NTNX (Slave) - DUMP STRING TO TERMINAL
  92789.     AH = 37h
  92790.     DS:DX -> ASCIZ string to display
  92791. Note:    if the string is empty, a terminal update will be forced
  92792. --------N-7F38-------------------------------
  92793. INT 7F - Alloy NTNX (Slave), MW386 - SET NEW TERMINAL DRIVER
  92794.     AH = 38h
  92795.     AL = new terminal driver number
  92796.         FFh dummy driver
  92797.         FEh current driver
  92798.         FDh load new driver
  92799.         DS:SI -> new driver
  92800. SeeAlso: AH=39h
  92801. --------N-7F39-------------------------------
  92802. INT 7F - Alloy MW386 - SET TERMINAL DRIVER FOR ANOTHER USER
  92803.     AH = 39h
  92804.     AL = new terminal driver number
  92805.         FFh dummy driver
  92806.         FEh current driver
  92807.         FDh load new driver
  92808.         DS:SI -> new driver
  92809.     DL = user number (FFh = caller)
  92810.     DH = machine number if DL <> FFh
  92811. Return: CF set if invalid user number
  92812.     CF clear if successful
  92813. Notes:    only available to supervisors
  92814.     the new driver number will not take effect until the user is rebooted
  92815. SeeAlso: AH=38h
  92816. --------N-7F3A-------------------------------
  92817. INT 7F - Alloy MW386 - GET TERMINAL PARAMETERS
  92818.     AH = 3Ah
  92819.     DL = user number (FFh = caller)
  92820.     DH = machine number
  92821. Return: CF clear if successful
  92822.         AH = terminal driver number
  92823.         AL = baud rate (00h = 38400, 01h = 19200, etc)
  92824.         CL = parity (00h none, 01h even, 02h odd)
  92825.         CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  92826.     CF set if invalid user number
  92827. SeeAlso: AH=3Bh
  92828. --------N-7F3B-------------------------------
  92829. INT 7F - Alloy MW386 - SET TERMINAL PARAMETERS
  92830.     AH = 3Bh
  92831.     AL = baud rate (00h = 38400, 01h = 19200, etc)
  92832.     CL = parity (00h none, 01h even, 02h odd)
  92833.     CH = handshaking (00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC)
  92834.     DL = user number (FFh = caller)
  92835.     DH = machine number for user
  92836. Return: CF set if invalid user number
  92837. Notes:    only available to supervisors
  92838.     the new parameters will take effect immediately if the user's terminal
  92839.       has not been started, else AH=3Dh must be called to post the changes
  92840. SeeAlso: AH=3Ah,AH=3Dh
  92841. --------N-7F3C-------------------------------
  92842. INT 7F - Alloy MW386 - ENABLE/DISABLE AUTOBAUD DETECT
  92843.     AH = 3Ch
  92844.     AL = new state (00h disabled, 01h enabled)
  92845.     DL = user number (FFh = caller)
  92846.     DH = machine number for user
  92847. Return: CF set if invalid user number
  92848. Note:    only available to supervisors
  92849. SeeAlso: AH=3Dh
  92850. --------N-7F3D-------------------------------
  92851. INT 7F - Alloy MW386 - POST TERMINAL CONFIGURATION CHANGES
  92852.     AH = 3Dh
  92853. Note:    should be called whenever a program changes the terminal type or its
  92854.       parameters
  92855. SeeAlso: AH=3Bh
  92856. --------N-7F41-------------------------------
  92857. INT 7F - Alloy NTNX - LOCK FILE FOR USER
  92858.     AH = 41h
  92859.     AL = user ID
  92860.     DS:DX -> ASCIZ filename
  92861. Return: AL = status (see #2369)
  92862. Note:    requests exclusive read/write access to file
  92863. SeeAlso: AH=00h,AH=41h"MW386",AH=42h"NTNX"
  92864.  
  92865. (Table 2369)
  92866. Values for Alloy function status:
  92867.  00h    successful
  92868.  01h    invalid function
  92869.  02h    already locked
  92870.  03h    unable to lock
  92871.  04h    lock table full or semaphore space exhausted
  92872. --------N-7F41-------------------------------
  92873. INT 7F - Alloy MW386 - LOCK SEMAPHORE FOR USER
  92874.     AH = 41h
  92875.     AL = user ID
  92876.     DS:DX -> ASCIZ semaphore name
  92877. Return: AL = status (see #2369)
  92878. SeeAlso: AH=00h,AH=42h"MW386"
  92879. --------s-7F4150BHC1-------------------------
  92880. INT 7F U - Voyetra - AAPISG - API
  92881.     AX = 4150h ('AP')
  92882.     BH = C1h
  92883.     BL = function (00h-13h)
  92884.         00h initialize (fails except first time called)
  92885.     ???
  92886. Return: AX = status???
  92887.         0000h successful    
  92888.         0001h failed
  92889. Program: AAPISG is a driver by Voyetra for the Aztech Sound Galaxy sound board
  92890. BUG:    the function range check uses JL instead of JB, so it will cause a
  92891.       crash if BL >= 80h on entry
  92892. SeeAlso: AX=4331h,AX=564Dh,AX=5658h
  92893. --------N-7F42-------------------------------
  92894. INT 7F - Alloy NTNX - UNLOCK FILE FOR USER
  92895.     AH = 42h
  92896.     AL = user ID
  92897.     DS:DX -> ASCIZ filename
  92898. Return: AL = status (see #2369)
  92899. SeeAlso: AH=00h,AH=41h"NTNX",AH=42h"MW386"
  92900. --------N-7F42-------------------------------
  92901. INT 7F - Alloy MW386 - UNLOCK SEMAPHORE FOR USER
  92902.     AH = 42h
  92903.     AL = user ID
  92904.     DS:DX -> ASCIZ semaphore name
  92905. Return: AL = status
  92906.         00h successful
  92907.         01h invalid function
  92908.         03h unable to unlock semaphore
  92909. SeeAlso: AH=02h,AH=41h"MW386",AH=42h"NTNX"
  92910. ----------7F4321-----------------------------
  92911. INT 7F - TIGA Communications Driver v2.05 - INSTALLATION CHECK
  92912.     AX = 4321h
  92913. Return: AX = 0000h if installed
  92914. Note:    INT 7F is the default, but may be overridden
  92915. SeeAlso: AH=01h"TIGA",AX=1234h,AX=2525h,AX=4321h,AX=5555h
  92916. --------s-7F4331BHC1-------------------------
  92917. INT 7F U - Voyetra - VAPISG - API
  92918.     AX = 4331h ('C1')
  92919.     BH = C1h
  92920.     BL = function (00h-7Ah)
  92921.     ???
  92922. Return: ???
  92923. Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
  92924.       sound board
  92925. SeeAlso: AX=4150h,AX=564Dh,AX=5658h
  92926. --------N-7F4E-------------------------------
  92927. INT 7F - Alloy MW386 v2+ - SET ERROR MODE
  92928.     AH = 4Eh
  92929.     AL = error mode flags
  92930.         bit 0: display critical disk errors
  92931.         bit 1: display sharing errors
  92932.     DX = 4E58h ("NX")
  92933. Return: AL = status
  92934.         00h successful
  92935. SeeAlso: AH=4Fh
  92936. --------N-7F4F-------------------------------
  92937. INT 7F - Alloy MW386 v2+ - SET FCB MODE
  92938.     AH = 4Fh
  92939.     AL = FCB mode
  92940.         02h read/write compatibility
  92941.         42h read/write shared
  92942.     DX = 4E58h ("NX")
  92943. Return: AL = status
  92944.         00h successful
  92945. --------V-7F5555-----------------------------
  92946. INT 7F - TIGA Communications Driver v2.05 - ???
  92947.     AX = 5555h
  92948.     BX = ???
  92949. Return: ???
  92950. SeeAlso: AX=4321h
  92951. --------s-7F564DBHC1-------------------------
  92952. INT 7F U - Voyetra Multimedia Player - VMP.EXE API
  92953.     AX = 564Dh ('VM')
  92954.     BH = C1h
  92955.     BL = function (00h-1Bh)
  92956.         00h ???
  92957.         Return: CF clear
  92958.             AX = 0000h
  92959.     ???
  92960. Return: AX = FFFFh if invalid function
  92961.     ???
  92962. SeeAlso: AX=4331h,AX=5658h
  92963. --------s-7F5658BHC1-------------------------
  92964. INT 7F U - Voyetra - VAPISG - API
  92965.     AX = 5658h ('VX')
  92966.     BH = C1h
  92967.     BL = function (00h-1Bh)
  92968.     ???
  92969. Return: ???
  92970. Program: VAPISG is a MIDI driver by Voyetra for the Aztech Sound Galaxy
  92971.       sound board
  92972. SeeAlso: AX=4331h,AX=564Dh
  92973. --------N-7F81-------------------------------
  92974. INT 7F - Alloy NTNX - ATTACH DEVICE FOR USER
  92975.     AH = 81h
  92976.     AL = user ID
  92977.     DS:DX -> ASCIZ device name
  92978. SeeAlso: AH=82h
  92979. --------N-7F82-------------------------------
  92980. INT 7F - Alloy NTNX - RELEASE DEVICE FOR USER
  92981.     AH = 82h
  92982.     AL = user ID
  92983.     DS:DX -> ASCIZ device name
  92984. SeeAlso: AH=81h
  92985. --------N-7FA0-------------------------------
  92986. INT 7F - Alloy MW386 - GET USER NAME
  92987.     AH = A0h
  92988.     DL = user number (FFh = caller)
  92989.     DH = machine number for user
  92990.     ES:DI -> 17-byte buffer for ASCIZ user name
  92991. Return: CF set if invalid user number
  92992. SeeAlso: AH=03h,AH=A1h
  92993. --------N-7FA1-------------------------------
  92994. INT 7F - Alloy MW386 - GET MACHINE, USER, AND PROCESS NUMBER
  92995.     AH = A1h
  92996. Return: AL = process number
  92997.     DL = user number
  92998.     DH = machine number
  92999. SeeAlso: AH=03h,AH=A0h,AH=A2h
  93000. --------N-7FA2-------------------------------
  93001. INT 7F - Alloy MW386 - GET USER PRIVILEGE LEVEL
  93002.     AH = A2h
  93003.     DL = user number (FFh = caller)
  93004.     DH = machine number for user
  93005. Return: CF clear if successful
  93006.         AL = privilege level
  93007.         00h supervisor
  93008.         01h high
  93009.         02h medium
  93010.         03h low
  93011.     CF set if invalid user number
  93012. SeeAlso: AH=A1h,AH=A3h
  93013. --------N-7FA3-------------------------------
  93014. INT 7F - Alloy MW386 - GET USER LOGIN STATE
  93015.     AH = A3h
  93016.     DL = user number
  93017.     DH = machine number for user
  93018. Return: CF clear if successful
  93019.         AL = login state
  93020.         00h never logged in
  93021.         01h currently logged out
  93022.         03h currently logged in
  93023.     CF set if invalid user number or user not active
  93024. SeeAlso: AH=A2h
  93025. --------N-7FA4-------------------------------
  93026. INT 7F - Alloy MW386 - VERIFY USER PASSWORD
  93027.     AH = A4h
  93028.     DS:DX -> ASCIZ password (null-padded to 16 bytes)
  93029. Return: AL = status
  93030.         00h     accepted
  93031.         else invalid password
  93032. --------N-7FA500-----------------------------
  93033. INT 7F - Alloy MW386 - GET USER STATUS
  93034.     AX = A500h
  93035.     DI = machine number and user number
  93036. Return: CF clear if successful
  93037.         BX = user flags
  93038.         bit 5: allow messages
  93039.         CL = scan code for task manager hotkey
  93040.         CH = scan code for spooler hotkey
  93041.         DL = scan code for task swapper hotkey
  93042.         DH = modifier key status
  93043.     CF set if invalid user number
  93044. SeeAlso: AX=A501h
  93045. Index:    hotkeys;Alloy MW386
  93046. --------N-7FA501-----------------------------
  93047. INT 7F - Alloy MW386 - SET USER STATUS
  93048.     AX = A501h
  93049.     BX = user flags (see AX=A500h)
  93050.     CL = scan code for task manager hotkey
  93051.     CH = scan code for spooler hotkey
  93052.     DL = scan code for task swapper hotkey
  93053.     DH = modifier key status
  93054.     DI = machine number and user number
  93055. Return: CF set if invalid user number
  93056. Note:    must have supervisor privilege to set another user's status
  93057. SeeAlso: AX=A500h
  93058. Index:    hotkeys;Alloy MW386
  93059. --------V-7FABCDBX0000-----------------------
  93060. INT 7F - IBM 8516 Touch Screen Device Driver - GET API ENTRY
  93061.     AX = ABCDh
  93062.     BX = 0000h
  93063. Return: AX = total number of functions available
  93064.     ES:BX -> entry point array (see #2370)
  93065. SeeAlso: AX=0104h,AX=0105h
  93066.  
  93067. (Table 2370)
  93068. Values for 8516 Touch Screen function number:
  93069.  00h    check initialization and reset (see #2371)
  93070.  14h    set user-defined subroutine (see #2372)
  93071. Notes:    each driver function takes two stack parameters using Pascal calling
  93072.       conventions: address of parameter block and address of results buffer
  93073.     all pointers are FAR pointers
  93074.     on return, AX contains the status of the call:
  93075.         AX = 0000h successful
  93076.          0001h invalid input
  93077.          0002h interface error
  93078.          0003h unable to perform function
  93079.  
  93080. Format of 8516 Touch Screen Function 00h parameter block:
  93081. Offset    Size    Description    (Table 2371)
  93082.  00h    WORD    0000h (function number)
  93083. Note:    this function should be called before any other device driver functions
  93084.  
  93085. Format of 8516 Touch Screen Function 00h results buffer:
  93086. Offset    Size    Description    (Table 2372)
  93087.  00h    WORD    touch screen status
  93088.         0000h unavailable
  93089.         0001h uncalibrated
  93090.         FFFFh available
  93091.  02h    WORD    aux mouse status (0000h not present, FFFFh present)
  93092. Notes:    the following driver parameters will have been reset to zero:
  93093.       touchdown counter, liftoff counter, position at last touch, position
  93094.       at last lift, int call mask, select on count, select off count,
  93095.       pos select on count, pos select off count.
  93096.     the following driver parameters will have been reset as listed:
  93097.       mouse emulation mode: left on
  93098.       thresholds: 46 on screen, 96 push harder, 80 push release
  93099.       x, y hysteresis: 400
  93100.       data repeat rate: 40/sec
  93101.       select mechanism: push-harder - first-touch
  93102.       coordinate origin: upper left corner
  93103.       filter frequency: medium
  93104.       data block mask: all enabled
  93105.       click lock: on
  93106. --------N-7FB0-------------------------------
  93107. INT 7F - Alloy NTNX, MW386 - RELEASE ALL SEMAPHORES FOR USER
  93108.     AH = B0h
  93109.     AL = user number
  93110.     DS = code segment
  93111. Note:    MW386 ignores AL and DS; it releases all semaphores locked using INT 67
  93112.       or INT 7F locking functions
  93113. SeeAlso: AH=B1h,AH=B2h,AH=B3h,AH=B4h
  93114. --------N-7FB1--SF00-------------------------
  93115. INT 7F - Alloy NTNX, MW386 - RELEASE NORMAL SEMAPHORES FOR USER
  93116.     AH = B1h subfn 00h
  93117.     AL = (bits 7-5) 000
  93118.          (bits 4-0) user ID
  93119. Note:    MW386 ignores AL; it releases all semaphores locked using INT 67 or
  93120.       INT 7F locking functions
  93121. SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
  93122. --------N-7FB2--SF01-------------------------
  93123. INT 7F - Alloy NTNX - RELEASE MESSAGES FOR USER
  93124.     AH = B2h subfn 01h
  93125.     AL = (bits 7-5) 001
  93126.          (bits 4-0) user ID
  93127. SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h
  93128. --------N-7FB3--SF02-------------------------
  93129. INT 7F - Alloy NTNX - RELEASE FILES FOR USER
  93130.     AH = B3h subfn 02h
  93131.     AL = (bits 7-5) 010
  93132.          (bits 4-0) user ID
  93133. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B4h
  93134. --------N-7FB4-------------------------------
  93135. INT 7F - Alloy NTNX - RELEASE DEVICES FOR USER
  93136.     AH = B4h
  93137.     AL = user ID
  93138. SeeAlso: AH=B0h,AH=B1h,AH=B2h,AH=B3h
  93139. --------N-7FC3-------------------------------
  93140. INT 7F - Alloy MW386 - WRITE BYTE TO TERMINAL AUX PORT
  93141.     AH = C3h
  93142.     AL = byte to write
  93143. Return: CF clear if successful
  93144.     CF set on error
  93145. SeeAlso: AH=C6h
  93146. --------N-7FC5-------------------------------
  93147. INT 7F - Alloy MW386 - CHANGE CONSOLE MODE
  93148.     AH = C5h
  93149.     AL = new console mode
  93150.         00h keyboard indirect
  93151.         01h keyboard direct
  93152.         02h data handshake enforced
  93153.         03h no data handshake
  93154. Return: CF clear if successful
  93155.         AL = prior console mode
  93156.     CF set on error (caller is not remote user)
  93157. Note:    modes 2 and 3 may be used for input through the console port; no video
  93158.       output should be performed in these modes
  93159. --------N-7FC6-------------------------------
  93160. INT 7F - Alloy MW386 - WRITE BYTE TO CONSOLE PORT
  93161.     AH = C6h
  93162.     AL = byte to write
  93163. Return: CF clear if successful
  93164.     CF set on error (caller is not remote user)
  93165. Note:    any terminal driver data translation will be bypassed
  93166. SeeAlso: AH=C3h,AH=C7h
  93167. --------N-7FC7-------------------------------
  93168. INT 7F - Alloy MW386 - READ CONSOLE DATA BYTE
  93169.     AH = C7h
  93170. Return: CF clear if successful
  93171.         AL = byte read
  93172.     CF set on error (no data available or caller is not remote user)
  93173. Note:    used to read data after placing console in mode 2 or 3 (see AH=C5h)
  93174. SeeAlso: AH=C5h,AH=C6h,AH=C8h
  93175. --------N-7FC8-------------------------------
  93176. INT 7F - Alloy MW386 - READ CONSOLE DATA INTO BUFFER
  93177.     AH = C8h
  93178.     AL = maximum bytes to read
  93179.     ES:DI -> buffer for console data
  93180. Return: CF clear if successful
  93181.         CX = number of bytes read
  93182.     CF set on error (caller is not remote user)
  93183. SeeAlso: AH=C7h
  93184. --------N-7FCF-------------------------------
  93185. INT 7F - Alloy NTNX - REBOOT USER PROCESSOR
  93186.     AH = CFh
  93187.     DS:DX -> ASCIZ string containing user number to be reset
  93188. SeeAlso: AH=D6h
  93189. --------N-7FD6-------------------------------
  93190. INT 7F - Alloy MW386 - RESET NETWORK EXECUTIVE
  93191.     AH = D6h
  93192.     DS:DX -> reset packet (see #2373)
  93193. Return: never if successful
  93194. Note:    all users will be shut down immediately if successful
  93195. SeeAlso: AH=CFh
  93196.  
  93197. Format of Alloy MW386 reset packet:
  93198. Offset    Size    Description    (Table 2373)
  93199.  00h    DWORD    reset code (60606060h)
  93200.  04h 16 BYTEs    ASCIZ supervisor password padded with nulls
  93201. --------N-7FD7-------------------------------
  93202. INT 7F - Alloy MW386 - POST EVENT
  93203.     AH = D7h
  93204.     AL = user number (if local event)
  93205.     DX = event number
  93206. --------N-7FD8-------------------------------
  93207. INT 7F - Alloy MW386 - FLUSH DISK BUFFERS
  93208.     AH = D8h
  93209. Return: CF set on error
  93210. Note:    forces all disk buffers to be written out immediately
  93211. SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h,INT 2F/AX=1120h
  93212. --------N-7FDB-------------------------------
  93213. INT 7F - Alloy MW386 v2+ - GET MW386 INVOCATION DRIVE
  93214.     AH = DBh
  93215. Return: AL = drive from which MW386 was started (2=C:,3=D:,etc)
  93216. --------N-7FE0-------------------------------
  93217. INT 7F - Alloy MW386 - CREATE DOS TASK
  93218.     AH = E0h
  93219.     AL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  93220.     DS:DX -> ASCIZ task name (max 16 bytes)
  93221. Return: CF clear if successful
  93222.         AL = task create ID
  93223.     CF set on error
  93224. Note:    only foreground DOS tasks can use this function
  93225. SeeAlso: AH=E1h,AH=E2h,AH=E3h,AH=E6h,AH=E7h
  93226. --------N-7FE1-------------------------------
  93227. INT 7F - Alloy MW386 - GET DOS TASK PID FROM CREATE ID
  93228.     AH = E1h
  93229.     AL = create ID (from AH=E0h)
  93230. Return: AL = DOS process number
  93231.     CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  93232. Note:    this function should not be called immediately after creating a new
  93233.       DOS task, since the new task is being initialized by a concurrent
  93234.       process
  93235. SeeAlso: AH=E0h,AH=E2h
  93236. --------N-7FE2-------------------------------
  93237. INT 7F - Alloy MW386 - SWITCH TO NEW DOS TASK
  93238.     AH = E2h
  93239.     AL = DOS process number (from AH=E1h)
  93240. Return: CF set on error (invalid process number or caller not foreground task)
  93241. Notes:    specified task becomes the foreground task and current task is placed
  93242.       in the background
  93243.     may only be called by a foreground task
  93244. SeeAlso: AH=E0h,AH=E1h
  93245. --------N-7FE3-------------------------------
  93246. INT 7F - Alloy MW386 - CHANGE NAME OF DOS TASK
  93247.     AH = E3h
  93248.     DS:DX -> ASCIZ task name
  93249. ---v1.x---
  93250.     AL = user number
  93251. ---v2+---
  93252.     BH = user number
  93253.     BL = task number
  93254. Return: CF clear if successful
  93255.     CF set on error (invalid process number)
  93256. SeeAlso: AH=E0h,AH=E4h,AH=E5h
  93257. --------N-7FE4-------------------------------
  93258. INT 7F - Alloy MW386 - GET TASK NAME FROM PROCESS NUMBER
  93259.     AH = E4h
  93260.     ES:DI -> buffer for task name
  93261. ---v1.x---
  93262.     AL = user number
  93263. ---v2+---
  93264.     BH = user number
  93265.     BL = task number
  93266. Return: CF clear if successful
  93267.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  93268.         DX = task flags
  93269.         bit 7: MS-DOS process
  93270.         ES:DI buffer filled
  93271.     CF set on error (invalid process number)
  93272. SeeAlso: AH=E3h,AH=E5h
  93273. --------N-7FE5-------------------------------
  93274. INT 7F - Alloy MW386 - GET PROCESS NUMBER FROM TASK NAME
  93275.     AH = E5h
  93276.     DS:DX -> ASCIZ task name
  93277.     BH = user number
  93278. Return: CF clear if successful
  93279.         AL = DOS process number
  93280.         CL = memory size (00h=128K, 01h=256K, 02h=384K, 03h=512K, 04h=640K)
  93281.     CF set on error (no match for name)
  93282. SeeAlso: AH=E3h,AH=E4h
  93283. --------N-7FE6-------------------------------
  93284. INT 7F - Alloy MW386 - GET NUMBER OF AVAILABLE USER TASKS
  93285.     AH = E6h
  93286. Return: AX = number of processes available to current user
  93287. SeeAlso: AH=E0h
  93288. --------N-7FE7-------------------------------
  93289. INT 7F - Alloy MW386 - REMOVE DOS TASK
  93290.     AH = E7h
  93291.     AL = DOS process number
  93292. Return:    CF clear if successful
  93293.     CF set on error (invalid process number or first process)
  93294. Note:    can only be called by a foreground task
  93295. SeeAlso: AH=E0h
  93296. --------N-7FE8-------------------------------
  93297. INT 7F - Alloy MW386 - DOS TASK DELAY
  93298.     AH = E8h
  93299.     CX = delay time in milliseconds
  93300. Note:    a delay of 0 may be used to surrender the current time slice
  93301. SeeAlso: INT 15/AX=1000h,INT 1A/AX=FF01h,INT 21/AH=EEh"DoubleDOS"
  93302. SeeAlso: INT 2F/AX=1680h
  93303. --------N-7FF0-------------------------------
  93304. INT 7F - Alloy MW386 - RESTRICT DIRECTORY TO GROUP
  93305.     AH = F0h
  93306.     AL = group number
  93307.     DS:DX -> ASCIZ directory name
  93308. Return: CF clear if successful
  93309.         AX = status
  93310.         0002h directory not found
  93311.         0003h directory not found
  93312.         0005h directory in use, cannot be restricted
  93313.         02xxh restricted to group xxh
  93314.     CF set on error
  93315. Note:    the restriction on the directory may be removed by calling this
  93316.       function with group 0, then using AH=F1h to assign the directory to
  93317.       group 0
  93318. SeeAlso: AH=F1h,AH=F2h,AH=F3h
  93319. --------N-7FF1-------------------------------
  93320. INT 7F - Alloy MW386 - ASSIGN DIRECTORY TO GROUP
  93321.     AH = F1h
  93322.     AL = group number
  93323.     DS:DX -> ASCIZ directory name
  93324. Notes:    performs permanent assignment to a group; no immediate action is taken
  93325.       unless the directory has been restricted with AH=F0h
  93326.     may be used to restrict a nonexistent directory
  93327. SeeAlso: AH=F0h
  93328. --------N-7FF2-------------------------------
  93329. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY
  93330.     AH = F2h
  93331.     CX = entry number
  93332.     ES:DI -> 64-byte buffer
  93333. Return: CF clear if successful
  93334.         buffer filled with 63-byte directory info and 1-byte group number
  93335.     CF set on error (invalid entry)
  93336. SeeAlso: AH=F0h,AH=F3h
  93337. --------N-7FF3-------------------------------
  93338. INT 7F - Alloy MW386 - READ RESTRICTED DIRECTORY ENTRY FOR GROUP
  93339.     AH = F3h
  93340.     AL = group number
  93341.     CX = entry number
  93342.     ES:DI -> 64-byte buffer
  93343. Return: CF clear if successful
  93344.         CX = next entry number
  93345.         buffer filled with 63-byte directory info and 1-byte group number
  93346.     CF set on error (no more matching entries)
  93347. Note:    like AH=F2h, but only returns directories belonging to the specified
  93348.       group
  93349. SeeAlso: AH=F2h
  93350. --------N-7FF8-------------------------------
  93351. INT 7F - Alloy MW386 - ASSIGN USER TO GROUP
  93352.     AH = F8h
  93353.     AL = group number
  93354.     DL = user number
  93355.     DH = machine number (currently 00h)
  93356. Return: CF clear if successful
  93357.     CF set on error (user already in maximum number of groups)
  93358. Note:    each user is allowed eight group assignments
  93359. SeeAlso: AH=F9h,AH=FAh
  93360. --------N-7FF9-------------------------------
  93361. INT 7F - Alloy MW386 - REMOVE USER FROM GROUP
  93362.     AH = F9h
  93363.     AL = group number
  93364.     DL = user number
  93365.     DH = machine number (currently 00h)
  93366. Return: CF clear if successful
  93367.     CF set if failed
  93368. SeeAlso: AH=F8h,AH=FAh
  93369. --------N-7FFA-------------------------------
  93370. INT 7F - Alloy MW386 - GET USER GROUP LIST
  93371.     AH = FAh
  93372.     DL = user number
  93373.     DH = machine number (currently 00h)
  93374.     ES:DI -> 16-byte buffer for group list
  93375. Return: CX = number of groups
  93376.     ES:DI buffer filled with group numbers
  93377. SeeAlso: AH=F8h,AH=F9h
  93378. --------N-7FFB-------------------------------
  93379. INT 7F - Alloy MW386 - ASSIGN GROUP NAME
  93380.     AH = FBh
  93381.     CL = group number
  93382.     ES:DI -> ASCIZ group name (max 17 bytes)
  93383. SeeAlso: AH=FCh
  93384. --------N-7FFC-------------------------------
  93385. INT 7F - Alloy MW386 - GET GROUP NAME
  93386.     AH = FCh
  93387.     CL = group number
  93388.     ES:DI -> 17-byte buffer for ASCIZ name
  93389. Return: ES:DI buffer filled
  93390. Note:    if the group has not been named, "(unnamed)" is returned
  93391. SeeAlso: AH=FBh
  93392. ----------80---------------------------------
  93393. INT 80 - Q-PRO4 - ???
  93394. --------r-80---------------------------------
  93395. INT 80 - reserved for BASIC
  93396. Note:    this vector and INT 81 through INT ED are modified but not restored by
  93397.       Direct Access v4.0, and may be left dangling by other programs
  93398.       written with the same version of compiled BASIC
  93399. SeeAlso: INT 81"BASIC",INT 86"BASIC",INT EF"BASIC"
  93400. --------s-80----BL00-------------------------
  93401. INT 80 - SBSIM - "STARTSND" - START SOUND ON SPECIFIED DRIVER
  93402.     BL = 00h
  93403.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93404. Return: AX = initialization result (see #2374)
  93405. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  93406.       which provides access to multiple drivers for the SoundBlaster
  93407.       board through a single interface
  93408. Range:    INT 80h to INT BFh, selected automatically
  93409. Note:    the SBSIM installation check consists of testing for the signature
  93410.       "SBSIM" at offset 103h in the interrupt handler's segment.
  93411. SeeAlso: INT 80/BL=01h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=03h"SBSIM"
  93412. SeeAlso: INT 80/BX=0000h"SBSIM"
  93413.  
  93414. (Table 2374)
  93415. Values for SBSIM error code:
  93416.  01h    busy--currently in use
  93417.  02h    bad driver specified
  93418.  03h    invalid function
  93419.  04h    voice process already active
  93420.  05h    couldn't start CT-VOICE
  93421.  06h    couldn't start CTVDSK
  93422.  07h    invalid SBSIM handle
  93423.  08h    buffer not initialized yet
  93424.  09h    bad filename
  93425.  0Ah    bad file handle
  93426.  0Bh    driver not started yet
  93427.  0Ch    XMS driver not installed
  93428.  0Dh    no free SBSIM handles
  93429.  0Eh    bad file type
  93430.  0Fh    couldn't free XMS block
  93431.  10h    invalid source selected
  93432.  11h    get pan position failed
  93433.  12h    set pan position failed
  93434.  13h    set volume failed
  93435.  14h    couldn't start fade/pan
  93436.  15h    couldn't stop fade/pan
  93437.  16h    couldn't pause fade/pan
  93438.  17h    not a fade/pan operation
  93439.  18h    bad mode for fade/pan
  93440.  19h    couldn't start fade/pan
  93441.  1Ah    source not fading/panning
  93442.  1Bh    FM or MIDI already playing
  93443.  1Ch    bad MIDI mapper format
  93444. --------s-80----BL01-------------------------
  93445. INT 80 - SBSIM - "PLAYSND" - PLAY MUSIC/VOICE ON SELECTED DRIVER
  93446.     BL = 01h
  93447.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93448. Return: AX = result (see #2374)
  93449. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  93450. --------s-80----BL02-------------------------
  93451. INT 80 - SBSIM - "STOPSND" - STOP MUSIC/VOICE ON SELECTED DRIVER
  93452.     BL = 02h
  93453.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93454. Return: nothing
  93455. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  93456. --------s-80----BL03-------------------------
  93457. INT 80 - SBSIM - "PAUSESND" - TEMPORARILY PAUSE PLAYBACK ON SELECTED DRIVER
  93458.     BL = 03h
  93459.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93460. Return: nothing
  93461. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=02h"SBSIM",INT 80/BL=04h"SBSIM"
  93462. SeeAlso: INT 80/BL=05h
  93463. --------s-80----BL04-------------------------
  93464. INT 80 - SBSIM - "RESUMESND" - RESTART PLAYBACK ON SELECTED DRIVER
  93465.     BL = 04h
  93466.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93467. Return: nothing
  93468. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=03h"SBSIM",INT 80/BL=05h"SBSIM"
  93469. --------s-80----BL05-------------------------
  93470. INT 80 - SBSIM - "GETSNDSTAT" - GET DRIVER'S STATUS
  93471.     BL = 05h
  93472.     BH = driver number (01h = FM, 02h=DDBV, 03h=memvoice, 05h=MIDI)
  93473. Return: AX = status
  93474. SeeAlso: INT 80/BL=00h"SBSIM",INT 80/BL=01h"SBSIM",INT 80/BL=03h"SBSIM"
  93475. --------s-80----BX0000-----------------------
  93476. INT 80 - SoundBlaster SBFM driver - GET VERSION
  93477.     BX = 0000h
  93478. Return: ???
  93479. Note:    SBFM installs at a free interrupt in the range 80h through BFh
  93480. SeeAlso: BX=0008h"SBFM",INT 2F/AX=FBFBh
  93481. --------s-80----BX0000-----------------------
  93482. INT 80 - SBSIM - "QUERYVERSION" - GET VERSION
  93483.     BX = 0000h
  93484. Return: AX = version (AH = major, AL = minor)
  93485. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  93486.       which provides access to multiple drivers for the SoundBlaster
  93487.       board through a single interface
  93488. Range:    INT 80h to INT BFh, selected automatically
  93489. Note:    the SBSIM installation check consists of testing for the signature
  93490.       "SBSIM" at offset 103h in the interrupt handler's segment.
  93491. SeeAlso: BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  93492. Index:    installation check;SBSIM|installation check;SoundBlaster
  93493. --------s-80----BX0001-----------------------
  93494. INT 80 - SoundBlaster SBFM driver - SET MUSIC STATUS BYTE ADDRESS
  93495.     BX = 0001h
  93496.     DX:AX -> music status byte
  93497. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0003h"SBFM"
  93498. --------s-80----BX0001-----------------------
  93499. INT 80 - SBSIM - "QUERYDRIVERS" - CHECK DRIVERS INSTALLED
  93500.     BX = 0001h
  93501. Return: AX = bit flags for loaded drivers (see #2375)
  93502. SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  93503.  
  93504. Bitfields for SBSIM loaded drivers:
  93505. Bit(s)    Description    (Table 2375)
  93506.  0    FM
  93507.  1    double disk-buffered voice driver (DDBV)
  93508.  2    memory voice driver
  93509.  3    auxiliary driver (mixer)
  93510.  4    MIDI
  93511. --------s-80----BX0002-----------------------
  93512. INT 80 - SoundBlaster SBFM driver - SET INSTRUMENT TABLE
  93513.     BX = 0002h
  93514.     CX = number of instruments
  93515.     DX:AX -> instrument table
  93516. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0005h"SBFM"
  93517. --------s-80----BX0002-----------------------
  93518. INT 80 - SBSIM - GETADDRESS" - GET SELECTED DRIVER'S ENTRY POINT
  93519.     BX = 0002h
  93520.     AX = driver (00h = FM,01h = DDBV,02h = memvoice,03h = mixer,04h = MIDI)
  93521. Return: CF clear if successful
  93522.         DX:AX -> entry point
  93523.     CF set on error
  93524. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
  93525. --------s-80----BX0003-----------------------
  93526. INT 80 - SoundBlaster SBFM driver - SET SYSTEM CLOCK RATE
  93527.     BX = 0003h
  93528.     AX = clock rate divisor (1193180 / desired frequency in Hertz)
  93529.         FFFFh to restore to 18.2 Hz
  93530. SeeAlso: BX=0000h"SBFM",BX=0001h"SBFM",BX=0004h"SBFM"
  93531. --------s-80----BX0004-----------------------
  93532. INT 80 - SoundBlaster SBFM driver - SET DRIVER CLOCK RATE
  93533.     BX = 0004h
  93534.     AX = driver clock rate divisor (1193180 / frequency in Hertz)
  93535. Note:    default frequency is 96 Hz
  93536. SeeAlso: BX=0000h"SBFM",BX=0003h"SBFM"
  93537. --------s-80----BX0005-----------------------
  93538. INT 80 - SoundBlaster SBFM driver - TRANSPOSE MUSIC
  93539.     BX = 0005h
  93540.     AX = semi-tone offset
  93541. SeeAlso: BX=0000h"SBFM",BX=0002h"SBFM",BX=0006h"SBFM"
  93542. --------s-80----BX0005-----------------------
  93543. INT 80 - SBSIM - "GETBUFFERINFO" - GET DRIVER'S BUFFER ADDRESS
  93544.     BX = 0005h
  93545.     AX = driver (00h = FM, 01h = DDB Voice, 04h = MIDI)
  93546. Return: CF clear if successful
  93547.         DX:AX -> buffer
  93548.         CX = buffer size in K
  93549.     CF set on error
  93550. Program: SBSIM is Creative Labs' SoundBlaster Simplified Interface Module,
  93551.       which provides access to multiple drivers for the SoundBlaster
  93552.       board through a single interface
  93553. Range:    INT 80h to INT BFh, selected automatically
  93554. Note:    the SBSIM installation check consists of testing for the signature
  93555.       "SBSIM" at offset 103h in the interrupt handler's segment.
  93556. SeeAlso: BX=0000h"SBSIM",BX=0001h"SBSIM",BX=0002h"SBSIM",INT 80/BL=00h"SBSIM"
  93557. --------s-80----BX0006-----------------------
  93558. INT 80 - SoundBlaster SBFM driver - PLAY MUSIC
  93559.     BX = 0006h
  93560.     DX:AX -> music block
  93561. Return: AX = status
  93562.         0000h successful
  93563.         0001h music already active
  93564. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF04h
  93565. --------s-80----BX0007-----------------------
  93566. INT 80 - SoundBlaster SBFM driver - STOP MUSIC
  93567.     BX = 0007h
  93568. Return: AX = status
  93569.         0000h successful
  93570.         0001h music not active
  93571. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM",INT 1A/AX=FF05h
  93572. --------s-80----BX0008-----------------------
  93573. INT 80 - SoundBlaster SBFM driver - RESET DRIVER
  93574.     BX = 0008h
  93575. Return: AX = status
  93576.         0000h successful
  93577.         0001h music is active
  93578. SeeAlso: BX=0000h"SBFM"
  93579. --------s-80----BX0009-----------------------
  93580. INT 80 - SoundBlaster SBFM driver - PAUSE MUSIC
  93581.     BX = 0009h
  93582. Return: AX = status
  93583.         0000h successful
  93584.         0001h no music active
  93585. SeeAlso: BX=0000h"SBFM",BX=0007h"SBFM",BX=000Ah"SBFM",INT 1A/AX=FF01h
  93586. --------s-80----BX000A-----------------------
  93587. INT 80 - SoundBlaster SBFM driver - RESUME MUSIC
  93588.     BX = 000Ah
  93589. Return: AX = status
  93590.         0000h successful
  93591.         0001h no music paused
  93592. SeeAlso: BX=0000h"SBFM",BX=0006h"SBFM",BX=0009h"SBFM"
  93593. --------s-80----BX000B-----------------------
  93594. INT 80 - SoundBlaster SBFM driver - SET USER-DEF TRAP FOR SYSTEM-EXCLUSIVE CMDS
  93595.     BX = 000Bh
  93596.     DX:AX -> trap routine
  93597. SeeAlso: BX=0000h"SBFM"
  93598. --------s-80----BX0400-----------------------
  93599. INT 80 - SBSIM - "GETVOLUME" - GET SOURCE'S VOLUME
  93600.     BX = 0400h
  93601.     AX = sound source (see #2376)
  93602. Return: CF clear if successful
  93603.         AX = volume
  93604.     CF set on error
  93605.         AX = error code (see INT 80/BL=00h)
  93606. SeeAlso: BX=0401h"SBSIM"
  93607.  
  93608. (Table 2376)
  93609. Values for SBSIM sound source:
  93610.  00h    master volume
  93611.  01h    voice
  93612.  02h    FM
  93613.  03h    CD
  93614.  04h    line in
  93615.  05h    microphone
  93616. --------s-80----BX0401-----------------------
  93617. INT 80 - SBSIM - "SETVOLUME" - SET SOURCE'S VOLUME
  93618.     BX = 0401h
  93619.     AX = sound source (see INT 80/BX=0400h)
  93620.     DX = new volume
  93621. Return: AX = result (0000h = success) (see also INT 80/BL=00h)
  93622. SeeAlso: BX=0400h"SBSIM"
  93623. --------N-8001-------------------------------
  93624. INT 80 - QPC Software PKTINT.COM - INITIALIZE
  93625.     AH = 01h
  93626. Return: AX = 0000h
  93627.     CX = FFFFh
  93628.     DX = FFFFh
  93629. Notes:    this interrupt is the WinQVTNet protected mode interface to Windows 3.0
  93630.     all buffer pointers are reset back to 0
  93631. --------N-8002-------------------------------
  93632. INT 80 - QPC Software PKTINT.COM - GET BUFFER ADDRESSES
  93633.     AH = 02h
  93634.     BX = extra bytes to allocate per packet
  93635. Return: AX = segment address of 10K buffer (for receives???)
  93636.     BX = segment address of 2K buffer (for sends???)
  93637. SeeAlso: AH=05h
  93638. --------N-8003-------------------------------
  93639. INT 80 - QPC Software PKTINT.COM - GET ENTRY POINT
  93640.     AH = 03h
  93641. Return: CX:DX -> receive call address
  93642. Note:    the returned address can be used in the packet driver calls since it
  93643.       will be a valid address in all DOS boxes
  93644. SeeAlso: AH=06h
  93645. --------N-8004-------------------------------
  93646. INT 80 - QPC Software PKTINT.COM - ENABLE???
  93647.     AH = 04h
  93648.     BX = ???
  93649. Return: ???
  93650. SeeAlso: AH=01h
  93651. --------N-8005-------------------------------
  93652. INT 80 - QPC Software PKTINT.COM - GET RECEIVE STATISTICS
  93653.     AH = 05h
  93654. Return: AX = amount of buffer currently in use
  93655.     BX = current offset in buffer
  93656.     CX = number of times receive has been called
  93657. SeeAlso: AH=02h
  93658. --------N-8006-------------------------------
  93659. INT 80 - QPC Software PKTINT.COM - REMOVE RECEIVED PACKET
  93660.     AH = 06h
  93661. Return: BX = next packet offset
  93662.     CX = number of bytes still buffered
  93663.     DX = size of packet released back into buffer pool
  93664. SeeAlso: AH=03h
  93665. --------r-81---------------------------------
  93666. INT 81 - reserved for BASIC
  93667. Note:    this vector is modified but not restored by Direct Access v4.0, and
  93668.       may be left dangling by other programs written with the same version
  93669.       of compiled BASIC
  93670. SeeAlso: INT 80"BASIC",INT 82"BASIC"
  93671. --------N-81---------------------------------
  93672. INT 81 - IBM TOKEN RING ADAPTER - ???
  93673. SeeAlso: INT 82"TOKEN RING",INT 91"TOKEN RING"
  93674. --------r-82---------------------------------
  93675. INT 82 - reserved for BASIC
  93676. SeeAlso: INT 81"BASIC",INT 83"BASIC"
  93677. --------N-82---------------------------------
  93678. INT 82 - IBM TOKEN RING ADAPTER - ???
  93679.     AH = function
  93680.         00h display message???
  93681.         DS:BX -> string
  93682.     ???
  93683. Return: ???
  93684. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  93685. --------r-83---------------------------------
  93686. INT 83 - reserved for BASIC
  93687. SeeAlso: INT 82"BASIC",INT 84"BASIC"
  93688. --------r-84---------------------------------
  93689. INT 84 - reserved for BASIC
  93690. SeeAlso: INT 83"BASIC",INT 85"BASIC"
  93691. --------r-85---------------------------------
  93692. INT 85 - reserved for BASIC
  93693. Note:    INT 80 through INT ED are modified but not restored by Direct Access
  93694.       v4.0, and may be left dangling by other programs written with the
  93695.       same version of compiled BASIC
  93696. SeeAlso: INT 84"BASIC",INT 86"BASIC"
  93697. --------N-86---------------------------------
  93698. INT 86 - NetBIOS - ORIGINAL INT 18
  93699. Note:    some implementations of NetBIOS reportedly relocate INT 18 here
  93700. SeeAlso: INT 18
  93701. --------r-86---------------------------------
  93702. INT 86 - IBM ROM BASIC - used while in interpreter
  93703. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93704.     BASIC.COM/BASICA.COM do not restore vector on termination
  93705. SeeAlso: INT 85"BASIC",INT 87"BASIC"
  93706. --------r-86---------------------------------
  93707. INT 86 - APL*PLUS/PC - Terminate APL session and return to DOS
  93708. SeeAlso: INT 21/AH=4Ch,INT 87"APL"
  93709. --------r-87---------------------------------
  93710. INT 87 - IBM ROM BASIC - used while in interpreter
  93711. Notes:    called by ROM BASIC
  93712.     BASIC.COM/BASICA.COM do not restore vector on termination
  93713. SeeAlso: INT 86"BASIC",INT 88"BASIC"
  93714. --------r-87---------------------------------
  93715. INT 87 - APL*PLUS/PC - ???
  93716. SeeAlso: INT 86"APL",INT 88/AL=00h
  93717. --------v-87---------------------------------
  93718. INT 87 - VIRUS - "ZeroHunt" - VIRAL CODE (NOT A VECTOR!)
  93719. Note:    the ZeroHunt virus copies its resident code down to 0000h:021Ch and
  93720.       following
  93721. SeeAlso: INT 8B"VIRUS"
  93722. --------r-88---------------------------------
  93723. INT 88 - IBM ROM BASIC - used while in interpreter
  93724. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93725.     BASIC.COM/BASICA.COM do not restore vector on termination
  93726. SeeAlso: INT 87"BASIC",INT 89"BASIC"
  93727. --------r-88--00-----------------------------
  93728. INT 88 - APL*PLUS/PC - CREATE OBJECT OF ARBITRARY RANK OR SHAPE
  93729.     AL = 00h
  93730.     BX = STPTR of the variable to be assigned
  93731.     ES:SI -> model of type, rank, and shape (see #2377)
  93732. Return: ES:DI -> first data byte of object
  93733.     DX:CX = number of elements in the object
  93734. SeeAlso: INT C8"APL"
  93735.  
  93736. Format of APL*PLUS/PC shape model:
  93737. Offset    Size    Description    (Table 2377)
  93738.  00h    BYTE    type
  93739.         01h character (2-byte dimension sizes)
  93740.         02h integer (2-byte dimension sizes)
  93741.         08h floating point (2-byte dimension sizes)
  93742.         11h character (4-byte dimension sizes)
  93743.         12h integer (4-byte dimension sizes)
  93744.         18h floating point (4-byte dimension sizes)
  93745.  01h    BYTE    rank
  93746.  02h    (D)WORD first dimension of shape
  93747.  N    (D)WORD second dimension of shape
  93748.     ...
  93749. --------r-88--01-----------------------------
  93750. INT 88 - APL*PLUS/PC - CREATE CHARACTER SCALAR/VECTOR/MATRIX <64K IN SIZE
  93751.     AL = 01h
  93752.     AH = rank
  93753.     BX = STPTR of the variable to be assigned
  93754.     CX = first dimension (if any)
  93755.     DX = second dimension (if any)
  93756. Return: ES:DI -> object
  93757.     CX = number of elements in the object
  93758. Note:    each dimension must be 32767 or smaller
  93759. SeeAlso: AL=02h,AL=08h,INT C8"APL"
  93760. --------r-88--02-----------------------------
  93761. INT 88 - APL*PLUS/PC - CREATE INTEGER SCALAR/VECTOR/MATRIX <64K IN SIZE
  93762.     AL = 02h
  93763.     AH = rank
  93764.     BX = STPTR of the variable to be assigned
  93765.     CX = first dimension (if any)
  93766.     DX = second dimension (if any)
  93767. Return: ES:DI -> object
  93768.     CX = number of elements in the object
  93769. Note:    each dimension must be 32767 or smaller
  93770. SeeAlso: AL=01h,AL=08h,INT C8"APL"
  93771. --------r-88--08-----------------------------
  93772. INT 88 - APL*PLUS/PC - CREATE FLOATING POINT SCALAR/VECTOR/MATRIX <64K IN SIZE
  93773.     AL = 08h
  93774.     AH = rank
  93775.     BX = STPTR of the variable to be assigned
  93776.     CX = first dimension (if any)
  93777.     DX = second dimension (if any)
  93778. Return: ES:DI -> object
  93779.     CX = number of elements in the object
  93780. Note:    each dimension must be 32767 or smaller
  93781. SeeAlso: AL=01h,AL=02h,INT C8"APL"
  93782. --------r-88--F5-----------------------------
  93783. INT 88 - APL*PLUS/PC - FORCE OBJECT INTO REAL WORKSPACE FROM VIRTUAL
  93784.     AL = F5h
  93785.     BX = STPTR of object
  93786. SeeAlso: INT C8"APL"
  93787. --------r-88--F6-----------------------------
  93788. INT 88 - APL*PLUS/PC - MAKE NAME IMMUNE FROM OUTSWAPPING
  93789.     AL = F6h
  93790.     BX = STPTR of object
  93791. SeeAlso: AL=F7h,AL=F8h,INT C8"APL"
  93792. --------r-88--F7-----------------------------
  93793. INT 88 - APL*PLUS/PC - MAKE NAME ELIGIBLE FOR OUTSWAPPING
  93794.     AL = F7h
  93795.     BX = STPTR of object
  93796. SeeAlso: AL=F6h,AL=F8h,INT C8"APL"
  93797. --------r-88--F8-----------------------------
  93798. INT 88 - APL*PLUS/PC - REPORT WHETHER NAME IS ELIGIBLE FOR OUTSWAPPING
  93799.     AL = F8h
  93800.     BX = STPTR of object
  93801. Return: BX = name's outswapping status
  93802.         0000h eligible
  93803.         0001h not eligible
  93804. SeeAlso: AL=F6h,AL=F7h,INT C8"APL"
  93805. --------r-88--F9-----------------------------
  93806. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  93807.     AL = F9h
  93808.     ES:SI -> name
  93809.     CX = length of name
  93810. Return: CF set if name ill-formed or already in use
  93811.         BX = STPTR if already in symbol table
  93812.     CF clear if name is available for use
  93813.         BX = 0000h
  93814. Note:    does not force the name into the workspace
  93815. SeeAlso: AL=FEh,AL=FFh,INT C8"APL"
  93816. --------r-88--FC-----------------------------
  93817. INT 88 - APL*PLUS/PC - DETERMINE IF MEMORY AVAIL WITHOUT GARBAGE COLLECTION
  93818.     AL = FCh
  93819.     BX = amount of memory needed (paragraphs)
  93820. Return: CF clear if memory available
  93821.     CF set if a workspace compaction is required
  93822. SeeAlso: AL=FDh,INT C8"APL"
  93823. --------r-88--FD-----------------------------
  93824. INT 88 - APL*PLUS/PC - PERFORM GARBAGE COLLECTION AND RETURN AVAILABLE MEMORY
  93825.     AL = FDh
  93826. Return: BX = number of paragraphs available in workspace
  93827. SeeAlso: AL=FCh,INT C8"APL"
  93828. --------r-88--FE-----------------------------
  93829. INT 88 - APL*PLUS/PC - CREATE NAME
  93830.     AL = FEh
  93831.     ES:SI -> name
  93832.     CX = length of name
  93833. Return: BX = STPTR of name
  93834.     DX = interpreter's data segment
  93835. SeeAlso: AL=F9h,AL=FFh,INT C8"APL"
  93836. --------r-88--FF-----------------------------
  93837. INT 88 - APL*PLUS/PC - DETERMINE NAME STATUS
  93838.     AL = FFh
  93839.     ES:SI -> name
  93840.     CX = length of name
  93841. Return: CF set if name ill-formed or already in use
  93842.         BX = STPTR if already in symbol table
  93843.     CF clear if name is available for use
  93844.         BX = 0000h
  93845. Note:    forces the name into the workspace and makes it immune from outswapping
  93846. SeeAlso: AL=F9h,AL=FEh,INT C8"APL"
  93847. --------r-89---------------------------------
  93848. INT 89 - IBM ROM BASIC - used while in interpreter
  93849. Notes:    called by ROM BASIC
  93850.     BASIC.COM/BASICA.COM do not restore vector on termination
  93851. SeeAlso: INT 88"BASIC",INT 8A"BASIC"
  93852. --------r-8A---------------------------------
  93853. INT 8A - IBM ROM BASIC - used while in interpreter
  93854. Notes:    called by ROM BASIC
  93855.     BASIC.COM/BASICA.COM do not restore vector on termination
  93856. SeeAlso: INT 89"BASIC",INT 8B"BASIC"
  93857. --------r-8A---------------------------------
  93858. INT 8A - APL*PLUS/PC - PRINT SCREEN
  93859. Note:    same as INT 05
  93860. SeeAlso: INT 05,INT 8C"APL",INT CA"APL"
  93861. --------r-8B---------------------------------
  93862. INT 8B - IBM ROM BASIC - used while in interpreter
  93863. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93864.     BASIC.COM/BASICA.COM do not restore vector on termination
  93865. SeeAlso: INT 8A"BASIC",INT 8C"BASIC"
  93866. --------r-8B---------------------------------
  93867. INT 8B - APL*PLUS/PC - BEEP
  93868. Note:    same as printing a ^G via INT 21/AH=02h
  93869. SeeAlso: INT 21/AH=02h,INT CB"APL"
  93870. --------v-8B---------------------------------
  93871. INT 8B - VIRUS - "ZeroHunt" - INSTALLATION CHECK (NOT A VECTOR!)
  93872. Note:    if the ZeroHunt virus is resident, this vector will contain either
  93873.       EE83h:019Bh (ZH-411) or EE83h:019Fh (ZH-415)
  93874. SeeAlso: INT 70"VIRUS",INT 87"VIRUS",INT 9C"VIRUS"
  93875. --------r-8C---------------------------------
  93876. INT 8C - IBM ROM BASIC - used while in interpreter
  93877. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93878.     BASIC.COM/BASICA.COM do not restore vector on termination
  93879. --------r-8C---------------------------------
  93880. INT 8C - APL*PLUS/PC - CLEAR SCREEN MEMORY
  93881.     AX = flag
  93882.         0000h do not save display attributes
  93883.         0001h save attributes
  93884. SeeAlso: INT CC"APL"
  93885. --------r-8D---------------------------------
  93886. INT 8D - IBM ROM BASIC - used while in interpreter
  93887. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93888.     BASIC.COM/BASICA.COM do not restore vector on termination
  93889. --------r-8E---------------------------------
  93890. INT 8E - IBM ROM BASIC - used while in interpreter
  93891. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93892.     BASIC.COM/BASICA.COM do not restore vector on termination
  93893. --------r-8F---------------------------------
  93894. INT 8F - IBM ROM BASIC - used while in interpreter
  93895. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93896.     BASIC.COM/BASICA.COM do not restore vector on termination
  93897. --------r-90---------------------------------
  93898. INT 90 - IBM ROM BASIC - used while in interpreter
  93899. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93900.     BASIC.COM/BASICA.COM do not restore vector on termination
  93901. --------r-90---------------------------------
  93902. INT 90 - APL*PLUS/PC - USED BY PORT 10 PRINTER DRIVER
  93903. --------r-91---------------------------------
  93904. INT 91 - IBM ROM BASIC - used while in interpreter
  93905. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93906.     BASIC.COM/BASICA.COM do not restore vector on termination
  93907. --------N-91---------------------------------
  93908. INT 91 - IBM TOKEN RING ADAPTER - ???
  93909. SeeAlso: INT 81"TOKEN RING",INT 82"TOKEN RING",INT 93"TOKEN RING"
  93910. --------r-92---------------------------------
  93911. INT 92 - IBM ROM BASIC - used while in interpreter
  93912. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  93913.     BASIC.COM/BASICA.COM do not restore vector on termination
  93914. --------N-92---------------------------------
  93915. INT 92 - Sangoma X.25 INTERFACE PROGRAM
  93916.     BX:DX -> control block
  93917. SeeAlso: INT 68"Sangoma"
  93918. --------e-92E1-------------------------------
  93919. INT 92 - Da Vinci eMail Dispatcher INTERFACE
  93920.     AH = E1h
  93921.     AL = function
  93922.     BX = stack count (number of words to push)
  93923.     CX:DX -> stack data (in word-reversed order ready to push)
  93924. Return: AX = status (see #2378)
  93925. Note:    preserves BP, DS, SI, DI; other registers may be destroyed
  93926.  
  93927. (Table 2378)
  93928. Values for Da Vinci eMail function status:
  93929.  0001h    success
  93930.  FF97h    "ERS_NOT_AVAILABLE"
  93931.  FF99h    "ERS_TOO_MANY_NAMES"
  93932.  FF9Ah    "ERS_BAD_NAME_PASSWORD"
  93933.  FFE3h    "ERS_NAME_NOT_FOUND"
  93934.  FFF8h    "ERS_USE_STRING" (call NetGetError to get error string)
  93935.  FFFFh    "ERS_NO_SUCH_FILE"
  93936. --------e-92E100-----------------------------
  93937. INT 92 - Da Vinci eMail Dispatcher - "NetInitStart"
  93938.     AX = E100h
  93939.     BX = size of parameter block in words (000Ah)
  93940.     CX:DX -> parameter block (see #2379)
  93941. Return: AX = 0001h success
  93942. Desc:    this function is used to initialize the dispatcher
  93943. SeeAlso: AX=E101h,AX=E103h
  93944.  
  93945. Format of Da Vinci eMail "NetInitStart" parameter block:
  93946. Offset    Size    Description    (Table 2379)
  93947.  00h    WORD    segment of ???
  93948.  02h    WORD    offset of ???
  93949.  04h    WORD    high part of long ???
  93950.  06h    WORD    low part of long ???
  93951.  08h    WORD    high part of long ???
  93952.  0Ah    WORD    low part of long ???
  93953.  0Ch    WORD    high part of long ???
  93954.  0Eh    WORD    low part of long ???
  93955.  10h    WORD    high part of long ???
  93956.  12h    WORD    low part of long ???
  93957. --------e-92E101BX0000-----------------------
  93958. INT 92 - Da Vinci eMail Dispatcher - "NetInitCheck"
  93959.     AX = E101h
  93960.     BX = 0000h
  93961.     CX:DX ignored
  93962. Return: AX = 0001h success
  93963. SeeAlso: AX=E100h,AX=E180h
  93964. --------e-92E102BX0000-----------------------
  93965. INT 92 - Da Vinci eMail Dispatcher - "NetCheckDriver"
  93966.     AX = E102h
  93967.     BX = 0000h
  93968.     CX:DX ignored
  93969. Return: AX = 0001h success
  93970. Desc:    this function is used to determine if the dispatcher is loaded
  93971. SeeAlso: AX=E10Bh,AX=E180h
  93972. --------e-92E103BX0000-----------------------
  93973. INT 92 - Da Vinci eMail Dispatcher - "NetTerminate"
  93974.     AX = E103h
  93975.     BX = 0000h
  93976.     CX:DX ignored
  93977. Return: AX = status (see #2378)
  93978. SeeAlso: AX=E100h
  93979. --------e-92E104-----------------------------
  93980. INT 92 - Da Vinci eMail Dispatcher - "NetWhereIs"
  93981.     AX = E104h
  93982.     BX = size of parameter block in words (0006h)
  93983.     CX:DX -> parameter block (see #2380)
  93984. Return: AX = status (see #2378)
  93985. Desc:    this function is used to verify node address for usernames
  93986. SeeAlso: AX=E180h
  93987.  
  93988. Format of Da Vinci eMail "NetWhereIs" parameter block:
  93989. Offset    Size    Description    (Table 2380)
  93990.  00h    WORD    segment of node address buffer
  93991.  02h    WORD    offset of node address buffer
  93992.  04h    WORD    segment of uppercase username
  93993.  06h    WORD    offset of uppercase username
  93994.  08h    WORD    segment of "DVSEMAIL"
  93995.  0Ah    WORD    offset of "DVSEMAIL"
  93996. --------e-92E105-----------------------------
  93997. INT 92 - Da Vinci eMail Dispatcher - "NetOpen"
  93998.     AX = E105h
  93999.     BX = size of parameter block in words (0007h)
  94000.     CX:DX -> parameter block (see #2381)
  94001. Return: AX = 0000h Error
  94002.     AX = handle
  94003. Desc:    this function is used to open a submission channel
  94004. SeeAlso: AX=E10Ah,AX=E106h,AX=E108h
  94005.  
  94006. Format of Da Vinci eMail "NetOpen" parameter block:
  94007. Offset    Size    Description    (Table 2381)
  94008.  00h    WORD    operation (1 = read, 2 = write)
  94009.  02h    WORD    segment of uppercase To: username
  94010.  04h    WORD    offset of uppercase To: username
  94011.  06h    WORD    segment of "DVSEMAIL"
  94012.  08h    WORD    offset of "DVSEMAIL"
  94013.  0Ah    WORD    segment of node address
  94014.  0Ch    WORD    offset of node address
  94015. --------e-92E106BX0004-----------------------
  94016. INT 92 - Da Vinci eMail Dispatcher - "NetRead"
  94017.     AX = E106h
  94018.     BX = 0004h
  94019.     CX:DX -> parameter block
  94020. Return: AX = 0001h
  94021. SeeAlso: AX=E108h
  94022. --------e-92E107BX0002-----------------------
  94023. INT 92 - Da Vinci eMail Dispatcher - "NetGetError"
  94024.     AX = E107h
  94025.     BX = 0002h
  94026.     CX:DX -> parameter block
  94027. Return: AX = 0001h
  94028. SeeAlso: AX=E109h,AX=E180h
  94029. --------e-92E108-----------------------------
  94030. INT 92 - Da Vinci eMail Dispatcher - "NetWrite"
  94031.     AX = E108h
  94032.     BX = size of parameter block in words (0004h)
  94033.     CX:DX -> parameter block (see #2382)
  94034. Return: AX = amount written
  94035. Desc:    This function is used to write transactions to the dispatcher.
  94036.       The command block is written first and then another call is used
  94037.       to write the associated data.
  94038. SeeAlso: AX=E106h
  94039.  
  94040. Format of Da Vinci eMail "NetWrite" parameter block:
  94041. Offset    Size    Description    (Table 2382)
  94042.  00h    WORD    buffer count (see #2384)
  94043.  02h    WORD    segment of command buffer (see #2383)
  94044.  04h    WORD    offset of command buffer
  94045.  06h    WORD    handle from NetOpen
  94046.  
  94047. Format of Da Vinci eMail command buffer:
  94048. Offset    Size    Description    (Table 2383)
  94049.  00h    BYTE    command
  94050.         21h '!' Protocol commands for remote control
  94051.         41h 'A' Authorization protocol element
  94052.         42h 'B' Return(back) routing information
  94053.             Associated data is the From: username
  94054.         43h 'C' Carbon Copy list
  94055.             Associated data is a comma delimitted list of usernames
  94056.         44h 'D' Distribution list
  94057.             Associated data is a comma delimitted list of usernames
  94058.         45h 'E' Mail end marker
  94059.             No associated data
  94060.         48h 'H' Mail message header
  94061.             Associated data is a message header buffer
  94062.         4Dh 'M' Mail message
  94063.             Associated data is the body of the message
  94064.         4Fh 'O' Object
  94065.         50h 'P' Paperclip attachment
  94066.         52h 'R' Routing information
  94067.             Associated data is the To: username
  94068.         53h 'S' Subject
  94069.             Associated data is the subject of the message
  94070.         54h 'T' Trail of Reply/Forwards
  94071.  01h    BYTE    subcommand
  94072.  02h    DWORD    length of associated data
  94073.  
  94074. Format of Da Vinci eMail message header buffer:
  94075. Offset    Size    Description    (Table 2384)
  94076.  00h 30 BYTEs    subject line
  94077.  1Eh 24 BYTEs    To
  94078.  36h 24 BYTEs    From
  94079.  4Eh    DWORD    Time
  94080.         BYTE    00h
  94081.         BYTE    hour
  94082.         BYTE    minute
  94083.         BYTE    second
  94084.  52h    DWORD    Date
  94085.         BYTE    00h
  94086.         BYTE    year
  94087.         BYTE    month
  94088.         BYTE    day
  94089.  56h    DWORD    serial number (00000000h)
  94090.  5Ah    WORD    mail types (see #2385)
  94091.  5Ch    WORD    special types (0)
  94092.  
  94093. Bitfields for Da Vinci eMail mail types:
  94094. Bit(s)    Description    (Table 2385)
  94095.  7    blind carbon copy
  94096.  6    carbon copy
  94097.  5    priority
  94098.  4    confidential
  94099.  3    certified
  94100.  2    bulk
  94101.  1-0    class (first, second, third, bulk)
  94102. --------e-92E109-----------------------------
  94103. INT 92 - Da Vinci eMail Dispatcher - "NetErrorFix" (UNUSED)
  94104.     AX = E109h
  94105.     BX = size of parameter block in words (0001h)
  94106.     CX:DX -> parameter block (see #2386)
  94107. Return: AX = FF97h (ERS_NOT_AVAILABLE)
  94108. SeeAlso: AX=E107h,AX=E180h
  94109.  
  94110. Format of Da Vinci eMail "NetErrorFix" parameter block:
  94111. Offset    Size    Description    (Table 2386)
  94112.  00h    WORD    ???
  94113. --------e-92E10A-----------------------------
  94114. INT 92 - Da Vinci eMail Dispatcher - "NetClose"
  94115.     AX = E10Ah
  94116.     BX = size of parameter block in words (0001h)
  94117.     CX:DX -> parameter block (see #2387)
  94118. Return: AX = 0001h
  94119. Desc:    this function is used to close a dispatcher handle
  94120. SeeAlso: AX=E105h
  94121.  
  94122. Format of Da Vinci eMail "NetClose" parameter block:
  94123. Offset    Size    Description    (Table 2387)
  94124.  00h    WORD    handle from NetOpen
  94125. --------e-92E10B-----------------------------
  94126. INT 92 - Da Vinci eMail Dispatcher - "NetCheckQueue"
  94127.     AX = E10Bh
  94128.     BX = size of parameter block in words (0004h)
  94129.     CX:DX -> parameter block (see #2388)
  94130. Return: AX = 0001h
  94131. SeeAlso: AX=E102h,AX=E10Ch
  94132.  
  94133. Format of Da Vinci eMail "NetCheckQueue" parameter block:
  94134. Offset    Size    Description    (Table 2388)
  94135.  00h    WORD    segment of 24-byte username buffer
  94136.  02h    WORD    offset of 24-byte username buffer
  94137.  04h    WORD    segment of 24-byte protocol buffer
  94138.  06h    WORD    offset of 24-byte protocol buffer
  94139. --------e-92E10C-----------------------------
  94140. INT 92 - Da Vinci eMail Dispatcher - "NetReadQueue"
  94141.     AX = E10Ch
  94142.     BX = size of parameter block in words (0002h)
  94143.     CX:DX -> parameter block (see #2389)
  94144. Return: AX = 0001h
  94145. SeeAlso: AX=E10Bh
  94146.  
  94147. Format of Da Vinci eMail "NetReadQueue" parameter block:
  94148. Offset    Size    Description    (Table 2389)
  94149.  00h    WORD    Segment of 128 byte node address buffer
  94150.  02h    WORD    Offset of 128 byte node address buffer
  94151. --------e-92E10D-----------------------------
  94152. INT 92 - Da Vinci eMail Dispatcher - "NetSubmitName"
  94153.     AX = E10Dh
  94154.     BX = size of parameter block in words (0006h)
  94155.     CX:DX -> parameter block (see #2390)
  94156. Return: AX = status (see #2378)
  94157. Desc:    this function is used to verify username/password
  94158. SeeAlso: AX=E10Eh
  94159.  
  94160. Format of Da Vinci eMail "NetSubmitName" parameter block:
  94161. Offset    Size    Description    (Table 2390)
  94162.  00h    WORD    segment of uppercase password string
  94163.  02h    WORD    offset of uppercase password string
  94164.  04h    WORD    segment of uppercase username string
  94165.  06h    WORD    offset of uppercase username string
  94166.  08h    WORD    segment of "DVSEMAIL"
  94167.  0Ah    WORD    offset of "DVSEMAIL"
  94168. --------e-92E10E-----------------------------
  94169. INT 92 - Da Vinci eMail Dispatcher - "NetRemoveName"
  94170.     AX = E10Eh
  94171.     BX = size of parameter block in words (0004h)
  94172.     CX:DX -> parameter block (see #2391)
  94173. Return: AX = 0001h
  94174. Desc:    this function is used to remove a username
  94175. SeeAlso: AX=E10Dh
  94176.  
  94177. Format of Da Vinci eMail "NetRemoveName" parameter block:
  94178. Offset    Type    Description    (Table 2391)
  94179.  00h    WORD    segment of uppercase username
  94180.  02h    WORD    offset of uppercase username
  94181.  04h    WORD    segment of "DVSEMAIL"
  94182.  06h    WORD    offset of "DVSEMAIL"
  94183. --------e-92E10FBX0000-----------------------
  94184. INT 92 - Da Vinci eMail Dispatcher - IS ANYONE THERE? QUERY
  94185.     AX = E10Fh
  94186.     BX = 0000h
  94187.     CX:DX ignored
  94188. Return: AX = 0001h
  94189. SeeAlso: AX=E180h
  94190. --------e-92E110-----------------------------
  94191. INT 92 - Da Vinci eMail Dispatcher - "NetGetAltRoute"
  94192.     AX = E110h
  94193.     BX = size of parameter block in words (0006h)
  94194.     CX:DX -> parameter block (see #2392)
  94195. Return: AX = 0001h
  94196. SeeAlso: AX=E111h,AX=E113h
  94197.  
  94198. Format of Da Vinci eMail "NetGetAltRoute" parameter block:
  94199. Offset    Size    Description    (Table 2392)
  94200.  00h  6 WORDs    ???
  94201. --------e-92E111-----------------------------
  94202. INT 92 - Da Vinci eMail Dispatcher - "NetDeleteAltRoutes"
  94203.     AX = E111h
  94204.     BX = size of parameter block in words (0004h)
  94205.     CX:DX -> parameter block (see #2393)
  94206. Return: AX = 0001h
  94207. SeeAlso: AX=E110h,AX=E113h
  94208.  
  94209. Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
  94210. Offset    Size    Description    (Table 2393)
  94211.  00h  4 WORDs    ???
  94212. --------e-92E112-----------------------------
  94213. INT 92 - Da Vinci eMail Dispatcher - "NetChangePassword"
  94214.     AX = E112h
  94215.     BX = size of parameter block in words (0008h)
  94216.     CX:DX -> parameter block (see #2394)
  94217. Return: AX = 0001h
  94218. SeeAlso: AX=E180h
  94219.  
  94220. Format of Da Vinci eMail "NetChangePassword" parameter block:
  94221. Offset    Size    Description    (Table 2394)
  94222.  00h  8 WORDs    ???
  94223. --------e-92E113-----------------------------
  94224. INT 92 - Da Vinci eMail Dispatcher - "NetSetAltRoute"
  94225.     AX = E113h
  94226.     BX = size of parameter block in words (0008h)
  94227.     CX:DX -> parameter block (see #2395)
  94228. Return: AX = 0001h
  94229. SeeAlso: AX=E110h,AX=E111h
  94230.  
  94231. Format of Da Vinci eMail "NetSetAltRoute" parameter block:
  94232. Offset    Size    Description    (Table 2395)
  94233.  00h  8 WORDs    ???
  94234. --------e-92E175-----------------------------
  94235. INT 92 - Da Vinci eMail Dispatcher - BECOME MICRO TSR
  94236.     AX = E175h
  94237. Return: AX = 0012h
  94238.     BX = PSP
  94239. SeeAlso: AX=E180h
  94240. --------e-92E180-----------------------------
  94241. INT 92 - Da Vinci eMail Dispatcher - INSTALLATION CHECK
  94242.     AX = E180h
  94243. Return: AX = 0012h if installed
  94244.     ES:DX -> '$'-terminated driver information string
  94245. SeeAlso: AX=E102h,AX=E105h,AX=E10Fh,AX=E175h
  94246. --------r-93---------------------------------
  94247. INT 93 - IBM ROM BASIC - used while in interpreter
  94248. Notes:    called by ROM BASIC
  94249.     BASIC.COM/BASICA.COM do not restore vector on termination
  94250. --------N-93---------------------------------
  94251. INT 93 - IBM TOKEN RING ADAPTER - ???
  94252. SeeAlso: INT 81"TOKEN RING",INT 91"TOKEN RING"
  94253. --------r-94---------------------------------
  94254. INT 94 - IBM ROM BASIC - used while in interpreter
  94255. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94256.     BASIC.COM/BASICA.COM do not restore vector on termination
  94257. --------s-94----SI0000-----------------------
  94258. INT 94 u - PCM driver - INITIALIZE SOUND
  94259.     SI = 0000h
  94260.     ES:BX -> parameters
  94261. Return: ???
  94262. Program: PCM.COM is a sound driver for Media Vision's Pro Audio Spectrum
  94263.       sound boards
  94264. Note:    the installation check consists of testing for the signature string
  94265.       "PCMDRIVER" immediately preceding the interrupt handler; the word
  94266.       preceding the signature gives the PCM driver's version
  94267. SeeAlso: SI=0001h,SI=0002h,SI=0003h,SI=0004h,SI=0005h,SI=000Ah
  94268. Index:    installation check;PCM driver|PCM.COM;installation check
  94269. Index:    PCM driver;installation check
  94270. --------s-94----SI0001-----------------------
  94271. INT 94 u - PCM driver - INITIALIZE PCM
  94272.     SI = 0001h
  94273.     ES:BX -> parameters
  94274. Return: ???
  94275. SeeAlso: SI=0000h,SI=0002h,SI=0003h,SI=000Ah
  94276. --------s-94----SI0002-----------------------
  94277. INT 94 u - PCM driver - INITIALIZE PCM INFO
  94278.     SI = 0002h
  94279.     ES:BX -> parameters (see #2396)
  94280. Return: ???
  94281. SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
  94282.  
  94283. Format of PCM driver function 0002h parameters:
  94284. Offset    Size    Description    (Table 2396)
  94285.  00h    DWORD    rate
  94286.  04h    WORD    channel number
  94287.  06h    WORD    "comp"
  94288.  08h    WORD    "dsize"
  94289. --------s-94----SI0003-----------------------
  94290. INT 94 u - PCM driver - INITIALIZE DMA BUFFER
  94291.     SI = 0003h
  94292.     ES:BX -> parameters (see #2397)
  94293. Return: ???
  94294. SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
  94295.  
  94296. Format of PCM driver function 0003h parameters:
  94297. Offset    Size    Description    (Table 2397)
  94298.  00h    DWORD    -> DMA buffer
  94299.  04h    WORD    size of DMA buffer
  94300.  06h    WORD    number of divisions
  94301. --------s-94----SI0004-----------------------
  94302. INT 94 u - PCM driver - INITIALIZE USER FUNCTION
  94303.     SI = 0004h
  94304.     ES:BX -> parameters (see #2398)
  94305. Return: ???
  94306. SeeAlso: SI=0000h,SI=0001h
  94307.  
  94308. Format of PCM driver function 0004h parameters:
  94309. Offset    Size    Description    (Table 2398)
  94310.  00h    DWORD    -> user function
  94311. --------s-94----SI0005-----------------------
  94312. INT 94 u - PCM driver - BEGIN AUDIO PLAY
  94313.     SI = 0005h
  94314. Return: ???
  94315. SeeAlso: SI=0000h,SI=0006h,SI=0007h,SI=0009h
  94316. --------s-94----SI0006-----------------------
  94317. INT 94 u - PCM driver - BEGIN AUDIO RECORD
  94318.     SI = 0006h
  94319. Return: ???
  94320. SeeAlso: SI=0005h,SI=0007h,SI=0009h
  94321. --------s-94----SI0007-----------------------
  94322. INT 94 u - PCM driver - PAUSE AUDIO PLAY/RECORD
  94323.     SI = 0007h
  94324. Return: ???
  94325. SeeAlso: SI=0005h,SI=0006h,SI=0008h
  94326. --------s-94----SI0008-----------------------
  94327. INT 94 u - PCM driver - RESUME AUDIO PLAY/RECORD
  94328.     SI = 0008h
  94329. Return: ???
  94330. SeeAlso: SI=0007h
  94331. --------s-94----SI0009-----------------------
  94332. INT 94 u - PCM driver - STOP AUDIO PLAY/RECORD
  94333.     SI = 0009h
  94334. Return: ???
  94335. SeeAlso: SI=0005h,SI=0006h,SI=0007h
  94336. --------s-94----SI000A-----------------------
  94337. INT 94 u - PCM driver - UNHOOK INTERRUPTS AND TURN OFF DMA
  94338.     SI = 000Ah
  94339. Return: ???
  94340. SeeAlso: SI=0000h,SI=0001h,SI=0003h
  94341. Index:    uninstall;PCM driver
  94342. --------s-94----SI000B-----------------------
  94343. INT 94 u - PCM driver - FIND VALID DMA BUFFER IN HUGE MEMORY BLOCK
  94344.     SI = 000Bh
  94345.     ES:BX -> parameters (see #2399)
  94346. Return: ???
  94347. SeeAlso: SI=0003h
  94348.  
  94349. Format of PCM driver functio 000Bh parameters:
  94350. Offset    Size    Description    (Table 2399)
  94351.  00h    DWORD    -> memory block to contain DMA buffer
  94352.  04h    WORD    desired size of DMA buffer
  94353. --------s-94----SI000D-----------------------
  94354. INT 94 u - Media Vision PCM.COM - GET STATUS
  94355.     SI = 000Dh
  94356. Return: AX = status (0000h = waiting) (see #2400)
  94357.  
  94358. Bitfields for PCM.COM status:
  94359. Bit(s)    Description    (Table 2400)
  94360.  0    playing
  94361.  1    recording
  94362.  2    SBplaying
  94363.  3    SBrecording
  94364.  14    SBpaused
  94365.  15    paused
  94366. --------s-94----SI8000-----------------------
  94367. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER ADDRESS
  94368.     SI = 8000h
  94369. Return: DX:AX -> DMA buffer
  94370. Program: PCM.COM is a superset of the standard PCM driver which provides
  94371.       additional functions for fine control of the driver
  94372. Note:    the installation check for the Media Vision PCM.COM "shark" functions
  94373.       consists of testing for the signature "PCM-SHARK" at offset 107h in
  94374.       the INT 94 handler's segment
  94375. SeeAlso: SI=8001h,SI=8004h
  94376. Index:    installation check;Media Vision PCM.COM|PCM.COM;installation check
  94377. Index:    Media Vision PCM.COM;"shark" functions
  94378. --------s-94----SI8001-----------------------
  94379. INT 94 u - Media Vision PCM.COM - GET INTERNAL DMA BUFFER SIZE AND DIVISIONS
  94380.     SI = 8001h
  94381. Return: AX = DMA buffer size
  94382.     DX = divisions
  94383. SeeAlso: SI=8000h
  94384. --------s-94----SI8002-----------------------
  94385. INT 94 u - Media Vision PCM.COM - CHECK BOARD ADDRESS
  94386.     SI = 8002h
  94387. Return: AX = status
  94388.         0000h if board not at specified I/O address
  94389.         other if board found
  94390. Note:    the I/O address is specified by ORing the base I/O port shifted left
  94391.       four bits into SI before calling INT 94
  94392. SeeAlso: SI=8000h
  94393. --------s-94----SI8004-----------------------
  94394. INT 94 u - Media Vision PCM.COM - GET INTERNAL NOTE BUFFER
  94395.     SI = 8004h
  94396. Return: AX = offset of note buffer (segment = segment of internal DMA buffer)
  94397.     DX = size of buffer in note structures
  94398. SeeAlso: SI=8000h
  94399. --------s-94----SI8005-----------------------
  94400. INT 94 u - Media Vision PCM.COM - SINGLE-STEP QUEUE
  94401.     SI = 8005h
  94402. Return: ???
  94403. --------s-94----SI8011-----------------------
  94404. INT 94 u - Media Vision PCM.COM - INITIALIZE
  94405.     SI = 8011h
  94406.     ES:BX -> "iobf91" structure
  94407. Return: ???
  94408. --------s-94----SI8012-----------------------
  94409. INT 94 u - Media Vision PCM.COM - LOAD SOUND FOR LATER PLAY THROUGH KEYBOARD
  94410.     SI = 8012h
  94411.     ES:BX -> "i94f92buf" structure
  94412. Return: ???
  94413. SeeAlso: SI=8013h,SI=8014h
  94414. --------s-94----SI8013-----------------------
  94415. INT 94 u - Media Vision PCM.COM - GET INTERNAL SOUND USAGE
  94416.     SI = 8013h
  94417. Return: AX = number of sounds used
  94418.     DX = maximum handles
  94419. --------s-94----SI8014-----------------------
  94420. INT 94 u - Media Vision PCM.COM - GET DATA FOR SPECIFIED SOUND
  94421.     SI = 8014h
  94422.     ES:BX -> "i94f92buf" structure to be filled in
  94423.         sound number field set to desired sound
  94424. Return: AX = status
  94425.         0000h successful
  94426.         FFFFh sound number out of range
  94427. SeeAlso: SI=8012h,SI=8013h
  94428. --------s-94----SI8015-----------------------
  94429. INT 94 u - Media Vision PCM.COM - GET/SET INTERNAL DMA BUFFER
  94430.     SI = 8015h
  94431.     ES:BX -> DMA info structure (see #2401)
  94432. Return: ???
  94433.  
  94434. Format of PCM.COM DMA info structure:
  94435. Offset    Size    Description    (Table 2401)
  94436.  00h    DWORD    -> DMA buffer (offset FFFFh = return current buffer info)
  94437.  04h    WORD    DMA buffer size
  94438.  06h    WORD    divisions
  94439. --------s-94----SI8016-----------------------
  94440. INT 94 u - Media Vision PCM.COM - SIMULATE DOUBLE-SHIFT HOTKEY
  94441.     SI = 8016h
  94442.     AX = hotkey number (01h-08h)
  94443. Return: ???
  94444. SeeAlso: AL=02h/SI=8017h
  94445. --------s-94--01SI8017-----------------------
  94446. INT 94 u - Media Vision PCM.COM - CTRL-G INTERCEPT
  94447.     AL = 01h
  94448.     SI = 8017h
  94449.     AH = new state (00h off, 01h on)
  94450. Return: ???
  94451. SeeAlso: AL=02h/SI=8017h
  94452. --------s-94--02SI8017-----------------------
  94453. INT 94 u - Media Vision PCM.COM - DOUBLE-SHIFT-HOTKEY SOUND FEATURE
  94454.     AL = 02h
  94455.     SI = 8017h
  94456.     AH = new state (00h off, 01h on)
  94457. Return: ???
  94458. --------s-94--04SI8017-----------------------
  94459. INT 94 u - Media Vision PCM.COM - RANDOM SOUND FEATURE
  94460.     AL = 04h
  94461.     SI = 8017h
  94462.     AH = new state
  94463.         00h off
  94464.         01h on
  94465.         CX = minimum delay
  94466.         DX = maximum delay
  94467. Return: ???
  94468. --------s-94--08SI8017-----------------------
  94469. INT 94 u - Media Vision PCM.COM - NO ACTIVITY FEATURE
  94470.     AL = 08h
  94471.     SI = 8017h
  94472.     AH = new state
  94473.         00h off
  94474.         01h on
  94475.         DX:CX = delay
  94476. Return: ???
  94477. SeeAlso: AL=10h/SI=8017h
  94478. --------s-94--10SI8017-----------------------
  94479. INT 94 u - Media Vision PCM.COM - TIMER CONTROL
  94480.     AL = 10h
  94481.     SI = 8017h
  94482.     AH bit 7: set timer
  94483.     AH bit 6: timer active (timer turned off if clear)
  94484.     AH bits 5-0: timer number
  94485.     DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
  94486. Return: ???
  94487. SeeAlso: AL=08h/SI=8017h
  94488. --------s-94----SI8018-----------------------
  94489. INT 94 u - Media Vision PCM.COM - GET INFO
  94490.     SI = 8018h
  94491.     AL = what to get
  94492.         00h "F92state"
  94493.         01h "F92bkgd"
  94494.         02h "I10timer"
  94495.         03h "I08state"
  94496. Return: DX:AX -> desired information
  94497. --------r-95---------------------------------
  94498. INT 95 - IBM ROM BASIC - used while in interpreter
  94499. Notes:    called by ROM BASIC
  94500.     BASIC.COM/BASICA.COM do not restore vector on termination
  94501. --------r-95---------------------------------
  94502. INT 95 - APL*PLUS/PC - DETERMINE R= SPACE
  94503. Note:    use only when the R= option is invoked on entering APL
  94504. --------r-96---------------------------------
  94505. INT 96 - IBM ROM BASIC - used while in interpreter
  94506. Notes:    called by ROM BASIC
  94507.     BASIC.COM/BASICA.COM do not restore vector on termination
  94508. --------r-97---------------------------------
  94509. INT 97 - IBM ROM BASIC - used while in interpreter
  94510. Notes:    called by ROM BASIC
  94511.     BASIC.COM/BASICA.COM do not restore vector on termination
  94512. --------r-98---------------------------------
  94513. INT 98 - IBM ROM BASIC - used while in interpreter
  94514. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94515.     BASIC.COM/BASICA.COM do not restore vector on termination
  94516. --------r-99---------------------------------
  94517. INT 99 - IBM ROM BASIC - used while in interpreter
  94518. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94519.     BASIC.COM/BASICA.COM do not restore vector on termination
  94520. --------r-9A---------------------------------
  94521. INT 9A - IBM ROM BASIC - used while in interpreter
  94522. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94523.     BASIC.COM/BASICA.COM do not restore vector on termination
  94524. SeeAlso: INT 80"BASIC",INT 99,INT 9B
  94525. --------r-9B---------------------------------
  94526. INT 9B - IBM ROM BASIC - used while in interpreter
  94527. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94528.     BASIC.COM/BASICA.COM do not restore vector on termination
  94529. SeeAlso: INT 80"BASIC",INT 9A,INT 9C"BASIC"
  94530. --------r-9C---------------------------------
  94531. INT 9C - IBM ROM BASIC - used while in interpreter
  94532. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94533.     BASIC.COM/BASICA.COM do not restore vector on termination
  94534. SeeAlso: INT 80"BASIC",INT 9B,INT 9D"BASIC"
  94535. --------v-9C---------------------------------
  94536. INT 9C - VIRUS - "INT13" - ORIGINAL INT 13h VECTOR
  94537. SeeAlso: INT 8B"VIRUS",INT 9D"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  94538. --------r-9D---------------------------------
  94539. INT 9D - IBM ROM BASIC - used while in interpreter
  94540. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94541.     BASIC.COM/BASICA.COM do not restore vector on termination
  94542. SeeAlso: INT 80"BASIC",INT 9C"BASIC",INT 9E"BASIC"
  94543. --------v-9D---------------------------------
  94544. INT 9D - VIRUS - "INT13" - ROM INT 13h ENTRY POINT
  94545. Note:    this vector is used by the virus to store the result of a call to
  94546.       INT 2F/AH=13h
  94547. SeeAlso: INT 2F/AH=13h,INT 9C"VIRUS",INT 9E"VIRUS",INT 9F"VIRUS"
  94548. --------r-9E---------------------------------
  94549. INT 9E - IBM ROM BASIC - used while in interpreter
  94550. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94551.     BASIC.COM/BASICA.COM do not restore vector on termination
  94552. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT 9F"BASIC"
  94553. --------v-9E---------------------------------
  94554. INT 9E - VIRUS - "INT13" - ORIGINAL INT 21h VECTOR
  94555. SeeAlso: INT 70"VIRUS",INT 9C"VIRUS",INT 9D"VIRUS",INT E0"VIRUS"
  94556. --------r-9F---------------------------------
  94557. INT 9F - IBM ROM BASIC - used while in interpreter
  94558. Notes:    called by ROM BASIC
  94559.     BASIC.COM/BASICA.COM do not restore vector on termination
  94560. SeeAlso: INT 80"BASIC",INT 9D"BASIC",INT A0"BASIC"
  94561. --------v-9F---------------------------------
  94562. INT 9F - VIRUS - "INT13" - STORAGE FOR USER INT 13h VECTOR
  94563. Note:    while it is infecting a file, the INT13 virus grabs INT 13 and uses
  94564.       this interrupt to store the existing INT 13 vector for later
  94565.       restoration
  94566. SeeAlso: INT 9C"VIRUS",INT 9D"VIRUS"
  94567. --------r-A0---------------------------------
  94568. INT A0 - IBM ROM BASIC - used while in interpreter
  94569. Notes:    called by ROM BASIC
  94570.     BASIC.COM/BASICA.COM do not restore vector on termination
  94571. SeeAlso: INT 80"BASIC",INT 9F"BASIC",INT A1"BASIC"
  94572. --------r-A0---------------------------------
  94573. INT A0 - APL*PLUS/PC - USED BY APL/GSS*CGI GRAPHICS INTERFACE
  94574. SeeAlso: INT 59
  94575. --------r-A1---------------------------------
  94576. INT A1 - IBM ROM BASIC - used while in interpreter
  94577. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94578.     BASIC.COM/BASICA.COM do not restore vector on termination
  94579. SeeAlso: INT 80"BASIC",INT A0"BASIC",INT A2"BASIC"
  94580. --------r-A2---------------------------------
  94581. INT A2 - IBM ROM BASIC - used while in interpreter
  94582. Notes:    called by ROM BASIC
  94583.     BASIC.COM/BASICA.COM do not restore vector on termination
  94584. SeeAlso: INT 80"BASIC",INT A1"BASIC",INT A3"BASIC"
  94585. --------r-A3---------------------------------
  94586. INT A3 - IBM ROM BASIC - used while in interpreter
  94587. Notes:    called by ROM BASIC
  94588.     BASIC.COM/BASICA.COM do not restore vector on termination
  94589. SeeAlso: INT 80"BASIC",INT A2"BASIC",INT A4"BASIC"
  94590. --------r-A4---------------------------------
  94591. INT A4 - IBM ROM BASIC - used while in interpreter
  94592. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94593.     BASIC.COM/BASICA.COM do not restore vector on termination
  94594. SeeAlso: INT 80"BASIC",INT A3"BASIC",INT A5"BASIC"
  94595. --------U-A4---------------------------------
  94596. INT A4 U - Right Hand Man - API
  94597.     AH = function number (v3.3 supports functions 00h-52h)
  94598. Return: CF set on error
  94599.     CF clear if successful
  94600. Program: Right Hand Man is a TSR desk-top utility originally by Red E Products
  94601.       which has evolved into Futurus Team
  94602. Note:    this interrupt is only hooked while popped up
  94603. SeeAlso: INT 2F/AX=A4E0h
  94604. --------r-A5---------------------------------
  94605. INT A5 - IBM ROM BASIC - used while in interpreter
  94606. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94607.     BASIC.COM/BASICA.COM do not restore vector on termination
  94608. SeeAlso: INT 80"BASIC",INT A4"BASIC",INT A6"BASIC"
  94609. --------r-A6---------------------------------
  94610. INT A6 - IBM ROM BASIC - used while in interpreter
  94611. Notes:    called by ROM BASIC
  94612.     BASIC.COM/BASICA.COM do not restore vector on termination
  94613. SeeAlso: INT 80"BASIC",INT A5"BASIC",INT A7"BASIC"
  94614. --------r-A7---------------------------------
  94615. INT A7 - IBM ROM BASIC - used while in interpreter
  94616. Notes:    called by ROM BASIC
  94617.     BASIC.COM/BASICA.COM do not restore vector on termination
  94618. --------r-A8---------------------------------
  94619. INT A8 - IBM ROM BASIC - used while in interpreter
  94620. Notes:    called by ROM BASIC
  94621.     BASIC.COM/BASICA.COM do not restore vector on termination
  94622. --------r-A9---------------------------------
  94623. INT A9 - IBM ROM BASIC - used while in interpreter
  94624. Notes:    called by ROM BASIC
  94625.     BASIC.COM/BASICA.COM do not restore vector on termination
  94626. --------r-AA---------------------------------
  94627. INT AA - IBM ROM BASIC - used while in interpreter
  94628. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94629.     BASIC.COM/BASICA.COM do not restore vector on termination
  94630. --------r-AB---------------------------------
  94631. INT AB - IBM ROM BASIC - used while in interpreter
  94632. Notes:    called by ROM BASIC
  94633.     BASIC.COM/BASICA.COM do not restore vector on termination
  94634. --------r-AC---------------------------------
  94635. INT AC - IBM ROM BASIC - used while in interpreter
  94636. Notes:    called by ROM BASIC
  94637.     BASIC.COM/BASICA.COM do not restore vector on termination
  94638. --------r-AD---------------------------------
  94639. INT AD - IBM ROM BASIC - used while in interpreter
  94640. Notes:    called by ROM BASIC
  94641.     BASIC.COM/BASICA.COM do not restore vector on termination
  94642. --------r-AE---------------------------------
  94643. INT AE - IBM ROM BASIC - used while in interpreter
  94644. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94645.     BASIC.COM/BASICA.COM do not restore vector on termination
  94646. --------r-AF---------------------------------
  94647. INT AF - IBM ROM BASIC - used while in interpreter
  94648. Notes:    called by ROM BASIC
  94649.     BASIC.COM/BASICA.COM do not restore vector on termination
  94650. --------r-B0---------------------------------
  94651. INT B0 - IBM ROM BASIC - used while in interpreter
  94652. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94653.     BASIC.COM/BASICA.COM do not restore vector on termination
  94654. --------r-B1---------------------------------
  94655. INT B1 - IBM ROM BASIC - used while in interpreter
  94656. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94657.     BASIC.COM/BASICA.COM do not restore vector on termination
  94658. --------r-B2---------------------------------
  94659. INT B2 - IBM ROM BASIC - used while in interpreter
  94660. Notes:    called by ROM BASIC
  94661.     BASIC.COM/BASICA.COM do not restore vector on termination
  94662. --------r-B3---------------------------------
  94663. INT B3 - IBM ROM BASIC - used while in interpreter
  94664. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94665.     BASIC.COM/BASICA.COM do not restore vector on termination
  94666. --------U-B370-------------------------------
  94667. INT B3 - ZIPKEY - GET VERSION
  94668.     AH = 70h
  94669. Return: AH = major version
  94670.     AL = minor version
  94671.     CL = number of states and territories in current database
  94672.     DH = year of current database - 1900
  94673.     DL = month of current database's file date
  94674. Program: ZIPKEY is a resident ZIPCODE database by Eric Isaacson
  94675. Note:    if installed, the string "ZIPKEY" is present at offset 75h in the
  94676.       interrupt handler's segment, and the byte at 7Bh contains the API
  94677.       version number (00h for v1.x, 01h for v2.0)
  94678. --------U-B371-------------------------------
  94679. INT B3 - ZIPKEY - CONVERT TWO-LETTER ABBREVIATION TO STATE CODE
  94680.     AH = 71h
  94681.     BX = abbreviation, in either case (first letter in BL)
  94682. Return: CF set on error
  94683.         AL = FFh
  94684.     CF clear if successful
  94685.         AL = ZIPKEY state code
  94686. SeeAlso: AH=72h
  94687. --------U-B372-------------------------------
  94688. INT B3 - ZIPKEY - CONVERT STATE CODE TO TWO-LETTER ABBREVIATION
  94689.     AH = 72h
  94690.     BL = ZIPKEY state code
  94691. Return: CF set on error
  94692.         AX destroyed
  94693.     CF clear if successful
  94694.         AX = abbreviation, in upper case
  94695. SeeAlso: AH=71h,AH=73h
  94696. --------U-B373-------------------------------
  94697. INT B3 - ZIPKEY - CONVERT STATE CODE TO STATE NAME
  94698.     AH = 73h
  94699.     BL = ZIPKEY state code
  94700.     ES:DI -> buffer for name
  94701. Return: CF set on error
  94702.         AX destroyed
  94703.     CF clear if successful
  94704.         ES:DI points one byte beyond end of name
  94705. SeeAlso: AH=72h
  94706. --------U-B374-------------------------------
  94707. INT B3 - ZIPKEY - CONVERT ZIPCODE TO ASCII DIGITS
  94708.     AH = 74h
  94709.     DX = zipcode region (0-999)
  94710.     CH = last two digits of zipcode (0-99)
  94711.     ES:DI -> buffer
  94712. Return: CF set on error
  94713.         AX destroyed
  94714.     CF clear if successful
  94715.         ES:DI points one byte beyond end of digit string
  94716. --------U-B375-------------------------------
  94717. INT B3 - ZIPKEY - LOOK UP STATE CODE FOR ZIPCODE
  94718.     AH = 75h
  94719.     DX = zipcode region (0-999)
  94720.     CH = last two digits of zipcode (0-99)
  94721. Return: CF set on error (zipcode not found)
  94722.         AL = suggested state code, FFh if none
  94723.     CF clear if successful
  94724.         AL = ZIPKEY state code
  94725.         BX = area code (v2.0+)
  94726. SeeAlso: AH=76h,AH=79h
  94727. --------U-B376-------------------------------
  94728. INT B3 - ZIPKEY - LOOK UP CITY AND STATE FOR ZIPCODE
  94729.     AH = 76h
  94730.     DX = zipcode region (0-999)
  94731.     CH = last two digits of zipcode (0-99)
  94732.     ES:DI -> buffer for name
  94733. Return: CF set on error
  94734.         AL = suggested state code, FFh if none
  94735.         ES:DI buffer filled with suggested city name
  94736.     CF clear if successful
  94737.         AL = ZIPKEY state code
  94738.         BX = area code (v2.0+)
  94739.         ES:DI points one byte beyond end of name
  94740. SeeAlso: AH=75h,AH=78h,AH=7Eh
  94741. --------U-B377-------------------------------
  94742. INT B3 - ZIPKEY - PLAY BACK EXIT KEY FOR ENTRY WITH GIVEN ZIPCODE
  94743.     AH = 77h
  94744.     DX = zipcode region (0-999)
  94745.     CH = last two digits of zipcode (0-99)
  94746.     BX = 16-bit BIOS keycode for a defined ZIPKEY alternate exit key
  94747. Return: CF set on error
  94748.         AX destroyed
  94749.     CF clear if successful
  94750.         zipcode specification as defined by the BX keystroke is placed in
  94751.           keyboard buffer, as if the user had popped up ZIPKEY and exited
  94752.           by pressing the key specified by BX
  94753. --------U-B378-------------------------------
  94754. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN STATE AND CITY
  94755.     AH = 78h
  94756.     BL = ZIPKEY state code
  94757.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  94758. Return: BH = number of matching entries (set to 51 if more than 50)
  94759.     DX = zipcode region of first match (0-999)
  94760.     CL = last two digits of first zipcode in the range (0-99)
  94761.     CH = last two digits of last zipcode in the range (0-99)
  94762.     AX destroyed
  94763. SeeAlso: AH=79h,AH=7Ah
  94764. --------U-B379-------------------------------
  94765. INT B3 - ZIPKEY - LOOK UP ZIPCODES FOR A GIVEN CITY
  94766.     AH = 79h
  94767.     BL = ZIPKEY state code of first state to search
  94768.     DS:SI -> city name, terminated with 0Dh if complete name, 00h if prefix
  94769. Return: AL = ZIPKEY state code of first matching state
  94770.     BH = number of matching entries (set to 51 if more than 50)
  94771.     DX = zipcode region of first match (0-999)
  94772.     CL = last two digits of first zipcode in first range (0-99)
  94773.     CH = last two digits of last zipcode in first range (0-99)
  94774. Note:    to find all matching cities, repeat search with BL set to one more than
  94775.       the returned AL
  94776. SeeAlso: AH=78h,AH=7Ah
  94777. --------U-B37A-------------------------------
  94778. INT B3 - ZIPKEY - FETCH AN ENTRY FROM A PREVIOUS LOOKUP
  94779.     AH = 7Ah
  94780.     BL = case number (0 to one less than value returned in BH by lookup)
  94781. Return: AL = ZIPKEY state code
  94782.     DX = zipcode region (0-999)
  94783.     CL = last two digits of first zipcode in the range (0-99)
  94784.     CH = last two digits of last zipcode in the range (0-99)
  94785. SeeAlso: AH=78h,AH=79h
  94786. --------U-B37B-------------------------------
  94787. INT B3 - ZIPKEY - GET VALUES NEEDED TO SAVE ZIPKEY CONTEXT
  94788.     AH = 7Bh
  94789. Return: BL = maximum number of characters for a city name
  94790.     BH = ZIPKEY state code for last city-name search, or FFh if none
  94791.     CX:DX = internal code identifying last city search
  94792.     AX destroyed
  94793. SeeAlso: AH=7Ch
  94794. --------U-B37C-------------------------------
  94795. INT B3 - ZIPKEY - RESTORE ZIPKEY CONTEXT
  94796.     AH = 7Ch
  94797.     BL = maximum number of characters for a city name
  94798.     BH = ZIPKEY state code for last city-name search, or FFh if none
  94799.     CX:DX = internal code returned by AH=7Bh
  94800. Return: CF set on error
  94801.     CF clear if successful
  94802.     AX destroyed
  94803. SeeAlso: AH=7Bh
  94804. --------U-B37D-------------------------------
  94805. INT B3 - ZIPKEY - REQUEST POP UP
  94806.     AH = 7Dh
  94807.     BL = index number to simulate pressing a hotkey
  94808.         FFh for immediate popup with no playback on return
  94809. Return: CF set on error
  94810.         AL = error code
  94811.         FDh already busy with another request
  94812.         FEh illegal function
  94813.     CF clear if successful
  94814.         AX destroyed
  94815.         window popped up and was closed by the user
  94816. SeeAlso: AH=70h
  94817. --------U-B37E-------------------------------
  94818. INT B3 - ZIPKEY - GET NAME OF PRIMARY CITY FOR A ZIPCODE REGION
  94819.     AH = 7Eh
  94820.     DX = zipcode region (0-999)
  94821.     ES:DI -> buffer for name
  94822. Return: CF set on error
  94823.         AL = FFh region does not exist
  94824.     CF clear if successful
  94825.         AL = ZIPKEY state code
  94826.         ES:DI points one byte beyond end of name
  94827. SeeAlso: AH=76h
  94828. --------U-B37F-------------------------------
  94829. INT B3 - ZIPKEY - ENABLE/DISABLE HOTKEYS
  94830.     AH = 7Fh
  94831.     BL = function
  94832.         00h turn off hotkeys
  94833.         01h turn on hotkeys
  94834.         02h return hotkey status
  94835.         03h toggle hotkey status
  94836. Return: AL = hotkey status
  94837.         00h off
  94838.         01h on
  94839. --------U-B380-------------------------------
  94840. INT B3 - ZIPKEY v2.0+ - DETERMINE STATE FOR AREA CODE
  94841.     AH = 80h
  94842.     BX = telephone area code (decimal)
  94843. Return: CF clear if successful
  94844.         AL = ZIPKEY state code
  94845.         DX = first ZIP region for state (03E8h if Canada)
  94846.         CX = number of ZIP regions in state
  94847.     CF set on error
  94848.         AL = FFh
  94849.         DX = 03E9h
  94850. --------r-B4---------------------------------
  94851. INT B4 - IBM ROM BASIC - used while in interpreter
  94852. Notes:    called by ROM BASIC
  94853.     BASIC.COM/BASICA.COM do not restore vector on termination
  94854. --------r-B4---------------------------------
  94855. INT B4 - StackMan - REQUEST NEW STACK
  94856. Return: SS:SP -> new stack
  94857. Program: StackMan is a freeware stack manager by Franz Veldman of ESaSS B.V.
  94858.       which functions as a replacement for the DOS STACK= command as well
  94859.       as permitting multiple TSRs to share a pool of stack space
  94860. Note:    the installation check consists of testing for the string "STACKXXX" at
  94861.       offset 0Ah from the interrupt handler
  94862. SeeAlso: INT 2F/AX=C9FFh,INT B5"STACKMAN"
  94863. Index:    installation check;STACKMAN
  94864. --------r-B5---------------------------------
  94865. INT B5 - IBM ROM BASIC - used while in interpreter
  94866. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94867.     BASIC.COM/BASICA.COM do not restore vector on termination
  94868. SeeAlso: INT 80"BASIC",INT B4"BASIC",INT B6"BASIC"
  94869. --------r-B5---------------------------------
  94870. INT B5 - StackMan - RESTORE ORIGINAL STACK
  94871.     SS:SP -> stack returned by INT B4
  94872. Return: SS:SP restored to value before INT B4
  94873. SeeAlso: INT 2F/AX=C9FFh,INT B4"StackMan"
  94874. --------m-B5---------------------------------
  94875. INT B5 U - Netroom NETSWAP4 - ???
  94876.     ???
  94877. Return: ???
  94878. SeeAlso: INT 31/AH=57h
  94879. --------r-B6---------------------------------
  94880. INT B6 - IBM ROM BASIC - used while in interpreter
  94881. Notes:    called by ROM BASIC
  94882.     BASIC.COM/BASICA.COM do not restore vector on termination
  94883. SeeAlso: INT 80"BASIC",INT B5"BASIC",INT B7"BASIC"
  94884. --------y-B6---------------------------------
  94885. INT B6 - (NOT A VECTOR!) - USED BY TBFENCE
  94886. Program: TBFence is a security program by ESaSS B.V. which transparently
  94887.       encrypts floppies and optionally allows only encrypted diskettes to
  94888.       be accessed
  94889. Note:    the low word of this vector (0000h:02D8h) contains the segment of the
  94890.       TBFence INT 13h code, which starts with the signature word E487h;
  94891.       this forms the installation check
  94892.     the highest byte of this vector contains the start of a FAR JMP
  94893.       instruction to ???
  94894. SeeAlso: INT B7"TBFENCE"
  94895. Index:    installation check;TBFence
  94896. --------r-B7---------------------------------
  94897. INT B7 - IBM ROM BASIC - used while in interpreter
  94898. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94899.     BASIC.COM/BASICA.COM do not restore vector on termination
  94900. SeeAlso: INT 80"BASIC",INT B6"BASIC",INT B8"BASIC"
  94901. --------y-B7---------------------------------
  94902. INT B7 - TBFENCE - ???
  94903. SeeAlso: INT B6"TBFENCE"
  94904. --------r-B8---------------------------------
  94905. INT B8 - IBM ROM BASIC - used while in interpreter
  94906. Notes:    called by ROM BASIC
  94907.     BASIC.COM/BASICA.COM do not restore vector on termination
  94908. SeeAlso: INT 80"BASIC",INT B7"BASIC",INT B9"BASIC"
  94909. --------r-B9---------------------------------
  94910. INT B9 - IBM ROM BASIC - used while in interpreter
  94911. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94912.     BASIC.COM/BASICA.COM do not restore vector on termination
  94913. --------r-BA---------------------------------
  94914. INT BA - IBM ROM BASIC - used while in interpreter
  94915. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94916.     BASIC.COM/BASICA.COM do not restore vector on termination
  94917. --------r-BB---------------------------------
  94918. INT BB - IBM ROM BASIC - used while in interpreter
  94919. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94920.     BASIC.COM/BASICA.COM do not restore vector on termination
  94921. --------r-BC---------------------------------
  94922. INT BC - IBM ROM BASIC - used while in interpreter
  94923. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94924.     BASIC.COM/BASICA.COM do not restore vector on termination
  94925. --------r-BD---------------------------------
  94926. INT BD - IBM ROM BASIC - used while in interpreter
  94927. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94928.     BASIC.COM/BASICA.COM do not restore vector on termination
  94929. --------r-BE---------------------------------
  94930. INT BE - IBM ROM BASIC - used while in interpreter
  94931. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94932.     BASIC.COM/BASICA.COM do not restore vector on termination
  94933. SeeAlso: INT 80"BASIC",INT BD"BASIC",INT BF"BASIC"
  94934. --------Q-BE---------------------------------
  94935. INT BE - DESQview/X - ???
  94936. Note:    points at an IRET
  94937. SeeAlso: INT 15/AX=BFDEh/BX=0006h,INT 63"DESQview"
  94938. --------r-BF---------------------------------
  94939. INT BF - IBM ROM BASIC - used while in interpreter
  94940. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94941.     BASIC.COM/BASICA.COM do not restore vector on termination
  94942. SeeAlso: INT 80"BASIC",INT BE"BASIC",INT C0"BASIC"
  94943. --------r-C0---------------------------------
  94944. INT C0 - IBM ROM BASIC - used while in interpreter
  94945. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94946.     BASIC.COM/BASICA.COM do not restore vector on termination
  94947. SeeAlso: INT 80"BASIC",INT BF"BASIC",INT C1"BASIC"
  94948. --------d-C0---------------------------------
  94949. INT C0 - AMI BIOS - DRIVE 0 DATA
  94950. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  94951.       of the hard disk parameter table
  94952. SeeAlso: INT 41,INT 60"Adaptec",INT C1"AMI",INT C2"AMI",INT C3"AMI",INT C4"AMI"
  94953. --------r-C1---------------------------------
  94954. INT C1 - IBM ROM BASIC - used while in interpreter
  94955. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94956.     BASIC.COM/BASICA.COM do not restore vector on termination
  94957. SeeAlso: INT 80"BASIC",INT C0"BASIC",INT C2"BASIC"
  94958. --------d-C1---------------------------------
  94959. INT C1 - AMI BIOS - DRIVE 0 DATA
  94960. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  94961.       of the hard disk parameter table
  94962. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C2"AMI",INT C3"AMI"
  94963. --------r-C2---------------------------------
  94964. INT C2 - IBM ROM BASIC - used while in interpreter
  94965. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94966.     BASIC.COM/BASICA.COM do not restore vector on termination
  94967. SeeAlso: INT 80"BASIC",INT C1"BASIC",INT C3"BASIC"
  94968. --------d-C2---------------------------------
  94969. INT C2 - AMI BIOS - DRIVE 0 DATA
  94970. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  94971.       of the hard disk parameter table
  94972. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C3"AMI"
  94973. --------r-C3---------------------------------
  94974. INT C3 - IBM ROM BASIC - used while in interpreter
  94975. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94976.     BASIC.COM/BASICA.COM do not restore vector on termination
  94977. SeeAlso: INT 80"BASIC",INT C2"BASIC",INT C4"BASIC"
  94978. --------d-C3---------------------------------
  94979. INT C3 - AMI BIOS - DRIVE 0 DATA
  94980. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  94981.       of the hard disk parameter table
  94982. SeeAlso: INT 41,INT 60"Adaptec",INT C0"AMI",INT C1"AMI",INT C2"AMI"
  94983. --------r-C4---------------------------------
  94984. INT C4 - IBM ROM BASIC - used while in interpreter
  94985. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  94986.     BASIC.COM/BASICA.COM do not restore vector on termination
  94987. SeeAlso: INT 80"BASIC",INT C3"BASIC",INT C5"BASIC"
  94988. --------d-C4---------------------------------
  94989. INT C4 - AMI BIOS - DRIVE 1 DATA
  94990. Note:    this vector is used by some AMI BIOSes to store the first four bytes
  94991.       of the second hard disk's parameter table
  94992. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C5"AMI",INT C6"AMI",INT C7"AMI"
  94993. --------r-C5---------------------------------
  94994. INT C5 - IBM ROM BASIC - used while in interpreter
  94995. Notes:    called by ROM BASIC
  94996.     BASIC.COM/BASICA.COM do not restore vector on termination
  94997. SeeAlso: INT 80"BASIC",INT C4"BASIC",INT C6"BASIC"
  94998. --------d-C5---------------------------------
  94999. INT C5 - AMI BIOS - DRIVE 1 DATA
  95000. Note:    this vector is used by some AMI BIOSes to store the second four bytes
  95001.       of the second hard disk's parameter table
  95002. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C6"AMI",INT C7"AMI"
  95003. --------r-C6---------------------------------
  95004. INT C6 - IBM ROM BASIC - used while in interpreter
  95005. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95006.     BASIC.COM/BASICA.COM do not restore vector on termination
  95007. SeeAlso: INT 80"BASIC",INT C5"BASIC",INT C7"BASIC"
  95008. --------r-C6---------------------------------
  95009. INT C6 - APL*PLUS/PC - IDENTICAL TO INT 86
  95010. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95011.       the older interrupts
  95012. SeeAlso: INT 86"APL"
  95013. --------d-C6---------------------------------
  95014. INT C6 - AMI BIOS - DRIVE 1 DATA
  95015. Note:    this vector is used by some AMI BIOSes to store the third four bytes
  95016.       of the second hard disk's parameter table
  95017. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C7"AMI"
  95018. --------r-C7---------------------------------
  95019. INT C7 - IBM ROM BASIC - used while in interpreter
  95020. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95021.     BASIC.COM/BASICA.COM do not restore vector on termination
  95022. SeeAlso: INT 80"BASIC",INT C6"BASIC",INT C8"BASIC"
  95023. --------r-C7---------------------------------
  95024. INT C7 - APL*PLUS/PC - ???
  95025. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95026.       the older interrupts
  95027. SeeAlso: INT 87"APL"
  95028. --------d-C7---------------------------------
  95029. INT C7 - AMI BIOS - DRIVE 1 DATA
  95030. Note:    this vector is used by some AMI BIOSes to store the final four bytes
  95031.       of the second hard disk's parameter table
  95032. SeeAlso: INT 46,INT 64"Adaptec",INT C0"AMI",INT C4"AMI",INT C5"AMI",INT C6"AMI"
  95033. --------r-C8---------------------------------
  95034. INT C8 - IBM ROM BASIC - used while in interpreter
  95035. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95036.     BASIC.COM/BASICA.COM do not restore vector on termination
  95037. SeeAlso: INT 80"BASIC",INT C7"BASIC",INT C9"BASIC"
  95038. --------r-C8---------------------------------
  95039. INT C8 - APL*PLUS/PC - IDENTICAL TO INT 88
  95040. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95041.       the older interrupts
  95042. SeeAlso: INT 88"APL"
  95043. --------r-C9---------------------------------
  95044. INT C9 - IBM ROM BASIC - used while in interpreter
  95045. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95046.     BASIC.COM/BASICA.COM do not restore vector on termination
  95047. SeeAlso: INT 80"BASIC",INT C8"BASIC",INT CA"BASIC"
  95048. --------r-C9---------------------------------
  95049. INT C9 - APL*PLUS/PC - ???
  95050. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95051.       the older interrupts
  95052. SeeAlso: INT 89"APL"
  95053. --------r-CA---------------------------------
  95054. INT CA - IBM ROM BASIC - used while in interpreter
  95055. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95056.     BASIC.COM/BASICA.COM do not restore vector on termination
  95057. SeeAlso: INT 80"BASIC",INT C9"BASIC",INT CB"BASIC"
  95058. --------r-CA---------------------------------
  95059. INT CA - APL*PLUS/PC - PRINT SCREEN
  95060. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95061.       the older interrupts
  95062. SeeAlso: INT 8A"APL"
  95063. --------r-CB---------------------------------
  95064. INT CB - IBM ROM BASIC - used while in interpreter
  95065. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95066.     BASIC.COM/BASICA.COM do not restore vector on termination
  95067. SeeAlso: INT 80"BASIC",INT CA"BASIC",INT CC"BASIC"
  95068. --------r-CB---------------------------------
  95069. INT CB - APL*PLUS/PC - BEEP
  95070. Notes:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95071.       the older interrupts
  95072.     same as printing a ^G via INT 21/AH=02h
  95073. SeeAlso: INT 8B"APL"
  95074. --------r-CC---------------------------------
  95075. INT CC - IBM ROM BASIC - used while in interpreter
  95076. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95077.     BASIC.COM/BASICA.COM do not restore vector on termination
  95078. SeeAlso: INT 80"BASIC",INT CB"BASIC",INT CD"BASIC"
  95079. --------r-CC---------------------------------
  95080. INT CC - APL*PLUS/PC - CLEAR SCREEN MEMORY
  95081.     AX = flag
  95082.         0000h do not save display attributes
  95083.         0001h save attributes
  95084. Note:    STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
  95085.       the older interrupts
  95086. SeeAlso: INT 8C"APL"
  95087. --------r-CD---------------------------------
  95088. INT CD - IBM ROM BASIC - used while in interpreter
  95089. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95090.     BASIC.COM/BASICA.COM do not restore vector on termination
  95091. SeeAlso: INT 80"BASIC",INT CC"BASIC",INT CE"BASIC"
  95092. --------r-CD---------------------------------
  95093. INT CD - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95094. --------r-CE---------------------------------
  95095. INT CE - IBM ROM BASIC - used while in interpreter
  95096. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95097.     BASIC.COM/BASICA.COM do not restore vector on termination
  95098. SeeAlso: INT 80"BASIC",INT CD"BASIC",INT CF"BASIC"
  95099. --------r-CE---------------------------------
  95100. INT CE - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95101. --------r-CF---------------------------------
  95102. INT CF - IBM ROM BASIC - used while in interpreter
  95103. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95104.     BASIC.COM/BASICA.COM do not restore vector on termination
  95105. SeeAlso: INT 80"BASIC",INT CE"BASIC",INT D0"BASIC"
  95106. --------r-CF---------------------------------
  95107. INT CF - APL*PLUS/PC - DEFAULT LOW-RESOLUTION TIMER FOR QUAD MF FUNCTION
  95108. SeeAlso: INT E0"APL"
  95109. --------r-D0---------------------------------
  95110. INT D0 - IBM ROM BASIC - used while in interpreter
  95111. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95112.     BASIC.COM/BASICA.COM do not restore vector on termination
  95113. SeeAlso: INT 80"BASIC",INT CF"BASIC",INT D1"BASIC"
  95114. --------r-D0---------------------------------
  95115. INT D0 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95116. --------U-D0---------------------------------
  95117. INT D0 - [not a vector!] - NJFRERAM SIGNATURE VECTOR
  95118. Program: NJFRERAM is a resident free-memory display utility by Mike "Nifty
  95119.       James" Blaszczak
  95120. Note:    if NJFRERAM is installed, this vector points at the signature "NJ"
  95121. Index:    installation check;NJFRERAM
  95122. --------r-D1---------------------------------
  95123. INT D1 - IBM ROM BASIC - used while in interpreter
  95124. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95125.     BASIC.COM/BASICA.COM do not restore vector on termination
  95126. SeeAlso: INT 80"BASIC",INT D0"BASIC",INT D2"BASIC"
  95127. --------r-D1---------------------------------
  95128. INT D1 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95129. --------r-D2---------------------------------
  95130. INT D2 - IBM ROM BASIC - used while in interpreter
  95131. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95132.     BASIC.COM/BASICA.COM do not restore vector on termination
  95133. SeeAlso: INT 80"BASIC",INT D1"BASIC",INT D3"BASIC"
  95134. --------r-D2---------------------------------
  95135. INT D2 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95136. --------r-D3---------------------------------
  95137. INT D3 - IBM ROM BASIC - used while in interpreter
  95138. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95139.     BASIC.COM/BASICA.COM do not restore vector on termination
  95140. SeeAlso: INT 80"BASIC",INT D2"BASIC",INT D4"BASIC"
  95141. --------r-D3---------------------------------
  95142. INT D3 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95143. --------r-D4---------------------------------
  95144. INT D4 - IBM ROM BASIC - used while in interpreter
  95145. Notes:    called by ROM BASIC
  95146.     BASIC.COM/BASICA.COM do not restore vector on termination
  95147. SeeAlso: INT 80"BASIC",INT D3"BASIC",INT D5"BASIC"
  95148. --------r-D4---------------------------------
  95149. INT D4 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95150. --------O-D400-------------------------------
  95151. INT D4 O - PC-MOS/386 v5.01 - OBSOLETE FUNCTIONS
  95152.     AH = 00h and 01h
  95153. Return: nothing
  95154. Desc:    PC-MOS/386 v5.01 reports that these functions are no longer supported
  95155.       and enters an endless loop
  95156. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95157.       system by The Software Link, Inc.
  95158. --------O-D402-------------------------------
  95159. INT D4 - PC-MOS/386 v3.0+ - GET SYSTEM CONTROL BLOCK POINTER
  95160.     AH = 02h
  95161. Return: AX = 0000h
  95162.     ES:BX -> System Control Block in V86 mode (see #2402)
  95163.     ES:EBX -> System Control Block in native mode (see #2402)
  95164. Note:    superseded by AH=26h
  95165. SeeAlso: AH=04h,AH=10h,AH=26h,AH=28h,AH=29h,AH=2Ah,INT 21/AX=3000h,INT 38
  95166.  
  95167. Format of PC-MOS/386 System Control Block:
  95168. Offset    Size    Description    (Table 2402)
  95169.  00h    WORD    pointer to first TCB in chain
  95170.  02h 17 BYTEs    reserved
  95171.  13h    WORD    pointer to current task's TCB
  95172.  15h    WORD    pointer to TCB of visible (console) task
  95173. --------O-D403-------------------------------
  95174. INT D4 - PC-MOS/386 v5.01 - GET/SET EXTENDED DIRECTORY INFORMATION
  95175.     AH = 03h
  95176.     AL = subfunction (00h get, 01h set)
  95177.     DS:(E)DX -> pathname
  95178.     ES:(E)BX -> 10-byte buffer for directory information (see #2403)
  95179. Return: CF clear if successful
  95180.         AL = permitted access level for file (00h-03h)
  95181.         ES:(E)BX -> modified buffer (AL=01h on entry)
  95182.     CF set on error
  95183.         AX = error code (see #0811 at INT 21/AH=59h)
  95184. Notes:    BX/DX are used in V86 mode, EBX/EDX in native mode
  95185.     the file class cannot be changed for files because it affects the
  95186.       encryption method, but directories can have their classes changed
  95187.  
  95188. Format of PC-MOS/386 directory information:
  95189. Offset    Size    Description    (Table 2403)
  95190.  00h    BYTE    reserved (0)
  95191.  01h    BYTE    file class ('A'-'Z' or 00h)
  95192.  02h    DWORD    user ID of file creator
  95193.  06h    WORD    file creation time (see #0802 at INT 21/AX=5700h)
  95194.  08h    WORD    file creation date (see #0803 at INT 21/AX=5700h)
  95195. --------O-D404-------------------------------
  95196. INT D4 - PC-MOS/386 v3.0+ - GET TASK CONTROL BLOCK
  95197.     AH = 04h
  95198.     BX = task ID or FFFFh for calling task
  95199. Return: CF clear if successful
  95200.         ES = segment of Task Control Block (TCB) (see #2404)
  95201.     CF set on error
  95202.         AX = error code (see #0811 at INT 21/AH=59h)
  95203. Note:    superseded by AH=27h
  95204. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah,INT 38
  95205.  
  95206. Format of PC-MOS/386 Task Control Block:
  95207. Offset    Size    Description    (Table 2404)
  95208.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95209.  01h    BYTE    header block ID, "T" = TCB
  95210.  02h    WORD    length of block in paragraphs
  95211.  04h    WORD    segment address of next header block (0000h if last)
  95212.  06h    WORD    segment address of previous header block (0000h if first)
  95213.  08h    WORD    pointer to next TCB
  95214.  0Ah    WORD    pointer to previous TCB
  95215.  0Ch    WORD    pointer to associated TCB (if applicable)
  95216.  0Eh    WORD    reserved
  95217. ---TCB---
  95218.  10h    WORD    TCB task ID
  95219.  12h    WORD    native context save area
  95220.  14h    WORD    start address of task
  95221.  16h    WORD    end address of task
  95222.  18h    BYTE    task priority
  95223.  19h    BYTE    task time slice
  95224.  1Ah    BYTE    "TCBWAIT" run status of task
  95225.  1Bh    BYTE    "TCBSTAT" what the task is waiting for
  95226.  1Ch    DWORD    address of polling routine
  95227.  20h    BYTE    error code from last function call
  95228.  21h 11 BYTEs    name of currently executing task
  95229.  2Ch  4 BYTEs    ???
  95230.  30h    BYTE    keyboard disabled if bit 1 set
  95231.  31h    BYTE    current shift state and toggles
  95232.  32h  2 BYTEs    ???
  95233.  34h    BYTE    current video mode
  95234.  35h    BYTE    current video page
  95235.  36h    BYTE    number of text columns per screen
  95236.  37h    BYTE    number of text rows per screen
  95237.  38h    WORD    length of video buffer
  95238.  3Ah    WORD    video page length
  95239.  3Ch    WORD    apge start address in video RAM
  95240.  3Eh  4 WORDs    current cursor positions for four screen pages
  95241.  46h  8 BYTEs    ???
  95242.  4Eh    WORD    current cursor type
  95243.  50h    BYTE    current palette setting
  95244.  51h    BYTE    original video mode
  95245.  52h    BYTE    start CRT row (00h or 01h)
  95246.  53h    BYTE    video RAM in task active
  95247.  54h    WORD    handle of video save area
  95248.  56h    WORD    page count of video save area
  95249.  58h    WORD    segment address of video save area
  95250.  5Ah    WORD    poitner to first Task File Block (see #2407)
  95251.  5Ch    WORD    pointer to first Current Directory Block (see #2410)
  95252.  5Eh    WORD    pointer to active Current Directory Block (see #2410)
  95253.  60h    BYTE    number of drives
  95254.  61h    BYTE    current drive (0=A:, etc.)
  95255.  62h    DWORD    disk transfer address
  95256.  66h  4 BYTEs    ???
  95257.  6Ah    BYTE    verify flag (nonzero = on)
  95258.  6Bh    BYTE    break flag (nonzero = on)
  95259.  6Ch    WORD    share/lock retry count
  95260.  6Eh    WORD    ticks between share/lock retries
  95261.  70h    BYTE    remote printer flags (see #2405)
  95262.  71h    BYTE    ETX/ACK delay count
  95263.  72h    WORD    spooler segment address
  95264.  74h  2 BYTEs    ???
  95265.  76h  3 BYTEs    remote printer redirection for LPT1 through LPT3 (see #2406)
  95266.  79h  2 BYTEs    ???
  95267.  7Bh    DWORD    offset of username in TCB
  95268.  7Fh    BYTE    current output class
  95269.  80h  7 BYTEs    protection access rights, 2 bits per class (writeable!)
  95270.  87h 122 BYTEs    ???
  95271. 101h    BYTE    TCB sleep downcounter value
  95272. 102h 20 BYTEs    ???
  95273. 116h    BYTE    last scan code
  95274.     ...
  95275. 5D0h    DWORD    far pointer to Device Driver Terminal's entry point
  95276. 5D4h    WORD    offset of logical screen
  95277. 5D6h    WORD    segment of logical screen
  95278. 5D8h    WORD    cursor offset within page
  95279. 5DAh    BYTE    screen columns
  95280. 5DBh    WORD    async port number (0000h = none)
  95281. 5DDh    DWORD    physical baudrate
  95282. 5E1h 19 BYTEs    reserved for Device Driver Terminal (DDT)
  95283.     ...
  95284. 7A6h    DWORD    far pointer to unregister calling chain
  95285.  
  95286. Bitfields for PC-MOS/386 remote printer flags:
  95287. Bit(s)    Description    (Table 2405)
  95288.  0    LPT1 to terminal
  95289.  1    LPT2 to terminal
  95290.  2    LPT3 to terminal
  95291.  3    escape to printer pending
  95292.  4    use XON/XOFF
  95293.  5    use ETX/ACK
  95294.  6    waiting for ACK or XON
  95295.  7    transparent printing on
  95296.  
  95297. (Table 2406)
  95298. Values for PC-MOS/386 remote printer redirection:
  95299.  00h    not redirected
  95300.  01h    redirected to COM1
  95301.  ...
  95302.  18h    redirected to COM24
  95303.  51h    redirected to LPT1
  95304.  52h    redirected to LPT2
  95305.  53h    redirected to LPT3
  95306.  
  95307. Format of PC-MOS/386 Task File Block:
  95308. Offset    Size    Description    (Table 2407)
  95309.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95310.  01h    BYTE    header block ID, "F" = task file block
  95311.  02h    WORD    length of block in paragraphs
  95312.  04h    WORD    segment address of next header block (0000h if last)
  95313.  06h    WORD    segment address of previous header block (0000h if first)
  95314.  08h    WORD    pointer to next TCB
  95315.  0Ah    WORD    pointer to previous TCB
  95316.  0Ch    WORD    pointer to associated TCB (if applicable)
  95317.  0Eh    WORD    reserved
  95318. ---TFB---
  95319.  10h    WORD    segment address of next TFB
  95320.  12h    WORD    segment address of previous TFB
  95321.  14h    WORD    segment address of TFB's Global File Block (see #2409)
  95322.  16h    WORD    segment address of owner's PSP
  95323.  18h    WORD    file handle
  95324.  1Ah  3 BYTEs    ???
  95325.  1Dh    DWORD    file position
  95326.  21h  4 BYTEs    ???
  95327.  25h    BYTE    IOCTL flags (see #2408)
  95328.  26h  2 BYTEs    ???
  95329.  
  95330. Bitfields for PC-MOS/386 IOCTL flags:
  95331. Bit(s)    Description    (Table 2408)
  95332.  0    stdin
  95333.  1    stdout
  95334.  2    null device
  95335.  3    clock device
  95336.  4    reserved
  95337.  5    ASCII mode instead of binary
  95338.  6    EOF encountered on input
  95339.  7    device rather than file
  95340.  
  95341. Format of PC-MOS/386 Global File Block:
  95342. Offset    Size    Description    (Table 2409)
  95343.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95344.  01h    BYTE    header block ID, "G" = global file block
  95345.  02h    WORD    length of block in paragraphs
  95346.  04h    WORD    segment address of next header block (0000h if last)
  95347.  06h    WORD    segment address of previous header block (0000h if first)
  95348.  08h    WORD    pointer to next TCB
  95349.  0Ah    WORD    pointer to previous TCB
  95350.  0Ch    WORD    pointer to associated TCB (if applicable)
  95351.  0Eh    WORD    reserved
  95352. ---GFB---
  95353.  10h 10 BYTEs    ???
  95354.  1Ah    WORD    file attribute
  95355.  1Ch    BYTE    ???
  95356.  1Dh    DWORD    address of device driver
  95357.  21h    WORD    first cluster
  95358.  23h    WORD    time of last modification
  95359.  25h    WORD    date of last modification
  95360.  27h    DWORD    size of file in bytes
  95361.  2Bh 11 BYTEs    ???
  95362.  36h 11 BYTEs    device name or FCB-format filename
  95363.  41h    WORD    segment address of TFB list
  95364.  43h    WORD    segment address of first RLB (see #2412) (0000h = none)
  95365.  45h    BYTE    flag: nonzero if GFB refers to character device
  95366.  46h    WORD    address of Block Device Block (see #2411)
  95367.  48h    WORD    sector of file's directory entry
  95368.  4Ah    WORD    high word of file's directory entry
  95369.  4Ch    WORD    ofsset of directory entry within sector
  95370.  
  95371. Format of PC-MOS/386 Current Directory Block:
  95372. Offset    Size    Description    (Table 2410)
  95373.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95374.  01h    BYTE    header block ID, "C" = current directory block
  95375.  02h    WORD    length of block in paragraphs
  95376.  04h    WORD    segment address of next header block (0000h if last)
  95377.  06h    WORD    segment address of previous header block (0000h if first)
  95378.  08h    WORD    pointer to next TCB
  95379.  0Ah    WORD    pointer to previous TCB
  95380.  0Ch    WORD    pointer to associated TCB (if applicable)
  95381.  0Eh    WORD    reserved
  95382. ---CDB---
  95383.  10h    BYTE    drive number
  95384.  11h    BYTE    ???
  95385.  12h 64 BYTEs    directory name
  95386.  52h    WORD    first directory cluster (0000h = root)
  95387.  
  95388. Format of PC-MOS/386 Block Device Block:
  95389. Offset    Size    Description    (Table 2411)
  95390.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95391.  01h    BYTE    header block ID, "B" = block device block
  95392.  02h    WORD    length of block in paragraphs
  95393.  04h    WORD    segment address of next header block (0000h if last)
  95394.  06h    WORD    segment address of previous header block (0000h if first)
  95395.  08h    WORD    pointer to next TCB
  95396.  0Ah    WORD    pointer to previous TCB
  95397.  0Ch    WORD    pointer to associated TCB (if applicable)
  95398.  0Eh    WORD    reserved
  95399. ---BDB---
  95400.  10h    BYTE    logical drive
  95401.  11h    BYTE    unit passed to driver
  95402.  12h    WORD    sector size
  95403.  14h    BYTE    cluster mask
  95404.  15h    BYTE    cluster shift count
  95405.  16h    WORD    starting sector of first FAT
  95406.  18h    BYTE    number of FATs
  95407.  19h    WORD    number of root directories
  95408.  1Bh    WORD    sector number of first data sector (cluster 0002h)
  95409.  1Dh    WORD    number of clusters + 1 (number of highest data cluster)
  95410.  1Fh    BYTE    number of sectors in FAT
  95411.  20h    WORD    beginning root directory sector number
  95412.  22h    DWORD    device driver address
  95413.  26h    BYTE    media descriptor byte
  95414.  27h  5 BYTEs    ???
  95415.  2Ch    BYTE    flag: volume > 32MB
  95416.  2Dh    BYTE    ???
  95417.  2Eh    BYTE    number of sectors per cluster
  95418.  2Fh    WORD    number of clusters on device
  95419.  31h    WORD    number of free clusters (FFFFh = unknown)
  95420.  33h    WORD    root directory cluster number
  95421.  35h    WORD    pointer to alias/subst string
  95422.  37h    WORD    TCB segment address of owner (0000h = none)
  95423.  
  95424. Format of PC-MOS/386 Record Lock Block:
  95425. Offset    Size    Description    (Table 2412)
  95426.  00h    BYTE    signature byte "H" if allocated from system memory pool
  95427.  01h    BYTE    header block ID, "R" = record lock block
  95428.  02h    WORD    length of block in paragraphs
  95429.  04h    WORD    segment address of next header block (0000h if last)
  95430.  06h    WORD    segment address of previous header block (0000h if first)
  95431.  08h    WORD    pointer to next TCB
  95432.  0Ah    WORD    pointer to previous TCB
  95433.  0Ch    WORD    pointer to associated TCB (if applicable)
  95434.  0Eh    WORD    reserved
  95435. ---RLB---
  95436.  10h    WORD    segment address of owner's PSP
  95437.  12h    WORD    segment address of Global File Block (see #2409)
  95438.  14h    WORD    segment address of owner's Task File Block (see #2407)
  95439.  16h    DWORD    file offset of locked region start
  95440.  1Ah    DWORD    length of locked region
  95441.  1Eh    WORD    owner's handle for file
  95442. --------O-D407-------------------------------
  95443. INT D4 - PC-MOS/386 v3.0+ - WAIT FOR EVENT
  95444.     AH = 07h
  95445.     AL = events to monitor (see #2413)
  95446.     BX = number of timer ticks until timeout if AL bit 1 set
  95447.     CX = bitmap of IRQs to monitor if AL bit 2 set
  95448.         (bit 0 = IRQ0 .. bit 15 = IRQ15)
  95449.     DX = port to monitor if AL bit 3 set
  95450. Return: CF clear if successful
  95451.         AL = type of event which woke up task (see above)
  95452.         CX = IRQ (if any) which awakened task
  95453.         DX = port (if any) which awakened task
  95454.     CF set on error
  95455.         AX = error code (see #0811 at INT 21/AH=59h)
  95456. Note:    a device driver may make this call with AL=00h, which indicates that
  95457.       the driver is responsible for setting and clearing the TCBWAIT field
  95458.       in the TCB.  To put task to sleep, set TCBWAIT bits 2-0 to 001; to
  95459.       reawaken it, set bit 1 (leaving other bits unchanged)
  95460. SeeAlso: AH=04h,INT 16/AH=00h,INT 38
  95461.  
  95462. Bitfields for PC-MOS/386 events to monitor:
  95463. Bit(s)    Description    (Table 2413)
  95464.  0    keystroke
  95465.  1    timeout
  95466.  2    IRQ
  95467.  3    port access
  95468.  7    return status of user poll routine (other ignored if set)
  95469. --------O-D410-------------------------------
  95470. INT D4 - PC-MOS/386 v3.0+ - ENTER/LEAVE NATIVE 386 EXECUTION MODE
  95471.     AH = 10h
  95472.     AL = direction (00h return to V86 mode, 01h enter native mode)
  95473.     CX = length in bytes of Native Context Area ( >=1024 )
  95474.     DX = segment of Native Context Area
  95475. Return: CF clear if successful
  95476.         running in desired mode at instruction following INT D4 call
  95477.         all segment registers converted to appropriate selectors/segments
  95478.     CF set on error
  95479.         AX = error code (see #0811 at INT 21/AH=59h)
  95480. Note:    MS-DOS calls are available in protected mode
  95481. SeeAlso: AH=11h,AH=12h,AH=13h,INT 2F/AX=1687h,INT 67/AX=DE0Ch,INT 38
  95482. --------O-D411-------------------------------
  95483. INT D4 - PC-MOS/386 v3.0+ - ALLOCATE NATIVE MODE MEMORY BLOCK
  95484.     AH = 11h
  95485.     EBX = block length in bytes
  95486. Return: CF clear if successful
  95487.         EBX = number of bytes actually allocated
  95488.         ES = selector for allocated block
  95489.     CF set on error
  95490.         AX = error code (see #0811 at INT 21/AH=59h)
  95491. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95492.       system by The Software Link, Inc.
  95493. Note:    the memory must be released before the program terminates
  95494. SeeAlso: AH=10h,AH=12h,INT 38
  95495. --------O-D412-------------------------------
  95496. INT D4 - PC-MOS/386 v3.0+ - FREE NATIVE MODE MEMORY BLOCK
  95497.     AH = 12h
  95498.     ES = selector for block to free
  95499. Return: CF clear if successful
  95500.     CF set on error
  95501.         AX = error code (see #0811 at INT 21/AH=59h)
  95502. SeeAlso: AH=10h,AH=11h,AH=13h,INT 38
  95503. --------O-D413-------------------------------
  95504. INT D4 - PC-MOS/386 v5.01 - GET ALIAS FOR SELECTOR (NATIVE MODE ONLY)
  95505.     AH = 13h
  95506.     AL = type of alias selector (00h data, 01h stack, 02h code)
  95507.     BX = selector
  95508. Return: CF clear if successful
  95509.         AX = new selector or 0000h if BX selector not found
  95510.     CF set on error
  95511.         AX = error code (see #0811 at INT 21/AH=59h)
  95512. SeeAlso: AH=11h,AH=12h
  95513. --------O-D416-------------------------------
  95514. INT D4 - PC-MOS/386 v5.01 - SET/CLEAR IRQ RESERVATION
  95515.     AH = 16h
  95516.     AL = function (00h clear, 01h set reservation)
  95517.     CX = IRQ number
  95518. Return: AX = status
  95519.         (0000h successful, 0001h currently reserved by another task)
  95520. SeeAlso: AH=07h,INT 14/AH=11h"PC-MOS"
  95521. --------O-D419-------------------------------
  95522. INT D4 - PC-MOS/386 v5.01 - GET TASK ID
  95523.     AH = 19h
  95524. Return: BX = caller's task ID
  95525. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95526.       system by The Software Link, Inc.
  95527. SeeAlso: AH=1Dh,AH=1Eh
  95528. --------O-D41A-------------------------------
  95529. INT D4 - PC-MOS/386 v5.01 - GET/SET TASK PRIORITY
  95530.     AH = 1Ah
  95531.     AL = subfunction (00h read, 01h set, 02h get and set)
  95532.     BX = task ID (FFFFh for current task)
  95533.     CL = new priority value
  95534. Return: CF clear if successful
  95535.         CL = current priority value
  95536.     CF set on error
  95537.         AX = error code (see #0811 at INT 21/AH=59h)
  95538. SeeAlso: AH=1Bh,AH=1Ch
  95539. --------O-D41B-------------------------------
  95540. INT D4 - PC-MOS/386 v5.01 - GET/SET TIME SLICE
  95541.     AH = 1Bh
  95542.     AL = subfunction (00h read, 01h set, 02h get and set)
  95543.     BX = task ID (FFFFh for current task) (see AH=19h)
  95544.     CL = new time slice value
  95545. Return: CF clear if successful
  95546.         CL = current time slice value
  95547.     CF set on error
  95548.         AX = error code (see #0811 at INT 21/AH=59h)
  95549. SeeAlso: AH=1Ah,AH=1Ch
  95550. --------O-D41C-------------------------------
  95551. INT D4 - PC-MOS/386 v5.01 - GET/SET KEYBOARD MODE
  95552.     AH = 1Ch
  95553.     AL = subfunction (00h enable, 01h disable, 02h get mode)
  95554.     BX = task ID (FFFFh for current task)
  95555. Return: CF clear if successful
  95556.         CL = current keyboard state
  95557.     CF set on error
  95558.         AX = error code (INT 21/AH=59h)
  95559. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95560.       system by The Software Link, Inc.
  95561. SeeAlso: AH=1Ah,AH=1Bh
  95562. --------O-D41D-------------------------------
  95563. INT D4 - PC-MOS/386 v5.01 - GET CURRENT PROGRAM NAME
  95564.     AH = 1Dh
  95565.     BX = task ID (FFFFh for current task) (see AH=19h)
  95566.     ES:DI -> buffer for program name (see #2414)
  95567. Return: CF clear if successful
  95568.         ES:DI buffer filled
  95569.     CF set on error
  95570.         AX = error code (see #0811 at INT 21/AH=59h)
  95571. SeeAlso: AH=19h,AH=1Eh
  95572.  
  95573. Format of PC-MOS/386 program name buffer:
  95574. Offset    Size    Description    (Table 2414)
  95575.  00h  8 BYTEs    filename
  95576.  08h  3 BYTEs    extension
  95577. --------O-D41E-------------------------------
  95578. INT D4 - PC-MOS/386 v5.01 - GET CURRENT USERNAME AND SECURITY CLASS
  95579.     AH = 1Eh
  95580.     BX = task ID (FFFFh for current task)
  95581.     ES:DI -> 4-byte buffer for username
  95582. Return: CF clear if successful
  95583.         CL = security class
  95584.         20h (' ') none
  95585.         41h-5Ah ('A'-'Z') security level
  95586.         ES:DI buffer filled
  95587.     CF set on error
  95588.         AX = error code (see #0811 at INT 21/AH=59h)
  95589. SeeAlso: AH=19h,AH=1Dh
  95590. --------O-D41F-------------------------------
  95591. INT D4 - PC-MOS/386 v5.01 - GET TASK PARTITION INFORMATION
  95592.     AH = 1Fh
  95593.     BX = task ID (FFFFh for current task) (see AH=19h)
  95594. Return: CF clear if successful
  95595.         CX = start segment of task
  95596.         DX = ending segment of task
  95597.     CF set on error
  95598.         AX = error code (see #0811 at INT 21/AH=59h)
  95599. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95600.       system by The Software Link, Inc.
  95601. SeeAlso: AH=2Dh
  95602. --------O-D420-------------------------------
  95603. INT D4 - PC-MOS/386 v5.01 - GET PORT AND BAUDRATE INFORMATION
  95604.     AH = 20h
  95605.     BX = task ID (FFFFh for current task) (see AH=19h)
  95606. Return: CF clear if successful
  95607.         CX = port number (0000h if none)
  95608.         DI:SI = baudrate (if CX nonzero)
  95609.     CF set on error
  95610.         AX = error code (see #0811 at INT 21/AH=59h)
  95611. SeeAlso: INT 14/AH=0Ch"FOSSIL"
  95612. --------O-D421-------------------------------
  95613. INT D4 - PC-MOS/386 v5.01 - REMOVE A TASK
  95614.     AH = 21h
  95615.     BX = task ID (FFFFh for current task) (see AH=19h)
  95616. Return: CF clear if successful
  95617.         AX = ASCII percentage of System Memory Pool used
  95618.         (AH = tens digit, AL = ones digit)
  95619.         DS,SI destroyed
  95620.     CF set on error
  95621.         AX = error code (see #0811 at INT 21/AH=59h)
  95622. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95623.       system by The Software Link, Inc.
  95624. SeeAlso: AH=22h
  95625. --------O-D422-------------------------------
  95626. INT D4 - PC-MOS/386 v5.01 - ADD A TASK TO THE SYSTEM
  95627.     AH = 22h
  95628.     DS:SI -> addtask data structure (see #2416)
  95629. Return: CF clear if successful
  95630.         ES = segment address of the new task's TCB data structure
  95631.     CF set on error
  95632.         AX = error code (see #2415)
  95633. SeeAlso: AH=21h
  95634.  
  95635. (Table 2415)
  95636. Values for PC-MOS/386 error code:
  95637.  08h    insufficient memory
  95638.  0Bh    invalid addtask structure format
  95639.  12h    insufficient available space in system memory pool
  95640.  1Fh    general failure
  95641.  55h    already allocated
  95642.  57h    if task already in use or invalid parameter
  95643.  
  95644. Format of PC-MOS/386 addtask data structure:
  95645. Offset    Size    Description    (Table 2416)
  95646.  00h    WORD    task size in KB (min 16KB)
  95647.  02h    WORD    task ID (0000h for automatic selection)
  95648.  04h    BYTE    task class (' ' or 'A'-'Z')
  95649.  05h    DWORD    -> ASCIZ name of task startup batchfile
  95650.  09h    DWORD    -> task's terminal driver (0000000h = background task)
  95651.  0Dh    WORD    task port
  95652.  0Fh    DWORD    task baud rate
  95653.  13h    DWORD    (return) total extended memory
  95654.  17h    DWORD    (return) number of 4K extended memory pages allocated
  95655.  1Bh    WORD    (return) paragraphs of system memory pool allocated
  95656.  1Dh    WORD    (return) system memory pool size in paragraphs
  95657.  1Fh    WORD    (return) ASCII task percentage of system memory pool
  95658.  21h  3 BYTEs    reserved
  95659. --------O-D423-------------------------------
  95660. INT D4 - PC-MOS/386 v5.01 - CHANGE TERMINAL DRIVER
  95661.     AH = 23h
  95662.     BX = task ID (FFFFh for current task)
  95663.     DS:SI -> entry point of the new Device Driver Terminal
  95664. Return: CF clear if successful
  95665.     CF set on error
  95666.         AX = error code (see #0811 at INT 21/AH=59h)
  95667. --------O-D424-------------------------------
  95668. INT D4 U - PC-MOS/386 v5.01 - GET OPERATING SYSTEM SERIAL NUMBER
  95669.     AH = 24h
  95670. Return: DS:DX -> '$'-terminated string containing the serial number
  95671. --------O-D425-------------------------------
  95672. INT D4 - PC-MOS/386 v5.01 - IDENTIFY LOAD ADDRESS OF DEVICE DRIVER LOCATION
  95673.     AH = 25h
  95674.     DX = driver's CS value
  95675. Return: AX = segment address of driver in system memory pool
  95676.         (0000h if the driver is not within the system memory pool)
  95677. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95678.       system by The Software Link, Inc.
  95679. --------O-D426-------------------------------
  95680. INT D4 - PC-MOS/386 v5.01 - GET SYSTEM CONTROL BLOCK SEGMENT/SELECTOR
  95681.     AH = 26h
  95682. Return: DX = segment/selector of the System Control Block (see #2402)
  95683. Note:    this function supersedes AH=02h
  95684. SeeAlso: AH=02h,AH=27h,AH=28h,AH=29h,AH=2Ah
  95685. --------O-D427-------------------------------
  95686. INT D4 - PC-MOS/386 v5.01 - GET TASK CONTROL BLOCK SEGMENT/SELECTOR
  95687.     AH = 27h
  95688.     BX = task ID (FFFFh if current task) (see AH=19h)
  95689. Return: CF clear if successful
  95690.         DX = segment/selector for the Task Control Block (see #2404)
  95691.     CF set on error
  95692.         AX = error code (INT 21/AH=59h)
  95693. Note:    this function supersedes AH=04h
  95694. SeeAlso: AH=26h,AH=28h,AH=29h,AH=2Ah
  95695. --------O-D428-------------------------------
  95696. INT D4 - PC-MOS/386 v5.01 - GET CONTROL BLOCK DATA FROM SCB OR TCB
  95697.     AH = 28h
  95698.     BX = offset into control block at which to start reading
  95699.     CX = number of bytes to read
  95700.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  95701.     ES:DI -> buffer for data
  95702. Return: CF clear if successful
  95703.     CF set on error
  95704.         AX = error code (see also INT 21/AH=59h)
  95705.         05h access denied due to an invalid segment/selector
  95706. SeeAlso: AH=26h,AH=27h,AH=29h,AH=2Ah
  95707. --------O-D429-------------------------------
  95708. INT D4 - PC-MOS/386 v5.01 - WRITE CONTROL BLOCK DATA INTO SCB OR TCB
  95709.     AH = 29h
  95710.     BX = offset into control block at which to start writing
  95711.     CX = number of bytes to write
  95712.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  95713.     DS:SI -> buffer containing data to be written
  95714. Return: CF clear if successful
  95715.     CF set on errro
  95716.         AX = error code (see also INT 21/AH=59h)
  95717.         05h access denied due to an invalid segment/selector
  95718. Note:     this function performs no bounds checking
  95719. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95720.       system by The Software Link, Inc.
  95721. SeeAlso: AH=26h,AH=27h,AH=28h,AH=2Ah
  95722. --------O-D42A-------------------------------
  95723. INT D4 - PC-MOS/386 v5.01 - SWAP CONTROL BLOCK DATA OF SCB OR TCB
  95724.     AH = 2Ah
  95725.     BX = offset into control block at which to start swap
  95726.     CX = number of bytes to swap
  95727.     DX = segment/selector of control block obtained via AH=26h or AH=27h
  95728.     DS:SI -> buffer containing new data and to receive current data
  95729. Return: CF clear if successful
  95730.     CF set on error
  95731.         AX = error code (see also INT 21/AH=59h)
  95732.         05h access denied due to an invalid segment/selector
  95733. Note:    the interrupts are disabled during the swap to prevent corruption
  95734. SeeAlso: AH=26h,AH=27h,AH=28h,AH=29h
  95735. --------O-D42C-------------------------------
  95736. INT D4 - PC-MOS/386 v5.01 - GET/SET SPOOLER PARAMETERS
  95737.     AH = 2Ch
  95738.     AL = function
  95739.         00h set spooler timeout
  95740.         CX = timout value in seconds
  95741.         01h get spooler timeout
  95742.         Return: CX = current timeout in seconds
  95743.         02h get spooler parameters
  95744.         Return: CH = priority (00h-09h)
  95745.             CL = disposition (d, h, i, n, s)
  95746.             SI = class (a - z)
  95747.         03h set spooler parameters
  95748.         CH = priority (00h-09h)
  95749.         CL = disposition (d, h, i, n, s)
  95750.         SI = class (a - z)
  95751.         BX = task ID (FFFFh for current task)
  95752.         DX = LPT number
  95753. Return: CF clear if successful
  95754.     CF set on error
  95755.         AX = error code (see #0811 at INT 21/AH=59h)
  95756. SeeAlso: AH=00h,AH=02h,AH=03h
  95757. --------O-D42D-------------------------------
  95758. INT D4 - PC-MOS/386 v5.01 - GET MAXIMUM TASK SIZE
  95759.     AH = 2Dh
  95760. Return: DX = maximum task size in paragraphs
  95761.     BX = start address of task space
  95762. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  95763.       system by The Software Link, Inc.
  95764. SeeAlso: AH=1Fh,AH=22h
  95765. --------r-D5---------------------------------
  95766. INT D5 - IBM ROM BASIC - used while in interpreter
  95767. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95768.     BASIC.COM/BASICA.COM do not restore vector on termination
  95769. SeeAlso: INT 80"BASIC",INT D4"BASIC",INT D6"BASIC"
  95770. --------r-D5---------------------------------
  95771. INT D5 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95772. --------r-D6---------------------------------
  95773. INT D6 - IBM ROM BASIC - used while in interpreter
  95774. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95775.     BASIC.COM/BASICA.COM do not restore vector on termination
  95776. SeeAlso: INT 80"BASIC",INT D5"BASIC",INT D7"BASIC"
  95777. --------r-D6---------------------------------
  95778. INT D6 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95779. --------r-D7---------------------------------
  95780. INT D7 - IBM ROM BASIC - used while in interpreter
  95781. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95782.     BASIC.COM/BASICA.COM do not restore vector on termination
  95783. SeeAlso: INT 80"BASIC",INT D6"BASIC",INT D8"BASIC"
  95784. --------r-D7---------------------------------
  95785. INT D7 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95786. --------r-D8---------------------------------
  95787. INT D8 - IBM ROM BASIC - used while in interpreter
  95788. Notes:    called by ROM BASIC
  95789.     BASIC.COM/BASICA.COM do not restore vector on termination
  95790. SeeAlso: INT 80"BASIC",INT D7"BASIC",INT D9"BASIC"
  95791. --------r-D8---------------------------------
  95792. INT D8 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95793. --------H-D8---------------------------------
  95794. INT D8 - Screen Thief v1.00 - RELOCATED IRQ0
  95795. Range:    INT 78h to INT E0h, selected by commandline switch
  95796. Note:    Screen Thief relocates IRQs 0 through 7 to INT D8 to INT DF by default,
  95797.       but may be directed via a commandline switch to use any range
  95798.       starting at a multiple of 8 between 78h and E0h
  95799. SeeAlso: INT 08"IRQ0",INT 2D/AL=10h"Screen Thief",INT 50"DESQview"
  95800. SeeAlso: INT D9"Screen Thief"
  95801. --------r-D9---------------------------------
  95802. INT D9 - IBM ROM BASIC - used while in interpreter
  95803. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95804.     BASIC.COM/BASICA.COM do not restore vector on termination
  95805. SeeAlso: INT 80"BASIC",INT D8"BASIC",INT DA"BASIC"
  95806. --------r-D9---------------------------------
  95807. INT D9 - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95808. --------H-D9---------------------------------
  95809. INT D9 - Screen Thief v1.00 - RELOCATED IRQ1
  95810. Range:    INT 79h to INT E1h, selected by commandline switch
  95811. Note:    (see INT D8"Screen Thief")
  95812. SeeAlso: INT 09"IRQ1",INT D8"Screen Thief",INT DA"Screen Thief"
  95813. --------r-DA---------------------------------
  95814. INT DA - IBM ROM BASIC - used while in interpreter
  95815. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  95816.     BASIC.COM/BASICA.COM do not restore vector on termination
  95817. SeeAlso: INT 80"BASIC",INT D9"BASIC",INT DB"BASIC"
  95818. --------r-DA---------------------------------
  95819. INT DA - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95820. --------H-DA---------------------------------
  95821. INT DA - Screen Thief v1.00 - RELOCATED IRQ2
  95822. Range:    INT 7Ah to INT E2h, selected by commandline switch
  95823. Note:    (see INT D8"Screen Thief")
  95824. SeeAlso: INT 0A"IRQ2",INT D9"Screen Thief",INT DB"Screen Thief"
  95825. --------r-DB---------------------------------
  95826. INT DB - IBM ROM BASIC - used while in interpreter
  95827. Notes:    called by ROM BASIC
  95828.     BASIC.COM/BASICA.COM do not restore vector on termination
  95829. SeeAlso: INT 80"BASIC",INT DA"BASIC",INT DC"BASIC"
  95830. --------r-DB---------------------------------
  95831. INT DB - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95832. --------H-DB---------------------------------
  95833. INT DB - Screen Thief v1.00 - RELOCATED IRQ3
  95834. Range:    INT 7Bh to INT E3h, selected by commandline switch
  95835. Note:    (see INT D8"Screen Thief")
  95836. SeeAlso: INT 0B"IRQ3",INT DA"Screen Thief",INT DC"Screen Thief"
  95837. --------u-DC---------------------------------
  95838. INT DC - PC/370 v4.1- - API
  95839. SeeAlso: INT 60"PC/370"
  95840. --------r-DC---------------------------------
  95841. INT DC - IBM ROM BASIC - used while in interpreter
  95842. Notes:    called by ROM BASIC
  95843.     BASIC.COM/BASICA.COM do not restore vector on termination
  95844. SeeAlso: INT 80"BASIC",INT DB"BASIC",INT DD"BASIC"
  95845. --------r-DC---------------------------------
  95846. INT DC - STSC APL*PLUS/PC - MAY BE USED IN FUTURE RELEASES
  95847. --------H-DC---------------------------------
  95848. INT DC - Screen Thief v1.00 - RELOCATED IRQ4
  95849. Range:    INT 7Ch to INT E4h, selected by commandline switch
  95850. Note:    (see INT D8"Screen Thief")
  95851. SeeAlso: INT 0C"IRQ4",INT DB"Screen Thief",INT DD"Screen Thief"
  95852. --------r-DD---------------------------------
  95853. INT DD - IBM ROM BASIC - used while in interpreter
  95854. Notes:    called by ROM BASIC
  95855.     BASIC.COM/BASICA.COM do not restore vector on termination
  95856. SeeAlso: INT 80"BASIC",INT DC"BASIC",INT DE"BASIC"
  95857. --------r-DD---------------------------------
  95858. INT DD - STSC APL*PLUS/PC v9.0 - PLACE KEYSTROKE EVENTS IN INPUT BUFFER
  95859.     BX = where to place keystrokes
  95860.         FFFFh insert before current buffer contents
  95861.         0000h replace current contents
  95862.         0001h insert after current contents
  95863.     CX = number of keystroke events to insert
  95864.     ES:SI -> data to be placed into buffer (list of WORD key codes)
  95865.         4000h + N = normal ASCII keystroke N (N = 00h to FFh)
  95866.         4100h + N = extended ASCII keystroke N (N = 03h to 84h)
  95867. SeeAlso: INT 16/AH=05h
  95868. --------H-DD---------------------------------
  95869. INT DD - Screen Thief v1.00 - RELOCATED IRQ5
  95870. Range:    INT 7Dh to INT E5h, selected by commandline switch
  95871. Note:    (see INT D8"Screen Thief")
  95872. SeeAlso: INT 0D"IRQ5",INT DC"Screen Thief",INT DE"Screen Thief"
  95873. --------r-DE---------------------------------
  95874. INT DE - IBM ROM BASIC - used while in interpreter
  95875. Notes:    called by ROM BASIC
  95876.     BASIC.COM/BASICA.COM do not restore vector on termination
  95877. SeeAlso: INT 80"BASIC",INT DD"BASIC",INT DF"BASIC"
  95878. --------r-DE---------------------------------
  95879. INT DE - APL*PLUS/PC - ???
  95880. Note:    appears to be the same as INT 16
  95881. --------H-DE---------------------------------
  95882. INT DE - Screen Thief v1.00 - RELOCATED IRQ6
  95883. Range:    INT 7Eh to INT E6h, selected by commandline switch
  95884. Note:    (see INT D8"Screen Thief")
  95885. SeeAlso: INT 0E"IRQ6",INT DD"Screen Thief",INT DF"Screen Thief"
  95886. --------b-DF---------------------------------
  95887. INT DF - Victor 9000 - SuperBIOS
  95888. --------r-DF---------------------------------
  95889. INT DF - IBM ROM BASIC - used while in interpreter
  95890. Notes:    called by ROM BASIC
  95891.     BASIC.COM/BASICA.COM do not restore vector on termination
  95892. SeeAlso: INT 80"BASIC",INT DE"BASIC",INT E0"BASIC"
  95893. --------r-DF---------------------------------
  95894. INT DF - APL*PLUS/PC - SAME AS INT 10
  95895. SeeAlso: INT 10
  95896. --------H-DF---------------------------------
  95897. INT DF - Screen Thief v1.00 - RELOCATED IRQ7
  95898. Range:    INT 7Fh to INT E7h, selected by commandline switch
  95899. Note:    (see INT D8"Screen Thief")
  95900. SeeAlso: INT 0F"IRQ7",INT DE"Screen Thief"
  95901. --------r-E0---------------------------------
  95902. INT E0 - IBM ROM BASIC - used while in interpreter
  95903. Notes:    called by ROM BASIC
  95904.     BASIC.COM/BASICA.COM do not restore vector on termination
  95905. SeeAlso: INT 80"BASIC",INT DF"BASIC",INT E1"BASIC"
  95906. --------r-E0---------------------------------
  95907. INT E0 - APL*PLUS/PC - RESTIME HIGH-RESOLUTION TIMER FOR QUAD MF FUNCTION
  95908. SeeAlso: INT CF"APL"
  95909. --------v-E0---------------------------------
  95910. INT E0 - VIRUS - "Micro-128" - ???
  95911. Note:    Micro-128 also overwrites the upper half of the interrupt table
  95912. SeeAlso: INT 9E"VIRUS",INT F1"VIRUS"
  95913. --------O-E0---------------------------------
  95914. INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
  95915.     CL = function number
  95916.     DS,DX = parameters
  95917. Return: as appropriate for function
  95918. Notes:    several functions are covered in more detail in following entries
  95919.     most of these calls are also supported by Digital Research's DOS Plus
  95920.       v2.1; the unsupported functions are 26h,29h-2Bh,3Ah,3Dh-62h,71h-8Ch,
  95921.       90h-92h,94h-97h,9Bh-ABh, and AEh-FFh
  95922. SeeAlso: INT 21/AX=4459h,INT 21/AH=E0h"DOS Plus"
  95923.  
  95924. (Table 2417)
  95925. Values for CP/M-86,DR Multiuser DOS function number:
  95926.  00h    terminate calling process (see also INT 21/AH=00h)
  95927.  01h    read a character
  95928.  02h    write character to default console (see also INT 21/AH=02h)
  95929.  03h    read character from default AUX (see also INT 21/AH=03h)
  95930.  04h    write character to default AUX (see also INT 21/AH=04h)
  95931.  05h    write character to default list device (see also INT 21/AH=05h)
  95932.  06h    perform raw I/O on default console (see also INT 21/AH=06h)
  95933.  07h    return default AUX input status
  95934.  08h    return default AUX output status
  95935.  09h    write string to default console (see also INT 21/AH=09h)
  95936.  0Ah    read string from default console (see also INT 21/AH=0Ah)
  95937.  0Bh    return default console input status (see also INT 21/AH=0Bh)
  95938.  0Ch    get BDOS release ID
  95939.  0Dh    reset all disk drives (see also INT 21/AH=0Dh)
  95940.  0Eh    set default drive (see also INT 21/AH=0Eh)
  95941.  0Fh    open file via FCB (see also INT 21/AH=0Fh,#0506)
  95942.  10h    close file via FCB (see also INT 21/AH=10h)
  95943.  11h    search for first matching file with FCB (see also INT 21/AH=11h)
  95944.  12h    search for next matching file with FCB (see also INT 21/AH=12h)
  95945.  13h    delete file via FCB (see also INT 21/AH=13h)
  95946.  14h    sequential read via FCB (see also INT 21/AH=14h)
  95947.  15h    sequential write via FCB (see also INT 21/AH=15h)
  95948.  16h    create file via FCB (see also INT 21/AH=16h)
  95949.  17h    rename file via FCB (see also INT 21/AH=17h)
  95950.  18h    get bit map of logged drives
  95951.  19h    get default drive (see also INT 21/AH=19h)
  95952.  1Ah    set DMA address offset
  95953.  1Bh    get default disk allocation vector (see also INT 21/AH=1Bh)
  95954.  1Ch    set default drive to read-only
  95955.  1Dh    get bit map of read-only drives
  95956.  1Eh    set file attributes via FCB (see also INT 21/AX=4301h)
  95957.  1Fh    get address of disk parameter block (see also INT 21/AH=1Fh)
  95958.  20h    get/set default user number
  95959.  21h    read random record via FCB (see also INT 21/AH=21h)
  95960.  22h    write random record via FCB (see also INT 21/AH=22h)
  95961.  23h    compute file size with FCB (see also INT 21/AH=23h)
  95962.  24h    get FCB random record number (see also INT 21/AH=24h)
  95963.  25h    reset specified drives
  95964.  26h    access specified drives (not in DR DOS Plus v2.1)
  95965.  27h    free specified drives
  95966.  28h    write random with FCB, zero fill (see also also INT 21/AH=28h)
  95967.  2Ah    lock records in FCB file (see also INT 21/AH=5Ch)
  95968.  2Bh    unlock records in FCB file (see also INT 21/AH=5Ch)
  95969.  2Ch    set BDOS multisector count
  95970.  2Dh    set BDOS error mode
  95971.  2Eh    get free space on disk
  95972.  2Fh    load, initialize, and jump to process (see also INT 21/AH=4Bh)
  95973.  30h    flush write-deferred buffers
  95974.  31h    get/set system variable (DOS Plus v2.1)
  95975.  32h    call BIOS (XIOS) character routine (see #2418)
  95976.  33h    set DMA address segment
  95977.  34h    get DMA buffer address
  95978.  35h    CP/M-86 allocate maximum memory
  95979.  36h    allocate maximum memory at specified segment
  95980.  37h    CP/M-86 allocate memory segment (see also INT 21/AH=48h)
  95981.  38h    allocate memory at specified segment
  95982.  39h    CP/M-86 free specified memory segment (see also INT 21/AH=49h)
  95983.  3Ah    CP/M-86 free all memory (not in DOS Plus v2.1)
  95984.  3Bh    load .CMD file into memory
  95985.  3Ch    (DOS Plus v2.1) call RSX program
  95986.  40h    (DR-NET) log on a server
  95987.  41h    (DR-NET) log off a server
  95988.  42h    (DR-NET) send a message
  95989.  43h    (DR-NET) receive a message
  95990.  44h    (DR-NET) get network status
  95991.  45h    (DR-NET) get requestor configuration table
  95992.  46h    (DR-NET) set compatibility attributes
  95993.  47h    (DR-NET) get server configuration table
  95994.  48h    (DR-NET) set network error mode
  95995.  49h    (DR-NET) attach network
  95996.  4Ah    (DR-NET) detach network
  95997.  4Bh    (DR-NET) set default password
  95998.  4Ch    (DR-NET) get-set long timeout
  95999.  4Dh    (DR-NET) get parameter table
  96000.  50h    (DR-NET) get network information
  96001.  53h    get current time (see also INT 21/AH=2Ch)
  96002.  54h    set current time (see also INT 21/AH=2Dh)
  96003.  55h    get binary system date (see also INT 21/AH=2Ah)
  96004.  56h    set system date (see also INT 21/AH=2Bh)
  96005.  57h    allocate system flag
  96006.  58h    deallocate system flag
  96007.  59h    reserve memory in global area
  96008.  5Ah    lock physical drive
  96009.  5Bh    unlock physical drive
  96010.  5Ch    search path for executable file
  96011.  5Dh    load and execute command (see also INT 21/AH=4Bh)
  96012.  5Eh    get/set process exit code
  96013.  5Fh    set country information
  96014.  60h    get country information
  96015.  63h    truncate FCB file (see also INT 21/AH=28h)
  96016.  64h    create/update directory label
  96017.  65h    get directory label
  96018.  66h    get FCB date stamp and password mode
  96019.  67h    write extended FCB
  96020.  68h    set system date and time
  96021.  69h    get system date and time in binary
  96022.  6Ah    establish password for file access
  96023.  6Bh    get OS serial number
  96024.  6Ch    (DOS Plus v2.1) get/set program return code
  96025.  6Dh    get/set console mode
  96026.  6Eh    get/set string delimiter
  96027.  6Fh    write block to default console
  96028.  70h    write block to default list device
  96029.  71h    execute DOS-compatible function
  96030.  74h    set FCB time and date stamps
  96031.  80h    allocate memory
  96032.  82h    deallocate memory
  96033.  83h    poll I/O device
  96034.  84h    wait on system flag
  96035.  85h    set system flag
  96036.  86h    create message queue
  96037.  87h    open message queue
  96038.  88h    delete message queue
  96039.  89h    read from message queue
  96040.  8Ah    conditionally read from message queue
  96041.  8Bh    write to message queue
  96042.  8Ch    conditionally write to message queue
  96043.  8Dh    delay calling process
  96044.  8Eh    call process dispatcher (yield CPU)
  96045.  8Fh    terminate calling process (same as function 00h)
  96046.  90h    create a process
  96047.  91h    set calling process' priority
  96048.  92h    attach to default console
  96049.  93h    detach from default console
  96050.  95h    assign default console to process
  96051.  96h    interpret and execute commandline
  96052.  97h    resident procedure library
  96053.  98h    parse ASCII string into FCB (see also INT 21/AH=29h)
  96054.  99h    return default console
  96055.  9Ah    get address of system data (SYSDAT)
  96056.  9Bh    get system time and date
  96057.  9Ch    return calling process' descriptor
  96058.  9Dh    terminate process by name or PD address
  96059.  9Eh    attach to default list device
  96060.  9Fh    detach from default list device
  96061.  A0h    select default list device
  96062.  A1h    conditionally attach to default list device
  96063.  A2h    conditionally attach to default console
  96064.  A3h    get OS version number
  96065.  A4h    get default list device
  96066.  A5h    attach to default AUX
  96067.  A6h    detach from default AUX
  96068.  A7h    conditionally attach to default AUX
  96069.  A8h    set default AUX
  96070.  A9h    return default AUX
  96071.  ACh    read block from default AUX
  96072.  ADh    (DOS Plus v2.1) write block to default AUX
  96073.  B0h    configure default AUX
  96074.  B1h    get/set device control parameters
  96075.  B2h    send Break through default AUX
  96076.  B3h    allocate physical memory
  96077.  B4h    free physical memory
  96078.  B5h    map physical memory
  96079.  B6h    nondestructive message queue read
  96080.  B7h    timed wait on system flag
  96081.  B8h    get/set I/O port mapping
  96082.  B9h    set list device timeout
  96083.  BAh    set AUX timeout value
  96084.  BBh    execute XIOS service
  96085.  BDh    (DR Multiuser DOS) delay
  96086.  FFh    return 80386 to native mode
  96087.  
  96088. (Table 2418)
  96089. Values for DOS Plus v2.1 XIOS functions:
  96090.  00h    terminate program
  96091.  01h    ???
  96092.  02h    check for console input status
  96093.  03h    read character from console
  96094.  04h    write character to console
  96095.  05h    write character to list device
  96096.  06h    write character to auxiliary device
  96097.  07h    read cahracter from auxiliary device
  96098.  0Fh    get list device status
  96099.  10h-14h reserved
  96100.  15h    device initialization
  96101.  16h    check console output status
  96102.  17h-7Fh reserved
  96103. ---BBC Acorn---
  96104.  80h    get XIOS version
  96105.  81h    get Tube semaphore
  96106.  82h    release Tube semaphore
  96107.  83h    select text/graphics
  96108.  84h    update B&W graphics rectangle
  96109.  85h    update color graphics rectangle
  96110.  86h    get/release/update mouse
  96111.  87h    get system error info
  96112.  88h    entry in CLOCK called by WatchDog RSP
  96113.  89h    BBC OSBYTE function
  96114.  8Ah    BBC OSWORD function
  96115.  
  96116. (Table 2419)
  96117. Values for DR Multiuser DOS Error Return Code:
  96118.  00h    no error
  96119.  01h    system call not implemented
  96120.  02h    illegal system call number
  96121.  03h    cannot find memory
  96122.  04h    illegal flag number
  96123.  05h    flag overrun
  96124.  06h    flag underrun
  96125.  07h    no unused Queue Descriptors
  96126.  08h    no free queue buffer
  96127.  09h    cannot find queue
  96128.  0Ah    queue in use
  96129.  0Ch    no free Process Descriptors
  96130.  0Dh    no queue access
  96131.  0Eh    empty queue
  96132.  0Fh    full queue
  96133.  10h    CLI queue missing
  96134.  11h    no 8087 in system
  96135.  12h    no unused Memory Descriptors
  96136.  13h    illegal console number
  96137.  14h    no Process Descriptor match
  96138.  15h    no console match
  96139.  16h    no CLI process
  96140.  17h    illegal disk number
  96141.  18h    illegal filename
  96142.  19h    illegal filetype
  96143.  1Ah    character not ready
  96144.  1Bh    illegal Memory Descriptor
  96145.  1Ch    bad return from BDOS load
  96146.  1Dh    bad return from BDOS read
  96147.  1Eh    bad return from BDOS open
  96148.  1Fh    null command
  96149.  20h    not owner of resource
  96150.  21h    no CSEG in load file
  96151.  22h    process Descriptor exists on Thread Root
  96152.  23h    could not terminate process
  96153.  24h    cannot attach to process
  96154.  25h    illegal list device number
  96155.  26h    illegal password
  96156.  28h    external termination occurred
  96157.  29h    fixup error upon load
  96158.  2Ah    flag set ignored
  96159.  2Bh    illegal auxilliary device number
  96160. --------O-E0----CL03-------------------------
  96161. INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM AUX DEVICE
  96162.     CL = 03h
  96163. Return: AL = ASCII character
  96164. Notes:    A_READ reads the next 8-bit character from the logical auxilliary
  96165.       input device (AUXn:); control is not returned to the calling
  96166.       process until a character has been read.
  96167.     if another process owns AUX, this call blocks until the device becomes
  96168.       available
  96169. SeeAlso: INT 21/AH=03h,INT E0/CL=04h,INT E0/CL=07h,INT E0/CL=A5h,INT E0/CL=ACh
  96170. --------O-E0----CL04-------------------------
  96171. INT E0 - DR Multiuser DOS - "A_WRITE" - WRITE CHARACTER TO AUX DEVICE
  96172.     CL = 04h
  96173.     DL = ASCII character
  96174. Return: nothing
  96175. Note:    if another process owns AUX, this call blocks until the device becomes
  96176.       available
  96177. SeeAlso: INT 21/AH=04h,INT E0/CL=03h,INT E0/CL=08h,INT E0/CL=A5h,INT E0/CL=ADh
  96178. --------O-E0----CL07-------------------------
  96179. INT E0 - DR Multiuser DOS - "A_STATIN" - GET INPUT STATUS OF AUX DEVICE
  96180.     CL = 07h
  96181. Return: AL = status
  96182.         00h not ready
  96183.         FFh character available
  96184. Desc:    determine whether the current AUX device has input available
  96185. SeeAlso: INT E0/CL=03h,INT E0/CL=08h
  96186. --------O-E0----CL08-------------------------
  96187. INT E0 - DR Multiuser DOS - "A_STATOUT" - GET OUTPUT STATUS OF AUX DEVICE
  96188.     CL = 08h
  96189. Return: AL = status
  96190.         00h not ready
  96191.         FFh ready for output
  96192. Desc:    determine whether the current AUX device is able to accept more output
  96193. SeeAlso: INT E0/CL=04h,INT E0/CL=07h
  96194. --------O-E0----CL59-------------------------
  96195. INT E0 - ConcCP/M,DR Multiuser DOS - "S_MEMORY" - RESERVE MEMORY IN GLOBAL AREA
  96196.     CL = 59h
  96197.     DX = size in bytes
  96198. Return: AX = status
  96199.         FFFFh failed
  96200.         other successful
  96201.         ES:BX -> reserved memory
  96202. --------O-E0----CL86-------------------------
  96203. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
  96204.     CL = 86h
  96205.     DS:DX -> queue descriptor (see #2420)
  96206. Return: AX = status (0000h success, FFFFh failure)
  96207.     CX = error code (see #2419)
  96208. SeeAlso: INT E0/CL=87h
  96209.  
  96210. Format of DR Multiuser DOS queue descriptor:
  96211. Offset    Size    Description    (Table 2420)
  96212.  00h  2 WORDs    internal use, initialize to zeros
  96213.  04h    WORD    flags
  96214.  06h  8 BYTEs    queue name
  96215.  0Eh    WORD    length of message
  96216.  10h    WORD    number of messages
  96217.  12h  4 WORDs    internal use, initialize to zeros
  96218.  1Ah    WORD    offset in system area of buffer for messages
  96219. --------O-E0----CL87-------------------------
  96220. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_OPEN" - OPEN MESSAGE QUEUE
  96221.     CL = 87h
  96222.     DS:DX -> queue parameter block (see #2421)
  96223. Return: AX = status (0000h success, FFFFh failure)
  96224.     CX = error code (see #2419)
  96225. SeeAlso: INT E0/CL=86h,INT E0/CL=89h
  96226.  
  96227. Format of DR Multiuser DOS queue parameter block:
  96228. Offset    Size    Description    (Table 2421)
  96229.  00h    WORD    internal use, initialize to zero
  96230.  02h    WORD    queue ID (set by INT E0/CL=87h)
  96231.  04h    WORD    internal use, initialize to zero
  96232.  06h    WORD    offset of queue message buffer
  96233.  08h  8 BYTEs    queue name
  96234. --------O-E0----CL89-------------------------
  96235. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_READ" - READ MESSAGE QUEUE
  96236.     CL = 89h
  96237.     DS:DX -> queue parameter block (see #2421)
  96238. Return: AX = status (0000h success, FFFFh failure)
  96239.     CX = error code (see #2419)
  96240. SeeAlso: INT E0/CL=87h,INT E0/CL=8Ah,INT E0/CL=8Bh
  96241. --------O-E0----CL8A-------------------------
  96242. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CREAD" - CONDITIONALLY READ MSG QUEUE
  96243.     CL = 8Ah
  96244.     DS:DX -> queue parameter block (see #2421)
  96245. Return: AX = status (0000h success, FFFFh failure)
  96246.     CX = error code (see #2419)
  96247. SeeAlso: INT E0/CL=87h,INT E0/CL=89h,INT E0/CL=8Ch
  96248. --------O-E0----CL8B-------------------------
  96249. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_WRITE" - WRITE MESSAGE QUEUE
  96250.     CL = 8Bh
  96251.     DS:DX -> queue parameter block (see #2421)
  96252. Return: AX = status (0000h success, FFFFh failure)
  96253.     CX = error code (see #2419)
  96254. SeeAlso: INT E0/CL=89h,INT E0/CL=8Ch
  96255. --------O-E0----CL8C-------------------------
  96256. INT E0 - ConcCP/M,DR Multiuser DOS - "Q_CWRITE" - CONDITIONALLY WRITE MSG QUEUE
  96257.     CL = 8Ch
  96258.     DS:DX -> queue parameter block (see #2421)
  96259. Return: AX = status (0000h success, FFFFh failure)
  96260.     CX = error code (see #2419)
  96261. SeeAlso: INT E0/CL=8Ah,INT E0/CL=8Bh
  96262. --------O-E0----CL8E-------------------------
  96263. INT E0 - ConcCP/M,DR Multiuser DOS - "P_DISPATCH" - CALL DISPATCHER
  96264.     CL = 8Eh
  96265.     DX = FFFFh (optional) to force dispatch
  96266. Return: nothing
  96267. Desc:    allow other processes of the same or higher priority to run if they
  96268.       are ready
  96269. Note:    if DX=FFFFh, a dispatch is forced even if no other process is ready
  96270. SeeAlso: INT E0/CL=91h
  96271. --------O-E0----CL91-------------------------
  96272. INT E0 - ConcCP/M,DR Multiuser DOS - "P_PRIORITY" - SET PROCESS PRIORITY
  96273.     CL = 91h
  96274.     DL = new priority (00h highest to FFh lowest)
  96275. Note:    sets priority of calling process; transient processes are initialized
  96276.       to priority C8h
  96277. SeeAlso: INT E0/CL=8Eh
  96278. --------O-E0----CL93-------------------------
  96279. INT E0 - ConcCP/M,DR Multiuser DOS - "C_DETACH" - DETACH FROM DEFAULT CONSOLE
  96280.     CL = 93h
  96281. Return: AX = status
  96282.         0000h successfully detached
  96283.         FFFFh detach failed
  96284. SeeAlso: INT E0/CL=A6h
  96285. --------O-E0----CLA5-------------------------
  96286. INT E0 - DR Multiuser DOS - "A_ATTACH" - ATTACH AUX DEVICE
  96287.     CL = A5h
  96288. Desc:    attaches the default auxiliary device to the calling process unless
  96289.       it is already attached to another process, in which case the call
  96290.       blocks until the device becomes available
  96291. Note:    this call should be used before attempting to read or write from
  96292.       the AUX device; however, the I/O calls internally call this function
  96293.       to ensure device ownership
  96294. SeeAlso: INT E0/CL=03h,INT E0/CL=04h,INT E0/CL=A6h,INT E0/CL=A7h,INT E0/CL=A8h
  96295. SeeAlso: INT E0/CL=ACh,INT E0/CL=ADh,INT E0/CL=B0h
  96296. --------O-E0----CLA6-------------------------
  96297. INT E0 - DR Multiuser DOS - "A_DETACH" - DETACH FROM AUX DEVICE
  96298.     CL = A6h
  96299. Return: AX = status
  96300.         0000h successfully detached
  96301.         FFFFh detach failed
  96302.     CX = error code
  96303. SeeAlso: INT E0/CL=93h,INT E0/CL=A5h,INT E0/CL=A7h
  96304. --------O-E0----CLA7-------------------------
  96305. INT E0 - DR Multiuser DOS - "A_CATTACH" - CONDITIONALLY ATTACH TO AUX DEVICE
  96306.     CL = A7h
  96307. Return: AX = status
  96308.         0000h attached
  96309.         FFFFh unable to attach
  96310. Desc:    attaches the default auxiliary device to the calling process if it is
  96311.       available
  96312. Note:    does not block if the device is already in use
  96313. SeeAlso: INT E0/CL=A5h,INT E0/CL=A6h,INT E0/CL=A8h,INT E0/CL=B0h
  96314. --------O-E0----CLA8-------------------------
  96315. INT E0 - DR Multiuser DOS - "A_SET" - SET DEFAULT AUX DEVICE NUMBER
  96316.     CL = A8h
  96317.     DL = auxiliary device number
  96318. Return: AX = status
  96319.         0000h successful
  96320.         FFFFh failed
  96321.     CX = error code
  96322. Desc:    specify which physical device will become AUX
  96323. SeeAlso: INT E0/CL=A5h,INT E0/CL=A9h
  96324. --------O-E0----CLA9-------------------------
  96325. INT E0 - DR Multiuser DOS - "A_GET" - GET DEFAULT AUX DEVICE NUMBER
  96326.     CL = A9h
  96327. Return: AL = current default auxiliary device number
  96328. Desc:    determine which physical device is currently AUX
  96329. SeeAlso: INT E0/CL=A8h
  96330. --------O-E0----CLAC-------------------------
  96331. INT E0 - DR Multiuser DOS - "A_READBLK" - READ STRING FROM AUX DEVICE
  96332.     CL = ACh
  96333.     DS:DX -> character control block (CHCB) (see #2422)
  96334. Return: AX = number of characters read
  96335. Desc:    read characters from the default auxiliary (AUXn:) device into a buffer
  96336.       until the buffer is full or the device is no longer ready
  96337. Notes:    if the device is initially not ready, blocks until at least one
  96338.       character has been read
  96339.     if another process owns AUX, this call blocks until the device becomes
  96340.       available
  96341. SeeAlso: INT E0/CL=03h,INT E0/CL=A5h,INT E0/CL=ADh
  96342.  
  96343. Format of DR Multiuser DOS character control block (CHCB):
  96344. Offset    Size    Description    (Table 2422)
  96345.  00h    DWORD    pointer to character buffer
  96346.  04h    WORD    length of character buffer
  96347. --------O-E0----CLAD-------------------------
  96348. INT E0 - DR Multiuser DOS - "A_WRITEBLK" - WRITE STRING TO AUX DEVICE
  96349.     CL = ADh
  96350.     DS:DX -> character control block (see INT E0/CL=ACh)
  96351. Return: AX = number of characters written
  96352. Note:    does not return until at least one character has been written
  96353. SeeAlso: INT E0/CL=04h,INT E0/CL=A5h,INT E0/CL=ACh
  96354. --------O-E0----CLB0-------------------------
  96355. INT E0 - DR Multiuser DOS - "A_CONFIG" - GET/SET AUX DEVICE PARAMETERS
  96356.     CL = B0h
  96357.     DX:DX -> AUX device parameter block (see #2423)
  96358. Return: AX = status
  96359.         0000h successful
  96360.         parameter block updated
  96361.         FFFFh failed
  96362.         CX = error code
  96363. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  96364.  
  96365. Format of DR Multiuser DOS AUX device parameter block:
  96366. Offset    Size    Description    (Table 2423)
  96367.  00h    BYTE    function (00h get, 01h set)
  96368.  01h    BYTE    baud rate (see #2425) FFh = don't change/unknown
  96369.  02h    BYTE    parity (see #2424)
  96370.  03h    BYTE    stop bits (00h one, 01h 1.5, 02h two, FFh unknown/don't change)
  96371.  04h    BYTE    data bits (05h-08h or FFh unknown/don't change)
  96372.  05h    BYTE    handshake (00h none, 01h DTS/DSR, 02h RTS/CTS, 04h XON/XOFF,
  96373.         FFh unknown/don't change)
  96374.  06h    BYTE    XON character, FFh unknown/don't change
  96375.  07h    BYTE    XOFF character, FFh unknown/don't change
  96376.  
  96377. (Table 2424)
  96378. Values for DR Multiuser DOS AUX parity:
  96379.  00h    none
  96380.  01h    odd
  96381.  02h    none
  96382.  03h    even
  96383.  04h    stick parity bit
  96384.  FFh    don't change/unknown
  96385.  
  96386. (Table 2425)
  96387. Values for DR Multiuser DOS AUX baud rate:
  96388.  00h    50 baud
  96389.  01h    62.5 baud
  96390.  02h    75 baud
  96391.  03h    110 baud
  96392.  04h    134.5 baud
  96393.  05h    150 baud
  96394.  06h    200 baud
  96395.  07h    300 baud
  96396.  08h    600 baud
  96397.  09h    1200 baud
  96398.  0Ah    1800 baud
  96399.  0Bh    2000 baud
  96400.  0Ch    2400 baud
  96401.  0Dh    3600 baud
  96402.  0Eh    4800 baud
  96403.  0Fh    7200 baud
  96404.  10h    9600 baud
  96405.  11h    19200 baud
  96406.  12h    38400 baud
  96407.  13h    56000 baud
  96408.  14h    76800 baud
  96409.  15h    115200 baud
  96410. --------O-E0----CLB1-------------------------
  96411. INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
  96412.     CL = B1h
  96413.     DS:DX -> AUX device control block (see #2426)
  96414. Return: AX = status
  96415.         0000h successful
  96416.         control block updated
  96417.         FFFFh failed
  96418.         CX = error code
  96419. SeeAlso: INT E0/CL=B0h,INT E0/CL=B2h
  96420.  
  96421. Format of DR Multiuser DOS AUX device control block:
  96422. Offset    Size    Description    (Table 2426)
  96423.  00h    BYTE    function (00h get, 01h set)
  96424.  01h    BYTE    DTR state (00h low, 01h high, FFh unknown/don't change)
  96425.  02h    BYTE    RTS state (00h low, 01h high, FFh unknown/don't change)
  96426.  03h    BYTE    DSR state (00h low, 01h high, FFh unknown/don't change)
  96427.  04h    BYTE    CTS state (00h low, 01h high, FFh unknown/don't change)
  96428.  05h    BYTE    DCD state (00h low, 01h high, FFh unknown/don't change)
  96429.  06h    BYTE    RI state (00h inactive, 01h active, FFh unknown/don't change)
  96430. --------O-E0----CLB2-------------------------
  96431. INT E0 - DR Multiuser DOS - "A_BREAK" - SEND BREAK TO AUX DEVICE
  96432.     CL = B2h
  96433.     DX = duration of break in system ticks (0001h-FFFFh)
  96434. Return: AX = status
  96435.         0000h successful
  96436.         break signal completed
  96437.         FFFFh failed
  96438.         CX = error code
  96439. Note:    if the AUX device is currently owned by another process, this call will
  96440.       block until the device becomes available
  96441. SeeAlso: INT E0/CL=A5h,INT E0/CL=B1h
  96442. --------O-E0----CLBD-------------------------
  96443. INT E0 - DR Multiuser DOS - "P_DELAY" - DELAY EXECUTION
  96444.     CL = BDh
  96445.     DX = delay in system ticks
  96446. Return: after the delay elapses
  96447. Notes:    the length of a system tick is installation-dependent (typically
  96448.       1/50 or 1/60 second); the length may be determined by reading the
  96449.       TICKSPERSEC value from the system data segment
  96450.     the actual delay before the process is rescheduled to run may be up to
  96451.       one tick longer than requested; the delay between rescheduling and
  96452.       actual execution cannot be predicted if higher-priority processes
  96453.       are awaiting a turn at the CPU
  96454. SeeAlso: INT 15/AH=86h,INT 1A/AX=FF01h,INT 2F/AX=1224h,INT 62/AX=0096h
  96455. --------g-E00000-----------------------------
  96456. INT E0 - PCROBOTS v1.41 - "SWAPTASK" - END CURRENT ROBOT'S TURN
  96457.     AX = 0000h
  96458. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  96459.       which specially-written .COM or .EXE programs form robots battling
  96460.       each other in a user-defined arena
  96461. --------g-E00001-----------------------------
  96462. INT E0 - PCROBOTS v1.41 - "MOVEMENT" - START MOVING
  96463.     AX = 0001h
  96464.     BX = speed (0-maximum for robot)
  96465.     CX = direction (0-359 degrees)
  96466. Notes:    the speed will change to the specified value at the maximum
  96467.       acceleration the robot is capable of; if the robot is already moving
  96468.       faster than its maximum maneuverability speed, it will not be able
  96469.       to change direction
  96470.     this call also terminates the current robot's turn
  96471. SeeAlso: AX=0000h,AX=0002h,AX=0003h
  96472. --------g-E00002-----------------------------
  96473. INT E0 - PCROBOTS v1.41 - "SCAN" - SCAN FOR OTHER ROBOTS IN THE GIVEN DIRECTION
  96474.     AX = 0002h
  96475.     BX = direction (0-359 degrees)
  96476.     CX = resolution (0-45 degrees)
  96477. Return: AX = status
  96478.         FFFFh if nothing detected
  96479.         else robot ID (0-19)
  96480.         BX = range to detected robot
  96481. Notes:    the scan searches within CX degrees to either side of the specified
  96482.       direction
  96483.     the scanner will see right through walls, but shells will not pass
  96484.       through walls
  96485.     this call also terminates the current robot's turn
  96486. SeeAlso: AX=0000h,AX=0001h,AX=0003h
  96487. --------g-E00003-----------------------------
  96488. INT E0 - PCROBOTS v1.41 - "SHOOT" - FIRE A SHELL AT ANOTHER ROBOT
  96489.     AX = 0003h
  96490.     BX = direction (0-359 degrees)
  96491.     CX = range (0-700)
  96492. Return: AX = status (0000h not fired, else ID of shell fired)
  96493. Notes:    up to seven shells may be in flight for a robot at one time; the cannon
  96494.       takes 50 ticks to reload
  96495.     this call also terminates the current robot's turn
  96496. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=002Ch
  96497. --------g-E00010-----------------------------
  96498. INT E0 - PCROBOTS v1.41 - "GETXY" - GET ROBOT'S CURRENT POSITION
  96499.     AX = 0010h
  96500. Return: BX = current X coordinate (0-999)
  96501.     CX = current Y coordinate (0-999)
  96502. --------g-E00011-----------------------------
  96503. INT E0 - PCROBOTS v1.41 - "TRANSMIT" - SEND DATA TO ANOTHER ROBOT
  96504.     AX = 0011h
  96505.     BX = target robot ID
  96506.     CX = data to be sent
  96507. Return: AX = status (0000h data could not be sent, 0001h data sent)
  96508. Note:    this call costs one unit of battery power
  96509. --------g-E00012-----------------------------
  96510. INT E0 - PCROBOTS v1.41 - "RECEIVE" - GET DATA FROM OTHER ROBOTS
  96511.     AX = 0012h
  96512. Return: AX = status
  96513.         0000h no data available
  96514.         0001h data retrieved
  96515.         BX = sender's ID
  96516.         CX = data
  96517. Note:    each robot has a 20-word receive FIFO; if the FIFO is full, other
  96518.       robots will be unable to send more data until some is read
  96519. --------g-E00013-----------------------------
  96520. INT E0 - PCROBOTS v1.41 - "DAMAGE" - DETERMINE HOW MUCH DAMAGE SUSTAINED
  96521.     AX = 0013h
  96522. Return: BX = damage status
  96523. Note:    the initial value depends on configuration, but is typically 100; as
  96524.       the robot is damaged, it decreases
  96525. --------g-E00014-----------------------------
  96526. INT E0 - PCROBOTS v1.41 - "SPEED" - DETERMINE HOW FAST ROBOT IS MOVING
  96527.     AX = 0014h
  96528. Return: BX = current speed
  96529. --------g-E00015-----------------------------
  96530. INT E0 - PCROBOTS v1.41 - "BATTERY" - DETERMINE HOW MUCH BATTERY POWER LEFT
  96531.     AX = 0015h
  96532. Return: BX = current battery charge
  96533. Note:    the battery starts off with 1000 units of charge, and is constantly
  96534.       being charged by solar panels and constantly discharged by motion;
  96535.       the battery is charged at 4 units per turn and discharged at
  96536.       0.1*speed units per turn.
  96537. --------g-E00016-----------------------------
  96538. INT E0 - PCROBOTS v1.41 - "TICKS" - DETERMINE HOW LONG SINCE GAME STARTED
  96539.     AX = 0016h
  96540. Return: BX:CX = number of game ticks elapsed (not related to real time)
  96541. --------g-E00017-----------------------------
  96542. INT E0 - PCROBOTS v1.41 - "L_SIN" - GET SCALED SINE OF AN ANGLE
  96543.     AX = 0017h
  96544.     BX = angle (0-359 degrees)
  96545. Return: BX:CX = 100000*sine of angle
  96546. SeeAlso: AX=0018h,AX=0019h,AX=001Ah,AX=001Bh
  96547. --------g-E00018-----------------------------
  96548. INT E0 - PCROBOTS v1.41 - "L_COS" - GET SCALED COSINE OF AN ANGLE
  96549.     AX = 0018h
  96550.     BX = angle (0-359 degrees)
  96551. Return: BX:CX = 100000*cosine of angle
  96552. SeeAlso: AX=0017h,AX=0019h,AX=001Ah
  96553. --------g-E00019-----------------------------
  96554. INT E0 - PCROBOTS v1.41 - "L_TAN" - GET SCALED TANGENT OF AN ANGLE
  96555.     AX = 0019h
  96556.     BX = angle (0-359 degrees)
  96557. Return: BX:CX = 100000*tangent of angle
  96558. SeeAlso: AX=0017h,AX=0018h,AX=001Ah
  96559. --------g-E0001A-----------------------------
  96560. INT E0 - PCROBOTS v1.41 - "L_ATAN" - GET ANGLE GIVEN SCALED TANGENT
  96561.     AX = 001Ah
  96562.     BX:CX = 100000*tangent of an angle
  96563. Return: AX = angle (-90 to +90 degrees)
  96564. SeeAlso: AX=0017h,AX=0018h,AX=0019h
  96565. --------g-E0001B-----------------------------
  96566. INT E0 - PCROBOTS v1.41 - "SQRT" - DETERMINE SQUARE ROOT OF A NUMBER 
  96567.     AX = 001Bh
  96568.     BX:CX = value
  96569. Return: BX:CX = square root
  96570. SeeAlso: AX=0017h
  96571. --------g-E0001C-----------------------------
  96572. INT E0 - PCROBOTS v1.41 - "SET_PATTERN" - SPECIFY ROBOT'S DISPLAY IMAGE
  96573.     AX = 001Ch
  96574.     BX:CX -> pattern array
  96575. Note:    the pattern array consists of five bytes, the low five bits of each
  96576.       specifying the bit pattern for one line of the robot's screen display
  96577. --------g-E0001D-----------------------------
  96578. INT E0 - PCROBOTS v1.41 - "DEBUG_FLAG" - SET/CLEAR MARKERS NEXT TO ROBOT'S NAME
  96579.     AX = 001Dh
  96580.     BX = flag number (0 or 1)
  96581.     CX = new value (0 reset, 1 set)
  96582. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  96583.       which specially-written .COM or .EXE programs form robots battling
  96584.       each other in a user-defined arena
  96585. Note:    the two flag markers may be used for any purpose, typically for
  96586.       debugging to provide a visual display of progress
  96587. --------g-E0001E-----------------------------
  96588. INT E0 - PCROBOTS v1.41 - "BUY_ARMOUR" - BUY OR SELL ARMOR FOR ROBOT
  96589.     AX = 001Eh
  96590.     BX = number of armor units to buy (negative to sell)
  96591. Note:    each armor unit is worth 50 battery units; the robot's armor rating
  96592.       will not go above its initial rating, so attempts to purchase more
  96593.       will waste battery units
  96594. SeeAlso: AX=001Fh
  96595. --------g-E0001F-----------------------------
  96596. INT E0 - PCROBOTS v1.41 - "BUY_SHELLS" - BUY ADDITIONAL CANNON SHELLS
  96597.     AX = 001Fh
  96598.     BX = number of shells to buy
  96599. Note:    each shell costs ten battery units
  96600. SeeAlso: AX=001Eh,AX=0020h
  96601. --------g-E00020-----------------------------
  96602. INT E0 - PCROBOTS v1.41 - "SHELLS LEFT" - DETERMINE HOW MANY SHELLS ROBOT HAS
  96603.     AX = 0020h
  96604. Return: BX = number of shells remaining
  96605. SeeAlso: AX=001Fh
  96606. --------g-E00021-----------------------------
  96607. INT E0 - PCROBOTS v1.41 - "GET LOCAL MAP"
  96608.     AX = 0021h
  96609.     BX:CX -> 81-byte buffer for map
  96610. Return: buffer filled with 9x9 area of map centered on robot's position
  96611.  
  96612. (Table 2427)
  96613. Values for PCROBOTS map squares:
  96614.  2Eh '.' empty square
  96615.  44h 'D' damaging trap
  96616.  52h 'R' refueling point
  96617.  58h 'X' wall
  96618. --------g-E00022-----------------------------
  96619. INT E0 - PCROBOTS v1.41 - "INVISIBILITY" - CONTROL ROBOT'S INVISIBILITY DEVICE
  96620.     AX = 0022h
  96621.     BX = new state (0000h become visible, 0001h become invisible)
  96622. Notes:    this function has no effect if the robot is not capable of invisibility
  96623.     the robot can only stay invisible for 100 turns, after which it will
  96624.       automatically become visible; it must also be remain visible for
  96625.       as many turns as it was invisible before it can turn invisible
  96626.       again
  96627. SeeAlso: AX=0024h,AX=0080h
  96628. --------g-E00023-----------------------------
  96629. INT E0 - PCROBOTS v1.41 - "GET_SHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  96630.     AX = 0023h
  96631. Return: BX = status of last shell to land
  96632.         0000h missed completely
  96633.         0001h hit a wall
  96634.         0002h hit a robot within 50-square radius
  96635.         0003h hit a robot within 25-square radius
  96636.         0004h hit a robot within 5-square radius
  96637. --------g-E00024-----------------------------
  96638. INT E0 - PCROBOTS v1.41 - "IS_INVISIBLE" - DETERMINE WHETHER ROBOT IS INVISIBLE
  96639.     AX = 0024h
  96640. Return: BX = visibility (0000h visible, 0001h invisible)
  96641. SeeAlso: AX=0022h,AX=0080h
  96642. --------g-E00025-----------------------------
  96643. INT E0 - PCROBOTS v1.41 - "L_ATAN2" - GET ARCTANGENT
  96644.     AX = 0025h
  96645.     BX = Y
  96646.     CX = X
  96647. Return: AX = angle (arctangent of Y/X)
  96648. --------g-E00026-----------------------------
  96649. INT E0 - PCROBOTS v1.41 - "GET_ROBOT_ID" - DETERMINE CURRENT ROBOT'S IDENTIFIER
  96650.     AX = 0026h
  96651. Return: AX = robot ID
  96652. --------g-E00027-----------------------------
  96653. INT E0 - PCROBOTS v1.41 - "REGISTER_IFF" - REGISTER FRIEND/FOE IDENT STRING
  96654.     AX = 0027h
  96655.     BX:CX = ASCIZ IFF string
  96656. Note:    the IFF string may only be set once
  96657. SeeAlso: AX=0028h,AX=0029h
  96658. --------g-E00028-----------------------------
  96659. INT E0 - PCROBOTS v1.41 - "CHECK_IFF" - QUERY FRIEND/FOE IDENTIFICATION STRING
  96660.     AX = 0028h
  96661.     BX = robot ID to test
  96662. Return: AX = status
  96663.         0000h IFF strings match
  96664.         0001h IFF strings differ or invalid robot ID
  96665. SeeAlso: AX=0027h
  96666. --------g-E00029-----------------------------
  96667. INT E0 - PCROBOTS v1.41 - "REGISTER_NAME" - SPECIFY ROBOT'S NAME
  96668.     AX = 0029h
  96669.     BX:CX -> ASCIZ name string
  96670. Note:    the name may only be set once
  96671. SeeAlso: AX=0027h,AX=002Ah
  96672. --------g-E0002A-----------------------------
  96673. INT E0 - PCROBOTS v1.41 - "FIND_NAME" - SEARCH FOR ROBOT WITH GIVEN NAME
  96674.     AX = 002Ah
  96675.     BX:CX -> ASCIZ name string
  96676.     DX = first ID to check
  96677. Return: AX = robot ID or FFFFh if no robot with specified name
  96678. SeeAlso: AX=0028h,AX=0029h,AX=002Bh
  96679. --------g-E0002B-----------------------------
  96680. INT E0 - PCROBOTS v1.41 - "GET_TEAM_ID" - DETERMINE TEAM MEMBERSHIP OF ROBOT
  96681.     AX = 002Bh
  96682. Return: AX = team ID (0-2) or FFFFh if 'loner'
  96683. SeeAlso: AX=0029h
  96684. --------g-E0002C-----------------------------
  96685. INT E0 - PCROBOTS v1.41 - "GET_ASHELL_STATUS" - FIND OUT WHAT HAPPENED TO SHELL
  96686.     AX = 002Ch
  96687.     BX = shell ID
  96688. Return: AX = status
  96689.         0000h missed completely
  96690.         0001h hit a wall
  96691.         0002h hit a robot within a 50-square radius
  96692.         0003h hit a robot within a 25-square radius
  96693.         0004h hit a robot within a 5-square radius
  96694.         0005h shell not known (too old or not yet fired)
  96695.         0006h shell still in flight
  96696. SeeAlso: AX=0003h
  96697. --------g-E0002D-----------------------------
  96698. INT E0 - PCROBOTS v1.41 - "REGISTER_X" - SELECT AUTOMATIC X POSITION UPDATES
  96699.     AX = 002Dh
  96700.     BX:CX -> X word variable
  96701. Return: AX = status (0001h OK, 0000h problem with address)
  96702. Note:    after this call, PCROBOTS will automatically update the specified
  96703.       word whenever the robot moves
  96704. SeeAlso: AX=002Eh
  96705. --------g-E0002E-----------------------------
  96706. INT E0 - PCROBOTS v1.41 - "REGISTER_Y" - SELECT AUTOMATIC Y POSITION UPDATES
  96707.     AX = 002Eh
  96708.     BX:CX -> Y word variable
  96709. Return: AX = status (0001h OK, 0000h problem with address)
  96710. Note:    after this call, PCROBOTS will automatically update the specified
  96711.       word whenever the robot moves
  96712. SeeAlso: AX=002Dh
  96713. --------g-E00080-----------------------------
  96714. INT E0 - PCROBOTS v1.41 - "CONFIGURE" - CUSTOMIZE ROBOT
  96715.     AX = 0080h
  96716.     BX = basic configuration (see #2428)
  96717.     CX = advanced configuration (see #2429)
  96718. Return: AX = status (0001h OK, 0000h not first call in program)
  96719. Program: PCROBOTS is P.D. Smith's adaptation of Tom Poindexter's CROBOTS, in
  96720.       which specially-written .COM or .EXE programs form robots battling
  96721.       each other in a user-defined arena
  96722. Notes:    a maximum of ten points may be allocated to the robot; if you attempt
  96723.       to allocate more, some items will be given a value of zero.  If this
  96724.       function is not called, each attribute is set to the default value
  96725.       of 2.
  96726.     if the invisibility option is chosen, the robot will start with only
  96727.       900 cannon shells instead of the default 1000
  96728.  
  96729. Bitfields for PCROBOTS basic configuration:
  96730. Bit(s)    Description    (Table 2428)
  96731.  0-3    maximum speed (0-4 = 50,75,100,150,200)
  96732.  4-7    maneuverability (0-4 = 20%,35%,50%,75%,100%)
  96733.  8-11    cannon range (0-4 = 300,500,700,1000,1500)
  96734.  12-15    robot armor (0-4 = 50,75,100,150,200)
  96735.  
  96736. Bitfields for PCROBOTS advanced configuration:
  96737. Bit(s)    Description    (Table 2429)
  96738.  0-2    robot acceleration (0-4 = 5,7,10,15,20)
  96739.  3    capable of invisibility
  96740. --------r-E1---------------------------------
  96741. INT E1 - IBM ROM BASIC - used while in interpreter
  96742. Notes:    called by ROM BASIC
  96743.     BASIC.COM/BASICA.COM do not restore vector on termination
  96744. --------N-E1---------------------------------
  96745. INT E1 - PC Cluster Disk Server Information (NOT A VECTOR!)
  96746. Desc:    points at a data table
  96747. SeeAlso: INT E2
  96748. --------r-E2---------------------------------
  96749. INT E2 - IBM ROM BASIC - used while in interpreter
  96750. Notes:    called by ROM BASIC
  96751.     BASIC.COM/BASICA.COM do not restore vector on termination
  96752. --------N-E2---------------------------------
  96753. INT E2 - PC Cluster Program - RELOCATED INT 1C
  96754. SeeAlso: INT 1C
  96755. --------r-E3---------------------------------
  96756. INT E3 - IBM ROM BASIC - used while in interpreter
  96757. Notes:    called by ROM BASIC
  96758.     BASIC.COM/BASICA.COM do not restore vector on termination
  96759. --------r-E40005-----------------------------
  96760. INT E4 - Logitech Modula v2.0 - MonitorEntry
  96761.     AX = 0005h
  96762.     BX = priority
  96763. SeeAlso: AX=0006h
  96764. --------r-E40006-----------------------------
  96765. INT E4 - Logitech Modula v2.0 - MonitorExit
  96766.     AX = 0006h
  96767. SeeAlso: AX=0005h
  96768. --------r-E4---------------------------------
  96769. INT E4 - IBM ROM BASIC - used while in interpreter
  96770. Notes:    called by ROM BASIC
  96771.     BASIC.COM/BASICA.COM do not restore vector on termination
  96772. --------r-E5---------------------------------
  96773. INT E5 - IBM ROM BASIC - used while in interpreter
  96774. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  96775.     BASIC.COM/BASICA.COM do not restore vector on termination
  96776. --------r-E6---------------------------------
  96777. INT E6 - IBM ROM BASIC - used while in interpreter
  96778. Notes:    called by ROM BASIC
  96779.     BASIC.COM/BASICA.COM do not restore vector on termination
  96780. --------r-E7---------------------------------
  96781. INT E7 - IBM ROM BASIC - used while in interpreter
  96782. Notes:    called by ROM BASIC
  96783.     BASIC.COM/BASICA.COM do not restore vector on termination
  96784. --------r-E8---------------------------------
  96785. INT E8 - IBM ROM BASIC - used while in interpreter
  96786. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  96787.     BASIC.COM/BASICA.COM do not restore vector on termination
  96788. --------r-E9---------------------------------
  96789. INT E9 - IBM ROM BASIC - used while in interpreter
  96790. Notes:    called by ROM BASIC
  96791.     BASIC.COM/BASICA.COM do not restore vector on termination
  96792. --------r-EA---------------------------------
  96793. INT EA - IBM ROM BASIC - used while in interpreter
  96794. Notes:    called by ROM BASIC
  96795.     BASIC.COM/BASICA.COM do not restore vector on termination
  96796. --------r-EB---------------------------------
  96797. INT EB - IBM ROM BASIC - used while in interpreter
  96798. Notes:    called by ROM BASIC
  96799.     BASIC.COM/BASICA.COM do not restore vector on termination
  96800. --------r-EC---------------------------------
  96801. INT EC - IBM ROM BASIC - used while in interpreter
  96802. Notes:    called by ROM BASIC
  96803.     BASIC.COM/BASICA.COM do not restore vector on termination
  96804. --------N-EC---------------------------------
  96805. INT EC - used by Alloy NTNX
  96806. --------r-EC---------------------------------
  96807. INT EC - Exact - RUNTIME INTERFACE MULTIPLEXOR
  96808.     AX = function number (0000h to 0140h)
  96809.     STACK:    DWORD address to return to
  96810.         any arguments required by function
  96811. Return: STACK:    return address popped, but otherwise unchanged
  96812. Desc:    this is the interface from applications to the runtime system by Exact
  96813.       Automatisering B.V. of the Netherlands.  By using this interrupt,
  96814.       it can provide DLL-style capabilities under MS-DOS.
  96815. Note:    the interrupt handler removes the return address and flags placed on
  96816.       the stack by the INT EC, then jumps to the appropriate function
  96817. --------r-ED---------------------------------
  96818. INT ED - IBM ROM BASIC - used while in interpreter
  96819. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  96820.     BASIC.COM/BASICA.COM do not restore vector on termination
  96821.     INT 80 through INT ED are modified but not restored by Direct Access
  96822.       v4.0, and may be left dangling by other programs written with the
  96823.       same version of compiled BASIC
  96824. SeeAlso: INT EC"BASIC",INT EE"BASIC"
  96825. --------r-EE---------------------------------
  96826. INT EE - IBM ROM BASIC - used while in interpreter
  96827. Notes:    called by ROM BASIC, but pointed at IRET by BASIC.COM/BASICA.COM
  96828.     BASIC.COM/BASICA.COM do not restore vector on termination
  96829. SeeAlso: INT ED"BASIC",INT EE"BASIC"
  96830. --------r-EF---------------------------------
  96831. INT EF - BASIC - ORIGINAL INT 09 VECTOR
  96832. Note:    BASIC.COM/BASICA.COM do not restore vector on termination
  96833. SeeAlso: INT EE"BASIC",INT F0"BASIC"
  96834. --------O-EF----CX0473-----------------------
  96835. INT EF - GEM - INTERFACE
  96836.     CX = 0473h
  96837.     DS:DX -> GEM parameter block
  96838. --------r-F0---------------------------------
  96839. INT F0 - BASICA.COM, GWBASIC, compiled BASIC - ORIGINAL INT 08 VECTOR
  96840. Note:    BASICA.COM does not restore vector on termination
  96841. SeeAlso: INT EF"BASIC"
  96842. --------*-F1---------------------------------
  96843. INT F1 - reserved for user interrupt
  96844. --------s-F1---------------------------------
  96845. INT F1 - SPEECH.COM - CONVERT TEXT STRING TO SPEECH
  96846.     DS:BX -> '$'-terminated text string
  96847. Program: SPEECH.COM is a resident text-to-speech converter by Douglas Sisco
  96848. --------s-F1---------------------------------
  96849. INT F1 - Andy C. McGuire SPEECH.COM/SAY.COM
  96850. SeeAlso: INT F2"SPEECH"
  96851. --------U-F1---------------------------------
  96852. INT F1 - AQUEDUCT, PIPELINE - GET DATA AREA ADDRESS
  96853. Return: AX:BX -> data area
  96854. Program: AQUEDUCT and PIPELINE are TSRs by James W. Birdsall to connect COM1
  96855.       and COM2 in software
  96856. Note:    The installation check consists of testing for the following signature
  96857.       immediately preceding the interrupt handler: "JWBtvv" where 't' is
  96858.       either "A" for AQUEDUCT or "P" for PIPELINE and "vv" is a two-digit
  96859.       version number
  96860. Index:    installation check;AQUEDUCT|installation check;PIPELINE
  96861. --------N-F1---------------------------------
  96862. INT F1 - NetWare Remote Boot - INSTALLATION CHECK (NOT A VECTOR!)
  96863. Note:    if this vector contains the value 5774654Eh ("NetW"), the remote boot
  96864.       BIOS extension is active, and access to the floppy disk is redirected
  96865.       to an image file in the server's SYS:LOGIN directory
  96866. --------v-F1---------------------------------
  96867. INT F1 - VIRUS - "Violetta" - ???
  96868. Note:    used but not chained by virus
  96869. SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
  96870. --------*-F2---------------------------------
  96871. INT F2 - reserved for user interrupt
  96872. --------s-F2---------------------------------
  96873. INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
  96874. SeeAlso: INT F1"SPEECH"
  96875. ----------F2---------------------------------
  96876. INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
  96877.     AH = function number (see #2430)
  96878.     ???
  96879. Return: ???
  96880. Program: ImageCapture is a product of International Computers
  96881. SeeAlso: INT F3"ICCTSR"
  96882.  
  96883. (Table 2430)
  96884. Values for ImageCapture function:
  96885.  01h    power up
  96886.  02h    power down
  96887.  03h    set controls
  96888.  04h    capture image
  96889.  05h    display image
  96890.  06h    read file
  96891.  07h    write file
  96892.  08h    write array
  96893.  09h    read pixel
  96894.  0Ah    write pixel
  96895.  0Bh    check if VGA present
  96896.  0Ch    set video mode
  96897.  0Dh    check for keystroke
  96898.  0Eh    delay
  96899. --------*-F3---------------------------------
  96900. INT F3 - reserved for user interrupt
  96901. --------s-F3---------------------------------
  96902. INT F3 - SoundBlaster - POINTER TO ECHO VALUE
  96903. Note:    this is not a vector, but a pointer to a DWORD containing the echo
  96904.       value selected with SET-ECHO.EXE
  96905. SeeAlso: INT 2F/AX=FBFBh
  96906. ----------F3---------------------------------
  96907. INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
  96908. Program: ImageCapture is a product of International Computers
  96909. SeeAlso: INT F2"ICCTSR"
  96910. --------*-F4---------------------------------
  96911. INT F4 - reserved for user interrupt
  96912. --------T-F4---------------------------------
  96913. INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
  96914. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT FE"DoubleDOS"
  96915. --------*-F5---------------------------------
  96916. INT F5 - reserved for user interrupt
  96917. --------T-F5---------------------------------
  96918. INT F5 - DoubleDOS - ???
  96919. --------*-F6---------------------------------
  96920. INT F6 - reserved for user interrupt
  96921. --------T-F6---------------------------------
  96922. INT F6 - DoubleDOS - ???
  96923. --------*-F7---------------------------------
  96924. INT F7 - reserved for user interrupt
  96925. --------T-F7---------------------------------
  96926. INT F7 - DoubleDOS - ???
  96927. ----------F700-------------------------------
  96928. INT F7 - FSBBS 2.0 - CONFIGURATION RECORD
  96929.     AH = 00h
  96930.     AL = function
  96931.         00h get configuration record
  96932.         Return: DS:DX -> configuration record
  96933.         01h set configuration record
  96934.         02h get path for option
  96935.         DS:DX -> option name
  96936.         Return: DS:DX -> path
  96937.         03h determine whether configuration record set
  96938.         Return: AX = status
  96939.                 0000h set
  96940.                 0001h not yet set
  96941.         04h get link state
  96942.         Return: AX = state
  96943.                 0000h unlinked
  96944.                 0001h linked
  96945. Notes:    this information is preliminary and still subject to change
  96946.     all of the INT F7 calls for FSBBS are used for interprogram
  96947.       communication between the BBS kernel and the programs it spawns
  96948. SeeAlso: AH=01h
  96949. ----------F701-------------------------------
  96950. INT F7 - FSBBS 2.0 - USER RECORD
  96951.     AH = 01h
  96952.     AL = function
  96953.         00h get user record for user currently online
  96954.         Return: DS:DX -> user record
  96955.         01h set user record
  96956.         DS:DX -> user record
  96957. SeeAlso: AH=00h,AH=02h
  96958. ----------F702-------------------------------
  96959. INT F7 - FSBBS 2.0 - GET ACCOUNT NAME
  96960.     AH = 02h
  96961. Return: DS:DX -> 8-character blank-padded account name
  96962. SeeAlso: AH=01h
  96963. ----------F703-------------------------------
  96964. INT F7 - FSBBS 2.0 - TERMINAL NUMBER
  96965.     AH = 03h
  96966.     AL = function
  96967.         00h get terminal index number
  96968.         Return: DX = index number
  96969.         01h set terminal index number
  96970.         DX = terminal index
  96971. ----------F704-------------------------------
  96972. INT F7 - FSBBS 2.0 - PASSDATA BUFFER
  96973.     AH = 04h
  96974.     AL = function
  96975.         00h get PassData buffer contents
  96976.         DS:DX -> buffer for PassData contents
  96977.         01h set PassData contents
  96978.         DS:DX -> buffer containing new PassData
  96979.         CH = length of data in buffer
  96980. ----------F705-------------------------------
  96981. INT F7 - FSBBS 2.0 - TIMER FUNCTIONS
  96982.     AH = 05h
  96983.     AL = function
  96984.         00h get time remaining
  96985.         Return: DX = number of minutes remaining
  96986.         01h get current time
  96987.         Return: DS:DX -> 8-character time string
  96988.         02h increment time
  96989.         DX = number of additional minutes
  96990.         03h decrement time
  96991.         DX = number of minutes
  96992. SeeAlso: AH=06h
  96993. ----------F706-------------------------------
  96994. INT F7 - FSBBS 2.0 - FUNCTION AVAILABILITY
  96995.     AH = 06h
  96996.     AL = function
  96997.         00h determine whether function is available
  96998.         DX = index of function
  96999.         01h set function availability
  97000.         DX = index of function
  97001.         ???
  97002. SeeAlso: AH=05h,AH=07h
  97003. ----------F707-------------------------------
  97004. INT F7 - FSBBS 2.0 - DUMP FUNCTIONS
  97005.     AH = 07h
  97006.     AL = function
  97007.         00h get current dump mode
  97008.         Return: DL = mode
  97009.         01h set dump mode
  97010.         DL = mode
  97011. SeeAlso: AH=06h
  97012. --------*-F8---------------------------------
  97013. INT F8 - reserved for user interrupt
  97014. --------h-F8---------------------------------
  97015. INT F8 - TANDY??? - 100 HZ INTERRUPT
  97016. Note:    this vector is not used on the Tandy 1000TL
  97017. SeeAlso: INT FA"USART"
  97018. --------T-F8---------------------------------
  97019. INT F8 - DoubleDOS - ???
  97020. --------*-F9---------------------------------
  97021. INT F9 - reserved for user interrupt
  97022. --------T-F9---------------------------------
  97023. INT F9 - DoubleDOS - ???
  97024. --------*-FA---------------------------------
  97025. INT FA - reserved for user interrupt
  97026. --------h-FA---------------------------------
  97027. INT FA - TANDY??? - SERIAL PORT USART INTERRUPT
  97028. Note:    this vector is not used on the Tandy 1000TL
  97029. SeeAlso: INT F8"100 HZ",INT FB"USART"
  97030. --------T-FA---------------------------------
  97031. INT FA - DoubleDOS - TURN OFF TIMESHARING
  97032. SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
  97033. --------*-FB---------------------------------
  97034. INT FB - reserved for user interrupt
  97035. --------h-FB---------------------------------
  97036. INT FB - TANDY??? - KEYBOARD USART RECEIVE INTERRUPT
  97037. SeeAlso: INT FA"USART"
  97038. --------T-FB---------------------------------
  97039. INT FB - DoubleDOS - TURN ON TIMESHARING
  97040. SeeAlso: INT 21/AH=EBh"DoubleDOS",INT FA"DoubleDOS"
  97041. --------*-FC---------------------------------
  97042. INT FC - reserved for user interrupt
  97043. --------T-FC---------------------------------
  97044. INT FC - DoubleDOS - GET CURRENT SCREEN BUFFER ADDRESS
  97045. Return: ES = segment of display buffer
  97046. Desc:    determine the address of the virtual screen to which the program
  97047.       should write instead of the actual video memory, so that the
  97048.       multitasked programs do not interfere with each other's output
  97049. Note:    the display buffer may be moved if multitasking is enabled
  97050. SeeAlso: INT 21/AH=ECh"DoubleDOS",INT FB"DoubleDOS"
  97051. --------*-FD---------------------------------
  97052. INT FD - reserved for user interrupt
  97053. --------T-FD---------------------------------
  97054. INT FD - DoubleDOS - ???
  97055. --------S-FD---------------------------------
  97056. INT FD - TFPCX - INSTALLATION CHECK
  97057.     AH = function (see separate entries below)
  97058. Program: TFPCX is an interface between modem and terminal program for packet-
  97059.       radio communications
  97060. Notes:    the installation check consists of testing for the string "N5NX" three
  97061.       bytes beyond the interrupt handler; INT FD is the default, but may
  97062.       be changed, so the full installation check consists of scanning
  97063.       for the signature
  97064.     TFPCX returns AX=FFFFh on any unsupported function call
  97065. SeeAlso: AH=01h,AH=03h,AH=FEh
  97066. --------S-FD01-------------------------------
  97067. INT FD - TFPCX - TEST FOR CHARACTER WAITING
  97068.     AH = 01h
  97069. Return: AX = status
  97070.         0000h no characters waiting
  97071.         0001h character available for input
  97072. Program: TFPCX is an interface between modem and terminal program for packet-
  97073.       radio communications
  97074. SeeAlso: AH=02h
  97075. --------S-FD02-------------------------------
  97076. INT FD - TFPCX - GET CHARACTER
  97077.     AH = 02h
  97078. Return: AL = character
  97079. Notes:    this call is only allowed if AH=01h indicated that a character is
  97080.       available
  97081.     all available characters should be read before sending any additional
  97082.       characters
  97083. SeeAlso: AH=01h,AH=03h
  97084. --------S-FD03-------------------------------
  97085. INT FD - TFPCX - OUTPUT CHARACTER
  97086.     AH = 03h
  97087.     AL = character to send
  97088. SeeAlso: AH=02h
  97089. --------S-FDFE-------------------------------
  97090. INT FD - TFPCX - GET VERSION
  97091.     AH = FEh
  97092. Return: AH = major version
  97093.     AL = minor version
  97094. Program: TFPCX is an interface between modem and terminal program for packet-
  97095.       radio communications
  97096. SeeAlso: AH=01h,AH=03h
  97097. --------B-FE---------------------------------
  97098. INT FE - AT/XT286/PS50+ - destroyed by return from protected mode
  97099. Note:    the ROM BIOS uses 0030h:0100h as the initial stack on startup, which
  97100.       is the last fourth of the interrupt vector table.  If the processor
  97101.       is returned to real mode via a hardware reset (the only possibility
  97102.       on an 80286, though there are a number of ways of generating one),
  97103.       then the BIOS startup code stacks three words on its scratch stack
  97104.       before determining that a return to real mode has been requested.
  97105.       As a result, INT FE and INT FF are corrupted.
  97106. SeeAlso: INT FF"XT286"
  97107. --------T-FE---------------------------------
  97108. INT FE - DoubleDOS - GIVE UP TIME
  97109.     AL = number of 55ms time slices to give away
  97110. Return: after other program (if active) has run
  97111. SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F4"DoubleDOS"
  97112. --------G-FE---------------------------------
  97113. INT FE - Turbo Debugger 8086 v2.5+ - OVERLAY MANAGER
  97114. SeeAlso: INT 3F
  97115. --------B-FF---------------------------------
  97116. INT FF - AT/XT286/PS50+ - destroyed by return from protected mode
  97117. Note:    (see INT FE"XT286")
  97118. SeeAlso: INT FE"XT286"
  97119. --------b-FF---------------------------------
  97120. INT FF - Z100 - WARM BOOT
  97121. SeeAlso: INT 40"Z100"
  97122. --------Q-FF---------------------------------
  97123. INT FF U - QEMM-386.SYS v6.0+ - internal
  97124. Notes:    requires that a byte in the conventional-memory stub be set to the
  97125.       desired function number (00h through 0Ch)
  97126.  
  97127. (Table 2431)
  97128. Values for QEMM internal functions:
  97129.  00h    reflect back to Virtual86-mode interrupt handler (default)
  97130.  01h    ???
  97131.  02h    access DR7???
  97132.  03h    QPI upcall (see INT 67/AH=3Fh)
  97133.  04h    ???
  97134.  05h    ???
  97135.  06h    INT 15/AH=87h
  97136.  07h    EMS services (see INT 67/AH=40h,INT 67/AH=5Dh)
  97137.  08h    ???
  97138.  09h    QEMM exception handler
  97139.  0Ah    XMS services (see INT 2F/AX=4310h)
  97140.  0Bh    Virtual DMA Services (see INT 4B/AX=8102h)
  97141.  0Ch    ???
  97142. --------v-FF---------------------------------
  97143. INT FF - VIRUS - "Violetta" - ???
  97144. Note:    used but not chained by virus
  97145. SeeAlso: INT E0"VIRUS",INT F1"VIRUS"
  97146. --------!---Admin----------------------------
  97147. Highest Table Number = 2431
  97148. --------!---FILELIST-------------------------
  97149. Please redistribute all of the files comprising the interrupt list (listed at
  97150. the beginning of the list and in INTERRUP.1ST) unmodified as a group, in a
  97151. trio of archives named INTER43A through INTER43C (preferably the original
  97152. authenticated PKZIP archives), and the utility programs in a fourth archive
  97153. called INTER43D.ZIP
  97154.  
  97155. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  97156. --------!---CONTACT_INFO---------------------
  97157. Internet: ralf@telerama.lm.com
  97158. UUCP: {uunet,harvard}!telerama.lm.com!ralf
  97159. FIDO: Ralf Brown 1:129/26.1
  97160.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  97161.     unless you address it to me)
  97162. CIS:  >INTERNET:ralf@telerama.lm.com
  97163.