home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / INTER32A.ZIP / INTERRUP.A < prev    next >
Encoding:
Text File  |  1992-09-13  |  242.0 KB  |  6,528 lines

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