home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 (Alt) / The_Hacker_Chronicles_Volume_II-CD2.iso / misc / interrup.a < prev    next >
Encoding:
Text File  |  1995-01-03  |  238.9 KB  |  6,470 lines

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