home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / INTER34A.ZIP / INTERRUP.A < prev    next >
Encoding:
Text File  |  1993-04-03  |  277.4 KB  |  7,442 lines

  1. Interrupt List        Release 34            Last change 4/3/93
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in a pair of
  5. archives named INTER34A and INTER34B (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 14    \
  9.     INTERRUP.B    INT 15 through INT 1A     \   total 1111 pages at
  10.     INTERRUP.C    INT 1B through INT 21/5E  \  60 lines per page,
  11.     INTERRUP.D    INT 21/5F through INT 27   \ 1190 with INTPRINT -p
  12.     INTERRUP.E    INT 28 through INT 2F/BF   / (4719 entries)
  13.     INTERRUP.F    INT 2F/C0 through INT 4F  /
  14.     INTERRUP.G    INT 50 through INT 67     /
  15.     INTERRUP.H    INT 68 through INT FF    /
  16.     INTERRUP.PRI    a brief introduction to interrupts
  17.     INTPRINT.COM    a simple formatter that also generates a list summary
  18.     INTPRINT.DOC    instructions for INTPRINT
  19.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  20.     MEMORY.LST    format of the BIOS data area
  21.     COMBINE.BAT    combine the piece of the list into a single file
  22. The following files should be distributed in an archive called INTER34C:
  23.     INT.COM        invoke interrupts from commandline
  24.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  25.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  26.     INT2QH.*    program to convert list into QuickHelp database
  27.     INTERVUE.EXE    indexed interrupt list browser
  28.     INTHELP.*    convert list into TurboPower GUIDE database
  29.     INTLIST.E    Epsilon extension for handling list
  30.     INTLIST.ICO    Windows icon for INTERVUE
  31.     INTPRINT.C    source code for INTPRINT
  32.     RB2NG.*        convert list into Norton Guides database
  33. ---------------------------------------------
  34. If you notice any mistakes or omissions, please let me know!  It is only with
  35. YOUR help that the list can continue to grow at the current rate.  Please send
  36. all changes to me rather than distributing a modified version of the list.
  37.  
  38. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  39. that they have already been addressed.
  40.  
  41.      Ralf Brown
  42.  
  43. ARPA: ralf@cs.cmu.edu
  44. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  45. BIT:  ralf%cs.cmu.edu@carnegie
  46. FIDO: Ralf Brown 1:129/26.1
  47.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  48.     unless you address it to me)
  49. CIS:  >INTERNET:ralf@cs.cmu.edu 
  50.  
  51. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  52. because of bad return paths.  If you don't get a response from me within a
  53. reasonable period of time, send it again with a better return path (starting at
  54. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  55. ---------------------------------------------
  56. See INTERRUP.1ST for the key to system abbreviations and a list of the
  57. trademarks mentioned here.
  58. ---------------------------------------------
  59. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  60. contained in this list to the best of my ability, but I cannot be held
  61. responsible for any problems caused by use or misuse of the information,
  62. especially for those functions not officially  documented.  If it is marked
  63. "internal" or undocumented, you should check it carefully to make sure it
  64. works the same way in your version of the software (and please let me know
  65. whether or not it works the same way).    Information marked with "???" is
  66. known to be incomplete or guesswork.
  67. ---------------------------------------------
  68. The use of -> instead of = signifies that the indicated register or register
  69. pair contains a pointer to the specified item, rather than the item itself.
  70. One or more letters may follow the interrupt number; they have the following
  71. meanings:  U - undocumented function, u - partially documented function,
  72. P - available only in protected mode, R - available only in real or V86 mode,
  73. C - callout or callback (usually hooked rather than called),
  74. O - obsolete (no longer present in current versions)
  75.  
  76. The ninth column of the divider line preceding an entry usually contains a
  77. classification code (the entry has not been classified if that character is
  78. a dash).  The codes currently in use are:
  79.     A - applications, a - access software (screen readers, etc),
  80.     B - BIOS, b - vendor-specific BIOS extensions,
  81.     C - CPU-generated, c - caches/spoolers,
  82.     D - DOS kernel, d - disk I/O enhancements,
  83.     E - DOS extenders, e - electronic mail, F - FAX,
  84.     f - file manipulation, G - debuggers/debugging tools,
  85.     H - hardware, h - vendor-specific hardware,
  86.     I - IBM workstation/terminal emulators,
  87.     J - Japanese, j - joke programs, K - keyboard enhancers,
  88.     l - shells/command interpreters,
  89.     M - mouse/pointing device, m - memory management,
  90.     N - network, O - other operating systems,
  91.     P - printer enhancements, p - power management,
  92.     Q - DESQview/TopView and Quarterdeck programs,
  93.     R - remote control/file access, r - runtime support,
  94.     S - serial I/O, s - sound/speech,
  95.     T - DOS-based task switchers/multitaskers, t - TSR libraries
  96.     U - resident utilities, u - emulators,
  97.     V - video, v - virus/antivirus,
  98.     W - MS Windows, y - security, * - reserved (& not otherwise classified)
  99. --------C-00---------------------------------
  100. INT 00 - CPU-generated - DIVIDE ERROR
  101. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  102.       quotient overflows the result register; DX and AX will be unchanged.
  103. Notes:    on an 8086/8088, the return address points to the following instruction
  104.     on an 80286+, the return address points to the divide instruction
  105. SeeAlso: INT 04
  106. --------b-00---------------------------------
  107. INT 00 - Zenith - ROM DEBUGGER
  108. Desc:    invokes the ROM Debugger when at the BIOS level; equivalent to
  109.       pressing Ctrl-Alt-Ins on booting.
  110. Note:    since DOS revectors INT 00, it is necessary to restore this vector to
  111.       its original ROM BIOS value in order to invoke the debugger once DOS
  112.       loads
  113. SeeAlso: INT 03"Columbia"
  114. --------C-01---------------------------------
  115. INT 01 - CPU-generated - SINGLE STEP
  116. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  117.       cleared on invoking the single-step interrupt handler
  118. Notes:    interrupts are prioritized such that external interrupts are invoked
  119.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  120.       first instruction of the handler executes
  121.     used by debuggers for single-instruction execution tracing, such as
  122.       MS-DOS DEBUG's T command
  123. SeeAlso: INT 03
  124. --------C-01---------------------------------
  125. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  126. Desc:    generated by the CPU on various occurrences which may be of interest
  127.       to a debugger program
  128. Note:    events which may trigger the interrupt:
  129.       Instruction address breakpoint fault - will return to execute inst
  130.       Data address breakpoint trap - will return to following instruction
  131.       General detect fault, debug registers in use
  132.       Task-switch breakpoint trap
  133.       undocumented 386/486 opcode F1h - will return to following instruc
  134. SeeAlso: INT 03
  135. --------H-02---------------------------------
  136. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  137. Desc:    generated by the CPU when the input to the NMI pin is asserted
  138. Notes:    return address points to start of interrupted instruction on 80286+
  139.     although the Intel documentation states that this interrupt is
  140.       typically used for power-failure procedures, it has many other uses
  141.       on IBM-compatible machines:
  142.         Memory parity error: all except Jr, CONV, and some machines
  143.                 without memory parity
  144.         Breakout switch on hardware debuggers
  145.         Coprocessor interrupt: all except Jr and CONV
  146.         Keyboard interrupt: Jr, CONV
  147.         I/O channel check: CONV, PS50+
  148.         Disk-controller power-on request: CONV
  149.         System suspend: CONV
  150.         Real-time clock: CONV
  151.         System watch-dog timer, time-out interrupt: PS50+
  152.         DMA timer time-out interrupt: PS50+
  153.         Low battery: HP 95LX
  154.         Module pulled: HP 95LX
  155. --------C-03---------------------------------
  156. INT 03 - CPU-generated - BREAKPOINT
  157. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  158. Notes:    used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
  159.       command
  160.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  161.     return address points to byte following the breakpoint instruction
  162. SeeAlso: INT 01
  163. --------b-03---------------------------------
  164. INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
  165. Desc:    invokes the ROM Debugger if INT 03 has not been revectored; equivalent
  166.       to pressing Esc on booting.
  167. SeeAlso: INT 00"Zenith"
  168. --------G-0309--SI4647-----------------------
  169. INT 03 - Soft-ICE BACK DOOR COMMANDS
  170.     AH = 09h
  171.     SI = 4647h ('FG')
  172.     DI = 4A4Dh ('JM')
  173.     AL = function
  174.         10h display string in Soft-ICE window
  175.         DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  176.         11h execute Soft-ICE command
  177.         DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  178.         12h get breakpoint information
  179.         Return:    BH = entry number of last breakpoint set
  180.             BL = type of last breakpoint set
  181.                 00h BPM (breakpoint register types)
  182.                 01h I/O
  183.                 02h INTerrupt
  184.                 03h BPX (INT 03h-style breakpoint)
  185.                 04h reserved
  186.                 05h range
  187.             DH = entry number of last breakpoint to be triggered
  188.             DL = type of last triggered breakpoint (see above)
  189. Desc:    this API allows application programs to control some aspects of the
  190.       Soft-ICE debugger
  191. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  192. --------C-04---------------------------------
  193. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  194. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  195.       is set; otherwise, INTO is effectively a NOP
  196. Note:    may be used for convenient overflow testing (to prevent errors from
  197.       propagating) instead of JO or a JNO/JMP combination
  198. SeeAlso: INT 00
  199. --------B-05---------------------------------
  200. INT 05 - PRINT SCREEN
  201. Desc:    dump the current text screen to the first printer
  202. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  203.       may be invoked directly by applications
  204.     byte at 0050h:0000h contains status used by default handler
  205.       00h not active
  206.       01h PrtSc in progress
  207.       FFh last PrtSc encountered error
  208.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  209. SeeAlso: INT 10/AH=12h/BL=20h
  210. --------C-05---------------------------------
  211. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  212. Desc:    generated by BOUND instruction when the value to be tested is less than
  213.       the indicated lower bound or greater than the indicated upper bound.
  214. Note:    returning from this interrupt re-executes the failing BOUND instruction
  215. --------C-06---------------------------------
  216. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  217. Desc:    this interrupt is generated when the CPU attempts to execute an
  218.       invalid opcode (most protected-mode instructions are considered
  219.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  220.       which specifies a register rather than a memory address
  221. Notes:    return address points to beginning of invalid instruction
  222.     with proper programming, this interrupt may be used to emulate
  223.       instructions which do not exist; many 386 BIOSes emulate the 80286
  224.       undocumented LOADALL instruction which was removed from the 80386+
  225. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  226. --------b-06---------------------------------
  227. INT 06 C - HP 95LX - SLEEP/WAKEUP
  228. Desc:    this interrupt is called just before going into light or deep
  229.       (shutdown) sleep and just after returning from light or deep sleep
  230. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  231. --------C-07---------------------------------
  232. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  233. Desc:    this interrupt is automatically called if a coprocessor instruction is
  234.       encountered when no coprocessor is installed
  235. Note:    can be used to emulate a numeric coprocessor in software
  236. SeeAlso: INT 09"MATH UNIT PROTECTION"
  237. --------H-08---------------------------------
  238. INT 08 - IRQ0 - SYSTEM TIMER
  239. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  240.       this interrupt is used to keep the time-of-day clock updated
  241. Notes:    programs which need to be invoked regularly should use INT 1C unless
  242.       they need to reprogram the timer while still keeping the time-of-day
  243.       clock running at the proper rate
  244.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  245.     may be masked by setting bit 0 on I/O port 21h
  246. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  247. --------C-08---------------------------------
  248. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  249. Desc:    called when multiple exceptions occur on one instruction, or an
  250.       exception occurs in an exception handler
  251. Notes:    called in protected mode if an interrupt above the defined limit of
  252.       the interrupt vector table occurs
  253.     return address points at beginning of instruction with errors or the
  254.       beginning of the instruction which was about to execute when the
  255.       external interrupt caused the exception
  256.     if an exception occurs in the double fault handler, the CPU goes into
  257.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  258.       this "triple fault" is a faster way of returning to real mode on
  259.       many 80286 machines than the standard keyboard controller reset
  260. --------H-09---------------------------------
  261. INT 09 - IRQ1 - KEYBOARD DATA READY
  262. Desc:    this interrupt is generated when data is received from the keyboard.
  263.       This is normally a scan code (from either a keypress *or* a key
  264.       release), but may also be an ACK or NAK of a command on AT-class
  265.       keyboards.
  266. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  267.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  268.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  269.       before further processing; all further processing uses the scan
  270.       code returned from INT 15/AH=4Fh
  271.     the default interrupt handler is at F000h:E987h in 100%-compatible
  272.       BIOSes
  273.     the interrupt handler performs the following actions for certain
  274.       special keystrokes:
  275.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  276.              invoke INT 1B, and set flag at 0040h:0071h
  277.         SysRq     invoke INT 15/AH=85h
  278.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  279.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  280.                destination of the jump at that address)
  281.         Shift-PrtSc     invoke INT 05
  282.     DRDOS hooks this interrupt to control the cursor shape (underscore/
  283.       half block) for overwrite/insert mode
  284.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  285.       control whether Ctrl-Alt-Del reboots the current session or the
  286.       entire system
  287. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  288. SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  289.  
  290. Values for scan code:
  291.  01h    Esc         31h    N        
  292.  02h    1 !         32h    M        
  293.  03h    2 @         33h    , <         63h    F16
  294.  04h    3 #         34h    . >         64h    F17
  295.  05h    4 $         35h    / ?         65h    F18
  296.  06h    5 %         36h    Right Shift     66h    F19
  297.  07h    6 ^         37h    Grey*         67h    F20
  298.  08h    7 &         38h    Alt         68h    F21
  299.  09h    8 *         39h    SpaceBar     69h    F22
  300.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  301.  0Bh    0 )         3Bh    F1         6Bh    F24
  302.  0Ch    - _         3Ch    F2         6Ch    --
  303.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  304.  0Eh    Backspace     3Eh    F4        
  305.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  306.  10h    Q         40h    F6        
  307.  11h    W         41h    F7        
  308.  12h    E         42h    F8         72h    CrSel
  309.  13h    R         43h    F9        
  310.  14h    T         44h    F10         74h    ExSel
  311.  15h    Y         45h    NumLock         75h    --
  312.  16h    U         46h    ScrollLock     76h    Clear
  313.  17h    I         47h    Home
  314.  18h    O         48h    UpArrow
  315.  19h    P         49h    PgUp
  316.  1Ah    [ {         4Ah    Grey-
  317.  1Bh    ] }         4Bh    LeftArrow
  318.  1Ch    Enter         4Ch    Keypad 5                     
  319.  1Dh    Ctrl         4Dh    RightArrow                     
  320.  1Eh    A         4Eh    Grey+                         
  321.  1Fh    S         4Fh    End                         
  322.  20h    D         50h    DownArrow     E0h    prefix code
  323.  21h    F         51h    PgDn         E1h    prefix code
  324.  22h    G         52h    Ins         FAh    ACK
  325.  23h    H         53h    Del         FEh    RESEND
  326.  24h    J         54h    SysRq         FFh    kbd error/buffer full
  327.  25h    K
  328.  26h    L         56h    left \| (102-key)            
  329.  27h    ; :         57h    F11
  330.  28h    ' "         58h    F12        
  331.  29h    ` ~        
  332.  2Ah    Left Shift     5Ah    PA1
  333.  2Bh    \ |         5Bh    F13
  334.  2Ch    Z         5Ch    F14
  335.  2Dh    X         5Dh    F15
  336.  2Eh    C        
  337.  2Fh    V        
  338.  30h    B        
  339. Note:    scan codes 56h-E1h are only available on the extended (101/102-key)
  340.       keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
  341.       are only available on the 122-key keyboard
  342. --------C-09---------------------------------
  343. INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  344. Desc:    called if the coprocessor attempts to access memory outside a segment
  345.       boundary; it may occur at an arbitrary time after the coprocessor
  346.       instruction was issued
  347. Note:    until the condition is cleared or the coprocessor is reset, the only
  348.       coprocessor instruction which may be used is FNINIT; WAIT or other
  349.       coprocessor instructions will cause a deadlock because the
  350.       coprocessor is still busy waiting for data
  351. SeeAlso: INT 07"CPU"
  352. --------*-09---------------------------------
  353. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  354. Note:    this exception has been moved to INT 0D
  355. SeeAlso: INT 09"MATH",INT 0D
  356. --------H-0A---------------------------------
  357. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  358. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  359.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  360.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  361.       connects to the slave 8259.  The BIOS redirects the interrupt for
  362.       IRQ9 back here.
  363.     under DESQview, only the INT 15h vector and BASIC segment address (the
  364.       word at 0000h:0510h) may be assumed to be valid for the handler's
  365.       process
  366.     many VGA boards do not implement the vertical retrace interrupt,
  367.       including the IBM VGA Adapter where the traces are either cut or
  368.       removed
  369. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  370. --------H-0A---------------------------------
  371. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  372. Note:    may be masked by setting bit 2 on I/O port 21h
  373. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  374. --------H-0A---------------------------------
  375. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  376. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  377.       a jumper-selectable IRQ, but software and hardware generally defaults
  378.       to IRQ2
  379. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  380. --------C-0A---------------------------------
  381. INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  382. Desc:    automatically called during a task switch if the new TSS specified by
  383.       the task gate is invalid for any of the following reasons:
  384.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  385.         LDT selector invalid or segment not present
  386.         null SS selector, or SS selector outside LDT/GDT limit
  387.         stack segment is read-only
  388.         stack segment DPL differs from new CPL, or RPL <> CPL
  389.         CS selector is outside LDT/GDT limit or not code
  390.         non-conforming code segment's DPL differs from CPL
  391.         conforming code segment's DPL > CPL
  392.         DS/ES selectors outside LDT/GDT limit or not readable segments
  393. Note:    the handler must use a task gate in order to have a valid TSS under
  394.       which to execute; it must also reset the busy bit in the new TSS
  395. SeeAlso: INT 0B"CPU"
  396. --------H-0B---------------------------------
  397. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  398. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  399.       UART has been programmed to generate interrupts
  400. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  401.       alternate
  402.     on PS/2's, COM2 through COM8 share this interrupt; on many PC's, COM4
  403.       shares this interrupt
  404.     may be masked by setting bit 3 on I/O port 21h
  405. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  406. --------C-0B---------------------------------
  407. INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
  408. Desc:    generated when loading a segment register if the segment descriptor
  409.       indicates that the segment is not currently in memory, unless the
  410.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  411.       INT 0C"CPU") needed by a task switch
  412. Note:    may be used to implement virtual memory by loading in segments as they
  413.       are accessed, clearing the "not present" bit after loading
  414. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  415. --------h-0B---------------------------------
  416. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  417. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  418. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  419. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  420. --------H-0C---------------------------------
  421. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  422. Desc:    automatically asserted by the UART when COM2 needs attention, if the
  423.       UART has been programmed to generate interrupts
  424. Notes:    on many PC's, COM3 shares this interrupt
  425.     may be masked by setting bit 4 on I/O port 21h
  426.     this vector is modified but not restored by Direct Access v4.0, and
  427.       may be left dangling by other programs written with the same version
  428.       of compiled BASIC
  429. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  430. --------C-0C---------------------------------
  431. INT 0C - CPU-generated (80286+) - STACK FAULT
  432. Desc:    this interrupt is generated in protected mode on a stack overflow or
  433.       underflow, or if an inter-level transition or task switch references
  434.       a stack segment marked "not present"; it is generated in real mode
  435.       on accessing a word operand at SS:FFFFh
  436. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  437.       PC AT and compatibles, external circuitry generates a reset on
  438.       shutdown.
  439. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  440. --------I-0C---------------------------------
  441. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  442. Desc:    the IBM System 36/38 emulator may be invoked through a private API,
  443.       whose entry point address is offset 100h in the segment pointed at
  444.       by this vector
  445.  
  446. Call the API entry point with
  447.     AH = function
  448.         03h update screen
  449.         05h select next session
  450.         AL = session number (00h-03h)
  451.         Return: AL = session type code
  452.                 00h not active
  453.                 01h display session
  454.                 02h printer session
  455.                 FEh invalid session number
  456.             DS = requested session's data segment (0 if not active)
  457. Return: ???
  458.  
  459. Format of emulator's data area (offset from interrupt handler's segment):
  460. Offset    Size    Description
  461. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  462.         last zerod
  463. 13Fh    BYTE    bit flags for status line indicators turned off since this
  464.         byte last set to FFh
  465. 140h    WORD    offset of EBCDIC to ASCII translation
  466. 146h    WORD    offset of EBCDIC screen buffer
  467. 148h    WORD    offset of EC (engineering change) level signature
  468. 150h    BYTE    "KEYI"
  469. 151h    BYTE    5250 key scan code to be sent to remote
  470. 15Bh    BYTE    "SYSAV"
  471. 15Dh    BYTE    5250 cursor column
  472. 15Eh    BYTE    5250 cursor row
  473. 167h    BYTE    "DVCTAD"
  474. 178h    BYTE    "FLAGS"
  475. 184h    BYTE    "SESSNOAD"
  476. 193h    BYTE    "STNAD"
  477. 198h    BYTE    "NSDS"
  478. --------H-0D---------------------------------
  479. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  480. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  481.       word at 0000h:0510h) may be assumed to be valid for the handler's
  482.       process
  483.     may be masked by setting bit 5 on I/O port 21h
  484. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  485. SeeAlso: INT 7D"GO32"
  486. --------H-0D---------------------------------
  487. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  488. Desc:    used to ensure that the dynamic RAM retains its contents
  489. SeeAlso: INT 55
  490. --------h-0D---------------------------------
  491. INT 0D - HP 95LX - INFRARED INTERRUPT
  492. Desc:    this interrupt is used to perform communications over the infrared
  493.       data link
  494. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  495. --------C-0D---------------------------------
  496. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  497. Desc:    the CPU generates this interrupt when it detects a protection violation
  498.       which does not fit under any other category having a separate
  499.       interrupt
  500. Notes:    called in real mode when
  501.         an instruction accesses a word operand located at offset FFFFh in
  502.           segment CS, DS, ES, FG, or GS
  503.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  504.           in the second byte
  505.         an instruction exceeds the maximum length allowed (10 bytes for
  506.           80286, 15 bytes for 80386/80486)
  507.         an instruction wraps from offset FFFFh to offset 0000h
  508.     called in protected mode on protection violations not covered by INT 06
  509.       through INT 0C, including
  510.         segment limit violations
  511.         write to read-only segments
  512.         accesses using null DS or ES selectors
  513.         accesses to segments with privilege greater than CPL
  514.         wrong descriptor type
  515.     called on 80486 protected-mode floating-point protection fault
  516. SeeAlso: INT 09"80486",INT 0C"STACK"
  517. --------H-0E---------------------------------
  518. INT 0E - IRQ6 - DISKETTE CONTROLLER
  519. Desc:    this interrupt is generated by the floppy disk controller on
  520.       completion of an operation
  521. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  522.     may be masked by setting bit 6 on I/O port 21h
  523. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  524. --------C-0E---------------------------------
  525. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  526. Desc:    this interrupt is generated in protected and virtual-86 modes on
  527.       attempting to access a 4K memory page whose page table entry has
  528.       the "present" bit cleared
  529. Note:    used to implement virtual memory
  530. SeeAlso: INT 0B"hardware"
  531. --------h-0E---------------------------------
  532. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  533. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  534. --------H-0F---------------------------------
  535. INT 0F - IRQ7 - PARALLEL PRINTER
  536. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  537.       printer becomes ready
  538. Notes:    most printer adapters do not reliably generate this interrupt
  539.     the 8259 interrupt controller generates an interrupt corresponding to
  540.       IRQ7 when an error condition occurs
  541. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  542. --------h-0F---------------------------------
  543. INT 0F - HP 95LX - REAL-TIME CLOCK
  544. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
  545. --------C-10---------------------------------
  546. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  547. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  548.       by the coprocessor
  549. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  550.       get it right
  551. SeeAlso: INT 09"hardware",INT 75
  552. --------V-1000-------------------------------
  553. INT 10 - VIDEO - SET VIDEO MODE
  554.     AH = 00h
  555.     AL = mode (see below)
  556. Return: AL = video mode flag (Phoenix BIOS)
  557.         20h mode > 7
  558.         30h modes 0-5 and 7
  559.         3Fh mode 6
  560.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  561. Desc:    specify the display mode for the currently active display adapter
  562. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  563.       (EGA or higher only)
  564.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  565.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  566.       Everex EV-673
  567.     the installation check for Ahead adapters is the signature "AHEAD" at
  568.       C000h:0025h
  569.     the installation check for Paradise adapters is the signature "VGA=" at
  570.       C000h:007Dh
  571.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  572.       signature "OAK VGA" at C000h:0008h
  573.     the installation check for ATI adapters is the signature "761295520" at
  574.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  575.         31h for 18800
  576.         32h for 18800-1
  577.         33h for 18800-2
  578.         34h for 18800-4
  579.         35h for 18800-5
  580.       the two bytes at C000h:0040h indicate the adapter type
  581.         "22" EGA Wonder
  582.         "31" VGA Wonder
  583.         "32" EGA Wonder800+
  584.       the byte at C000h:0042h contains feature flags
  585.         bit 1: mouse port present
  586.         bit 4: programmable video clock
  587.       the byte at C000h:0044h contains additional feature flags if chipset
  588.         byte > 30h (see below)
  589.     the installation check for Genoa video adapters is the signature
  590.       77h XXh 99h 66h at C000h:0037h, where XXh is
  591.         00h for Genoa 6200/6300
  592.         11h for Genoa 6400/6600
  593.         22h for Genoa 6100
  594.         33h for Genoa 5100/5200
  595.         55h for Genoa 5300/5400
  596.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  597.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  598.         "EXTMODE", indicating support for extended modes
  599. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  600. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
  601. Index:    installation check;Tseng ET4000|installation check;Ahead video cards
  602. Index:    installation check;Oak Technologies|installation check;ATI video cards
  603. Index:    installation check;Paradise video|installation check;Genoa video cards
  604.  
  605. Bitfields for ATI additional feature flags:
  606.  bit 0    70 Hz non-interlaced display
  607.  bit 1    Korean (double-byte) characters
  608.  bit 2    45 MHz memory clock rather than 40 MHz
  609.  bit 3    zero wait states
  610.  bit 4    paged ROMs
  611.  bit 6    no 8514/A monitor support
  612.  bit 7    HiColor DAC
  613.  
  614. Values for video mode:
  615.       text/ text pixel     pixel    colors    disply    scrn  system
  616.       grph resol  box    resoltn        pages    addr
  617.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  618.      = T   40x25  8x14        16gray       8    B800 EGA
  619.      = T   40x25  8x16          16       8    B800 MCGA
  620.      = T   40x25  9x16          16       8    B800 VGA
  621.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  622.      = T   40x25  8x14          16       8    B800 EGA
  623.      = T   40x25  8x16          16       8    B800 MCGA
  624.      = T   40x25  9x16          16       8    B800 VGA
  625.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  626.      = T   80x25  8x14        16gray       4    B800 EGA
  627.      = T   80x25  8x16          16       4    B800 MCGA
  628.      = T   80x25  9x16          16       4    B800 VGA
  629.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  630.      = T   80x25  8x14          16       4    B800 EGA
  631.      = T   80x25  8x16          16       4    B800 MCGA
  632.      = T   80x25  9x16          16       4    B800 VGA
  633.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  634.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  635.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  636.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  637.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  638.      = T   80x25  9x16         mono        B000 VGA
  639.  08h = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder [1]
  640.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder [1]
  641.      = G   20x25  8x8    160x200      16             PCjr, Tandy 1000
  642.      = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  643.  09h = G   40x25  8x8    320x200      16             PCjr
  644.  0Ah = G   80x25  8x8    640x200       4             PCjr, Tandy 1000
  645.  0Bh =     reserved (used internally by EGA BIOS)
  646.      = G        640x200      16             Tandy 1000 SL/TL
  647.  0Ch =     reserved (used internally by EGA BIOS)
  648.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  649.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  650.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  651.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  652.      = G        640x350      16        A000 256k EGA,VGA
  653.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  654.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  655.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  656.      = G        640x480      16             UltraVision+256K EGA
  657.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  658.  14h = T  132x25  Nx16          16             XGA, IBM Enhanced VGA [2]
  659.      = G   80x25  8x8    640x200                 Lava Chrome II EGA
  660.      = G        640x400      16             Tecmar VGA/AD
  661.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  662.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  663.      = G        800x600      16             Tecmar VGA/AD
  664.  17h = T  132x25                     Tecmar VGA/AD
  665.      = T   80x43  8x8    640x350   16       4    B800 Tseng ET4000 BIOS [10]
  666.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  667.  18h = T  132x25         mono        B000 Cirrus 5320 chipset
  668.      = T  132x44  8x8         mono             Tseng Labs EVA
  669.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  670.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  671.      = G           1024x768      16             Tecmar VGA/AD
  672.  19h = T  132x25  8x14         mono             Tseng Labs EVA
  673.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  674.      = T  132x34         mono        B000 Cirrus 5320 chipset
  675.  1Ah = T  132x28  8x13         mono             Tseng Labs EVA
  676.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  677.      = T  132x44         mono        B000 Cirrus 5320 chipset
  678.      = G        640x350     256             Tecmar VGA/AD
  679.  1Bh = G        640x400     256             Tecmar VGA/AD
  680.  1Ch = T  132x25                     Cirrus 5320 chipset
  681.      = G        640x480     256             Tecmar VGA/AD
  682.  1Dh = T  132x43                     Cirrus 5320 chipset
  683.      = G        800x600     256             Tecmar VGA/AD
  684.  1Eh = T  132x44                     Cirrus 5320 chipset
  685.  1Fh = G        800x600      16             Realtek RTVGA
  686.  20h = G        240x128            B000 HP 95LX
  687.  21h = T  132x60          16       2    B800 Tseng ET4000 chipset [10]
  688.      = T  132x44  9x9  1188x396     16/256k    B800 WD90C
  689.      = T  132x44  9x9          16        B800 Diamond Speedstar 24X
  690.      = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules [3]
  691.      = G           1024x768      16             Realtek RTVGA
  692.  22h = T  132x44  8x8                     Tseng Labs EVA
  693.      = T  132x44  8x8         16/256       2    B800 Tseng ET4000 chipset
  694.      = T  132x44  8x8                     Ahead Systems EGA2001
  695.      = T  132x44  8x8          16       2    B800 Ahead B
  696.      = T  132x44          16             Orchid Prodesigner VGA
  697.      = T  132x43                     Allstar Peacock (VGA)
  698.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules [3]
  699.  23h = T  132x25  6x14                     Tseng Labs EVA
  700.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  701.      = T  132x25  8x14                     Ahead Systems EGA2001
  702.      = T  132x25  8x14          16       4    B800 Ahead B
  703.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  704.      = T  132x25                     Cirrus 5320 chipset
  705.      = T  132x28                     Allstar Peacock (VGA)
  706.      = T  132x28          16             Orchid Prodesigner VGA
  707.  24h = T  132x25                     Allstar Peacock (VGA)
  708.      = T  132x25          16             Orchid Prodesigner VGA
  709.      = T  132x28  6x13                     Tseng Labs EVA
  710.      = T  132x28  8x13         16/256       4    B800 Tseng ET4000 chipset
  711.      = T  132x28  8x12          16       1    B800 Ahead B
  712.      = T  132x28                     Cirrus 5320 chipset
  713.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  714.      = G   80x60  8x8    640x480     16/256       1    A000 Tseng ET4000 chipset
  715.      = G        640x480      16             VEGA VGA
  716.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  717.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  718.      = G        640x480      16             NEC GB-1
  719.      = G        640x480      16             Cirrus 5320 chipset
  720.      = G        640x400     256             Realtek RTVGA
  721.  26h = T   80x60  8x8                     Tseng Labs EVA
  722.      = T   80x60  8x8         16/256       2    B800 Tseng ET4000 chipset
  723.      = T   80x60                     Allstar Peacock (VGA)
  724.      = T   80x60          16             Orchid ProDesigner VGA
  725.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  726.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  727.      = G        640x480     256             Realtek RTVGA
  728.  27h = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  729.      = G        720x512      16             VEGA VGA
  730.      = G        720x512      16             Genoa
  731.      = G        800x600     256             Realtek RTVGA
  732.  28h = T  ???x???                     VEGA VGA
  733.      = G           1024x768     256             Realtek RTVGA (1meg)
  734.  29h = G        800x600      16             VEGA VGA
  735.      = G  100x37  8x16    800x600      16        A000 Orchid
  736.      = G        800x600      16        A000 STB,Genoa,Sigma
  737.      = G        800x600      16             Allstar Peacock (VGA)
  738.      = G  100x37  8x16    800x600     16/256       1    A000 Tseng ET3000/4000 chipset
  739.      = G        800x600     ???             EIZO MDB10
  740.      = G        800x600      16             Cirrus 5320 chipset
  741.  2Ah = T  100x40                     Allstar Peacock (VGA)
  742.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  743.      = T  100x40  8x15        16/256       4    B800 Tseng ET4000 chipset
  744.      = G           1280x1024 256             Realtek RTVGA
  745.  2Dh = G        640x350     256             VEGA VGA
  746.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  747.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET3000/4000 chipset
  748.      = G        640x350     256             Cirrus 5320 chipset
  749.  2Eh = G        640x480     256             VEGA VGA
  750.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  751.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  752.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET3000/4000 chipset
  753.  2Fh = T  160x50  8x8  1280x400      16       4    B800 Ahead B (Wizard/3270)
  754.      = G        720x512     256             VEGA VGA
  755.      = G        720x512     256             Genoa
  756.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  757.  30h = G        800x600     256             VEGA VGA
  758.      = G  100x37  8x16    800x600 256/256k    A000 Orchid 
  759.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  760.      = G        720x350       2             3270 PC
  761.      = G        800x600     256             Cardinal
  762.      = G        ???x???            B800 AT&T 6300
  763.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET3000/4000 chipset
  764.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  765.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  766.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  767.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  768.  36h = G        960x720      16             VEGA VGA
  769.      = G        960x720      16             STB
  770.      = G        960x720      16             Tseng ET3000 only
  771.  37h = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  772.      = G           1024x768      16             VEGA VGA
  773.      = G  128x48  8x16 1024x768      16        A000 Orchid
  774.      = G           1024x768      16        A000 STB,Genoa,Sigma
  775.      = G           1024x768      16             Definicon
  776.      = G  128x48  8x16 1024x768      16       1    A000 Tseng ET3000/4000
  777.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  778.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  779.      = G           1024x768     256             Orchid ProDesigner II
  780.  3Dh = G           1280x1024  16             Definicon
  781.      = G  128x64  8x16 1280x1024  16       1    A000 Tseng ET4000 v3.00 [6,8]
  782.  3Eh = G           1280x961      16             Definicon
  783.  40h = T   80x43                     VEGA VGA, Tecmar VGA/AD
  784.      = T   80x43                     Video7 V-RAM VGA
  785.      = T   80x43                     Tatung VGA
  786.      = T  100x30          16             MORSE VGA
  787.      = T  100x30                     Cirrus 510/520 chipset
  788.      = T   80x25    720x350     mono             Genoa SuperEGA BIOS 3.0+
  789.      = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  790.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  791.  41h = T  132x25                     VEGA VGA
  792.      = T  132x25                     Tatung VGA
  793.      = T  132x25                     Video7 V-RAM VGA
  794.      = T  100x50          16             MORSE VGA
  795.      = T  100x50                     Cirrus 510/520 chipset
  796.      = T   80x34  9x14    720x476     16/256k    B800 WD90C
  797.      = T   80x34  9x14          16        B800 Diamond Speedstar 24X
  798.      = G        640x200      16       1         AT&T 6300
  799.      = G   80x25    720x348     mono        B000 Genoa SuperEGA BIOS 3.0+
  800.  42h = T  132x43                     VEGA VGA
  801.      = T  132x43                     Tatung VGA
  802.      = T  132x43                     Video7 V-RAM VGA
  803.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  804.      = T  100x60          16             MORSE VGA
  805.      = T  100x60                     Cirrus 510/520 chipset
  806.      = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  807.      = G   80x25    720x348     mono        B800 Genoa SuperEGA BIOS 3.0+
  808.  43h = T   80x60                     VEGA VGA
  809.      = T   80x60                     Tatung VGA
  810.      = T   80x60                     Video7 V-RAM VGA
  811.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  812.      = T  100x75          16             MORSE VGA
  813.      = T   80x29    720x348     mono             Genoa SuperEGA BIOS 3.0+
  814.      = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  815.  44h =     disable VDC and DEB output             AT&T 6300
  816.      = T  100x60                     VEGA VGA
  817.      = T  100x60                     Tatung VGA
  818.      = T  100x60                     Video7 V-RAM VGA
  819.      = T   80x32    720x352     mono             Genoa SuperEGA BIOS 3.0+
  820.  45h = T  132x28                     Tatung VGA
  821.      = T  132x28                     Video7 V-RAM VGA
  822.      = T   80x44    720x352     mono             Genoa SuperEGA BIOS 3.0+
  823.  46h = T  132x25  8x14         mono             Genoa 6400
  824.      = T  132x25  9x14         mono             Genoa SuperEGA BIOS 3.0+
  825.      = G  100x40  8x15    800x600       2             AT&T VDC600
  826.  47h = T  132x29  8x12         mono             Genoa 6400
  827.      = T  132x29  9x12         mono             Genoa SuperEGA BIOS 3.0+
  828.      = T  132x28  9x16 1188x448     16/256k    B800 WD90C
  829.      = T  132x28  9x16          16        B800 Diamond Speedstar 24X
  830.      = G  100x37  8x16    800x600      16             AT&T VDC600
  831.  48h = T  132x32  8x12         mono             Genoa 6400
  832.      = T  132x32  9x11         mono             Genoa SuperEGA BIOS 3.0+
  833.      = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  834.  49h = T  132x44  8x8         mono             Genoa 6400
  835.      = T  132x44  9x8         mono             Genoa SuperEGA BIOS 3.0+
  836.      = G   80x30  8x16    640x480                 Lava Chrome II EGA
  837.  4Dh = T  120x25                     VEGA VGA
  838.  4Eh = T  120x43                     VEGA VGA
  839.      = T   80x60  8x8         16/256k    B800 Oak OTI-067/OTI-077 [7]
  840.  4Fh = T  132x25                     VEGA VGA
  841.      = T  132x60                     some Oak Tech VGA [7]
  842.  50h = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  843.      = T   80x34                     Lava Chrome II EGA
  844.      = T   80x43         mono             VEGA VGA
  845.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  846.      = T  132x25  9x14           4       4    B800 Ahead B
  847.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  848.      = T  132x25  8x14         16/256k    B800 Oak OTI-037/067/077 [7]
  849.      = T  132x30          16             MORSE VGA
  850.      = T  132x30                     Cirrus 510/520 chipset
  851.      = G   80x30  8x16    640x480      16             Paradise EGA-480
  852.      = G   80x30  8x16    640x480      16             NEL Electronics BIOS
  853.      = G        640x480     mono???         Taxan 565 EGA
  854.      = G   40x25  8x8    320x200                 Genoa SuperEGA BIOS 3.0+
  855.  51h = T   80x30  8x16                     Paradise EGA-480
  856.      = T   80x30  9x16                     NEL Electronics BIOS
  857.      = T   80x30                     Lava Chrome II EGA
  858.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  859.      = T  132x25         mono             VEGA VGA
  860.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  861.      = T  132x43  8x8        16/256k        B800 Oak OTI-037/067/077
  862.      = T  132x28  9x12           4       4    B800 Ahead B
  863.      = T  132x50          16             MORSE VGA
  864.      = T  132x50                     Cirrus 510/520 chipset
  865.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  866.      = G   80x25  8x8    640x200                 Genoa SuperEGA BIOS 3.0+
  867.  52h = T   80x60                     Lava Chrome II EGA
  868.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  869.      = T  132x43         mono             VEGA VGA
  870.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  871.      = T  132x44  9x8           4       2    B800 Ahead B
  872.      = T  132x60          16             MORSE VGA
  873.      = T  132x60                     Cirrus 510/520 chipset
  874.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  875.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  876.      = G  100x75  8x8    800x600      16        A000 Oak OTI-037 chipset [7]
  877.      = G  100x37  8x16    800x600      16        A000 Oak OTI-067/077 chips [7]
  878.      = G  128x30  8x16 1024x480      16             NEL Electronics BIOS
  879.  53h = T   80x25  8x16                     NEL Electronics BIOS
  880.      = T   80x60          16             MORSE VGA
  881.      = T   80x60                     Cirrus 510/520 chipset
  882.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  883.      = T  132x43                     Lava Chrome II EGA
  884.      = G        640x480     256             Oak VGA
  885.      = G   80x30  8x16    640x480     256        A000 Oak OTI-067/OTI-077 [7]
  886.      = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  887.      = G                         AX PC
  888.  54h = T  132x25                     Lava Chrome II EGA
  889.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  890.      = T  132x43  8x8                     Paradise EGA-480
  891.      = T  132x43  8x8                     NEL Electronics BIOS
  892.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  893.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  894.      = T  132x43                     Taxan 565 EGA
  895.      = T  132x43                     AST VGA Plus
  896.      = T  132x43                     Hewlett-Packard D1180A
  897.      = T  132x43  7x9          16             AT&T VDC600
  898.      = T  132x43  9x9  1188x387     16/256k    B800 WD90C
  899.      = T  132x43  9x9          16        B800 Diamond Speedstar 24X
  900.      = T  132x50  8x8          16        A000 NCR 77C22 [9]
  901.      = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wonder
  902.      = G  100x42  8x14    800x600      16        A000 ATI Ultra 8514A, ATI XL
  903.      = G        800x600     256        A000 Oak VGA    
  904.      = G  100x37  8x16    800x600     256        A000 Oak OTI-067/077 chips [7]
  905.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  906.      = T  132x25  8x14                     Paradise EGA-480
  907.      = T  132x25  8x14                     NEL Electronics BIOS
  908.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  909.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  910.      = T  132x25                     Taxan 565 EGA
  911.      = T  132x25                     AST VGA Plus
  912.      = T  132x25                     Hewlett-Packard D1180A
  913.      = T  132x25  7x16          16             AT&T VDC600
  914.      = T  132x25  8x16          16        A000 NCR 77C22 [9]
  915.      = T  132x25  9x16 1188x400     16/256k    B800 WD90C
  916.      = T  132x25  9x16          16        B800 Diamond Speedstar 24X
  917.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  918.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  919.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     [4]
  920.      = G           1024x768     16/256k         ATI VGA Wonder Plus
  921.      = G           1024x768     16/256k         ATI Ultra 8514A,ATI XL
  922.      = G  128x48  8x16 1024x768       4        A000 Oak OTI-067/077 chips [7]
  923.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  924.      = T  132x43  7x9           4        B000 Paradise VGA
  925.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  926.      = T  132x43         mono             Taxan 565 EGA
  927.      = T  132x43  7x9           2             AT&T VDC600
  928.      = T  132x43  9x8                     NEL Electronics BIOS
  929.      = T  132x50  8x8           4        A000 NCR 77C22 [9]
  930.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  931.      = G           1024x768      16        A000 Oak VGA
  932.      = G  128x48  8x16 1024x768      16        A000 Oak OTI-067/077 chips [7]
  933.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  934.      = T  132x25  7x16           4        B000 Paradise VGA
  935.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  936.      = T  132x25  9x14                     NEL Electronics BIOS
  937.      = T  132x25         mono             Taxan 565 EGA
  938.      = T  132x25  7x16           2             AT&T VDC600
  939.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  940.      = T  132x25  8x16           4        A000 NCR 77C22 [9]
  941.      = G   96x48  8x16    768x1024  16        A000 Oak OTI-067/077 chips [7]
  942.  58h = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  943.      = T   80x32  9x16          16             Genoa 6400
  944.      = T   80x43  8x8                     NEL Electronics BIOS
  945.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  946.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  947.      = G  100x75  8x8    800x600      16             AT&T VDC600
  948.      = G  100x75  8x8    800x600      16        A000 NCR 77C22 [9]
  949.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  950.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA, WD90C
  951.      = G        800x600      16             AST VGA Plus, Compaq VGA
  952.      = G        800x600      16             Dell VGA
  953.      = G        800x600      16             Hewlett-Packard D1180A
  954.      = G        800x600     ???             ELT VGA PLUS 16
  955.      = G  160x64  8x16 1280x1024  16        A000 Oak OTI-077 chipset [7]
  956.  59h = T   80x43  9x8                     NEL Electronics BIOS
  957.      = T   80x66  8x8         16/256k    A000 ATI VIP
  958.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  959.      = G  100x75  8x8    800x600       2        A000 Paradise VGA
  960.      = G  100x75  8x8    800x600       2             AT&T VDC600
  961.      = G        800x600       2             AST VGA Plus, Compaq VGA
  962.      = G        800x600       2             Dell VGA
  963.      = G        800x600       2             Hewlett-Packard D1180A
  964.      = G  100x75  8x8    800x600       2        A000 NCR 77C22 [9]
  965.      = G  128x48  8x16 1024x768     256        A000 Oak OTI-077 chipset [7]
  966.  5Ah = T   80x60  8x8                     NEL Electronics BIOS
  967.      = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  968.      = G  128x48  8x16 1024x768       2        A000 NCR 77C22 [9]
  969.  5Bh = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  970.      = G        640x350     256             Genoa 6400
  971.      = G   80x25  8x16    640x400      32K        A000 Oak OTI-067/077 chips [7]
  972.      = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  973.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  974.      = G        800x600     ???             Vobis MVGA
  975.      = G  100x37  8x16    800x600                 NEL Electronics BIOS
  976.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [8,9]
  977.  5Ch = T  100x37  8x16                     NEL Electronics BIOS
  978.      = G        640x400     256             Logix, ATI Prism Elite
  979.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  980.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach, Hi Res 512
  981.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  982.      = G   80x30  8x16    640x480     256             Genoa 6400
  983.      = G   80x30  8x16    640x480      32K        A000 Oak OTI-077 chipset [7]
  984.      = G  100x75  8x8    800x600     256        A000 NCR 77C22 [9]
  985.      = G  100x75  8x8    800x600     256/256k    A000 WD90C
  986.      = G  100x75  8x8    800x600     256/256k    A000 Diamond Speedstar 24X
  987.  5Dh = T  100x75  8x8                     NEL Electronics BIOS
  988.      = G        640x480     256             Logix, ATI Prism Elite
  989.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  990.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach, Hi Res 512
  991.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  992.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [9]
  993.      = G  128x48  8x16 1024x768      16/256k    A000 WD90C
  994.      = G  128x48  8x16 1024x768      16             Diamond Speedstar 24X
  995.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  996.      = G        640x400     256             AST VGA Plus, NCR 77C22
  997.      = G        640x400     256             Compaq VGA, Dell VGA
  998.      = G   80x25  8x16    640x400     256             AT&T VDC600
  999.      = G   80x25  8x16    640x400     256        A000 NCR 77C22 [9]
  1000.      = G   80x25  8x16    640x400     256/256k    A000 WD90C
  1001.      = G   80x25  8x16    640x400  256/256k    A000 Diamond Speedstar 24X
  1002.      = G        800x600      16             Logix, ATI Prism Elite
  1003.      = G  100x37  8x16    800x600      16             NEL Electronics BIOS
  1004.      = G  100x75  8x8    800x600     256             Genoa 6400
  1005.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  1006.      = G  100x75  8x8    800x600     256/256k    A000 Hi Res 512
  1007.  5Fh = G        640x480     256             Paradise VGA
  1008.      = G        640x480     256             AST VGA Plus, NCR 77C22
  1009.      = G        640x480     256             Compaq VGA, Dell VGA
  1010.      = G        640x480     256             Hewlett-Packard D1180A
  1011.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  1012.      = G   80x30  8x16    640x480     256        A000 NCR 77C22 [9]
  1013.      = G   80x30  8x16    640x480     256/256k    A000 WD90C
  1014.      = G   80x30  8x16    640x480     256/256k    A000 Diamond Speedstar 24X
  1015.      = G           1024x768      16             Logix, ATI Prism Elite
  1016.      = G           1024x768      16             Maxxon, Imtec
  1017.      = G  128x48  8x16 1024x768      16             Genoa 6400
  1018.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach, Hi Res 512
  1019.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  1020.  60h = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  1021.      = T  132x25  8x14          16             Genoa 6400
  1022.      = T  132x25  8x14          16             Genoa SuperEGA BIOS 3.0+
  1023.      = T  132x25                     Cirrus 5320 chipset
  1024.      = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  1025.      = G   80x25  8x16    640x400     256       1    A000 Ahead A, Ahead B
  1026.      = G        752x410                 VEGA VGA
  1027.      = G        752x410      16             Tatung VGA
  1028.      = G        752x410      16             Video7 V-RAM VGA
  1029.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  1030.      = G  128x48  8x16 1024x768     256/256k    A000 WD90C
  1031.      = G  128x48  8x16 1024x768     256/256k    A000 Diamond Speedstar 24X
  1032.  61h = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  1033.      = T  132x29  8x8          16             Genoa 6400
  1034.      = T  132x29  8x8          16             Genoa SuperEGA BIOS 3.0+
  1035.      = T  132x50                     Cirrus 5320 chipset
  1036.      = G        ???x400                 Corona/Cordata BIOS 4.10+
  1037.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder,VGA Wonder+
  1038.      = G   80x25  8x16    640x400     256        A000 ATI Ultra 8514A,ATI XL
  1039.      = G   80x30  8x16    640x480     256       1    A000 Ahead A, Ahead B (512K)
  1040.      = G        720x540                 VEGA VGA
  1041.      = G        720x540      16             Tatung VGA
  1042.      = G        720x540      16             Video7 V-RAM VGA
  1043.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  1044.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [8,9]
  1045.  62h = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  1046.      = T  132x32  8x12          16             Genoa 6400
  1047.      = T  132x32  8x11          16             Genoa SuperEGA BIOS 3.0+
  1048.      = G        640x450      16             Cirrus 510/520 chipset
  1049.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder,VGA Wonder+
  1050.      = G   80x30  8x16    640x480     256        A000 ATI Ultra 8514A,ATI XL
  1051.      = G   80x30  8x16    640x480     32K        A000 WD90C
  1052.      = G   80x30  8x16    640x480     32K        A000 Diamond Speedstar 24X
  1053.      = G        800x600                 VEGA VGA
  1054.      = G        800x600      16             Tatung VGA
  1055.      = G        800x600      16             Video7 V-RAM VGA
  1056.      = G  100x75  8x8    800x600     256       1    A000 Ahead A, Ahead B (512K)
  1057.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  1058.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [9]
  1059.  63h = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  1060.      = T  132x44  8x8          16             Genoa 6400
  1061.      = T  132x44  8x8          16             Genoa SuperEGA BIOS 3.0+
  1062.      = G        720x540      16             MORSE VGA
  1063.      = G        720x540      16             Cirrus 510/520 chipset
  1064.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder,VGA Wonder+
  1065.      = G  100x42  8x14    800x600     256        A000 ATI Ultra 8514A,ATI XL
  1066.      = G        800x600     32K        A000 WD90C
  1067.      = G        800x600     32K        A000 Diamond Speedstar 24X
  1068.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  1069.      = G           1024x768       2             Video7 V-RAM VGA
  1070.  64h = T  132x60  8x8          16             Genoa 6400
  1071.      = G        800x600      16             MORSE VGA
  1072.      = G        800x600      16             Cirrus 510/520 chipset
  1073.      = G        800x600     ???             SAMPO-Mira VGA
  1074.      = G           1024x768       4             Video7 V-RAM VGA
  1075.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus,ATI XL
  1076.      = G  160x64  8x16 1280x1024 16/256k    A000 WD90C [8]
  1077.      = G  160x64  8x16 1280x1024 16/256k    A000 Diamond Speedstar 24X [8]
  1078.  65h = G           1024x768      16             Video7 V-RAM VGA
  1079.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  1080.  66h = G        640x400     256             Tatung VGA
  1081.      = G        640x400     256             Video7 V-RAM VGA
  1082.      = T   80x50  8x8    640x400     16/256k    B800 WD90C
  1083.      = T   80x50  8x8          16        B800 Diamond Speedstar 24X
  1084.  67h = G        640x480     256             Video7 V-RAM VGA
  1085.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  1086.      = G  160x64  8x16 1280x1024  16        A000 NCR 77C22 [8,9]
  1087.      = T   80x43  8x8    640x344     16/256k    B800 WD90C
  1088.      = T   80x43  8x8          16        B800 Diamond Speedstar 24X
  1089.  69h = G        720x540     256             Video7 V-RAM VGA
  1090.      = T  132x50  8x8  1056x400     16/256k    B800 WD90C
  1091.      = T  132x50  8x8          16        B800 Diamond Speedstar 24X
  1092.  6Ah = G        800x600      16        A000 VESA standard interface
  1093.      = G  100x75  8x8    800x600      16             Genoa 6400
  1094.      = G  100x75  8x8    800x600      16             Diamond Speedstar 24X
  1095.      = G        800x600      16        A000 Ahead A
  1096.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  1097.      = G        800x600      16             Zymos Poach, Hi Res 512
  1098.      = G        800x600      16             Epson LT-386SX in CRT Mode
  1099.      = G        800x600      16             Compuadd 316SL in CRT Mode
  1100.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  1101.      = G  160x64  8x16 1280x1024 256        A000 NCR 77C22 [8,9]
  1102.  6Bh = T  100x37  8x16          16             Genoa 6400
  1103.      = T  100x37  8x16                     NEL Electronics BIOS
  1104.  6Ch = G  100x75  8x8    800x600     256             Genoa 6400
  1105.      = G  160x60  8x16 1280x960     16/256k    A000 WD90C [8]
  1106.      = G  160x60  8x16 1280x960     16/256k    A000 Diamond Speedstar 24X [8]
  1107.  70h =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  1108.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  1109.      = T   40x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1110.      = G        360x480     256             Cirrus 510/520/5320 chips
  1111.      = G   90x28  8x14    720x392      16       1    A000 Ahead B
  1112.      = G        800x600      16             C&T chipset, Cardinal
  1113.  71h = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  1114.      = T   80x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1115.      = G        528x400     256             Cirrus 510/520 chipset
  1116.      = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  1117.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  1118.      = G        960x720      16             C&T chipset, Cardinal
  1119.  72h = T   80x60  8x8          16        B800 Quadram Ultra VGA
  1120.      = T   80x60  8x8          16        B800 Genoa 6400
  1121.      = T   80x60  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1122.      = G        528x480     256             Cirrus 510/520 chipset
  1123.      = G        640x480 32768        A000 ATI
  1124.      = G        640x480     16M        A000 WD90C
  1125.      = G        640x480     16M        A000 Diamond Speedstar 24X
  1126.      = G           1024x768      16             C&T chipset, Cardinal
  1127.  73h = G   80x60  8x8    640x480      16        A000 Quadram Ultra VGA
  1128.      = G   80x60  8x8    640x480      16             Genoa 6400
  1129.      = G   80x60  8x8    640x480      16             Genoa SuperEGA BIOS 3.0+
  1130.  74h = T   80x66  8x8          16        B800 Quadram Ultra VGA
  1131.      = T   80x66  8x8          16        B800 Genoa 6400
  1132.      = T   80x66  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1133.      = G        640x400       2        B800 Toshiba 3100 AT&T mode
  1134.      = G  128x48  8x16 1024x768      16       1    A000 Ahead A, Ahead B (512K)
  1135.  75h = G  128x48  8x16 1024x768       4       1    A000 Ahead B
  1136.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  1137.      = G   80x66    640x528      16             Genoa SuperEGA BIOS 3.0+
  1138.  76h = T   94x29  8x14          16        B800 Quadram Ultra VGA
  1139.      = T   94x29  8x14                     Genoa SuperEGA BIOS 3.0+
  1140.      = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  1141.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  1142.      = G   94x29    752x410      16             Genoa SuperEGA BIOS 3.0+
  1143.  78h = T  100x37  8x16          16             Genoa 6400
  1144.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  1145.      = T  100x75  8x8                     Genoa SuperEGA BIOS 3.0+
  1146.      = G        640x400     256             STB VGA/EM-16 Plus
  1147.      = G        640x400     256             Cardinal, C&T chipset
  1148.      = G        640x400     256             Cirrus 5320 chipset
  1149.  79h = G        640x480     256             Cardinal, C&T chipset
  1150.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  1151.      = G  100x75  8x8    800x600      16             Genoa SuperEGA BIOS 3.0+
  1152.      = G  100x75  8x8    800x600      16             Genoa 6400
  1153.  7Ah = T  114x60  8x8          16        B800 Quadram Ultra VGA
  1154.      = T  114x60  8x8                     Genoa SuperEGA BIOS 3.0+
  1155.      = G        720x540     256             C&T chipset, Cardinal
  1156.  7Bh = G        800x600     256             C&T chipset, Cardinal
  1157.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  1158.      = G        912x480      16             Genoa SuperEGA BIOS 3.0+
  1159.  7Ch = G        512x512      16             Genoa
  1160.  7Dh = G   64x32  8x16    512x512     256             Genoa
  1161.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  1162.      = G   80x25  8x16    640x400     256             Genoa 6400
  1163.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  1164.      = G  128x48  8x16 1024x768       4             Genoa 6400
  1165.  82h = T   80x25         B&W             AT&T VDC overlay mode [5]
  1166.  83h = T   80x25                     AT&T VDC overlay mode [5]
  1167.  86h = G        640x200     B&W             AT&T VDC overlay mode [5]
  1168.  88h = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  1169.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode [5]
  1170.  C4h =     disable output                     AT&T VDC overlay mode [5]
  1171.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  1172. Notes:
  1173. [1] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1174.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1175.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1176.       color) 132x25 character mode.
  1177.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1178.       resident
  1179. [2] early XGA boards support 132-column text but do not have this BIOS mode
  1180. [3] DESQview intercepts calls to change into these two modes (21h is page 0,
  1181.       22h is page 1) even if there is no Hercules graphics board installed
  1182. [4] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1183. [5] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1184.       40h, or 44h
  1185. [6] BIOS text support is broken in this undocumented mode; scrolling moves only
  1186.       about 1/3 of the screen (and does even that portion incorrectly), while
  1187.       screen clears only clear about 3/4.
  1188. [7] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1189.       may choose to use only partially or not at all; thus, not all Oak boards
  1190.       support all "Oak" modes listed here
  1191. [8] interlaced only
  1192. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1193.       precluding the use of a monochrome adapter in the same system
  1194. [10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
  1195.       v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
  1196.       09/14/90 version
  1197. Index:    video modes
  1198. --------V-100070-----------------------------
  1199. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1200.     AX = 0070h
  1201.     BL = mode (see below)
  1202. Desc:    specify a proprietary display mode on the Everex Micro Enhancer or
  1203.       Viewpoint video adapters
  1204. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1205.  
  1206. Values for video mode:
  1207.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  1208.       grph resol  box    resoltn        page    addr
  1209.  00h = G        640x480      16             multsync    EGA,VGA
  1210.  01h = G        752x410      16             multsync    EGA,VGA
  1211.  02h = G        800x600      16             multsync    EGA,VGA
  1212.  03h = T   80x34                     multsync    EGA,VGA
  1213.  04h = T   80x60                     multsync    EGA,VGA
  1214.  05h = T   94x29                     multsync    EGA only
  1215.  06h = T   94x51                     multsync    EGA only
  1216.  07h = T  100x43  8x14          16                VGA only
  1217.  08h = T  100x75  8x8          16                VGA only
  1218.  09h = T   80x44                     EGA    EGA only
  1219.  0Ah = T  132x25                     EGA    EGA,VGA
  1220.  0Bh = T  132x44                     EGA    EGA,VGA
  1221.  0Ch = T  132x25                     CGA    EGA only
  1222.  0Dh = T   80x44                     mono    EGA only
  1223.  0Eh = T  132x25                     mono
  1224.  0Fh = T  132x44                     mono
  1225.  10h =     reserved
  1226.  11h = G           1280x350       4                EGA only
  1227.  12h = G           1280x600       4                EGA only
  1228.  13h = G        640x350     256                EGA,EV673
  1229.  14h = G        640x400     256
  1230.  15h = G        512x480     256
  1231.  16h = T   80x30  8x16         256                VGA only
  1232.  18h = T  100x27  8x16          16                VGA only
  1233.  20h = G           1024x768      16                Everex 629,678
  1234.                                 Everex EV-673
  1235.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  1236.  30h = G        640x480     256                Everex 629,678
  1237.                                 Everex EV-673
  1238.  31h = G        800x600     256                Everex 629,678
  1239.                                 Everex EV-673
  1240.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  1241.  40h = T  132x30  8x16          16                VGA only
  1242.  50h = T  132x32  8x16         mono                VGA only
  1243.  62h = G   40x25  8x8    320x200     32K                Vwpt TC (EV629)
  1244.  70h = G   64x30  8x16    512x480     32K                Viewpoint TC
  1245.  71h = G   80x30  8x16    640x480     32K                Viewpoint TC
  1246.  76h = G   64x30  8x16    512x480     16M                Viewpoint TC
  1247.  77h = G   80x30  8x16    640x480     16M                Viewpoint TC
  1248. Index:    video modes
  1249. --------V-10007E-----------------------------
  1250. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1251.     AX = 007Eh
  1252.     BX = horizontal dimension of the mode desired
  1253.     CX = vertical dimension of the mode desired
  1254.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1255.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1256. Return: BH = 7Eh if successful (Paradise VGA)
  1257.     AL = 7Eh if successful (AT&T VDC600)
  1258. Desc:    specify a display mode by resolution rather than mode number
  1259. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  1260. Index:    video modes
  1261. --------V-10007F-----------------------------
  1262. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  1263.     AX = 007Fh
  1264.     BH = function
  1265.         00h     set VGA operation
  1266.         01h     set non-VGA operation
  1267.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  1268.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  1269.         02h     query mode status
  1270.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1271.             CH = total video RAM size in 64k byte units
  1272.             CL = video RAM used by the current mode
  1273.         03h     lock current mode
  1274.         allows current mode (VGA or non-VGA) to survive re-boot
  1275.         04h     enter CGA mode (AT&T VDC600 only)
  1276.         05h     enter MDA mode (AT&T VDC600 only)
  1277.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1278.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1279.         BL = value to set in the paradise register
  1280.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1281.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1282.         Return: BL = value of the paradise register
  1283.             BH = 7Fh if successful
  1284. Return: AL = 7Fh if successful (AT&T VDC600)
  1285. Desc:    set emulation mode or access proprietary extended data registers
  1286. SeeAlso: AX=007Eh
  1287. --------V-1001-------------------------------
  1288. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1289.     AH = 01h
  1290.     CH = bit 7    should be zero
  1291.          bits 6,5 cursor blink
  1292.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  1293.              (00=normal, other=invisible on EGA/VGA)
  1294.          bits 4-0 top scan line containing cursor
  1295.     CL = bottom scan line containing cursor (bits 0-4)
  1296. Desc:    specify the starting and ending scan lines to be occupied by the
  1297.       hardware cursor in text modes
  1298. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1299.       returns unmapped cursor shape
  1300.     UltraVision scales size to the current font height by assuming 14-line
  1301.       monochrome and 8-line color fonts; this call is not valid if cursor
  1302.       emulation has been disabled
  1303.     applications which wish to change the cursor by programming the
  1304.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1305.       read 0040h:0085h first to determine the current font height
  1306. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1307.       is not equal to the current video mode
  1308. SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h
  1309. --------V-1002-------------------------------
  1310. INT 10 - VIDEO - SET CURSOR POSITION
  1311.     AH = 02h
  1312.     BH = page number
  1313.         0-3 in modes 2&3
  1314.         0-7 in modes 0&1
  1315.         0 in graphics modes
  1316.     DH = row (00h is top)
  1317.     DL = column (00h is left)
  1318. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
  1319. --------V-1003-------------------------------
  1320. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1321.     AH = 03h
  1322.     BH = page number
  1323.         0-3 in modes 2&3
  1324.         0-7 in modes 0&1
  1325.         0 in graphics modes
  1326. Return: AX = 0000h (Phoenix BIOS)
  1327.     CH = start scan line
  1328.     CL = end scan line
  1329.     DH = row (00h is top)
  1330.     DL = column (00h is left)
  1331. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1332.     many ROM BIOSes incorrectly return the default size for a color display
  1333.       (start 06h, end 07h) when a monochrome display is attached
  1334. SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h
  1335. --------V-1004-------------------------------
  1336. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1337.     AH = 04h
  1338. Return: AH = light pen trigger flag
  1339.         00h not down/triggered
  1340.         01h down/triggered
  1341.         DH,DL = row,column of character light pen is on
  1342.         CH = pixel row (graphics modes 04h-06h)
  1343.         CX = pixel row (graphics modes with >200 rows)
  1344.         BX = pixel column
  1345. Desc:    determine the current position and status of the light pen (if
  1346.       present)
  1347. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1348.       column modes) or 4 (640-column modes)
  1349.     returned row numbers are only accurate to two lines
  1350. --------V-1005-------------------------------
  1351. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1352.     AH = 05h
  1353.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  1354. Desc:    specify which of possibly multiple display pages will be visible
  1355. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1356.       to query the current page after making this call
  1357. SeeAlso: AH=0Fh,AH=43h,AH=45h
  1358. --------V-1005-------------------------------
  1359. INT 10 - VIDEO - PCjr - MANIPULATE CRT/CPU PAGE REGISTERS
  1360.     AH = 05h
  1361.     AL = subfunction
  1362.         80h read CRT and CPU page registers
  1363.         Return: BH = CRT page register
  1364.             BL = CPU page register
  1365.         81h set CPU page register
  1366.         BL = CPU page
  1367.         82h set CRT page register
  1368.         BH = CRT page
  1369.         83h set both CPU and CRT page registers
  1370.         BL = CPU page
  1371.         BH = CRT page
  1372. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1373.       memory will be mapped at B800h by the hardware
  1374.     the CRT page determines the start address of the memory used by the
  1375.       video controller
  1376. --------V-1005-------------------------------
  1377. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
  1378.     AH = 05h
  1379.     AL = function
  1380.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1381.         BX = segment of buffer
  1382.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1383.         Return: DX = segment of graphics bitmap buffer
  1384. --------V-1006-------------------------------
  1385. INT 10 - VIDEO - SCROLL UP WINDOW
  1386.     AH = 06h
  1387.     AL = number of lines by which to scroll up (00h = clear entire window)
  1388.     BH = attribute used to write blank lines at bottom of window
  1389.     CH,CL = row,column of window's upper left corner
  1390.     DH,DL = row,column of window's lower right corner
  1391. Note:    affects only the currently active page (see AH=05h)
  1392. Warning: some implementations have a bug which destroys BP
  1393. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  1394. --------V-1007-------------------------------
  1395. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1396.     AH = 07h
  1397.     AL = number of lines by which to scroll down (00h=clear entire window)
  1398.     BH = attribute used to write blank lines at top of window
  1399.     CH,CL = row,column of window's upper left corner
  1400.     DH,DL = row,column of window's lower right corner
  1401. Note:    affects only the currently active page (see AH=05h)
  1402. Warning: some implementations have a bug which destroys BP
  1403. SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
  1404. --------V-1008-------------------------------
  1405. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1406.     AH = 08h
  1407.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1408. Return: AH = charater's attribute (see below)
  1409.     AL = character
  1410. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1411.       underlined 
  1412.     the blink bit may be reprogrammed to enable intense background colors
  1413.       using AX=1003h or by programming the CRT controller
  1414.     the foreground intensity bit (3) can be programmed to switch between
  1415.       character sets A and B on EGA and VGA cards, thus enabling 512
  1416.       simultaneous characters on screen.  In this case the bit's usual
  1417.       function (intensity) is regularly turned off.
  1418. SeeAlso: AH=09h,AX=1003h,AX=5001h
  1419.  
  1420. Bitfields for character's attribute:
  1421.  bit 7    blink
  1422.  bits 6-4  background color
  1423.         000 black    100 red
  1424.         001 blue    101 magenta
  1425.         010 green    110 brown
  1426.         011 cyan    111 white  
  1427.  bits 3-0  foreground color
  1428.         0000 black     1000 dark gray
  1429.         0001 blue     1001 light blue
  1430.         0010 green     1010 light green
  1431.         0011 cyan     1011 light cyan
  1432.         0100 red     1100 light red
  1433.         0101 magenta     1101 light magenta
  1434.         0110 brown     1110 yellow
  1435.         0111 light gray     1111 white
  1436. --------V-1009-------------------------------
  1437. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1438.     AH = 09h
  1439.     AL = character to display
  1440.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1441.     BL = attribute (text mode) or color (graphics mode)
  1442.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1443.     CX = number of times to write character
  1444. Notes:    all characters are displayed, including CR, LF, and BS
  1445.     replication count in CX may produce an unpredictable result in graphics
  1446.       modes if it is greater than the number of positions remaining in the
  1447.       current row
  1448. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
  1449. --------V-100A-------------------------------
  1450. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1451.     AH = 0Ah
  1452.     AL = character to display
  1453.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1454.     BL = attribute (PCjr only) or color (graphics mode)
  1455.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1456.     CX = number of times to write character
  1457. Notes:    all characters are displayed, including CR, LF, and BS
  1458.     replication count in CX may produce an unpredictable result in graphics
  1459.       modes if it is greater than the number of positions remaining in the
  1460.       current row
  1461. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1462. --------V-100B--BH00-------------------------
  1463. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1464.     AH = 0Bh
  1465.     BH = 00h
  1466.     BL = background/border color (border only in text modes)
  1467. SeeAlso: AH=0Bh/BH=01h
  1468. --------V-100B--BH01-------------------------
  1469. INT 10 - VIDEO - SET PALETTE
  1470.     AH = 0BH
  1471.     BH = 01h
  1472.     BL = palette ID
  1473.         00h background, green, red, and brown/yellow
  1474.         01h background, cyan, magenta, and white
  1475. SeeAlso: AH=0Bh/BH=00h
  1476. --------V-100C-------------------------------
  1477. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1478.     AH = 0Ch
  1479.     BH = page number
  1480.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1481.     CX = column
  1482.     DX = row
  1483. Desc:    set a single pixel on the display in graphics modes
  1484. Notes:    valid only in graphics modes
  1485.     BH is ignored if the current video mode supports only one page
  1486. SeeAlso: AH=0Dh,AH=46h
  1487. --------V-100D-------------------------------
  1488. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1489.     AH = 0Dh
  1490.     BH = page number
  1491.     CX = column
  1492.     DX = row
  1493. Return: AL = pixel color
  1494. Desc:    determine the current color of the specified pixel in grahics modes
  1495. Notes:    valid only in graphics modes
  1496.     BH is ignored if the current video mode supports only one page
  1497. SeeAlso: AH=0Ch,AH=47h
  1498. --------V-100E-------------------------------
  1499. INT 10 - VIDEO - TELETYPE OUTPUT
  1500.     AH = 0Eh
  1501.     AL = character to write
  1502.     BH = page number
  1503.     BL = foreground color (graphics modes only)
  1504. Desc:    display a character on the screen, advancing the cursor and scrolling
  1505.       the screen as necessary
  1506. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1507.       and do the expected things
  1508.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1509.       the current active page
  1510. SeeAlso: AH=02h,AH=0Ah
  1511. --------V-100F-------------------------------
  1512. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1513.     AH = 0Fh
  1514. Return: AH = number of character columns
  1515.     AL = display mode (see AH=00h)
  1516.     BH = active page (see AH=05h)
  1517. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1518.       also have bit 7 set
  1519.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1520.       (monochrome) in all extended-row text modes
  1521. SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
  1522. --------V-100F56BX4756-----------------------
  1523. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1524.     AX = 0F56h
  1525.     BX = 4756h
  1526.     CX = 4944h
  1527.     DL = function
  1528.         01h installation check
  1529.         Return: AX = 5649h
  1530.             BX = 4443h
  1531.             CX = 5647h
  1532.             DH = 01h
  1533.         02h get first video mode's parameters
  1534.         Return: AX = BIOS mode number
  1535.             BX = width in pixels
  1536.             CX = height in pixels
  1537.             DX = number of colors
  1538.         03h get next video mode's parameters
  1539.         Return: as for DL=02h
  1540.         04h display line???
  1541.         ES:DI -> record (see below)
  1542.         ???
  1543.         Return: ???
  1544. Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1545. Note:    the use of TSR display drivers was discontinued after v2.20
  1546. Index:    installation check;VUIMAGE display driver
  1547.  
  1548. Format of record for DL=04h:
  1549. Offset    Size    Description
  1550.  00h    WORD    row number
  1551.  02h    WORD    starting column???
  1552.  04h    WORD    ending column???
  1553.     ???
  1554. --------V-100F--SIF123-----------------------
  1555. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  1556.     AH = 0Fh
  1557.     SI = F123h
  1558.     DI = 321Fh
  1559. Return: AH = number of character columns
  1560.     AL = display mode (see AH=00h)
  1561.     BH = active page (see AH=05h)
  1562.     SI = DI = F345h if installed
  1563. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1564.       also have bit 7 set
  1565.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1566.       (monochrome) in all extended-row text modes
  1567. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  1568. --------V-1010-------------------------------
  1569. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1570.     AH = 10h
  1571.     CH,CL = row,column of upper left corner of window
  1572.     DH,DL = row,column of lower right corner of window
  1573. Return: AL = status
  1574.         00h successful
  1575.         01h failed
  1576.     AH destroyed
  1577. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1578. Note:    when a window has been set, all output via AH=0Eh is restricted to
  1579.       the specified window
  1580. SeeAlso: AH=11h"Window",AH=12h"Window"
  1581. --------V-1010-------------------------------
  1582. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  1583.     AH = 10h
  1584.     AL = speed
  1585.         00h fast
  1586.         01h slow (scrolling only moves characters during vertical retrace)
  1587. Return: AH = previous speed
  1588. --------V-101000----------------------------
  1589. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1590.     AX = 1000h
  1591.     BL = palette register number (00h-0Fh)
  1592.        = attribute register number (undocumented)
  1593.          10h attribute mode control register (should let BIOS control this)
  1594.          11h overscan color register (see also AX=1001h)
  1595.          12h color plane enable register (bits 3-0 enable corresponding
  1596.         text attribute bit)
  1597.          13h horizontal PEL panning register
  1598.          14h color select register
  1599.     BH = color or attribute register value
  1600. Notes:    on MCGA, only BX = 0712h is supported
  1601.     under UltraVision, the palette locking status (see AX=CD01h)
  1602.       determines the outcome
  1603. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1604. --------V-101001-----------------------------
  1605. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1606.     AX = 1001h
  1607.     BH = border color (00h-3Fh)
  1608. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1609.       and places the border color at offset 11h of the palette table
  1610.       rather than offset 10h
  1611. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1612.       determines the outcome
  1613. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1614. --------V-101002-----------------------------
  1615. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1616.     AX = 1002h
  1617.     ES:DX -> palette register list
  1618. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1619.       determines the outcome
  1620. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1621.  
  1622. Format of palette register list:
  1623. Offset    Size    Description
  1624.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1625.  10h    BYTE    border color
  1626. --------V-101003-----------------------------
  1627. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1628.     AX = 1003h
  1629.     BL = new state
  1630.         00h background intensity enabled
  1631.         01h blink enabled
  1632.     BH = 00h to avoid problems on some adapters
  1633. Notes:    although there is no function to get the current status on adapters
  1634.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  1635.       VGA, use AH=1Bh and check offset 2Dh of the returned data
  1636.     when configured for a monochrome display, the Boca Research Multi-EGA
  1637.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  1638. SeeAlso: AH=08h,AH=1Bh
  1639. --------V-101007-----------------------------
  1640. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1641.     AX = 1007h
  1642.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1643. Return: BH = palette or attribute register value
  1644. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1645.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1646.       registers will cause incorrect results because the EGA registers are
  1647.       write-only.  To guard against older versions or unsupported video
  1648.       modes, programs which expect to use this function on EGA systems
  1649.       should set BH to FFh on entry.
  1650. SeeAlso: AX=1000h,AX=1009h
  1651. --------V-101008-----------------------------
  1652. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1653.     AX = 1008h
  1654. Return: BH = border color (00h-3Fh)
  1655. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1656.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1657.       registers will cause incorrect results because the EGA registers are
  1658.       write-only.  To guard against older versions or unsupported video
  1659.       modes, programs which expect to use this function on EGA systems
  1660.       should set BH to FFh on entry.
  1661. SeeAlso: AX=1001h
  1662. --------V-101009-----------------------------
  1663. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1664.     AX = 1009h
  1665.     ES:DX -> 17-byte buffer (see AX=1002h)
  1666. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1667.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1668.       registers will cause incorrect results because the EGA registers are
  1669.       write-only.  To guard against older versions or unsupported video
  1670.       modes, programs which expect to use this function on EGA systems
  1671.       should set the ES:DX buffer to FFh before calling.
  1672. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1673. --------V-101010-----------------------------
  1674. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1675.     AX = 1010h
  1676.     BX = register number
  1677.     CH = new value for green (0-63)
  1678.     CL = new value for blue (0-63)
  1679.     DH = new value for red (0-63)
  1680. SeeAlso: AX=1012h,AX=1015h
  1681. --------V-101012-----------------------------
  1682. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1683.     AX = 1012h
  1684.     BX = starting color register
  1685.     CX = number of registers to set
  1686.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1687.          byte each of red, green and blue (0-63)
  1688. SeeAlso: AX=1010h,AX=1017h
  1689. --------V-101013-----------------------------
  1690. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1691.     AX = 1013h
  1692.     BL = subfunction
  1693.         00h select paging mode
  1694.         BH = 00h select 4 blocks of 64
  1695.         BH = 01h select 16 blocks of 16
  1696.         01h select page
  1697.         BH = page number (00h to 03h) or (00h to 0Fh)
  1698. Note:    this function is not valid in mode 13h
  1699. SeeAlso: AX=101Ah
  1700. --------V-101015-----------------------------
  1701. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1702.     AX = 1015h
  1703.     BL = palette register number
  1704. Return: DH = red value
  1705.     CH = green value
  1706.     CL = blue value
  1707. SeeAlso: AX=1010h,AX=1017h
  1708. --------V-101017-----------------------------
  1709. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1710.     AX = 1017h
  1711.     BX = starting palette register
  1712.     CX = number of palette registers to read
  1713.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1714. Return: buffer filled with CX red, green and blue triples
  1715. SeeAlso: AX=1012h,AX=1015h
  1716. --------V-101018-----------------------------
  1717. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  1718.     AX = 1018h
  1719.     BL = new PEL value
  1720. SeeAlso: AX=1019h
  1721. --------V-101019-----------------------------
  1722. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  1723.     AX = 1019h
  1724. Return:    BL = value read
  1725. SeeAlso: AX=1018h
  1726. --------V-10101A-----------------------------
  1727. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1728.     AX = 101Ah
  1729. Return: BL = paging mode
  1730.         00h four pages of 64
  1731.         01h sixteen pages of 16
  1732.     BH = current page
  1733. SeeAlso: AX=1013h
  1734. --------V-10101B-----------------------------
  1735. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1736.     AX = 101Bh
  1737.     BX = starting palette register
  1738.     CX = number of registers to convert
  1739. Desc:    convert the RGB values of one or more palette registers such that the
  1740.       resulting values are grays with the same intensities as the original
  1741.       colors
  1742. SeeAlso: AH=12h/BL=33h
  1743. --------V-1010E0-----------------------------
  1744. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  1745.     AX = 10E0h
  1746.     BL = video mode (see also AH=00h)
  1747.         2Eh = 640x480
  1748. Return: ???
  1749. SeeAlso: AH=00h,AX=10F0h
  1750. --------V-1010F0-----------------------------
  1751. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1752.     AX = 10F0h
  1753.     BL = video mode (see also AH=00h)
  1754.         13h = 320x200x32K
  1755.         2Dh = 640x350x32K
  1756.         2Eh = 640x480x32K
  1757.         2Fh = 640x400x32K
  1758.         30h = 800x600x32K
  1759.         3Eh = 640x480x16M (Genoa 7900)
  1760.         FFh Tseng 24-bit color mode
  1761.             BH = mode
  1762.                 2Eh = 640x480x16M
  1763. Return:    AL = 10h if supported
  1764.     AH = status
  1765.         00h if successful
  1766.         other on error
  1767. Desc:    switch the display into a graphics mode with 15 or more bits per pixel
  1768. Note:    the Tseng HiColor BIOS extensions are supported by:
  1769.       Diamond Computer Systems    SpeedStar HiColor VGA
  1770.       Everex Systems        HC VGA
  1771.       Focus Information Systems    2theMax 4000
  1772.       Cardinal Technologies        VGA732
  1773.       Orchid ProDesigner IIs    Genoa 7900
  1774. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  1775. Index:    video modes
  1776. --------V-1010F1-----------------------------
  1777. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1778.     AX = 10F1h
  1779. Return: AL = 10h if supported
  1780.     BL = type of digital/analog converter
  1781.         00h normal VGA DAC
  1782.         01h Sierra SC1148x HiColor DAC
  1783.         02h new Sierra DAC
  1784.        else other HiColor DAC
  1785. Desc:    determine which type of digital-to-analog converter is installed on the
  1786.       display board
  1787. SeeAlso: AX=10F0h,AX=10F2h
  1788. --------V-1010F2BL00-------------------------
  1789. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF IN HiColor MODE
  1790.     AX = 10F2h
  1791.     BL = 00h
  1792. Return: AX = 0010h if supported
  1793.     BL = video mode type
  1794.         00h normal
  1795.         else HiColor mode
  1796. Desc:    determine whether the display is in a graphics mode with 15 or more
  1797.       bits per pixel color resolution
  1798. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  1799. --------V-1011-------------------------------
  1800. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1801.     AH = 11h
  1802. Return: CH,CL = row,column of upper left corner
  1803.     DH,DL = row,column of lower right corner
  1804. Desc:    determine the portion of the display to which output is restricted
  1805. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1806. SeeAlso: AH=10h"Window",AH=12h"Window"
  1807. --------V-1011-------------------------------
  1808. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1809.     AH = 11h
  1810.     The following functions will cause a mode set, completely resetting
  1811.     the video environment, but without clearing the video buffer
  1812.     AL = 00h, 10h: load user-specified patterns
  1813.         ES:BP -> user table
  1814.         CX      = count of patterns to store
  1815.         DX      = character offset into map 2 block
  1816.         BL      = block to load in map 2
  1817.         BH      = number of bytes per character pattern
  1818.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1819.         BL      = block to load
  1820.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1821.         BL      = block to load
  1822.     AL = 03h: set block specifier
  1823.         BL      = block specifier
  1824.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1825.                      bit 3 = 0
  1826.                   bits 2,3 = block selected by chars with attribute
  1827.                      bit 3 = 1
  1828.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1829.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1830.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1831.         BL    = block to load
  1832. Notes:    The routines called with AL=1xh are designed to be called only
  1833.       immediately after a mode set and are similar to the routines called
  1834.       with AL=0xh, except that:
  1835.           Page 0 must be active.
  1836.           Bytes/character is recalculated.
  1837.           Max character rows is recalculated.
  1838.           CRT buffer length is recalculated.
  1839.           CRTC registers are reprogrammed as follows:
  1840.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1841.              R0A = bytes/char-2 ; cursor start
  1842.              R0B = 0        ; cursor end
  1843.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1844.              R14 = bytes/char    ; underline loc
  1845.                (*** BUG: should be 1 less ***)
  1846.     the current block specifiers may be determined with INT 10/AH=1Bh,
  1847.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  1848. SeeAlso: AH=1Bh,AX=CD10h
  1849. --------V-101120-----------------------------
  1850. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
  1851.     AX = 1120h
  1852.     ES:BP -> user table for INT 1F
  1853. Note:    this function is meant to be called immediately after a mode set;
  1854.       results are unpredictable at other times
  1855. SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1125h,INT 1F,INT 43
  1856. --------V-101121-----------------------------
  1857. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
  1858.     AX = 1121h
  1859.     ES:BP -> user table
  1860.     CX = bytes per character
  1861.     BL = row specifier
  1862.         00h user set
  1863.         DL = number of rows
  1864.         01h 14 rows
  1865.         02h 25 rows
  1866.         03h 43 rows
  1867. Note:    this function is meant to be called immediately after a mode set;
  1868.       results are unpredictable at other times
  1869. SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  1870. --------V-101122-----------------------------
  1871. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
  1872.     AX = 1122h
  1873.     BL = row specifier (see AX=1121h)
  1874. Notes:    this function is meant to be called immediately after a mode set;
  1875.       results are unpredictable at other times
  1876.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  1877. SeeAlso: AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h,INT 1F,INT 43
  1878. --------V-101123-----------------------------
  1879. INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
  1880.     AX = 1123h
  1881.     BL = row specifier (see AX=1121h)
  1882. Note:    this function is meant to be called immediately after a mode set;
  1883.       results are unpredictable at other times
  1884. Notes:    this function is meant to be called immediately after a mode set;
  1885.       results are unpredictable at other times
  1886.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  1887. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h,INT 1F,INT 43
  1888. --------V-101124-----------------------------
  1889. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
  1890.     AX = 1124h
  1891.     BL = row specifier (see AX=1121h)
  1892. Notes:    this function is meant to be called immediately after a mode set;
  1893.       results are unpredictable at other times
  1894.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  1895. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h,INT 1F,INT 43
  1896. --------V-101129-----------------------------
  1897. INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
  1898.     AX = 1129h
  1899.     BL = row specifier (see AX=1121h)
  1900. Notes:    this function is meant to be called immediately after a mode set;
  1901.       results are unpredictable at other times
  1902.     UltraVision v2+ sets INT 43 to the appropriate font on this call
  1903. SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F, INT 43
  1904. --------V-101130-----------------------------
  1905. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  1906.     AX = 1130h
  1907.     BH = pointer specifier
  1908.         00h INT 1Fh pointer
  1909.         01h INT 43h pointer
  1910.         02h ROM 8x14 character font pointer
  1911.         03h ROM 8x8 double dot font pointer
  1912.         04h ROM 8x8 double dot font (high 128 characters)
  1913.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  1914.         06h ROM 8x16 font (MCGA, VGA)
  1915.         07h ROM alternate 9x16 font (VGA only)
  1916.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  1917.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  1918. Return: ES:BP = specified pointer
  1919.     CX    = bytes/character of on-screen font (not the requested font!)
  1920.     DL    = character rows on screen - 1 (VGA)
  1921.           = character rows on screen (EGA)
  1922. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  1923.       8xN font at ES:BP+256N
  1924. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  1925.  
  1926. Format of alternate font table [array]:
  1927. Offset    Size    Description
  1928.  00h    BYTE    character to be replaced (00h = end of table)
  1929.  01h  N BYTEs    graphics data for character, one byte per scan line
  1930. --------V-1012-------------------------------
  1931. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  1932.     AH = 12h
  1933. Return: BH = attribute to use on blanked lines when scrolling
  1934. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1935. SeeAlso: AH=11h"Window",AH=12h"Window"
  1936. --------V-1012--BL10-------------------------
  1937. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  1938.     AH = 12h
  1939.     BL = 10h
  1940. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  1941.          01h mono mode in effect (I/O port 3Bxh)
  1942.     BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
  1943.     CH = feature bits
  1944.     CL = switch settings
  1945.         bit 0: switch 1 OFF
  1946.         bit 1: switch 2 OFF
  1947.         bit 2: switch 3 OFF
  1948.         bit 3: switch 4 OFF
  1949.         bits 4-7: unused
  1950. Note:    one possible check for the presence of an EGA or later display card
  1951.       is to call this function with BH=FFh; if not present, BH will be
  1952.       unchanged on return
  1953. --------V-1012--BL20-------------------------
  1954. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  1955.     AH = 12h
  1956.     BL = 20h  select alternate print screen routine
  1957. Desc:    installs a PrtSc routine from the video card's BIOS to replace the
  1958.       default PrtSc handler from the ROM BIOS, which usually does not
  1959.       understand screen heights other than 25 lines
  1960. Note:    some adapters disable print-screen instead of enhancing it
  1961. SeeAlso: INT 05
  1962. --------V-1012--BL2E-------------------------
  1963. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1964.     AH = 12h
  1965.     BL = 2Eh
  1966. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1967.       crash the system on this function
  1968. --------V-1012--BL30-------------------------
  1969. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  1970.     AH = 12h
  1971.     BL = 30h
  1972.     AL = vertical resolution
  1973.          00h 200 scan lines
  1974.          01h 350 scan lines
  1975.          02h 400 scan lines
  1976. Return: AL = 12h if function supported
  1977. Desc:    specify the number of scan lines used to display text modes
  1978. Note:    the specified resolution will take effect on the next mode set
  1979. SeeAlso: AH=00h
  1980. --------V-1012--BL31-------------------------
  1981. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  1982.     AH = 12h
  1983.     BL = 31h
  1984.     AL = new state
  1985.         00h enable default palette loading
  1986.         01h disable default palette loading
  1987. Return: AL = 12h if function supported
  1988. Desc:    specify whether a default palette should be loaded when the display
  1989.       mode is set
  1990. SeeAlso: AH=00h
  1991. --------V-1012--BL32-------------------------
  1992. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  1993.     AH = 12h
  1994.     BL = 32h
  1995.     AL = new state
  1996.         00h enable video addressing
  1997.         01h disable video addressing
  1998. Return: AL = 12h if function supported
  1999. Desc:    specify whether the CPU should have access to video memory and the 
  2000.       display adapters I/O registers
  2001. --------V-1012--BL33-------------------------
  2002. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  2003.     AH = 12h
  2004.     BL = 33h
  2005.     AL = new state
  2006.         00h enable gray scale summing
  2007.         01h disable gray scale summing
  2008. Return: AL = 12h if function supported
  2009. Desc:    specify whether or not colors should be converted to gray scale when
  2010.       palette or color registers are loaded
  2011. SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
  2012. --------V-1012--BL34-------------------------
  2013. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  2014.     AH = 12h
  2015.     BL = 34h
  2016.     AL = new state
  2017.         00h enable alphanumeric cursor emulation
  2018.         01h disable alphanumeric cursor emulation
  2019. Return: AL = 12h if function supported
  2020. Desc:    specify whether the BIOS should automatically remap cursor start/end
  2021.       according to the current character height in text modes
  2022. SeeAlso: AH=01h,AH=03h
  2023. --------V-1012--BL35-------------------------
  2024. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  2025.     AH = 12h
  2026.     BL = 35h
  2027.     AL = subfunction
  2028.         00h initial adapter video off
  2029.         01h initial planar video on
  2030.         02h switch active video off
  2031.         03h switch inactive video on
  2032.         80h *UNDOCUMENTED* set system board video active flag
  2033.     ES:DX -> buffer for 128 byte save area (if AL = 0, 2 or 3)
  2034. Return: AL = 12h if function supported
  2035. Desc:    switch between two video adapters which may otherwise have address
  2036.       conflicts
  2037. --------V-1012--BL36-------------------------
  2038. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  2039.     AH = 12h
  2040.     BL = 36h
  2041.     AL = new state
  2042.         00h enable refresh
  2043.         01h disable refresh
  2044. Return: AL = 12h if function supported
  2045. Desc:    specify whether the contents of video memory should be displayed on
  2046.       the screen; disabling refresh effectively blanks the screen
  2047. SeeAlso: AX=BF05h
  2048. --------V-1012--BH55-------------------------
  2049. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  2050.     AH = 12h
  2051.     BH = 55h
  2052.     BL = subfunction
  2053.         00h disabled enhanced features
  2054.         01h enable enhanced features
  2055.         02h get status
  2056.         Return: AL = status flags (see below)
  2057.         03h disable register trapping (CGA emulation)
  2058.         04h enable register trapping
  2059.         05h program video mode
  2060.             ES:BP -> video mode table (see below)
  2061.         06h get mode table
  2062.         AL = video mode
  2063.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  2064.             BP = FFFFh on error
  2065.  
  2066. Bitfields for status flags:
  2067.  bit 3    set if enhanced features enabled
  2068.  bits 7-5 monitor type
  2069.     000 PS/2 mono
  2070.     001 PS/2 color
  2071.     010 multi-sync
  2072.     011 Taxan 650 25kHz
  2073.     100 RGB
  2074.     101 mono
  2075.     110 EGA
  2076.     111 Compaq internal
  2077.  
  2078. Format of ATI VGA Wonder video mode table:
  2079. Offset    Size    Description
  2080.  00h    BYTE    number of columns
  2081.  01h    BYTE    maximum row (number of rows - 1)
  2082.  02h    BYTE    scan lines per row
  2083.  03h    WORD    video buffer size in bytes
  2084.  05h  4 BYTEs    values for Sequencer registers 1-4
  2085.  09h    BYTE    value for Miscellaneous Output register
  2086.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  2087.         00h horizontal total size (chars)
  2088.         01h horizontal displayed (chars)
  2089.         02h horizontal sync position (chars)
  2090.         03h horizontal sync width (chars)
  2091.         04h vertical total size (char rows)
  2092.         05h vertical total adjust (scan lines)
  2093.         06h vertical displayed (char rows)
  2094.         07h vertical sync position (char rows)
  2095.         08h interlace mode
  2096.         09h max scan line in row
  2097.         0Ah cursor start scan line
  2098.         0Bh cursor end scan line
  2099.         0Ch screen memory start (high)
  2100.         0Dh screen memory start (low)
  2101.         0Eh cursor address (high)
  2102.         0Fh cursor address (low)
  2103.         10h light pen (high)
  2104.         11h light pen (low)
  2105.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  2106.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  2107. --------V-1012--BL74-------------------------
  2108. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2109.     AH = 12h
  2110.     BL = 74h
  2111. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2112.       crash the system on this function
  2113. --------V-1012--BL80-------------------------
  2114. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2115.     AH = 12h
  2116.     BL = 80h
  2117. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2118.       crash the system on this function
  2119. --------V-1012--BLBE-------------------------
  2120. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2121.     AH = 12h
  2122.     BL = BEh
  2123. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2124.       crash the system on this function
  2125. --------V-1012--BLC6-------------------------
  2126. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2127.     AH = 12h
  2128.     BL = C6h
  2129. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2130.       crash the system on this function
  2131. --------V-1012--BLF0-------------------------
  2132. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2133.     AH = 12h
  2134.     BL = F0h
  2135. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  2136.       crash the system on this function
  2137. --------V-1013-------------------------------
  2138. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  2139.     AH = 13h
  2140.     AL = write mode
  2141.        bit 0: update cursor after writing
  2142.        bit 1: string contains alternating characters and attributes
  2143.     BH = page number
  2144.     BL = attribute if string contains only characters
  2145.     CX = number of characters in string
  2146.     DH,DL = row,column at which to start writing
  2147.     ES:BP -> string to write
  2148. Notes:    recognizes CR, LF, BS, and bell
  2149.     also available PC or XT with EGA or higher
  2150.     HP 95LX only supports write mode 00h
  2151. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  2152.       the active page rather than the requested page
  2153. SeeAlso: AH=09h,AH=0Ah
  2154. --------V-101400-----------------------------
  2155. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  2156.     AX = 1400h
  2157.     ES:DI -> character font
  2158.     BH = number of bytes per character
  2159.         08h or 10h (Compaq)
  2160.     BL = 00h load main font (block 0)
  2161.          01h load alternate font (block 1)
  2162.     CX = number of characters to store
  2163.     DX = character offset into RAM font area
  2164. SeeAlso: AH=11h,AX=1401h
  2165. --------V-101401-----------------------------
  2166. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  2167.     AX = 1401h
  2168.     BL = font to load
  2169.         00h main font (block 0)
  2170.         01h alternate font (block 1)
  2171. SeeAlso: AH=11h,AX=1400h
  2172. --------V-101402-----------------------------
  2173. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  2174.     AX = 1402h
  2175.     BL = function
  2176.         00h ignore high intensity attribute
  2177.         01h map high intensity to underscore
  2178.         02h map high intensity to reverse video
  2179.         03h map high intensity to selected alternate font
  2180.         B0h half intensity (Compaq)
  2181.         B1h toggle active intensity bit interpretation (CP386)
  2182. --------V-1015-------------------------------
  2183. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  2184.     AH = 15h
  2185. Return: AX = alternate display adapter type (see below)
  2186.     ES:DI -> parameter table (see below)
  2187. SeeAlso: AH=1Bh
  2188.  
  2189. Values for alternate display adapter type:
  2190.  0000h none
  2191.  5140h LCD
  2192.  5153h CGA
  2193.  5151h mono
  2194.  
  2195. Format of display parameter table:
  2196. Offset    Size    Description
  2197.  00h    WORD    monitor model number
  2198.  02h    WORD    vertical pixels per meter
  2199.  04h    WORD    horizontal pixels per meter
  2200.  06h    WORD    total vertical pixels
  2201.  08h    WORD    total horizontal pixels
  2202.  0Ah    WORD    horizontal pixel separation in micrometers
  2203.  0Ch    WORD    vertical pixel separation in micrometers
  2204. --------V-1015-------------------------------
  2205. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  2206.     AH = 15h
  2207.     AL = superimpose mode
  2208.         00h show graphics screen
  2209.         01h show text screen
  2210.         02h show text screen superimposed on graphics screen
  2211. --------V-101A00-----------------------------
  2212. INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2213.     AX = 1A00h
  2214. Return: AL = 1Ah if function was supported
  2215.         BL = active display code (see below)
  2216.         BH = alternate display code
  2217. SeeAlso: AH=12h/BH=35h,AX=1A01h,AH=1Bh
  2218.  
  2219. Values for display combination code:
  2220.  00h no display
  2221.  01h monochrome adapter w/ monochrome display
  2222.  02h CGA w/ color display
  2223.  03h reserved
  2224.  04h EGA w/ color display
  2225.  05h EGA w/ monochrome display
  2226.  06h PGA w/ color display
  2227.  07h VGA w/ monochrome analog display
  2228.  08h VGA w/ color analog display
  2229.  09h reserved
  2230.  0Ah MCGA w/ digital color display
  2231.  0Bh MCGA w/ monochrome analog display
  2232.  0Ch MCGA w/ color analog display
  2233.  FFh unknown display type
  2234. --------V-101A01-----------------------------
  2235. INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
  2236.     AX = 1A01h
  2237.     BL = active display code (see AX=1A00h)
  2238.     BH = alternate display code
  2239. Return: AL = 1Ah if function was supported
  2240. SeeAlso: AH=12h/BH=35h,AX=1A00h
  2241. --------V-101B-------------------------------
  2242. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  2243.     AH = 1Bh
  2244.     BX = implementation type
  2245.         0000h return funtionality/state information
  2246.     ES:DI -> 64 byte buffer for state information (see below)
  2247. Return: AL = 1Bh if function supported
  2248.         ES:DI buffer filled with state information
  2249. BUG:    Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
  2250.       do not correctly set the fields at offsets 27h and 29h of the
  2251.       state information
  2252. SeeAlso: AH=15h,AX=1A00h,AX=1F01h
  2253.  
  2254. Format of state information:
  2255. Offset    Size    Description
  2256.  00h    DWORD    address of static funtionality table (see below)
  2257.  04h    BYTE    video mode in effect
  2258.  05h    WORD    number of columns
  2259.  07h    WORD    length of regen buffer in bytes
  2260.  09h    WORD    starting address of regen buffer
  2261.  0Bh    WORD    cursor position for page 0
  2262.  0Dh    WORD    cursor position for page 1
  2263.  0Fh    WORD    cursor position for page 2
  2264.  11h    WORD    cursor position for page 3
  2265.  13h    WORD    cursor position for page 4
  2266.  15h    WORD    cursor position for page 5
  2267.  17h    WORD    cursor position for page 6
  2268.  19h    WORD    cursor position for page 7
  2269.  1Bh    WORD    cursor type
  2270.  1Dh    BYTE    active display page
  2271.  1Eh    WORD    CRTC port address
  2272.  20h    BYTE    current setting of register (3?8)
  2273.  21h    BYTE    current setting of register (3?9)
  2274.  22h    BYTE    number of rows
  2275.  23h    WORD    bytes/character
  2276.  25h    BYTE    display combination code of active display
  2277.  26h    BYTE    DCC of alternate display
  2278.  27h    WORD    number of colors supported in current mode
  2279.  29h    BYTE    number of pages supported in current mode
  2280.  2Ah    BYTE    number of scan lines active
  2281.         (0,1,2,3) = (200,350,400,480)
  2282.  2Bh    BYTE    primary character block
  2283.  2Ch    BYTE    secondary character block
  2284.  2Dh    BYTE    miscellaneous flags (see below)
  2285.  2Eh  3 BYTEs    reserved (00h)
  2286.  31h    BYTE    video memory available
  2287.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  2288.  32h    BYTE    save pointer state flags (see below)
  2289.  33h 13 BYTEs    reserved (00h)
  2290.  
  2291. Bitfields for miscellaneous flags:
  2292.  bit 0    all modes on all displays on
  2293.  bit 1    gray summing on
  2294.  bit 2    monochrome display attached
  2295.  bit 3    default palette loading disabled
  2296.  bit 4    cursor emulation enabled
  2297.  bit 5    0 = intensity; 1 = blinking
  2298.  bit 6    PS/2 P70 plasma display (without 9-dot wide font) active
  2299.  bit 7    reserved
  2300.  
  2301. Bitfields for save pointer state flags:
  2302.  bit 0    512 character set active
  2303.  bit 1    dynamic save area present
  2304.  bit 2    alpha font override active
  2305.  bit 3    graphics font override active
  2306.  bit 4    palette override active
  2307.  bit 5    DCC override active
  2308.  bits 6-7 reserved
  2309.  
  2310. Format of Static Functionality Table:
  2311. Offset    Size    Description
  2312.  00h    BYTE    modes supported #1
  2313.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  2314.  01h    BYTE    modes supported #2
  2315.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  2316.  02h    BYTE    modes supported #3
  2317.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  2318.         bit 4 to bit 7 reserved
  2319.  03h  4 BYTEs    reserved
  2320.  07h    BYTE    scan lines supported
  2321.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  2322.  08h    BYTE    total number of character blocks available in text modes
  2323.  09h    BYTE    maximum number of active character blocks in text modes
  2324.  0Ah    WORD    miscellaneous function support flags (see below)
  2325.  0Ch    WORD    reserved
  2326.  0Eh    BYTE    save pointer function flags (see below)
  2327.  0Fh    BYTE    reserved
  2328.  
  2329. Bitfields for miscellaneous function support flags:
  2330.  bit 0    all modes on all displays function supported
  2331.  bit 1    gray summing function supported
  2332.  bit 2    character font loading function supported
  2333.  bit 3    default palette loading enable/disable supported
  2334.  bit 4    cursor emulation function supported
  2335.  bit 5    EGA palette present
  2336.  bit 6    color palette present
  2337.  bit 7    color paging function supported
  2338.  bit 8    light pen supported
  2339.  bit 9    save/restore state function 1Ch supported
  2340.  bit 10    intensity blinking function supported
  2341.  bit 11    Display Combination Code supported
  2342.  bits 12-15 reserved
  2343.  
  2344. Bitfields for save pointer function flags:
  2345.  bit 0    512 character set supported
  2346.  bit 1    dynamic save area supported
  2347.  bit 2    alpha font override supported
  2348.  bit 3    graphics font override supported
  2349.  bit 4    palette override supported
  2350.  bit 5    DCC extension supported
  2351.  bits 6-7 reserved
  2352. --------V-101C-------------------------------
  2353. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  2354.     AH = 1Ch
  2355.     AL = function
  2356.         00h return state buffer size
  2357.         Return: BX = number of 64-byte blocks needed
  2358.         01h save video state
  2359.         ES:BX -> buffer
  2360.         02h restore video state
  2361.         ES:BX -> buffer containing previously saved state
  2362.     CX = requested states
  2363.          bit 0 video hardware
  2364.          bit 1 BIOS data areas
  2365.          bit 2 color registers and DAC state
  2366.          bits 3-15 reserved
  2367. Return: AL = 1Ch if function supported
  2368. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  2369.       program should restore the state immediately after saving it (the
  2370.       saved data is uncorrupted)
  2371.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  2372.  
  2373. Format of video hardware state:
  2374. Offset    Size    Description
  2375.  00h    BYTE    sequencer index register
  2376.  01h    BYTE    CRTC index register
  2377.  02h    BYTE    graphics controller index register
  2378.  03h    BYTE    attribute controller index register
  2379.  04h    BYTE    feature controller register
  2380.  05h  4 BYTEs    sequencer registers
  2381.  09h    BYTE    sequencer register 0
  2382.  0Ah 25 BYTEs    CRTC registers 0-8
  2383.  23h 16 BYTEs    palette registers 00h-0Fh
  2384.  33h  4 BYTEs    attribute registers 10h-13h
  2385.  37h  9 BYTEs    graphics controller registers 0-8
  2386.  40h    BYTE    CRTC base address (low)
  2387.  41h    BYTE    CRTC base address (high)
  2388.  42h    BYTE    plane 0 latch
  2389.  43h    BYTE    plane 1 latch
  2390.  44h    BYTE    plane 2 latch
  2391.  45h    BYTE    plane 3 latch
  2392.  
  2393. Format of DAC state:
  2394. Offset    Size    Description
  2395.  00h    BYTE    read/write mode DAC
  2396.  01h    BYTE    pixel address
  2397.  02h    BYTE    pixel mask
  2398.  03h 768 BYTEs    color data (256 triples)
  2399. 303h    BYTE    color select register
  2400. --------V-101D-------------------------------
  2401. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2402.     AH = 1Dh
  2403. Note:    this version of the BIOS jumps to a random location on this function
  2404.       due to a fencepost error
  2405. --------V-101F00-----------------------------
  2406. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  2407.     AX = 1F00h
  2408. Return: AL = 1Fh if supported
  2409.         BX = number of bytes of DMQS data
  2410. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2411.       and later models.
  2412. SeeAlso: AX=1F01h
  2413. --------V-101F01-----------------------------
  2414. INT 10 - VIDEO - XGA - READ DMQS DATA
  2415.     AX = 1F01h
  2416.     ES:DI -> user buffer for return data (call AH=1F00 for size)
  2417. Return: AL = 1Fh if function supported
  2418.     user buffer filled with DMQS data, see below.
  2419. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2420.       and later models.
  2421. SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
  2422.  
  2423. Format of DMQS buffer:
  2424. Offset    Size    Description
  2425.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  2426.  02h    BYTE    slot number
  2427.  03h    BYTE    XGA implementation function level identifier
  2428.  04h    BYTE    XGA implementation resolution level identifier
  2429.  05h    WORD    vendor identifier - identifies card vendor
  2430.  07h    WORD    vendor defined field
  2431.  09h    WORD    XGA adapter I/O register base address
  2432.  0Bh    WORD    XGA coprocessor register base address
  2433.         (paragraph--multiply by 10h to get physical address)
  2434.  0Dh    WORD    1 Megabyte system video memory aperture
  2435.         0000h if not allocated
  2436.         (Multiply by 100000h to get physical address)
  2437.  0Fh    WORD    4 Megabyte system video memory aperture
  2438.         0000h if not allocated
  2439.         (multiply by 100000h to get physical address)
  2440.  11h    WORD    video memory base address
  2441.         (multiply by 100000h to get physical address)
  2442.  13h    WORD    composite ID of the attached display
  2443.  15h    BYTE    amount of video memory available, in multiples of 256K bytes
  2444.  16h    DWORD    alternate XGA coprocessor register base address.  0 = none.
  2445.  1Ah    var    DMQS Data for further XGA Instances (as above)
  2446. Note:    "Instances" refers to the capability of having up to 8 XGA 
  2447.       adapters in one computer.
  2448. --------V-103000CX0000-----------------------
  2449. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  2450.     AX = 3000h
  2451.     CX = 0000h
  2452.     DX = 0000h
  2453. Return: CX:DX -> 3270PC configuration table (see below)
  2454.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  2455. SeeAlso: AX=1F01h
  2456.  
  2457. Format of 3270 PC configuration table:
  2458. Offset    Size    Description
  2459.  00h    BYTE    aspect ratio X
  2460.  01h    BYTE    aspect ratio Y
  2461.  02h    BYTE    monitor type (see below)
  2462.  03h    BYTE    reserved
  2463.  04h    BYTE    adapter ID
  2464.         00h = 5151/5272 adapter
  2465.         04h = 5151/5272 with XGA adapter
  2466.         30h = 3295 or 3270PC G/GX adapter
  2467.  05h    BYTE    reserved
  2468.  06h    BYTE    function flags 1 (see below)
  2469.  07h    BYTE    function flags 2
  2470.         bit 6: GPI graphics supported
  2471.  08h    WORD    segment address of Control Program Level table (see below)
  2472.  0Ah 10 BYTEs    reserved
  2473.  
  2474. Values for monitor type:
  2475.  00h    5151 (mono) or 5272 (color)
  2476.  01h    3295
  2477.  02h    5151 or 5272 with XGA (???) graphics adapter
  2478.  03h    5279 with 3270PC G adapter
  2479.  04h    5379 model C01 with 3270PC GX adapter
  2480.  05h    5379 model M01 with 3270PC GX adapter
  2481.  07h    non-3270PC with 3270 Workstation Program
  2482.  FFh    3270PC Control Program not loaded
  2483.  
  2484. Bitfields for function flags 1:
  2485.  bit 7    mono text, 1 page
  2486.  bit 6    color text, 1 page
  2487.  bit 5    color text, 4 pages
  2488.  bit 4    CGA color graphics
  2489.  bit 3    720x350 two-color graphics
  2490.  bit 2    360x350 four-color graphics
  2491.  bit 1    720x350 eight-color graphics
  2492.  
  2493. Format of Control Program Level table:
  2494. Offset    Size    Description
  2495.  00h    WORD    program version
  2496.         02xxh = 3270PC Control Program v2.xx
  2497.         03xxh = 3270PC Control Program v3.xx
  2498.         04xxh = 3270 Workstation Program v1.xx
  2499.  02h    BYTE    Control Program ID (00h)
  2500.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  2501. --------a-1038-------------------------------
  2502. INT 10 - Tinytalk Personal v1.09f - GET CONFIGURATION INFO
  2503.     AH = 38h
  2504. Return: ES:DI -> configuration info (see below)
  2505. Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2506. Note:    this call is also used as the installation check by verifying that the
  2507.       returned ES:DI points at valid configuration info
  2508. SeeAlso: INT 14/AX=F0F1h,INT 2F/FB00h"AutoBraille"
  2509. Index:    installation check;Tinytalk Personal
  2510.  
  2511. Format of configuration info:
  2512. Offset    Size    Description
  2513.  00h  8 BYTEs    signature "TTCONFIG"
  2514.  08h    WORD    size of configuration data, not counting signature, this WORD,
  2515.         or the following byte
  2516.  0Ah    BYTE    ???
  2517.  0Bh    ???    configuration data
  2518. --------V-1040-------------------------------
  2519. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  2520.     AH = 40h
  2521. Desc:    switch the Hercules Graphics Card into graphics mode (720x348)
  2522. SeeAlso: AH=00h,AH=41h
  2523. Index:    video modes
  2524. --------V-1041-------------------------------
  2525. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  2526.     AH = 41h
  2527. Desc:    switch the Hercules Graphics Card into text mode
  2528. SeeAlso: AH=00h,AH=40h
  2529. Index:    video modes
  2530. --------V-1042-------------------------------
  2531. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  2532.     AH = 42h
  2533. SeeAlso: AH=45h
  2534. --------V-1043-------------------------------
  2535. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  2536.     AH = 43h
  2537.     AL = page number (0,1)
  2538. Desc:    specify which of the two pages of video memory is to be used for
  2539.       output
  2540. SeeAlso: AH=05h,AH=44h,AH=45h
  2541. --------V-1044-------------------------------
  2542. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  2543.     AH = 44h
  2544.     AL = drawing function
  2545.         00h clear pixels
  2546.         01h set pixels
  2547.         02h invert pixels
  2548. Desc:    specify how graphics output will change the display
  2549. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  2550. --------V-1045-------------------------------
  2551. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  2552.     AH = 45h
  2553.     AL = page number (0,1)
  2554. Desc:    specify which of the two pages of video memory is visible on screen
  2555. SeeAlso: AH=05h,AH=42h,AH=43h
  2556. --------V-1046-------------------------------
  2557. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  2558.     AH = 46h
  2559.     DI = x (0-720)
  2560.     BP = y (0-347)
  2561. Note:    function 44h determines operation and function 43h which page to use
  2562. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  2563. --------V-1047-------------------------------
  2564. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  2565.     AH = 47h
  2566.     DI = x (0-720)
  2567.     BP = y (0-347)
  2568. Return: AL = 00h pixel clear
  2569.     AL = 01h pixel set
  2570. Note:    function 43h specifies which page is used
  2571. SeeAlso: AH=0Dh,AH=46h
  2572. --------V-1048-------------------------------
  2573. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  2574.     AH = 48h
  2575.     DI = x (0-720)
  2576.     BP = y (0-347)
  2577. Desc:    specify the location from which to start the next graphics output
  2578. SeeAlso: AH=49h
  2579. --------V-1049-------------------------------
  2580. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  2581.     AH = 49h
  2582.     DI = x (0-720)
  2583.     BP = y (0-347)
  2584. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  2585.       use
  2586. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  2587. --------V-104A-------------------------------
  2588. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  2589.     AH = 4Ah
  2590.     DI = x coordinate of lower left corner
  2591.     BP = y coordinate of lower left corner
  2592.     BX = height in pixels
  2593.     CX = width in pixels
  2594. Desc:    draw a solid rectangle of the specified size at the given location
  2595. SeeAlso: AH=4Eh
  2596. --------V-104B-------------------------------
  2597. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  2598.     AH = 4Bh
  2599.     AL = character to display
  2600.     DI = x (0-720)
  2601.     BP = y (0-347)
  2602. Note:    unlike the other BIOS character functions character position is
  2603.       specified in pixels rather than rows and columns
  2604. SeeAlso: AH=09h,AH=0Ah
  2605. ----------104B-------------------------------
  2606. INT 10 - FRIEZE v7.0+ - API
  2607.     AH = 4Bh
  2608.     CL = function
  2609.         00h reserved
  2610.         01h load window
  2611.         ES:BX -> ASCIZ filename from which to read
  2612.         02h save window
  2613.         ES:BX -> ASCIZ filename to which to write
  2614.         03h (v7.41) set ???
  2615.         AL = ???
  2616.         04h (v7.41) set ???
  2617.         AL = ???
  2618.         06h (v7.41) ???
  2619.         AL = ???
  2620.         07h set window size
  2621.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  2622.         09h set patterns
  2623.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  2624.         0Ah get patterns
  2625.         ES:BX -> 16-BYTE buffer for color correspondences
  2626.         0Bh set mode
  2627.         AL = mode
  2628.         0Ch (v7.41) ???
  2629.         AL = ???
  2630.             00h ??? (calls original INT 05)
  2631.             else ???
  2632.         0Dh (v7.41) ???
  2633.         AL = ???
  2634.             00h ??? (calls original INT 05)
  2635.             else ???
  2636.         0Eh (v7.41) ???
  2637.         ???
  2638.         0Fh get window
  2639.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  2640.         10h set print options
  2641.         ES:BX -> printer options in same format as FRIEZE cmdline
  2642.         11h (v7.41) ???
  2643.         ???
  2644.         12h (v7.41) ???
  2645.         ???
  2646.         13h (v7.41) ???
  2647.         ???
  2648.         14h get version
  2649.         Return: AH = major version (00h if FRIEZE version before 7)
  2650.             AL = minor version
  2651.         15h set parameters
  2652.         ES:BX -> parameter table (see below)
  2653.         16h get parameters
  2654.         ES:BX -> buffer for parameter table (see below)
  2655.         17h get printer resolution
  2656.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  2657.         18h reserved (v8.0 only)
  2658.         50h (v7.41) get ???
  2659.         Return: AX = ???
  2660.         51h (v7.41) get ???
  2661.         Return: ES = ??? (seen 2348h)
  2662.             AX = ??? (seen 8432h)
  2663. Return: AX = status
  2664.         00h successful
  2665.         01h user aborted printout with ESC
  2666.         02h reserved
  2667.         03h file read error
  2668.         04h file write error
  2669.         05h file not found
  2670.         06h invalid header (not an image or wrong screen mode)
  2671.         07h file close error
  2672.         08h disk error
  2673.         09h printer error
  2674.         0Ah invalid function
  2675.         0Bh can't create file
  2676.         0Ch wrong video mode
  2677. SeeAlso: AH=0Fh/SI=F123h
  2678.  
  2679. Format of parameter table:
  2680. Offset    Size    Description
  2681.  00h    WORD    top margin (1/100 inch)
  2682.  02h    WORD    left margin (1/100 inch)
  2683.  04h    WORD    horizontal size (1/100 inch)
  2684.  06h    WORD    vertical size (1/100 inch)
  2685.  08h    WORD    quality/draft mode
  2686.         00h draft mode
  2687.         01h quality mode
  2688.         02h use horizontal/vertical resolution for output resolution
  2689.  0Ah    WORD    printer horizontal resolution (dots per inch)
  2690.  0Ch    WORD    printer vertical resolution (dots per inch)
  2691.  0Eh    WORD    reserved (FFFFh)
  2692. Note:    any field which should remain unchanged may be filled with FFFFh
  2693. --------V-104C-------------------------------
  2694. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  2695.     AH = 4Ch
  2696.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  2697.     DI = x coordinate of center
  2698.     BP = y coordinate of center
  2699.     BX = radius
  2700. SeeAlso: AH=49h,AH=4Dh
  2701. --------V-104D-------------------------------
  2702. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  2703.     AH = 4Dh
  2704.     DI = x of center
  2705.     BP = y of center
  2706.     BX = radius
  2707. SeeAlso: AH=49h,AH=4Ch
  2708. --------V-104E-------------------------------
  2709. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  2710.     AH = 4Eh
  2711.     DI = x coordinate of an interior point
  2712.     BP = y coordinate of an interior point
  2713. Desc:    fill a convex polygonal area bounded by a contiguous line of the
  2714.       opposite color with the border color
  2715. Note:    the first fill makes the figure solid, the second erases it
  2716. SeeAlso: AH=4Ah
  2717. --------V-104F00-----------------------------
  2718. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  2719.     AX = 4F00h
  2720.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  2721. Return: AL = 4Fh function supported
  2722.     AH = status
  2723.         00h successful
  2724.         01h failed
  2725. Desc:    determine whether VESA BIOS extensions are present and the capabilities
  2726.       supported by the display adapter
  2727. SeeAlso: AX=4F01h,AX=7F00h
  2728. Index:    installation check;VESA
  2729.  
  2730. Format of SuperVGA information:
  2731. Offset    Size    Description
  2732.  00h  4 BYTEs    signature ('VESA')
  2733.  04h    WORD    VESA version number
  2734.  06h    DWORD    pointer to OEM name
  2735.         "761295520" for ATI
  2736.  0Ah  4 BYTEs    capabilities
  2737.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  2738.         (list of words terminated with FFFFh)
  2739.  12h 238 BYTEs    reserved
  2740. --------V-104F01-----------------------------
  2741. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  2742.     AX = 4F01h
  2743.     CX = SuperVGA video mode
  2744.     ES:DI -> 256-byte buffer mode information (see below)
  2745. Return: AL = 4Fh function supported
  2746.     AH = status
  2747.         00h successful
  2748.         01h failed
  2749. Desc:    determine the attributes of the specified video mode
  2750. SeeAlso: AX=4F00h,AX=4F02h
  2751.  
  2752. Format of mode information:
  2753. Offset    Size    Description
  2754.  00h    WORD    mode attributes
  2755.         bit 0: mode supported
  2756.         bit 1: optional information available
  2757.         bit 2: BIOS output supported
  2758.         bit 3: set if color, clear if monochrome
  2759.         bit 4: set if graphics mode, clear if text mode
  2760.  02h    BYTE    window A attributes
  2761.         bit 0: exists
  2762.         bit 1: readable
  2763.         bit 2: writable
  2764.         bits 3-7 reserved
  2765.  03h    BYTE    window B attributes (as for window A)
  2766.  04h    WORD    window granularity in K
  2767.  06h    WORD    window size in K
  2768.  08h    WORD    start segment of window A
  2769.  0Ah    WORD    start segment of window B
  2770.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  2771.  10h    WORD    bytes per scan line
  2772. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  2773.  12h    WORD    width in pixels
  2774.  14h    WORD    height in pixels
  2775.  16h    BYTE    width of character cell in pixels
  2776.  17h    BYTE    height of character cell in pixels
  2777.  18h    BYTE    number of memory planes
  2778.  19h    BYTE    number of bits per pixel
  2779.  1Ah    BYTE    number of banks
  2780.  1Bh    BYTE    memory model type (see below)
  2781.  1Ch    BYTE    size of bank in K
  2782.  1Dh    BYTE    number of image pages
  2783.  1Eh    BYTE    reserved (0)
  2784. ---VBE v1.2+---
  2785.  1Fh    BYTE    red mask size
  2786.  20h    BYTE    red field position
  2787.  21h    BYTE    green mask size
  2788.  22h    BYTE    green field size
  2789.  23h    BYTE    blue mask size
  2790.  24h    BYTE    blue field size
  2791.  25h    BYTE    reserved mask size
  2792.  26h    BYTE    reserved mask position
  2793.  27h    BYTE    direct color mode info
  2794.  28h    BYTE    reserved (0)
  2795.  
  2796. Values for memory model type:
  2797.  00h text
  2798.  01h CGA graphics
  2799.  02h HGC graphics
  2800.  03h 16-color (EGA) graphics
  2801.  04h packed pixel graphics
  2802.  05h "sequ 256" (non-chain 4) graphics
  2803.  06h direct color (HiColor, 24-bit color)
  2804.  07h YUV (luminance-chrominance)
  2805.  08h-0Fh reserved for VESA
  2806.  10h-FFh OEM memory models
  2807. --------V-104F02-----------------------------
  2808. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  2809.     AX = 4F02h
  2810.     BX = mode
  2811.         bit 15 set means don't clear video memory
  2812. Return: AL = 4Fh function supported
  2813.     AH = status
  2814.         00h successful
  2815.         01h failed
  2816. SeeAlso: AX=4F01h,AX=4F03h
  2817.  
  2818. Values for VESA video mode:
  2819.  00h-FFh OEM video modes (see AH=00h)
  2820.  100h    640x400x256
  2821.  101h    640x480x256
  2822.  102h    800x600x16
  2823.  103h    800x600x256
  2824.  104h    1024x768x16
  2825.  105h    1024x768x256
  2826.  106h    1280x1024x16
  2827.  107h    1280x1024x256
  2828.  108h    80x60 text
  2829.  109h    132x25 text
  2830.  10Ah    132x43 text
  2831.  10Bh    132x50 text
  2832.  10Ch    132x60 text
  2833. ---VBE v1.2---
  2834.  10Dh    320x200x32K
  2835.  10Eh    320x200x64K
  2836.  10Fh    320x200x16M
  2837.  110h    640x480x32K
  2838.  111h    640x480x64K
  2839.  112h    640x480x16M
  2840.  113h    800x600x32K
  2841.  114h    800x600x64K
  2842.  115h    800x600x16M
  2843.  116h    1024x768x32K
  2844.  117h    1024x768x64K
  2845.  118h    1024x768x16M
  2846.  119h    1280x1024x32K
  2847.  11Ah    1280x1024x64K
  2848.  11Bh    1280x1024x16M
  2849. Index:    video modes
  2850.  
  2851. Values for S3 OEM video mode:
  2852.  201h    640x480x256
  2853.  202h    800x600x16
  2854.  203h    800x600x256
  2855.  204h    1024x768x16
  2856.  205h    1024x768x256
  2857.  206h    1280x960x16
  2858.  208h    1280x1024x16
  2859.  301h    640x480x32K
  2860. Index:    video modes
  2861. --------V-104F03-----------------------------
  2862. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  2863.     AX = 4F03h
  2864. Return: AL = 4Fh function supported
  2865.     AH = status
  2866.         00h successful
  2867.         01h failed
  2868.     BX = video mode (see AX=4F02h)
  2869. SeeAlso: AX=4F02h
  2870. --------V-104F04-----------------------------
  2871. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  2872.     AX = 4F04h
  2873.     DL = subfunction
  2874.         00h get state buffer size
  2875.         Return: BX = number of 64-byte blocks needed
  2876.         01h save video states
  2877.         ES:BX -> buffer
  2878.         02h restore video states
  2879.         ES:BX -> buffer
  2880.     CX = flags for states to save/restore
  2881.         bit 0: video hardware state
  2882.         bit 1: video BIOS data state
  2883.         bit 2: video DAC state
  2884.         bit 3: SuperVGA state
  2885. Return: AL = 4Fh function supported
  2886.     AH = status
  2887.         00h successful
  2888.         01h failed
  2889. --------V-104F05-----------------------------
  2890. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  2891.     AX = 4F05h
  2892.     BH = subfunction
  2893.         00h select video memory window
  2894.         DX = window address in video memory (in granularity units)
  2895.         01h get video memory window
  2896.         Return: DX = window address in video memory (in gran. units)
  2897.     BL = window number
  2898.         00h window A
  2899.         01h window B
  2900. Return: AL = 4Fh function supported
  2901.     AH = status
  2902.         00h successful
  2903.         01h failed
  2904. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  2905. --------V-104F06-----------------------------
  2906. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH
  2907.     AX = 4F06h
  2908.     BL = function
  2909.         00h set scan line length
  2910.         CX = desired width in pixels
  2911.         01h get scan line length
  2912. Return: AL = 4Fh if function supported
  2913.     AH = status
  2914.         00h successful
  2915.         01h failed
  2916.     BX = bytes per scan line
  2917.     CX = number of pixels per scan line
  2918.     DX = maximum number of scan lines
  2919. Notes:    if the desired width is not achievable, the next larger width will be
  2920.       set
  2921.     the scan line may be wider than the visible area of the screen
  2922.     this function is valid in text modes, provided that values are
  2923.       multiplied by the character cell width/height
  2924. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  2925. --------V-104F07BH00-------------------------
  2926. INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
  2927.     AX = 4F07h
  2928.     BH = 00h (reserved)
  2929.     BL = function
  2930.         00h set display start
  2931.         CX = leftmost displayed pixel in scan line
  2932.         DX = first displayed scan line
  2933.         01h get display start
  2934.         Return: BH = 00h
  2935.             CX = leftmost displayed pixel in scan line
  2936.             DX = first displayed scan line
  2937. Return: AL = 4Fh if function supported
  2938.     AH = status
  2939.         00h successful
  2940.         01h failed
  2941. Note:    this function is valid in text modes, provided that values are
  2942.       multiplied by the character cell width/height
  2943. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  2944. --------V-104F08-----------------------------
  2945. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  2946.     AX = 4F08h
  2947.     BL = function
  2948.         00h set DAC palette width
  2949.         BH = desired number of bits per primary color
  2950.         01h get DAC palette width
  2951. Return: AL = 4Fh if function supported
  2952.     AH = status
  2953.     BH = current number of bits per primary (06h = standard VGA)
  2954. --------V-104FFF-----------------------------
  2955. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  2956.     AX = 4FFFh
  2957.     DL = new state (00h off, 01h on)
  2958. Return: AX = 0000h if successful
  2959. --------U-1050-------------------------------
  2960. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  2961.     AH = 50h
  2962. Return: BX = 1954h if installed
  2963.         AL = 00 if inactive, nonzero if active
  2964. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2965. SeeAlso: AH=51h
  2966. --------J-105000-----------------------------
  2967. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  2968.     AX = 5000h
  2969.     BX = country code
  2970.         0001h USA (English), 0051h Japan
  2971. Return: AL = status
  2972.         00h successful
  2973.         01h bad country code
  2974.         02h other error
  2975. SeeAlso: AX=5001h,INT 16/AX=5000h
  2976. --------J-105001-----------------------------
  2977. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  2978.     AX = 5001h
  2979. Return: AL = status
  2980.         00h successful
  2981.         BX = country code
  2982.         02h error
  2983. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  2984. --------V-105049-----------------------------
  2985. INT 10 - VIDEO - SCREENR v1.55+ - API
  2986.     AX = 5049h ('PI')
  2987.     BX = function
  2988.         0000h installation check
  2989.         0001h lock mode
  2990.         0002h unlock mode
  2991.         0003h lock palette
  2992.         0004h unlock palette
  2993. Return: AX = 0000h if installed
  2994.         BX = TSR version (BH=major,BL=minor)
  2995.         CL = mode locking status
  2996.         00h mode not locked
  2997.         01h mode locked : INT 10/AH=00h disabled
  2998.         CH = palette locking status
  2999.         00h palette not locked
  3000.         01h palette locked, the following functions are disabled:
  3001.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  3002. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  3003.       utility.
  3004. Index:    installation check;SCREENR
  3005. --------U-1051-------------------------------
  3006. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  3007.     AH = 51h
  3008.     AL = state
  3009.         00h disable
  3010.         nonzero enable
  3011. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  3012. SeeAlso: AH=50h"SCROLOCK"
  3013. --------J-105100-----------------------------
  3014. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  3015.     AX = 5100h
  3016.     BH = character width in bits (10h)
  3017.     BL = character height (10h)
  3018.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  3019.     ES:BP -> character bitmap
  3020. Return: AL = status (00h successful, 01h failed)
  3021. SeeAlso: AX=5101h,INT 1F
  3022. --------J-105101-----------------------------
  3023. INT 10 - VIDEO - AX PC - READ CHARACTER
  3024.     AX = 5101h
  3025.     BH = character width in bits
  3026.     BL = character height
  3027.     DX = character code (DH = 00h if 8-bit character)
  3028.     ES:BP -> buffer for character bitmap
  3029. Return: AL = status (00h successful, 01h failed)
  3030. SeeAlso: AH=09h,AX=5100h
  3031. --------J-105200-----------------------------
  3032. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  3033.     AX = 5200h
  3034.     BX = segment of buffer
  3035. SeeAlso: AX=5201h
  3036. --------J-105201-----------------------------
  3037. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  3038.     AX = 5201h
  3039. Return: BX = segment of buffer or 0000h if failed
  3040. SeeAlso: AX=8300h,AH=FEh
  3041. ----------1053-------------------------------
  3042. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  3043.     AH = 53h
  3044.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  3045.         .PR2)
  3046. Return: ???
  3047. SeeAlso: AH=55h
  3048. ----------1055-------------------------------
  3049. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  3050.     AH = 55h
  3051. Return: FXSHOW.EXE removed from memory
  3052. SeeAlso: AH=53h
  3053. --------V-105555-----------------------------
  3054. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  3055.     AX = 5555h
  3056. Return: AX = AAAAh    if installed
  3057.     BX:CX -> ??? routine in SMS.COM resident portion
  3058.           -> data area in VCONFIG
  3059. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  3060.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  3061. SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
  3062.  
  3063. Format of data area:
  3064. Offset    Size    Description
  3065.  00h    DWORD    original INT 09 vector
  3066.  04h    DWORD    original INT 10 vector
  3067.  08h    DWORD    original INT 1C vector
  3068.  0Ch    WORD    screen saver state, 0=off, 1=on
  3069.  0Eh    WORD    blanking interval in clock ticks
  3070. --------V-106A00BX0000-----------------------
  3071. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  3072.     AX = 6A00h
  3073.     BX = 0000h
  3074.     CX = 0000h
  3075.     DX = buffer length (may be 0)
  3076.     ES:DI -> buffer
  3077. Return: BX = number of bytes stored in buffer
  3078.     CX = bytes required for all descriptions (0 if no DGIS)
  3079. Note:    buffer contains descriptions and addresses of DGIS-compatible
  3080.       display(s) and printer(s)
  3081. SeeAlso: AX=6A02h
  3082. --------V-106A01CX0000-----------------------
  3083. INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
  3084.     AX = 6A01h
  3085.     CX = 0000h
  3086.     ES:DI = address of device to send INT 10 output to
  3087. Return: CX = 0000h  output could not be redirected
  3088.          else INT 10h output now routed to requested display
  3089. SeeAlso: AX=6A02h
  3090. --------V-106A02-----------------------------
  3091. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  3092.     AX = 6A02h
  3093.     ES:DI = 0000h:0000h
  3094. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  3095.         else address of the current DGIS INT 10 display
  3096. SeeAlso: AX=6A00h,AX=6A01h
  3097. --------V-106E00------------------------------------
  3098. INT 10 - Paradise VGA internal - GET ???
  3099.     AX = 6E00h
  3100. Return: AH = ??? (depends on serial number)
  3101.     AL = ???
  3102.     BX = ???
  3103.     CL = ???
  3104.     CH = ???
  3105.     DX = ???
  3106. SeeAlso: AX=6E04,AX=6E05
  3107. --------V-106E04-------------------------------------
  3108. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  3109.     AX = 6E04h
  3110. Return: BX = screen width (columns)
  3111.     CX = screen height (lines)
  3112.     AH = ??? (05h or FFh)
  3113.     AL = ??? (04h or video mode)
  3114. SeeAlso: AX=6E00,AX=6E05
  3115. --------V-106E05-------------------------------------
  3116. INT 10 - Paradise VGA internal - SET MODE
  3117.     AX = 6E05h
  3118.     BL = mode
  3119. Note:    like AH=0, AL=BL.
  3120. SeeAlso: AH=00,AX=6E00,AX=6E04,AX=6F05h
  3121. --------V-106F00BX0000-----------------------
  3122. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
  3123.     AX = 6F00h
  3124.     BX = 0000h
  3125. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  3126.     BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  3127. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  3128. --------V-106F01-----------------------------
  3129. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
  3130.     AX = 6F01h
  3131. Return: AL = monitor type code (HP,VEGA VGA only) (see below)
  3132.     AH = status register information
  3133.          bit  0 = display enable
  3134.             0 = display enabled
  3135.             1 = vertical or horizontal retrace in progress
  3136.          bit  1 = light pen flip flop set
  3137.          bit  2 = light pen switch activated
  3138.          bit  3 = vertical sync
  3139.          bit  4 = monitor resolution
  3140.             0 = high resolution (>200 lines)
  3141.             1 = low resolution (<=200 lines)
  3142.          bit  5 = display type
  3143.             0 = color
  3144.             1 = monochrome
  3145.          bits6,7= diagnostic bits
  3146.     CL = current value of Extended Control register (HP Ext BIOS, and only
  3147.         if AL=41h)
  3148. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  3149.  
  3150. Values for monitor type code (HP Extended BIOS):
  3151.  00h    non-HP card with ROM and possibly its own INT 10h driver
  3152.  41h    MultiMode video display adapter
  3153.  42h-44h reserved
  3154.  45h    industry standard monochrome display adapter
  3155.  46h    industry standard color display adapter
  3156.  51h    reserved
  3157. --------V-106F02-----------------------------
  3158. INT 10 - VIDEO - HP Vetra EXTENDED BIOS - SET MONITOR INFO
  3159.     AX = 6F02h
  3160.     BL = new value for extended control register (see below)
  3161. Return:    nothing
  3162. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  3163.       is installed
  3164.     the Extended Control register is at I/O address 3DDh
  3165. SeeAlso: AX=6F01h,AX=6F03h
  3166.  
  3167. Bitfields for extended control register:
  3168.  bit 0    screen resolution (0 = 200 lines, 1 = 400 lines)
  3169.  bit 1    underline enable (if set, 'blue' bit of fg color = underl)
  3170.  bit 2    font (0 = Standard-8, 1 = HP-Roman-8)
  3171.  bit 3    memory disabled for CPU access
  3172.  bit 4    allow access to full 32K memory instead of wrapping at 16K
  3173.  bit 5    select second 16K page instead of first
  3174.  bits 6,7 unused
  3175. --------V-106F03-----------------------------
  3176. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
  3177.     AX = 6F03h
  3178.     BH = exclude mask (set bits are not modified)
  3179.     BL = new values for bits indicated by BH (see AX=6F02h)
  3180. Return:    nothing
  3181. Note:    this function is only valid when an HP MultiMode Video Display Adapter
  3182.       is installed
  3183. SeeAlso: AX=6F01h,AX=6F02h
  3184. --------V-106F04-----------------------------
  3185. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  3186.     AX = 6F04h
  3187. Return: AL = current video mode (see AX=6F05h)
  3188.     BX = horizontal columns (text) or pixels (graphics)
  3189.     CX = vertical columns (text) or pixels (graphics)
  3190. SeeAlso: AX=6F05h
  3191. --------V-106F05-----------------------------
  3192. INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
  3193.     AX = 6F05h
  3194.     BL = mode (see below)
  3195. Notes:    also supported by the HP Vectra Extended BIOS
  3196.     on the HP Vectra, this function rather than AH=00h must be used to
  3197.       return to an IBM-standard mode after setting an HP-specified mode
  3198.       from 08h to 0Fh.
  3199. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3200.  
  3201. Values for video mode:
  3202.       text/ text pixel     pixel    colors    disp    scrn  system
  3203.       grph resol  box    resoltn        page    addr
  3204.  00h-13h = standard IBM modes (see AH=00h)
  3205.  08h = T   80x27           mono             HP MultiMode Video 
  3206.  09h = T   80x27                     HP MultiMode Video 
  3207.  0Ah = T   40x27           mono             HP MultiMode Video 
  3208.  0Bh = T   40x27                     HP MultiMode Video 
  3209.  0Ch = Reserved                         HP MultiMode Video 
  3210.  0Dh = G        640x400                 HP MultiMode Video 
  3211.  0Eh = G        320x400                 HP MultiMode Video 
  3212.  0Fh = G        320x400                 HP MultiMode Video 
  3213.  40h = T   80x43  8x8                     Video7/VEGA VGA
  3214.  41h = T  132x25  8x14                     Video7/VEGA VGA
  3215.  42h = T  132x43  8x8                     Video7/VEGA VGA
  3216.  43h = T   80x60  8x8                     Video7/VEGA VGA
  3217.  44h = T  100x60  8x8                     Video7/VEGA VGA
  3218.  45h = T  132x28  8x8                     Video7/VEGA VGA
  3219.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  3220.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  3221.      = G        720x540      16             Northgate, Headland 1024i
  3222.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  3223.      = G        800x600      16             Headland 1024i
  3224.  63h = G           1024x768       2             Video7 VGA
  3225.  64h = G           1024x768       4             Video7 VGA
  3226.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  3227.      = G           1024x768      16             Headland 1024i
  3228.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  3229.      = G        640x400     256             Northgate, Headland 1024i
  3230.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  3231.      = G        640x480     256             Headland 1024i
  3232.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  3233.      = G        720x540     256             Headland 1024i
  3234.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  3235.      = G        800x600     256             Headland 1024i
  3236.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  3237.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  3238.  72h = G        800x600      16gray         Video7 VGA
  3239.  73h = G           1024x768       2gray         Video7 VGA
  3240.  74h = G           1024x768       4gray         Video7 VGA
  3241.  75h = G           1024x768      16gray         Video7 VGA
  3242.  76h = G        640x400     256gray         Video7 VGA
  3243.  77h = G        640x480     256gray         Video7 VGA
  3244.  78h = G        720x540     256gray         Video7 VGA
  3245.  79h = G        800x600     256gray         (future)
  3246. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3247. Index:    video modes
  3248. --------V-106F06-----------------------------
  3249. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  3250.     AX = 6F06h
  3251.     BL = Autoswitch mode select
  3252.          00h select EGA/VGA-only modes
  3253.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  3254.          02h select 'bootup' CGA/MGA modes
  3255.     BH = enable/disable (00h enable, 01h = disable selection)
  3256. --------V-106F07-----------------------------
  3257. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  3258.     AX = 6F07h
  3259. Return: AL = 6Fh
  3260.     AH = bits 0-6 = number of 256K blocks of video memory
  3261.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  3262.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  3263.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  3264.     CX = 0000h
  3265. SeeAlso: AH=12h/BL=10h
  3266. --------V-1070-------------------------------
  3267. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  3268.     AH = 70h
  3269. Return: AX:BX -> WORD containing green plane's offset
  3270.     AX:CX -> WORD containing green plane's segment
  3271.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  3272.             4000) planes
  3273. SeeAlso: AH=71h
  3274. --------V-107000BX0000-----------------------
  3275. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  3276.     AX = 7000h
  3277.     BX = 0000h
  3278. Return: AL = 70h if Trident-based Everex card
  3279.     CL = monitor type (see below)
  3280.     CH = feature bits (see below)
  3281.     DX = video board info
  3282.         bits 4-15: board ID model
  3283.         bits 0-3:  board ID revision
  3284.     DI = BCD BIOS version number
  3285. Note:    board models for Trident-based Everex cards:
  3286.         236h Ultragraphics II
  3287.         620h Vision VGA
  3288.         673h EVGA
  3289.         678h Viewpoint
  3290.  
  3291. Values for monitor type:
  3292.  00h mono
  3293.  01h CGA
  3294.  02h EGA
  3295.  03h digital multifrequency
  3296.  04h IBM PS/2
  3297.  05h IBM 8514
  3298.  06h SuperVGA
  3299.  07h analog multifrequency
  3300.  08h super multifrequency
  3301.  
  3302. Bitfields for feature bits:
  3303.  bits 7,6  memory size
  3304.      00 = 256K
  3305.     01 = 512K
  3306.     10 = 1024K
  3307.     11 = 2048K
  3308.  bit 5    special oscillator present
  3309.  bit 4    VGA protect enabled
  3310.  bit 0    6845 emulation
  3311. --------V-107000BX0004-----------------------
  3312. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  3313.     AX = 7000h
  3314.     BX = 0004h
  3315. Return: ES:DI -> FAR paging function (call with DL = page to set)
  3316. Note:    the word preceding ES:DI is the length of the function in bytes, and
  3317.       the last byte of the function is a FAR return instruction.
  3318. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  3319. --------V-107000BX0005-----------------------
  3320. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  3321.     AX = 7000h
  3322.     BX = 0005h
  3323.     CL = maximum number of modes to get info for
  3324.     CH = mode type to get info for (see below)
  3325.     DL = monitor type to get info for
  3326.     ES:DI -> buffer for mode info (see below)
  3327. Return: CL = total number of modes fitting criteria
  3328.     CH = size of each info record
  3329. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  3330.  
  3331. Values for mode type:
  3332.  00h all modes
  3333.  01h monochrome text modes
  3334.  02h color text modes
  3335.  03h four-color CGA graphics modes
  3336.  04h two-color CGA graphics modes
  3337.  05h 16-color graphics modes
  3338.  06h 256-color graphics modes
  3339.  
  3340. Format of mode information record:
  3341. Offset    Size    Description
  3342.  00h    BYTE    mode number (bit 7 set if extended mode)
  3343.  01h    BYTE    mode type (see above)
  3344.  02h    BYTE    info bits
  3345.         bits 7,6 reserved
  3346.              5     monochrome mode
  3347.              4     interlaced display
  3348.              3     requires special oscillator
  3349.              2,1 memory required
  3350.              00 = 256K
  3351.              01 = 512K
  3352.              10 = 1024K
  3353.              11 = 2048K
  3354.              0     reserved
  3355.  03h    BYTE    font height
  3356.  04h    BYTE    text columns on screen
  3357.  05h    BYTE    text rows on screen
  3358.  06h    WORD    number of scan lines
  3359.  08h    BYTE    color information
  3360.         bits 7-4 reserved
  3361.              3-0 bits per pixel
  3362. --------V-1071-------------------------------
  3363. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  3364.     AH = 71h
  3365. Return: AX:BX -> WORD containing segment address of INCRAM
  3366.     AX:CX -> WORD containing offset of INCRAM
  3367. SeeAlso: AH=70h
  3368. --------V-1072-------------------------------
  3369. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  3370.     AH = 72h
  3371.     AL = number of columns to shift scroll area, 00h to clear entire area
  3372.     BH = new attributes for blanked columns at left
  3373.     CH,CL = row, column of upper left corner of scroll area
  3374.     DH,DL = row, column of lower right corner of scroll area
  3375. SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
  3376. --------V-1073------------------------------
  3377. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  3378.     AH = 73h
  3379.     AL = number of columns to shift scroll area, 00h to clear entire area
  3380.     BH = new attributes for blanked columns at right
  3381.     CH,CL = row, column of upper left corner of scroll area
  3382.     DH,DL = row, column of lower right corner of scroll area
  3383. SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
  3384. --------V-107F00-----------------------------
  3385. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  3386.     AX = 7F00h
  3387. Return: AL != 7Fh if not supported
  3388.     AL = 7Fh if supported
  3389.         AH = status
  3390.         00h successful
  3391.             ES:DI -> info structure (see below)
  3392.         01h failed
  3393. SeeAlso: AX=4F00h
  3394.  
  3395. Format of info structure:
  3396. Offset    Size    Description
  3397.  00h    DWORD    pointer to VESA function dispatch table
  3398.  04h    DWORD    pointer to SOLLEX function dispatch table
  3399.  08h    DWORD    pointer to VESA SuperVGA info (see AX=4F00h)
  3400.  0Ch    DWORD    pointer to mode info structure table, consisting of
  3401.         alternating ResInfo (see below) and VESA mode information
  3402.         (see AX=4F01h) blocks, terminated with an FFFFh word
  3403.  10h    DWORD    pointer to font info structure table (see below)
  3404.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  3405.  16h    DWORD    pointer to ASCIZ ID string
  3406.  1Ah    DWORD    pointer to timeout reset table
  3407.         array of bytes, each a multiple of the minimum time increment
  3408.  1Eh    WORD    minimum time increment in timer ticks
  3409.  20h    BYTE    inverse options supported
  3410.         bit 0: inverse supported
  3411.         bits 1-7: reserved
  3412.  21h    BYTE    normal color value
  3413.  22h    BYTE    inverse color value
  3414.  23h    WORD    port to be accessed for normal/inverse settings
  3415.  25h    WORD    type of interface chip (currently undefined)
  3416.  27h    WORD    program operational mode
  3417.         bits 1-0: 00 no preference
  3418.               01 terse (minimum detail in program messages)
  3419.               10 verbose
  3420.               11 use menus if supported, verbose mode otherwise
  3421.         bits 7-2: reserved
  3422.  29h    WORD    SOLLEX specification version
  3423.  2Bh    WORD    version of VESA/SOLLEX implementation
  3424.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  3425.  2Eh    DWORD    offset to unused section of the extensions ROM
  3426.  31h 16 BYTEs    reserved
  3427. Note:    all DWORD pointers initially require segment fixups; if the segment
  3428.       is 0000h, it should be changed to the returned ES, otherwise it
  3429.       may be assumed to be correct
  3430.  
  3431. Format of ResInfo:
  3432. Offset    Size    Description
  3433.  00h    WORD    16-bit mode number
  3434.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  3435.  04h    WORD    display info (see AX=7F01h/BL=01h)
  3436.  06h    DWORD    pointer to video parameter table
  3437.  0Ah    BYTE    replacement entry in master Video Parameter
  3438.  0Bh    BYTE    mode requested for mode set by BIOS
  3439.  0Ch    DWORD    pointer to LoadReg table
  3440.  10h    BYTE    index into table of clock values (see below)
  3441.  
  3442. Format of font info table [array] entry:
  3443. Offset    Size    Description
  3444.  00h    BYTE    required font height
  3445.  01h    BYTE    parameter to load text mode font
  3446.  02h    BYTE    parameter to load graphics mode font
  3447.  
  3448. Values for clock value index:
  3449.  00h    25 MHz
  3450.  01h    28 MHz
  3451.  02h    PCLK
  3452.  03h    31.5 MHz (VESA 640x480)
  3453.  04h    reserved
  3454.  05h    16 MHz (EGA)
  3455.  06h    PCLK
  3456.  07h    24 MHz (EGA)
  3457.  08h    25 MHz
  3458.  09h    28 MHz
  3459.  0Ah    36 MHz
  3460.  0Bh    45 MHz (for 1024x768)
  3461.  0Ch    80 MHz
  3462.  0Dh    40 MHz
  3463.  0Eh    65 MHz
  3464.  0Fh     1 MHz (for powerdown)
  3465. --------V-107F01BL00-------------------------
  3466. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  3467.     AX = 7F01h
  3468.     BL = 00h
  3469.     CX = adapter request
  3470.         bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  3471.         bit 2:    reserved
  3472.         bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
  3473.         bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
  3474.         bit 7:    lock override
  3475.         bit 8:    alternate adapter mode
  3476.         bits 15-9: reserved
  3477. Return:    AL = 7Fh if supported
  3478.         AH = status
  3479.         00h successful
  3480.         01h failed
  3481.     AL != 7Fh if not supported
  3482. Note:    initializes video hardware to a particular standard
  3483. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  3484. --------V-107F01BL01-------------------------
  3485. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  3486.     AX = 7F01h
  3487.     BL = 01h
  3488. Return: AL != 7Fh if not supported
  3489.     AL = 7Fh if supported
  3490.         AH = status
  3491.         00h successful
  3492.         01h failed
  3493.         BX = adapter type (see AX=7F01h/BL=00h)
  3494.         DX = display type (see below)
  3495. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  3496.  
  3497. Bitfields for display type:
  3498.  bits 1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514)
  3499.  bit 2    multi-frequency analog monitor active
  3500.  bit 3    LCD panel active
  3501.  bit 4    plasma/electroluminescent panel active
  3502.  bit 5    PS/2-type monitor active
  3503.  bit 6    multi-frequency digital monitor active
  3504.  bit 7    Enhanced Color Display monitor active
  3505.  bit 8    alternate display active
  3506.  bits 15-9 reserved
  3507. --------V-107F01BL02-------------------------
  3508. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  3509.     AX = 7F01h
  3510.     BL = 02h
  3511.     CX = adapter request (see AX=7F01h/BL=00h)
  3512. Return: AL != 7Fh if not supported
  3513.     AL = 7Fh if supported
  3514.         AH = status
  3515.         00h requested setting can successfully be made
  3516.         01h requested setting not available in this configuration
  3517. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  3518. --------V-107F02BL00-------------------------
  3519. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  3520.     AX = 7F02h
  3521.     BL = 00h
  3522.     CX = display output setting (see below)
  3523. Return: AL != 7Fh if not supported
  3524.     AL = 7Fh if supported
  3525.         AH = status
  3526.         00h successful
  3527.         01h failed
  3528. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3529.  
  3530. Bitfields for display output setting:
  3531.  bit 0    CRTC control in bits 2,1 valid
  3532.  bit 1    enable digital output
  3533.  bit 2    enable analog output
  3534.  bit 3    panel control in bits 5,4 valid
  3535.  bit 4    enable LCD output
  3536.  bit 5    enable plasma/EL output
  3537.  bit 6    inverse control in bit 7 valid
  3538.  bit 7    0=normal, 1=inverse
  3539.  bits 15-8 reserved
  3540. --------V-107F02BL01-------------------------
  3541. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  3542.     AX = 7F02h
  3543.     BL = 01h
  3544. Return: AL != 7Fh if not supported
  3545.     AL = 7Fh if supported
  3546.         AH = status
  3547.         00h successful
  3548.             BX = display output setting (see AX=7F02h/BL=00h)
  3549.             CX = displays attached (see below)
  3550.         01h failed
  3551. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3552.  
  3553. Bitfields for displays attached:
  3554.  bit 0    PS/2 display on analog output
  3555.  bit 1    multi-frequency monitor on analog output
  3556.  bit 2    LCD panel attached
  3557.  bit 3    plasma/electroluminescent panel attached
  3558.  bit 4    multi-frequency monitor on digital output
  3559.  bit 5    Enhanced Color Display attached to digital outpt
  3560.  bit 6    alternate display
  3561.  bits 15-7 reserved
  3562. --------V-107F03BL00-------------------------
  3563. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  3564.     AX = 7F03h
  3565.     BL = 00h
  3566.     CX = support type
  3567.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  3568.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  3569.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  3570. Return: AL != 7Fh if not supported
  3571.     AL = 7Fh if supported
  3572.         AH = status
  3573.         00h successful
  3574.             CX = size of video support code
  3575.             DX = segment of physical video support (0000h if no ROM)
  3576.             ES = segment of active video support
  3577.             ES:DI -> information block (DI = 0000h if none available)
  3578.         01h failed
  3579. SeeAlso: AX=7F03h/BL=01h
  3580. --------V-107F03BL01-------------------------
  3581. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  3582.     AX = 7F03h
  3583.     BL = 01h
  3584.     CX = support request
  3585.     ES = segment of support code
  3586. Return: AL != 7Fh if not supported
  3587.     AL = 7Fh if supported
  3588.         AH = status
  3589.         00h successful
  3590.         01h failed
  3591. Note:    initializes the indicated video support by calling ES:0003h; this
  3592.       function may be used to switch the active video support back to
  3593.       ROM after AX=7F03h/BL=02h
  3594. SeeAlso: AX=7F03h/BL=00h
  3595. --------V-107F03BL02-------------------------
  3596. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  3597.     AX = 7F03h
  3598.     BL = 02h
  3599.     CX = support request
  3600.     ES = destination segment
  3601. Return: AL != 7Fh if not supported
  3602.     AL = 7Fh if supported
  3603.         AH = status
  3604.         00h successful
  3605.         01h failed
  3606. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  3607. --------V-107F04BL00-------------------------
  3608. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  3609.     AX = 7F04h
  3610.     BL = 00h
  3611.     CX = new power state
  3612. Return: AL != 7Fh if not supported
  3613.     AL = 7Fh if supported
  3614.         AH = status
  3615.         00h successful
  3616.         01h failed
  3617. Note:    higher values progressively reduce the operations available on the
  3618.       video adapter while yielding increasing power savings
  3619. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  3620. --------V-107F04BL01-------------------------
  3621. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  3622.     AX = 7F04h
  3623.     BL = 01h
  3624. Return: AL != 7Fh if not supported
  3625.     AL = 7Fh if supported
  3626.         AH = status
  3627.         00h successful
  3628.             CX = current power state
  3629.             DX = maximum state
  3630.         01h failed
  3631. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  3632. --------V-107F04BL02-------------------------
  3633. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  3634.     AX = 7F04h
  3635.     BL = 02h
  3636.     CX = timeout reset
  3637. Return: AL != 7Fh if not supported
  3638.     AL = 7Fh if supported
  3639.         AH = status
  3640.         00h successful
  3641.         01h failed
  3642. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  3643. --------V-107F04BL03-------------------------
  3644. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  3645.     AX = 7F04h
  3646.     BL = 03h
  3647. Return: AL != 7Fh if not supported
  3648.     AL = 7Fh if supported
  3649.         AH = status
  3650.         00h successful
  3651.             BX = time increment
  3652.             CX = current timeout reset
  3653.             DX = maximum timeout reset
  3654.             ES:DI -> timeout reset table (array of bytes)
  3655.         01h failed
  3656. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  3657. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  3658. --------V-107F05-----------------------------
  3659. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  3660.     AX = 7F05h
  3661.     ES:DI -> register value table (see below)
  3662. Return: AL != 7Fh if not supported
  3663.     AL = 7Fh if supported
  3664.         AH = status
  3665.         00h successful
  3666.         01h failed
  3667. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  3668.  
  3669. Format of register value table:
  3670. Offset    Size    Description
  3671.  00h    WORD    base I/O register (FFFFh = end of list)
  3672.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  3673.         index value and the following register as a data byte
  3674.  2N+2    WORD    FFFFh (end of data list)
  3675.     ... (repeats until FFFFh base address)
  3676. --------V-107F06-----------------------------
  3677. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  3678.     AX = 7F06h
  3679.     BL = subfunction
  3680.         00h set multiple font state
  3681.         CX = new state (00h off, 01h on)
  3682.         01h get multiple font state
  3683.         Return: BL = current state (00h off, 01h on)
  3684. Return: AL != 7Fh if not supported
  3685.     AL = 7Fh if supported
  3686.         AH = status
  3687.         00h successful
  3688.         01h failed
  3689. SeeAlso: AH=11h
  3690. --------V-107F07-----------------------------
  3691. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  3692.     AX = 7F07h
  3693.     BL = how much to fill
  3694.        00h regen size
  3695.        01h all video memory
  3696.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  3697. Return: AL != 7Fh if not supported
  3698.     AL = 7Fh if supported
  3699.         AH = status
  3700.         00h successful
  3701.         01h failed
  3702. SeeAlso: AH=06h
  3703. --------Q-1080--DX4456-----------------------
  3704. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  3705.     AH = 80h
  3706.     DX = 4456h ('DV')
  3707.     ES:DI -> FAR subroutine to be called on ???
  3708. Return: DS = segment of DESQview data structure for video buffer
  3709. Note:    this function is probably meant for internal use only, due to the magic
  3710.       value required in DX
  3711.     the subroutine seems to be called when the DESQview menu is accessed;
  3712.       on entry, AL = 03h or 04h
  3713. --------Q-1081--DX4456-----------------------
  3714. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  3715.     AH = 81h
  3716.     DX = 4456h ('DV')
  3717. Return: ES = segment of DESQview data structure for video buffer
  3718.         BYTE ES:[0] = current window number in DV 2.0x
  3719. Note:    this function is probably meant for internal use only, due to the magic
  3720.       value required in DX
  3721. SeeAlso: AH=82h
  3722. --------Q-1082--DX4456-----------------------
  3723. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  3724.     AH = 82h
  3725.     DX = 4456h ('DV')
  3726. Return: DS = segment in DESQview for data structure
  3727.          in DV 2.00,
  3728.           BYTE DS:[0] = window number
  3729.           WORD DS:[1] = segment of other data structure
  3730.           WORD DS:[3] = segment of window's object handle
  3731.     ES = segment of DESQview data structure for video buffer
  3732.     AL = current window number
  3733.     AH = ???
  3734.     BL = direct screen writes
  3735.         00h program does not do direct writes
  3736.         01h program does direct writes, so shadow buffer not usable
  3737.     BH = ???
  3738.     CL = current video mode
  3739.     CH = ???
  3740. Note:    this function is probably meant for internal use only, due to the magic
  3741.       value required in DX
  3742. SeeAlso: AH=81h
  3743. --------J-108200-----------------------------
  3744. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  3745.     AX = 8200h
  3746.     BL = new scroll mode or FFh to get current mode
  3747.         00h dynamic, 01h software
  3748. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  3749. SeeAlso: AH=06h,AH=07h
  3750. --------J-108300-----------------------------
  3751. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  3752.     AX = 8300h
  3753. Return: AX = offset of video RAM
  3754.     ES:BX -> virtual text RAM buffer
  3755. SeeAlso: AX=5201h
  3756. --------N-108B-------------------------------
  3757. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  3758.     AH = 8Bh
  3759. SeeAlso: AH=92h,AH=93h
  3760. --------N-1090-------------------------------
  3761. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  3762.     AH = 90h
  3763. Return: AL = current video mode (see AH=00h)
  3764. SeeAlso: AH=91h
  3765. --------N-1091-------------------------------
  3766. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  3767.     AH = 91h
  3768. Return: AL = video adapter type (see below)
  3769. Note:    types less than 80h do not imply that the current user is on the host
  3770. SeeAlso: AH=90h
  3771.  
  3772. Values for video adapter type:
  3773.  00h monochrome
  3774.  01h Hercules monochrome graphics
  3775.  02h CGA
  3776.  03h EGA
  3777.  04h VGA
  3778.  80h monochrome text terminal
  3779.  81h Hercules graphics terminal
  3780.  82h color graphics terminal
  3781. --------N-1092-------------------------------
  3782. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  3783.     AH = 92h
  3784. Note:    the terminal will be updated even when screen updates are inhibited if
  3785.       TTY output is used
  3786. SeeAlso: AH=8Bh
  3787. --------N-1093-------------------------------
  3788. INT 10 - Alloy MW386 - REDRAW SCREEN
  3789.     AH = 93h
  3790. SeeAlso: AH=8Bh,AH=FFh
  3791. --------b-10BF00-----------------------------
  3792. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  3793.     AX = BF00h
  3794. Desc:    specify that the external monitor become the active monitor
  3795. Note:    all registers preserved and the internal monitor is blanked
  3796. SeeAlso: AX=BF01h
  3797. --------b-10BF01-----------------------------
  3798. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  3799.     AX = BF01h
  3800. Desc:    specify that the internal monitor become the active monitor
  3801. Note:    all registers preserved and the external monitor is blanked
  3802. SeeAlso: AX=BF00h
  3803. --------b-10BF02-----------------------------
  3804. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  3805.     AX = BF02h
  3806.     BH = master mode
  3807.         04h CGA
  3808.         05h EGA
  3809.         07h MDA
  3810. SeeAlso: AX=BF03h
  3811. --------b-10BF03BX0000-----------------------
  3812. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  3813.     AX = BF03h
  3814.     BX = 0000h
  3815. Return: BH = active monitor
  3816.         00h = external
  3817.         01h = internal
  3818.     BL = master mode
  3819.         00h = switchable VDU not present
  3820.         04h = CGA
  3821.         05h = EGA
  3822.         07h = MDA
  3823.         08h = switchable LCD controller present
  3824.     CH = 00h (reserved)
  3825.     CL = switchable VDU mode supported
  3826.         bit     0   = CGA supported
  3827.         bits 1,2 = reserved (1)
  3828.         bit     3   = MDA supported
  3829.         bits 4-7 = reserved (1)
  3830.     DH = internal monitor type (see below)
  3831.     DL = external monitor type (see below)
  3832. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  3833.  
  3834. Values for monitor type:
  3835.  00h    none
  3836.  01h    dual-mode monitor
  3837.  02h    5153 RGB monitor
  3838.  03h    Compaq Color monitor
  3839.  04h    640x400 flat panel
  3840.  05h    VGC monochrome
  3841.  06h    VGC color
  3842.  07h    LCD VGA
  3843. --------b-10BF04-----------------------------
  3844. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  3845.     AX = BF04h
  3846.     BH = new state of delay
  3847.         00h enabled
  3848.         01h disabled
  3849. SeeAlso: AX=BF05h
  3850. --------b-10BF05-----------------------------
  3851. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  3852.     AX = BF05h
  3853.     BH = new state of video
  3854.         00h off
  3855.         01h on
  3856. SeeAlso: AH=12h/BL=36h,AX=BF04h
  3857. --------b-10BF06-----------------------------
  3858. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  3859.     AX = BF06h
  3860.     CL = address to be read from gray scale table
  3861. Return: AL = bit 3-0 - Value read from gray scale table
  3862.     CL = address to be read from gray scale table
  3863. SeeAlso: AH=12h/BL=33h,AX=BF07h
  3864. --------b-10BF07-----------------------------
  3865. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  3866.     AX = BF07h
  3867.     CH = value to write to gray scale table
  3868.     CL = address to be written to gray scale table
  3869. SeeAlso: AX=BF06h,AX=BF08h
  3870. --------b-10BF08-----------------------------
  3871. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  3872.     AX = BF08h
  3873.     CH = bits 7-4 green weight
  3874.          bits 3-0 blue weight
  3875.     CL = bits 7-4 unused
  3876.          bits 3-0 red weight
  3877. SeeAlso: AH=12h/BH=33h,AX=BF07h
  3878. --------V-10CC00SI0000-----------------------
  3879. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  3880.     AX = CC00h
  3881.     SI = 0000h (if checking version)
  3882. Return: CX = ABCDh
  3883.     AL = Ultravision extensions
  3884.         00h enabled
  3885.         FFh disabled
  3886.     AH = card designator
  3887.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  3888.     DX = support for high resolution modes
  3889.         00h not active
  3890.         01h active
  3891.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  3892.        = unchanged for versions <1.2
  3893. SeeAlso: AX=CC01h,AX=CC02h
  3894. --------V-10CC01-----------------------------
  3895. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  3896.     AX = CC01h
  3897. Notes:    subsequent BIOS calls will be passed through to previous handler
  3898.     should be followed immediately by mode set to restore normal EGA/VGA
  3899.       state
  3900. SeeAlso: AX=CC02h
  3901. --------V-10CC02-----------------------------
  3902. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  3903.     AX = CC02h
  3904. Note:    should be followed immediately by mode set to restore previous
  3905.       UltraVision state
  3906. SeeAlso: AX=CC01h
  3907. --------V-10CD00-----------------------------
  3908. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  3909.     AX = CD00h
  3910.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  3911.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  3912. Notes:    if palette locking is in effect for the current mode, the new colors
  3913.       will be displayed immediately; otherwise, the system reverts to the
  3914.       default palette
  3915.     palette table 0 is reserved for the default palette and cannot be set
  3916.     UltraVision always sets the border color to black
  3917. SeeAlso: AX=CD01h,AX=CD02h
  3918. --------V-10CD01-----------------------------
  3919. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  3920.     AX = CD01h
  3921.     CL = palette locking value
  3922.         00h none
  3923.         01h text modes only (02h,03h)
  3924.         FFh all modes (all standard color text and graphics modes)
  3925. Notes:    intended for video modes with 16 or fewer colors
  3926. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  3927. --------V-10CD02-----------------------------
  3928. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  3929.     AX = CD02h
  3930. Return: CL = palette table number
  3931.     DS:DX -> 17-byte palette register list
  3932.     DS:SI -> current font names table (see below)
  3933. Note:    only the font names are valid on monochrome EGA systems
  3934. SeeAlso: AX=1009h,AX=CD00h
  3935.  
  3936. Format of palette register list:
  3937. Offset    Size    Description
  3938.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  3939.  10h    BYTE    border color
  3940.  
  3941. Format of current font names table (v2+):
  3942. Offset    Size    standard EGA    HiRes EGA    VGA
  3943.  00h  8 BYTEs    N/A        F19 font    F20 font
  3944.  08h  8 BYTEs    F14 font    F14 font    F14 font
  3945.  10h  8 BYTEs    N/A        F11 font    F10 font
  3946.  18h  8 BYTEs    F8 font        F8 font        F8 font
  3947.  
  3948. Format of current font names table (v1.x):
  3949. Offset    Size    HiRes EGA
  3950.  00h  8 BYTEs    F19/F14 font
  3951.  08h  8 BYTEs    F11/F8 font
  3952. --------V-10CD03-----------------------------
  3953. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  3954.     AX = CD03h
  3955. Return: CL = palette locking value
  3956.         00h none
  3957.         01h text modes only
  3958.         FFh all modes
  3959. SeeAlso: AX=CD01h
  3960. --------V-10CD04-----------------------------
  3961. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  3962.     AX = CD04h
  3963. Return: AL = mode number (see below)
  3964. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  3965.  
  3966. Values for video mode number:
  3967.  11h    80x25
  3968.  12h    80x43, 80x50
  3969.  13h    80x34, 80x36
  3970.  14h    80x60, 80x63
  3971.  19h    94x25
  3972.  1Ah    94x43, 94x50
  3973.  1Bh    94x36
  3974.  1Ch    94x63
  3975.  21h    108x25
  3976.  22h    108x43, 108x50
  3977.  23h    107x34, 108x36
  3978.  24h    108x60, 108x63
  3979.  31h    120x25
  3980.  32h    120x43, 120x50
  3981.  33h    132x25
  3982.  34h    132x44, 132x50
  3983.  39h    120x36
  3984.  3Ah    120x63
  3985.  3Bh    132x36
  3986.  3Ch    132x60
  3987. Index:    video modes
  3988. --------V-10CD05-----------------------------
  3989. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  3990.     AX = CD05h
  3991.     CL = type
  3992.         00h line cursor
  3993.         FFh box cursor
  3994. Note:    sets default cursor type for text-based programs
  3995. SeeAlso: AH=01h,AX=CD06h
  3996. --------V-10CD06-----------------------------
  3997. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  3998.     AX = CD06h
  3999. Return:    CL = type
  4000.         00h line cursor
  4001.         FFh box cursor
  4002. SeeAlso: AH=03h,AX=CD05h
  4003. --------V-10CD07-----------------------------
  4004. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  4005.     AX = CD07h
  4006.     CL = hardware underline status
  4007.         00h off (color systems only)
  4008.         01h underline below characters
  4009.         02h strike through characters
  4010.     BL = foreground color for normal text (FFh = current)
  4011.     BH = foreground color for bright text (FFh = current)
  4012. Return: CL = hardware underline status
  4013.     BL = current foreground color for normal text
  4014.     BH = current foreground color for bright text
  4015. Notes:    when underline or strikeout is enabled in color text modes, the
  4016.       specified colors will be assigned temporarily to colors 01h and 09h,
  4017.       allowing affected text to match non-underlined text.    The color
  4018.       remapping uses values from the current onscreen palette regardless
  4019.       of the palette locking status (see AX=CD01h)
  4020.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  4021.       strikeout without color remapping
  4022. SeeAlso: AX=CD08h
  4023. --------V-10CD08-----------------------------
  4024. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  4025.     AX = CD08h
  4026. Return: CL = hardware underline status (see AX=CD07h)
  4027.     BL = foreground color for normal text
  4028.     BH = foreground color for bright text
  4029. Note:    only CL is valid on monochrome EGA systems
  4030. SeeAlso: AX=CD07h
  4031. --------V-10CD10-----------------------------
  4032. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  4033.     AX = CD10h
  4034.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  4035.     CX = ABCDh load 9xN alternate font (v2+)
  4036.        else number of characters to load
  4037.         DX = character offset into font table
  4038.         DS:SI -> 8-byte ASCII font name
  4039.     ES:BP -> font definitions
  4040. Return: AX = FFFFh if invalid font parameters
  4041. Notes:    loads the designated characters into UltraVision's resident font area
  4042.     should be followed by a video mode set to reload character generator
  4043. SeeAlso: AX=1100h
  4044. --------V-10CD-------------------------------
  4045. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  4046.     AH = CDh
  4047.     AL = text mode number (see AX=CD04h)
  4048. Return: AX = CDCDh if invalid mode
  4049. SeeAlso: AX=CD04h
  4050. --------V-10EF-------------------------------
  4051. INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
  4052.     AH = EFh
  4053. Return: DL = video adapter type
  4054.         00h original Hercules
  4055.         01h Hercules Plus
  4056.         02h Hercules InColor???
  4057.     DH = memory mode byte
  4058.         01h "half" mode
  4059.         03h "full" mode
  4060. Program: MSHERC.COM is a support program for the Microsoft Quick languages which
  4061.       makes their graphics libraries compatible with a Hercules card by
  4062.       adding video modes 08h and 88h, and supporting text in the new
  4063.       graphics modes.
  4064. Notes:    while in mode 08h or 88h, INT 10 supports the Hercules card much like
  4065.       a CGA.
  4066.     MSHERC performs an installation check by setting DL=FFh and testing
  4067.       whether it has been changed on return
  4068. Index:    installation check;MSHERC
  4069. --------V-10F0-------------------------------
  4070. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  4071.     AH = F0h
  4072.     BL = register number
  4073.     BH = 00h
  4074.     DX = group index
  4075.         Pointer/data chips
  4076.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  4077.            08h Sequencer (5 registers) 3C4h
  4078.            10h Graphics Controller (9 registers) 3CEh
  4079.            18h Attribute Controller (20 registers) 3C0h
  4080.         Single registers
  4081.            20h Miscellaneous Output register 3C2h
  4082.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4083.            30h Graphics 1 Position register 3CCh
  4084.            38h Graphics 2 Position register 3CAh
  4085. Return: BL = data
  4086. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4087.       compatibility box, and others
  4088. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  4089. --------V-10F1-------------------------------
  4090. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  4091.     AH = F1h
  4092.     DX = group index (see AH=F0h)
  4093.         if single register:
  4094.         BL = value to write
  4095.         otherwise
  4096.         BL = register number
  4097.         BH = value to write
  4098. Return: BL = data
  4099. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4100.       compatibility box, and others
  4101. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  4102. --------V-10F2-------------------------------
  4103. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  4104.     AH = F2h
  4105.     CH = starting register number
  4106.     CL = Number of registers (>1)
  4107.     DX = group index
  4108.          00h CRTC (3B4h mono modes, 3D4h color modes)
  4109.          08h Sequencer 3C4h
  4110.          10h Graphics Controller 3CEh
  4111.          18h Attribute Controller 3C0h
  4112.     ES:BX -> buffer, CL bytes
  4113. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4114.       compatibility box, and others
  4115. SeeAlso: AH=F0h,AH=F3h
  4116. --------V-10F3-------------------------------
  4117. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  4118.     AH = F3h
  4119.     CH = starting register
  4120.     CL = number of registers (>1)
  4121.     DX = group index (see AH=F2h)
  4122.     ES:BX -> buffer, CL bytes
  4123. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4124.       compatibility box, and others
  4125. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  4126. --------V-10F4-------------------------------
  4127. INT 10 - EGA Register Interface Library - READ REGISTER SET
  4128.     AH = F4h
  4129.     CX = number of registers to read (>1)
  4130.     ES:BX -> table of records (see below)
  4131. Return: register values in table filled in
  4132. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4133.       compatibility box, and others
  4134. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  4135.  
  4136. Format of entries in table of register records:
  4137. Offset    Size    Description
  4138.  00h    WORD    group index
  4139.         Pointer/data chips
  4140.            00h CRTC (3B4h mono modes, 3D4h color modes)
  4141.            08h Sequencer 3C4h
  4142.            10h Graphics Controller 3CEh
  4143.            18h Attribute Controller 3C0h
  4144.         Single registers
  4145.            20h Miscellaneous Output register 3C2h
  4146.            28h Feature Control register (3BAh mono modes, 3DAh color)
  4147.            30h Graphics 1 Position register 3CCh
  4148.            38h Graphics 2 Position register 3CAh
  4149.  02h    BYTE    register number (0 for single registers)
  4150.  03h    BYTE    register value
  4151. --------V-10F5-------------------------------
  4152. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  4153.     AH = F5h
  4154.     CX = number of registers to write (>1)
  4155.     ES:BX -> table of records (see AH=F4h)
  4156. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4157.       compatibility box, and others
  4158. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  4159. --------V-10F6------------------------------
  4160. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  4161.     AH = F6h
  4162. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  4163.       others
  4164. SeeAlso: AH=F7h
  4165. --------V-10F7------------------------------
  4166. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  4167.     AH = F7h
  4168.     DX = port number
  4169.        Pointer/data chips
  4170.           00h CRTC (3B4h mono modes, 3D4h color modes)
  4171.           08h Sequencer 3C4h
  4172.           10h Graphics Controller 3CEh
  4173.           18h Attribute Controller 3C0h
  4174.        Single registers
  4175.           20h Miscellaneous Output register 3C2h
  4176.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  4177.           30h Graphics 1 Position register 3CCh
  4178.           38h Graphics 2 Position register 3CAh
  4179.     ES:BX -> table of one-byte entries, one byte to be written to each
  4180.          register
  4181. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4182.       compatibility box, and others
  4183. SeeAlso: AH=F6h
  4184. --------V-10FA--BX0000----------------------
  4185. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  4186.     AH = FAh
  4187.     BX = 0000h
  4188. Return: BX = 0000h if mouse driver not present
  4189.     ES:BX -> EGA Register Interface version number, if present:
  4190.         byte 0 = major release number
  4191.         byte 1 = minor release number
  4192. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  4193.       compatibility box, and others
  4194. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  4195. --------K-10FA------------------------------
  4196. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  4197.     AH = FAh
  4198. Return: AX = 00FAh if installed
  4199.         ES = segment of resident code
  4200. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  4201.       Steiner
  4202. --------V-10FE------------------------------
  4203. INT 10 - TopView - GET SHADOW BUFFER
  4204.     AH = FEh
  4205.     ES:DI -> assumed video buffer
  4206.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  4207.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  4208. Return: ES:DI -> actual video buffer for calling process
  4209. Desc:    Determine the address of the virtual screen to which the program
  4210.       should write instead of the actual video memory; this permits
  4211.       programs to be multitasked without interfering with each other's
  4212.       output, and allows memory managers to move the video memory to
  4213.       permit larger programs to be loaded.
  4214. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  4215.       returned unchanged; RSIS is the Relocated Screen Interface
  4216.       Specification
  4217.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  4218.       whether a particular page exists
  4219.     TopView requires a call to AH=FFh to notify it that the screen has
  4220.       changed; DESQview will check for changes itself until the first call
  4221.       to AH=FFh
  4222. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  4223. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  4224. --------V-10FF-------------------------------
  4225. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  4226.     AH = FFh
  4227.     CX = number of consecutive changed characters
  4228.     ES:DI -> first changed character in shadow buffer
  4229. Notes:    avoid CX=0000h
  4230.     DESQview will discontinue the automatic screen updating initiated by
  4231.       AH=FEh after this call
  4232.     not supported (ignored) by DESQview/X 1.0x
  4233. SeeAlso: AH=93h,AH=FEh
  4234. --------E-10FF-------------------------------
  4235. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  4236.     AH = FFh
  4237.     AL = video mode (see below)
  4238. Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
  4239.       GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
  4240. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  4241.  
  4242. Values for video mode number:
  4243.  00h    80x25 text
  4244.  01h    default text
  4245.  02h    CXxDX text
  4246.  03h    biggest text
  4247.  04h    320x200 graphics
  4248.  05h    default graphics
  4249.  06h    CXxDX graphics
  4250.  07h    biggest non-interlaced graphics
  4251.  08h    biggest graphics
  4252. Index:    video modes
  4253. --------R-10FF00-----------------------------
  4254. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  4255.     AX = FF00h
  4256. Return: BL = 00h not connected
  4257.        = 01h connected
  4258. SeeAlso: AX=FF01h,AX=FF02h
  4259. --------R-10FF01-----------------------------
  4260. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  4261.     AX = FF01h
  4262. SeeAlso: AX=FF00h,AX=FF02h
  4263. --------R-10FF02-----------------------------
  4264. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  4265.     AX = FF02h
  4266. Return: ES:DI -> ASCIZ phone number
  4267. SeeAlso: AX=FF00h,AX=FF01h
  4268. --------C-11---------------------------------
  4269. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  4270.    Bit AC in the EFLAGS register enables this interrupt on a memory reference
  4271.      on a mis-aligned address when in privilege mode 3.
  4272. --------B-11---------------------------------
  4273. INT 11 - BIOS - GET EQUIPMENT LIST
  4274. Return: AX = BIOS equipment list word
  4275.         bits
  4276.         0      floppy disk(s) installed (see bits 6-7)
  4277.         1      80x87 coprocessor installed
  4278.         2,3      number of 16K banks of RAM on motherboard (PC only)
  4279.           number of 64K banks of RAM on motherboard (XT only)
  4280.         2      pointing device installed (PS)
  4281.         3      unused (PS)
  4282.         4-5      initial video mode
  4283.           00 EGA, VGA, or PGA
  4284.           01 40x25 color
  4285.           10 80x25 color
  4286.           11 80x25 monochrome
  4287.         6-7      number of floppies installed less 1 (if bit 0 set)
  4288.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  4289.         9-11  number of serial ports installed
  4290.         12      game port installed
  4291.         13      serial printer attached (PCjr)
  4292.           internal modem installed (PC/Convertible)
  4293.         14-15 number of parallel ports installed
  4294. ---Compaq and many other 386/486 machines--
  4295.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  4296.             real mode
  4297.         bit 24: Weitek math coprocessor present
  4298. ---Compaq Systempro
  4299.     EAX bit 25: internal DMA parallel port available
  4300.         26: IRQ for internal DMA parallel port (if bit 25 set)
  4301.             0 = IRQ5
  4302.             1 = IRQ7
  4303.          27,28: parallel port DMA channel
  4304.             00 DMA channel 0
  4305.             01 DMA channel 0 ???
  4306.             10 reserved
  4307.             11 DMA channel 3
  4308. SeeAlso: INT 12
  4309. --------d-11----SI6A6A-----------------------
  4310. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  4311.     SI = 6A6Ah
  4312.     AH = command (see below)
  4313.     AL = SCSI Addressing
  4314.         bits 2-0 SCSI Target LUN (logical unit number)
  4315.         bits 5-3 SCSI Target ID
  4316.         bits 7-6 Host Adapter
  4317. Return: CF clear if successful
  4318.         DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
  4319.         AH = ??? for command 01h
  4320.     CF set on error
  4321.         AL = error code
  4322. SeeAlso: INT 21/AX=4402"ASPI"
  4323.  
  4324. Values for SDLP command:
  4325.  00h SDLP initialization
  4326.  01h SDLP System Identify
  4327.  02h simple read sectors
  4328.  03h simple write sectors
  4329.  04h simple verify sectors/seek to sector
  4330.  05h get device size/type
  4331.  06h ready unit
  4332.  07h format unit
  4333.  08h diagnostics
  4334.  09h rewind
  4335.  0Ah erase
  4336.  0Bh write filemarks
  4337.  0Ch space
  4338.  0Dh prevent/allow media removal
  4339.  0Eh load/unload media
  4340.  0Fh reserved - returns good status
  4341.  10h set block size
  4342.  11h write setmark
  4343.  12h set error level
  4344.  13h get address of Request Sense Buffer
  4345.  14h get SDLP error via Request Sense
  4346.  F0h Vendor Unique Function (WD7000-FASST2 only)
  4347.  FDh reset current SCSI HAC
  4348.  FEh get/set current SCSI HAC
  4349.  FFh execute SCSI command
  4350. --------S-11BC--DX1954-----------------------
  4351. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  4352.     AH = BCh
  4353.     DX = 1954h
  4354. Return: AX = 1954h
  4355.     ES:DX -> entry point of driver (instead of INT 14)
  4356. SeeAlso: INT 14/AH=04h"FOSSIL"
  4357. --------d-11FF--SI6A6A-----------------------
  4358. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  4359.     AH = FFh
  4360.     SI = 6A6Ah
  4361.     AL = SCSI Addressing
  4362.         bits 2-0 SCSI Target LUN (logical unit number)
  4363.         bits 5-3 SCSI Target ID
  4364.         bit 7    write flag, set for write operations, clear otherwise
  4365.     CX = bytes of data to be transmitted (max FFF0h)
  4366.     DH = 00h
  4367.     DL = length of SCSI Command Descriptor Block
  4368.     DS:DI -> SCSI Command Descriptor Block
  4369.     ES:BX -> data buffer
  4370. Return: CF set on error
  4371.         AL = error code
  4372.     CF clear if successful
  4373. Note:    because of busmaster operations with WD7000FASST avoid accessing
  4374.       video memory directly; check 386 memory manager for VDS support.
  4375.       The WD7000XTAT works with programmed IO and does not have this
  4376.       limitation.
  4377. SeeAlso: INT 21/AX=4402"ASPI",INT 2F/AX=7F01h
  4378. --------T-11FFFECXFFFE-----------------------
  4379. INT 11 - BACK&FORTH (before v1.62) API
  4380.     AX = FFFEh
  4381.     CX = FFFEh
  4382.     BX = function
  4383.         00h installation check
  4384.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  4385.                = 0003h only BNFHIGH loaded
  4386.                else neither loaded
  4387.         01h ???
  4388.         Return: DX:AX -> ???
  4389.         02h ???
  4390.         03h ???
  4391.         04h ???
  4392.         05h ??? switches current PSP segment and stack if BNFLOW has not
  4393.             yet announced itself installed
  4394.         06h ???
  4395.         Return: AX = ???
  4396. SeeAlso: INT 12/AX=FFFEh
  4397. Index:    installation check;BACK&FORTH
  4398. --------B-12---------------------------------
  4399. INT 12 - BIOS - GET MEMORY SIZE
  4400. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4401. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  4402.       XT, this value is set from the switches on the motherboard
  4403. SeeAlso: INT 11,INT 2F/AX=4A06h
  4404. --------K-12----CX1806-----------------------
  4405. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  4406.     CX = 1806h
  4407. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4408.     CX = 1960h if installed
  4409. Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  4410.       accented characters and box drawing on standard QWERTY keyboards; it
  4411.       also provides break-to-DOS and screen blanking capabilities
  4412. --------d-12----CX1807-----------------------
  4413. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  4414.     CX = 1807h
  4415. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4416.     CX = 1961h if installed
  4417. Program: PARKER is an optionally-resident hard disk parking program by Johan
  4418.       Zwiekhorst
  4419. --------T-12FFFECXFFFE-----------------------
  4420. INT 12 - Back&Forth v1.62+ - API
  4421.     AX = FFFEh
  4422.     CX = FFFEh
  4423.     BX = function
  4424.         00h installation check
  4425.         Return: AX = 0001h installed
  4426.                  else  not loaded
  4427.         02h build program ID list
  4428.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  4429.         Return: AX = number of programs defined
  4430.             ES:DI buffer filled with AX words
  4431.         03h switch to specified task (task need not be open yet)
  4432.         DX = two-letter program ID
  4433.         Return: AX = 0000h if task undefined
  4434.         04h ???
  4435.         05h    ???
  4436.         06h    get version (undoc)
  4437.         Return: AX = version * 100 (v1.71 = 00ABh)
  4438.         07h ???
  4439.         08h get open tasks (undoc)
  4440.         ES:DI -> task info buffer (see below)
  4441.         Return: AX = number of open tasks (max 20)
  4442.         09h    ???
  4443. Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
  4444. SeeAlso: INT 11/AX=FFFEh
  4445. Index:    installation check;BACK&FORTH
  4446.  
  4447. Format of task info buffer:
  4448. Offset    Size    Description
  4449.  00h 21 BYTEs    ASCIZ task name
  4450.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  4451.  16h    WORD    hotkey scan code
  4452.  18h    WORD    program ID
  4453. --------B-1300-------------------------------
  4454. INT 13 - DISK - RESET DISK SYSTEM
  4455.     AH = 00h
  4456.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  4457. Return: AH = status (see AH=01h)
  4458.     CF clear if successful (returned AH=00h)
  4459.     CF set on error
  4460. Note:    forces controller to recalibrate drive heads (seek to track 0)
  4461. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  4462. --------B-1301-------------------------------
  4463. INT 13 - DISK - GET STATUS OF LAST OPERATION
  4464.     AH = 01h
  4465.     DL = drive (bit 7 set for hard disk)
  4466. Return: CF clear if successful (returned status 00h)
  4467.     CF set on error
  4468.     AH = status of previous operation (see below)
  4469. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  4470.       status in both AH and AL
  4471.  
  4472. Values for status:
  4473.  00h successful completion
  4474.  01h invalid function in AH or invalid parameter
  4475.  02h address mark not found
  4476.  03h disk write-protected (floppy)
  4477.  04h sector not found
  4478.  05h reset failed (hard disk)
  4479.  06h disk changed (floppy)
  4480.  07h drive parameter activity failed (hard disk)
  4481.  08h DMA overrun
  4482.  09h attempted DMA across 64K boundary
  4483.  0Ah bad sector detected (hard disk)
  4484.  0Bh bad track detected (hard disk)
  4485.  0Ch unsupported track or invalid media
  4486.  0Dh invalid number of sectors on format (hard disk)
  4487.  0Eh control data address mark detected (hard disk)
  4488.  0Fh DMA arbitration level out of range (hard disk)
  4489.  10h uncorrectable CRC or ECC error on read
  4490.  11h data ECC corrected (hard disk)
  4491.  20h controller failure
  4492.  40h seek failed
  4493.  80h timeout (not ready)
  4494.  AAh drive not ready (hard disk)
  4495.  BBh undefined error (hard disk)
  4496.  CCh write fault (hard disk)
  4497.  E0h status register error (hard disk)
  4498.  FFh sense operation failed (hard disk)
  4499. --------B-1302-------------------------------
  4500. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  4501.     AH = 02h
  4502.     AL = number of sectors to read (must be nonzero)
  4503.     CH = low eight bits of cylinder number
  4504.     CL = sector number 1-63 (bits 0-5)
  4505.          high two bits of cylinder (bits 6-7, hard disk only)
  4506.     DH = head number
  4507.     DL = drive number (bit 7 set for hard disk)
  4508.     ES:BX -> data buffer
  4509. Return: CF set on error
  4510.         if AH = 11h (corrected ECC error), AL = burst length
  4511.     CF clear if successful
  4512.     AH = status (see AH=01h)
  4513.     AL = number of sectors transferred
  4514. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4515.       enough; the read should be retried at least three times, resetting
  4516.       the disk with AH=00h between attempts
  4517.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4518.       DH (head number) since the WD-1003 controller which is the standard
  4519.       AT controller (and the controller that IDE emulates) only supports
  4520.       16 heads
  4521.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4522.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4523. SeeAlso: AH=03h,AH=0Ah
  4524. --------B-1303-------------------------------
  4525. INT 13 - DISK - WRITE DISK SECTOR(S)
  4526.     AH = 03h
  4527.     AL = number of sectors to write (must be nonzero)
  4528.     CH = low eight bits of cylinder number
  4529.     CL = sector number 1-63 (bits 0-5)
  4530.          high two bits of cylinder (bits 6-7, hard disk only)
  4531.     DH = head number
  4532.     DL = drive number (bit 7 set for hard disk)
  4533.     ES:BX -> data buffer
  4534. Return: CF set on error
  4535.     CF clear if successful
  4536.     AH = status (see AH=01h)
  4537.     AL = number of sectors transferred
  4538. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4539.       enough; the write should be retried at least three times, resetting
  4540.       the disk with AH=00h between attempts
  4541.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4542.       DH (head number) since the WD-1003 controller which is the standard
  4543.       AT controller (and the controller that IDE emulates) only supports
  4544.       16 heads
  4545.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4546.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4547. SeeAlso: AH=02h,AH=0Bh
  4548. --------B-1304-------------------------------
  4549. INT 13 - DISK - VERIFY DISK SECTOR(S)
  4550.     AH = 04h
  4551.     AL = number of sectors to verify (must be nonzero)
  4552.     CH = low eight bits of cylinder number
  4553.     CL = sector number 1-63 (bits 0-5)
  4554.          high two bits of cylinder (bits 6-7, hard disk only)
  4555.     DH = head number
  4556.     DL = drive number (bit 7 set for hard disk)
  4557.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  4558. Return: CF set on error
  4559.     CF clear if successful
  4560.     AH = status (see AH=01h)
  4561.     AL = number of sectors verified
  4562. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4563.       enough; the write should be retried at least three times, resetting
  4564.       the disk with AH=00h between attempts
  4565.     this function does not compare the disk with memory, it merely
  4566.       checks whether the sector's stored CRC matches the data's actual CRC
  4567.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4568.       DH (head number) since the WD-1003 controller which is the standard
  4569.       AT controller (and the controller that IDE emulates) only supports
  4570.       16 heads
  4571.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4572.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4573. SeeAlso: AH=02h
  4574. --------B-1305-------------------------------
  4575. INT 13 - FLOPPY - FORMAT TRACK
  4576.     AH = 05h
  4577.     AL = number of sectors to format
  4578.     CH = track number
  4579.     DH = head number
  4580.     DL = drive number
  4581.     ES:BX -> address field buffer (see below)
  4582. Return: CF set on error
  4583.     CF clear if successful
  4584.     AH = status (see AH=01h)
  4585. Notes:    on AT or higher, call AH=17h first
  4586.     the number of sectors per track is read from the diskette parameter
  4587.       table pointed at by INT 1E
  4588. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  4589.  
  4590. Format of address field buffer entry (one per sector in track):
  4591. Offset    Size    Description
  4592.  00h    BYTE    track number
  4593.  01h    BYTE    head number (0-based)
  4594.  02h    BYTE    sector number
  4595.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  4596. --------B-1305-------------------------------
  4597. INT 13 - FIXED DISK - FORMAT TRACK
  4598.     AH = 05h
  4599.     AL = interleave value (XT-type controllers only)
  4600.     ES:BX -> 512-byte format buffer
  4601.         the first 2*(sectors/track) bytes contain F,N for each sector
  4602.            F = 00h for good sector, 80h for bad sector
  4603.            N = sector number
  4604.     CH = cylinder number (bits 8,9 in high bits of CL)
  4605.     CL = high bits of cylinder number (bits 7,6)
  4606.     DH = head
  4607.     DL = drive
  4608. Return: AH = status code (see AH=01h)
  4609. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4610.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4611.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  4612.       first
  4613.     the IBM AT BIOS and many other BIOSes use only the low four bits of
  4614.       DH (head number) since the WD-1003 controller which is the standard
  4615.       AT controller (and the controller that IDE emulates) only supports
  4616.       16 heads
  4617. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  4618. --------d-1305-------------------------------
  4619. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  4620.     AH = 05h
  4621.     DL = hard drive ID
  4622.     ES:BX -> mode select data (see below)
  4623. Return: CF set on error
  4624.     AH = status code (see AH=01h)
  4625. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to 
  4626.       format a SCSI disk with the desired parameters
  4627.     the mode select data below is from the SCSI-1 specification
  4628. SeeAlso: AH=06h"SCSI",AH=07h"SCSI"
  4629.  
  4630. Format of mode select data:
  4631. Offset    Size    Description
  4632.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  4633.  01h    BYTE    reserved (0)
  4634.  02h    BYTE    medium type (0 for hard disk)
  4635.  03h    BYTE    reserved (0)
  4636.  04h    BYTE    block descriptor length (8)
  4637.  05h    BYTE    density code (0 for hard disk)
  4638.  06h  3 BYTEs    number of blocks (big-endian) (000000h for entire disk)
  4639.  09h    BYTE    reserved (0)
  4640.  0Ah  3 BYTEs    block length (big-endian) (512 standard, or 256)
  4641.  0Dh    ???    vendor-specific parameter bytes (optional)
  4642. --------B-1306-------------------------------
  4643. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  4644.     AH = 06h
  4645.     AL = interleave value
  4646.     CH = cylinder number (bits 8,9 in high bits of CL)
  4647.     CL = sector number
  4648.     DH = head
  4649.     DL = drive
  4650. Return: AH = status code (see AH=01h)
  4651. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4652.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4653. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  4654. --------d-1306-------------------------------
  4655. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  4656.     AH = 06h
  4657.     AL = interleave
  4658.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  4659.     DL = hard drive ID
  4660.     DH = bits 7-5 drive LUN
  4661.          bit 4    defect list is available
  4662.          bit 3    defect list is complete (erase drive's defect list)
  4663.          bits 2-0 defect table format
  4664.               (000=use defect table A, 100=use defect table B,
  4665.               101=use defect table C)
  4666.     ES:BX ->  defect table A, B or C (see below)
  4667. Return: CF set on error
  4668.     AH = status code (see AH=01h)
  4669. Notes:    block addresses must be in ascending order (for table B, cylinder is
  4670.       most significant, byte from index least significant; for table C,
  4671.       cylinder is most significant, sector number least significant)
  4672.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  4673.       track shall be reassigned
  4674.     table C defect sector number of FFFFFFFFh indicates that the entire
  4675.       track shall be reassigned
  4676. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  4677.  
  4678. Format of defect table A:
  4679. Offset    Size    Description
  4680.  00h    WORD    number of bytes remaining in table
  4681.  02h    BYTE    reserved (0)
  4682.  03h    BYTE    reserved (0)
  4683.  04h    WORD    defect list length (big-endian) (4*number of defects)
  4684.  06h  4 DWORDs    defect block addresses (big-endian)
  4685.  
  4686. Format of defect table B:
  4687. Offset    Size    Description
  4688.  00h    WORD    number of bytes remaining in table
  4689.  02h    BYTE    reserved (0)
  4690.  03h    BYTE    reserved (0)
  4691.  04h    WORD    defect list length (big-endian) (8*number of defects)
  4692.  06h 8N BYTEs    Defect List [array]
  4693.     Offset    Size    Description
  4694.      00h  3 BYTEs    cylinder number of defect (big-endian)
  4695.      03h    BYTE    head number of defect
  4696.      04h    DWORD    defect bytes from index (big-endian)
  4697.  
  4698. Format of defect table C:
  4699. Offset    Size    Description
  4700.  00h    WORD    number of bytes remaining in table
  4701.  02h    BYTE    reserved (0)
  4702.  03h    BYTE    reserved (0)
  4703.  04h    WORD    defect list length (big-endian) (8*number of defects)
  4704.  06h 8N BYTEs    defect list
  4705.     Offset    Size    Description
  4706.      00h  3 BYTEs    cylinder number of defect (big-endian)
  4707.      03h    BYTE    head number of defect
  4708.      04h    DWORD    defect sector number (big-endian)
  4709. --------B-1307-------------------------------
  4710. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  4711.     AH = 07h
  4712.     AL = interleave value (XT only)
  4713.     ES:BX = 512-byte format buffer (see AH=05h)
  4714.     CH = cylinder number (bits 8,9 in high bits of CL)
  4715.     CL = sector number
  4716.     DH = head
  4717.     DL = drive
  4718. Return: AH = status code (see AH=01h)
  4719. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4720.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4721. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  4722. --------d-1307-------------------------------
  4723. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  4724.     AH = 07h
  4725.     AL = interleave (0 = default, 1 = consecutive sectors, 
  4726.            2 - 255 = vendor unique)
  4727.     DL = hard drive ID
  4728. Return: CF set on error
  4729.     AH = status code (see AH=01h)
  4730. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  4731. --------B-1308-------------------------------
  4732. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  4733.     AH = 08h
  4734.     DL = drive (bit 7 set for hard disk)
  4735. Return: CF set on error
  4736.         AH = status (07h) (see AH=01h)
  4737.     CF clear if successful
  4738.         AH = 00h
  4739.         BL = drive type (AT/PS2 floppies only) (see below)
  4740.         CH = low eight bits of maximum cylinder number
  4741.         CL = maximum sector number (bits 5-0)
  4742.          high two bits of maximum cylinder number (bits 7-6)
  4743.         DH = maximum head number
  4744.         DL = number of drives
  4745.         ES:DI -> drive parameter table (floppies only)
  4746. Notes:    may return successful even though specified drive is greater than the
  4747.       number of attached drives of that type (floppy/hard); check DL to
  4748.       ensure validity
  4749.     for systems predating the IBM AT, this call is only valid for hard
  4750.       disks, as it is implemented by the hard disk BIOS rather than the
  4751.       ROM BIOS
  4752.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  4753.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  4754. SeeAlso: AH=15h,INT 1E,INT 41
  4755.  
  4756. Values for drive type:
  4757.  01h 360K
  4758.  02h 1.2M
  4759.  03h 720K
  4760.  04h 1.44M
  4761.  06h ??? (checked by 386MAX v6.01)
  4762. --------B-1309-------------------------------
  4763. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  4764.     AH = 09h
  4765.     DL = drive (80h for first, 81h for second)
  4766. Return: CF clear if successful
  4767.     CF set on error
  4768.     AH = status (see AH=01h)
  4769. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  4770.       INT 41
  4771.     on the AT and later, this function uses the parameter table pointed at
  4772.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  4773.       DL=81h
  4774. SeeAlso: INT 41,INT 46
  4775. --------B-130A-------------------------------
  4776. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  4777.     AH = 0Ah
  4778.     AL = number of sectors
  4779.     CH = low eight bits of cylinder number
  4780.     CL = sector number (bits 5-0)
  4781.          high two bits of cylinder number (bits 7-6)
  4782.     DH = head number
  4783.     DL = drive number (80h = first, 81h = second)
  4784.     ES:BX -> data buffer
  4785. Return: CF clear if successful
  4786.     CF set on error
  4787.     AH = status (see AH=01h)
  4788.     AL = number of sectors transferred
  4789. Notes:    this function reads in four to seven bytes of error-correcting code
  4790.       along with each sector's worth of information
  4791.     data errors are not automatically corrected, and the read is aborted
  4792.       after the first sector with an ECC error
  4793.     used for diagnostics only on PS/2 systems
  4794. SeeAlso: AH=02h,AH=0Bh
  4795. --------B-130B-------------------------------
  4796. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  4797.     AH = 0Bh
  4798.     AL = number of sectors
  4799.     CH = low eight bits of cylinder number
  4800.     CL = sector number (bits 5-0)
  4801.          high two bits of cylinder number (bits 7-6)
  4802.     DH = head number
  4803.     DL = drive number (80h = first, 81h = second)
  4804.     ES:BX -> data buffer
  4805. Return: CF clear if successful
  4806.     CF set on error
  4807.     AH = status (see AH=01h)
  4808.     AL = number of sectors transferred
  4809. Notes:    each sector's worth of data must be followed by four to seven bytes of
  4810.       error-correction information
  4811.     used for diagnostics only on PS/2 systems
  4812. SeeAlso: AH=03h,AH=0Ah
  4813. --------B-130C-------------------------------
  4814. INT 13 - HARD DISK - SEEK TO CYLINDER
  4815.     AH = 0Ch
  4816.     CH = low eight bits of cylinder number
  4817.     CL = sector number (bits 5-0)
  4818.          high two bits of cylinder number (bits 7-6)
  4819.     DH = head number
  4820.     DL = drive number (80h = first, 81h = second hard disk)
  4821. Return: CF set on error
  4822.     CF clear if successful
  4823.     AH = status (see AH=01h)
  4824. SeeAlso: AH=00h,AH=02h,AH=0Ah
  4825. --------d-130D-------------------------------
  4826. INT 13 - HARD DISK - RESET HARD DISKS
  4827.     AH = 0Dh
  4828.     DL = drive number (80h = first, 81h = second hard disk)
  4829. Return: CF set on error
  4830.     CF clear if successful
  4831.     AH = status (see AH=01h)
  4832. Notes:    reinitializes the hard disk controller, resets the specified drive's
  4833.       parameters, and recalibrates the drive's heads (seek to track 0)
  4834.     not for PS/2 ESDI drives
  4835. SeeAlso: AH=00h,INT 21/AH=0Dh
  4836. --------B-130E-------------------------------
  4837. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  4838.     AH = 0Eh
  4839.     DL = drive number (80h = first, 81h = second hard disk)
  4840.     ES:BX -> buffer
  4841. Return: CF set on error
  4842.     CF clear if successful
  4843.     AH = status code (see AH=01h)
  4844. Notes:    transfers controller's sector buffer.  No data is read from the drive
  4845.     used for diagnostics only on PS/2 systems
  4846. SeeAlso: AH=0Ah
  4847. --------B-130F-------------------------------
  4848. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  4849.     AH = 0Fh
  4850.     DL = drive number (80h = first, 81h = second hard disk)
  4851.     ES:BX -> buffer
  4852. Return: CF set on error
  4853.     CF clear if successful
  4854.     AH = status code (see AH=01h)
  4855. Notes:    does not write data to the drive
  4856.     should be called before formatting to initialize an XT-type
  4857.       controller's sector buffer
  4858.     used for diagnostics only on PS/2 systems
  4859. SeeAlso: AH=0Bh
  4860. --------B-1310-------------------------------
  4861. INT 13 - HARD DISK - CHECK IF DRIVE READY
  4862.     AH = 10h
  4863.     DL = drive number (80h = first, 81h = second hard disk)
  4864. Return: CF set on error
  4865.     CF clear if successful
  4866.     AH = status (see AH=01h)
  4867. --------B-1311-------------------------------
  4868. INT 13 - HARD DISK - RECALIBRATE DRIVE
  4869.     AH = 11h
  4870.     DL = drive number (80h = first, 81h = second hard disk)
  4871. Return:    CF set on error
  4872.     CF clear if successful
  4873.     AH = status (see AH=01h)
  4874. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  4875. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  4876. --------B-1312-------------------------------
  4877. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  4878.     AH = 12h
  4879.     DL = drive number (80h = first, 81h = second hard disk)
  4880. Return: CF set on error
  4881.     CF clear if successful
  4882.     AH = status code (see AH=01h)
  4883. SeeAlso: AH=13h,AH=14h
  4884. --------d-1312-------------------------------
  4885. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  4886.     AH = 12h
  4887.     DL = hard drive ID
  4888. Return: CF set on error
  4889.     AH = status code (see AH=01h)
  4890. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  4891.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  4892.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  4893.       is displayed
  4894. --------B-1313-------------------------------
  4895. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  4896.     AH = 13h
  4897.     DL = drive number (80h = first, 81h = second hard disk)
  4898. Return: CF set on error
  4899.     CF clear if successful
  4900.     AH = status code (see AH=01h)
  4901. SeeAlso: AH=12h,AH=14h
  4902. --------B-1314-------------------------------
  4903. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  4904.     AH = 14h
  4905. Return: CF set on error
  4906.     CF clear if successful
  4907.     AH = status code (see AH=01h)
  4908. SeeAlso: AH=12h,AH=13h
  4909. --------B-1315-------------------------------
  4910. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  4911.     AH = 15h
  4912.     DL = drive number (bit 7 set for hard disk)
  4913. Return:    CF clear if successful
  4914.         AH = type code
  4915.         00h no such drive
  4916.         01h floppy without change-line support
  4917.         02h floppy with change-line support
  4918.         03h hard disk
  4919.             CX:DX = number of 512-byte sectors
  4920.     CF set on error
  4921.         AH = status (see AH=01h)
  4922. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  4923. --------B-1316-------------------------------
  4924. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  4925.     AH = 16h
  4926.     DL = drive number
  4927. Return: CF clear if change line inactive
  4928.         AH = 00h (disk not changed)
  4929.     CF set if change line active
  4930.         AH = status
  4931.         06h change line active or not supported
  4932.         80h drive not ready or not present
  4933. Note:    call AH=15h first to determine whether the drive supports a change
  4934.       line
  4935. SeeAlso: AH=15h
  4936. --------B-1317-------------------------------
  4937. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  4938.     AH = 17h
  4939.     AL = format type
  4940.         01h = 320/360K disk in 360K drive
  4941.         02h = 320/360K disk in 1.2M drive
  4942.         03h = 1.2M disk in 1.2M drive
  4943.         04h = 720K disk in 720K drive
  4944.     DL = drive number
  4945. Return: CF set on error
  4946.     CF clear if successful
  4947.     AH = status (see AH=01h)
  4948. Note:    this function does not handle 1.44M drives; use AH=18h instead
  4949. SeeAlso: AH=15h,AH=18h
  4950. --------d-131700-----------------------------
  4951. INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
  4952.     AX = 1700h
  4953.     CL = length of buffer
  4954.     DL = hard drive ID
  4955.     ES:BX -> buffer for info
  4956. Return: CF clear if successful
  4957.         CH = number o bytes returned in buffer???
  4958.     CF set on error
  4959.         AH = status code (see AH=01h)
  4960. Notes:    this function is not available with 8-bit controller ROM versions < 7.0
  4961.     information block bytes 5-n are vendor-specific in older SCSI devices
  4962. SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
  4963.  
  4964. Format of SCSI inquiry information block:
  4965. Offset    Size    Description
  4966.  00h    BYTE    device type
  4967.         bits 0-4: peripheral device type (see below)
  4968.         bits 5-7: peripheral qualifier (see below)
  4969.  01h    BYTE    device type modifier
  4970.         bits 0-6: device type modifier
  4971.         bit 7: removable medium
  4972.  02h    BYTE    SCSI version
  4973.         bits 0-2: ANSI-approved version
  4974.               000 device might or might not comply to ANSI standard
  4975.               001 device complies to ANSI SCSI-1
  4976.               010 device complies to ANSI SCSI-2
  4977.               other reserved
  4978.         bits 3-5: ECMA version
  4979.         bits 6,7: ISO version
  4980.  03h    BYTE    data format/capabilities
  4981.         bits 0-2: response data format
  4982.               000 information block is as specified in SCSI-1
  4983.               001 information block is as specified in CCS
  4984.               010 information block is as specified in SCSI-2
  4985.               other reserved
  4986.         bits 4,5: reserved
  4987.         bit 6: terminate I/O process supported
  4988.         bit 7: asynchronous event notification supported
  4989.  04h    BYTE    additional data length (total remaining bytes)
  4990.  05h  2 BYTEs    reserved
  4991.  07h    BYTE    device capabilities (see below)
  4992.  08h  8 BYTEs    vendor identification (space-padded ASCII)
  4993.  10h  8 BYTEs    product identification (space-padded ASCII)
  4994.  20h  4 BYTEs    product revision level (space-padded ASCII)
  4995.  24h 20 BYTEs    vendor specific
  4996.  38h 40 BYTEs    reserved
  4997.  60h    var    vendor specific parameters
  4998.  
  4999. Values for peripheral device type:
  5000.  00h    direct-access device (e.g., magnetic disk)
  5001.  01h    sequential-access device (e.g., magnetic tape)
  5002.  02h    printer device
  5003.  03h    processor device
  5004.  04h    write-once device (e.g., some optical disks)
  5005.  05h    CD-ROM device
  5006.  06h    scanner device
  5007.  07h    optical memory device (e.g., some optical disks)
  5008.  08h    medium changer device (e.g., jukeboxes) 
  5009.  09h    communications device
  5010.  0Ah    (defined by ASC IT8)
  5011.  0Bh    (defined by ASC IT8)
  5012.  0Ch-1Eh reserved
  5013.  1Fh    unknown or no device type
  5014.  
  5015. Values for peripheral qualifier:
  5016.  000b    device is not currently connected to this logical unit
  5017.  001b    target is capable of supporting the specified peripheral, but the
  5018.        physical device is not currently connected to this logical unit
  5019.  010b    reserved
  5020.  011b    target can't support a physical device on this logical unit
  5021.  1xxb    vendor specific
  5022.  
  5023. Bitfields for device capabilities:
  5024.  bit 0    device responds to RESET with a hard RESET
  5025.  bit 1    tagged command queuing supported
  5026.  bit 2    reserved
  5027.  bit 3    linked commands supported
  5028.  bit 4    synchronous data transfer supported
  5029.  bit 5    16-bit transfers supported
  5030.  bit 6    32-bit transfers supported
  5031.  bit 7    relative addressing supported
  5032. --------B-1318-------------------------------
  5033. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  5034.     AH = 18h
  5035.     DL = drive number
  5036.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  5037.     CL = sectors per track (bits 0-5)
  5038.          top 2 bits of highest cylinder number (bits 6,7)
  5039. Return: AH = status
  5040.         00h requested combination supported
  5041.         01h function not available
  5042.         0Ch not supported or drive type unknown
  5043.         80h there is no disk in the drive
  5044.     ES:DI -> 11-byte parameter table
  5045. SeeAlso: AH=05h,AH=07h,AH=17h
  5046. --------d-1318-------------------------------
  5047. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  5048.     AH = 18h
  5049.     DL = hard drive ID
  5050. Return: CF set on error
  5051.         AH = status code (see AH=01h)
  5052.     CF clear if successful
  5053.         AX = 4321h (magic number)
  5054.         CX = controller family code (see below)
  5055.         ---if family code=0200h
  5056.         DH = number of exclusively ROM-controlled SCSI devices
  5057.         DL = canonical SCSI device number for specified drive
  5058.         ---if family code != 0200h
  5059.         BH = number of exclusively ROM-controlled SCSI devices
  5060.         BL = canonical SCSI device number for specified drive
  5061. Note:    also sets an internal flag (non-resettable) which prevents some
  5062.       controller messages from being displayed, allows writes to
  5063.       removable devices (use caution!), and enables the INT 13 interface
  5064.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  5065.       versions
  5066. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI"
  5067.  
  5068. Values for controller family code:
  5069.  0200h    TMC-1680/? (ROM 3.0)
  5070.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  5071.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  5072.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  5073.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  5074. --------B-1319-------------------------------
  5075. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  5076.     AH = 19h
  5077.     DL = drive
  5078. Return: CF set on error
  5079.     AH = status (see AH=01h)
  5080. SeeAlso: AH=11h
  5081. --------d-1319-------------------------------
  5082. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  5083.     AH = 19h
  5084.     DL = hard drive ID
  5085. Return: CF set on error
  5086.         AH = status code (see AH=01h)
  5087.     CF clear if successful
  5088.         AH = disk type (03h = fixed disk)
  5089.         CX:DX = number of 512-byte sectors
  5090. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  5091.       adjusts the result for 512-byte sectors
  5092.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  5093.       sector" (nnn=256 or 512, the only sizes supported in the translation
  5094.       code)
  5095.     should probably be called when a removable device has its media changed
  5096.     returns the same values as AH=15h
  5097. SeeAlso: AH=15h,AH=1Ah
  5098. --------d-131A-------------------------------
  5099. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  5100.     AH = 1Ah
  5101.     AL = defect table count
  5102.     CL = format modifiers (see below)
  5103.     DL = drive
  5104.     ES:BX -> defect table
  5105. Return: CF set on error
  5106.     AH = status (see AH=01h)
  5107. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  5108.       cylinder is formatted
  5109. SeeAlso: AH=07h,INT 15/AH=0Fh
  5110.  
  5111. Bitfields for format modifiers:
  5112.  bit 4    generate periodic interrupt
  5113.  bit 3    perform surface analysis
  5114.  bit 2    update secondary defect map
  5115.  bit 1    ignore secondary defect map
  5116.  bit 0    ignore primary defect map
  5117. --------d-131A-------------------------------
  5118. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  5119.     AH = 1Ah
  5120.     CH = track (bits 8,9 in high bits of CL)
  5121.     CL = sector (01h to number of sectors/track for drive)
  5122.     DH = head
  5123.     DL = hard drive ID
  5124. Return: CF set on error
  5125.     AH = status code (see AH=01h)
  5126.     CX:DX = logical block number of last quickly-accessible block after
  5127.         given block
  5128. Note:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  5129.       logical block address of the last block after which a substantial
  5130.       delay in data transfer will be encountered (usually the last block
  5131.       on the current cylinder).  No translation to 512 byte sectors is
  5132.       performed on the result if data is stored on the disk in other than
  5133.       512 byte sectors.
  5134. SeeAlso: AH=15h,AH=19h"SCSI"
  5135. --------d-131B-------------------------------
  5136. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  5137.     AH = 1Bh
  5138.     AL = number of record
  5139.     DL = drive
  5140.     ES:BX -> buffer for manufacturing header (defect list)
  5141. Return: CF set on error
  5142.         AH = status
  5143. Note:    manufacturing header format (Defect Map Record format) can be found
  5144.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  5145. --------d-131B-------------------------------
  5146. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  5147.     AH = 1Bh
  5148.     DL = hard drive ID
  5149. Return: CF set on error
  5150.         AH = status code (see AH=01h)
  5151.     CF clear if successful
  5152.         ES:BX -> SCSI disk information block
  5153. Note:    also sets a non-resettable flag which prevents some controller messages
  5154.       from being displayed
  5155. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  5156.  
  5157. Format of SCSI disk information block:
  5158. Offset    Size    Description
  5159.  00h    BYTE    drive physical information (see below)
  5160.  01h    WORD    translated number of cylinders
  5161.  03h    BYTE    translated number of heads
  5162.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  5163.  05h    BYTE    drive address
  5164.         bits 0-2: logical unit number
  5165.         bits 3-5: device number
  5166.  06h    BYTE    01h at initialization
  5167.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  5168.  08h    BYTE    00h
  5169.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  5170.  0Ah    BYTE    00h
  5171.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  5172.  15h    DWORD    translated number of sectors on device
  5173.  
  5174. Bitfields for device physical information:
  5175.  bit 0    ???
  5176.  bit 1    device uses parity
  5177.  bit 2    256 bytes per sector instead of 512
  5178.  bit 3    don't have capacity yet???
  5179.  bit 4    disk is removable
  5180.  bit 5    logical unit number is not present
  5181. --------d-131C-------------------------------
  5182. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  5183.     AH = 1Ch
  5184.     DL = hard drive ID (any valid SCSI hard disk)
  5185. Return: CF set on error
  5186.         AH = status code (see AH=01h)
  5187.     CF clear if successful
  5188.         ES:BX -> first byte of free RAM on controller
  5189. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  5190.       to 1BFFh on-bard the controller for storing drive information and
  5191.       controller status; ES:BX points to the first byte available for other
  5192.       uses
  5193.     ES contains the segment at which the controller resides; the
  5194.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  5195. SeeAlso: AH=1Bh"SCSI"
  5196. --------d-131C0A-----------------------------
  5197. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  5198.     AX = 1C0Ah
  5199.     DL = drive
  5200.     ES:BX -> buffer for device configuration (drive physical parameter)
  5201. Return: CF set on error
  5202.         AH = status
  5203. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  5204.       Adapter/A Technical Reference
  5205. --------d-131C0B-----------------------------
  5206. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  5207.     AX = 1C0Bh
  5208.     ES:BX -> buffer for adapter configuration
  5209. Return: CF set on error
  5210.         AH = status
  5211. SeeAlso: AX=1C0Ch
  5212. --------d-131C0C-----------------------------
  5213. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  5214.     AX = 1C0Ch
  5215.     ES:BX -> POS information
  5216. Return: CF set on error
  5217.         AH = status
  5218. SeeAlso: AX=1C0Bh
  5219. --------d-131C0E-----------------------------
  5220. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  5221.     AX = 1C0Eh
  5222.     CH = low 8 bits of cylinder number
  5223.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  5224.     DH = head number
  5225.     DL = drive number
  5226.     ES:BX -> ABA number
  5227. Return: CF set on error
  5228.         AH = status
  5229. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  5230.       Technical Reference by using its Device Configuration Status Block
  5231. --------c-131D-------------------------------
  5232. INT 13 - IBMCACHE.SYS - CACHE STATUS
  5233.     AH = 1Dh
  5234.     AL = subfunction
  5235.         01h get status record
  5236.         DL = drive???
  5237.         Return: ES:BX -> status record
  5238.             CF set on error
  5239.                 AH = error code
  5240.         02h set cache status
  5241.         ES:BX -> status record
  5242.         DL = drive???
  5243.         Return: CF set on error
  5244.  
  5245. Format of status record:
  5246. Offset    Size    Description
  5247.  00h    DWORD    total number of read requests
  5248.  04h    DWORD    total number of hits
  5249.  08h    DWORD    number of physical disk reads
  5250.  0Ch    DWORD    total number of sectors requested by physical disk reads
  5251.  10h  6 bytes    ???
  5252.  16h    DWORD    pointer to start of error list
  5253.  1Ah    DWORD    pointer to end of error list
  5254.  1Eh    WORD    ???
  5255.  20h    BYTE    using extended memory if nonzero
  5256.  21h    BYTE    ???
  5257.  22h  4 BYTEs    ASCII version number
  5258.  26h    WORD    cache size in K
  5259.  28h    WORD    sectors per page
  5260.  
  5261. Format of error list:
  5262. Offset    Size    Description
  5263.  00h    DWORD    relative block address of bad page
  5264.  04h    BYTE    drive
  5265.  05h    BYTE    sector bit-map
  5266.  06h    WORD    next error
  5267. --------d-1320-------------------------------
  5268. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  5269.     AH = 20h
  5270.     ???
  5271. Return: ???
  5272. Note:    returns some kind of status related to whether the drive contains its
  5273.       default media type
  5274. --------c-1320FF-----------------------------
  5275. INT 13 - QCACHE - DISMOUNT
  5276.     AX = 20FFh
  5277. Return: ???
  5278. --------c-1321-------------------------------
  5279. INT 13 - QCACHE - FLUSH CACHE
  5280.     AH = 21h
  5281. Return: ???
  5282. SeeAlso: AH=25h,AH=2Eh
  5283. --------c-1322-------------------------------
  5284. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  5285.     AH = 22h
  5286.     AL = 00h disable cache
  5287.          01h enable cache
  5288. --------c-1324-------------------------------
  5289. INT 13 - QCACHE - SET SECTORS
  5290.     AH = 24h
  5291.     BX = number of sectors
  5292. Return: ???
  5293. --------c-1325-------------------------------
  5294. INT 13 - QCACHE - SET FLUSH INTERVAL
  5295.     AH = 25h
  5296.     BC = interval
  5297. Return: ???
  5298. SeeAlso: AH=21h,AH=2Eh
  5299. --------c-1327--BX0000-----------------------
  5300. INT 13 - QCACHE - INSTALLATION CHECK
  5301.     AH = 27h
  5302.     BX = 0000h
  5303. Return: BX nonzero if installed
  5304. --------c-132A-------------------------------
  5305. INT 13 - QCACHE - SET BUFFER SIZE
  5306.     AH = 2Ah
  5307.     AL = buffer size
  5308. Return: ???
  5309. --------c-132C-------------------------------
  5310. INT 13 - QCACHE - SET BUFFERED WRITES
  5311.     AH = 2Ch
  5312.     AL = state
  5313.         00h disable
  5314.         01h enable
  5315. Return: ???
  5316. SeeAlso: AH=2Dh
  5317. --------c-132D-------------------------------
  5318. INT 13 - QCACHE - SET BUFFERED READ
  5319.     AH = 2Dh
  5320.     AL = state
  5321.         00h disable
  5322.         01h enable
  5323. Return: ???
  5324. SeeAlso: AH=2Ch
  5325. --------c-132E-------------------------------
  5326. INT 13 - QCACHE - SET FLUSH COUNT
  5327.     AH = 2Eh
  5328.     BX = flush count
  5329. Return: ???
  5330. SeeAlso: AH=21h,AH=25h
  5331. --------c-1330-------------------------------
  5332. INT 13 - QCACHE - GET INFO
  5333.     AH = 30h
  5334.     AL = what to get
  5335.         00h system info
  5336.         01h drive info
  5337.     DS:DX -> buffer for info
  5338. Return: ???
  5339. --------d-135504-----------------------------
  5340. INT 13 - Seagate - GET CONTROLLER TYPE???
  5341.     AX = 5504h
  5342.     DX = drive (bit 7 set for hard disk)
  5343. Return: CF clear if successful
  5344.         AX = 4321h,4322h if Seagate controller
  5345.     CF set on error
  5346. SeeAlso: AX=5505h,AX=5514h
  5347. --------d-135505-----------------------------
  5348. INT 13 - Seagate - PARK HEADS???
  5349.     AX = 5505h
  5350.     DX = drive (bit 7 set for hard disk)
  5351. Return: CF clear if successful
  5352.     CF set on error
  5353. SeeAlso: AX=5504h,AX=5515h
  5354. --------d-135514-----------------------------
  5355. INT 13 - Seagate - ???
  5356.     AX = 5514h
  5357.     DX = drive (bit 7 set for hard disk)
  5358. Return: CF clear if successful
  5359.     CF set on error
  5360.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  5361. SeeAlso: AX=5504h,AX=5515h
  5362. --------d-135515-----------------------------
  5363. INT 13 - Seagate - PARK HEADS???
  5364.     AX = 5515h
  5365.     DX = drive (bit 7 set for hard disk)
  5366. Return: CF clear if successful
  5367.     CF set on error
  5368. Note:    appears to be identical to AX=5505h
  5369. SeeAlso: AX=5504h,AX=5505h
  5370. --------d-1370-------------------------------
  5371. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  5372.     AH = 70h
  5373.     ???
  5374. Return: ???
  5375. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  5376.       formatting program) make this call, presumably to EDVR.SYS (the
  5377.       partitioning driver)
  5378. SeeAlso: AH=ADh
  5379. ----------1375-------------------------------
  5380. INT 13 - ???
  5381.     AH = 75h
  5382.     ???
  5383. Return: AH = ???
  5384.     ???
  5385. Note:    intercepted by PC-Cache (v5.1 only)
  5386. ----------1376-------------------------------
  5387. INT 13 - ???
  5388.     AH = 76h
  5389.     ???
  5390. Return: AH = ???
  5391.     ???
  5392. Note:    intercepted by PC-Cache (v5.1 only)
  5393. --------c-137B00-----------------------------
  5394. INT 13 - NOW! v3.05 - GET INFORMATION
  5395.     AX = 7B00h
  5396.     CX:DX -> 1F8h-byte buffer for information record (see below)
  5397. Return: AX = 0000h
  5398.     BX = segment of main resident code
  5399.     ES = ???
  5400. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5401. SeeAlso: AX=7B02h,AH=EFh
  5402.  
  5403. Format of information record:
  5404. Offset    Size    Description
  5405.  00h 80 BYTEs    name of directory from which NOW! was started
  5406.  50h 424 BYTEs    ???
  5407.  81h  ? BYTEs    array of bytes for ???
  5408.  F7h 250 BYTEs    array of 25 entries, one per drive???
  5409.     Offset    Size    Description
  5410.      00h  2 BYTEs    ???
  5411.      02h    WORD    ???
  5412.      04h    WORD    ???
  5413.      06h  4 BYTEs    ???
  5414. 1F1h  7 BYTEs    ???
  5415. --------c-137B01-----------------------------
  5416. INT 13 - NOW! v3.05 - ???
  5417.     AX = 7B01h
  5418. Return: DX = segment of ???
  5419. SeeAlso: AX=7B00h
  5420. --------c-137B02-----------------------------
  5421. INT 13 - NOW! v3.05 - SET INFORMATION
  5422.     AX = 7B02h
  5423.     BX = segment of ??? (10h above a PSP)
  5424.     CX:DX -> 1F8h-byte information record (see AX=7B00h)
  5425. Return: ???
  5426. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5427. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  5428.       BX
  5429. SeeAlso: AX=7B00h
  5430. --------c-137B03-----------------------------
  5431. INT 13 - NOW! v3.05 - ???
  5432.     AX = 7B03h
  5433.     ???
  5434. Return: ???
  5435. SeeAlso: AX=7B00h,AX=7B04h
  5436. --------c-137B04-----------------------------
  5437. INT 13 - NOW! v3.05 - ???
  5438.     AX = 7B04h
  5439.     ???
  5440. Return: ???
  5441. SeeAlso: AX=7B03h
  5442. --------c-137B05-----------------------------
  5443. INT 13 - NOW! v3.05 - GET ???
  5444.     AX = 7B05h
  5445.     BX:AX = number of physical accesses???
  5446.     DX:CX = total disk accesses???
  5447. SeeAlso: AX=7B00h,AX=7B06h
  5448. --------c-137B06-----------------------------
  5449. INT 13 - NOW! v3.05 - GET ???
  5450.     AX = 7B06h
  5451.     BX = ???
  5452. Return: AX = 0000h
  5453.     BX = ???
  5454. SeeAlso: AX=7B05h,AX=7B07h
  5455. --------c-137B07-----------------------------
  5456. INT 13 - NOW! v3.05 - GET ???
  5457.     AX = 7B07h
  5458. Return: AX = ???
  5459.     BX = ???
  5460.     CX = ???
  5461.     DX = ???
  5462. SeeAlso: AX=7B06h
  5463. --------c-137B08-----------------------------
  5464. INT 13 - NOW! v3.05 - ???
  5465.     AX = 7B08h
  5466.     CX = ??? (default 00h)
  5467. Return: ???
  5468. SeeAlso: AX=7B00h
  5469. --------c-1380--CX6572-----------------------
  5470. INT 13 - FAST! - API
  5471.     AH = 80h
  5472.     CX = 6572h
  5473.     DX = 1970h
  5474.     ES:BX -> data structure (see below)
  5475.     AL = function
  5476.         01h ???
  5477.         04h ???
  5478.         05h ???
  5479.         06h installation check
  5480.         Return: AX = 1965h if installed
  5481.         07h ???
  5482.         09h ???
  5483.         0Ah ???
  5484.         0Bh ???
  5485.         0Ch set ??? flag
  5486.         0Dh clear ??? flag
  5487. Return: AH = 00h if successful (except function 06h)
  5488. Index:    installation check;FAST!
  5489.  
  5490. Format of data structure:
  5491. Offset    Size    Description
  5492.  00h    DWORD    pointer to 19-byte signature string 
  5493.         13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h
  5494.           04h 08h 15h  (v4.04)
  5495.  04h    ???    ???
  5496. --------c-1381--SI4358-----------------------
  5497. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5498.     AH = 81h
  5499.     SI = 4358h
  5500.     ???
  5501. Return: ???
  5502. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5503.       Super PC Kwik, and thus support this call
  5504.     returns immediately in PC-Cache v5.x
  5505. --------c-1382--SI4358-----------------------
  5506. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5507.     AH = 82h
  5508.     SI = 4358h
  5509.     ???
  5510. Return: AL = ???
  5511. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5512.       Super PC Kwik, and thus support this call
  5513. SeeAlso: AH=84h
  5514. --------c-1383--SI4358-----------------------
  5515. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5516.     AH = 83h
  5517.     SI = 4358h
  5518.     AL = ???
  5519.     ES:BX -> ???
  5520.     ???
  5521. Return: ???
  5522. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5523.       Super PC Kwik, and thus support this call
  5524. SeeAlso: AH=85h
  5525. --------c-1384--SI4358-----------------------
  5526. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5527.     AH = 84h
  5528.     SI = 4358h
  5529.     AL = ???
  5530.     ???
  5531. Return: AL = ???
  5532. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5533.       Super PC Kwik, and thus support this call
  5534. SeeAlso: AH=82h
  5535. --------c-1385--SI4358-----------------------
  5536. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5537.     AH = 85h
  5538.     SI = 4358h
  5539.     AL = ???
  5540.     DL = ???
  5541.     ???
  5542. Return: ???
  5543. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5544.       Super PC Kwik, and thus support this call
  5545. SeeAlso: AH=83h
  5546. --------c-1386--SI4358-----------------------
  5547. INT 13 - Qualitas Qcache v4.00 - ???
  5548.     AH = 86h
  5549.     SI = 4358h
  5550.     ???
  5551. Return: ???
  5552. --------c-1387--SI4358-----------------------
  5553. INT 13 - Qualitas Qcache v4.00 - ???
  5554.     AH = 87h
  5555.     SI = 4358h
  5556.     ???
  5557. Return: ???
  5558. --------c-1388--SI4358-----------------------
  5559. INT 13 - Qualitas Qcache v4.00 - ???
  5560.     AH = 88h
  5561.     SI = 4358h
  5562.     ???
  5563. Return: ???
  5564. --------c-138EED-----------------------------
  5565. INT 13 - HyperDisk v4.01+ - ???
  5566.     AX = 8EEDh
  5567.     ???
  5568. Return: ???
  5569. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5570. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  5571. --------c-138EEE-----------------------------
  5572. INT 13 - HyperDisk v4.01+ - ???
  5573.     AX = 8EEEh
  5574. Return: CF set
  5575.     AX = CS of HyperDisk resident code
  5576.     ???
  5577. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  5578. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  5579. --------c-138EEF-----------------------------
  5580. INT 13 - HyperDisk v4.01+ - ???
  5581.     AX = 8EEFh
  5582. Return: CF set
  5583.     AX = CS of HyperDisk resident code
  5584.     ???
  5585. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  5586. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  5587. --------c-13A0--SI4358-----------------------
  5588. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  5589.     AH = A0h
  5590.     SI = 4358h
  5591. Return: AX = segment of resident code
  5592. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5593.       Super PC Kwik, and thus support this call
  5594. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  5595. --------c-13A1--SI4358-----------------------
  5596. INT 13 - Super PC Kwik - FLUSH CACHE
  5597.     AH = A1h
  5598.     SI = 4358h
  5599. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5600.       Super PC Kwik, and thus support this call
  5601. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  5602. --------c-13A2--SI4358-----------------------
  5603. INT 13 - Super PC Kwik - ???
  5604.     AH = A2h
  5605.     SI = 4358h
  5606.     ???
  5607. Return: ???
  5608. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5609.       Super PC Kwik, and thus support this call
  5610. --------c-13A5-------------------------------
  5611. INT 13 C - Super PC Kwik - ???
  5612.     AH = A5h
  5613.     SI = ???
  5614. Return: AX = ???
  5615.     SI = ???
  5616. Notes:    called when a program terminates but stays resident (see INT 21/AH=31h)
  5617.     this call is not supported by Qualitas Qcache 4.00
  5618. --------c-13AA--SI4358-----------------------
  5619. INT 13 - Qualitas Qcache v4.00 - ???
  5620.     AH = AAh
  5621.     SI = 4358h
  5622.     ???
  5623. Return: ???
  5624. --------c-13AB--SI4358-----------------------
  5625. INT 13 - Qualitas Qcache v4.00 - ???
  5626.     AH = ABh
  5627.     SI = 4358h
  5628.     ???
  5629. Return: ???
  5630. --------c-13AC--SI4358-----------------------
  5631. INT 13 - Qualitas Qcache v4.00 - ???
  5632.     AH = ACh
  5633.     SI = 4358h
  5634.     ???
  5635. Return: ???
  5636. --------d-13AD-------------------------------
  5637. INT 13 - Priam HARD DISK CONTROLLER???
  5638.     AH = ADh
  5639.     ???
  5640. Return: ???
  5641. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  5642.       to check the ROM type on the controller for their hard disk kits
  5643. SeeAlso: AH=70h
  5644. --------c-13AD--SI4358-----------------------
  5645. INT 13 - Qualitas Qcache v4.00 - ???
  5646.     AH = ADh
  5647.     SI = 4358h
  5648.     ???
  5649. Return: ???
  5650. --------c-13B0--SI4358-----------------------
  5651. INT 13 - Super PC Kwik - ???
  5652.     AH = B0h
  5653.     SI = 4358h
  5654.     ???
  5655. Return: ???
  5656. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  5657.       supports this call; Qualitas Qcache does not support it
  5658. --------d-13EE-------------------------------
  5659. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  5660.     AH = EEh
  5661.     DL = drive number (80h, 81h)
  5662. Return: CF clear
  5663.        AH = 00h
  5664. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5665. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  5666.       less than the desired cylinder
  5667.     flag cleared by all INT 13 calls except AH=EEh
  5668.     Disk Manager also supports these calls
  5669.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
  5670.       caching of drives using SWBIOS to access more than 1024 cylinders
  5671. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  5672. --------c-13EF-------------------------------
  5673. INT 13 - NOW! - ???
  5674.     AH = EFh
  5675.     CX = ???
  5676.     DL = ???
  5677.     ???
  5678. Return: ???
  5679. SeeAlso: AX=7B00h
  5680. --------d-13F9-------------------------------
  5681. INT 13 - SWBIOS - INSTALLATION CHECK
  5682.     AH = F9h
  5683.     DL = drive number (80h,81h)
  5684. Return: CF clear 
  5685.         DX = configuration word
  5686.         bit 15 set if other SWBIOS extensions available
  5687.     CF set on error
  5688. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5689. Note:    Disk Manager also supports these calls
  5690. SeeAlso: AH=EEh
  5691. --------v-13FA--DX5945-----------------------
  5692. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  5693.     AH = FAh
  5694.     DX = 5945h
  5695.     AL = function (00h-07h)
  5696. Return: varies by function
  5697. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  5698.       so it is listed in its entirety under INT 16/AX=FA00h and following
  5699. SeeAlso: INT 16/AX=FA00h
  5700. --------d-13FE-------------------------------
  5701. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  5702.     AH = FEh
  5703.     DL = drive number (80h, 81h)
  5704. Return: CF clear
  5705.     DX = number of cylinders beyond 1024 on drive
  5706. Program: SWBIOS is a TSR by Ontrack Computer Systems
  5707. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  5708.     BIOS without this extension would return count modulo 1024
  5709.     Disk Manager also supports these calls
  5710. SeeAlso: AH=EEh
  5711. --------S-14---------------------------------
  5712. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  5713. Note:    the installation check for this driver is to determine whether the
  5714.       "~DOSXAM~" character device exists
  5715. Index:    installation check;Digiboard DigiCHANNEL
  5716. --------S-1400-------------------------------
  5717. INT 14 - SERIAL - INITIALIZE PORT
  5718.     AH = 00h
  5719.     AL = port parameters
  5720.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  5721.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  5722.         bit 2    stop bits (set = 2, clear = 1)
  5723.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  5724.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5725. Return: AH = line status (see AH=03h)
  5726.         FFh if error on Digiboard XAPCM232.SYS
  5727.     AL = modem status (see AH=03h)
  5728. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  5729.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  5730.       bps will result in 4800 bps
  5731.     various network and serial-port drivers support the standard BIOS
  5732.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5733. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AX=8000h"ARTICOM"
  5734. SeeAlso: AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  5735. --------S-1400-------------------------------
  5736. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  5737.     AH = 00h
  5738.     AL = initializing parameters
  5739.         7 - 6 - 5       4 - 3     2      1 - 0
  5740.         -BAUD RATE-       PARITY   STOP   WORD
  5741.                     BITS  LENGTH
  5742.         000 19200 bd   00 none  0: 1  00: 5
  5743.         001 38400 bd   01 odd   1: 2  01: 6
  5744.         010      300 bd   11 even      10: 7
  5745.         011      600 bd          11: 8
  5746.         100     1200 bd
  5747.         101     2400 bd
  5748.         110     4800 bd
  5749.         111     9600 bd (4800 on PCjr)
  5750.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  5751. Return: AH = RS-232 status code bits
  5752.         bit 0: RDA - input data is available in buffer
  5753.         bit 1: OVRN - data has been lost
  5754.         bit 5: THRE - room is available in output buffer
  5755.         bit 6: TSRE - output buffer empty
  5756.     AL = modem status bits
  5757.         bit 3: always 1
  5758.         bit 7: DCD - carrier detect
  5759. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  5760. --------S-1400-------------------------------
  5761. INT 14 - MBBIOS - INITIALIZE PORT
  5762.     AH = 00h
  5763.     AL = port parameters
  5764.         bits 7-5 data rate
  5765.             (normally 110,150,300,600,1200,2400,4800,9600 bps;
  5766.             9600,14400,19200,28800,38400,57600,115200,330400 bps
  5767.             if the high-speed option is set)
  5768.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  5769.         bit 2    stop bits (set = 2, clear = 1)
  5770.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  5771.     DX = port number
  5772. Return: AH = line status (see AH=03h)
  5773.     AL = modem status (see AH=03h)
  5774. Note:    MBBIOS was written by H. Roy Engehausen
  5775. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS"
  5776. --------S-1401-------------------------------
  5777. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  5778.     AH = 01h
  5779.     AL = character to write
  5780.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5781. Return: AH bit 7 clear if successful
  5782.     AH bit 7 set on error
  5783.     AH bits 6-0 = port status (see AH=03h)
  5784. Note:    various network and serial-port drivers support the standard BIOS
  5785.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5786. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  5787. --------S-1402-------------------------------
  5788. INT 14 - SERIAL - READ CHARACTER FROM PORT
  5789.     AH = 02h
  5790.     AL = 00h (ArtiCom)
  5791.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  5792. Return: AH = line status (see AH=03h)
  5793.     AL = received character if AH bit 7 clear
  5794. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  5795.       data ready
  5796.     various network and serial-port drivers support the standard BIOS
  5797.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5798. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  5799. --------S-1402-------------------------------
  5800. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  5801.     AH = 02h
  5802.     DX = port number (0-3)
  5803. Return: AL = character received
  5804.     AH = 00h
  5805. SeeAlso: AH=01h,AH=02h"SERIAL"
  5806. --------S-1403-------------------------------
  5807. INT 14 - SERIAL - GET PORT STATUS
  5808.     AH = 03h
  5809.     AL = 00h (ArtiCom)
  5810.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5811. Return: AH = line status (see below)
  5812.     AL = modem status (see below)
  5813.     AX = 9E00h if disconnected (ArtiCom)
  5814. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  5815.  
  5816. Bitfields for line status:
  5817.  bit 7    timeout
  5818.  bit 6    transmit shift register empty
  5819.  bit 5    transmit holding register empty
  5820.  bit 4    break detected
  5821.  bit 3    framing error
  5822.  bit 2    parity error
  5823.  bit 1    overrun error
  5824.  bit 0    receive data ready
  5825.  
  5826. Bitfields for modem status:
  5827.  bit 7    carrier detect
  5828.  bit 6    ring indicator
  5829.  bit 5    data set ready
  5830.  bit 4    clear to send
  5831.  bit 3    delta carrier detect
  5832.  bit 2    trailing edge of ring indicator
  5833.  bit 1    delta data set ready
  5834.  bit 0    delta clear to send
  5835. --------S-1404-------------------------------
  5836. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  5837.     AH = 04h
  5838.     AL = break status
  5839.         00h if break
  5840.         01h if no break
  5841.     BH = parity (see below)
  5842.     BL = number of stop bits
  5843.         00h one stop bit
  5844.         01h two stop bits (1.5 if 5 bit word length)
  5845.     CH = word length (see below)
  5846.     CL = bps rate (see below)
  5847.     DX = port number
  5848. Return: AX = port status code (see AH=00h)
  5849. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  5850.  
  5851. Values for parity:
  5852.  00h no parity
  5853.  01h odd parity
  5854.  02h even parity
  5855.  03h stick parity odd
  5856.  04h stick parity even
  5857.  
  5858. Values for word length:
  5859.  00h 5 bits
  5860.  01h 6 bits
  5861.  02h 7 bits
  5862.  03h 8 bits
  5863.  
  5864. Values for bps rate:
  5865.  00h 110
  5866.  01h 150
  5867.  02h 300
  5868.  03h 600
  5869.  04h 1200
  5870.  05h 2400
  5871.  06h 4800
  5872.  07h 9600
  5873.  08h 19200
  5874. --------S-1404-------------------------------
  5875. INT 14 - FOSSIL - INITIALIZE DRIVER
  5876.     AH = 04h
  5877.     DX = port number
  5878.     optionally BX=4F50h
  5879.            ES:CX -> byte to be set upon ^C
  5880. Return: AX = 1954h (if successful)
  5881.     BL = maximum function number supported (excluding 7Eh and above)
  5882.     BH = revision of FOSSIL specification supported
  5883.     DTR is raised
  5884. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  5885.       following byte contains the maximum function number supported; this
  5886.       can serve as an installation check
  5887. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  5888. Index:    installation check;FOSSIL
  5889. --------S-1404-------------------------------
  5890. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  5891.     AH = 04h
  5892. Return: port initialized; if Hayes-compatible modem, a connection has been
  5893.       established
  5894. Note:    the port number is stored at offset BEh in the Task Control Block
  5895.       (see INT 15/AH=13h"MultiDOS")
  5896. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5897. --------S-1404-------------------------------
  5898. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  5899.     AH = 04h
  5900.     AL = initializing parameters
  5901.         bits 7-5 unused
  5902.         bits 4,3: parity (00 none, 01 odd, 11 even)
  5903.         bit 2: stop bits (0 = one, 1 = two)
  5904.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  5905.     BX = baud rate
  5906.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5907. Return: AH = status
  5908.         00h successful
  5909.         FFh error
  5910. SeeAlso: AH=05h"Digiboard"
  5911. --------S-1404-------------------------------
  5912. INT 14 - MBBIOS - INQUIRY
  5913.     AH = 04h
  5914. Return: AH = AAh
  5915.     AL = 55h
  5916. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  5917. --------S-1405-------------------------------
  5918. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  5919.     AH = 05h
  5920.     AL = function
  5921.         00h read modem control register
  5922.           Return: BL = modem control register (see below)
  5923.               AH = status
  5924.         01h write modem control register
  5925.           BL = modem control register (see below)
  5926.           Return: AX = status
  5927.     DX = port number
  5928. Note:    also supported by ArtiCom
  5929. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  5930.  
  5931. Bitfields for modem control register:
  5932.  bit 0    data terminal ready
  5933.  bit 1    request to send
  5934.  bit 2    OUT1
  5935.  bit 3    OUT2
  5936.  bit 4    LOOP
  5937.  bits 5-7 reserved
  5938. --------S-1405-------------------------------
  5939. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  5940.     AH = 05h
  5941.     DX = port number
  5942. Return: none
  5943.     DTR is not affected
  5944. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  5945. --------S-1405-------------------------------
  5946. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  5947.     AH = 05h
  5948.     AL = timeout in seconds (00h = never)
  5949. Return: AL = status
  5950.         00h successful
  5951.         AH = character read
  5952.         01h read error
  5953.         02h timed out
  5954.         other modem status (CTS, DSR) changed
  5955. Note:    the port number is stored at offset BEh in the Task Control Block
  5956. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  5957. SeeAlso: INT 15/AH=13h"MultiDOS"
  5958. --------S-1405-------------------------------
  5959. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  5960.     AH = 05h
  5961.     AL = protocol
  5962.         bits 7-4 unused
  5963.         bit 3: RTS/CTS
  5964.         bit 2: DSR
  5965.         bits 1,0: XON/XOFF
  5966.     BH = new XOFF character (00h = current)
  5967.     BL = new XON character (00h = current)
  5968.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5969. Return: AH = status
  5970.         00h successful
  5971.         FFh error
  5972. SeeAlso: AH=04h"Digiboard"
  5973. --------S-1405-------------------------------
  5974. INT 14 - MBBIOS - DROP DTR AND RTS
  5975.     AH = 05h
  5976.     DX = port number
  5977. Return: none
  5978. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  5979. --------S-1406-------------------------------
  5980. INT 14 - FOSSIL - RAISE/LOWER DTR
  5981.     AH = 06h
  5982.     DX = port
  5983.     AL = DTR state to be set
  5984.         00h = lower
  5985.         01h = raise
  5986. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  5987. --------S-1406-------------------------------
  5988. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  5989.     AH = 06h
  5990.     AL = character
  5991. Return: AL = status
  5992.         00h successful
  5993. Notes:    the port number is stored at offset BEh in the Task Control Block
  5994.     if output queue is full, the calling task is blocked until the
  5995.       character can be stored
  5996. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  5997. SeeAlso: INT 15/AH=13h"MultiDOS"
  5998. --------S-1406-------------------------------
  5999. INT 14 - MBBIOS - RAISE DTR AND RTS
  6000.     AH = 06h
  6001.     DX = port number
  6002. Return: none
  6003. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  6004. --------S-1407-------------------------------
  6005. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  6006.     AH = 07h
  6007. Return: AL = timer tick interrupt number
  6008.     AH = ticks per second on interrupt number in AL
  6009.     DX = approximate number of milliseconds per tick
  6010. SeeAlso: AH=16h
  6011. --------S-1407-------------------------------
  6012. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  6013.     AH = 07h
  6014. Return: CL = modem status (see AH=03h)
  6015.     CH = character at head of input queue (if any)
  6016.     DX = number of characters in input queue
  6017. Note:    the port number is stored at offset BEh in the Task Control Block
  6018. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  6019. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6020. --------S-1407-------------------------------
  6021. INT 14 - MBBIOS - SEND BREAK
  6022.     AH = 07h
  6023.     DX = port number
  6024. Return: none
  6025. SeeAlso: AH=06h"MBBIOS"
  6026. --------S-1408-------------------------------
  6027. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  6028.     AH = 08h
  6029.     DX = port number
  6030. SeeAlso: AH=09h"FOSSIL"
  6031. --------S-1408-------------------------------
  6032. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  6033.     AH = 08h
  6034. Return: AL = line status (see AH=03h)
  6035.     AH destroyed
  6036. Notes:    the port number is stored at offset BEh in the Task Control Block
  6037.     on every line status change, the line status is ORed with the line
  6038.       status accumulator; this function returns the accumulator and clears
  6039.       it
  6040. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6041. --------S-1408-------------------------------
  6042. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  6043.     AH = 08h
  6044.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6045. Return: AH = RS232 status bits (see AH=03h)
  6046.     ZF set if no characters queued
  6047.     ZF clear if character available
  6048.         AL = next character
  6049. SeeAlso: AH=03h,AH=09h"Digiboard"
  6050. --------S-1408-------------------------------
  6051. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  6052.     AH = 08h
  6053.     DX = port number
  6054. Return: AL = character
  6055.     AH = status (see AH=02h)
  6056. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  6057. --------S-1409-------------------------------
  6058. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  6059.     AH = 09h
  6060.     DX = port number
  6061. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  6062. --------S-1409-------------------------------
  6063. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  6064.     AH = 09h
  6065. Return: modem status byte cleared
  6066. Note:    the port number is stored at offset BEh in the Task Control Block
  6067. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  6068. --------S-1409-------------------------------
  6069. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  6070.     AH = 09h
  6071.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6072. Return: AH = status
  6073.         00h successful
  6074.         FFh error
  6075. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  6076. --------S-1409-------------------------------
  6077. INT 14 - MBBIOS - GET/SET OPTIONS
  6078.     AH = 09h
  6079.     AL = option byte
  6080.         00000001b - Transmit Buffering Enabled
  6081.         00000101b - Hardware Handshaking Enabled
  6082.         00100000b - High Speed Option Enabled
  6083.     DX = port number???
  6084. Return: AL = old option byte
  6085. SeeAlso: AH=04h"MBBIOS",AH=10h"FOSSIL"
  6086. --------S-140A-------------------------------
  6087. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  6088.     AH = 0Ah
  6089.     DX = port number
  6090. SeeAlso: AH=09h"FOSSIL",AH=85h
  6091. --------S-140A-------------------------------
  6092. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  6093.     AH = 0Ah
  6094.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6095. Return: AX = number of characters available in buffer
  6096. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  6097. --------S-140A-------------------------------
  6098. INT 14 - MBBIOS - WRITE BUFFER
  6099.     AH = 0Ah
  6100.     CX = count
  6101.     ES:DI -> buffer
  6102. Return: AX = status (see AH=03h)
  6103.     DI = is updated
  6104.     CX = unsent character count
  6105. SeeAlso: AH=0Bh"MBBIOS",AH=19h"FOSSIL"
  6106. --------S-140B-------------------------------
  6107. INT 14 - FOSSIL - TRANSMIT NO WAIT
  6108.     AH = 0Bh
  6109.     AL = character
  6110.     DX = port number
  6111. Return: AX = 0000h character not accepted
  6112.        = 0001h character accepted
  6113. SeeAlso: AH=01h
  6114. --------S-140B-------------------------------
  6115. INT 14 - MBBIOS - READ BUFFER
  6116.     AH = 0Bh
  6117.     CX = size of buffer
  6118.     ES:DI -> buffer
  6119. Return: AH = LSR
  6120.     AL = MSR
  6121.     CX = count of characters
  6122.     DI = is updated
  6123. SeeAlso: AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=18h"FOSSIL"
  6124. --------S-140C-------------------------------
  6125. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  6126.     AH = 0Ch
  6127.     DX = port number
  6128. Return: AX = FFFFh character not available
  6129.     AX = 00xxh character xx available
  6130. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  6131. --------S-140D-------------------------------
  6132. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  6133.     AH = 0Dh
  6134. Return: AX = FFFFh character not available
  6135.        = xxyyh standard IBM-style scan code
  6136. SeeAlso: AH=0Eh
  6137. --------S-140D-------------------------------
  6138. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  6139.     AH = 0Dh
  6140.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6141. Return: ES:BX -> CH_KEY_RDY flag
  6142. SeeAlso: AH=0Ah"Digiboard"
  6143.  
  6144. Values for CH_KEY_RDY flag:
  6145.  00h    receive buffer empty
  6146.  FFh    characters available
  6147. --------S-140E-------------------------------
  6148. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  6149.     AH = 0Eh
  6150. Return: AX = xxyyh standard IBM-style scan code
  6151. SeeAlso: AH=0Dh"FOSSIL"
  6152. --------S-140E-------------------------------
  6153. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  6154.     AH = 0EH
  6155.     CX = number of characters to write
  6156.     ES:BX -> string
  6157.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6158. Return: AX = number of characters actually written
  6159.     ZF clear if successful
  6160.     ZF set on error
  6161. SeeAlso: AH=0Fh"Digiboard"
  6162. --------S-140F-------------------------------
  6163. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  6164.     AH = 0Fh
  6165.     AL = bit mask describing requested flow control (see below)
  6166.     DX = port number
  6167. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  6168.  
  6169. Bitfields for requested flow control:
  6170.  bit 0    XON/XOFF on transmit (watch for XOFF while sending)
  6171.  bit 1    CTS/RTS (CTS on transmit/RTS on receive)
  6172.  bit 2    reserved
  6173.  bit 3    XON/XOFF on receive (send XOFF when buffer near full)
  6174.  bit 4-7 all 1
  6175. --------S-140F-------------------------------
  6176. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  6177.     AH = 0Fh
  6178.     CX = number of characters to read
  6179.     ES:BX -> buffer
  6180.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6181. Return: AX = number of characters read
  6182.     ZF clear if successful
  6183.     ZF set on error (line status or wrong number of characters)
  6184. SeeAlso: AH=0Eh"Digiboard"
  6185. --------S-1410-------------------------------
  6186. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  6187.     AH = 10h
  6188.     AL = bit mask
  6189.         bit 0: enable/disable ^C/^K checking
  6190.         bit 1: enable/disable the transmitter
  6191.     DX = port number
  6192. SeeAlso: AH=0Fh"FOSSIL"
  6193. --------S-1410-------------------------------
  6194. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  6195.     AH = 10h
  6196.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6197. Return: AH = status
  6198.         00h successful
  6199.         FFh error
  6200. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  6201. --------S-1411-------------------------------
  6202. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  6203.     AH = 11h
  6204.     DH = row
  6205.     DL = column
  6206. Note:    this is the same as INT 10/AH=02h
  6207. SeeAlso: AH=12h"FOSSIL"
  6208. --------S-1411-------------------------------
  6209. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  6210.     AH = 11h
  6211.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6212. Return: AH = status
  6213.         00h successful
  6214.         FFh error
  6215. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  6216. --------S-1412-------------------------------
  6217. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  6218.     AH = 12h
  6219. Return: DH = row
  6220.     DL = column
  6221. Note:    this is the same as INT 10/AH=03h
  6222. SeeAlso: AH=11h"FOSSIL"
  6223. --------S-1412-------------------------------
  6224. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  6225.     AH = 12h
  6226.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6227. Return: AX = number of bytes free
  6228. SeeAlso: AH=0Ah"Digiboard"
  6229. --------S-1413-------------------------------
  6230. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  6231.     AH = 13h
  6232.     AL = character
  6233. Note:    should not be called if it is unsafe to call DOS
  6234. SeeAlso: AH=15h
  6235. --------S-1414-------------------------------
  6236. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  6237.     AH = 14h
  6238.     AL = 01h enable watchdog
  6239.          00h disable watchdog
  6240.     DX = port number
  6241. --------S-1415-------------------------------
  6242. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  6243.     AH = 15h
  6244.     AL = character
  6245. SeeAlso: AH=13h
  6246. --------S-1416-------------------------------
  6247. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  6248.     AH = 16h
  6249.     AL = function
  6250.         00h = delete
  6251.         01h = add
  6252.     ES:DX -> routine to call
  6253. Return: AX = status
  6254.         0000h successful
  6255.         0001h unsuccessful
  6256. SeeAlso: AH=07h"FOSSIL"
  6257. --------S-1416-------------------------------
  6258. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  6259.     AH = 16h
  6260.     AL = CCB command number (see below)
  6261.     BL = byte 2
  6262.     BH = byte 3
  6263.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  6264.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6265. Return: AH = status
  6266.         00h successful
  6267.         FFh error
  6268. SeeAlso: AH=18h"Digiboard"
  6269.  
  6270. Values for CCB command number:
  6271.  40h Set Receive Mid Water Mark
  6272.  41h Set Receive High Water Mark
  6273.  42h Flush Receive Buffer
  6274.  43h Flush Transmit Buffer
  6275.  44h Transmit Pause
  6276.  45h Transmit Resume
  6277.  46h Set Interrupt to Host Mask
  6278.  47h Set Baud, Data, Stop and Parity
  6279.  48h Send Break
  6280.  49h Set Modem Lines
  6281.  4Ah Set Break Count
  6282.  4Bh Set Handshake
  6283.  4Ch Set Xon/Xoff Characters
  6284.  4Dh Set Transmit Mid Water Mark
  6285.  4Eh IRQ Polling Timer to Host
  6286.  4Fh Buffer Set All
  6287.  50h Port On
  6288.  51h Port Off
  6289.  52h Receive Pause
  6290.  53h Special Character Interrupt
  6291.  54h RS-422 Enable
  6292. --------S-1417-------------------------------
  6293. INT 14 - FOSSIL - REBOOT SYSTEM
  6294.     AH = 17h
  6295.     AL = method
  6296.         00h = cold boot
  6297.         01h = warm boot
  6298. SeeAlso: INT 19
  6299. --------S-1418-------------------------------
  6300. INT 14 - FOSSIL - READ BLOCK
  6301.     AH = 18h
  6302.     CX = maximum number of characters to transfer
  6303.     DX = port number
  6304.     ES:DI -> user buffer
  6305. Return: AX = number of characters transferred
  6306. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  6307. --------S-1418-------------------------------
  6308. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  6309.     AH = 18h
  6310.     ES:BX -> 16-byte command string
  6311.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6312. Return: AH = status
  6313.         00h successful
  6314.         80h timeout
  6315.     AL = mailbox status
  6316.         00h no errors
  6317.         8Xh BIOS error
  6318.     ES:BX buffer filled in with mailbox string
  6319.     ZF clear if no errors
  6320.     ZF set if either status byte contains an error code
  6321. SeeAlso: AH=16h"Digiboard"
  6322. --------S-1419-------------------------------
  6323. INT 14 - FOSSIL - WRITE BLOCK
  6324.     AH = 19h
  6325.     CX = maximum number of characters to transfer
  6326.     DX = port number
  6327.     ES:DI -> user buffer
  6328. Return: AX = number of characters transferred
  6329. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  6330. --------S-1419-------------------------------
  6331. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  6332.     AH = 19h
  6333.     BL = flag
  6334.         00h disable special character interrupt
  6335.         FFh enable interrupt
  6336.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6337. Return: AH = status
  6338.         00h successful    
  6339.         FFh failed
  6340. SeeAlso: AH=1Ah"Digiboard"
  6341. --------S-141A-------------------------------
  6342. INT 14 - FOSSIL - BREAK BEGIN OR END
  6343.     AH = 1Ah
  6344.     AL = 00h stop sending 'break'
  6345.          01h start sending 'break'
  6346.     DX = port number
  6347. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  6348. --------S-141A-------------------------------
  6349. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  6350.     AH = 1Ah
  6351.     BX = subfunction
  6352.         00h return pointer to special character flag byte
  6353.         01h return pointer to special character counter word
  6354.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  6355. Return: ES:BX -> special character flag or counter
  6356. Notes:    flag is FFh if one or more special characters are in the receive
  6357.       buffer; it is 00h and the counter is invalid if no special characters
  6358.       are in the receive buffer
  6359.     counter (if valid) contains the number of characters in the receive
  6360.       buffer up to and including the last-received special character
  6361. --------S-141B-------------------------------
  6362. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  6363.     AH = 1Bh
  6364.     DX = port number
  6365.     CX = size of user buffer
  6366.     ES:DI -> user buffer for driver info (see below)
  6367. Return: AX = number of characters transferred
  6368.     CX = 3058h ("0X") (X00 FOSSIL only)
  6369.     DX = 2030h (" 0") (X00 FOSSIL only)
  6370.  
  6371. Format of driver info:
  6372. Offset    Size    Description
  6373.  00h    WORD    size of structure in bytes
  6374.  02h    BYTE    FOSSIL spec driver conforms to
  6375.  03h    BYTE    revision level of this specific driver
  6376.  04h    DWORD    pointer to ASCIZ identification string
  6377.  08h    WORD    size of the input buffer
  6378.  0Ah    WORD    number of bytes left in buffer
  6379.  0Ch    WORD    size of the output buffer
  6380.  0Eh    WORD    number of bytes left in buffer
  6381.  10h    BYTE    width of screen
  6382.  11h    BYTE    length of screen
  6383.  12h    BYTE    actual baud rate, computer to modem
  6384. --------S-141C-------------------------------
  6385. INT 14 - X00 FOSSIL - ACTIVATE PORT
  6386.     AH = 1Ch
  6387.     DX = port number
  6388. Return: AX = 1954h if successful
  6389.     BL = maximum function number supported (not including 7Eh and above)
  6390.     BH = revision of FOSSIL specification supported
  6391. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  6392.       with the PS/2 BIOS in a future release
  6393. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  6394. --------S-141D-------------------------------
  6395. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  6396.     AH = 1Dh
  6397.     DX = port number
  6398. Return: none
  6399. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  6400.       with the PS/2 BIOS in a future release
  6401.     ignored if the port was never activated with AH=04h or AH=1Ch
  6402. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  6403. --------S-141E-------------------------------
  6404. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  6405.     AH = 1Eh
  6406.     AL = break status
  6407.         00h if break
  6408.         01h if no break
  6409.     BH = parity (see below)
  6410.     BL = number of stop bits
  6411.         00h one stop bit
  6412.         01h two stop bits (1.5 if 5 bit word length)
  6413.     CH = word length (see below)
  6414.     CL = bps rate (see below)
  6415.     DX = port number
  6416. Return: AX = port status code (see AH=00h)
  6417. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  6418.     if the port was locked at X00 load time, the appropriate parameters are
  6419.       ignored
  6420. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  6421.  
  6422. Values for parity:
  6423.  00h no parity
  6424.  01h odd parity
  6425.  02h even parity
  6426.  03h stick parity odd
  6427.  04h stick parity even
  6428.  
  6429. Values for word length:
  6430.  00h 5 bits
  6431.  01h 6 bits
  6432.  02h 7 bits
  6433.  03h 8 bits
  6434.  
  6435. Values for bps rate:
  6436.  00h 110
  6437.  01h 150
  6438.  02h 300
  6439.  03h 600
  6440.  04h 1200
  6441.  05h 2400
  6442.  06h 4800
  6443.  07h 9600
  6444.  08h 19200
  6445. --------S-141F-------------------------------
  6446. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  6447.     AH = 1Fh
  6448.     AL = 00h read modem control register
  6449.           Return: BL = modem control register (see below)
  6450.               AH = status
  6451.     AL = 01h write modem control register
  6452.           BL = modem control register (see below)
  6453.           Return: AX = status
  6454.     DX = port number
  6455. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  6456.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  6457. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  6458.  
  6459. Bitfields for modem control register:
  6460.  bit 0    data terminal ready
  6461.  bit 1    request to send
  6462.  bit 2    OUT1
  6463.  bit 3    OUT2 (interrupts) enabled
  6464.  bit 4    LOOP
  6465.  bits 5-7 reserved
  6466. --------S-1420-------------------------------
  6467. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  6468.     AH = 20h
  6469.     DX = port number
  6470. Return: AH = 00h if character was available
  6471.         AL = next character (removed from receive buffer)
  6472.     AX = FFFFh if no character available
  6473. SeeAlso: AH=0Ch,AH=21h"X00"
  6474. --------S-1420-------------------------------
  6475. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  6476.     AH = 20h
  6477.     AL = logical port (01h COM1, 02h COM2)
  6478.     DX = physical port number
  6479. Return: AX = status
  6480.         0000h successful
  6481.         FFFFh failed
  6482. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  6483. --------S-1420-------------------------------
  6484. INT 14 - MultiDOS Plus - INITIALIZE PORT
  6485.     AH = 20h
  6486.     AL = port parameters (see AH=00h"SERIAL")
  6487.     DX = port number (0-3)
  6488. Return: AH = status
  6489.         00h successful
  6490.         41h no such port
  6491.         64h monitor mode already active
  6492. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  6493. --------S-1421-------------------------------
  6494. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  6495.     AH = 21h
  6496.     AL = character
  6497.     DX = port number
  6498. Notes:    the given character is inserted at the end of the receive buffer as if
  6499.       it had just arrived from the serial port; all normal receive
  6500.       processing (XON/XOFF, ^C/^K) is performed on the character
  6501.     fully re-entrant
  6502. SeeAlso: AH=20h"X00"
  6503. --------S-1421-------------------------------
  6504. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  6505.     AH = 21h
  6506.     DX = physical port number
  6507. Return: AX = status
  6508.         0000h successful
  6509.         FFFFh failed
  6510. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  6511. --------S-1421-------------------------------
  6512. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  6513.     AH = 21h
  6514.     AL = character to send
  6515.     DX = port number
  6516. Return: AH = status (see below)
  6517. Note:    monitor mode must have been turned on with AH=24h before calling
  6518. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  6519.  
  6520. Values for status:
  6521.  00h successful
  6522.  39h no DSR or CTS
  6523.  3Ch no DSR
  6524.  3Bh no CTS
  6525.  41h no such port
  6526.  42h monitor mode not active
  6527.  97h timed out
  6528. --------S-1422-------------------------------
  6529. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  6530.     AH = 22h
  6531.     AL = logical port (01h COM1, 02h COM2)
  6532. Return: AX = status (0000h successful)
  6533. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  6534. --------S-1422-------------------------------
  6535. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  6536.     AH = 22h
  6537.     DX = port number
  6538. Return: AH = status (see also AH=21h"MultiDOS")
  6539.         00h successful
  6540.         AL = character
  6541.         3Dh framing and parity error
  6542.         3Eh overrun error
  6543.         3Fh framing error
  6544.         40h parity error
  6545.         96h ring buffer overflow
  6546. Note:    if no character is available, this function waits until a character
  6547.       arrives or an implementation-dependent timeout elapses
  6548. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  6549. --------S-1423-------------------------------
  6550. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  6551.     AH = 23h
  6552.     AL = logical port (01h COM1, 02h COM2)
  6553.     DH = user ID
  6554.     DL = process ID (DH,DL both FFh for current task)
  6555. Return: AL = MW386 port mode (see below)
  6556.     CX = MW386 port number
  6557.     DH = owner's user ID
  6558.     DL = owner's task ID
  6559. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  6560.  
  6561. Bitfields for MW386 port mode:
  6562.  bit 0    port is shared (spooler only)
  6563.  bit 1    port is spooled instead of direct (spooler only)
  6564.  bit 2    port is assigned as logical COM device, not in spooler
  6565.  bit 3    port is free
  6566. --------S-1423-------------------------------
  6567. INT 14 - MultiDOS Plus - GET PORT STATUS
  6568.     AH = 23h
  6569.     DX = port number
  6570. Return: AH = line status (see AH=03h)
  6571.     AL = modem status (see AH=03h)
  6572. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  6573. --------S-1424-------------------------------
  6574. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  6575.     AH = 24h
  6576.     CX = physical I/O port number
  6577.     DS:DX -> configuration table (see below)
  6578. Return: AH = 00h
  6579. Note:    invalid port numbers are merely ignored
  6580. SeeAlso: INT 17/AH=96h
  6581.  
  6582. Format of configuration table:
  6583. Offset    Size    Description
  6584.  00h    BYTE    baud rate (see below)
  6585.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  6586.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  6587.  03h    BYTE    stop bits (00h=1, 01h=2)
  6588.  04h    BYTE    receive flow control
  6589.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  6590.  05h    BYTE    transmit flow control (as for receive)
  6591.  
  6592. Values for baud rate:
  6593.  00h 38400
  6594.  01h 19200
  6595.  02h  9600
  6596.  03h  7200
  6597.  04h  4800
  6598.  05h  3600
  6599.  06h  2400
  6600.  07h  2000
  6601.  08h  1200
  6602.  09h   600
  6603.  0Ah   300
  6604.  0Bh   150
  6605.  0Ch   134.5
  6606. --------S-1424-------------------------------
  6607. INT 14 - MultiDOS Plus - SET MONITOR MODE
  6608.     AH = 24h
  6609.     AL = port status storage
  6610.         00h single status for entire receive buffer
  6611.         01h separate status kept for each byte in receive buffer
  6612.     DX = port number
  6613. Return: AH = status
  6614.         00h successful
  6615.         3Ah invalid status storage specified
  6616.         41h no such port
  6617.         64h monitor mode already active
  6618. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  6619.       port
  6620. SeeAlso: AH=20h"MultiDOS",AH=25h
  6621. --------S-1425-------------------------------
  6622. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  6623.     AH = 25h
  6624.     AL = function
  6625.         00h only clear buffers
  6626.         01h clear buffers and deactivate
  6627.     DX = port number
  6628. Return: AH = status
  6629.         00h successful
  6630.         3Ah invalid function
  6631.         41h no such port
  6632.         42h monitor mode not active
  6633. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  6634. --------S-1427-------------------------------
  6635. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  6636.     AH = 27h
  6637.     DX = port number
  6638. Return: AH = status
  6639.         00h successful
  6640.         41h no such port
  6641.         42h monitor mode not active
  6642.     AL = number of characters in receive buffer
  6643. --------S-147E-------------------------------
  6644. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  6645.     AH = 7Eh
  6646.     AL = code assigned to external application (80h-BFh)
  6647.         80h reserved for communications FOSSIL
  6648.         81h video FOSSIL
  6649.         82h reserved for keyboard FOSSIL
  6650.         83h reserved for system FOSSIL
  6651.     ES:DX -> entry point
  6652. Return: AX = 1954h
  6653.     BL = code assigned to application (same as input AL)
  6654.     DH = 00h failed
  6655.          01h successful
  6656. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  6657. --------S-147F-------------------------------
  6658. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  6659.     AH = 7Fh
  6660.     AL = code assigned to external application
  6661.     ES:DX -> entry point
  6662. Return: AX = 1954h
  6663.     BL = code assigned to application (same as input AL)
  6664.     DH = 00h failed
  6665.          01h successful
  6666. SeeAlso: AH=7Eh
  6667. --------S-1480-------------------------------
  6668. INT 14 - COMMUNICATIONS FOSSIL
  6669.     AH = 80h
  6670. SeeAlso: AH=7Eh
  6671. --------S-1480-------------------------------
  6672. INT 14 - COURIERS.COM - INSTALLATION CHECK
  6673.     AH = 80h
  6674. Return: AH = E8h if loaded
  6675. Program: COURIERS is a TSR utility by PC Magazine
  6676. --------S-148000-----------------------------
  6677. INT 14 - ARTICOM - INSTALLATION CHECK
  6678.     AX = 8000h
  6679. Return: AL = FFh if installed
  6680.         BH = major version
  6681.         BL = minor version
  6682. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  6683.       works on top of NetBIOS and allows modem/serial-port sharing by
  6684.       programs using INT 14 for serial I/O.
  6685. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cars and
  6686.       drivers
  6687. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  6688. --------S-148001-----------------------------
  6689. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  6690.     AX = 8001h
  6691. Return: AX = error code, if error (see AX=8003h)
  6692. SeeAlso: AX=8000h,AX=8002h,AX=8003h
  6693. --------S-148002-----------------------------
  6694. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  6695.     AX = 8002h
  6696.     ES:DI -> buffer for redirector status structure (see below)
  6697. Return: AX = error code, if error (see AX=8003h)
  6698. SeeAlso: AX=8000h,AX=8003h
  6699.  
  6700. Format of redirector status:
  6701. Offset    Size    Description  
  6702.  00h    WORD    redirector major and minor version numbers
  6703.  02h    WORD    redirectable ports found
  6704.  04h    WORD    redirectable ports + local ports found
  6705.  06h    WORD    redirector internal buffer size
  6706.  08h    WORD    maximum servers maintained
  6707.  0Ah    WORD    number of adapters found
  6708. --------S-148003-----------------------------
  6709. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  6710.     AX = 8003h
  6711.     CX = error number to translate
  6712. Return: ES:DI -> ASCIZ error text or NULL if can't translate.
  6713. SeeAlso: AX=8000h
  6714.  
  6715. Values for error codes:
  6716.  00h    "No error"
  6717.  01h    "An invalid port number was specified"
  6718.  02h    "Port is already redirected"
  6719.  03h    "Too many ports redirected"
  6720.  04h    "Cannot locate the server"
  6721.  05h    "Server is busy"
  6722.  06h    "Access denied"
  6723.  07h    "Resource in use"
  6724.  08h    "Resource in use - request queued"
  6725.  09h    "No such resource"
  6726.  0Ah    "Invalid username/password pair"
  6727.  0Bh    "Noncompatible version number"
  6728.  0Ch    "Can't remove from memory"
  6729.  0Dh    "Bad NETBIOS adapter number"
  6730.  0Eh    "No more entries in list"
  6731.  0Fh    "Resource is not available at this time"
  6732.  10h    "Invalid value to INT 14 call"
  6733. --------S-148004-----------------------------
  6734. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  6735.     AX = 8004h
  6736.     DX = port to redirect (COM1=0, COM2=1, ...)
  6737.     CH = attach type
  6738.     CL = adapter to use for attach, 0FFh to search all
  6739.     ES:DI -> attachment structure (see below)
  6740. Return: AX = error code, if error (see AX=8003h)
  6741. Note:    The wildcard '*' is supported in the server and resource fields.  If
  6742.       wild cards are used then the first matching available server is
  6743.       attached.
  6744. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  6745.  
  6746. Format of attachment structure:
  6747. Offset    Size    Description  
  6748.  00h 16 BYTEs    server to look for attach
  6749.  10h 16 BYTEs    attach to resource name
  6750.  20h 16 BYTEs    username for attach
  6751.  30h 16 BYTEs    password for username or resource
  6752.  40h    BYTE    attach type
  6753.         00h normal
  6754.         01h queue if resource is in use (not yet supported in v1.00)
  6755. --------S-148005-----------------------------
  6756. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  6757.     AX = 8005h
  6758.     DX = port to detach (COM1=0, COM2=1, ...)
  6759. Return: AX = error code, if error (see AX=8003h)
  6760. Note:    only a previously attached resource can be detached
  6761. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  6762. --------S-148006-----------------------------
  6763. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  6764.     AX = 8006h
  6765.     BX = remote port (COM1=0, COM2=1, ...)
  6766.     CL = adapter number, FFH to try all adapters 
  6767.     ES:DI -> resource information structure (see below)
  6768.     DS:SI -> 16 byte server name. See note.
  6769. Return: AX = error code, if error (see AX=8003h)
  6770.     BX = next remote port, recall to get next resource info
  6771. Note:    Wild cards supported in both the resource field and server name 
  6772.     string DS:SI. If wild cards used then first matching available
  6773.     resource information is searched. Set resource field to 0FFh to
  6774.     return all resources.
  6775. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  6776.  
  6777. Format of resource information structure:
  6778. Offset    Size    Description
  6779.  00h    BYTE    00h = free, else used
  6780.  01h 16 BYTEs    resource name
  6781.  11h 16 BYTEs    username of resource user
  6782.  21h    WORD    amount of time used
  6783.  23h    WORD    amount of time remaining
  6784.  53h 48 BYTEs    description of resource
  6785.  93h 64 BYTEs    initialization string for modem 
  6786.  B3h 32 BYTEs    dial string for modem 
  6787.  D3h 32 BYTEs    hang-up string for modem 
  6788. --------S-148007-----------------------------
  6789. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  6790.     AX = 8007h
  6791.     DX = port index (COM1=0, COM2=1, ...)
  6792.     ES:DI -> buffer for port information structure (see below)
  6793. Return: CF clear if redirection info returned and port is redirected
  6794.     CF set if not a redirected port
  6795.     AX = error code, if error (see AX=8003h)
  6796. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  6797.  
  6798. Format of port information structure:
  6799. Offset    Size    Description
  6800.  00h 16 BYTEs    server name resource is on
  6801.  10h    BYTE    adapter number server is on
  6802.  11h    BYTE    resource name
  6803.  21h    WORD    remote port index, use to get additional information
  6804.  23h    WORD    buffer size
  6805.  25h    WORD    baud rate (see below)
  6806.  26h    BYTE    modem status register
  6807.  27h    BYTE    modem control register
  6808.  28h    BYTE    line status register
  6809.  29h    BYTE    line control register
  6810.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  6811.  2Bh    WORD    send timeout in ticks
  6812.  2Dh    WORD    receive timeout in ticks
  6813.  2Fh    WORD    time used on remote port
  6814.  31h    WORD    time left before timeout
  6815.  33h    BYTE    if server changes allowed?
  6816.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  6817.  
  6818. Values for baud rate:
  6819.  00h    110
  6820.  01h    150
  6821.  02h    300
  6822.  03h    600
  6823.  04h    1200
  6824.  05h    2400
  6825.  06h    4800
  6826.  07h    9600
  6827.  08h    19200
  6828.  09h    38400
  6829.  0Ah    57600
  6830.  0Bh    115200
  6831.  0Ch    134.5
  6832.  0Dh    1800
  6833.  0Eh    2000
  6834.  0Fh    3600
  6835.  10h    7200
  6836. --------S-148008-----------------------------
  6837. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  6838.     AX = 8008h
  6839.     BX = server index (0,1,...)
  6840.     ES:DI -> server name structure (see below)
  6841. Return: AX = error code, if error (see AX=8003)
  6842.     BX = next remote port, repeat call to get next available server
  6843. Note:    the wildcard '*' is supported in the server name field.     Set the
  6844.       server name to FFh to search for all servers.
  6845. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  6846.  
  6847. Format of server name structure:
  6848. Offset     Size      Description
  6849.   00h 16 BYTEs      (call) ASCIZ servername
  6850.   10h     BYTE      (return) the adapter server is found
  6851. --------S-148009-----------------------------
  6852. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS 
  6853.     AX = 8009h
  6854.     BX = send timeout in ticks
  6855.     CX = receive timeout in ticks
  6856.     DX = port index (COM1=0, COM2=1, ...)
  6857. Return: nothing
  6858. SeeAlso: AX=8000h,AX=800Ah
  6859. --------S-14800A-----------------------------
  6860. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  6861.     AX = 800Ah
  6862.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  6863.     DX = port index (COM1=0, COM2=1, ...)
  6864. Return: AX = error code, if error (see AX=8003h)
  6865. Note:    for attached ports only!
  6866. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  6867. --------S-148025-----------------------------
  6868. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  6869.     AX = 8025h
  6870.     DS:DX -> address of trap function (see below) to call on read/write
  6871. Note:    setting the vector to a user function allows the redirector's activity
  6872.       to be monitored.
  6873. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  6874.  
  6875. Trap function called with:
  6876.     AH = operation
  6877.         80h reading character
  6878.         81h writing character
  6879.     AL = character
  6880.     Return: AX must be preserved
  6881.         far JUMP to old trap function (see AX=8035h)
  6882. --------S-148035-----------------------------
  6883. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  6884.     AX = 8035h
  6885. Return: ES:BX -> address of current send/receive routine
  6886. Note:    this function returns the address of the routine which is called 
  6887.       inside A-REDIR.EXE each time a character is received or sent on the
  6888.       active COM port.
  6889. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  6890. --------S-1481-------------------------------
  6891. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  6892.     AH = 81h
  6893.     AL = port number (1-4)
  6894. Return: AH = 00h port available
  6895.          01h port exists but already in use
  6896.          02h port nonexistent
  6897. Program: COURIERS is a TSR utility by PC Magazine
  6898. SeeAlso: AH=83h,AH=8Dh
  6899. --------S-1481-------------------------------
  6900. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  6901.     AH = 81h
  6902.     BX:DI -> port control block
  6903. Return: ???
  6904. SeeAlso: AH=00h
  6905.  
  6906. Format of port control block:
  6907. Offset    Type    Description
  6908.  00h    WORD    port IO address
  6909.  02h    WORD    port IRQ
  6910.  04h    WORD    baud rate
  6911.  06h    WORD    parity
  6912.  08h    WORD    data bits
  6913.  0Ah    WORD    stop bits
  6914.  0Ch    WORD    break status
  6915.          0000h off
  6916.  0Eh    WORD    flow control protocol
  6917.  10h    BYTE    input block
  6918.  11h    BYTE    output block
  6919.  12h    WORD    low threshold
  6920.  14h    WORD    high threshold
  6921.  16h    WORD    segment of buffer
  6922.  18h    WORD    offset of buffer
  6923.  1Ah    WORD    input buffer length
  6924.  1Ch    WORD    output buffer length
  6925.  1Eh    BYTE    auxiliary address
  6926.  1Fh    BYTE    spare
  6927.  20h  4 WORDs    spares
  6928. --------V-148100-----------------------------
  6929. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  6930.     AX = 8100h
  6931.     ES:DI -> buffer for VFOSSIL information (see below)
  6932. Return: AX = 1954h if installed
  6933. SeeAlso: AH=7Eh,AX=8101h
  6934.  
  6935. Format of VFOSSIL information:
  6936. Offset    Size    Description
  6937.  00h    WORD    size of information in bytes, including this field
  6938.  02h    WORD    VFOSSIL major version
  6939.  04h    WORD    VFOSSIL revision level
  6940.  06h    WORD    highest VFOSSIL application function supported
  6941. --------V-148101-----------------------------
  6942. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  6943.     AX = 8101h
  6944.     ES:DI -> buffer for application function table (see below)
  6945.     CX = length of buffer in bytes
  6946. Return: AX = 1954h if installed
  6947.         BH = highest VFOSSIL application function supported
  6948. Note:    the number of initialized pointers in the application function table
  6949.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  6950.       will be initialized
  6951. SeeAlso: AX=8102h
  6952.  
  6953. Format of application function table:
  6954. Offset    Size    Description
  6955.  00h    DWORD    -> function to query current video mode (VioGetMode)
  6956.  04h    DWORD    -> function to set video mode (VioSetMode)
  6957.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  6958.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  6959.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  6960.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  6961.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  6962.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  6963.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  6964.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  6965.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  6966.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  6967.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  6968.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  6969.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  6970.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  6971.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  6972.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  6973.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  6974.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  6975.  
  6976. Format of video mode data structure:
  6977. Offset    Size    Description
  6978.  00h    WORD    length of structure including this field
  6979.  02h    BYTE    mode characteristics
  6980.         bit 0: clear if MDA, set otherwise
  6981.         bit 1: graphics mode
  6982.         bit 2: color disabled (black-and-white)
  6983.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  6984.  04h    WORD    number of text columns
  6985.  06h    WORD    number of text rows
  6986.  08h    WORD    reserved
  6987.  0Ah    WORD    reserved
  6988.  0Ch    DWORD    reserved
  6989.  
  6990. Format of video configuration data:
  6991. Offset    Size    Description
  6992.  00h    WORD    structure length including this field
  6993.  02h    WORD    adapter type
  6994.         00h monochrome/printer
  6995.         01h CGA
  6996.         02h EGA
  6997.         03h VGA
  6998.         07h 8514/A
  6999.  04h    WORD    display type
  7000.         00h monochrome
  7001.         01h color
  7002.         02h enhanced color
  7003.         09h 8514
  7004.  06h    DWORD    adapter memory size
  7005.  
  7006. Format of cursor type record:
  7007. Offset    Size    Description
  7008.  00h    WORD    cursor start line
  7009.  02h    WORD    cursor end line
  7010.  04h    WORD    cursor width (always 01h)
  7011.  06h    WORD    cursor attribute (FFFFh = hidden)
  7012.  
  7013. Call VioGetMode with:
  7014.     STACK:    WORD    VIO handle (must be 00h)
  7015.         DWORD    pointer to video mode data structure (see above)
  7016. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see below)
  7017.  
  7018. Values for error code:
  7019.  0000h    successful
  7020.  0074h    internal VIO failure
  7021.  0163h    unsupported mode
  7022.  0166h    invalid row value
  7023.  0167h    invalid column value
  7024.  017Eh    buffer too small
  7025.  01A5h    invalid VIO parameter
  7026.  01B4h    invalid VIO handle
  7027.  
  7028. Call VioSetMode with:
  7029.     STACK:    WORD    VIO handle (must be 00h)
  7030.         DWORD    pointer to video mode data structure (see above)
  7031. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  7032.  
  7033. Call VioGetConfig with:
  7034.     STACK:    WORD    VIO handle (must be 00h)
  7035.         DWORD    pointer to video configuration data buffer (see above)
  7036. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  7037.  
  7038. Call VioWrtTTY with:
  7039.     STACK:    WORD    VIO handle (must be 00h)
  7040.         WORD    length of string
  7041.         DWORD    pointer to character string to be written to screen
  7042. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7043. Notes:    write wraps at end of line and terminates if it reaches end of screen
  7044.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  7045.       not required to be reentrant; in non-ANSI mode, the function is
  7046.       reentrant and may be called from within an MS-DOS function call
  7047.  
  7048. Call VioGetANSI with:
  7049.     STACK:    WORD    VIO handle (must be 00h)
  7050.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  7051.             or 01h if ANSI is on
  7052. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7053.  
  7054. Call VioSetANSI with:
  7055.     STACK:    WORD    VIO handle (must be 00h)
  7056.         DWORD    pointer to WORD indicating new state of ANSI
  7057.             00h off
  7058.             01h on
  7059. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  7060.  
  7061. Call VioGetCurPos with:
  7062.     STACK:    WORD    VIO handle (must be 00h)
  7063.         DWORD    pointer to WORD to hold current cursor column (0-based)
  7064.         DWORD    pointer to WORD to hold current cursor row (0-based)
  7065. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7066.  
  7067. Call VioSetCurPos with:
  7068.     STACK:    WORD    VIO handle (must be 00h)
  7069.         WORD    cursor column
  7070.         WORD    cursor row
  7071. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7072. Note:    if either coordinate is invalid, the cursor is not moved
  7073.  
  7074. Call VioGetCurType with:
  7075.     STACK:    WORD    VIO handle (must be 00h)
  7076.         DWORD    pointer to cursor type record (see above)
  7077. Return: AX = error code (00h, 74h, 1B4h) (see above)
  7078.  
  7079. Call VioSetCurType with:
  7080.     STACK:    WORD    VIO handle (must be 00h)
  7081.         DWORD    pointer to cursor type record (see above)
  7082. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  7083.  
  7084. Call VioScrollUp with:
  7085.     STACK:    WORD    VIO handle (must be 00h)
  7086.         DWORD    pointer to char/attr cell for filling emptied rows
  7087.         WORD    number or rows to scroll (FFFFh = clear area)
  7088.         WORD    right column of scroll area
  7089.         WORD    bottom row of scroll area
  7090.         WORD    left column of scroll area
  7091.         WORD    top row of scroll area
  7092. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7093.  
  7094. Call VioScrollDn with:
  7095.     STACK:    WORD    VIO handle (must be 00h)
  7096.         DWORD    pointer to char/attr cell for filling emptied rows
  7097.         WORD    number or rows to scroll (FFFFh = clear area)
  7098.         WORD    right column of scroll area
  7099.         WORD    bottom row of scroll area
  7100.         WORD    left column of scroll area
  7101.         WORD    top row of scroll area
  7102. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7103.  
  7104. Call VioReadCellStr with:
  7105.     STACK:    WORD    VIO handle (must be 00h)
  7106.         WORD    column at which to start reading
  7107.         WORD    row at which to start reading
  7108.         DWORD    pointer to WORD containing length of buffer in bytes
  7109.             on return, WORD contains number of bytes actually read
  7110.         DWORD    pointer to buffer for cell string
  7111. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  7112.  
  7113. Call VioReadCharStr with:
  7114.     STACK:    WORD    VIO handle (must be 00h)
  7115.         WORD    column at which to start reading
  7116.         WORD    row at which to start reading
  7117.         DWORD    pointer to WORD containing length of buffer in bytes
  7118.             on return, WORD contains number of bytes actually read
  7119.         DWORD    pointer to buffer for character string
  7120. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  7121.  
  7122. Call VioWrtCellStr with:
  7123.     STACK:    WORD    VIO handle (must be 00h)
  7124.         WORD    column at which to start writing
  7125.         WORD    row at which to start writing
  7126.         WORD    length of cell string in bytes
  7127.         DWORD    pointer to cell string to write
  7128. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7129. Note:    write wraps at end of line and terminates if it reaches end of screen
  7130.  
  7131. Call VioWrtCharStr with:
  7132.     STACK:    WORD    VIO handle (must be 00h)
  7133.         WORD    column at which to start writing
  7134.         WORD    row at which to start writing
  7135.         WORD    length of character string
  7136.         DWORD    pointer to character string to write
  7137. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7138. Note:    write wraps at end of line and terminates if it reaches end of screen
  7139.  
  7140. Call VioWrtCharStrAttr with:
  7141.     STACK:    WORD    VIO handle (must be 00h)
  7142.         DWORD    pointer to attribute to be applied to each character
  7143.         WORD    column at which to start writing
  7144.         WORD    row at which to start writing
  7145.         WORD    length of character string
  7146.         DWORD    pointer to character string to write
  7147. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7148. Note:    write wraps at end of line and terminates if it reaches end of screen
  7149.  
  7150. Call VioWrtNAttr with:
  7151.     STACK:    WORD    VIO handle (must be 00h)
  7152.         WORD    column at which to start writing
  7153.         WORD    row at which to start writing
  7154.         WORD    number of times to write attribute
  7155.         DWORD    pointer to display attribute to replicate
  7156. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7157. Note:    write wraps at end of line and terminates if it reaches end of screen
  7158.  
  7159. Call VioWrtNCell with:
  7160.     STACK:    WORD    VIO handle (must be 00h)
  7161.         WORD    column at which to start writing
  7162.         WORD    row at which to start writing
  7163.         WORD    number of times to write cell
  7164.         DWORD    pointer to cell to replicate
  7165. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7166. Note:    write wraps at end of line and terminates if it reaches end of screen
  7167.  
  7168. Call VioWrtNChar with:
  7169.     STACK:    WORD    VIO handle (must be 00h)
  7170.         WORD    column at which to start writing
  7171.         WORD    row at which to start writing
  7172.         WORD    number of times to write character
  7173.         DWORD    pointer to character to replicate
  7174. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  7175. Note:    write wraps at end of line and terminates if it reaches end of screen
  7176. --------V-148102-----------------------------
  7177. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  7178.     AX = 8102h
  7179. Return: AX = 1954h
  7180. Note:    terminates all operations; after this call, the video FOSSIL may either
  7181.       be removed from memory or reinitialized
  7182. SeeAlso: AX=8101h,AX=8103h
  7183. --------V-148103-----------------------------
  7184. INT 14 - VIDEO FOSSIL - UNINSTALL
  7185.     AX = 8103h
  7186. Return:    AX = 1954h
  7187. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  7188. --------K-1482-------------------------------
  7189. INT 14 - KEYBOARD FOSSIL
  7190.     AH = 82h
  7191. SeeAlso: AH=7Eh
  7192. --------S-1482-------------------------------
  7193. INT 14 - COURIERS.COM - CONFIGURE PORT
  7194.     AH = 82h
  7195.     AL = port number (1-4)
  7196.     BX = speed (bps)
  7197.     CX = bit flags
  7198.         bit 0: enable input flow control
  7199.         bit 1: enable output flow control
  7200.         bit 2: use X.PC protocol (not yet implemented)
  7201. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  7202. ----------1483-------------------------------
  7203. INT 14 - SYSTEM FOSSIL
  7204.     AH = 83h
  7205. SeeAlso: AH=7Eh
  7206. --------S-1483-------------------------------
  7207. INT 14 - COURIERS.COM - START INPUT
  7208.     AH = 83h
  7209.     ES:BX -> circular input buffer
  7210.     CX = length of buffer 
  7211.         (should be at least 128 bytes if input flow control enabled)
  7212. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  7213. --------S-1484-------------------------------
  7214. INT 14 - COURIERS.COM - READ CHARACTER
  7215.     AH = 84h
  7216. Return: ZF set if no characters available
  7217.     ZF clear
  7218.        AL = character
  7219.        AH = modem status bits
  7220.         bit 7: set on input buffer overflow
  7221. SeeAlso: AH=02h,AH=86h,AH=89h
  7222. --------S-1485-------------------------------
  7223. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  7224.     AH = 85h
  7225. SeeAlso: AH=0Ah,AH=88h
  7226. --------S-1486-------------------------------
  7227. INT 14 - COURIERS.COM - START OUTPUT
  7228.     AH = 86h
  7229.     ES:BX -> output buffer
  7230.     CX = length of output buffer
  7231. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  7232. --------S-1487-------------------------------
  7233. INT 14 - COURIERS.COM - OUTPUT STATUS
  7234.     AH = 87h
  7235. Return: AX = number of unsent characters
  7236. --------S-1488-------------------------------
  7237. INT 14 - COURIERS.COM - ABORT OUTPUT
  7238.     AH = 88h
  7239. SeeAlso: AH=09h,AH=85h
  7240. --------S-1489-------------------------------
  7241. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  7242.     AH = 89h
  7243.     CL = character to send
  7244. SeeAlso: AH=01h,AH=84h
  7245. --------S-148A-------------------------------
  7246. INT 14 - COURIERS.COM - SEND BREAK
  7247.     AH = 8Ah
  7248. SeeAlso: AH=89h,AH=FAh
  7249. --------S-148C-------------------------------
  7250. INT 14 - COURIERS.COM - SET SPEED
  7251.     AH = 8Ch
  7252.     BX = speed in bps
  7253. SeeAlso: AH=00h,AH=82h"COURIERS"
  7254. --------S-148D-------------------------------
  7255. INT 14 - COURIERS.COM - DECONFIGURE PORT
  7256.     AH = 8Dh
  7257. SeeAlso: AH=82h"COURIERS"
  7258. --------S-14A0-------------------------------
  7259. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  7260.     AH = A0h
  7261.     ???
  7262. Return: ???
  7263. SeeAlso: AH=A1h"BAPI"
  7264. --------S-14A0--CXFFFF-----------------------
  7265. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  7266.     AH = A0h
  7267.     CX = FFFFh
  7268. Return: CF clear if successful
  7269.         AX = 5445h ('TE')
  7270.         CX <> FFFFh
  7271.         DX = port number
  7272.     CF set on error
  7273. Program: TES is a network serial port emulation program
  7274. SeeAlso: AH=A1h"TES"
  7275. --------S-14A1-------------------------------
  7276. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  7277.     AH = A1h
  7278.     ???
  7279. Return: ???
  7280. SeeAlso: AH=A0h"BAPI"
  7281. --------S-14A1-------------------------------
  7282. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  7283.     AH = A1h
  7284. Return: CX = number of active sessions
  7285.     ES:SI -> status array (see below)
  7286. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  7287.  
  7288. Format of status array entry:
  7289. Offset    Size    Description
  7290.  00h    BYTE    status
  7291.  01h    WORD    offset of name
  7292. --------S-14A2-------------------------------
  7293. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  7294.     AH = A2h
  7295. Return:    CX = number of servers
  7296.     ES:SI -> array of offsets from ES for server names
  7297. SeeAlso: AH=A1h"TES"
  7298. --------S-14A3-------------------------------
  7299. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  7300.     AH = A3h
  7301.     ES:SI -> ???
  7302. Return: CF clear if successful
  7303.         AX = 5445h ('TE')
  7304.         CX <> FFFFh
  7305.         DX = port number
  7306.     CF set on error
  7307. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  7308. --------S-14A4-------------------------------
  7309. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  7310.     AH = A4h
  7311.     CX = length
  7312.     DH = session number (00h)
  7313.     ES:BX -> buffer
  7314. Return: CX = number of bytes sent
  7315. SeeAlso: AH=19h,AH=86h,AH=A5h"BAPI"
  7316. --------S-14A4-------------------------------
  7317. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  7318.     AH = A4h
  7319.     ???
  7320. Return: ???
  7321. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7322. --------S-14A5-------------------------------
  7323. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  7324.     AH = A5h
  7325.     CX = length
  7326.     DH = session number (00h)
  7327.     ES:BX -> buffer
  7328. Return: CX = number of bytes read
  7329. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A4h"BAPI",AX=FF02h
  7330. --------S-14A5-------------------------------
  7331. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  7332.     AH = A5h
  7333.     AL = session number
  7334. Return: ???
  7335. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  7336. --------S-14A6-------------------------------
  7337. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  7338.     AH = A6h
  7339.     DH = session number (00h)
  7340. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
  7341. --------S-14A6-------------------------------
  7342. INT 14 - Interconnections Inc. TES - DROP A SESSION
  7343.     AH = A6h
  7344.     AL = session number
  7345. Return: AH = status
  7346.         00h successful
  7347.         else error
  7348. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7349. --------S-14A7-------------------------------
  7350. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  7351.     AH = A7h
  7352.     ???
  7353. Return: ???
  7354. --------S-14A7-------------------------------
  7355. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  7356.     AH = A7h
  7357.     ???
  7358. Return: ???
  7359. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  7360. --------S-14A8-------------------------------
  7361. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  7362.     AH = A8h
  7363.     AL = 00h no visible response
  7364.     ES:SI -> ASCIZ command
  7365. Return: ???
  7366. --------S-14AF00BXAAAA-----------------------
  7367. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  7368.     AX = AF00h
  7369.     BX = AAAAh
  7370. Return: AX = AF01h if installed
  7371. --------S-14B0-------------------------------
  7372. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  7373.     AH = B0h
  7374.     AL = 00h disable
  7375.        = 01h enable
  7376. SeeAlso: AH=B1h
  7377. --------S-14B1-------------------------------
  7378. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  7379.     AH = B1h
  7380. SeeAlso: AH=B0h
  7381. --------a-14F0F0-----------------------------
  7382. INT 14 - ASAP v1.0 - ???
  7383.     AX = F0F0h
  7384.     DX = ???
  7385.     ???
  7386. Return: ???
  7387. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  7388.       MicroTalk
  7389. SeeAlso: AX=F0F1h
  7390. --------a-14F0F1DX0000-----------------------
  7391. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  7392.     AX = F0F1h
  7393.     DX = 0000h
  7394. Return: DX = segment of resident code
  7395.        = 0000h if not installed
  7396. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader by
  7397.       MicroTalk
  7398. SeeAlso: AX=F0F0h,INT 10/AH=38h
  7399. --------S-14F4FF-----------------------------
  7400. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  7401.     AX = F4FFh
  7402.     DX = port (00h-03h)
  7403. Return: CF clear if present
  7404.         AX = 0000h
  7405.     CF set if not present
  7406.         AX <> 0000h
  7407. --------S-14F9-------------------------------
  7408. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  7409.     AH = F9h
  7410.     DX = port (00h-03h)
  7411. --------S-14FA-------------------------------
  7412. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  7413.     AH = FAh
  7414.     DX = port (00h-03h)
  7415. SeeAlso: AH=1Ah,AH=8Ah
  7416. --------S-14FB-------------------------------
  7417. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  7418.     AH = FBh
  7419.     AL = modem control register (see AH=05h)
  7420.     DX = port (00h-03h)
  7421. SeeAlso: AH=05h"SERIAL"
  7422. --------S-14FC-------------------------------
  7423. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  7424.     AH = FCh
  7425.     DX = port (00h-03h)
  7426. Return: AH = RS232 status bits (see AH=00h)
  7427.     AL = character
  7428. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  7429. --------S-14FD02-----------------------------
  7430. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  7431.     AX = FD02h
  7432. Return: CX = number of characters available
  7433. --------S-14FF02-----------------------------
  7434. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  7435.     AX = FF02h
  7436.     CX = length
  7437.     DX = port (00h-03h)
  7438.     ES:BX -> buffer
  7439. Return: CX = number of characters read
  7440. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  7441. ---------------------------------------------
  7442.