home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / TEXT / INFO / INTER30A.ZIP / INTERRUP.A < prev    next >
Encoding:
Text File  |  1992-04-26  |  221.3 KB  |  6,003 lines

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