home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / DOS_HELP / INTER191.ZIP / INTERRUP.A < prev    next >
Encoding:
Text File  |  1991-01-05  |  309.6 KB  |  8,479 lines

  1. Interrupt List        Release 91.1        Last change 1/5/91
  2. This compilation is Copyright (c) 1989, 1990, 1991 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in an archive
  5. named INTER191 (preferably the original authenticated PKZIP archive):
  6.     INTERRUP.1ST    the read-me file, containing credits, availability info
  7.     INTERRUP.A    INT 00 through INT 1F \
  8.     INTERRUP.B    INT 20 through INT 27  \ total 448 pages at 60 lines
  9.     INTERRUP.C    INT 28 through INT 5F  / per page, 483 with INTPRINT -p
  10.     INTERRUP.D    INT 60 through INT FF /
  11.     INTERRUP.PRI    a brief introduction to interrupts
  12.     INTPRINT.COM    a simple formatter that also generates the list summary
  13.     INTPRINT.DOC    instructions for INTPRINT
  14.     INTPRINT.C    source code for INTPRINT
  15.     MEMORY.LST    format of the BIOS data area
  16.     INT2QH.*    program for converting list to QuickHelp database
  17. ---------------------------------------------
  18. If you notice any mistakes or omissions, please let me know!  It is only with
  19. YOUR help that the list can continue to grow at the current rate.  Please send
  20. all changes to me rather than distributing a modified version of the list.
  21.  
  22. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  23. that they have already been addressed.
  24.  
  25.      Ralf Brown
  26.  
  27. ARPA: ralf@cs.cmu.edu
  28. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  29. BIT:  ralf%cs.cmu.edu@cmuccvma
  30. FIDO: Ralf Brown 1:129/3.1
  31.     or post a message to the DR_DEBUG echo
  32. CIS:  >INTERNET:ralf@cs.cmu.edu 
  33.  
  34. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  35. because of bad return paths.  If you don't get a response from me within a
  36. reasonable period of time, send it again with a better return path (starting at
  37. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  38. ---------------------------------------------
  39. See INTERRUP.1ST for the key to system abbreviations and a list of the
  40. trademarks mentioned here.
  41. ---------------------------------------------
  42. DISCLAIMER:  I verify the information contained in this list to the best of my
  43. ability, but I cannot be held responsible for any problems caused by use or
  44. misuse of the information, especially for those functions not officially 
  45. documented.  If it is marked "internal", you should check it carefully to make
  46. sure it works the same way in your version of the software (and please let me
  47. know whether or not it works the same way).  Information marked with "???" is
  48. known to be incomplete or guesswork.
  49. ---------------------------------------------
  50. The use of -> instead of = signifies that the indicated register or register
  51. pair contains a pointer to the specified item, rather than the item itself
  52. ----------00---------------------------------
  53. INT 00 - internal hardware - DIVIDE ERROR
  54.    Automatically called at end of DIV or IDIV operation that results in error
  55.    or overflow.   Normally set by DOS to display an error message and abort
  56.    the program.
  57. Notes:    on an 8086/8088, the return address points to the following instruction
  58.     on an 80286+, the return address points to the divide instruction
  59. SeeAlso: INT 04
  60. ----------01---------------------------------
  61. INT 01 - internal hardware - SINGLE-STEP
  62.    generated at end of each machine instruction if TF bit in FLAGS is set
  63. Notes:    this is what makes the T command of DEBUG work for single-stepping
  64.     on 8086 and 8088 CPUs, this interrupt is not generated after a MOV to
  65.       segment register or POP of segment register unless you have a very
  66.       early 8088 with a microcode bug
  67.     on 286 and up CPUs, this interrupt is not generated after a MOV to SS
  68.       or POP SS
  69. SeeAlso: INT 03
  70. ----------01---------------------------------
  71. INT 01 - 80386+ internal hardware - DEBUGGING EXCEPTIONS
  72.    Instruction address breakpoint fault - will return to execute instruction
  73.    Data address breakpoint trap - will return to following instruction
  74.    General detect fault, debug registers in use
  75.    Task-switch breakpoint trap
  76. ----------02---------------------------------
  77. INT 02 - external hardware - NMI (NON-MASKABLE INTERRUPT)
  78.    Generated by NMI signal in hardware.  This signal has various uses:
  79.  
  80.    Breakout switch on hardware debuggers
  81.    Parity error: all except Jr and CONV
  82.    Coprocessor interrupt: all except Jr and CONV
  83.    Keyboard interrupt: Jr, CONV
  84.    I/O channel check: CONV, PS50+
  85.    Disk-controller power-on request: CONV
  86.    System suspend: CONV
  87.    Real-time clock: CONV
  88.    System watch-dog timer, time-out interrupt: PS50+
  89.    DMA timer time-out interrupt: PS50+
  90. ----------03---------------------------------
  91. INT 03 - ONE-BYTE INTERRUPT
  92.    generated by opcode CCh
  93. Notes:    generally used to set breakpoints for debuggers
  94.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  95. SeeAlso: INT 01
  96. ----------04---------------------------------
  97. INT 04 - internal hardware - OVERFLOW
  98.    Generated by INTO instruction if OF flag is set.  If flag is not set, INTO
  99.    is effectively a NOP.
  100. Note:    used to trap any arithmetic errors before the erroneous results
  101.       propagate further through the computation
  102. SeeAlso: INT 00
  103. ----------05---------------------------------
  104. INT 05 - PRINT-SCREEN KEY
  105.    automatically called by keyboard scanner when print-screen key is pressed
  106. Notes:    normally executes routine to print the screen, but may call any routine
  107.       that can safely be executed from inside the keyboard scanner
  108.     status and result byte for default handler is at address 0050:0000
  109.       00h not active
  110.       01h PrtSc in progress
  111.       FFh last PrtSc encountered error
  112. SeeAlso: INT 10/AH=12h/BL=20h
  113. ----------05---------------------------------
  114. INT 05 - internal hardware - BOUND CHECK FAILED (80186+)
  115.    Generated by BOUND instruction when the value to be tested is less than the
  116.    indicated lower bound or greater than the indicated upper bound.  Returning
  117.    from this interrupt re-executes the failing BOUND instruction.
  118. ----------06---------------------------------
  119. INT 06 - internal hardware - UNDEFINED OPCODE (80286+)
  120. ----------07---------------------------------
  121. INT 07 - internal hardware - NO MATH UNIT AVAILABLE (80286+)
  122.    automatically called if a coprocessor instruction is encountered when no
  123.    coprocessor is installed
  124. Note:    can be used to emulate a numeric coprocessor in software
  125. SeeAlso: INT 09"MATH UNIT PROTECTION"
  126. ----------08---------------------------------
  127. INT 08 - IRQ0 - TIMER INTERRUPT
  128.    Generated 18.2 times per second, this interrupt is used to keep the
  129.    time-of-day clock updated.  Programs which need to be invoked regularly
  130.    should use INT 1C unless they need to reprogram the timer while still
  131.    keeping the time-of-day clock running at the proper rate.
  132. SeeAlso: INT 1C, INT 50
  133. ----------08---------------------------------
  134. INT 08 - internal hardware - DOUBLE FAULT (80286+ protected mode)
  135.    Called when multiple exceptions occur on one instruction, or an exception
  136.    occurs in an exception handler.  If an exception occurs in the double fault
  137.    handler, the CPU goes into SHUTDOWN mode (which circuitry in the PC/AT
  138.    converts to a reset).
  139. ----------09---------------------------------
  140. INT 09 - IRQ1 - KEYBOARD INTERRUPT
  141.    Generated when data is received from the keyboard.  This is normally a scan
  142.    code, but may also be an ACK or NAK of a command on AT-class keyboards.
  143.    If the BIOS supports an enhanced (101/102-key) keyboard, it calls
  144.      INT 15/AH=4Fh after reading the scan code from the keyboard and before
  145.      further processing.
  146.    The interrupt handler performs the following actions for certain special
  147.      keystrokes:
  148.     Ctrl-Break    invoke INT 1B, set flag at 0040h:0071h
  149.     SysRq        invoke INT 15/AH=85h
  150.     Ctrl-Numlock    place system in a tight wait loop
  151.     Ctrl-Alt-Del    jump to BIOS startup code (either F000h:FFFFh or the
  152.               destination of the jump at that address)
  153. SeeAlso: INT 15/AH=4Fh, INT 15/AH=85h, INT 16, INT 1B, INT 51
  154. ----------09---------------------------------
  155. INT 09 - internal hardware - MATH UNIT PROTECTION FAULT (80286,80386 protected)
  156. SeeAlso: INT 07"NO MATH UNIT"
  157. ----------09---------------------------------
  158. INT 09 - internal hardware - RESERVED BY Intel (80486 protected mode)
  159. Note:    this exception has been moved to INT 0D
  160. SeeAlso: INT 09"MATH", INT 0D
  161. ----------0A---------------------------------
  162. INT 0A - IRQ2 - EGA VERTICAL RETRACE
  163. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  164.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  165.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  166.       connects to the slave 8259.  The BIOS redirects the interrupt for
  167.       IRQ9 back here.
  168.     under DESQview, only the INT 15h vector and BASIC segment address (the
  169.       word at 0000h:0510h) may be assumed to be valid for the handler's
  170.       process
  171. SeeAlso: INT 52, INT 71
  172. ----------0A---------------------------------
  173. INT 0A - IRQ2 - Tandy 1000 HARD DISK
  174. SeeAlso: INT 52
  175. ----------0A---------------------------------
  176. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  177. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  178.       a jumper-selectable IRQ, but software and hardware generally defaults
  179.       to IRQ2
  180. SeeAlso: INT 52
  181. ----------0A---------------------------------
  182. INT 0A - internal hardware - INVALID TASK STATE SEGMENT (80286+ protected-mode)
  183. ----------0B---------------------------------
  184. INT 0B - IRQ3 - COM2 INTERRUPT
  185. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  186.       alternate
  187.     on PS/2's, COM2 through COM8 share this interrupt on many PC's, COM4
  188.       shares this interrupt
  189. SeeAlso: INT 0C, INT 53
  190. ----------0B---------------------------------
  191. INT 0B - internal hardware - NOT PRESENT (80286+ protected-mode)
  192.    Generated when loading a segment register if the segment descriptor
  193.    indicates that the segment is not currently in memory.  May be used to
  194.    implement virtual memory.
  195. SeeAlso: INT 0E"hardware"
  196. ----------0C---------------------------------
  197. INT 0C - IRQ4 - COM1 INTERRUPT
  198. Note:    on many PC's, COM3 shares this interrupt
  199. SeeAlso: INT 0B, INT 54
  200. ----------0C---------------------------------
  201. INT 0C - internal hardware - STACK FAULT (80286+)
  202.    Generated on stack overflow/underflow in protected mode.
  203.    Generated on accessing a word operand at SS:FFFFh in real mode.
  204.  
  205. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  206.       PC AT and compatibles, external circuitry generates a reset on
  207.       shutdown.
  208. ----------0C---------------------------------
  209. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  210.    Call offset 100h in the interrupt handler's segment with
  211.        AH = function
  212.         03h update screen
  213.         05h select next session
  214.             AL = session number (00h-03h)
  215.         Return: AL = session type code
  216.                 00h not active
  217.                 01h display session
  218.                 02h printer session
  219.                 FEh invalid session number
  220.             DS = requested session's data segment (0 if not active)
  221. Return: ???
  222.  
  223. Format of emulator's data area (offset from interrupt handler's segment):
  224. Offset    Size    Description
  225. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  226.         last zerod
  227. 13Fh    BYTE    bit flags for status line indicators turned off since this
  228.         byte last set to FFh
  229. 140h    WORD    offset of EBCDIC to ASCII translation
  230. 146h    WORD    offset of EBCDIC screen buffer
  231. 148h    WORD    offset of EC (engineering change) level signature
  232. 150h    BYTE    "KEYI"
  233. 151h    BYTE    5250 key scan code to be sent to remote
  234. 15Bh    BYTE    "SYSAV"
  235. 15Dh    BYTE    5250 cursor column
  236. 15Eh    BYTE    5250 cursor row
  237. 167h    BYTE    "DVCTAD"
  238. 178h    BYTE    "FLAGS"
  239. 184h    BYTE    "SESSNOAD"
  240. 193h    BYTE    "STNAD"
  241. 198h    BYTE    "NSDS"
  242. ----------0D---------------------------------
  243. INT 0D - IRQ5 - FIXED DISK (PC), LPT2 (AT/PS)
  244. Note:    under DESQview, only the INT 15h vector and BASIC segment address (the
  245.       word at 0000h:0510h) may be assumed to be valid for the handler's
  246.       process
  247. SeeAlso: INT 0E, INT 55
  248. ----------0D---------------------------------
  249. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  250. SeeAlso: INT 55
  251. ----------0D---------------------------------
  252. INT 0D - internal hardware - GENERAL PROTECTION VIOLATION (80286+)
  253.    Called in real mode when
  254.     an instruction accesses a word operand located at offset FFFFh
  255.     a PUSH MEM or POP MEM instruction contains an invalid bit encoding in
  256.       the second byte
  257.     an instruction exceeds the maximum length allowed (10 bytes for 80286,
  258.       15 bytes for 80386)
  259.     an instruction wraps from offset FFFFh to offset 0000h
  260.    Called on 80486 protected-mode floating-point protection fault
  261. SeeAlso: INT 09"80486", INT 0C"STACK"
  262. ----------0E---------------------------------
  263. INT 0E - IRQ6 - DISKETTE INTERRUPT
  264. Note:    generated by floppy disk controller on completion of an operation
  265. SeeAlso: INT 0D, INT 56
  266. ----------0E---------------------------------
  267. INT 0E - internal hardware - PAGE FAULT (80386+ native mode)
  268.    used to implement virtual memory
  269. SeeAlso: INT 0B"hardware"
  270. ----------0F---------------------------------
  271. INT 0F - IRQ7 - PRINTER INTERRUPT
  272.    Generated by the LPT1 printer adapter when printer becomes ready.
  273. Notes:    most printer adapters do not reliably generate this interrupt.
  274.     the 8259 interrupt controller generates an interrupt corresponding to
  275.       IRQ7 when an error condition occurs
  276. SeeAlso: INT 57
  277. ----------10---------------------------------
  278. INT 10 - internal hardware - COPROCESSOR ERROR (80286+)
  279. Notes:    generated by the CPU when the -ERROR pin is asserted by the coprocessor
  280.     AT's and clones usually wire the coprocessor to use IRQ13, but not all
  281.       get it right
  282. SeeAlso: INT 09"hardware", INT 75
  283. ----------1000-------------------------------
  284. INT 10 - VIDEO - SET VIDEO MODE
  285.     AH = 00h
  286.     AL = mode (graphics mode if graphics resolution listed)
  287.          text  pixel graphic colors disp scrn  system
  288.          resol    box  resoltn        page addr
  289.        00h = 40x25    8x8           B&W     8 B800 CGA
  290.            = 40x25    8x14           B&W     8 B800 ATI VIP
  291.        01h = 40x25    8x8        16     8 B800 CGA
  292.            = 40x25    8x14        16     8 B800 ATI VIP
  293.        02h = 80x25    8x8           B&W     4 B800 CGA
  294.            = 80x25    8x8           B&W     8 B800 EGA,MCGA,VGA
  295.            = 80x25    8x14           B&W     8 B800 ATI VIP
  296.        03h = 80x25    8x8        16     4 B800 CGA
  297.            = 80x25    8x8        16     8 B800 EGA,MCGA,VGA
  298.        04h = 40x25    8x8   320x200     4     1 B800 CGA
  299.        05h = 40x25    8x8   320x200 4 gray   1 B800 CGA
  300.        06h = 80x25    8x8   640x200  B&W     1 B800 CGA
  301.        07h = 80x25    9x14          mono     1 B000 MDA,Hercules
  302.            = 80x25                   8      EGA,VGA
  303.            = 80x25    9x14          mono     B000 ATI VIP
  304.        08h = 20x25    8x8   160x200    16     B800 PCjr,Tandy 1000
  305.            = 132x25 8x8        16     B800 ATI EGA/VGA Wonder **
  306.            = 132x25 8x8          mono     B000 ATI EGA/VGA Wonder **
  307.        09h = 40x25    8x8   320x200    16     B800 PCjr,Tandy 1000
  308.        0Ah = 80x25    8x8   640x200     4     B800 PCjr,Tandy 1000
  309.        0Bh = reserved (used internally by EGA BIOS)
  310.        0Ch = reserved (used internally by EGA BIOS)
  311.        0Dh = 40x25    8x8   320x200    16     8 A000 EGA,VGA
  312.        0Eh = 80x25    8x8   640x200    16     4 A000 EGA,VGA
  313.        0Fh = 80x25    8x14  640x350 mono     2 A000 EGA,VGA
  314.        10h = 80x25    8x14  640x350 4or16    2 A000 EGA,VGA
  315.        11h = 80x30    8x16  640x480 mono     A000 VGA,MCGA,ATI EGA,ATI VIP
  316.        12h = 80x30    8x16  640x480  16/256k     A000 VGA,ATI VIP
  317.            = 80x30    8x16  640x480  16/64     A000 ATI EGA Wonder
  318.        13h = 40x25    8x8   320x200 256/256k     A000 VGA,MCGA,ATI VIP
  319.        14h = 80x25    8x8   640x200              Lava Chrome II EGA
  320.            =          640x400    16          Tecmar VGA/AD
  321.        15h = 80x25    8x14  640x350              Lava Chrome II EGA
  322.        16h = 80x25    8x14  640x350              Lava Chrome II EGA
  323.            =          800x600    16          Tecmar VGA/AD
  324.        17h = 80x34    8x14  640x480              Lava Chrome II EGA
  325.            = 132x25                      Tecmar VGA/AD
  326.        18h = 132x44 8x8          mono          Tseng Labs EVA
  327.            = 132x44 8x8          16/256   2 B000 Tseng ET4000 chipset
  328.            = 80x34    8x14  640x480              Lava Chrome II EGA
  329.            =         1024x768    16          Tecmar VGA/AD
  330.        19h = 132x25 8x14          mono          Tseng Labs EVA
  331.            = 132x25 8x14          16/256   4 B000 Tseng ET4000 chipset
  332.        1Ah = 132x28 8x13          mono          Tseng Labs EVA
  333.            = 132x28 8x13          16/256   4 B000 Tseng ET4000 chipset
  334.            =          640x350  256          Tecmar VGA/AD
  335.        1Bh =          640x400  256          Tecmar VGA/AD
  336.        1Ch =          640x480  256          Tecmar VGA/AD
  337.        1Dh =          800x600  256          Tecmar VGA/AD
  338.        21h = 80x43    8x8   720x348 mono          DESQview 2.x+Hercules ***
  339.        22h = 132x44 8x8                  Tseng Labs EVA
  340.            = 132x44 8x8          16/256   2 B800 Tseng ET4000 chipset
  341.            = 132x44 8x8                  Ahead Systems EGA2001
  342.            = 132x43                      Allstar Peacock (VGA)
  343.            = 132x44         16          Orchid Prodesigner VGA
  344.            = 80x43    8x8   720x348 mono          DESQview 2.x+Hercules ***
  345.        23h = 132x25 6x14                  Tseng Labs EVA
  346.            = 132x25 8x14          16/256   4 B800 Tseng ET4000 chipset
  347.            = 132x25 8x14                  Ahead Systems EGA2001
  348.            = 132x25 8x8        16     B800 ATI EGA Wonder,ATI VIP
  349.            = 132x28                      Allstar Peacock (VGA)
  350.            = 132x28            16          Orchid Prodesigner VGA
  351.        24h = 132x28 6x13                  Tseng Labs EVA
  352.            = 132x28 8x13          16/256   4 B800 Tseng ET4000 chipset
  353.            = 132x25                      Allstar Peacock (VGA)
  354.            = 132x25         16          Orchid Prodesigner VGA
  355.        25h = 80x60    8x8   640x480              Tseng Labs EVA
  356.            = 80x60    8x8   640x480 16/256   1 A000 Tseng ET4000 chipset
  357.            =          640x480    16          VEGA VGA
  358.            = 80x60    8x8   640x480    16     A000 Orchid Prodesigner VGA
  359.        26h = 80x60    8x8                  Tseng Labs EVA
  360.            = 80x60    8x8          16/256   2 B800 Tseng ET4000 chipset
  361.            = 80x60    8x8   640x480              Ahead Systems EGA2001
  362.            = 80x60                      Allstar Peacock (VGA)
  363.            = 80x60             16          Orchid ProDesigner VGA
  364.        27h =          720x512    16          VEGA VGA
  365.            =          720x512    16          Genoa
  366.            = 132x25 8x8          mono     B000 ATI EGA Wonder,ATI VIP
  367.        28h = ???x???                  VEGA VGA
  368.        29h =          800x600    16          VEGA VGA
  369.            = 100x37 8x16  800x600    16     A000 Orchid
  370.            =          800x600    16     A000 STB,Genoa,Sigma
  371.            =          800x600    16          Allstar Peacock (VGA)
  372.            = 100x37 8x16  800x600 16/256   1 A000 Tseng ET4000 chipset
  373.        2Ah = 100x40                   Allstar Peacock (VGA)
  374.            = 100x40 8x16        16          Orchid Prodesigner VGA
  375.            = 100x40 8x15          16/256   4 B800 Tseng ET4000 chipset
  376.        2Dh =          640x350  256          VEGA VGA
  377.            =          640x350 256/256k     A000 Orchid, Genoa, STB
  378.            = 80x25    8x14  640x350 256/256k 1 A000 Tseng ET4000 chipset
  379.        2Eh =          640x480  256          VEGA VGA
  380.            = 80x30    8x16  640x480 256/256k     A000 Orchid
  381.            =          640x480 256/256k     A000 STB,Genoa,Sigma
  382.            = 80x30    8x16  640x480 256/256k 1 A000 Tseng ET4000 chipset
  383.        2Fh =          720x512  256          VEGA VGA
  384.            =          720x512  256          Genoa
  385.            = 80x25    8x16  640x400 256/256k 1 A000 Tseng ET4000 chipset
  386.        30h =          800x600  256          VEGA VGA
  387.            = 100x37 8x16  800x600 256/256k     A000 Orchid 
  388.            =          800x600 256/256k     A000 STB,Genoa,Sigma
  389.            =          720x350     2          3270 PC
  390.            =          800x600  256          Cardinal
  391.            =          ???x???         B800 AT&T 6300
  392.            = 100x37 8x16  800x600 256/256k 1 A000 Tseng ET4000 chipset
  393.        33h = 132x44 8x8        16     B800 ATI EGA Wonder,ATI VIP
  394.        36h =          960x720    16          VEGA VGA
  395.            =          960x720    16          STB
  396.        37h =         1024x768    16          VEGA VGA
  397.            = 128x48 8x16 1024x768    16     A000 Orchid
  398.            =         1024x768    16     A000 STB,Genoa,Sigma
  399.            = 132x44 8x8          mono     B800 ATI EGA Wonder,ATI VIP
  400.        38h =         1024x768  256          STB VGA/EM-16 Plus (1MB)
  401.            = 128x48 8x16 1024x768 256/256k 1 A000 Tseng ET4000 chipset
  402.        40h = 80x25    8x16  640x400     2     1 B800 AT&T 6300, AT&T VDC600
  403.            = 80x25    8x16  640x400     2     1 B800 Compaq Portable
  404.            = 80x43                      VEGA VGA, Tecmar VGA/AD
  405.            = 80x43                      Video7 V-RAM VGA
  406.            = 80x43                      Tatung VGA
  407.        41h =          640x200    16     1      AT&T 6300
  408.            = 132x25                   VEGA VGA
  409.            = 132x25                      Tatung VGA
  410.            = 132x25                      Video7 V-RAM VGA
  411.        42h = 80x25    8x16  640x400    16          AT&T 6300, AT&T VDC600
  412.            = 132x43                   VEGA VGA
  413.            = 132x43                      Tatung VGA
  414.            = 132x43                      Video7 V-RAM VGA
  415.        43h = unsupported  640x200 of 640x400 viewport  AT&T 6300
  416.            = 80x60                      VEGA VGA
  417.            = 80x60                      Tatung VGA
  418.            = 80x60                      Video7 V-RAM VGA
  419.        44h = disable VDC and DEB output          AT&T 6300
  420.            = 100x60                   VEGA VGA
  421.            = 100x60                   Tatung VGA
  422.            = 100x60                      Video7 V-RAM VGA
  423.        45h = 132x28                      Tatung VGA
  424.            = 132x28                      Video7 V-RAM VGA
  425.        46h = 100x40 8x15  800x600     2          AT&T VDC600
  426.        47h = 100x37 8x16  800x600    16          AT&T VDC600
  427.        48h = 80x50    8x8   640x400     2     B800 AT&T 6300, AT&T VDC600
  428.        49h = 80x30    8x16  640x480              Lava Chrome II EGA
  429.        4Dh = 120x25                   VEGA VGA
  430.        4Eh = 120x43                   VEGA VGA
  431.        4Fh = 132x25                   VEGA VGA
  432.        50h = 80x30    8x16  640x480    16          Paradise EGA-480
  433.            = 80x30    8x16          16/256k     B800 Trident TVGA 8800
  434.            = 80x34                      Lava Chrome II EGA
  435.            = 80x43              mono          VEGA VGA
  436.            =          640x480 mono???          Taxan 565 EGA
  437.            = 132x25 9x14          mono          Ahead Systems EGA2001
  438.            = 132x25 8x14        16     8 B800 OAK Technologies VGA-16
  439.        51h = 80x30    8x16                  Paradise EGA-480
  440.            = 80x30                      Lava Chrome II EGA
  441.            = 80x34    8x14  640x480    16          ATI EGA Wonder
  442.            = 80x43    8x11          16/256k     B800 Trident TVGA 8800
  443.            = 132x25           mono          VEGA VGA
  444.            = 132x43 8x8        16     5 B800 OAK Technologies VGA-16
  445.        52h = 80x60                      Lava Chrome II EGA
  446.            = 80x60    8x8          16/256k     B800 Trident TVGA 8800
  447.            = 94x29    8x14  752x410    16          ATI EGA Wonder
  448.            = 100x75    8x8   800x600    16     1 A000 OAK Technologies VGA-16
  449.            = 132x43           mono          VEGA VGA
  450.            = 132x44 9x8          mono          Ahead Systems EGA2001
  451.        53h = 100x40 8x14  800x560    16          ATI EGA Wonder,ATI VIP
  452.            = 132x25 8x14          16/256k     B800 Trident TVGA 8800
  453.            = 132x43                   Lava Chrome II EGA
  454.        54h = 100x42 8x14  800x600    16     A000 ATI EGA Wonder, VGA Wondr
  455.            = 132x25                   Lava Chrome II EGA
  456.            = 132x30 8x16          16/256k     B800 Trident TVGA 8800
  457.            = 132x43 8x8                  Paradise EGA-480
  458.            = 132x43 7x9          16/256k     B800 Paradise VGA
  459.            = 132x43 8x9          16/256k     B800 Paradise VGA on multisync
  460.            = 132x43                      Taxan 565 EGA
  461.            = 132x43                      AST VGA Plus
  462.            = 132x43                      Hewlett-Packard D1180A
  463.            = 132x43 7x9        16          AT&T VDC600
  464.        55h = 80x66    8x8          16/256k     A000 ATI VIP
  465.            = 94x29    8x14  752x410              Lava Chrome II EGA
  466.            = 128x48 8x16 1024x768 16/256k     A000 ATI VGA Wonder v4+  *!
  467.            = 132x25 8x14                  Paradise EGA-480
  468.            = 132x25 7x16          16/256k     B800 Paradise VGA
  469.            = 132x25 8x16          16/256k     B800 Paradise VGA on multisync
  470.            = 132x25                      Taxan 565 EGA
  471.            = 132x25                      AST VGA Plus
  472.            = 132x25                      Hewlett-Packard D1180A
  473.            = 132x25 7x16        16          AT&T VDC600
  474.            = 132x43 8x11          16/256k     B800 Trident TVGA 8800
  475.        56h = 132x43 8x8          3???     2 B000 NSI Smart EGA+
  476.            = 132x43 7x9         4     B000 Paradise VGA
  477.            = 132x43 8x9         4     B000 Paradise VGA on multisync
  478.            = 132x43           mono          Taxan 565 EGA
  479.            = 132x43 7x9         2          AT&T VDC600
  480.            = 132x60 8x8          16/256k     B800 Trident TVGA 8800
  481.        57h = 132x25 8x14          3???     4 B000 NSI Smart EGA+
  482.            = 132x25 7x16         4     B000 Paradise VGA
  483.            = 132x25 8x16         4     B000 Paradise VGA on multisync
  484.            = 132x25           mono          Taxan 565 EGA
  485.            = 132x25 7x16         2          AT&T VDC600
  486.            = 132x25 9x14          16/256k     B800 Trident TVGA 8800
  487.        58h = 100x75 8x8   800x600 16/256k     A000 Paradise VGA
  488.            = 100x75 8x8   800x600    16          AT&T VDC600
  489.            = 80x33    8x14        16     B800 ATI EGA Wonder,ATI VIP
  490.            =          800x600    16          AST VGA Plus, Compaq VGA
  491.            =          800x600    16          Dell VGA
  492.            =          800x600    16          Hewlett-Packard D1180A
  493.            = 132x30 9x16          16/256k     B800 Trident TVGA 8800
  494.        59h = 100x75 8x8   800x600     2     A000 Paradise VGA
  495.            = 100x75 8x8   800x600     2          AT&T VDC600
  496.            = 80x66    8x8          16/256k     A000 ATI VIP
  497.            =          800x600     2          AST VGA Plus, Compaq VGA
  498.            =          800x600     2          Dell VGA
  499.            =          800x600     2          Hewlett-Packard D1180A
  500.            = 132x43 9x11          16/256k     B800 Trident TVGA 8800
  501.        5Ah = 132x60 9x8          16/256k     B800 Trident TVGA 8800
  502.        5Bh =          800x600    16          Maxxon, SEFCO TVGA, Imtec
  503.            =          640x350  256          Genoa 6400
  504.            = 80x30    8x16             B800 ATI VGA Wonder (undoc)
  505.            = 100x75 8x8   800x600 16/256k     A000 Trident TVGA 8800
  506.        5Ch =          640x400  256          Logix, ATI Prism Elite
  507.            =          640x400  256          Maxxon, SEFCO TVGA, Imtec
  508.            =          640x400  256          Zymos Poach
  509.            = 80x25    8x16  640x400  256     A000 Trident TVGA 8800
  510.            =          640x480  256          Genoa 6400
  511.        5Dh =          640x480  256          Logix, ATI Prism Elite
  512.            =          640x480  256          Maxxon, SEFCO TVGA, Imtec
  513.            =          640x480  256          Zymos Poach
  514.            = 80x30    8x16  640x480  256     A000 Trident TVGA 8800 (512K)
  515.        5Eh =          640x400  256          Paradise VGA,VEGA VGA
  516.            =          640x400  256          AST VGA Plus
  517.            =          640x400  256          Compaq VGA, Dell VGA
  518.            = 80x25    8x16  640x400  256          AT&T VDC600
  519.            =          800x600    16          Logix, ATI Prism Elite
  520.            =          800x600  256          Genoa 6400
  521.            =          800x600  256          Zymos Poach
  522.        5Fh =          640x480  256          Paradise VGA
  523.            =          640x480  256          AST VGA Plus
  524.            =          640x480  256          Compaq VGA, Dell VGA
  525.            =          640x480  256          Hewlett-Packard D1180A
  526.            = 80x30    8x16  640x480  256          AT&T VDC600 (512K)
  527.            =         1024x768    16          Logix, ATI Prism Elite
  528.            =         1024x768    16          Maxxon, Genoa 6400, Imtec
  529.            =         1024x768    16          Zymos Poach
  530.            = 128x48 8x16 1024x768 16/256k     A000 Trident TVGA 8800 (512K)
  531.        60h = 80x???       ???x400              Corona/Cordata BIOS 4.10+
  532.            =          752x410              VEGA VGA
  533.            =          752x410    16          Tatung VGA
  534.            =          752x410    16          Video7 V-RAM VGA
  535.            =          640x400  256          Ahead B
  536.        61h =          ???x400              Corona/Cordata BIOS 4.10+
  537.            =          720x540              VEGA VGA
  538.            =          720x540    16          Tatung VGA
  539.            =          720x540    16          Video7 V-RAM VGA
  540.            =          640x400  256     A000 ATI VGA Wonder
  541.            =          640x480  256          Ahead B
  542.            = 96x64    8x16 768x1024 16/256k     A000 Trident TVGA 8800 (512K)
  543.        62h =          800x600              VEGA VGA
  544.            =          800x600    16          Tatung VGA
  545.            =          800x600    16          Video7 V-RAM VGA
  546.            =          640x480  256     A000 ATI VGA Wonder
  547.            =          800x600  256          Ahead B
  548.        63h =         1024x768     2          Video7 V-RAM VGA
  549.            =          800x600  256     A000 ATI VGA Wonder
  550.            =         1024x768  256          Ahead B (1MB)
  551.        64h =         1024x768     4          Video7 V-RAM VGA
  552.        65h =         1024x768    16          Video7 V-RAM VGA
  553.            =         1024x768    16     A000 ATI VGA Wonder
  554.        66h =          640x400  256          Tatung VGA
  555.            =          640x400  256          Video7 V-RAM VGA
  556.        67h =          640x480  256          Video7 V-RAM VGA
  557.            =         1024x768     4     A000 ATI VGA Wonder
  558.        69h =          720x540  256          Video7 V-RAM VGA
  559.        6Ah =          800x600    16          VESA standard interface
  560.            =          800x600    16          Ahead B, Genoa 6400
  561.            =          800x600    16          Zymos Poach
  562.            = 100x42 8x14  800x600         A000 ATI VGA Wonder (undoc)
  563.        70h =          800x600    16          Cardinal
  564.            = extended mode set (see AX=0070h)     Everex Micro Enhancer EGA
  565.        71h = 100x35 8x16  800x600 16of64     A000 NSI Smart EGA+
  566.            =          960x720    16          Cardinal
  567.        72h =         1024x768    16          Cardinal
  568.        74h =          640x400     2     B800 Toshiba 3100 AT&T mode
  569.            =         1024x768    16          Ahead B
  570.        78h =          640x400  256          STB VGA/EM-16 Plus
  571.            =          640x400  256          Cardinal
  572.        79h =          640x480  256          Cardinal
  573.        7Ah =          720x540  256          Cardinal
  574.        7Ch =          512x512    16          Genoa
  575.        7Dh =          512x512  256          Genoa
  576.        7Eh = special mode set (see AX=007Eh)      Paradise VGA, AT&T VDC600
  577.        7Fh = special function set (see AX=007Fh)  Paradise VGA, AT&T VDC600
  578.        82h = 80x25               B&W          AT&T VDC overlay mode *
  579.        83h = 80x25                      AT&T VDC overlay mode *
  580.        86h =          640x200  B&W          AT&T VDC overlay mode *
  581.        C0h =          640x400  2/prog pallet  AT&T VDC overlay mode *
  582.        C4h = disable output               AT&T VDC overlay mode *
  583.        D0h =          640x400     2     B800 DEC VAXmate AT&T mode
  584.  
  585.  *  for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  586.       40h, or 44h
  587.  ** for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  588.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  589.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  590.       color) 132x25 character mode.
  591.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  592.       resident
  593.  *** DESQview intercepts calls to change into these two modes (21h is page 0,
  594.       22h is page 1) even if there is no Hercules graphics board installed
  595.  *! ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  596.  
  597. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  598.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  599.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA
  600. SeeAlso: AX=0070h,007Eh,6F05h
  601. ----------100070-----------------------------
  602. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  603.     AX = 0070h
  604.     BL = mode (graphics mode if graphics resolution listed)
  605.          text  pixel  graphic colr disp scrn  monitor    adapter
  606.          resol    box   resoltn       page addr
  607.        00h =          640x480  16          multsync    EGA,VGA
  608.        01h =          752x410  16          multsync    EGA,VGA
  609.        02h =          800x600  16          multsync    EGA,VGA
  610.        03h = 80x34                      multsync    EGA,VGA
  611.        04h = 80x60                      multsync    EGA,VGA
  612.        05h = 94x29                      multsync    EGA only
  613.        06h = 94x51                      multsync    EGA only
  614.        07h = 100x43 8x14           16            VGA only
  615.        08h = 100x75 8x8           16            VGA only
  616.        09h = 80x44                      EGA    EGA only
  617.        0Ah = 132x25                   EGA    EGA,VGA
  618.        0Bh = 132x44                   EGA    EGA,VGA
  619.        0Ch = 132x25                   CGA    EGA only
  620.        0Dh = 80x44                      mono    EGA only
  621.        0Eh = 132x25                   mono
  622.        0Fh = 132x44                   mono
  623.        10h = reserved
  624.        11h =         1280x350    4            EGA only
  625.        12h =         1280x600    4            EGA only
  626.        13h =          640x350 256            EGA only
  627.        14h =          640x400 256
  628.        15h =          512x480 256
  629.        16h = 80x30    8x16          256            VGA only
  630.        18h = 100x27 8x16           16            VGA only
  631.        20h =         1024x768  16            Everex 678 only
  632.        21h = 160x64 8x16 1280x1024 16            1MB VGA only
  633.        30h =          640x480 256            Everex 678 only
  634.        31h =          800x600 256            Everex 678 only
  635.        32h = 128x48 8x16 1024x768 256            1MB VGA only
  636.        40h = 132x30 8x16           16            VGA only
  637.        50h = 132x32 8x16          mono            VGA only
  638. ----------10007E-----------------------------
  639. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  640.     AX = 007Eh
  641.     BX = The horizontal dimension of the mode desired
  642.     CX = The vertical dimension of the mode desired
  643.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  644.     DX = The number of colors of the mode desired
  645.          (use 0 for monochrome modes)
  646. Return: BH = 7Eh if successful (Paradise VGA)
  647.     AL = 7Eh if successful (AT&T VDC600)
  648. SeeAlso: AH=00h,AX=0070h,007Fh,6F05h
  649. ----------10007F-----------------------------
  650. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  651.     AX = 007Fh
  652.     BH = 00h  set VGA operation
  653.     BH = 01h  set non-VGA operation
  654.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation.
  655.         monochrome mode 7 will set non-VGA MDA/Hercules operation.
  656.     BH = 02h  query mode status
  657.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode.
  658.             CH = total video RAM size in 64k byte units.
  659.             CL = video RAM used by the current mode.
  660.     BH = 03h  lock current mode
  661.         allows current mode (VGA or non-VGA) to survive re-boot.
  662.     BH = 04h  enter CGA mode (AT&T VDC600 only)
  663.     BH = 05h  enter MDA mode (AT&T VDC600 only)
  664.     BH = 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  665.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  666.         BL = value to set in the paradise register.
  667.     BH = 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  668.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  669.         Return: BL = value of the paradise register.
  670.             BH = 7Fh if successful.
  671. Return: AL = 7Fh if successful (AT&T VDC600)
  672. SeeAlso: AX=007Eh
  673. ----------1001-------------------------------
  674. INT 10 - VIDEO - SET CURSOR CHARACTERISTICS
  675.     AH = 01h
  676.     CH bits 0-4 = start line for cursor in character cell
  677.        bits 5-6 = blink attribute
  678.              (00=normal, 01=invisible, 10=slow, 11=fast on CGA/mono)
  679.              (00=normal, other=invisible on EGA/VGA)
  680.     CL bits 0-4 = end line for cursor in character cell
  681. Note:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  682.       returns unmapped cursor shape
  683. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  684.       is not equal to the current video mode
  685. SeeAlso: AH=03h
  686. ----------1002-------------------------------
  687. INT 10 - VIDEO - SET CURSOR POSITION
  688.     AH = 02h
  689.     DH,DL = row, column (0,0 = upper left)
  690.     BH = page number
  691.         0 in graphics modes
  692.         0-3 in modes 2&3
  693.         0-7 in modes 0&1
  694. SeeAlso: AH=03h
  695. ----------1003-------------------------------
  696. INT 10 - VIDEO - READ CURSOR POSITION
  697.     AH = 03h
  698.     BH = page number
  699.         0 in graphics modes
  700.         0-3 in modes 2&3
  701.         0-7 in modes 0&1
  702. Return: DH,DL = row,column
  703.     CH = cursor start line
  704.     CL = cursor end line
  705. SeeAlso: AH=01h,02h
  706. ----------1004-------------------------------
  707. INT 10 - VIDEO - READ LIGHT PEN POSITION (all but PS)
  708.     AH = 04h
  709. Return: AH = 00h light pen switch not activated
  710.        = 01h light pen values in registers
  711.         DH,DL = row,column of current position
  712.         CH = raster line (0-199) (EGA) old graphics modes
  713.         CX = (EGA) raster line (0-nnn) new graphics modes
  714.         BX = pixel column (0-319 or 0-639)
  715. ----------1005-------------------------------
  716. INT 10 - VIDEO - SELECT DISPLAY PAGE
  717.     AH = 05h
  718.     AL = display page
  719.         0-7  for modes 0 & 1
  720.         0-3  for modes 2 & 3
  721. SeeAlso: AH=0Fh
  722. ----------1005-------------------------------
  723. INT 10 - PCjr VIDEO - CRT/CPU PAGE REGISTERS
  724.     AH = 05h
  725.     AL =
  726.         80h read CRT/CPU page registers
  727.         81h set CPU page register
  728.         BL = new page register value
  729.         82h set CRT page register
  730.         BH = new page register value
  731.         83h set both display registers
  732.         BL = new CPU page register
  733.         BH = new CRT page register
  734. Return: BH = CRT page register
  735.     BL = CPU page register
  736. ----------1005-------------------------------
  737. INT 10 - VIDEO - GRAPHICS BITMAP BUFFER (Corona/Cordata BIOS v4.10+)
  738.     AH = 05h
  739.     AL =
  740.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  741.         BX = segment of buffer
  742.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  743.         Return: DX = segment of graphics bitmap buffer
  744. ----------1006-------------------------------
  745. INT 10 - VIDEO - SCROLL PAGE UP
  746.     AH = 06h
  747.     AL = number of lines to scroll window (0 = blank whole window)
  748.     BH = attributes to be used on blanked lines
  749.     CH,CL = row,column of upper left corner of window to scroll
  750.     DH,DL = row,column of lower right corner of window
  751. Warning: some implementations have a bug which destroys BP
  752. SeeAlso: AH=07h,72h,73h
  753. ----------1007-------------------------------
  754. INT 10 - VIDEO - SCROLL PAGE DOWN
  755.     AH = 07h
  756.     AL = number of lines to scroll window (0 = blank whole window)
  757.     BH = attributes to be used on blanked lines
  758.     CH,CL = row,column of upper left corner of window to scroll
  759.     DH,DL = row,column of lower right corner of window
  760. Warning: some implementations have a bug which destroys BP
  761. SeeAlso: AH=06h,72h,73h
  762. ----------1008-------------------------------
  763. INT 10 - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION
  764.     AH = 08h
  765.     BH = display page
  766. Return: AL = character
  767.     AH = attribute of character (alpha modes)
  768.         bit 7: blink
  769.         bits 6-4: background color
  770.             000 black
  771.             001 blue
  772.             010 green
  773.             011 cyan
  774.             100 red
  775.             101 magenta
  776.             110 brown
  777.             111 white
  778.         bits 3-0: foreground color
  779.             0000 black     1000 dark gray
  780.             0001 blue     1001 light blue
  781.             0010 green     1010 light green
  782.             0011 cyan     1011 light cyan
  783.             0100 red     1100 light red
  784.             0101 magenta     1101 light magenta
  785.             0110 brown     1110 yellow
  786.             0111 light gray     1111 white
  787. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  788.       underlined 
  789.     the blink bit may be reprogrammed to enable intense background colors
  790.       using AX=1003h or by programming the CRT controller
  791. SeeAlso: AH=09h,AX=1003h
  792. ----------1009-------------------------------
  793. INT 10 - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POSITION
  794.     AH = 09h
  795.     AL = character
  796.     BH = display page
  797.     BL = attributes of character (alpha modes) or color (graphics modes)
  798.          if bit 7 set in graphics mode, character is xor'ed onto screen
  799.     CX = number of times to write character
  800. Note:    all characters are displayed, including CR, LF, and BS
  801. SeeAlso: AH=08h,0Ah
  802. ----------100A-------------------------------
  803. INT 10 - VIDEO - WRITE CHARACTERS ONLY AT CURSOR POSITION
  804.     AH = 0Ah
  805.     AL = character
  806.     BH = display page - alpha mode
  807.     BL = color of character (graphics mode, PCjr only)
  808.          if bit 7 set in graphics mode, character is xor'ed onto screen
  809.     CX = number of times to write character
  810.          (EGA) in graphics modes, replication count in CX works correctly
  811.          only if all character written are contains on the same row
  812. Note:    all characters are displayed, including CR, LF, and BS
  813. SeeAlso: AH=08h,09h
  814. ----------100B-------------------------------
  815. INT 10 - VIDEO - SET COLOR PALETTE
  816.     AH = 0Bh
  817.     BH = 00h
  818.         BL = border color (0-15) (text modes)
  819.          border color and background color (graphics modes)
  820.         (EGA)
  821.         BL = border color (0-15) and high-intensity background color
  822.           (16-31??? maybe should be high nybble?)
  823.     BH = 01h
  824.         BL = palette (0-3)
  825. ----------100C-------------------------------
  826. INT 10 - VIDEO - WRITE DOT ON SCREEN
  827.     AH = 0Ch
  828.     AL = color of dot (0/1 in mode 6, 0-3 in modes 4 and 5)
  829.          if bit 7 set, new color will be XORed with current pixel
  830.     BH = display page (ignored if mode only supports one page)
  831.     CX = column
  832.     DX = row
  833. Note:    only valid in graphics modes
  834. SeeAlso: AH=0Dh
  835. ----------100D-------------------------------
  836. INT 10 - VIDEO - READ DOT ON SCREEN
  837.     AH = 0Dh
  838.     BH = display page (ignored if mode only supports one page)
  839.     CX = column
  840.     DX = row
  841. Return: AL = color read
  842. Note:    only valid in graphics modes
  843. SeeAlso: AH=0Ch
  844. ----------100E-------------------------------
  845. INT 10 - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
  846.     AH = 0Eh
  847.     AL = character
  848.     BH = display page (alpha modes)
  849.     BL = foreground color (graphics modes)
  850. Note:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  851.       and do the expected things
  852. SeeAlso: AH=02h,0Ah
  853. ----------100F-------------------------------
  854. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  855.     AH = 0Fh
  856. Return: AH = number of columns on screen
  857.     AL = current video mode (see INT 10/AH=00h)
  858.     BH = current active display page
  859. Note:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  860.       also have bit 7 set
  861. SeeAlso: AH=00h,05h
  862. ----------100F56-----------------------------
  863. INT 10 - VUIMG DISPLAY DRIVER (v2.20 and below)
  864.     AX = 0F56h
  865.     BX = 4756h
  866.     CX = 4944h
  867.     DL = function
  868.         01h installation check
  869.         Return: AX = 5649h
  870.             BX = 4443h
  871.             CX = 5647h
  872.             DH = 01h
  873.         02h get first video mode's parameters
  874.         Return: AX = BIOS mode number
  875.             BX = widht in pixels
  876.             CX = height in pixels
  877.             DX = number of colors
  878.         03h get next video mode's parameters
  879.         Return: as for DL=02h
  880.         04h display line???
  881.         ES:DI -> record (see below)
  882.         ???
  883.         Return: ???
  884.  
  885. Format of record for DL=04h:
  886. Offset    Size    Description
  887.  00h    WORD    row number
  888.  02h    WORD    starting column???
  889.  04h    WORD    ending column???
  890.     ???
  891. ----------101000----------------------------
  892. INT 10 - VIDEO - SET PALETTE REGISTER (Jr, PS, TANDY 1000, EGA, VGA)
  893.     AX = 1000h
  894.     BL = palette register to set
  895.     BH = color value to store
  896. Note:    on MCGA, only BX = 0712h is supported
  897. SeeAlso: AX=1002h,1007h
  898. ----------101001-----------------------------
  899. INT 10 - VIDEO - SET BORDER COLOR REGISTER (Jr, PS, TANDY 1000, EGA, VGA)
  900.     AX = 1001h
  901.     BH = color value to store
  902. SeeAlso: AX=1008h
  903. ----------101002-----------------------------
  904. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (Jr, PS, TANDY 1000, EGA, VGA)
  905.     AX = 1002h
  906.     ES:DX -> 17-byte palette register list (see below)
  907. SeeAlso: AX=1000h,1009h
  908.  
  909. Format of palette register list:
  910. Offset    Size    Description
  911.  00h 16 BYTEs    values for palette registers 0-15
  912.  10h    BYTE    value for border color register
  913. ----------101003-----------------------------
  914. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  915.     AX = 1003h
  916.     BL = 00h enable background intensity
  917.        = 01h enable blink
  918. SeeAlso: AH=08h
  919. ----------101007-----------------------------
  920. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA)
  921.     AX = 1007h
  922.     BL = palette register number
  923. Return: BH = palette register value
  924. SeeAlso: AX=1000h,1009h
  925. ----------101008-----------------------------
  926. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA)
  927.     AX = 1008h
  928. Return: BH = value
  929. SeeAlso: AX=1001h
  930. ----------101009-----------------------------
  931. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  932.     AX = 1009h
  933.     ES:DX -> 17-byte buffer (see AX=1002h)
  934. SeeAlso: AX=1002h,1007h
  935. ----------101010-----------------------------
  936. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (EGA, VGA/MCGA)
  937.     AX = 1010h
  938.     BX = register number
  939.     CH = new value for green (0-63)
  940.     CL = new value for blue (0-63)
  941.     DH = new value for red (0-63)
  942. SeeAlso: AX=1012h,1015h
  943. ----------101012-----------------------------
  944. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (EGA, VGA/MCGA)
  945.     AX = 1012h
  946.     BX = starting color register
  947.     CX = number of registers to set
  948.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  949.          byte each of red, green and blue (0-63)
  950. SeeAlso: AX=1010h,1017h
  951. ----------101013-----------------------------
  952. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  953.     AX = 1013h
  954.     BL = 00h Select paging mode
  955.         BH = 00h Select 4 blocks of 64
  956.         BH = 01h Select 16 blocks of 16
  957.     BL = 01h Select Page
  958.         BH = page number (00h to 03h) or (00h to 0Fh)
  959. Note:    not valid in mode 13h
  960. SeeAlso: AX=101Ah
  961. ----------101015-----------------------------
  962. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (EGA, VGA/MCGA)
  963.     AX = 1015h
  964.     BL = palette register number
  965. Return: DH = red value
  966.     CH = green value
  967.     CL = blue value
  968. SeeAlso: AX=1010h,1017h
  969. ----------101017-----------------------------
  970. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (EGA, VGA/MCGA)
  971.     AX = 1017h
  972.     BX = starting palette register
  973.     CX = number of palette registers to read
  974.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  975. Return: CX number of red, green and blue triples in buffer
  976. SeeAlso: AX=1012h,1015h
  977. ----------101018-----------------------------
  978. INT 10 - VIDEO - undocumented - SET PEL MASK (EGA, VGA/MCGA)
  979.     AX = 1018h
  980.     BL = new PEL value
  981. SeeAlso: AX=1019h
  982. ----------101019-----------------------------
  983. INT 10 - VIDEO - undocumented - READ PEL MASK (EGA, VGA/MCGA)
  984.     AX = 1019h
  985. Return:    BL = value read
  986. SeeAlso: AX=1018h
  987. ----------10101A-----------------------------
  988. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  989.     AX = 101Ah
  990. Return: BL = paging mode
  991.         00h four pages of 64
  992.         01h sixteen pages of 16
  993.     BH = current page
  994. SeeAlso: AX=1013h
  995. ----------10101B-----------------------------
  996. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (EGA, VGA/MCGA)
  997.     AX = 101Bh
  998.     BX = starting palette register
  999.     CX = number of registers to convert
  1000. SeeAlso: AH=12h/BL=33h
  1001. ----------1011-------------------------------
  1002. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1003.     AH = 11h
  1004.     The following functions will cause a mode set, completely resetting
  1005.     the video environment, but without clearing the video buffer
  1006.     AL = 00h, 10h: load user-specified patterns
  1007.         ES:BP -> user table
  1008.         CX      = count of patterns to store
  1009.         DX      = character offset into map 2 block
  1010.         BL      = block to load in map 2
  1011.         BH      = number of bytes per character pattern
  1012.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1013.         BL      = block to load
  1014.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1015.         BL      = block to load
  1016.     AL = 03h: set block specifier
  1017.         BL      = block specifier
  1018.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1019.                      bit 3 = 0
  1020.                   bits 2,3 = block selected by chars with attribute
  1021.                      bit 3 = 1
  1022.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1023.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1024.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1025.     The routines called with AL=1xh are designed to be called only
  1026.     immediately after a mode set and are similar to the routines called
  1027.     with AL=0xh, except that:
  1028.           Page 0 must be active.
  1029.           Bytes/character is recalculated.
  1030.           Max character rows is recalculated.
  1031.           CRT buffer length is recalculated.
  1032.           CRTC registers are reprogrammed as follows:
  1033.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1034.              R0A = bytes/char-2 ; cursor start
  1035.              R0B = 0        ; cursor end
  1036.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1037.              R14 = bytes/char    ; underline loc
  1038.                (*** BUG: should be 1 less ***)
  1039. ----------1011-------------------------------
  1040. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1041.     AH = 11h
  1042.     AL = 20h: set user 8 by 8 graphics characters (INT 1Fh)
  1043.         ES:BP -> user table
  1044.     AL = 21h: set user graphics characters
  1045.         ES:BP -> user table
  1046.         CX      = bytes per character
  1047.         BL      = row specifier
  1048.            00h user set
  1049.               DL = number of rows
  1050.            01h 14 rows
  1051.            02h 25 rows
  1052.            03h 43 rows
  1053.     AL = 22h: ROM 8 by 14 set
  1054.         BL = row specifier
  1055.     AL = 23h: ROM 8 by 8 double dot
  1056.         BL = row specifier
  1057.     AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  1058.         BL = row specifier
  1059.     AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  1060.         BL = row specifier
  1061. Note:    these functions are meant to be called only after a mode set
  1062. ----------101130-----------------------------
  1063. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  1064.     AX = 1130h
  1065.     BH = pointer specifier
  1066.         00h INT 1Fh pointer
  1067.         01h INT 44h pointer
  1068.         02h ROM 8 by 14 character font pointer
  1069.         03h ROM 8 by 8 double dot font pointer
  1070.         04h ROM 8 by 8 DD font (top half)
  1071.         05h ROM alpha alternate (9 by 14) pointer
  1072. Return: ES:BP = specified pointer
  1073.     CX    = bytes/character
  1074.     DL    = character rows on screen
  1075. ----------1012--BL10-------------------------
  1076. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  1077.     AH = 12h
  1078.     BL = 10h
  1079. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  1080.            01h mono mode in effect (I/O port 3Bxh)
  1081.     BL = 00h  64k bytes memory installed
  1082.          01h 128k bytes memory installed
  1083.          02h 192k bytes memory installed
  1084.          03h 256k bytes memory installed
  1085.     CH = feature bits
  1086.     CL = switch settings
  1087. ----------1012--BL20-------------------------
  1088. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  1089.     AH = 12h
  1090.     BL = 20h  select alternate print screen routine
  1091. SeeAlso: INT 05
  1092. ----------1012--BL30-------------------------
  1093. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  1094.     AH = 12h
  1095.     BL = 30h
  1096.     AL = vertical resolution
  1097.          00h 200 scan lines
  1098.          01h 350 scan lines
  1099.          02h 400 scan lines
  1100. Return: AL = 12h if function supported
  1101. ----------1012--BL31-------------------------
  1102. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  1103.     AH = 12h
  1104.     BL = 31h
  1105.     AL = 00h enable default palette loading
  1106.          01h disable default palette loading
  1107. Return: AL = 12h if function supported
  1108. ----------1012--BL32-------------------------
  1109. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  1110.     AH = 12h
  1111.     BL = 32h
  1112.     AL = 00h enable video addressing
  1113.          01h disable video addressing
  1114. Return: AL = 12h if function supported
  1115. ----------1012--BL33-------------------------
  1116. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  1117.     AH = 12h
  1118.     BL = 33h
  1119.     AL = 00h enable gray scale summing
  1120.          01h disable gray scale summing
  1121. Return: AL = 12h if function supported
  1122. SeeAlso: AX=101Bh
  1123. ----------1012--BL34-------------------------
  1124. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  1125.     AH = 12h
  1126.     BL = 34h
  1127.     AL = 00h enable alphanumeric cursor emulation
  1128.          01h disable alphanumeric cursor emulation
  1129. Return: AL = 12h if function supported
  1130. ----------1012--BL35-------------------------
  1131. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  1132.     AH = 12h
  1133.     BL = 35h
  1134.     AL = 00h initial adapter video off
  1135.          01h initial planar video on
  1136.          02h switch active video off
  1137.          03h switch inactive video on
  1138.          80h *UNDOCUMENTED* set system board video active flag
  1139.     ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  1140. Return: AL = 12h if function supported
  1141. ----------1012--BL36-------------------------
  1142. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  1143.     AH = 12h
  1144.     BL = 36h
  1145.     AL = 00h enable refresh
  1146.          01h disable refresh
  1147. Return: AL = 12h if function supported
  1148. ----------1012--BH55-------------------------
  1149. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  1150.     AH = 12h
  1151.     BH = 55h
  1152.     BL = subfunction
  1153.         00h disabled enhanced features
  1154.         01h enable enhanced features
  1155.         02h get status
  1156.         Return: AL = status flags
  1157.                 bit 3: set if enhanced features enabled
  1158.                 bits 7-5 monitor type
  1159.                 000 PS/2 mono
  1160.                 001 PS/2 color
  1161.                 010 multi-sync
  1162.                 011 Taxan 650 25kHz
  1163.                 100 RGB
  1164.                 101 mono
  1165.                 110 EGA
  1166.                 111 Compaq internal
  1167.         03h disable register trapping (CGA emulation)
  1168.         04h enable register trapping
  1169.         05h program mode described by table at ES:BP
  1170.         06h get mode table
  1171.         AL = video mode
  1172.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  1173.             BP = FFFFh on error
  1174.  
  1175. Format of ATI VGA Wonder video mode table:
  1176. Offset    Size    Description
  1177.  00h    BYTE    number of columns
  1178.  01h    BYTE    maximum row (number of rows - 1)
  1179.  02h    BYTE    scan lines per row
  1180.  03h    WORD    video buffer size in bytes
  1181.  05h  4 BYTEs    values for Sequencer registers 1-4
  1182.  09h    BYTE    value for Miscellaneous Output register
  1183.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  1184.         00h horizontal total size (chars)
  1185.         01h horizontal displayed (chars)
  1186.         02h horizontal sync position (chars)
  1187.         03h horizontal sync width (chars)
  1188.         04h vertical total size (char rows)
  1189.         05h vertical total adjust (scan lines)
  1190.         06h vertical displayed (char rows)
  1191.         07h vertical sync position (char rows)
  1192.         08h interlace mode
  1193.         09h max scan line in row
  1194.         0Ah cursor start scan line
  1195.         0Bh cursor end scan line
  1196.         0Ch screen memory start (high)
  1197.         0Dh screen memory start (low)
  1198.         0Eh cursor address (high)
  1199.         0Fh cursor address (low)
  1200.         10h light pen (high)
  1201.         11h light pen (low)
  1202.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  1203.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  1204. ----------1013-------------------------------
  1205. INT 10 - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
  1206.     AH = 13h
  1207.     AL = mode
  1208.         bit 1: set if string contains alternating characters and attributes
  1209.         bit 0: set in order to move cursor after write
  1210.     BL = attribute if AL bit 1 clear
  1211.     BH = display page number
  1212.     DH,DL = row,column of starting cursor position
  1213.     CX = length of string
  1214.     ES:BP -> start of string
  1215. Note:    recognizes CR, LF, BS, and bell
  1216. SeeAlso: AH=09h,0Ah
  1217. ----------101400-----------------------------
  1218. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  1219.     AX = 1400h
  1220.     ES:DI -> character font
  1221.     BH = number of bytes per character
  1222.         08h or 10h (Compaq)
  1223.     BL = 00h load main font (block 0)
  1224.          01h load alternate font (block 1)
  1225.     CX = number of characters to store
  1226.     DX = character offset into RAM font area
  1227. SeeAlso: AH=11h,AX=1401h
  1228. ----------101401-----------------------------
  1229. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  1230.     AX = 1401h
  1231.     BL = 00h load main font (block 0)
  1232.          01h load alternate font (block 1)
  1233. SeeAlso: AH=11h,AX=1400h
  1234. ----------101402-----------------------------
  1235. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  1236.     AX = 1402h
  1237.     BL = 00h ignore high intensity attribute
  1238.          01h map high intensity to underscore
  1239.          02h map high intensity to reverse video
  1240.          03h map high intensity to selected alternate font
  1241.          B0h half intensity (Compaq)
  1242.          B1h toggle active intensity bit interpretation (CP386)
  1243. ----------1015-------------------------------
  1244. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  1245.     AH = 15h
  1246. Return: AX = alternate display adapter type
  1247.         0000h none
  1248.         5140h LCD
  1249.         5153h CGA
  1250.         5151h mono
  1251.     ES:DI -> parameter table (see below)
  1252. SeeAlso: AH=1Bh
  1253.  
  1254. Format of display parameter table:
  1255. Offset    Size    Description
  1256.  00h    WORD    monitor model number
  1257.  02h    WORD    vertical pixels per meter
  1258.  04h    WORD    horizontal pixels per meter
  1259.  06h    WORD    total vertical pixels
  1260.  08h    WORD    total horizontal pixels
  1261.  0Ah    WORD    horizontal pixel separation in micrometers
  1262.  0Ch    WORD    vertical pixel separation in micrometers
  1263. ----------1015-------------------------------
  1264. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  1265.     AH = 15h
  1266.     AL = superimpose mode
  1267.         00h show graphics screen
  1268.         01h show text screen
  1269.         02h show text screen superimposed on graphics screen
  1270. ----------101A-------------------------------
  1271. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  1272.     AH = 1Ah
  1273.     AL = 00h read display combination code
  1274.         Return: BL = active display code (see below)
  1275.             BH = alternate display code
  1276.          01h set display combination code
  1277.         BL = active display code (see below)
  1278.         BH = alternate display code
  1279. Return: AL = 1Ah if function was supported
  1280.  
  1281. Values for display combination code:
  1282.     00h no display
  1283.     01h monochrome adapter w/ monochrome display
  1284.     02h CGA w/ color display
  1285.     03h reserved
  1286.     04h EGA w/ color display
  1287.     05h EGA w/ monochrome display
  1288.     06h PGA w/ color display
  1289.     07h VGA w/ monochrome analog display
  1290.     08h VGA w/ color analog display
  1291.     09h reserved
  1292.     0Ah MCGA w/ digital color display
  1293.     0Bh MCGA w/ monochrome analog display
  1294.     0Ch MCGA w/ color analog display
  1295.     FFh unknown display type
  1296. ----------101B-------------------------------
  1297. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  1298.     AH = 1Bh
  1299.     BX = implementation type
  1300.        = 0000h return funtionality/state information
  1301.     ES:DI -> 64 byte buffer for state information (see below)
  1302. Return: AL = 1Bh if function supported
  1303.         ES:DI buffer filled with state information
  1304. SeeAlso: AH=15h
  1305.  
  1306. Format of state information:
  1307. Offset    Size    Description
  1308.  00h    DWORD    address of static funtionality table (see below)
  1309.  04h    BYTE    video mode in effect
  1310.  05h    WORD    number of columns
  1311.  07h    WORD    length of regen buffer in bytes
  1312.  09h    WORD    starting address of regen buffer
  1313.  0Bh    WORD    cursor position for page 0
  1314.  0Dh    WORD    cursor position for page 1
  1315.  0Fh    WORD    cursor position for page 2
  1316.  11h    WORD    cursor position for page 3
  1317.  13h    WORD    cursor position for page 4
  1318.  15h    WORD    cursor position for page 5
  1319.  17h    WORD    cursor position for page 6
  1320.  19h    WORD    cursor position for page 7
  1321.  1Bh    WORD    cursor type
  1322.  1Dh    BYTE    active display page
  1323.  1Eh    WORD    CRTC port address
  1324.  20h    BYTE    current setting of register (3?8)
  1325.  21h    BYTE    current setting of register (3?9)
  1326.  22h    BYTE    number of rows
  1327.  23h    WORD    bytes/character
  1328.  25h    BYTE    DCC of active display
  1329.  26h    BYTE    DCC of alternate display
  1330.  27h    WORD    number of colors supported in current mode
  1331.  29h    WORD    number of pages supported in current mode
  1332.  2Ah    BYTE    number of scan lines active
  1333.         (0,1,2,3) = (200,350,400,480)
  1334.  2Bh    BYTE    primary character block
  1335.  2Ch    BYTE    secondary character block
  1336.  2Dh    BYTE    miscellaneous flags
  1337.         bit 0 all modes on all displays on
  1338.             1 gray summing on
  1339.             2 monochrome display attached
  1340.             3 default palette loading disabled
  1341.             4 cursor emulation enabled
  1342.             5 0 = intensity; 1 = blinking
  1343.             6 reserved
  1344.             7 reserved
  1345.  2Eh  3 BYTEs    reserved
  1346.  31h    BYTE    video memory available
  1347.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  1348.  32h    BYTE    save pointer state flags
  1349.         bit 0 512 character set active
  1350.             1 dynamic save area present
  1351.             2 alpha font override active
  1352.             3 graphics font override active
  1353.             4 palette override active
  1354.             5 DCC override active
  1355.             6 reserved
  1356.             7 reserved
  1357.  33h 13 BYTEs    reserved
  1358.  
  1359. Format of Static Functionality Table:
  1360. Offset    Size    Description
  1361.  00h    BYTE    modes supported #1
  1362.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  1363.  01h    BYTE    modes supported #2
  1364.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  1365.  02h    BYTE    modes supported #3
  1366.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  1367.         bit 4 to bit 7 reserved
  1368.  03h  4 BYTEs    reserved
  1369.  07h    BYTE    scan lines supported
  1370.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  1371.  08h    BYTE    total number of character blocks available in text modes
  1372.  09h    BYTE    maximum number of active character blocks in text modes
  1373.  0Ah    BYTE    miscellaneous function flags #1
  1374.         bit 0 all modes on all displays function supported
  1375.             1 gray summing function supported
  1376.             2 character font loading function supported
  1377.             3 default palette loading enable/disable supported
  1378.             4 cursor emulation function supported
  1379.             5 EGA palette present
  1380.             6 color palette present
  1381.             7 color paging function supported
  1382.  0Bh    BYTE    miscellaneous function flags #2
  1383.         bit 0 light pen supported
  1384.             1 save/restore state function 1Ch supported
  1385.             2 intensity blinking function supported
  1386.             3 Display Combination Code supported
  1387.           4-7 reserved
  1388.  0Ch    WORD    reserved
  1389.  0Eh    BYTE    save pointer function flags
  1390.         bit 0 512 character set supported
  1391.             1 dynamic save area supported
  1392.             2 alpha font override supported
  1393.             3 graphics font override supported
  1394.             4 palette override supported
  1395.             5 DCC extension supported
  1396.             6 reserved
  1397.             7 reserved
  1398.  0Fh    BYTE    reserved
  1399. ----------101C-------------------------------
  1400. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  1401.     AH = 1Ch
  1402.     AL = 00h return state buffer size
  1403.         Return: BX = number of 64 byte blocks needed
  1404.          01h save video state
  1405.         ES:BX -> buffer
  1406.          02h restore video state
  1407.         ES:BX -> buffer containing previously saved state
  1408.     CX = requested states
  1409.          bit 0 video hardware
  1410.          1 BIOS data areas
  1411.          2 color registers and DAC state
  1412.           3-15 reserved
  1413. Return: AL = 1Ch if function supported
  1414. ----------103000-----------------------------
  1415. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE
  1416.     AX = 3000h
  1417.     CX = 0000h
  1418.     DX = 0000h
  1419. Return: CX:DX -> 3270PC configuration table (see below for format)
  1420.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  1421.  
  1422. Format of 3270 PC configuration table:
  1423. Offset    Size    Description
  1424.  00h    BYTE    aspect ratio X
  1425.  01h    BYTE    aspect ratio Y
  1426.  02h    BYTE    monitor type
  1427.         00h = 5151 (mono) or 5272 (color)
  1428.         01h = 3295
  1429.         02h = 5151 or 5272 with XGA (???) graphics adapter
  1430.         03h = 5279 with 3270PC G adapter
  1431.         04h = 5379 model C01 with 3270PC GX adapter
  1432.         05h = 5379 model M01 with 3270PC GX adapter
  1433.         07h = non-3270PC with 3270 Workstation Program
  1434.         FFh = 3270PC Control Program not loaded
  1435.  03h    BYTE    reserved
  1436.  04h    BYTE    adapter ID
  1437.         00h = 5151/5272 adapter
  1438.         04h = 5151/5272 with XGA adapter
  1439.         30h = 3295 or 3270PC G/GX adapter
  1440.  05h    BYTE    reserved
  1441.  06h    BYTE    function flags 1
  1442.         bit 7: mono text, 1 page
  1443.             6: color text, 1 page
  1444.             5: color text, 4 pages
  1445.             4: CGA color graphics
  1446.             3: 720x350 two-color graphics
  1447.             2: 360x350 four-color graphics
  1448.             1: 720x350 eight-color graphics
  1449.  07h    BYTE    function flags 2
  1450.         bit 6: GPI graphics supported
  1451.  08h    WORD    segment address of Control Program Level table (see below)
  1452.  0Ah 10 BYTEs    reserved
  1453.  
  1454. Format of Control Program Level table:
  1455. Offset    Size    Description
  1456.  00h    WORD    02xxh = 3270PC Control Program v2.xx
  1457.         03xxh = 3270PC Control Program v3.xx
  1458.         04xxh = 3270 Workstation Program v1.xx
  1459.  02h    BYTE    Control Program ID (00h)
  1460.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  1461. ----------1040-------------------------------
  1462. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  1463.     AH = 40h
  1464. SeeAlso: AH=41h
  1465. ----------1041-------------------------------
  1466. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  1467.     AH = 41h
  1468. SeeAlso: AH=40h
  1469. ----------1042-------------------------------
  1470. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  1471.     AH = 42h
  1472. ----------1043-------------------------------
  1473. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  1474.     AH = 43h
  1475.     AL = page number (0,1)
  1476. SeeAlso: AH=44h,AH=45h
  1477. ----------1044-------------------------------
  1478. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  1479.     AH = 44h
  1480.     AL = drawing function
  1481.         00h clear pixels
  1482.         01h set pixels
  1483.         02h invert pixels
  1484. SeeAlso: AH=44h,AH=46h,AH=4Ch,AH=4Dh
  1485. ----------1045-------------------------------
  1486. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  1487.     AH = 45h
  1488.     AL = page number (0,1)
  1489. SeeAlso: AH=43h
  1490. ----------1046-------------------------------
  1491. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  1492.     AH = 46h
  1493.     DI = x (0-720)
  1494.     BP = y (0-347)
  1495. Note:    function 44h determines operation and function 43h which page to use
  1496. SeeAlso: AH=47h,AH=4Ch,AH=4Dh
  1497. ----------1047-------------------------------
  1498. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  1499.     AH = 47h
  1500.     DI = x (0-720)
  1501.     BP = y (0-347)
  1502. Return: AL = 00h pixel clear
  1503.     AL = 01h pixel set
  1504. Note:    function 43h specifies which page is used
  1505. SeeAlso: AH=46h
  1506. ----------1048-------------------------------
  1507. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  1508.     AH = 48h
  1509.     DI = x (0-720)
  1510.     BP = y (0-347)
  1511. SeeAlso: AH=49h
  1512. ----------1049-------------------------------
  1513. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  1514.     AH = 49h
  1515.     DI = x (0-720)
  1516.     BP = y (0-347)
  1517. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  1518.       use
  1519. SeeAlso: AH=43h,AH=44h,AH=48h
  1520. ----------104A-------------------------------
  1521. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  1522.     AH = 4Ah
  1523.     DI = x coordinate of lower left corner
  1524.     BP = y coordinate of lower left corner
  1525.     BX = height in pixels
  1526.     CX = width in pixels
  1527. Note:    draws a solid rectangle
  1528. SeeAlso: AH=4Eh
  1529. ----------104B-------------------------------
  1530. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  1531.     AH = 4Bh
  1532.     AL = character to display
  1533.     DI = x (0-720)
  1534.     BP = y (0-347)
  1535. Note:    unlike the other BIOS character functions character position is
  1536.       specified in pixels rather than rows and columns
  1537. ----------104B-------------------------------
  1538. INT 10 - FRIEZE v7+ - API
  1539.     AH = 4Bh
  1540.     CL = function
  1541.         00h reserved
  1542.         01h load window
  1543.         ES:BX -> ASCIZ filename from which to read
  1544.         02h save window
  1545.         ES:BX -> ASCIZ filename to which to write
  1546.         07h set window size
  1547.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  1548.         09h set patterns
  1549.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  1550.         0Ah get patterns
  1551.         ES:BX -> 16-BYTE buffer for color correspondences
  1552.         0Bh set mode
  1553.         AL = mode
  1554.         0Fh get window
  1555.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  1556.         10h set print options
  1557.         ES:BX -> printer options in same format as FRIEZE cmdline
  1558.         14h get version
  1559.         Return: AH = major version (00h if FRIEZE version before 7)
  1560.             AL = minor version
  1561.         15h set parameters
  1562.         ES:BX -> parameter table (see below)
  1563.         16h get parameters
  1564.         ES:BX -> buffer for parameter table (see below)
  1565.         17h get printer resolution
  1566.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  1567.         18h reserved (v8.0 only)
  1568. Return: AX = status
  1569.         00h successful
  1570.         01h user aborted printout with ESC
  1571.         02h reserved
  1572.         03h file read error
  1573.         04h file write error
  1574.         05h file not found
  1575.         06h invalid header (not an image or wrong screen mode)
  1576.         07h file close error
  1577.         08h disk error
  1578.         09h printer error
  1579.         0Ah invalid function
  1580.         0Bh can't create file
  1581.         0Ch wrong video mode
  1582.  
  1583. Format of parameter table:
  1584. Offset    Size    Description
  1585.  00h    WORD    top margin (1/100 inch)
  1586.  02h    WORD    left margin (1/100 inch)
  1587.  04h    WORD    horizontal size (1/100 inch)
  1588.  06h    WORD    vertical size (1/100 inch)
  1589.  08h    WORD    quality/draft mode
  1590.         00h draft mode
  1591.         01h quality mode
  1592.         02h use horizontal/vertical resolution for output resolution
  1593.  0Ah    WORD    printer horizontal resolution (dots per inch)
  1594.  0Ch    WORD    printer vertical resolution (dots per inch)
  1595.  0Eh    WORD    reserved (FFFFh)
  1596. Note:    any field which should remain unchanged may be filled with FFFFh
  1597. ----------104C-------------------------------
  1598. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  1599.     AH = 4Ch
  1600.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  1601.     DI = x coordinate of center
  1602.     BP = y coordinate of center
  1603.     BX = radius
  1604. SeeAlso: AH=4Dh
  1605. ----------104D-------------------------------
  1606. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  1607.     AH = 4Dh
  1608.     DI = x of center
  1609.     BP = y of center
  1610.     BX = radius
  1611. SeeAlso: AH=4Ch
  1612. ----------104E-------------------------------
  1613. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  1614.     AH = 4Eh
  1615.     DI = x coordinate of an interior point
  1616.     BP = y coordinate of an interior point
  1617. Notes:    fills convex polygonal areas
  1618.     the first fill makes the figure solid, the second erases it
  1619. SeeAlso: AH=4Ah
  1620. ----------104F00-----------------------------
  1621. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  1622.     AX = 4F00h
  1623.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  1624. Return: AL = 4Fh function supported
  1625.     AH = status
  1626.         00h successful
  1627.         01h failed
  1628.  
  1629. Format of SuperVGA information:
  1630. Offset    Size    Description
  1631.  00h  4 BYTEs    signature ('VESA')
  1632.  04h    WORD    VESA version number
  1633.  06h    DWORD    pointer to OEM name
  1634.  0Ah  4 BYTEs    capabilities
  1635.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  1636.  12h 238 BYTEs    reserved
  1637. ----------104F01-----------------------------
  1638. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  1639.     AX = 4F01h
  1640.     CX = SuperVGA video mode
  1641.     ES:DI -> 256-byte buffer mode information (see below)
  1642. Return: AL = 4Fh function supported
  1643.     AH = status
  1644.         00h successful
  1645.         01h failed
  1646.  
  1647. Format of mode information:
  1648. Offset    Size    Description
  1649.  00h    WORD    mode attributes
  1650.         bit 0: mode supported
  1651.         bit 1: optional information available
  1652.         bit 2: BIOS output supported
  1653.         bit 3: set if color, clear if monochrome
  1654.         bit 4: set if graphics mode, clear if text mode
  1655.  02h    BYTE    window A attributes
  1656.         bit 0: exists
  1657.         bit ???: readable
  1658.         bit ???: writable
  1659.  03h    BYTE    window B attributes (as for window A)
  1660.  04h    WORD    window granularity
  1661.  06h    WORD    window size
  1662.  08h    WORD    start segment of window A
  1663.  0Ah    WORD    start segment of window B
  1664.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  1665.  10h    WORD    bytes per scan line
  1666. ---remainder is optional for VESA modes, needed for OEM modes---
  1667.  12h    WORD    width in pixels
  1668.  14h    WORD    height in pixels
  1669.  16h    BYTE    width of character cell in pixels
  1670.  17h    BYTE    height if character cell in pixels
  1671.  18h    BYTE    number of memory planes
  1672.  19h    BYTE    number of bits per pixel
  1673.  1Ah    BYTE    number of banks
  1674.  1Bh    BYTE    memory model type
  1675.  1Ch    BYTE    size of bank in K
  1676. ----------104F02-----------------------------
  1677. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  1678.     AX = 4F02h
  1679.     BX = mode
  1680.         bit 15 set means don't clear video memory
  1681. Return: AL = 4Fh function supported
  1682.     AH = status
  1683.         00h successful
  1684.         01h failed
  1685. SeeAlso: AX=4F03h
  1686.  
  1687. Values for VESA video mode
  1688.  100h    640x400x256
  1689.  101h    640x480x256
  1690.  102h    800x600x16
  1691.  103h    800x600x256
  1692.  104h    1024x768x16
  1693.  105h    1024x768x256
  1694.  106h    1280x1024x16
  1695.  107h    1280x1024x256
  1696. ----------104F03-----------------------------
  1697. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  1698.     AX = 4F03h
  1699. Return: AL = 4Fh function supported
  1700.     AH = status
  1701.         00h successful
  1702.         01h failed
  1703.     BX = video mode
  1704. SeeAlso: AX=4F02h
  1705. ----------104F04-----------------------------
  1706. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  1707.     AX = 4F04h
  1708.     DL = subfunction
  1709.         00h get state buffer size
  1710.         Return: BX = number of 64-byte blocks needed
  1711.         01h save video states
  1712.         ES:BX -> buffer
  1713.         02h restore video states
  1714.         ES:BX -> buffer
  1715.     CX = flags for states to save/restore
  1716.         bit 0: video hardware state
  1717.         bit 1: video BIOS data state
  1718.         bit 2: video DAC state
  1719.         bit 3: SuperVGA state
  1720. Return: AL = 4Fh function supported
  1721.     AH = status
  1722.         00h successful
  1723.         01h failed
  1724. ----------104F05-----------------------------
  1725. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  1726.     AX = 4F05h
  1727.     BH = subfunction
  1728.         00h select video memory window
  1729.         DX = window address in video memory (in granularity units)
  1730.         01h get video memory window
  1731.         Return: DX = window address in video memory (in gran. units)
  1732.     BL = window number
  1733.         00h window A
  1734.         01h window B
  1735. Return: AL = 4Fh function supported
  1736.     AH = status
  1737.         00h successful
  1738.         01h failed
  1739. SeeAlso: AX=4F06h
  1740. ----------104F06-----------------------------
  1741. INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET LOGICAL SCAN LINE LENGTH
  1742.     AX = 4F06h
  1743.     BL = 00h set scan line length
  1744.         CX = desired width in pixels
  1745.        = 01h get scan line length
  1746. Return: AL = 4Fh if function supported
  1747.     AH = status
  1748.         00h successful
  1749.         01h failed
  1750.     BX = bytes per scan line
  1751.     CX = number of pixels per scan line
  1752.     DX = maximum number of scan lines
  1753. Notes:    if the desired width is not achievable, the next larger width will be
  1754.       set
  1755.     the scan line may be wider than the visible area of the screen
  1756.     this function is valid in text modes, provided that values are
  1757.       multiplied by the character cell width/height
  1758. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  1759. ----------104F07-----------------------------
  1760. INT 10 - VESA SuperVGA BIOS 1.1 - GET/SET DISPLAY START
  1761.     AX = 4F07h
  1762.     BH = 00h (reserved)
  1763.     BL = 00h set display start
  1764.         CX = leftmost displayed pixel in scan line
  1765.         DX = first displayed scan line
  1766.        = 01h get display start
  1767.         Return: BH = 00h
  1768.             CX = leftmost displayed pixel in scan line
  1769.             DX = first displayed scan line
  1770. Return: AL = 4Fh if function supported
  1771.     AH = status
  1772.         00h successful
  1773.         01h failed
  1774. Note:    this function is valid in text modes, provided that values are
  1775.       multiplied by the character cell width/height
  1776. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  1777. ----------1050-------------------------------
  1778. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  1779.     AH = 50h
  1780. Return: BX = 1954h if installed
  1781.         AL = 00 if inactive, nonzero if active
  1782. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  1783. SeeAlso: AH=51h
  1784. ----------1051-------------------------------
  1785. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  1786.     AH = 51h
  1787.     AL = state
  1788.         00h disable
  1789.         nonzero enable
  1790. Note:    SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  1791. SeeAlso: AH=50h
  1792. ----------105555-----------------------------
  1793. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  1794.     AX = 5555h
  1795. Return: AX = AAAAh    if installed
  1796.     BX:CX -> ??? routine in SMS.COM resident portion
  1797.           -> data area in VCONFIG
  1798. Note:    Super Switch (SMS.COM) is a video mode switch program supplied with
  1799.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  1800. SeeAlso: INT 10/AH=00h
  1801.  
  1802. Format of data area:
  1803. Offset    Size    Description
  1804.  00h    DWORD    original INT 09 vector
  1805.  04h    DWORD    original INT 10 vector
  1806.  08h    DWORD    original INT 1C vector
  1807.  0Ch    WORD    screen saver state, 0=off, 1=on
  1808.  0Eh    WORD    blanking interval in clock ticks
  1809. ----------106A00-----------------------------
  1810. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  1811.     AX = 6A00h
  1812.     BX = 0000h
  1813.     CX = 0000h
  1814.     DX = buffer length (may be 0)
  1815.     ES:DI -> buffer
  1816. Return: BX = number of bytes stored in buffer
  1817.     CX = bytes required for all descriptions (0 if no DGIS)
  1818. Note:    buffer contains descriptions and addresses of DGIS-compatible
  1819.       display(s) and printer(s)
  1820. ----------106A01-----------------------------
  1821. INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
  1822.     AX = 6A01h
  1823.     CX = 0000h
  1824.     ES:DI = address of device to send INT 10 output to
  1825. Return: CX = 0000h  output could not be redirected
  1826.          else INT 10h output now routed to requested display
  1827. SeeAlso: AX=6A02h
  1828. ----------106A02-----------------------------
  1829. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  1830.     AX = 6A02h
  1831.     ES:DI = 0000h:0000h
  1832. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  1833.         else address of the current DGIS INT 10 display
  1834. SeeAlso: AX=6A01h
  1835. ----------106F00-----------------------------
  1836. INT 10 - VIDEO - INSTALLATION CHECK (Video7 VGA,VEGA VGA)
  1837.     AX = 6F00h
  1838. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  1839. ----------106F01-----------------------------
  1840. INT 10 - VIDEO - GETINFO (Video7 VGA,VEGA VGA)
  1841.     AX = 6F01h
  1842. Return: AL = monitor type code (VEGA VGA only)
  1843.     AH = status register information
  1844.          bit  0 = display enable
  1845.             0 = display enabled
  1846.             1 = vertical or horizontal retrace in progress
  1847.          bit  1 = light pen flip flop set
  1848.          bit  2 = light pen switch activated
  1849.          bit  3 = vertical sync
  1850.          bit  4 = monitor resolution
  1851.             0 = high resolution (>200 lines)
  1852.             1 = low resolution (<=200 lines)
  1853.          bit  5 = display type
  1854.             0 = color
  1855.             1 = monochrome
  1856.          bits6,7= diagnostic bits
  1857. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  1858. ----------106F04-----------------------------
  1859. INT 10 - VIDEO - GET MODE AND SCREEN RESOLUTION (Video7 VGA, VEGA VGA)
  1860.     AX = 6F04h
  1861. Return: AL = current video mode (see AX=6F05h)
  1862.     BX = horizontal columns (text) or pixels (graphics)
  1863.     CX = vertical columns (text) or pixels (graphics)
  1864. SeeAlso: AX=6F05h
  1865. ----------106F05-----------------------------
  1866. INT 10 - VIDEO - SET VIDEO MODE (Video7 VGA, VEGA EXTENDED EGA/VGA)
  1867.     AX = 6F05h
  1868.     BL = mode (graphics mode if graphics resolution listed)
  1869.          text  pixel graphic color disp scrn  system
  1870.          resol    box  resoltn       page addr
  1871.        00h-13h = standard IBM modes
  1872.        40h = 80x43    8x8                 Video7/VEGA VGA
  1873.        41h = 132x25 8x14                 Video7/VEGA VGA
  1874.        42h = 132x43 8x8                 Video7/VEGA VGA
  1875.        43h = 80x60    8x8                 Video7/VEGA VGA
  1876.        44h = 100x60 8x8                 Video7/VEGA VGA
  1877.        45h = 132x28 8x8                 Video7/VEGA VGA
  1878.        60h =         752x410  16         Video7 VGA, VEGA VGA
  1879.        61h =         720x540  16         Video7 VGA, VEGA VGA
  1880.            =         720x540  16         Northgate
  1881.        62h =         800x600  16         Video7 VGA, VEGA Ext EGA
  1882.        63h =        1024x768   2         Video7 VGA
  1883.        64h =        1024x768   4         Video7 VGA
  1884.        65h =        1024x768  16         Video7 VGA, VEGA Ext EGA
  1885.        66h =         640x400 256         Video7 VGA, VEGA Ext VGA
  1886.            =         640x400 256         Northgate
  1887.        67h =         640x480 256         Video7 VGA, VEGA Ext VGA
  1888.        68h =         720x540 256         Video7 VGA, VEGA Ext VGA
  1889.        69h =         800x600 256         Video7 VGA, VEGA Ext VGA
  1890.        70h =         752x410  16gray         Video7 VGA, VEGA VGA
  1891.        71h =         720x540  16gray         Video7 VGA, VEGA VGA
  1892.        72h =         800x600  16gray         Video7 VGA
  1893.        73h =        1024x768   2gray         Video7 VGA
  1894.        74h =        1024x768   4gray         Video7 VGA
  1895.        75h =        1024x768  16gray         Video7 VGA
  1896.        76h =         640x400 256gray         Video7 VGA
  1897.        77h =         640x480 256gray         Video7 VGA
  1898.        78h =         720x540 256gray         Video7 VGA
  1899.        79h =         800x600 256gray         (future)
  1900. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  1901. ----------106F06-----------------------------
  1902. INT 10 - VIDEO - SELECT AUTOSWITCH MODE (V7VGA,VEGA VGA)
  1903.     AX = 6F06h
  1904.     BL = Autoswitch mode select
  1905.          00h select EGA/VGA-only modes
  1906.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  1907.          02h select 'bootup' CGA/MGA modes
  1908.     BH = enable/disable (00h enable, 01h = disable selection)
  1909. ----------106F07-----------------------------
  1910. INT 10 - VIDEO - GET VIDEO MEMORY CONFIGURATION (V7VGA,VEGA VGA)
  1911.     AX = 6F07h
  1912. Return: AL = 6Fh
  1913.     AH = bits 0-6 = number of 256K blocks of video memory
  1914.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  1915.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  1916.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  1917.     CX = 0000h
  1918. SeeAlso: AH=12h/BL=10h
  1919. ----------1070-------------------------------
  1920. INT 10 - VIDEO - GET VIDEO RAM ADDRESS (TANDY 1000)
  1921.     AH = 70h
  1922. Return: AX  = segment address of the following
  1923.     [BX] = offset address of green plane
  1924.     [CX] = segment address of green plane
  1925.     [DX] = segment address of red/blue plane
  1926.            (red offset = 0, blue offset = 4000)
  1927. SeeAlso: AH=71h
  1928. ----------107000BX0000-----------------------
  1929. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  1930.     AX = 7000h
  1931.     BX = 0000h
  1932. Return: CL = monitor type
  1933.         00h mono
  1934.         01h CGA
  1935.         02h EGA
  1936.         03h digital multifrequency
  1937.         04h IBM PS/2
  1938.         05h IBM 8514
  1939.         06h SuperVGA
  1940.         07h analog multifrequency
  1941.         08h super multifrequency
  1942.     CH = feature bits
  1943.         bits 7,6: 00 = 256K memory
  1944.               01 = 512K memory
  1945.               10 = 1024K
  1946.               11 = 2048K memory
  1947.         bit 5:    special oscillator present
  1948.         bit 4:    VGA protect enabled
  1949.         bit 0:    6845 emulation
  1950.     DX = video board info
  1951.         bits 4-15: board ID model
  1952.         bits 0-3:  board ID revision
  1953.     DI = BCD BIOS version number
  1954. ----------107000BX0004-----------------------
  1955. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  1956.     AX = 7000h
  1957.     BX = 0004h
  1958. Return: ES:DI -> FAR paging function (call with DL = page to set)
  1959. Note:    the word preceding ES:DI is the length of the function in bytes, and
  1960.       the last byte of the function is a FAR return instruction.
  1961. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0005h
  1962. ----------107000BX0005-----------------------
  1963. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  1964.     AX = 7000h
  1965.     BX = 0005h
  1966.     CL = maximum number of modes to get info for
  1967.     CH = mode type to get info for (see below)
  1968.     DL = monitor type to get info for
  1969.     ES:DI -> buffer for mode info (see below)
  1970. Return: CL = total number of modes fitting criteria
  1971.     CH = size of each info record
  1972. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  1973.  
  1974. Values for mode type:
  1975.  00h all modes
  1976.  01h monochrome text modes
  1977.  02h color text modes
  1978.  03h four-color CGA graphics modes
  1979.  04h two-color CGA graphics modes
  1980.  05h 16-color graphics modes
  1981.  06h 256-color graphics modes
  1982.  
  1983. Format of mode information record:
  1984. Offset    Size    Description
  1985.  00h    BYTE    mode number (bit 7 set if extended mode)
  1986.  01h    BYTE    mode type (see above)
  1987.  02h    BYTE    info bits
  1988.         bits 7,6 reserved
  1989.              5     monochrome mode
  1990.              4     interlaced display
  1991.              3     requires special oscillator
  1992.              2,1 memory required
  1993.              00 = 256K
  1994.              01 = 512K
  1995.              10 = 1024K
  1996.              11 = 2048K
  1997.              0     reserved
  1998.  03h    BYTE    font height
  1999.  04h    BYTE    text columns on screen
  2000.  05h    BYTE    text rows on screen
  2001.  06h    WORD    number of scan lines
  2002.  08h    BYTE    color information
  2003.         bits 7-4 reserved
  2004.              3-0 bits per pixel
  2005. ----------1071-------------------------------
  2006. INT 10 - VIDEO - GET INCRAM ADDRESSES (TANDY 1000)
  2007.     AH = 71h
  2008. Return: AX  = segment address of the following
  2009.     [BX] = segment address of INCRAM
  2010.     [CX] = offset address of INCRAM
  2011. SeeAlso: AH=70h
  2012. ----------1072-------------------------------
  2013. INT 10 - VIDEO - SCROLL SCREEN RIGHT (TANDY 1000)
  2014.     AH = 72h
  2015.     AL = number of columns blanked at left of window
  2016.          00h = blank entire window
  2017.     BH = attributes to be used on blank columns
  2018.     CH,CL = row, column of upper left corner of window
  2019.     DH,DL = row, column of lower right corner
  2020. SeeAlso: AH=06h,07h,73h
  2021. ----------1073------------------------------
  2022. INT 10 - VIDEO - SCROLL SCREEN LEFT (TANDY 1000)
  2023.     AH = 73h
  2024.     AL = number of columns blanked at right of window
  2025.          00h = blank entire window
  2026.     BH = attributes to be used on blank columns
  2027.     CH,CL = row, column of upper left corner of window
  2028.     DH,DL = row, column of lower right corner
  2029. SeeAlso: AH=06h,07h,72h
  2030. ----------1080--DX4456-----------------------
  2031. INT 10 - VIDEO (DESQview 2.0x only) - internal - SET ??? HANDLER
  2032.     AH = 80h
  2033.     DX = 4456h ('DV')
  2034.     ES:DI -> FAR subroutine to be called on ???
  2035. Return: DS = segment of DESQview data structure for video buffer
  2036. Note:    this function is probably meant for internal use only, due to the magic
  2037.       value required in DX
  2038.     the subroutine seems to be called when the DESQview menu is accessed;
  2039.       on entry, AL = 3 or 4
  2040. ----------1081--DX4456-----------------------
  2041. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET ???
  2042.     AH = 81h
  2043.     DX = 4456h ('DV')
  2044. Return: ES = segment of DESQview data structure for video buffer
  2045.         BYTE ES:[0] = current window number in DV 2.0x
  2046. Note:    this function is probably meant for internal use only, due to the magic
  2047.       value required in DX
  2048. ----------1082--DX4456-----------------------
  2049. INT 10 - VIDEO (DESQview 2.0x only) - internal - GET CURRENT WINDOW INFO
  2050.     AH = 82h
  2051.     DX = 4456h ('DV')
  2052. Return: DS = segment in DESQview for data structure
  2053.          in DV 2.00,
  2054.           BYTE DS:[0] = window number
  2055.           WORD DS:[1] = segment of other data structure
  2056.           WORD DS:[3] = segment of window's object handle
  2057.     ES = segment of DESQview data structure for video buffer
  2058.     AL = current window number
  2059.     AH = ???
  2060.     BL = direct screen writes
  2061.         00h program does not do direct writes
  2062.         01h program does direct writes, so shadow buffer not usable
  2063.     BH = ???
  2064.     CL = current video mode
  2065.     CH = ???
  2066. Note:    this function is probably meant for internal use only, due to the magic
  2067.       value required in DX
  2068. ----------10BF00-----------------------------
  2069. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  2070.     AX = BF00h
  2071. Note:    all registers preserved and the internal monitor is blanked
  2072.     the external monitor becomes the active monitor
  2073. SeeAlso: AX=BF01h
  2074. ----------10BF01-----------------------------
  2075. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  2076.     AX = BF01h
  2077. Note:    all registers preserved and the external monitor is blanked
  2078.     the internal monitor becomes the active monitor
  2079. SeeAlso: AX=BF00h
  2080. ----------10BF02-----------------------------
  2081. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  2082.     AX = BF02h
  2083.     BH = master mode
  2084.         04h CGA
  2085.         05h EGA
  2086.         07h MDA
  2087. SeeAlso: AX=BF03h
  2088. ----------10BF03-----------------------------
  2089. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  2090.     AX = BF03h
  2091.     BX = 0000h
  2092. Return: BH = active monitor
  2093.         00h = external
  2094.         01h = internal
  2095.     BL = master mode
  2096.         00h = switchable VDU not present
  2097.         04h = CGA
  2098.         05h = EGA
  2099.         07h = MDA
  2100.         08h = switchable LCD controller present
  2101.     CH = 00h (reserved)
  2102.     CL = switchable VDU mode supported
  2103.         bit  0   = CGA supported
  2104.         bits 1,2 = reserved (1)
  2105.         bit  3   = MDA supported
  2106.         bits 4-7 = reserved (1)
  2107.     DH = internal monitor type
  2108.         00h = none
  2109.         01h = Dual-mode monitor
  2110.         02h = 5153 RGB monitor
  2111.         03h = Compaq Color monitor
  2112.         04h = 640x400 flat panel
  2113.         07h = LCD VGA
  2114.     DL = external monitor type
  2115.         00h = none
  2116.         01h = dual-mode monitor
  2117.         02h = 5153 RGB monitor
  2118.         03h = Compaq Color monitor
  2119.         04h = 640x400 flat panel
  2120.         05h = VGC monochrome
  2121.         06h = VGC color
  2122. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  2123. ----------10BF04-----------------------------
  2124. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  2125.     AX = BF04h
  2126.     BH = 00h enable delay
  2127.          01h disable delay
  2128. ----------10BF05-----------------------------
  2129. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  2130.     AX = BF05h
  2131.     BH = 00h video off
  2132.          01h video on
  2133. ----------10BF06-----------------------------
  2134. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  2135.     AX = BF06h
  2136.     CL = address to be read from gray scale table
  2137. Return: AL = bit 3-0 - Value read from gray scale table
  2138.     CL = address to be read from gray scale table
  2139. ----------10BF07-----------------------------
  2140. INT 10 - VIDEO - Compaq SLT/286 - WRITE GREY SCALE TABLE
  2141.     AX = BF07h
  2142.     CH = value to write to gray scale table
  2143.     CL = address to be written to gray scale table
  2144. ----------10BF08-----------------------------
  2145. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  2146.     AX = BF08h
  2147.     CH = bits 7-4 - Green weight
  2148.          bits 3-0 - Blue weight
  2149.     CL = bits 7-4 - unused
  2150.          bits 3-0 - Red weight
  2151. ----------10CC00-----------------------------
  2152. INT 10 - VIDEO - UltraVision - INSTALLATION CHECK
  2153.     AX = CC00h
  2154. Return: CX = ABCDh
  2155.     AL = 00h if extensions enabled
  2156. SeeAlso: AX=CC01h,AX=CC02h
  2157. ----------10CC01-----------------------------
  2158. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  2159.     AX = CC01h
  2160. Return: ???
  2161. SeeAlso: AX=CC02h
  2162. ----------10CC02-----------------------------
  2163. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  2164.     AX = CC02h
  2165. Return: ???
  2166. SeeAlso: AX=CC01h
  2167. ----------10CD-------------------------------
  2168. INT 10 - VIDEO - UltraVision - SET VIDEO MODE
  2169.     AH = CDh
  2170.     AL = mode number (<> 04h)
  2171. Return: ???
  2172. SeeAlso: AX=CD04h
  2173. ----------10CD04-----------------------------
  2174. INT 10 - VIDEO - UltraVision - GET VIDEO MODE
  2175.     AX = CD04h
  2176. Return: AL = mode number
  2177. SeeAlso: AH=CCh,AH=CDh
  2178. ----------10EF-------------------------------
  2179. INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
  2180.     AH = EFh
  2181. Return: DL = video adapter type
  2182.         00h original Hercules
  2183.         01h ???  \ one is probably Hercules Plus, the other
  2184.         02h ???  / Hercules InColor
  2185.         FFh non-Hercules 
  2186.     DH = ???
  2187. Note:    MSHERC.COM is a support program for the Microsoft Quick languages which
  2188.       makes their graphics libraries compatible with a Hercules card by
  2189.       adding video modes 08h and 88h, and supporting text in the new
  2190.       graphics modes.  While in mode 08h or 88h, INT 10 supports the
  2191.       Hercules card much like a CGA.
  2192. ----------10F0-------------------------------
  2193. INT 10 - Microsoft Mouse driver EGA support - READ ONE REGISTER
  2194.     AH = F0h
  2195.     BL = register number
  2196.     BH = 00h
  2197.     DX = group index
  2198.         Pointer/data chips
  2199.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  2200.            08h Sequencer (5 registers) 3C4h
  2201.            10h Graphics Controller (9 registers) 3CEh
  2202.            18h Attribute Controller (20 registers) 3C0h
  2203.         Single registers
  2204.            20h Miscellaneous Output register 3C2h
  2205.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  2206.            30h Graphics 1 Position register 3CCh
  2207.            38h Graphics 2 Position register 3CAh
  2208. Return: BL = data
  2209. Note:    also present in OS/2 compatibility box
  2210. SeeAlso: AH=F1h,F2h
  2211. ----------10F1-------------------------------
  2212. INT 10 - Microsoft Mouse driver EGA support - WRITE ONE REGISTER
  2213.     AH = F1h
  2214.     DX = group index (see AH=F0h)
  2215.         if single register:
  2216.         BL = value to write
  2217.         otherwise
  2218.         BL = register number
  2219.         BH = value to write
  2220. Return: BL = data
  2221. Note:    also present in OS/2 compatibility box
  2222. SeeAlso: AH=F0h,F3h
  2223. ----------10F2-------------------------------
  2224. INT 10 - Microsoft Mouse driver EGA support - READ REGISTER RANGE
  2225.     AH = F2h
  2226.     CH = starting register number
  2227.     CL = Number of registers (>1)
  2228.     DX = group index
  2229.          00h CRTC (3B4h mono modes, 3D4h color modes)
  2230.          08h Sequencer 3C4h
  2231.          10h Graphics Controller 3CEh
  2232.          18h Attribute Controller 3C0h
  2233.     ES:BX -> buffer, CL bytes
  2234. Note:    also present in OS/2 compatibility box
  2235. SeeAlso: AH=F0h,F3h
  2236. ----------10F3-------------------------------
  2237. INT 10 - Microsoft Mouse driver EGA support - WRITE REGISTER RANGE
  2238.     AH = F3h
  2239.     CH = starting register
  2240.     CL = number of registers (>1)
  2241.     DX = group index (see AH=F2h)
  2242.     ES:BX -> buffer, CL bytes
  2243. Note:    also present in OS/2 compatibility box
  2244. SeeAlso: AH=F1h,F2h
  2245. ----------10F4-------------------------------
  2246. INT 10 - Microsoft Mouse driver EGA support - READ REGISTER SET
  2247.     AH = F4h
  2248.     CX = number of registers to read (>1)
  2249.     ES:BX -> table of records (see below)
  2250. Return: register values in table filled in
  2251. Note:    also present in OS/2 compatibility box
  2252. SeeAlso: AH=F0h,F2h,F5h
  2253.  
  2254. Format of entries in table of register records:
  2255. Offset    Size    Description
  2256.  00h    WORD    group index
  2257.         Pointer/data chips
  2258.            00h CRTC (3B4h mono modes, 3D4h color modes)
  2259.            08h Sequencer 3C4h
  2260.            10h Graphics Controller 3CEh
  2261.            18h Attribute Controller 3C0h
  2262.         Single registers
  2263.            20h Miscellaneous Output register 3C2h
  2264.            28h Feature Control register (3BAh mono modes, 3DAh color)
  2265.            30h Graphics 1 Position register 3CCh
  2266.            38h Graphics 2 Position register 3CAh
  2267.  02h    BYTE    register number (0 for single registers)
  2268.  03h    BYTE    register value
  2269. ----------10F5-------------------------------
  2270. INT 10 - Microsoft Mouse driver EGA support - WRITE REGISTER SET
  2271.     AH = F5h
  2272.     CX = number of registers to write (>1)
  2273.     ES:BX -> table of records (see AH=F4h)
  2274. Note:    also present in OS/2 compatibility box
  2275. SeeAlso: AH=F1h,F3h,F4h
  2276. ----------10F6------------------------------
  2277. INT 10 - Microsoft Mouse driver EGA support - REVERT TO DEFAULT REGISTERS
  2278.     AH = F6h
  2279. Note:    also present in OS/2 compatibility box
  2280. SeeAlso: AH=F7h
  2281. ----------10F7------------------------------
  2282. INT 10 - Microsoft Mouse driver EGA support - DEFINE DEFAULT REGISTER TABLE
  2283.     AH = F7h
  2284.     DX = port number
  2285.        Pointer/data chips
  2286.           00h CRTC (3B4h mono modes, 3D4h color modes)
  2287.           08h Sequencer 3C4h
  2288.           10h Graphics Controller 3CEh
  2289.           18h Attribute Controller 3C0h
  2290.        Single registers
  2291.           20h Miscellaneous Output register 3C2h
  2292.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  2293.           30h Graphics 1 Position register 3CCh
  2294.           38h Graphics 2 Position register 3CAh
  2295.     ES:BX -> table of one-byte entries, one byte to be written to each
  2296.          register
  2297. Note:    also present in OS/2 compatibility box
  2298. SeeAlso: AH=F6h
  2299. ----------10FA------------------------------
  2300. INT 10 - Microsoft Mouse driver EGA support - INTERROGATE DRIVER
  2301.     AH = FAh
  2302.     BX = 0000h
  2303. Return: BX = 0000h if mouse driver not present
  2304.     ES:BX -> EGA Register Interface version number, if present:
  2305.         byte 0 = major release number
  2306.         byte 1 = minor release number
  2307. Note:    also present in OS/2 compatibility box
  2308. ----------10FA------------------------------
  2309. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  2310.     AH = FAh
  2311. Return: AX = 00FAh if installed
  2312.         ES = segment of resident code
  2313. Note:    FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  2314.       Steiner
  2315. ----------10FE------------------------------
  2316. INT 10 - VIDEO (TopView) - GET VIDEO BUFFER
  2317.     AH = FEh
  2318.     ES:DI = segment:offset of assumed video buffer
  2319. Return: ES:DI = segment:offset of actual video buffer
  2320. Notes:    if no multitasker is installed, ES:DI is returned unchanged
  2321.     TopView requires a call to AH=FFh to notify if that the screen has
  2322.       changed; DESQview will check for changes itself until the first call
  2323.       to AH=FFh
  2324. SeeAlso: INT 15/AX=1024h, INT 21/AH=2Bh"DESQview"
  2325. ----------10FF-------------------------------
  2326. INT 10 - VIDEO (TopView) - UPDATE REAL SCREEN FROM VIDEO BUFFER
  2327.     AH = FFh
  2328.     CX = number of sequential characters that have been modified
  2329.     DI = offset of first character that has been modified
  2330.     ES = segment of video buffer
  2331. Notes:    avoid CX=0000h
  2332.     DESQview will discontinue the automatic screen updating initiated by
  2333.       AH=FEh after this call
  2334. ----------10FF00-----------------------------
  2335. INT 10 - CARBON COPY PLUS 5.0 - CHECK IF CC CONNECTED TO CCHELP
  2336.     AX = FF00h
  2337. Return: BL = 00h not connected
  2338.        = 01h connected
  2339. ----------10FF01-----------------------------
  2340. INT 10 - CARBON COPY PLUS 5.0 - DISCONNECT AND RESET LINE
  2341.     AX = FF01h
  2342. ----------10FF02-----------------------------
  2343. INT 10 - CARBON COPY PLUS 5.0 - GET LAST PHONE NUMBER DIALED
  2344.     AX = FF02h
  2345. Return: ES:DI -> ASCIZ phone number
  2346. ----------11---------------------------------
  2347. INT 11 - 80486 internal hardware - ALIGNMENT CHECK
  2348.    Bit AC in the EFLAGS register enables this interrupt on a memory reference
  2349.      on a mis-aligned address when in privilege mode 3.
  2350. ----------11---------------------------------
  2351. INT 11 - EQUIPMENT DETERMINATION
  2352. Return: AX = equipment flag bits
  2353.         0      diskette installed
  2354.         1      8087 present
  2355.         2      mouse installed (PS2 only)
  2356.         2,3   number of 16K banks of RAM on motherboard (PC only)
  2357.           number of 64K banks of RAM on motherboard (XT only)
  2358.           always = 11 on AT and above
  2359.         4,5   initial video mode
  2360.           01 = 40x25 color
  2361.           10 = 80x25 color
  2362.           11 = 80X25 IBM monochrome
  2363.         6,7   number of diskette drives (only if bit 0 = 1)
  2364.           00 = 1, 01 = 2, 10 = 3, 11 = 4
  2365.         8      0 = DMA present
  2366.           1 = no DMA on system (PCjr, some Tandy 1000s, 1400LT)
  2367.         9-11  number of RS232 cards
  2368.         12      game I/O attached
  2369.         13      serial printer installed (PCjr)
  2370.           internal modem installed (PC/Convertible)
  2371.         14,15 number of printers
  2372. ---Compaq and many other 386/486 machines--
  2373.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  2374.             real mode
  2375.         bit 24: Weitek math coprocessor present
  2376. ---Compaq Systempro
  2377.     EAX bit 25: internal DMA parallel port available
  2378.         26: IRQ for internal DMA parallel port (if bit 25 set)
  2379.             0 = IRQ5
  2380.             1 = IRQ7
  2381.          27,28: parallel port DMA channel
  2382.                  00 DMA channel 0
  2383.             01 DMA channel 0 ???
  2384.             10 reserved
  2385.             11 DMA channel 3
  2386. SeeAlso: INT 12
  2387. ----------11FFFECXFFFE-----------------------
  2388. INT 11 - BACK&FORTH API
  2389.     AX = FFFEh
  2390.     CX = FFFEh
  2391.     BX = function
  2392.         00h installation check
  2393.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  2394.                = 0003h only BNFHIGH loaded
  2395.                else neither loaded
  2396.         01h ???
  2397.         Return: DX:AX -> ???
  2398.         02h ???
  2399.         03h ???
  2400.         04h ???
  2401.         05h ??? switches current PSP segment and stack if BNFLOW has not
  2402.             yet announced itself installed
  2403.         06h ???
  2404.         Return: AX = ???
  2405. ----------12---------------------------------
  2406. INT 12 - MEMORY SIZE
  2407. Return: AX = number of contiguous 1K blocks of memory
  2408. SeeAlso: INT 11
  2409. ----------1300-------------------------------
  2410. INT 13 - DISK - RESET DISK SYSTEM
  2411.     AH = 00h
  2412.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  2413. Note:    forces controller to recalibrate drive heads (seek to track 0)
  2414. SeeAlso: AH=0Dh, INT 21/AH=0Dh
  2415. ----------1301-------------------------------
  2416. INT 13 - DISK - STATUS OF DISK SYSTEM
  2417.     AH = 01h
  2418. Return: AH = status of last disk operation
  2419.         00h = successful completion
  2420.         01h = bad command
  2421.         02h = address mark not found
  2422.         03h = write attempted on write-protected disk
  2423.         04h = sector not found
  2424.         05h = reset failed (hard disk)
  2425.         06h = diskette changed
  2426.         07h = parameter act. failed (hard disk)
  2427.         08h = DMA overrun (floppy disk)
  2428.         09h = DMA across 64K boundary
  2429.         0Ah = bad sector detected (hard disk)
  2430.         0Bh = bad track detected (hard disk)
  2431.         0Ch = unsupported track
  2432.         0Dh = invalid number of sectors on format (hard disk)
  2433.         0Eh = control data address mark detected (hard disk)
  2434.         0Fh = DMA arbitration error (hard disk)
  2435.         10h = bad CRC/ECC
  2436.         11h = data ECC corrected (hard disk)
  2437.         20h = controller failure
  2438.         40h = seek failed
  2439.         80h = time out
  2440.         AAh = drive not ready (hard disk)
  2441.         BBh = undefined error (hard disk)
  2442.         CCh = write fault (hard disk)
  2443.         E0h = status register error (hard disk)
  2444.         FFh = sense operation failed (hard disk)
  2445. ----------1302-------------------------------
  2446. INT 13 - DISK - READ SECTORS INTO MEMORY
  2447.     AH = 02h
  2448.     AL = number of sectors to read
  2449.     CH = track (for hard disk, bits 8,9 in high bits of CL)
  2450.     CL = sector (01h to number of sectors/track for drive)
  2451.     DH = head
  2452.     DL = drive
  2453.     ES:BX -> buffer to fill
  2454. Return: CF set on error
  2455.     AH = status (see AH=01h)
  2456.     AL = number of sectors read
  2457. Notes:    results undefined if attempting to read zero sectors
  2458.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2459.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2460.     apparently, the AMI BIOS also follows this convention
  2461. SeeAlso: AH=03h,AH=0Ah
  2462. ----------1303-------------------------------
  2463. INT 13 - DISK - WRITE SECTORS FROM MEMORY
  2464.     AH = 03h
  2465.     AL = number of sectors to write
  2466.     CH = track (if hard disk, bits 8,9 in high bits of CL)
  2467.     CL = sector (if hard disk, high two bits are high bits of track #)
  2468.     DH = head
  2469.     DL = drive
  2470.     ES:BX -> buffer
  2471. Return: CF set on error
  2472.     AH = status (see AH=01h)
  2473.     AL = number of sectors written
  2474. Notes:    results undefined if attempting to write zero sectors
  2475.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2476.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2477.     apparently, the AMI BIOS also follows this convention
  2478. SeeAlso: AH=02h,AH=0Bh
  2479. ----------1304-------------------------------
  2480. INT 13 - DISK - VERIFY SECTORS
  2481.     AH = 04h
  2482.     AL = number of sectors to verify
  2483.     CH = track (for hard disk, bits 8,9 in high bits of CL)
  2484.     CL = sector (01h to number of sectors per track for drive)
  2485.     DH = head
  2486.     DL = drive
  2487. Return: CF set on error
  2488.     AH = status (see AH=01h)
  2489.     AL = number of sectors verified
  2490. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2491.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2492.     apparently, the AMI BIOS also follows this convention
  2493. SeeAlso: AH=02h
  2494. ----------1305-------------------------------
  2495. INT 13 - FLOPPY - FORMAT TRACK
  2496.     AH = 05h
  2497.     AL = number of sectors to create on this track
  2498.     CH = track
  2499.     CL = sector (01h to number of sectors per track for drive)
  2500.     DH = head
  2501.     DL = drive
  2502.     ES:BX -> array of 4-byte address fields
  2503.         BYTE    track
  2504.         BYTE    head
  2505.         BYTE    sector
  2506.         BYTE    bytes/sector  0=128, 1=256, 2=512, 3=1024
  2507. Return: CF set if error occurred
  2508.     AH = status code (see AH=01h)
  2509. ----------1305-------------------------------
  2510. INT 13 - FIXED DISK - FORMAT TRACK
  2511.     AH = 05h
  2512.     AL = interleave value (XT only)
  2513.     ES:BX = 512-byte format buffer
  2514.         the first 2*(sectors/track) bytes contain F,N for each sector
  2515.            F = 00 for good sector, 80h for bad sector
  2516.            N = sector number
  2517.     CH = cylinder number (bits 8,9 in high bits of CL)
  2518.     CL = sector number (01h to number of sectors per track for drive)
  2519.     DH = head
  2520.     DL = drive
  2521. Return: AH = status code (see AH=01h)
  2522. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2523.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2524.     apparently, the AMI BIOS also follows this convention
  2525. SeeAlso: AH=06h,07h,1Ah
  2526. ----------1306-------------------------------
  2527. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  2528.     AH = 06h
  2529.     AL = interleave value
  2530.     CH = cylinder number (bits 8,9 in high bits of CL)
  2531.     CL = sector number
  2532.     DH = head
  2533.     DL = drive
  2534. Return: AH = status code (see AH=01h)
  2535. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2536.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2537.     apparently, the AMI BIOS also follows this convention
  2538. ----------1307-------------------------------
  2539. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  2540.     AH = 07h
  2541.     AL = interleave value (XT only)
  2542.     ES:BX = 512-byte format buffer (see AH=05h)
  2543.     CH = cylinder number (bits 8,9 in high bits of CL)
  2544.     CL = sector number
  2545.     DH = head
  2546.     DL = drive
  2547. Return: AH = status code (see AH=01h)
  2548. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  2549.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  2550.     apparently, the AMI BIOS also follows this convention
  2551. SeeAlso: AH=1Ah
  2552. ----------1308-------------------------------
  2553. INT 13 - DISK - GET CURRENT DRIVE PARAMETERS (XT,AT,XT286,CONV,PS)
  2554.     AH = 08h
  2555.     DL = drive number
  2556. Return: CF set on error
  2557.     AH = status code (see AH=01h)
  2558.     BL = drive type (see AH=17h) (AT/PS2 floppies only)
  2559.     DL = number of consecutive acknowledging drives
  2560.     DH = maximum value for head number
  2561.     CL = maximum value for sector number (bits 0-5)
  2562.     CH = maximum value for cylinder number (highest bits in bits 6,7 of CL)
  2563.     ES:DI -> drive parameter table
  2564. SeeAlso: INT 1E,INT 41
  2565. ----------1309-------------------------------
  2566. INT 13 - FIXED DISK - INITIALIZE TWO FIXED DISK BASE TABLES (XT,AT,XT286,PS)
  2567.     AH = 09h
  2568. Return: CF set on error
  2569.     AH = status code (see AH=01h)
  2570.     INT 41h points to table for drive 0
  2571.     INT 46h points to table for drive 1
  2572. ----------130A-------------------------------
  2573. INT 13 - FIXED DISK - READ LONG (XT,AT,XT286,PS)
  2574.     AH = 0Ah
  2575.     DL = drive ID
  2576.     DH = head
  2577.     CH = cylinder (bits 8,9 in high bits of CL)
  2578.     CL = sector (01h to number of sectors per track for drive)
  2579.     ES:BX -> buffer to fill
  2580. Return: CF set on error
  2581.     AH = status code (see AH=01h)
  2582.     AL = number of sectors read
  2583. Note:    used for diagnostics only on PS/2 systems
  2584. SeeAlso: AH=02h,AH=0Bh
  2585. ----------130B-------------------------------
  2586. INT 13 - FIXED DISK - WRITE LONG (XT,AT,XT286,PS)
  2587.     AH = 0Bh
  2588.     DL = drive ID
  2589.     DH = head
  2590.     CH = cylinder (bits 8,9 in high bits of CL)
  2591.     CL = sector (01h to number of sectors per track for drive)
  2592.     ES:BX -> buffer containing data
  2593. Return: CF set on error
  2594.     AH = status code (see AH=01h)
  2595.     AL = number of sectors written
  2596. Note:    used for diagnostics only on PS/2 systems
  2597. SeeAlso: AH=03h,AH=0Ah
  2598. ----------130C-------------------------------
  2599. INT 13 - FIXED DISK - SEEK TO CYLINDER (XT,AT,XT286,PS)
  2600.     AH = 0Ch
  2601.     DL = drive ID
  2602.     DH = head
  2603.     CH = cylinder (bits 8,9 in high bits of CL)
  2604. Return: CF set on error
  2605.     AH = status code (see AH=01h)
  2606. ----------130D-------------------------------
  2607. INT 13 - FIXED DISK - ALTERNATE DISK RESET (XT,AT,XT286,PS)
  2608.     AH = 0Dh
  2609.     DL = drive ID
  2610. Return: CF set on error
  2611.     AH = status code (see AH=01h)
  2612. Note:    not for PS/2 ESDI drives
  2613. SeeAlso: AH=00h,INT 21/AH=0Dh
  2614. ----------130E-------------------------------
  2615. INT 13 - FIXED DISK - READ SECTOR BUFFER (XT,PS)
  2616.     AH = 0Eh
  2617.     ES:BX -> buffer
  2618. Return: CF set on error
  2619.     AH = status code (see AH=01h)
  2620. Notes:    transfers controller's sector buffer.  No data is read from the drive
  2621.     used for diagnostics only on PS/2 systems
  2622. SeeAlso: AH=0Ah
  2623. ----------130F-------------------------------
  2624. INT 13 - FIXED DISK - WRITE SECTOR BUFFER (XT,PS)
  2625.     AH = 0Fh
  2626.     ES:BX -> buffer
  2627. Return: CF set on error
  2628.     AH = status code (see AH=01h)
  2629. Notes:    should be called before formatting to initialize the controller's
  2630.       sector buffer.
  2631.     used for diagnostics only on PS/2 systems
  2632. SeeAlso: AH=0Bh
  2633. ----------1310-------------------------------
  2634. INT 13 - FIXED DISK - TEST FOR DRIVE READY (XT,AT,XT286,PS)
  2635.     AH = 10h
  2636.     DL = drive ID
  2637. Return: CF set on error
  2638.     AH = status code (see AH=01h)
  2639. ----------1311-------------------------------
  2640. INT 13 - FIXED DISK - RECALIBRATE DRIVE (XT,AT,XT286,PS)
  2641.     AH = 11h
  2642.     DL = drive ID
  2643. Return: CF set on error
  2644.     AH = status code (see AH=01h)
  2645. SeeAlso: AH=19h"FIXED DISK"
  2646. ----------1312-------------------------------
  2647. INT 13 - FIXED DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  2648.     AH = 12h
  2649. Return: CF set on error
  2650.     AH = status code (see AH=01h)
  2651. Note:    used for diagnostics only on PS/2 systems
  2652. SeeAlso: AH=13h,AH=14h
  2653. ----------1312-------------------------------
  2654. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  2655.     AH = 12h
  2656.     DL = hard drive ID
  2657. Return: CF set on error
  2658.     AH = status code (see AH=01h)
  2659. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  2660.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  2661.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  2662.       is displayed
  2663. ----------1313-------------------------------
  2664. INT 13 - FIXED DISK - DRIVE DIAGNOSTIC (XT,PS)
  2665.     AH = 13h
  2666. Return: CF set on error
  2667.     AH = status code (see AH=01h)
  2668. Note:    used for diagnostics only on PS/2 systems
  2669. SeeAlso: AH=12h,AH=14h
  2670. ----------1314-------------------------------
  2671. INT 13 - FIXED DISK - CONTROLLER DIAGNOSTICS (XT,AT,XT286,PS)
  2672.     AH = 14h
  2673. Return: CF set on error
  2674.     AH = status code (see AH=01h)
  2675. Note:    used for diagnostics only on PS/2 systems
  2676. SeeAlso: AH=12h,AH=13h
  2677. ----------1315-------------------------------
  2678. INT 13 - DISK - GET TYPE (AT,XT2,XT286,CONV,PS)
  2679.     AH = 15h
  2680.     DL = drive ID
  2681. Return: CF set on error
  2682.     AH = disk type
  2683.         00h = disk not there
  2684.         01h = floppy, no change detection present
  2685.         02h = floppy with change detection
  2686.         03h = fixed disk
  2687.            CX:DX = number of 512-byte sectors
  2688. SeeAlso: AH=17h,AH=19h"SCSI"
  2689. ----------1316-------------------------------
  2690. INT 13 - FLOPPY DISK - CHANGE OF DISK STATUS (AT,XT2,XT286,CONV,PS)
  2691.     AH = 16h
  2692.     DL = drive to check
  2693. Return: AH = disk change status
  2694.         00h = no disk change
  2695.         06h = disk changed
  2696. ----------1317-------------------------------
  2697. INT 13 - DISK - SET TYPE (AT,XT2,XT286,CONV,PS)
  2698.     AH = 17h
  2699.     AL = disk type
  2700.         00h = no disk
  2701.         01h = regular disk in regular drive
  2702.         02h = regular disk in high-capacity drive
  2703.         03h = high-capacity disk in high-capacity drive
  2704.         04h = 720K disk in 720K drive
  2705.     DL = drive ID
  2706. Note:    I assume that 05h and 06h are 720K in 1.44M and 1.44M in 1.44M
  2707. SeeAlso: AH=15h
  2708. ----------1318-------------------------------
  2709. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  2710.     AH = 18h
  2711.     DL = drive number
  2712.     CH = lower 8 bits of number of tracks
  2713.     CL = sectors per track (bits 0-5)
  2714.          top 2 bits of number of tracks (bits 6,7)
  2715. Return: AH = 00h  requested combination supported
  2716.          01h  function not available
  2717.          0Ch  not supported or drive type unknown
  2718.          80h  there is no disk in the drive
  2719.     ES:DI -> 11-byte parameter table
  2720. SeeAlso: AH=05h,AH=07h,AH=17h
  2721. ----------1318-------------------------------
  2722. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  2723.     AH = 18h
  2724.     DL = hard drive ID
  2725. Return: CF set on error
  2726.         AH = status code (see AH=01h)
  2727.     CF clear if successful
  2728.         AX = 4321h (magic number???)
  2729.         BH = number of SCSI drives connected
  2730.         BL = SCSI device number for specified drive
  2731.         CX = 040Ah (magic number???)
  2732. Note:    also sets an internal flag (non-resettable) which prevents some
  2733.       controller messages from being displayed and allows writes to
  2734.       removable devices
  2735. SeeAlso: AH=1Bh"SCSI"
  2736. ----------1319-------------------------------
  2737. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  2738.     AH = 19h
  2739.     DL = drive
  2740. Return: CF set on error
  2741.     AH = status (see AH=01h)
  2742. SeeAlso: AH=11h
  2743. ----------1319-------------------------------
  2744. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  2745.     AH = 19h
  2746.     DL = hard drive ID
  2747. Return: CF set on error
  2748.         AH = status code (see AH=01h)
  2749.     CF clear if successful
  2750.         AH = disk type (03h = fixed disk)
  2751.         CX:DX = number of 512-byte sectors
  2752. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  2753.       adjusts the result for 512-byte sectors
  2754.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  2755.       sector" (nnn=256 or 512, the only sizes supported in the translation
  2756.       code)
  2757.     should probably be called when a removable device has its media changed
  2758.     returns the same values as AH=15h
  2759. SeeAlso: AH=15h,AH=1Ah
  2760. ----------131A-------------------------------
  2761. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  2762.     AH = 1Ah
  2763.     AL = defect table count
  2764.     CL = format modifiers
  2765.         bit 4: generate periodic interrupt
  2766.         bit 3: perform surface analysis
  2767.         bit 2: update secondary defect map
  2768.         bit 1: ignore secondary defect map
  2769.         bit 0: ignore primary defect map
  2770.     DL = drive
  2771.     ES:BX -> defect table
  2772. Return: CF set on error
  2773.     AH = status (see AH=01h)
  2774. Note:    if periodic interrupt selected, INT 15h/AH=0Fh is called after each
  2775.       cylinder is formatted
  2776. SeeAlso: AH=07h, INT 15/AH=0Fh
  2777. ----------131A-------------------------------
  2778. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  2779.     AH = 1Ah
  2780.     CH = track (bits 8,9 in high bits of CL)
  2781.     CL = sector (01h to number of sectors/track for drive)
  2782.     DH = head
  2783.     DL = hard drive ID
  2784. Return: CF set on error
  2785.     AH = status code (see AH=01h)
  2786.     CX:DX = logical block number of last quickly-accessible block after
  2787.         given block
  2788. Note:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  2789.       logical block address of the last block after which a substantial
  2790.       delay in data transfer will be encountered (usually the last block
  2791.       on the current cylinder).  No translation to 512 byte sectors is
  2792.       performed on the result if data is stored on the disk in other than
  2793.       512 byte sectors.
  2794. SeeAlso: AH=15h,AH=19h"SCSI"
  2795. ----------131B-------------------------------
  2796. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  2797.     AH = 1Bh
  2798.     AL = number of record
  2799.     DL = drive
  2800.     ES:BX -> buffer for manufacturing header (defect list)
  2801. Return: CF set on error
  2802.         AH = status
  2803. Note:    manufacturing header format (Defect Map Record format) can be found
  2804.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  2805. ----------131B-------------------------------
  2806. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  2807.     AH = 1Bh
  2808.     DL = hard drive ID
  2809. Return: CF set on error
  2810.         AH = status code (see AH=01h)
  2811.     CF clear if successful
  2812.         ES:BX -> SCSI disk information block
  2813. Note:    also sets a non-resettable flag which prevents some controller messages
  2814.       from being displayed
  2815. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  2816.  
  2817. Format of SCSI disk information block:
  2818. Offset    Size    Description
  2819.  00h    BYTE    drive physical information
  2820.         bit 0: ???
  2821.         bit 1: device uses parity
  2822.         bit 2: 256 bytes per sector instead of 512
  2823.         bit 3: don't have capacity yet???
  2824.         bit 4: disk is removable
  2825.         bit 5: logical unit number is not present
  2826.  01h    WORD    translated number of cylinders
  2827.  03h    BYTE    translated number of heads
  2828.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  2829.  05h    BYTE    drive address
  2830.         bits 0-2: logical unit number
  2831.         bits 3-5: device number
  2832.  06h    BYTE    01h at initialization
  2833.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  2834.  08h    BYTE    00h
  2835.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  2836.  0Ah    BYTE    00h
  2837.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  2838.  15h    DWORD    translated number of sectors on device
  2839. ----------131C-------------------------------
  2840. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  2841.     AH = 1Ch
  2842.     DL = hard drive ID (any valid SCSI hard disk)
  2843. Return: CF set on error
  2844.         AH = status code (see AH=01h)
  2845.     CF clear if successful
  2846.         ES:BX -> first byte of free RAM on controller
  2847. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  2848.       to 1BFFh on-bard the controller for storing drive information and
  2849.       controller status; ES:BX points to the first byte available for other
  2850.       uses
  2851.     ES contains the segment at which the controller resides; the
  2852.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  2853. SeeAlso: AH=1Bh"SCSI"
  2854. ----------131C0A-----------------------------
  2855. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  2856.     AX = 1C0Ah
  2857.     DL = drive
  2858.     ES:BX -> buffer for device configuration (drive physical parameter)
  2859. Return: CF set on error
  2860.         AH = status
  2861. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  2862.       Adapter/A Technical Reference
  2863. ----------131C0B-----------------------------
  2864. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  2865.     AX = 1C0Bh
  2866.     ES:BX -> buffer for adapter configuration
  2867. Return: CF set on error
  2868.         AH = status
  2869. SeeAlso: AX=1C0Ch
  2870. ----------131C0C-----------------------------
  2871. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  2872.     AX = 1C0Ch
  2873.     ES:BX -> POS information
  2874. Return: CF set on error
  2875.         AH = status
  2876. SeeAlso: AX=1C0Bh
  2877. ----------131C0E-----------------------------
  2878. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  2879.     AX = 1C0Eh
  2880.     CH = low 8 bits of cylinder number
  2881.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  2882.     DH = head number
  2883.     DL = drive number
  2884.     ES:BX -> ABA number
  2885. Return: CF set on error
  2886.         AH = status
  2887. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  2888.       Technical Reference by using its Device Configuration Status Block
  2889. ----------131D-------------------------------
  2890. INT 13 - IBMCACHE.SYS - CACHE STATUS
  2891.     AH = 1Dh
  2892.     AL = subfunction
  2893.         01h get status record
  2894.         DL = drive???
  2895.         Return: ES:BX -> status record
  2896.             CF set on error
  2897.                 AH = error code
  2898.         02h set cache status
  2899.         ES:BX -> status record
  2900.         DL = drive???
  2901.         Return: CF set on error
  2902.  
  2903. Format of status record:
  2904. Offset    Size    Description
  2905.  00h    DWORD    total number of read requests
  2906.  04h    DWORD    total number of hits
  2907.  08h    DWORD    number of physical disk reads
  2908.  0Ch    DWORD    total number of sectors requested by physical disk reads
  2909.  10h  6 bytes    ???
  2910.  16h    DWORD    pointer to start of error list
  2911.  1Ah    DWORD    pointer to end of error list
  2912.  1Eh    WORD    ???
  2913.  20h    BYTE    using extended memory if nonzero
  2914.  21h    BYTE    ???
  2915.  22h  4 BYTEs    ASCII version number
  2916.  26h    WORD    cache size in K
  2917.  28h    WORD    sectors per page
  2918.  
  2919. Format of error list:
  2920. Offset    Size    Description
  2921.  00h    DWORD    relative block address of bad page
  2922.  04h    BYTE    drive
  2923.  05h    BYTE    sector bit-map
  2924.  06h    WORD    next error
  2925. ----------1320-------------------------------
  2926. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  2927.     AH = 20h
  2928.     ???
  2929. Return: ???
  2930. Note:    seems to return some kind of status
  2931. ----------1320FF-----------------------------
  2932. INT 13 - QCACHE - DISMOUNT
  2933.     AX = 20FFh
  2934. Return: ???
  2935. ----------1321-------------------------------
  2936. INT 13 - QCACHE - FLUSH CACHE
  2937.     AH = 21h
  2938. Return: ???
  2939. SeeAlso: AH=25h,AH=2Eh
  2940. ----------1322-------------------------------
  2941. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  2942.     AH = 22h
  2943.     AL = 00h disable cache
  2944.          01h enable cache
  2945. ----------1324-------------------------------
  2946. INT 13 - QCACHE - SET SECTORS
  2947.     AH = 24h
  2948.     BX = number of sectors
  2949. Return: ???
  2950. ----------1325-------------------------------
  2951. INT 13 - QCACHE - SET FLUSH INTERVAL
  2952.     AH = 25h
  2953.     BC = interval
  2954. Return: ???
  2955. SeeAlso: AH=21h,AH=2Eh
  2956. ----------1327-------------------------------
  2957. INT 13 - QCACHE - INSTALLATION CHECK
  2958.     AH = 27h
  2959.     BX = 0000h
  2960. Return: BX nonzero if installed
  2961. ----------132A-------------------------------
  2962. INT 13 - QCACHE - SET BUFFER SIZE
  2963.     AH = 2Ah
  2964.     AL = buffer size
  2965. Return: ???
  2966. ----------132C-------------------------------
  2967. INT 13 - QCACHE - SET BUFFERED WRITES
  2968.     AH = 2Ch
  2969.     AL = state
  2970.         00h disable
  2971.         01h enable
  2972. Return: ???
  2973. SeeAlso: AH=2Dh
  2974. ----------132D-------------------------------
  2975. INT 13 - QCACHE - SET BUFFERED READ
  2976.     AH = 2Dh
  2977.     AL = state
  2978.         00h disable
  2979.         01h enable
  2980. Return: ???
  2981. SeeAlso: AH=2Ch
  2982. ----------132E-------------------------------
  2983. INT 13 - QCACHE - SET FLUSH COUNT
  2984.     AH = 2Eh
  2985.     BX = flush count
  2986. Return: ???
  2987. SeeAlso: AH=21h,AH=25h
  2988. ----------1330-------------------------------
  2989. INT 13 - QCACHE - GET INFO
  2990.     AH = 30h
  2991.     AL = what to get
  2992.         00h system info
  2993.         01h drive info
  2994.     DS:DX -> buffer for info
  2995. Return: ???
  2996. ----------1370-------------------------------
  2997. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  2998.     AH = 70h
  2999.     ???
  3000. Return: ???
  3001. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  3002.       formatting program) make this call, presumably to EDVR.SYS (the
  3003.       partitioning driver)
  3004. SeeAlso: AH=ADh
  3005. ----------1381--SI4358-----------------------
  3006. INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
  3007.     AH = 81h
  3008.     SI = 4358h
  3009.     ???
  3010. Return: ???
  3011. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3012.       supports this call
  3013. ----------1382--SI4358-----------------------
  3014. INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
  3015.     AH = 82h
  3016.     SI = 4358h
  3017.     ???
  3018. Return: ???
  3019. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3020.       supports this call
  3021. ----------1383--SI4358-----------------------
  3022. INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
  3023.     AH = 83h
  3024.     SI = 4358h
  3025.     ???
  3026. Return: ???
  3027. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3028.       supports this call
  3029. ----------1384--SI4358-----------------------
  3030. INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
  3031.     AH = 84h
  3032.     SI = 4358h
  3033.     ???
  3034. Return: ???
  3035. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3036.       supports this call
  3037. ----------1385--SI4358-----------------------
  3038. INT 13 - Super PC Kwik/PC-Cache 5.5 - ???
  3039.     AH = 85h
  3040.     SI = 4358h
  3041.     ???
  3042. Return: ???
  3043. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3044.       supports this call
  3045. ----------138EED-----------------------------
  3046. INT 13 - HyperDisk 4.01 - ???
  3047.     AX = 8EEDh
  3048.     ???
  3049. Return: ???
  3050. Note:    HyperDisk is a shareware disk cache by Roger Cross
  3051. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh
  3052. ----------138EEE-----------------------------
  3053. INT 13 - HyperDisk 4.01 - ???
  3054.     AX = 8EEEh
  3055. Return: CF set
  3056.     AX = CS of HyperDisk resident code
  3057.     ???
  3058. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  3059. ----------138EEF-----------------------------
  3060. INT 13 - HyperDisk 4.01 - ???
  3061.     AX = 8EEFh
  3062.     ???
  3063. Return: CF set
  3064.     AX = CS of HyperDisk resident code
  3065.     ???
  3066. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  3067. ----------13A0--SI4358-----------------------
  3068. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  3069.     AH = A0h
  3070.     SI = 4358h
  3071.     ???
  3072. Return: AX = segment of resident code
  3073.     ???
  3074. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3075.       supports this call
  3076. ----------13A1--SI4358-----------------------
  3077. INT 13 - Super PC Kwik - FLUSH CACHE
  3078.     AH = A1h
  3079.     SI = 4358h
  3080.     ???
  3081. Return: ???
  3082. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3083.       supports this call
  3084. ----------13A2--SI4358-----------------------
  3085. INT 13 - Super PC Kwik - ???
  3086.     AH = A2h
  3087.     SI = 4358h
  3088.     ???
  3089. Return: ???
  3090. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3091.       supports this call
  3092. ----------13AD-------------------------------
  3093. INT 13 - Priam HARD DISK CONTROLLER???
  3094.     AH = ADh
  3095.     ???
  3096. Return: ???
  3097. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  3098.       to check the ROM type on the controller for their hard disk kits
  3099. SeeAlso: AH=70h
  3100. ----------13B0--SI4358-----------------------
  3101. INT 13 - Super PC Kwik - ???
  3102.     AH = B0h
  3103.     SI = 4358h
  3104.     ???
  3105. Return: ???
  3106. Note:    PC Tools PC Cache 5.5 is an OEM version of Super PC Kwik, and thus
  3107.       supports this call
  3108. ----------13EE-------------------------------
  3109. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  3110.     AH = EEh
  3111.     DL = drive number (80h, 81h)
  3112. Return: CF clear
  3113.        AH = 00h
  3114. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  3115.       less than the desired cylinder
  3116.     flag cleared by all INT 13 calls except AH=EEh
  3117.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3118.       these calls
  3119. SeeAlso: AH=F9h,AH=FEh
  3120. ----------13EE-------------------------------
  3121. INT 13 - HyperDisk 4.01 - ???
  3122.     AH = EEh
  3123.     ???
  3124. Return: ???
  3125. SeeAlso: AX=8EEDh,AX=8EEEh,AX=8EEFh
  3126. ----------13F9-------------------------------
  3127. INT 13 - SWBIOS - INSTALLATION CHECK
  3128.     AH = F9h
  3129.     DL = drive number (80h,81h)
  3130. Return: CF clear 
  3131.         DX = configuration word
  3132.         bit 15 set if other SWBIOS extensions available
  3133.     CF set on error
  3134. Note:    SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3135.       these calls
  3136. SeeAlso: AH=EEh
  3137. ----------13FE-------------------------------
  3138. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  3139.     AH = FEh
  3140.     DL = drive number (80h, 81h)
  3141. Return: CF clear
  3142.     DX = number of cylinders beyond 1024 on drive
  3143. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  3144.     BIOS without this extension would return count modulo 1024
  3145.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  3146.       these calls
  3147. SeeAlso: AH=EEh
  3148. ----------1400-------------------------------
  3149. INT 14 - SERIAL I/O - INITIALIZE USART
  3150.     AH = 00h
  3151.     AL = initializing parameters
  3152.         7 - 6 - 5       4 - 3     2      1 - 0
  3153.         -BAUD RATE-    PARITY   STOP   WORD
  3154.                     BITS  LENGTH
  3155.         000  110 bd    00 none  0: 1   00: 5
  3156.         001  150 bd    01 odd   1: 2   01: 6
  3157.         010  300 bd    11 even       10: 7
  3158.         011  600 bd            11: 8
  3159.         100 1200 bd
  3160.         101 2400 bd
  3161.         110 4800 bd
  3162.         111 9600 bd (4800 on PCjr)
  3163.     DX = port number (0-3)
  3164. Return: AH = RS-232 status code bits
  3165.         0: data ready
  3166.         1: overrun error
  3167.         2: parity error
  3168.         3: framing error
  3169.         4: break detected
  3170.         5: transmission buffer register empty
  3171.         6: transmission shift register empty
  3172.         7: time out--if set, other bits invalid
  3173.     AL = modem status bits
  3174.         0: delta Clear-To-Send
  3175.         1: delta Data-Set-Ready
  3176.         2: trailing edge of ring detected
  3177.         3: change in receive line signal detected
  3178.         4: Clear-To-Send
  3179.         5: Data-Set-Ready
  3180.         6: ring detected
  3181.         7: receive line signal detected
  3182. SeeAlso: AH=05h,AH=82h,AH=8Ch
  3183. ----------1400-------------------------------
  3184. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  3185.     AH = 00h
  3186.     AL = initializing parameters
  3187.         7 - 6 - 5       4 - 3     2      1 - 0
  3188.         -BAUD RATE-    PARITY   STOP   WORD
  3189.                     BITS  LENGTH
  3190.         000 19200 bd   00 none  0: 1  00: 5
  3191.         001 38400 bd   01 odd   1: 2  01: 6
  3192.         010   300 bd   11 even      10: 7
  3193.         011   600 bd          11: 8
  3194.         100  1200 bd
  3195.         101  2400 bd
  3196.         110  4800 bd
  3197.         111  9600 bd (4800 on PCjr)
  3198.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  3199. Return: AH = RS-232 status code bits
  3200.         0: RDA - input data is available in buffer
  3201.         1: OVRN - data has been lost
  3202.         5: THRE - room is available in output buffer
  3203.         6: TSRE - output buffer empty
  3204.     AL = modem status bits
  3205.         3: always 1
  3206.         7: DCD - carrier detect
  3207. SeeAlso: AH=05h,AH=82h
  3208. ----------1401-------------------------------
  3209. INT 14 - SERIAL I/O - TRANSMIT CHARACTER
  3210.     AH = 01h
  3211.     AL = character
  3212.     DX = port number (0-3)
  3213. Return: AX = port status (see AH=00h)
  3214. SeeAlso: AH=02h,AH=0Bh,AH=89h
  3215. ----------1402-------------------------------
  3216. INT 14 - SERIAL I/O - RECEIVE CHARACTER
  3217.     AH = 02h
  3218.     DX = port number (0-3)
  3219. Return: AL = character received
  3220.     AH = RS-232 status code (see AH=00h)
  3221. Note:    will timeout if DSR is not asserted, even if function 03h returns
  3222.       data ready
  3223. SeeAlso: AH=01h,AH=84h
  3224. ----------1402-------------------------------
  3225. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  3226.     AH = 02h
  3227.     DX = port number (0-3)
  3228. Return: AL = character received
  3229.     AH = 00h
  3230. ----------1403-------------------------------
  3231. INT 14 - SERIAL I/O - GET USART STATUS
  3232.     AH = 03h
  3233.     DX = port number (0-3)
  3234. Return: AX = port status code (see AH=00h)
  3235. SeeAlso: AH=81h
  3236. ----------1404-------------------------------
  3237. INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  3238.     AH = 04h
  3239.     AL = break status
  3240.         00h if break
  3241.         01h if no break
  3242.     BH = parity
  3243.         00h no parity
  3244.         01h odd parity
  3245.         02h even parity
  3246.         03h stick parity odd
  3247.         04h stick parity even
  3248.     BL = number of stop bits
  3249.         00h one stop bit
  3250.         01h two stop bits (1.5 if 5 bit word length)
  3251.     CH = word length
  3252.         00h 5 bits
  3253.         01h 6 bits
  3254.         02h 7 bits
  3255.         03h 8 bits
  3256.     CL = bps rate
  3257.         00h 110
  3258.         01h 150
  3259.         02h 300
  3260.         03h 600
  3261.         04h 1200
  3262.         05h 2400
  3263.         06h 4800
  3264.         07h 9600
  3265.         08h 19200
  3266.     DX = port number
  3267. Return: AX = port status code (see AH=00h)
  3268. SeeAlso: AH=00h,AH=1Eh
  3269. ----------1404-------------------------------
  3270. INT 14 - FOSSIL - INITIALIZE DRIVER
  3271.     AH = 04h
  3272.     DX = port number
  3273.     optionally BX=4F50h
  3274.            ES:CX -> byte to be set upon ^C
  3275. Return: AX = 1954h (if successful)
  3276.     BL = maximum function number supported (excluding 7Eh and above)
  3277.     BH = revision of FOSSIL supported
  3278.     DTR is raised
  3279. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  3280.       following byte contains the maximum function number supported
  3281. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  3282. ----------1405-------------------------------
  3283. INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  3284.     AH = 05h
  3285.     AL = 00h read modem control register
  3286.           Return: BL = modem control register (see below)
  3287.               AH = status
  3288.     AL = 01h write modem control register
  3289.           BL = modem control register
  3290.           bit 0: data terminal ready
  3291.           bit 1: request to send
  3292.           bit 2: OUT1
  3293.           bit 3: OUT2
  3294.           bit 4: LOOP
  3295.           bits 5-7 reserved
  3296.           Return: AX = status
  3297.     DX = port number
  3298. SeeAlso: AH=00h,AH=1Fh
  3299. ----------1405-------------------------------
  3300. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  3301.     AH = 05h
  3302.     DX = port number
  3303. Return: none
  3304.     DTR is not affected
  3305. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  3306. ----------1406-------------------------------
  3307. INT 14 - FOSSIL - RAISE/LOWER DTR
  3308.     AH = 06h
  3309.     DX = port
  3310.     AL = DTR state to be set
  3311.         00h = lower
  3312.         01h = raise
  3313. SeeAlso: AH=1Ah
  3314. ----------1407-------------------------------
  3315. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  3316.     AH = 07h
  3317. Return: AL = timer tick interrupt number
  3318.     AH = ticks per second on interrupt number in AL
  3319.     DX = approximate number of milliseconds per tick
  3320. SeeAlso: AH=16h
  3321. ----------1408-------------------------------
  3322. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  3323.     AH = 08h
  3324.     DX = port number
  3325. SeeAlso: AH=09h
  3326. ----------1409-------------------------------
  3327. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  3328.     AH = 09h
  3329.     DX = port number
  3330. SeeAlso: AH=08h,AH=0Ah,AH=88h
  3331. ----------140A-------------------------------
  3332. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  3333.     AH = 0Ah
  3334.     DX = port number
  3335. SeeAlso: AH=09h,AH=85h
  3336. ----------140B-------------------------------
  3337. INT 14 - FOSSIL - TRANSMIT NO WAIT
  3338.     AH = 0Bh
  3339.     AL = character
  3340.     DX = port number
  3341. Return: AX = 0000h character not accepted
  3342.        = 0001h character accepted
  3343. SeeAlso: AH=01h
  3344. ----------140C-------------------------------
  3345. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  3346.     AH = 0Ch
  3347.     DX = port number
  3348. Return: AX = FFFFh character not available
  3349.     AX = 00xxh character xx available
  3350. SeeAlso: AH=20h
  3351. ----------140D-------------------------------
  3352. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  3353.     AH = 0Dh
  3354. Return: AX = FFFFh character not available
  3355.        = xxyyh standard IBM-style scan code
  3356. SeeAlso: AH=0Eh
  3357. ----------140E-------------------------------
  3358. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  3359.     AH = 0Eh
  3360. Return: AX = xxyyh standard IBM-style scan code
  3361. SeeAlso: AH=0Dh
  3362. ----------140F-------------------------------
  3363. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  3364.     AH = 0Fh
  3365.     AL = bit mask describing flow control requested
  3366.         0: xon/xoff on transmit (watch for xoff while sending)
  3367.         1: CTS/RTS (CTS on transmit/RTS on receive)
  3368.         2: reserved
  3369.         3: xon/xoff on receive (send xoff when buffer near full)
  3370.         4-7: all 1
  3371.     DX = port number
  3372. ----------1410-------------------------------
  3373. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  3374.     AH = 10h
  3375.     AL = bit mask
  3376.         0: enable/disable ^C/^K checking
  3377.         1: enable/disable the transmitter
  3378.     DX = port number
  3379. ----------1411-------------------------------
  3380. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  3381.     AH = 11h
  3382.     DH = row
  3383.     DL = column
  3384. Note:    this is the same as INT 10/AH=02h
  3385. SeeAlso: AH=12h
  3386. ----------1412-------------------------------
  3387. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  3388.     AH = 12h
  3389. Return: DH = row
  3390.     DL = column
  3391. Note:    this is the same as INT 10/AH=03h
  3392. SeeAlso: AH=11h
  3393. ----------1413-------------------------------
  3394. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  3395.     AH = 13h
  3396.     AL = character
  3397. Note:    should not be called if it is unsafe to call DOS
  3398. SeeAlso: AH=15h
  3399. ----------1414-------------------------------
  3400. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  3401.     AH = 14h
  3402.     AL = 01h enable watchdog
  3403.          00h disable watchdog
  3404.     DX = port number
  3405. ----------1415-------------------------------
  3406. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  3407.     AH = 15h
  3408.     AL = character
  3409. SeeAlso: AH=13h
  3410. ----------1416-------------------------------
  3411. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  3412.     AH = 16h
  3413.     AL = function
  3414.         00h = delete
  3415.         01h = add
  3416.     ES:DX -> routine to call
  3417. Return: AX = 0000h successful
  3418.          0001h unsuccessful
  3419. SeeAlso: AH=07h
  3420. ----------1417-------------------------------
  3421. INT 14 - FOSSIL - REBOOT SYSTEM
  3422.     AH = 17h
  3423.     AL = method
  3424.         00h = cold boot
  3425.         01h = warm boot
  3426. ----------1418-------------------------------
  3427. INT 14 - FOSSIL - READ BLOCK
  3428.     AH = 18h
  3429.     CX = maximum number of characters to transfer
  3430.     DX = port number
  3431.     ES:DI -> user buffer
  3432. Return: AX = number of characters transfered
  3433. SeeAlso: AH=19h,AH=83h,AX=FF02h
  3434. ----------1419-------------------------------
  3435. INT 14 - FOSSIL - WRITE BLOCK
  3436.     AH = 19h
  3437.     CX = maximum number of characters to transfer
  3438.     DX = port number
  3439.     ES:DI -> user buffer
  3440. Return: AX = number of characters transfered
  3441. SeeAlso: AH=18h,AH=86h
  3442. ----------141A-------------------------------
  3443. INT 14 - FOSSIL - BREAK BEGIN OR END
  3444.     AH = 1Ah
  3445.     AL = 00h stop sending 'break'
  3446.          01h start sending 'break'
  3447.     DX = port number
  3448. SeeAlso: AH=06h,AH=8Ah,AH=FAh
  3449. ----------141B-------------------------------
  3450. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  3451.     AH = 1Bh
  3452.     DX = port number
  3453.     CX = size of user buffer
  3454.     ES:DI -> user buffer for driver info (see below)
  3455. Return: AX = number of characters transferred
  3456.     CX = 3058h ("0X") (X00 FOSSIL only)
  3457.     DX = 2030h (" 0") (X00 FOSSIL only)
  3458.  
  3459. Format of driver info:
  3460. Offset    Size    Description
  3461.  00h    WORD    size of structure in bytes
  3462.  02h    BYTE    FOSSIL spec driver conforms to
  3463.  03h    BYTE    revision level of this specific driver
  3464.  04h    DWORD    pointer to ASCIZ identification string
  3465.  08h    WORD    size of the input buffer
  3466.  0Ah    WORD    number of bytes left in buffer
  3467.  0Ch    WORD    size of the output buffer
  3468.  0Eh    WORD    number of bytes left in buffer
  3469.  10h    BYTE    width of screen
  3470.  11h    BYTE    length of screen
  3471.  12h    BYTE    actual baud rate, computer to modem
  3472. ----------141C-------------------------------
  3473. INT 14 - X00 FOSSIL - ACTIVATE PORT
  3474.     AH = 1Ch
  3475.     DX = port number
  3476. Return: AX = 1954h if successful
  3477.     BL = maximum function number supported (not including 7Eh and above)
  3478.     BH = revision of FOSSIL specification supported
  3479. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  3480.       with the PS/2 BIOS in a future release
  3481. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  3482. ----------141D-------------------------------
  3483. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  3484.     AH = 1Dh
  3485.     DX = port number
  3486. Return: none
  3487. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  3488.       with the PS/2 BIOS in a future release
  3489.     ignored if the port was never activated with AH=04h or AH=1Ch
  3490. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  3491. ----------141E-------------------------------
  3492. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  3493.     AH = 1Eh
  3494.     AL = break status
  3495.         00h if break
  3496.         01h if no break
  3497.     BH = parity
  3498.         00h no parity
  3499.         01h odd parity
  3500.         02h even parity
  3501.         03h stick parity odd
  3502.         04h stick parity even
  3503.     BL = number of stop bits
  3504.         00h one stop bit
  3505.         01h two stop bits (1.5 if 5 bit word length)
  3506.     CH = word length
  3507.         00h 5 bits
  3508.         01h 6 bits
  3509.         02h 7 bits
  3510.         03h 8 bits
  3511.     CL = bps rate
  3512.         00h 110
  3513.         01h 150
  3514.         02h 300
  3515.         03h 600
  3516.         04h 1200
  3517.         05h 2400
  3518.         06h 4800
  3519.         07h 9600
  3520.         08h 19200
  3521.     DX = port number
  3522. Return: AX = port status code (see AH=00h)
  3523. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  3524.     if the port was locked at X00 load time, the appropriate parameters are
  3525.       ignored
  3526. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  3527. ----------141F-------------------------------
  3528. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  3529.     AH = 1Fh
  3530.     AL = 00h read modem control register
  3531.           Return: BL = modem control register (see below)
  3532.               AH = status
  3533.     AL = 01h write modem control register
  3534.           BL = modem control register
  3535.           bit 0: data terminal ready
  3536.           bit 1: request to send
  3537.           bit 2: OUT1
  3538.           bit 3: OUT2 (interrupts) enabled
  3539.           bit 4: LOOP
  3540.           bits 5-7 reserved
  3541.           Return: AX = status
  3542.     DX = port number
  3543. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  3544. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  3545.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  3546. ----------1420-------------------------------
  3547. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  3548.     AH = 20h
  3549.     DX = port number
  3550. Return: AH = 00h if character was available
  3551.         AL = next character (removed from receive buffer)
  3552.     AX = FFFFh if no character available
  3553. SeeAlso: AH=0Ch
  3554. ----------1421-------------------------------
  3555. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  3556.     AH = 21h
  3557.     AL = character
  3558.     DX = port number
  3559. Notes:    the given character is inserted at the end of the receive buffer as if
  3560.       it had just arrived from the serial port; all normal receive
  3561.       processing (XON/XOFF, ^C/^K) is performed on the character
  3562.     fully re-entrant
  3563. ----------147E-------------------------------
  3564. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  3565.     AH = 7Eh
  3566.     AL = code assigned to external application
  3567.         80h communications FOSSIL
  3568.         81h video FOSSIL
  3569.         82h keyboard FOSSIL
  3570.         83h system FOSSIL
  3571.     ES:DX -> entry point
  3572. Return: AX = 1954h
  3573.     BL = code assigned to application (same as input AL)
  3574.     DH = 00h failed
  3575.          01h successful
  3576. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  3577. ----------147F-------------------------------
  3578. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  3579.     AH = 7Fh
  3580.     AL = code assigned to external application
  3581.     ES:DX -> entry point
  3582. Return: AX = 1954h
  3583.     BL = code assigned to application (same as input AL)
  3584.     DH = 00h failed
  3585.          01h successful
  3586. SeeAlso: AH=7Eh
  3587. ----------1480-------------------------------
  3588. INT 14 - COMMUNICATIONS FOSSIL
  3589.     AH = 80h
  3590. SeeAlso: AH=7Eh
  3591. ----------1480-------------------------------
  3592. INT 14 - COURIERS.COM - INSTALLATION CHECK
  3593.     AH = 80h
  3594. Return: AH = E8h if loaded
  3595. Note:    COURIERS is a TSR utility by PC Magazine
  3596. ----------148100-----------------------------
  3597. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  3598.     AX = 8100h
  3599.     ES:DI -> buffer for VFOSSIL information (see below)
  3600. Return: AX = 1954h if installed
  3601. SeeAlso: AH=7Eh,AX=8101h
  3602.  
  3603. Format of VFOSSIL information:
  3604. Offset    Size    Description
  3605.  00h    WORD    size of information in bytes, including this field
  3606.  02h    WORD    VFOSSIL major version
  3607.  04h    WORD    VFOSSIL revision level
  3608.  06h    WORD    highest VFOSSIL application function supported
  3609. ----------148101-----------------------------
  3610. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  3611.     AX = 8101h
  3612.     CX = length of buffer for application function table in bytes
  3613.     ES:DI -> application function table (see below)
  3614. Return: AX = 1954h if installed
  3615.         BH = highest VFOSSIL application function supported
  3616. Note:    the number of initialized pointers in the application function table
  3617.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  3618.       will be initialized
  3619. SeeAlso: AX=8102h
  3620.  
  3621. Format of application function table:
  3622. Offset    Size    Description
  3623.  00h    DWORD    -> function to query current video mode (VioGetMode)
  3624.  04h    DWORD    -> function to set video mode (VioSetMode)
  3625.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  3626.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  3627.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  3628.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  3629.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  3630.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  3631.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  3632.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  3633.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  3634.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  3635.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  3636.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  3637.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  3638.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  3639.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  3640.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  3641.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  3642.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  3643.  
  3644. Format of video mode data structure:
  3645. Offset    Size    Description
  3646.  00h    WORD    length of structure including this field
  3647.  02h    BYTE    mode characteristics
  3648.         bit 0: clear if MDA, set otherwise
  3649.         bit 1: graphics mode
  3650.         bit 2: color disabled (black-and-white)
  3651.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  3652.  04h    WORD    number of text columns
  3653.  06h    WORD    number of text rows
  3654.  08h    WORD    reserved
  3655.  0Ah    WORD    reserved
  3656.  0Ch    DWORD    reserved
  3657.  
  3658. Format of video configuration data:
  3659. Offset    Size    Description
  3660.  00h    WORD    structure length including this field
  3661.  02h    WORD    adapter type
  3662.         00h monochrome/printer
  3663.         01h CGA
  3664.         02h EGA
  3665.         03h VGA
  3666.         07h 8514/A
  3667.  04h    WORD    display type
  3668.         00h monochrome
  3669.         01h color
  3670.         02h enhanced color
  3671.         09h 8514
  3672.  06h    DWORD    adapter memory size
  3673.  
  3674. Format of cursor type record:
  3675. Offset    Size    Description
  3676.  00h    WORD    cursor start line
  3677.  02h    WORD    cursor end line
  3678.  04h    WORD    cursor width (always 01h)
  3679.  06h    WORD    cursor attribute (FFFFh = hidden)
  3680.  
  3681. Call VioGetMode with:
  3682.     STACK:    WORD    VIO handle (must be 00h)
  3683.         DWORD    pointer to video mode data structure (see above)
  3684. Return: AX = error code (00h, 74h, 17Eh, 1B4h)
  3685.         0000h successful
  3686.         0074h internal VIO failure
  3687.         0163h unsupported mode
  3688.         0166h invalid row value
  3689.         0167h invalid column value
  3690.         017Eh buffer too small
  3691.         01A5h invalid VIO parameter
  3692.         01B4h invalid VIO handle
  3693.  
  3694. Call VioSetMode with:
  3695.     STACK:    WORD    VIO handle (must be 00h)
  3696.         DWORD    pointer to video mode data structure (see above)
  3697. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  3698.  
  3699. Call VioGetConfig with:
  3700.     STACK:    WORD    VIO handle (must be 00h)
  3701.         DWORD    pointer to video configuration data buffer (see above)
  3702. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  3703.  
  3704. Call VioWrtTTY with:
  3705.     STACK:    WORD    VIO handle (must be 00h)
  3706.         WORD    length of string
  3707.         DWORD    pointer to character string to be written to screen
  3708. Return: AX = error code (00h, 74h, 1B4h) (see above)
  3709. Notes:    write wraps at end of line and terminates if it reaches end of screen
  3710.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  3711.       not required to be reentrant; in non-ANSI mode, the function is
  3712.       reentrant and may be called from within an MSDOS function call
  3713.  
  3714. Call VioGetANSI with:
  3715.     STACK:    WORD    VIO handle (must be 00h)
  3716.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  3717.             or 01h if ANSI is on
  3718. Return: AX = error code (00h, 74h, 1B4h) (see above)
  3719.  
  3720. Call VioSetANSI with:
  3721.     STACK:    WORD    VIO handle (must be 00h)
  3722.         DWORD    pointer to WORD indicating new state of ANSI
  3723.             00h off
  3724.             01h on
  3725. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  3726.  
  3727. Call VioGetCurPos with:
  3728.     STACK:    WORD    VIO handle (must be 00h)
  3729.         DWORD    pointer to WORD to hold current cursor column (0-based)
  3730.         DWORD    pointer to WORD to hold current cursor row (0-based)
  3731. Return: AX = error code (00h, 74h, 1B4h) (see above)
  3732.  
  3733. Call VioSetCurPos with:
  3734.     STACK:    WORD    VIO handle (must be 00h)
  3735.         WORD    cursor column
  3736.         WORD    cursor row
  3737. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3738. Note:    if either coordinate is invalid, the cursor is not moved
  3739.  
  3740. Call VioGetCurType with:
  3741.     STACK:    WORD    VIO handle (must be 00h)
  3742.         DWORD    pointer to cursor type record (see above)
  3743. Return: AX = error code (00h, 74h, 1B4h) (see above)
  3744.  
  3745. Call VioSetCurType with:
  3746.     STACK:    WORD    VIO handle (must be 00h)
  3747.         DWORD    pointer to cursor type record (see above)
  3748. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  3749.  
  3750. Call VioScrollUp with:
  3751.     STACK:    WORD    VIO handle (must be 00h)
  3752.         DWORD    pointer to char/attr cell for filling emptied rows
  3753.         WORD    number or rows to scroll (FFFFh = clear area)
  3754.         WORD    right column of scroll area
  3755.         WORD    bottom row of scroll area
  3756.         WORD    left column of scroll area
  3757.         WORD    top row of scroll area
  3758. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3759.  
  3760. Call VioScrollDn with:
  3761.     STACK:    WORD    VIO handle (must be 00h)
  3762.         DWORD    pointer to char/attr cell for filling emptied rows
  3763.         WORD    number or rows to scroll (FFFFh = clear area)
  3764.         WORD    right column of scroll area
  3765.         WORD    bottom row of scroll area
  3766.         WORD    left column of scroll area
  3767.         WORD    top row of scroll area
  3768. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3769.  
  3770. Call VioReadCellStr with:
  3771.     STACK:    WORD    VIO handle (must be 00h)
  3772.         WORD    column at which to start reading
  3773.         WORD    row at which to start reading
  3774.         DWORD    pointer to WORD containing length of buffer in bytes
  3775.             on return, WORD contains number of bytes actually read
  3776.         DWORD    pointer to buffer for cell string
  3777. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  3778.  
  3779. Call VioReadCharStr with:
  3780.     STACK:    WORD    VIO handle (must be 00h)
  3781.         WORD    column at which to start reading
  3782.         WORD    row at which to start reading
  3783.         DWORD    pointer to WORD containing length of buffer in bytes
  3784.             on return, WORD contains number of bytes actually read
  3785.         DWORD    pointer to buffer for character string
  3786. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  3787.  
  3788. Call VioWrtCellStr with:
  3789.     STACK:    WORD    VIO handle (must be 00h)
  3790.         WORD    column at which to start writing
  3791.         WORD    row at which to start writing
  3792.         WORD    length of cell string in bytes
  3793.         DWORD    pointer to cell string to write
  3794. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3795. Note:    write wraps at end of line and terminates if it reaches end of screen
  3796.  
  3797. Call VioWrtCharStr with:
  3798.     STACK:    WORD    VIO handle (must be 00h)
  3799.         WORD    column at which to start writing
  3800.         WORD    row at which to start writing
  3801.         WORD    length of character string
  3802.         DWORD    pointer to character string to write
  3803. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3804. Note:    write wraps at end of line and terminates if it reaches end of screen
  3805.  
  3806. Call VioWrtCharStrAttr with:
  3807.     STACK:    WORD    VIO handle (must be 00h)
  3808.         DWORD    pointer to attribute to be applied to each character
  3809.         WORD    column at which to start writing
  3810.         WORD    row at which to start writing
  3811.         WORD    length of character string
  3812.         DWORD    pointer to character string to write
  3813. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3814. Note:    write wraps at end of line and terminates if it reaches end of screen
  3815.  
  3816. Call VioWrtNAttr with:
  3817.     STACK:    WORD    VIO handle (must be 00h)
  3818.         WORD    column at which to start writing
  3819.         WORD    row at which to start writing
  3820.         WORD    number of times to write attribute
  3821.         DWORD    pointer to display attribute to replicate
  3822. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3823. Note:    write wraps at end of line and terminates if it reaches end of screen
  3824.  
  3825. Call VioWrtNCell with:
  3826.     STACK:    WORD    VIO handle (must be 00h)
  3827.         WORD    column at which to start writing
  3828.         WORD    row at which to start writing
  3829.         WORD    number of times to write cell
  3830.         DWORD    pointer to cell to replicate
  3831. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3832. Note:    write wraps at end of line and terminates if it reaches end of screen
  3833.  
  3834. Call VioWrtNChar with:
  3835.     STACK:    WORD    VIO handle (must be 00h)
  3836.         WORD    column at which to start writing
  3837.         WORD    row at which to start writing
  3838.         WORD    number of times to write character
  3839.         DWORD    pointer to character to replicate
  3840. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  3841. Note:    write wraps at end of line and terminates if it reaches end of screen
  3842. ----------148102-----------------------------
  3843. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  3844.     AX = 8102h
  3845. Return: AX = 1954h
  3846. Note:    terminates all operations; after this call, the video FOSSIL may either
  3847.       be removed from memory or reinitialized
  3848. SeeAlso: AX=8101h,AX=8103h
  3849. ----------148103-----------------------------
  3850. INT 14 - VIDEO FOSSIL - UNINSTALL
  3851.     AX = 8103h
  3852. Return:    AX = 1954h
  3853. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  3854. ----------1481-------------------------------
  3855. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  3856.     AH = 81h
  3857.     AL = port number (1-4)
  3858. Return: AH = 00h port available
  3859.          01h port exists but already in use
  3860.          02h port nonexistent
  3861. Note:    COURIERS is a TSR utility by PC Magazine
  3862. SeeAlso: AH=83h,AH=8Dh
  3863. ----------1482-------------------------------
  3864. INT 14 - KEYBOARD FOSSIL
  3865.     AH = 82h
  3866. SeeAlso: AH=7Eh
  3867. ----------1482-------------------------------
  3868. INT 14 - COURIERS.COM - CONFIGURE PORT
  3869.     AH = 82h
  3870.     AL = port number (1-4)
  3871.     BX = speed (bps)
  3872.     CX = bit flags
  3873.         bit 0: enable input flow control
  3874.         bit 1: enable output flow control
  3875.         bit 2: use X.PC protocol (not yet implemented)
  3876. SeeAlso: AH=00h,AH=8Ch
  3877. ----------1483-------------------------------
  3878. INT 14 - SYSTEM FOSSIL
  3879.     AH = 83h
  3880. SeeAlso: AH=7Eh
  3881. ----------1483-------------------------------
  3882. INT 14 - COURIERS.COM - START INPUT
  3883.     AH = 83h
  3884.     ES:BX -> circular input buffer
  3885.     CX = length of buffer 
  3886.         (should be at least 128 bytes if input flow control enabled)
  3887. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h
  3888. ----------1484-------------------------------
  3889. INT 14 - COURIERS.COM - READ CHARACTER
  3890.     AH = 84h
  3891. Return: ZF set if no characters available
  3892.     ZF clear
  3893.        AL = character
  3894.        AH = modem status bits
  3895.         bit 7: set on input buffer overflow
  3896. SeeAlso: AH=02h,AH=86h,AH=89h
  3897. ----------1485-------------------------------
  3898. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  3899.     AH = 85h
  3900. SeeAlso: AH=0Ah,AH=88h
  3901. ----------1486-------------------------------
  3902. INT 14 - COURIERS.COM - START OUTPUT
  3903.     AH = 86h
  3904.     ES:BX -> output buffer
  3905.     CX = length of output buffer
  3906. SeeAlso: AH=19h,AH=83h,AH=A4h
  3907. ----------1487-------------------------------
  3908. INT 14 - COURIERS.COM - OUTPUT STATUS
  3909.     AH = 87h
  3910. Return: AX = number of unsent characters
  3911. ----------1488-------------------------------
  3912. INT 14 - COURIERS.COM - ABORT OUTPUT
  3913.     AH = 88h
  3914. SeeAlso: AH=09h,AH=85h
  3915. ----------1489-------------------------------
  3916. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  3917.     AH = 89h
  3918.     CL = character to send
  3919. SeeAlso: AH=01h,AH=84h
  3920. ----------148A-------------------------------
  3921. INT 14 - COURIERS.COM - SEND BREAK
  3922.     AH = 8Ah
  3923. SeeAlso: AH=89h,AH=FAh
  3924. ----------148C-------------------------------
  3925. INT 14 - COURIERS.COM - SET SPEED
  3926.     AH = 8Ch
  3927.     BX = speed in bps
  3928. SeeAlso: AH=00h,AH=82h
  3929. ----------148D-------------------------------
  3930. INT 14 - COURIERS.COM - DECONFIGURE PORT
  3931.     AH = 8Dh
  3932. SeeAlso: AH=82h
  3933. ----------14A0-------------------------------
  3934. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  3935.     AH = A0h
  3936.     ???
  3937. Return: ???
  3938. ----------14A1-------------------------------
  3939. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  3940.     AH = A1h
  3941.     ???
  3942. Return: ???
  3943. ----------14A4-------------------------------
  3944. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  3945.     AH = A4h
  3946.     CX = length
  3947.     DH = session number (00h)
  3948.     ES:BX -> buffer
  3949. Return: CX = number of bytes sent
  3950. SeeAlso: AH=19h,AH=86h
  3951. ----------14A5-------------------------------
  3952. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  3953.     AH = A5h
  3954.     CX = length
  3955.     DH = session number (00h)
  3956.     ES:BX -> buffer
  3957. Return: CX = number of bytes read
  3958. SeeAlso: AH=18h,AH=83h,AX=FF02h
  3959. ----------14A6-------------------------------
  3960. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  3961.     AH = A6h
  3962.     DH = session number (00h)
  3963. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
  3964. ----------14A7-------------------------------
  3965. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  3966.     AH = A7h
  3967.     ???
  3968. Return: ???
  3969. ----------14AF00-----------------------------
  3970. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  3971.     AX = AF00h
  3972.     BX = AAAAh
  3973. Return: AX = AF01h if installed
  3974. ----------14B0-------------------------------
  3975. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  3976.     AH = B0h
  3977.     AL = 00h disable
  3978.        = 01h enable
  3979. ----------14B1-------------------------------
  3980. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  3981.     AH = B1h
  3982. ----------14F4FF-----------------------------
  3983. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  3984.     AX = F4FFh
  3985.     DX = port (00h-03h)
  3986. Return: CF clear if present
  3987.         AX = 0000h
  3988.     CF set if not present
  3989.         AX <> 0000h
  3990. ----------14F9-------------------------------
  3991. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  3992.     AH = F9h
  3993.     DX = port (00h-03h)
  3994. ----------14FA-------------------------------
  3995. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  3996.     AH = FAh
  3997.     DX = port (00h-03h)
  3998. SeeAlso: AH=1Ah,AH=8Ah
  3999. ----------14FB-------------------------------
  4000. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  4001.     AH = FBh
  4002.     AL = modem control register
  4003.         bit 0: data terminal ready
  4004.         1: request to send
  4005.         2: OUT1
  4006.         3: OUT2
  4007.         4: loopback
  4008.         bits 5-7 unused
  4009.     DX = port (00h-03h)
  4010. ----------14FC-------------------------------
  4011. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  4012.     AH = FCh
  4013.     DX = port (00h-03h)
  4014. Return: AH = RS232 status bits (see AH=00h)
  4015.     AL = character
  4016. SeeAlso: AH=02h,AH=0Ch
  4017. ----------14FD02-----------------------------
  4018. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  4019.     AX = FD02h
  4020. Return: CX = number of characters available
  4021. ----------14FF02-----------------------------
  4022. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  4023.     AX = FF02h
  4024.     CX = length
  4025.     DX = port (00h-03h)
  4026.     ES:BX -> buffer
  4027. Return: CX = number of characters read
  4028. SeeAlso: AH=18h,AH=83h,AH=A5h
  4029. ----------1500-------------------------------
  4030. INT 15 - CASSETTE - TURN ON MOTOR (PC,Jr)
  4031.     AH = 00h
  4032. Return: CF set on error, AH = 86h if no cassette present
  4033. ----------1500-------------------------------
  4034. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  4035.     AH = 00h
  4036. Return: CX = signed X count
  4037.     DX = signed Y count
  4038. ----------1500-------------------------------
  4039. INT 15 - VMiX v2+ - INSTALLATION CHECK???
  4040.     AH = 00h
  4041. Return: DX = 0798h???
  4042. ----------1501-------------------------------
  4043. INT 15 - CASSETTE - TURN OFF MOTOR (PC,Jr)
  4044.     AH = 01h
  4045. Return: CF set on error, AH = 86h if no cassette present
  4046. ----------1501-------------------------------
  4047. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  4048.     AH = 01h
  4049.     AL = NVRAM location (00h to 3Fh)
  4050.     BL = NVRAM data value
  4051. Return: AH = return code
  4052.         00h OK
  4053.         01h address bad
  4054.         02h write error
  4055. SeeAlso: AH=02h"Amstrad"
  4056.  
  4057. Format of NVRAM:
  4058. Offset    Size    Description
  4059.  00h    BYTE    time of day: seconds
  4060.  01h    BYTE    alarm time: seconds
  4061.  02h    BYTE    time of day: minutes
  4062.  03h    BYTE    alarm time: minutes
  4063.  04h    BYTE    time of day: hours
  4064.  05h    BYTE    alarm time: hours
  4065.  06h    BYTE    day of week, 1 = Sunday
  4066.  07h    BYTE    day of month
  4067.  08h    BYTE    month
  4068.  09h    BYTE    year mod 100
  4069.  0Ah    BYTE    RTC status register A
  4070.         bit 7: set if date/time being updated
  4071.             6-4: time base speed, default 010 = 32768 Hz
  4072.             3-0: interrupt rate selection, default 0110 = 1024 Hz
  4073.  0Bh    BYTE    RTC status register B
  4074.         bit 7: clear if normal update, set if abort update
  4075.             6: periodic interrupt enable
  4076.             5: alarm interrupt enable
  4077.             4: update end interrupt enable
  4078.             3: square wave enable
  4079.             2: date mode (clear = BCD, set = binary)
  4080.             1: 24-hour format
  4081.             0: daylight saving time enable
  4082.  0Ch    BYTE    RTC status register C (read-only)
  4083.         bit 7: IRQF flag
  4084.             6: PF flag
  4085.             5: AF flag
  4086.             4: UF flag
  4087.  0Dh    BYTE    RTC status register D
  4088.         bit 7: battery good
  4089.  0Eh  6 BYTEs    time and date machine last used
  4090.  14h    BYTE    user RAM checksum
  4091.  15h    WORD    Enter key scancode/ASCII code
  4092.  17h    WORD    Forward delete key scancode/ASCII code
  4093.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  4094.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  4095.  1Dh    WORD    mouse button 1 scancode/ASCII code
  4096.  1Fh    WORD    mouse button 2 scancode/ASCII code
  4097.  21h    BYTE    mouse X scaling factor
  4098.  22h    BYTE    mouse Y scaling factor
  4099.  23h    BYTE    initial VDU mode and drive count
  4100.  24h    BYTE    initial VDU character attribute
  4101.  25h    BYTE    size of RAM disk in 2K blocks
  4102.  26h    BYTE    initial system UART setup byte
  4103.  27h    BYTE    initial external UART setup byte
  4104.  28h 24 BYTEs    available for user application
  4105. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  4106.       the clock chip
  4107. ----------1501-------------------------------
  4108. INT 15 - VMiX - I/O CHANNEL OBJECT MANAGER
  4109.     AH = 01h
  4110.     STACK: WORD  object ID of requestor
  4111.            DWORD pointer to name of requested method
  4112.            WORD  arg1
  4113.            WORD  arg2
  4114.            WORD  arg3
  4115.            WORD  arg4
  4116. Return: DX:AX??? -> IRP structure or 0000h:0000h 
  4117. ----------1502-------------------------------
  4118. INT 15 - CASSETTE - READ DATA BLOCKS (PC,Jr)
  4119.     AH = 02h
  4120.     CX = count of bytes
  4121.     ES:BX -> data area
  4122. Return: CF set on error
  4123.     AH = status
  4124.         01h CRC error
  4125.         02h bad tape signals
  4126.         04h no data
  4127.         80h invalid command
  4128.         86h no cassette present
  4129.     DX = count of bytes read
  4130.     ES:BX = pointer past last byte read
  4131. ----------1502-------------------------------
  4132. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  4133.     AH = 02h
  4134.     AL = NVRAM location (00h to 3Fh)
  4135. Return: AH = return code
  4136.         00h OK
  4137.         01h address bad
  4138.         02h checksum error
  4139.     AL = NVRAM data value
  4140. SeeAlso: AH=01h"Amstrad"
  4141. ----------1502-------------------------------
  4142. INT 15 - VMiX - MEMORY OBJECT MANAGER
  4143.     AH = 02h
  4144.     STACK:    WORD    object ID of requestor
  4145.         DWORD    pointer to name of requested method
  4146.         WORD    arg1
  4147.         WORD    arg2
  4148.         WORD    arg3
  4149.         WORD    arg4
  4150.         WORD    arg5
  4151. Return: DX:AX??? = pointer to memory block
  4152. ----------1503-------------------------------
  4153. INT 15 - CASSETTE - WRITE DATA BLOCKS (PC,Jr)
  4154.     AH = 03h
  4155.     CX = count of bytes to write
  4156.     ES:BX -> data area
  4157. Return: CF set on error
  4158.        AH = status (see AH=02h)
  4159.     ES:BX = pointer past last byte written
  4160.     CX = 0
  4161. ----------1503-------------------------------
  4162. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  4163.     AH = 03h
  4164.     AL = value (I,R,G,B bits)
  4165. SeeAlso: AH=04h"Amstrad"
  4166. ----------1503-------------------------------
  4167. INT 15 - VMiX - PROMPTED CONSOLE INPUT
  4168.     AH = 03h
  4169.     STACK:    DWORD    pointer to ASCII prompt
  4170.         WORD    field outline character
  4171.         WORD    length of input field
  4172.         DWORD    address of pointer to input buffer
  4173.         WORD    number of characters input
  4174. Return: AX = length of input (input buffer is padded with blanks)
  4175. ----------1504-------------------------------
  4176. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  4177.     AH = 04h
  4178.     ES:DI -> results buffer length 20h for System Parameter Table
  4179.     DS = segment containing ABIOS RAM extensions (zero if none)
  4180. Return: AH = 00h success: results at ES:DI
  4181.     CF set on failure
  4182. SeeAlso: AH=05h"ABIOS",C1h
  4183.  
  4184. Format of ABIOS System Parameter Table:
  4185. Offset    Size    Description
  4186.  00h    DWORD    FAR address of ABIOS Common Start Routine
  4187.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  4188.  08h    DWORD    FAR address of ABIOS Time-out Routine
  4189.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  4190.  0Eh 16 BYTEs    reserved
  4191.  1Eh    WORD    number of entries in initialisation table
  4192. ----------1504-------------------------------
  4193. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  4194.     AH = 04h
  4195.     AL = value (RDSEL1 and RDSEL0)
  4196. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  4197. ----------1504-------------------------------
  4198. INT 15 - VMiX - VPRINTF
  4199.     AH = 04h
  4200.     STACK:    DWORD    control string
  4201.         DWORD    array of arguments
  4202. ----------1505-------------------------------
  4203. INT 15 - SYSTEM - BUILD ABIOS INITIALISATION TABLE (PS)
  4204.     AH = 05h
  4205.     ES:DI -> results buffer length (18h * Number_of_Entries)
  4206.     DS = segment containing ABIOS RAM extensions (zero if none)
  4207. Return: AH = 00h success: results at ES:DI
  4208.     CF set on failure
  4209. SeeAlso: AH=04h"ABIOS",C1h
  4210.  
  4211. Format of one entry of ABIOS Initialisation Table:
  4212. Offset    Size    Description
  4213.  00h    WORD    device ID
  4214.  02h    WORD    number of Logical IDs
  4215.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  4216.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  4217.  0Ah    WORD    request block length
  4218.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  4219.  0Eh    WORD    Data Pointers length (in Common Data Area)
  4220.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  4221.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  4222.  12h  6 BYTEs    reserved
  4223. ----------1505-------------------------------
  4224. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  4225.     AH = 05h
  4226.     AL = value (I,R,G,B bits)
  4227. SeeAlso: AH=04h"Amstrad"
  4228. ----------1505-------------------------------
  4229. INT 15 - VMiX - GET PROCESS ID OF CURRENT PROCESS
  4230.     AH = 05h
  4231. Return: AX = process ID
  4232. ----------1506-------------------------------
  4233. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  4234.     AH = 06h
  4235. Return: BX = version number
  4236. ----------1506-------------------------------
  4237. INT 15 - VMiX - GET POINTER TO PROCESS CONTROL BLOCK
  4238.     AH = 06h
  4239.     STACK:    WORD    process ID
  4240. Return: DX:AX??? -> process control block
  4241. ----------1507-------------------------------
  4242. INT 15 - VMiX - GET POINTER TO OBJECT CONTROL BLOCK
  4243.     AH = 07h
  4244.     STACK:    WORD    object type
  4245. Return: DX:AX??? -> object control block
  4246. ----------1508-------------------------------
  4247. INT 15 - VMiX - GET CHANNEL CONTROL BLOCK
  4248.     AH = 08h
  4249.     STACK:    WORD    channel ID
  4250. Return: DX:AX??? -> channel control block
  4251. ----------1509-------------------------------
  4252. INT 15 - VMiX - GET ID OF QUEUED ELEMENT
  4253.     AH = 09h
  4254.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4255.         WORD    subqueue ID
  4256. Return: AX = ID
  4257. ----------150A-------------------------------
  4258. INT 15 - VMiX - GET ID OF NEXT QUEUED ELEMENT
  4259.     AH = 0Ah
  4260.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  4261.         WORD    ID of current element in queue chain
  4262. Return: AX = ID of next element
  4263. ----------150B-------------------------------
  4264. INT 15 - VMiX - GET TOTAL NUMBER OF ACTIVE PROCESSES
  4265.     AH = 0Bh
  4266. Return: AX = number of active processes
  4267. ----------150C-------------------------------
  4268. INT 15 - VMiX - GET POINTER TO PROCESS TSS STACK
  4269.     AH = 0Ch
  4270.     STACK:    WORD    process ID
  4271. Return: DX:AX??? -> TSS stack store
  4272. ----------150D-------------------------------
  4273. INT 15 - VMiX - START A CHILD PROCESS JOB SHELL
  4274.     AH = 0Dh
  4275.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  4276.             followed by standard VMiX shell command string
  4277. Return: AX = status
  4278. SeeAlso: AH=0Eh"VMIX"
  4279. ----------150E-------------------------------
  4280. INT 15 - VMiX - TERMINATE PROCESS
  4281.     AH = 0Eh
  4282.     STACK:    WORD    process ID
  4283. Return: AX = status
  4284. SeeAlso: AH=0Dh"VMIX"
  4285. ----------150F-------------------------------
  4286. INT 15 - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  4287.     AH = 0Fh
  4288.     AL = phase code
  4289.         00h reserved
  4290.         01h surface analysis
  4291.         02h formatting
  4292. Return: CF clear if formatting should continue, set if it should terminate
  4293. Note:    called during ESDI drive formatting after each cylinder is completed
  4294. SeeAlso: INT 13/AH=1Ah
  4295. ----------150F-------------------------------
  4296. INT 15 - VMiX - GET KEY FIELD OF QUEUED ELEMENT
  4297.     AH = 0Fh
  4298.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  4299.         WORD    ID of element in queue chain
  4300. Return: AX = key
  4301. ----------1510-------------------------------
  4302. INT 15 - VMiX - EXECUTE FUNCTION IN PROTECTED MODE
  4303.     AH = 10h
  4304.     STACK:    DWORD    pointer to function
  4305.           N    WORDs    function args
  4306. Return: ???
  4307. ----------151000-----------------------------
  4308. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  4309.     AX = 1000h
  4310. Return: after other processes run
  4311. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  4312.       the current time-slice is set to expire at the next clock tick rather
  4313.       than immediately
  4314. SeeAlso: INT 2F/AX=1680h
  4315. ----------151001-----------------------------
  4316. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  4317.     AX = 1001h
  4318.     BX = number of bytes to allocate
  4319. Return: ES:DI -> block of memory or 0000h:0000h (DV 2.26+)
  4320. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  4321.       common memory
  4322. SeeAlso: AX=1002h,AX=DE0Ch,AX=DE15h
  4323. ----------151002-----------------------------
  4324. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  4325.     AX = 1002h
  4326.     ES:DI -> previously allocated block
  4327. Return: block freed
  4328. SeeAlso: AX=1001h,DE0Dh
  4329. ----------151003-----------------------------
  4330. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  4331.     AX = 1003h
  4332.     BH = attribute
  4333.     BL = character
  4334.     DX = segment of object handle for window
  4335. Note:    BX=0 does not display anything, it only positions the hardware cursor
  4336. ----------1510-------------------------------
  4337. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4338.     AH = 10h
  4339.     AL = 04h thru 12h
  4340. Return: pops up "Programming error" window in DV 2.x
  4341. ----------151013-----------------------------
  4342. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4343.     AX = 1013h
  4344.     ES:DI -> FAR service routine
  4345. Return: BX = bit mask indicating which bit was allocated
  4346.          0000h if no more bits available
  4347. SeeAlso: AX=1014h,AX=1015h
  4348. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  4349.       interrupt; if other calls need to be made, the interrupt handler
  4350.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  4351. ----------151014-----------------------------
  4352. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  4353.     AX = 1014h
  4354.     BX = bit mask from INT 15/AX=1013h
  4355. SeeAlso: AX=1013h,AX=1015h
  4356. ----------151015-----------------------------
  4357. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  4358.     AX = 1015h
  4359.     BX = bit mask for interrupts to post
  4360. Return: indicated routines will be called: (DV 2.0x) at next task switch
  4361.                        (DV 2.2x) immediately
  4362. SeeAlso: AX=1013h,AX=1014h
  4363. Notes:    this is one of the few TopView calls which are allowed from a hardware
  4364.       interrupt handler
  4365.     the handler will be called with ES containing the segment of the handle
  4366.       of the next task to be executed; on return, ES must be the segment of
  4367.       a task handle
  4368. ----------151016-----------------------------
  4369. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  4370.     AX = 1016h
  4371.     ES:DI = possible object handle
  4372. Return: BX = FFFFh if ES:DI is a valid object handle
  4373.          0000h if ES:DI is not
  4374. SeeAlso: AX=DE14h
  4375. ----------151017-----------------------------
  4376. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  4377.     AX = 1017h
  4378. Return: pops up "Programming error" window in DV 2.x
  4379. ----------151018-----------------------------
  4380. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  4381.     AX = 1018h
  4382.     BH = column
  4383.     BL = row
  4384.     ES = segment of object handle for window below which to search
  4385.          0000h = start search with topmost window
  4386. Return: ES = segment of object handle for window which is visible at the
  4387.            indicated position, or covered by indicated window
  4388.        = 0000h no window
  4389. SeeAlso: AX=1023h,AX=1024h
  4390. ----------151019-----------------------------
  4391. INT 15 - TopView - "SOUND" - MAKE TONE
  4392.     AX = 1019h
  4393.     BX = frequency in Hertz (0000h = silence)
  4394.     CX = duration in clock ticks (18.2 ticks/sec)
  4395. Return: immediately, tone continues to completion
  4396. Notes:    if another tone is already playing, the new tone does not start until
  4397.       completion of the previous one.  Up to 32 tones may be queued before
  4398.       the process is blocked until a note completes.
  4399.     in DV 2.00, the lowest tone allowed is 20 Hz
  4400.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  4401.       notes are also cancelled
  4402. ----------15101A-----------------------------
  4403. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  4404.     AX = 101Ah
  4405. Return: stack switched
  4406. Notes:    this call may not be nested; a second call must be preceded by a call
  4407.       to "USTACK" (AX=1025h)
  4408.     while TopView requires many API calls to be executed while on the
  4409.       task's internal stack, DESQview allows those calls to be executed
  4410.       regardless of the current stack
  4411. SeeAlso: AX=1025h
  4412. ----------15101B-----------------------------
  4413. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  4414.     AX = 101Bh
  4415. Return: task-switching temporarily disabled
  4416. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  4417.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  4418.       will again be disabled)
  4419.     suspends the caller until DOS is free
  4420. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  4421. ----------15101C-----------------------------
  4422. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  4423.     AX = 101Ch
  4424. Return: task-switching enabled
  4425. Note:    this API call may be made from within a hardware interrupt handler
  4426. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h
  4427. ----------15101D-----------------------------
  4428. INT 15 - TopView - "STOP" - STOP TASK
  4429.     AX = 101Dh
  4430.     ES = segment of object handle for task to be stopped
  4431.          (== handle of main window for that task)
  4432. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  4433. Note:    once a task has been stopped, additional "STOP"s are ignored
  4434. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  4435.       current task
  4436. SeeAlso: AX=101Eh,102Bh
  4437. ----------15101E-----------------------------
  4438. INT 15 - TopView - "START" - START TASK
  4439.     AX = 101Eh
  4440.     ES = segment of object handle for task to be started
  4441.          (== handle of main window for that task)
  4442. Return: indicated task is started up again
  4443. Note:    once a task has been started, additional "START"s are ignored
  4444. SeeAlso: AX=101Dh,102Bh
  4445. ----------15101F-----------------------------
  4446. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  4447.     AX = 101Fh
  4448.     BX = bit fields
  4449.          bits 0-12: number of characters to display
  4450.          bits 13,14: which mouse button may be pressed to remove window
  4451.              00 = either
  4452.              01 = left
  4453.              10 = right
  4454.              11 = either
  4455.          bit 15: beep if 1
  4456.     DS:DI -> text of message
  4457.     CH = width of error window (0 = default)
  4458.     CL = height of error window (0 = default)
  4459.     DX = segment of object handle
  4460. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  4461. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  4462. ----------151020-----------------------------
  4463. INT 15 - TopView - UNIMPLEMENTED IN DV 2.0x
  4464.     AX = 1020h
  4465. Return: pops up "Programming error" window in DV 2.0x
  4466. ----------151021-----------------------------
  4467. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  4468.     AX = 1021h
  4469.     BX = segment of object handle for task to interrupt (not self)
  4470.     DX:CX -> FAR routine to jump to next time task is run
  4471. Return: nothing
  4472. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  4473.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  4474.       needs to be preserved
  4475.     multiple PGMINTs to a single task are processed last-in first-out
  4476.     if the other task is in a DOS or DV API call, the interruption will
  4477.       occur on return from that call
  4478. ----------151022-----------------------------
  4479. INT 15 - TopView - "GETVER" - GET VERSION
  4480.     AX = 1022h
  4481.     BX = 0
  4482. Return: BX nonzero, TopView or compatible loaded
  4483.     (BL = major version, BH = minor version)
  4484. Notes:    TaskView returns BX = 0001h, DESQview 2.0 returns BX = 0A01h
  4485. ----------151023-----------------------------
  4486. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  4487.     AX = 1023h
  4488.     BX = segment of object handle for parent window within which to
  4489.          position the window (0 = full screen)
  4490.     ES = segment of object handle for window to be positioned
  4491.     DL = bit flags
  4492.          bits 0,1: horizontal position
  4493.         00 = current
  4494.         01 = center
  4495.         10 = left
  4496.         11 = right
  4497.          bits 2,3: vertical position
  4498.         00 = current
  4499.         01 = center
  4500.         10 = top
  4501.         11 = bottom
  4502.          bit 4: don't redraw screen if set
  4503.          bits 5-7 not used
  4504.     CH = number of columns to offset from position specified by DL
  4505.     CL = number of rows to offset from position specified by DL
  4506. Return: nothing
  4507. ----------151024-----------------------------
  4508. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  4509.     AX = 1024h
  4510.     BX = segment of object handle for window
  4511.           (0 = use default)
  4512. Return: ES:DI -> virtual screen
  4513.     CX = size of virtual screen in bytes
  4514.     DL = 00h text screen
  4515.          01h graphics screen
  4516. SeeAlso: INT 10/AH=FEh
  4517. ----------151025-----------------------------
  4518. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  4519.     AX = 1025h
  4520. Return: stack switched back
  4521. Notes:    call only after having switched to internal stack with AX=101Ah
  4522.     while TopView requires many API calls to be executed while on the
  4523.       task's private stack, DESQview allows those calls to be executed
  4524.       regardless of the current stack
  4525. SeeAlso: AX=101Ah
  4526. ----------1510-------------------------------
  4527. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  4528.     AH = 10h
  4529.     AL = 26h thru 2Ah
  4530. Return: pops up "Programming error" window in DV 2.x
  4531. ----------15102B-----------------------------
  4532. INT 15 - DESQview 2.0 (TopView???) - "POSTTASK" - AWAKEN TASK
  4533.     AX = 102Bh
  4534.     BX = segment of object handle for task
  4535. Return: nothing
  4536. Note:    forces a task which is waiting on its objectq to continue by placing
  4537.       the handle for the task on the objectq
  4538. SeeAlso: AX=101Dh,AX=101Eh
  4539. ----------15102C-----------------------------
  4540. INT 15 - DESQview 2.0 (TopView???) - START NEW APPLICATION IN NEW PROCESS
  4541.     AX = 102Ch
  4542.     ES:DI -> contents of .PIF/.DVP file (see below)
  4543.     BX = size of .PIF/.DVP info
  4544. Return: BX = segment of object handle for new task
  4545.          0000h on error
  4546.  
  4547. Format of .PIF/.DVP file:
  4548. Offset    Size    Description
  4549.  00h    WORD    reserved (0)
  4550.  02h 30 BYTEs    blank-padded program title
  4551.  20h    WORD    maximum memory to allocate to partition in K
  4552.  22h    WORD    minimum memory required in K
  4553.  24h 64 BYTEs    ASCIZ program pathname
  4554.  64h    BYTE    default drive letter ('A',...)
  4555.  65h 64 BYTEs    ASCIZ default directory name
  4556.  A5h 64 BYTEs    ASCIZ program parameters
  4557.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  4558.  E6h    BYTE    number of text pages used
  4559.  E7h    BYTE    number of first interrupt to save
  4560.  E8h    BYTE    number of last interrupt to save
  4561.  E9h    BYTE    rows in virtual screen buffer
  4562.  EAh    BYTE    columns in virtual screen buffer
  4563.  EBh    BYTE    initial window position, row
  4564.  ECh    BYTE    initial window position, column
  4565.  EDh    WORD    system memory in K
  4566.  EFh 64 BYTEs    ASCIZ shared program name
  4567. 12Fh 64 BYTEs    ASCIZ shared program data file
  4568. 16Fh    BYTE    flags1
  4569.         bit 7: writes text directly to screen
  4570.         bit 6: runs in foreground only
  4571.         bit 5: uses math coprocessor
  4572.         bit 4: accesses system keyboard buffer directly
  4573.         bits 3-1: reserved (0)
  4574.         bit 0: swappable
  4575. 170h    BYTE    flags2
  4576.         bit 6: uses command-line parameters in field at A5h
  4577.         bit 5: swaps interrupt vectors
  4578. ---information unique to .DVP files---
  4579. 171h  2 BYTEs    keys to use on open menu
  4580. 173h    WORD    size of script buffer in bytes
  4581. 175h    WORD    automatically give up CPU after this many tests for keyboard
  4582.         input in one clock tick (default 0 = never)
  4583. 177h    BYTE    nonzero = "uses own colors"
  4584. 178h    BYTE    nonzero if application swappable
  4585. 179h  3 BYTEs    reserved (0)
  4586. 17Ch    BYTE    nonzero to automatically close on exit
  4587. 17Dh    BYTE    nonzero if copy-protect floppy is required
  4588. ---information unique to DESQview 2.0+---
  4589. 17Eh    BYTE    .DVP version number
  4590.         00h DESQview 1.2+
  4591.         01h DESQview 2.0+
  4592.         02h DESQview 2.2+
  4593. 17Fh    BYTE    reserved (0)
  4594. 180h    BYTE    initial number of rows in physical window
  4595. 181h    BYTE    initial number of columns in physical window
  4596. 182h    WORD    maximum expanded memory to allow, in K
  4597. 184h    BYTE    flags3
  4598.         bit 7: automatically assign window position
  4599.         bit 5: maximum memory value has been specified
  4600.         bit 4: disallow "Close" command
  4601.         bit 3: foreground-only when doing graphics
  4602.         bit 2: don't virtualize
  4603. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  4604. 186h    BYTE    number of graphics pages used
  4605. 187h    WORD    extra system memory size
  4606. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  4607. ---information unique to DESQview 2.2+---
  4608. 18Ah    BYTE    serial port usage
  4609.         FFh uses all serial ports
  4610.         00h no serial ports
  4611.         01h only COM1
  4612.         02h only COM2
  4613. 18Bh    BYTE    flags4
  4614.         bit 7: automatically close application on exit if .COM or .EXE
  4615.             specified
  4616.         bit 6: swappable if not using serial ports
  4617.         bit 5: start program with window hidden (v2.26+)
  4618.         bit 4: start program in background (v2.26+)
  4619.         bit 3: virtualize text
  4620.         bit 2: virtualize graphics
  4621.         bit 1: share CPU when foreground
  4622.         bit 0: share EGA when foreground and zoomed
  4623. 18Ch    BYTE    protection level for 386 machines
  4624. 18Dh 19 BYTEs    reserved (0)
  4625. ----------15102D-----------------------------
  4626. INT 15 - DESQview 2.0 - KEYBOARD MOUSE CONTROL
  4627.     AX = 102Dh
  4628.     BL = subfunction
  4629.          00h determine whether using keyboard mouse
  4630.         Return: BL = 00h using real mouse
  4631.                  01h using keyboard mouse
  4632.          01h turn keyboard mouse on
  4633.          02h turn keyboard mouse off
  4634. ----------1511-------------------------------
  4635. INT 15 - TopView commands
  4636.     AH = 11h
  4637.     AL = various (except 17h)
  4638. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  4639.       see those below
  4640. SeeAlso: AH=DEh
  4641. ----------1511-------------------------------
  4642. INT 15 - VMiX - EXECUTE SHELL SYSTEM COMMANDS
  4643.     AH = 11h
  4644.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  4645.             request (max len = 127)
  4646. Return: AX = status
  4647. ----------151117-----------------------------
  4648. INT 15 - DESQview 2.2+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  4649.     AX = 1117h
  4650.     BX = 0000h    get current mapping context without setting
  4651.          nonzero    set new mapping context
  4652. Return: BX = mapping context in effect before call
  4653.     interrupts enabled
  4654. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  4655.     mapping contexts determine conventional-memory addressability; setting
  4656.       a mapping context ensures that the associated program and data areas
  4657.       are in memory for access.  Usable by drivers, TSRs and shared
  4658.       programs.
  4659.     caller need not be running under DESQview, but must ensure that the
  4660.       stack in use will not be mapped out by the call
  4661. SeeAlso: AX=DE17h, INT 2F/AX=1685h
  4662. ----------1511DE-----------------------------
  4663. INT 15 - DESQview - XDV.COM - INSTALLATION CHECK
  4664.     AX = 11DEh
  4665. Return: CF clear if installed
  4666.         AX = segment at which XDV is located
  4667. ----------1512-------------------------------
  4668. INT 15 - VMiX - PUT PROCESS TO SLEEP
  4669.     AH = 12h
  4670.     STACK:    WORD    process ID
  4671. Return: AX = status
  4672. ----------1512--BH00-------------------------
  4673. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  4674.     AH = 12h
  4675.     BH = 00h
  4676.     BL = which handle to return
  4677.         00h handle in DWORD on top of stack
  4678.         01h current task's window handle
  4679.         02h given task's mailbox handle (task's handle on stack)
  4680.         03h current task's mailbox handle
  4681.         04h given task's keyboard handle (task's handle on stack)
  4682.         05h current task's keyboard object handle
  4683.         06h given task's OBJECTQ handle (task's handle on stack)
  4684.         07h current task's OBJECTQ handle
  4685.         08h   \
  4686.           thru > return 0000:0000 under DV < 2.26
  4687.         10h   /
  4688.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  4689.         0Dh (2.26+) task handle of owner (parent) of current task
  4690. Return: DWORD on top of stack is object handle
  4691. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  4692.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  4693.       window)
  4694. ----------1512--BH01-------------------------
  4695. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  4696.     AH = 12h
  4697.     BH = 01h
  4698.     BL = object type to create
  4699.         00h (DV 2.0x only) handle is DWORD on top of stack
  4700.         01h (DV 2.0x only) use task's window handle
  4701.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  4702.         03h (DV 2.0x only) current task's mailbox
  4703.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  4704.         05h (DV 2.0x only) current task's keyboard object
  4705.         08h WINDOW class
  4706.         09h MAILBOX class
  4707.         0Ah KEYBOARD class
  4708.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  4709.         0Fh POINTER object
  4710.         10h PANEL object
  4711.     STACK: (if window object or WINDOW class)
  4712.            DWORD address to jump to (no new task if high word == 0)
  4713.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  4714.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  4715.            DWORD bytes system memory for input buffer for READ/READN
  4716.             (0 == none, -1 == default--same as logical window size)
  4717.            DWORD window size, columns
  4718.            DWORD window size, rows
  4719.            DWORD length of window title
  4720.            DWORD address of window title
  4721. Return: DWORD on top of stack is new object handle
  4722. Notes:    if a new task is created, it is started with
  4723.       AX = BX = SI = DI = BP = 0
  4724.       DX:CX = handle of parent task
  4725.       DS = ES = SS = segment of private stack (and new task's handle)
  4726.     new windows are orphans, inherit the colors/hidden status of the
  4727.       creating task's window, and are placed in the upper left hand corner
  4728.       of the screen but not automatically redrawn
  4729.     new keyboards are closed, and have all object bits cleared except for
  4730.       the hardware cursor bit
  4731. SeeAlso: AH=12h/BH=02h
  4732. ----------1512--BH02-------------------------
  4733. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  4734.     AH = 12h
  4735.     BH = 02h
  4736.     BL = object
  4737.         00h handle in DWORD on top of stack
  4738.         window: close window and free
  4739.         timer: free timer
  4740.         panel: free panel object
  4741.         pointer: free pointer
  4742.         01h task's window handle - kills task, never returns
  4743.         02h given task's mailbox (task's handle on top of stack)
  4744.         03h current task's mailbox
  4745.         04h given task's keyboard (task's handle on top of stack)
  4746.         05h current task's keyboard object
  4747. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  4748.       task windows also free any mailbox, objectq, and panel objects held
  4749.       by the task and any child tasks
  4750.     if the keyboard being freed is the default keyboard for a task, this
  4751.       call is equivalent to CLOSE
  4752.     panel and pointer objects are automatically closed if open
  4753. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh
  4754. ----------1512--BH03-------------------------
  4755. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  4756.     AH = 12h
  4757.     BH = 03h
  4758.     BL = object
  4759.         00h mailbox handle in DWORD on top of stack
  4760.         02h sender of last msg read from mailbox (task's handle on stack)
  4761.         03h sender of last msg read from current task's mailbox
  4762. Return: DWORD on stack is task handle of message sender
  4763. SeeAlso: AH=12h/BH=00h
  4764. ----------1512--BH03-------------------------
  4765. INT 15 - DESQview 2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  4766.     AH = 12h
  4767.     BH = 03h
  4768.     BL = window to be connected
  4769.         00h handle of window to be attached in DWORD on top of stack
  4770.         01h attach current task's main window
  4771.     STACK: DWORD handle of window to attach to or 00000000h to detach
  4772. Return: ???
  4773. Notes:    when two windows are connected, both will move if the user moves either
  4774.     multiple windows may be attached to a single window, but each window
  4775.       may only be attached to one window at a time
  4776. ----------1512--BX0300-----------------------
  4777. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  4778.     AH = 12h
  4779.     BX = 0300h
  4780.     STACK: DWORD handle of panel object
  4781. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  4782.            DWORD address of directory
  4783. Note:    a null string is returned if the object is not open
  4784.  
  4785. Format of panel file:
  4786. Offset    Size    Description
  4787.  00h  2 BYTEs    C0h C3h
  4788.  02h    BYTE    number of panels in file
  4789.  03h    for each panel in file:
  4790.         8 BYTEs  blank-padded panel name
  4791.           DWORD  panel offset in file
  4792.           WORD   panel length
  4793.     data for panels (each consists of one or more window/query/manager
  4794.     streams)
  4795.         first byte of each panel must be 1Bh, fifth byte must be E5h
  4796. ----------1512--BH04-------------------------
  4797. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  4798.     AH = 12h
  4799.     BH = 04h
  4800.     BL = window to read from
  4801.         00h handle is DWORD on top of stack
  4802.         01h use calling task's default window
  4803.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  4804.         0Dh (DV 2.26+) default window of parent task of current task
  4805. Return: STACK:    DWORD number of bytes read
  4806.         DWORD address of buffer
  4807. Notes:    reading starts at the current logical cursor position; the cursor is
  4808.       updated to point at the character following the last one read
  4809.     any translucent blanks (FFh) which are visible on screen are changed
  4810.       to the character which is seen through them
  4811.     the string produced by the read is placed in an input buffer which may
  4812.       be reused by the next READ or READN of a window
  4813.     window stream opcodes D8h and D9h determine whether the read returns
  4814.       characters or attributes
  4815. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h
  4816. ----------1512--BH04-------------------------
  4817. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  4818.     AH = 12h
  4819.     BH = 04h
  4820.     BL = object
  4821.         00h handle is DWORD on top of stack
  4822.         mailbox: wait for and get next message
  4823.         keyboard: wait for and get pointer to next input buffer
  4824.         pointer: wait for and get next message
  4825.         02h get next message from mailbox (task's handle on top of stack)
  4826.         03h get next message from current task's mailbox
  4827.         04h get the next input from keyboard (handle on top of stack)
  4828.         05h get the next input from task's default keyboard
  4829.         06h wait for input from any object in OBJECTQ (handle on stack)
  4830.         07h wait for input from any object in task's default OBJECTQ
  4831. Return: STACK: (if objectq) DWORD handle of object with input
  4832.            (otherwise)  DWORD number of bytes
  4833.                 DWORD address
  4834. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  4835.       containing the character code as returned by the BIOS; the BIOS scan
  4836.       code is available via the STATUS call if the character is zero
  4837.     for a keyboard in field mode, the input buffer format is determined
  4838.       by the field table header for the window the keyboard is attached to
  4839.     keyboard input buffers and mailbox message buffers may be invalidated
  4840.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  4841. SeeAlso: AH=12h/BH=05h"OBJECT"
  4842.  
  4843. Format of pointer message:
  4844. Offset    Size    Description
  4845.  00h    WORD    row
  4846.  02h    WORD    column
  4847.  04h    BYTE    status
  4848.         bit 6: set when press/release mode active and button released
  4849.         bits 7-2: number of clicks-1 if multiple-click mode active
  4850.         bits 1,0: button pressed (00=none,01=button1,10=button2)
  4851.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  4852. ----------1512--BX0400-----------------------
  4853. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  4854.     AH = 12h
  4855.     BX = 0400h
  4856.     STACK: DWORD timer's handle
  4857. Return: after timer expires
  4858.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  4859. ----------1512--BX0400-----------------------
  4860. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  4861.     AH = 12h
  4862.     BX = 0400h
  4863.     STACK: DWORD handle of panel object
  4864.            DWORD window's handle (or 0 for current task's window)
  4865.            DWORD length of panel name
  4866.            DWORD pointer to panel name
  4867. Return: STACK: DWORD handle of keyboard or 0
  4868.            DWORD handle of window which was used
  4869. Notes:    status of APPLY may be checked with STATUS message
  4870.     panel MUST have the following format
  4871.       first byte must be 1Bh (i.e. must start with a stream)
  4872.       first opcode in stream must be E5h
  4873.         single byte arg of opcode is interpreted thus:
  4874.           bits 7,6    11 means create new window
  4875.             10 means create new field table for existing window
  4876.             01 means use existing window and field table
  4877.           bit 5 if set, panel contains a field table 
  4878.             (creates a new keyboard and puts it in field mode)
  4879.           bit 4 if set, panel contains input fields
  4880.           bit 3 if set, panel contains select fields but no input fields
  4881.     if the panel contains input or select fields, a keyboard handle is
  4882.       returned; either the window's current open keyboard or a
  4883.       newly-created keyboard object.  The caller should read that keyboard
  4884.       to obtain input from the panel.
  4885. ----------1512--BH05------------------------
  4886. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  4887.     AH = 12h
  4888.     BH = 05h
  4889.     BL = object
  4890.         00h handle is DWORD on top of stack
  4891.         timer: start timer to end at a specified time
  4892.         keyboard: add input buffer to queue
  4893.         pointer: move pointer icon to specified position
  4894.         02h send message by value/status=0 to mbox (task's handle on stack)
  4895.         03h send message by value/status=0 to current task's mailbox
  4896.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  4897.         05h add input buffer to task's default KEYBOARD queue
  4898.         06h add an object to OBJECTQ (handle on top of stack)
  4899.         07h add an object to task's default OBJECTQ
  4900.     STACK: (if mailbox)  DWORD length
  4901.                  DWORD address
  4902.            (if keyboard) DWORD status (scan code in keystroke mode)
  4903.                  DWORD length (should be 1 in keystroke mode)
  4904.                  DWORD address
  4905.            (if objectq)  DWORD handle of object to add
  4906.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  4907.                    only accurate to 1/18 sec)
  4908.            (if pointer)  DWORD column relative to origin of window
  4909.                  DWORD row relative to origin of window
  4910. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  4911.     the data and status written to a keyboard object must match the format
  4912.       returned by the keyboard object in the current mode
  4913.     the pointer position is scaled according to the current scaling factors
  4914. SeeAlso: AH=12h/BH=04h
  4915. ----------1512--BH05-------------------------
  4916. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  4917.     AH = 12h
  4918.     BH = 05h
  4919.     BL = window to write to
  4920.         00h DWORD on top of stack is window handle
  4921.         01h write string to task's default window
  4922.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  4923.         0Dh (DV 2.26+) default window of parent of current task
  4924.     STACK: DWORD object handle if handle passed on stack
  4925.            DWORD total length of string (high word == 0)
  4926.            DWORD address of string to display
  4927. Return: indicated actions performed
  4928.     a. non-control characters are displayed (opcodes DEh and DFh control
  4929.        whether the attributes are left or changed to the current attrib)
  4930.     b. CR/LF/BS/Tab cause the usual cursor movement
  4931.     c. ESC starts a data structure with additional commands if following
  4932.        byte is less than 20h; otherwise, it is written to the window
  4933.     STACK:    DWORD handle of new window if window stream opcode E6h
  4934.         else nothing
  4935.  
  4936. Data Structure:
  4937.     MAGIC  DB  1Bh
  4938.     MODE   DB  ?   ; 00h, 01h, 10h, 14h-1Fh legal
  4939.     LENGTH DW  ?   ; length of remainder in bytes
  4940.     var-length fields follow, each an OPCODE followed by
  4941.          zero or more args
  4942.  
  4943. MODE 00h (set or display values) "WINDOW STREAM"
  4944.     Opcodes:args
  4945.     00h  display 20h blanks with the default attribute
  4946.     01h-1Fh display OPCODE blanks with the default attribute
  4947.     20h  display char with default attribute 20h times
  4948.          BYTE char to repeat
  4949.     21h-3Fh display char with default attribute OPCODE-20h times
  4950.          BYTE char to repeat
  4951.     40h  display 20h blanks with specified attribute
  4952.          BYTE attribute of blanks
  4953.     41h-5Fh display OPCODE-40h blanks with specified attribute
  4954.          BYTE attribute of blanks
  4955.     60h  display next 20h characters
  4956.          20h BYTES characters to display
  4957.     61h-7Fh display next OPCODE-60h characters
  4958.          N BYTES characters to display
  4959.     80h-87h  display N blanks with default attribute
  4960.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  4961.               [000h means 800h]
  4962.     88h-8Fh display N copies of the character
  4963.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  4964.               [000h means 800h]
  4965.          BYTE character to repeat
  4966.     90h-97h  display N blanks with specified attribute
  4967.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  4968.               [000h means 800h]
  4969.          BYTE attribute
  4970.     98h-9FH  display string at logical cursor pos
  4971.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  4972.               [000h means 800h]
  4973.          N BYTES string to display
  4974.     A0h  set logical cursor row
  4975.          BYTE row number (0 is top)
  4976.     A1h  set logical cursor column
  4977.          BYTE column number (0 is leftmost)
  4978.     A2h  set top edge of scrolling region
  4979.          BYTE row
  4980.     A3h  set left edge of scrolling region
  4981.          BYTE column
  4982.     A4h  set row of physical window position
  4983.          BYTE line
  4984.     A5h  set column of physical window position
  4985.          BYTE column
  4986.     A6h  set height of physical window
  4987.          BYTE #rows
  4988.     A7h  set width of physical window
  4989.          BYTE #columns
  4990.     A8h  set viewport row
  4991.          BYTE row
  4992.     A9h  set viewport column
  4993.          BYTE column
  4994.     AAh  set virtual screen height [contents of window unpredictable after]
  4995.          BYTE rows
  4996.     ABh  set virtual screen width [contents of window unpredictable after]
  4997.          BYTE columns
  4998.     ACh-AEh  unused
  4999.     AFh  set compatible/preferred video modes
  5000.          BYTE compatibility/preference mask
  5001.         bit 7    compatible with monochrome
  5002.         bit 6    compatible with color text, EGA/VGA graphics
  5003.         bit 5    compatible with medium-resolution CGA graphics
  5004.         bit 4    compatible with high-resolution CGA graphics
  5005.         bit 3    prefer monochrome
  5006.         bit 2    prefer color text, EGA/VGA graphics
  5007.         bit 1    prefer medium-resolution CGA graphics
  5008.         bit 0    prefer high-resolution CGA graphics
  5009.     B0h  move logical cursor down
  5010.          BYTE #rows (signed, negative values move up)
  5011.             [if #rows=0 and hardware cursor owner, update hw crsr]
  5012.     B1h  move logical cursor right
  5013.          BYTE #cols (signed, negative values move left)
  5014.             [if #cols=0 and hardware cursor owner, update hw crsr]
  5015.     B2h  shift top edge of scrolling region
  5016.          BYTE #rows (signed)
  5017.     B3h  shift left edge of scrolling region
  5018.          BYTE #cols (signed)
  5019.     B4h  shift physical window down
  5020.          BYTE #lines (signed)
  5021.     B5h  shift physical window right
  5022.          BYTE #columns (signed)
  5023.     B6h  expand physical window vertically
  5024.          BYTE #lines (signed)
  5025.     B7h  expand physical window horizontally
  5026.          BYTE #columns (signed)
  5027.     B8h  adjust viewport row
  5028.          BYTE #rows (signed)
  5029.     B9h  adjust viewport column
  5030.          BYTE #columns (signed)
  5031.     BAh  adjust virtual screen height [contents of window unpredict after]
  5032.          BYTE #rows to increase (signed)
  5033.     BBh  adjust virtual screen width [contents of window unpredictbl after]
  5034.          BYTE #cols to increase (signed)
  5035.     BCh-BFh  reserved (currently unused)
  5036.     C0h  set logical cursor position
  5037.          BYTE row number (0 is top border)
  5038.          BYTE column number (0 is left border)
  5039.     C1h  set top left corner of scrolling region
  5040.          BYTE row
  5041.          BYTE column
  5042.     C2h  set physical window pos
  5043.          BYTE upper left row (no top border if 0)
  5044.          BYTE upper left column (no left border if 0)
  5045.     C3h  set current window size
  5046.          BYTE #rows
  5047.          BYTE #cols
  5048.     C4h  set upper left corner of viewport (portion of virtual screen
  5049.          displayed in window)
  5050.          BYTE row
  5051.          BYTE column
  5052.     C5h  set size of virtual screen [contents unpredictable afterwards]
  5053.          BYTE #rows
  5054.          BYTE #cols
  5055.     C6h  unused
  5056.     C7h  unused
  5057.     C8h  set logical cursor relative to current position
  5058.          BYTE number of rows to move down (signed)
  5059.          BYTE number of columns to move right (signed)
  5060.           [if #rows=#cols=0 and hardware cursor owner, update hw cursr]
  5061.     C9h  shift top left corner of scrolling region
  5062.          BYTE #rows (signed)
  5063.          BYTE #cols (signed)
  5064.     CAh  set window pos relative to current position
  5065.          BYTE number of rows to shift down (signed)
  5066.          BYTE number of columns to shift right (signed)
  5067.     CBh  set window size relative to current size
  5068.          BYTE number of rows to expand (signed)
  5069.          BYTE number of cols to expand (signed)
  5070.     CCh  shift viewport relative to current position
  5071.          BYTE rows to shift (signed)
  5072.          BYTE cols to shift (signed)
  5073.     CDh  resize virtual screen
  5074.          BYTE #rows to expand (signed)
  5075.          BYTE #cols to expand (signed)
  5076.     CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  5077.     CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  5078.     D0h  allow window frame to extend beyond screen
  5079.     D1h  always display a complete frame, even if window extends beyond 
  5080.          edge of screen
  5081.     D2h  allow DV to change logical colors on video mode switch (default)
  5082.     D3h  application changes logical attributes
  5083.     D4h  window is visible [must redraw to actually make visible]
  5084.     D5h  window is hidden [must redraw to actually remove]
  5085.     D6h  window has frame (default)
  5086.     D7h  window unframed [must redraw to actually remove frame]
  5087.     D8h  READ/READN will read characters from window (default)
  5088.     D9h  READ/READN will read attributes from window
  5089.     DAh  use logical attributes, which may be remapped
  5090.         attributes
  5091.            1 normal text
  5092.            2 highlighted normal text
  5093.            3 help text
  5094.            4 highlighted help text
  5095.            5 error message
  5096.            6 highlighted error message
  5097.            7 emphasized text
  5098.            8 marked text
  5099.            9-16 are reverse video versions of 1-8
  5100.     DBh  use physical attributes for characters
  5101.     DCh  enable special actions for control characters (default)
  5102.     DDh  disable special control char handling, all chars displayable by
  5103.          BIOS TTY call
  5104.     DEh  write both character and attribute (default)
  5105.     DFh  write character only, leave attribute untouched
  5106.     E0h  repeat following commands through E1h opcode
  5107.          BYTE number of times to repeat (00h means 256 times)
  5108.     E1h  end of commands to repeat, start repeating them
  5109.     E2h  set current output color
  5110.          BYTE color
  5111.     E3h  clear virtual screen from scroll origin to end using current color
  5112.     E4h  redraw window
  5113.     E5h  select menu style
  5114.          BYTE style (normally 18h)
  5115.         bits 5,4 = 01 use two-letter menu entries for remainder of
  5116.           this stream
  5117.     E5h  (panel file only)
  5118.          BYTE modifier
  5119.         bits 7,6 = 11 panel stream creates new window
  5120.              = 10 panel defines new field table for existing window
  5121.              = 01 panel stream uses existing window & field table
  5122.         bit 5 = 1 stream contains a field table (create kyboard object)
  5123.         bit 4 = 1 stream defines input fields (create keyboard object)
  5124.         bit 3 = 1 stream defines select fields but not input fields
  5125.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  5126.         bit 1 reserved
  5127.         bit 0 reserved
  5128.     E6h  create new window and perform rest of manipulations in new window
  5129.          BYTE number of rows
  5130.          BYTE number of columns
  5131.          Return: DWORD object handle of new window returned on stack at end
  5132.     E7h  no operation
  5133.     E8h  scroll area up (top left corner defined by opcode C1h)
  5134.          BYTE height
  5135.          BYTE width
  5136.     E9h  scroll area down (top left corner defined by opcode C1h)
  5137.          BYTE height
  5138.          BYTE width
  5139.     EAh  scroll area left (top left corner defined by opcode C1h)
  5140.          BYTE height
  5141.          BYTE width
  5142.     EBh  scroll area right (top left corner defined by opcode C1h)
  5143.          BYTE height
  5144.          BYTE width
  5145.     ECh  set logical attributes for window contents
  5146.          BYTE video modes command applies to
  5147.         bit 7    monochrome
  5148.         bit 6    color text, EGA/VGA graphics
  5149.         bit 5    medium-resolution CGA graphics
  5150.         bit 4    high-resolution CGA graphics
  5151.          BYTE which attributes to set
  5152.         bit 7  if set, copy single following byte to indicated attribs
  5153.         bits 4-6  # of first attribute to change - 1
  5154.         bits 0-3  # of consecutive attributes to change
  5155.          N BYTEs new attributes
  5156.     EDh  set logical attributes for window frame
  5157.          BYTE video modes command applies to (see opcode ECh)
  5158.          BYTE which attributes to set
  5159.         bit 7  if set, copy single following byte to indicated attrs
  5160.         bits 4-6  # of first attribute to change - 1
  5161.         bits 0-3  # of consecutive attributes to change
  5162.          N BYTEs new attributes
  5163.           attributes
  5164.                1 = top left corner
  5165.                2 = top right corner
  5166.                3 = bottom left corner
  5167.                4 = bottom right corner
  5168.                5 = top edge
  5169.                6 = bottom edge
  5170.                7 = left edge
  5171.                8 = right edge
  5172.     EEh  set characters for window frame
  5173.          BYTE video modes command applies to (see opcode ECh)
  5174.          BYTE which characters to set
  5175.         bit 7  if set, copy single following byte to indicated chars
  5176.         bits 4-6  # of first char to change - 1
  5177.         bits 0-3  # of consecutive chars to change
  5178.          N BYTEs new chars (same relative position as attributes above)
  5179.     EFh  set window name
  5180.          BYTE length of name (should be in range 0 to logical screen width)
  5181.          N BYTEs name
  5182.     F0h  clear input field to blanks
  5183.          BYTE field number
  5184.     F1h  fill input field with character
  5185.          BYTE field number
  5186.          BYTE char
  5187.     F2h  set color of input field
  5188.          BYTE field number (1-N)
  5189.          BYTE attribute
  5190.     F3h  set initial contents of input field
  5191.          BYTE field number (1-N)
  5192.          N BYTEs enough chars to exactly fill field as defined by op FFh
  5193.     F4h  position cursor to start of specific input field
  5194.          BYTE field number (1-N)
  5195.     F5h  change field table entry
  5196.          BYTE field number
  5197.          7-8 BYTEs field table entry (see opcode FFh below)
  5198.     F6h  set field type
  5199.          BYTE field number
  5200.          BYTE type
  5201.             00h inactive
  5202.             40h output field
  5203.             80h input field
  5204.             C0h deselected field
  5205.             C2h selected field
  5206.     F7h  "broadcast write"    write data to fields with program output bit
  5207.         set in field table entry, in field number order
  5208.          N BYTEs (total length of all program output fields)
  5209.     F8h  scroll field up a line
  5210.          BYTE field number
  5211.     F9h  scroll field down a line
  5212.          BYTE field number
  5213.     FAh  scroll field left
  5214.          BYTE field number
  5215.     FBh  scroll field right
  5216.          BYTE field number
  5217.     FCh  set field table header
  5218.          BYTE number of fields (must be <= existing number of fields)
  5219.          BYTE screen behavior bits
  5220.         bit 7  reserved
  5221.         bit 6  set if menu items may be selected via keyboard
  5222.         bit 5  set if left mouse button may terminate entry
  5223.         bit 4  set if right mouse button may terminate entry
  5224.         bit 3  if set, select fields return contents or blanks rather
  5225.             than 'Y' or 'N'
  5226.         bit 2  if set, modified bits reset on return to application
  5227.         bits 0,1 = 00 no data returned on read of keyboard
  5228.                01 data returned as array of chars containing
  5229.                 all fields packed together, with no field
  5230.                 numbers
  5231.                10 data returned as numbered variable-length
  5232.                 records for all fields
  5233.                11 data returned as numbered variable-length
  5234.                 records for the fields which were modified
  5235.          BYTE current input field (updated by DESQview)
  5236.          BYTE current select field (updated by DESQview)
  5237.          BYTE attribute for select fields when they are pointed at
  5238.          BYTE attribute for select fields which have been selected
  5239.     FDh  reset modified bit for all fields
  5240.     FEh  reset selected and modified bits for all fields
  5241.     FFh  set up input fields
  5242.          6 BYTEs table header (see opcode FCh above)
  5243.          the field table entries, one for each field
  5244.          BYTE start row    \
  5245.          BYTE start column  \ if menu selection and start is to
  5246.          BYTE end row        / right or below end, select from kbd only
  5247.          BYTE end column   /
  5248.          BYTE field type
  5249.             bits 7,6 = 00 inactive (non-entry) field
  5250.                    01 echos keystrokes input to make menu selection
  5251.                    10 fill-in field
  5252.                    11 select field
  5253.             bit 5  field can be filled by broadcast write (F7h opcode)
  5254.             bit 4  reserved
  5255.             bit 3  reserved
  5256.             bit 2  reserved
  5257.             bit 1  set if field selected
  5258.             bit 0  set if field modified
  5259.          BYTE modifier
  5260.               if type is fill-in, then bit flags to determine behavior
  5261.               bit 7  if set, automatically enter CR when field full
  5262.               bit 6  move to next field when current field is full
  5263.               bit 5  if set, enter text from right end (for numbers)
  5264.               bit 4  if set, force input to uppercase
  5265.               bit 3  if set, clear old contents on first keystroke
  5266.               bit 2  if set, input returned when cursor moves out
  5267.                  of modified field (API level 2.02+)
  5268.               bit 1  reserved
  5269.               bit 0  reserved
  5270.               if select field, first key to press to activate
  5271.               00h if have to point-&-click or is an extended-ASCII
  5272.                   keystroke (only if two-key menus enabled)
  5273.          BYTE (select field only) normal color of field
  5274.          BYTE second key for select field.  This byte is present iff
  5275.               two-letter menu entries selected with opcode E5h, and
  5276.               in that case is present regardless of field type
  5277.          Note: DESQview uses and updates the actual copy of the information
  5278.            which is contained in the stream.  Thus this info must remain
  5279.            intact until after the data entry is complete.
  5280.  
  5281. MODE 01h "QUERY STREAM" (valid only for those opcodes listed here)
  5282.     A0h return logical cursor row in next byte
  5283.     A1h return logical cursor column in next byte
  5284.     A2h return top row of scrolling region in next byte
  5285.     A3h return left column of scrolling region in next byte
  5286.     A4h return row of physical window origin in next byte
  5287.     A5h return column of physical window origin in next byte
  5288.     A6h return height of physcial window in next byte
  5289.     A7h return width of physical window in next byte
  5290.     A8h return row of viewport origin in next byte
  5291.     A9h return column of viewport origin in next byte
  5292.     AAh return height of virtual screen in next byte
  5293.     ABh return width of virtual screen in next byte
  5294.     AFh return current video mode in next byte
  5295.     C0h return current logical cursor position in next two bytes
  5296.     C1h return top left corner of scrolling region in next two bytes
  5297.     C2h return current window position in next two bytes
  5298.     C3h return current window size in next two bytes
  5299.     C4h return current viewport origin in next two bytes
  5300.     C5h return current virtual screen size in next two bytes
  5301.     D0h \ overwritten with D0h if frames may fall off screen edge
  5302.     D1h /               D1h if frames always displayed entirely
  5303.     D2h \ overwritten with D2h if DESQview controls color palette
  5304.     D3h /               D3h if application changes color palette
  5305.     D4h \ overwritten with D4h if window visible
  5306.     D5h /               D5h if window hidden
  5307.     D6h \ overwritten with D6h if window has frame
  5308.     D7h /               D7h if window unframed
  5309.     D8h \ overwritten with D8h if reading characters from window
  5310.     D9h /               D9h if reading attributes from window
  5311.     DAh \ overwritten with DAh if using logical attributes
  5312.     DBh /               DBh if using physical attributes
  5313.     DCh \ overwritten with DCh if TTY control char interpretation on
  5314.     DDh /               DDh if TTY control char interpretation off
  5315.     DEh \ overwritten with DEh if writing both characters and attributes
  5316.     DFh /               DFh if leaving attributes untouched
  5317.     E2h return current color in next byte
  5318.     ECh get logical attributes for window contents
  5319.         BYTE execute call if currently in specified video mode
  5320.         bit 7    monochrome
  5321.         bit 6    color text, EGA/VGA graphics
  5322.         bit 5    medium-resolution CGA graphics
  5323.         bit 4    high-resolution CGA graphics
  5324.         BYTE which attributes to get
  5325.         bit 7 unused???
  5326.         bits 4-6 first attribute to get - 1
  5327.         bits 0-3 # consecutive attributes
  5328.         N BYTEs buffer to hold attributes
  5329.     EDh get logical attributes for window frame
  5330.         BYTE execute call if currently in video mode (see opcode ECh)
  5331.         BYTE which attributes to get
  5332.         bit 7 unused???
  5333.         bits 4-6 first attribute to get - 1
  5334.         bits 0-3 # consecutive attributes
  5335.         N BYTEs buffer to hold attributes
  5336.     EEh get characters for window frame
  5337.         BYTE execute call if currently in video mode (see opcode ECh)
  5338.         BYTE which attributes to get
  5339.         bit 7 unused???
  5340.         bits 4-6 first char to get - 1
  5341.         bits 0-3 # consecutive chars
  5342.         N BYTEs buffer to hold chars
  5343.     EFh return first N characters of current window name
  5344.         BYTE    max length of returned name
  5345.         N BYTEs buffer to hold window name
  5346.     F3h return contents of specified field
  5347.         BYTE field number
  5348.         N BYTEs buffer to hold field contents (size exactly equal to field
  5349.             size)
  5350.     F5h get field table entry
  5351.         BYTE field number
  5352.         7-8 BYTEs buffer to hold field table entry
  5353.            Notes: DV < 2.26 always returns 7 bytes
  5354.               DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field
  5355.             table is using 8-byte entries and eighth byte after
  5356.             F5h is E7h (NOP); otherwise, 7 bytes are returned
  5357.               DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes
  5358.             depending on the field table entry size
  5359.     F6h get type of a field
  5360.         BYTE field number
  5361.         BYTE type
  5362.     FCh get field table header
  5363.         6 BYTEs buffer to store header
  5364.  
  5365. MODE 10h "MANAGER STREAM" (valid only for opcodes listed here)
  5366.     00h allow window to be moved horizontally
  5367.     01h allow window to be moved vertically
  5368.     02h allow window to change width
  5369.     03h allow window to change height
  5370.     04h allow window to be scrolled horizontally
  5371.     05h allow window to be scrolled vertically
  5372.     06h allow "Close Window" menu selection for application
  5373.     07h allow "Hide Window" menu selection for application
  5374.     08h allow application to be suspended ("Rearrange/Freeze")
  5375.     0Eh allow "Scissors" menu
  5376.     10h allow DESQview main menu to be popped up
  5377.     11h allow "Switch Windows" menu
  5378.     12h allow "Open Window" menu
  5379.     13h allow "Quit" menu selection
  5380.     20h-33h opposite of 00h-13h, disallow specified action
  5381.     40h notify if horizontal position of window changes
  5382.     41h notify if vertical position of window changes
  5383.     42h notify if width of window changes
  5384.     43h notify if height of window changes
  5385.     44h notify if window scrolled horizontally
  5386.     45h notify if window scrolled vertically
  5387.     46h notify if window is closed--program has to clean up and exit itself
  5388.     47h notify if window is hidden
  5389.     48h notify if "?" on main menu selected
  5390.     49h notify if pointer message sent to window
  5391.     4Ah notify if window is placed in foreground
  5392.     4Bh notify if window is placed in background
  5393.     4Ch notify if video mode changes
  5394.     4Dh notify if "Scissors" menu "Cut" option selected
  5395.     4Eh notify if "Scissors" menu "Copy" option selected
  5396.     4Fh notify if "Scissors" menu "Paste" option selected
  5397.     50h notify if DESQview main menu about to pop up
  5398.     51h notify if DESQview main menu popped down
  5399.     60h-71h  opposite of 40h-51h: don't notify on specified event
  5400.     84h attach window to parent task's window (both move together)
  5401.     85h detach window from parent task's window (may move independently)
  5402.     86h disable background operation for application
  5403.     87h enable running in background
  5404.     88h set minimum size of physical window
  5405.         BYTE rows
  5406.         BYTE columns
  5407.     89h set maximum size of physical window
  5408.         BYTE rows
  5409.         BYTE cols
  5410.     8Ah set primary asynchronous notification routine
  5411.         DWORD address of routine, 0000h:0000h means none (see also below)
  5412.     8Bh set async notification parameter
  5413.         DWORD 32-bit value passed to 8Ah async routine in DS:SI
  5414.     ACh (DV2.2+) perform regular select field attribute processing
  5415.     ADh (DV2.2+) protect attributes in selected field from being lost
  5416.     AEh make window default notify window for owning app (API level 2.00+)
  5417.     AFh set selected field marker character
  5418.         BYTE character to display at left edge of selected fields
  5419.     BCh set standard field processing mode 
  5420.     BDh set alternate field processing mode (enables cursor pad for menus)
  5421.     BEh disables changing reverse logical attributes with ECh opcode
  5422.     BFh enables changing reverse logical attributes with ECh opcode
  5423.     C0h make current window topmost in system
  5424.     C1h force current process into foreground
  5425.     C2h make current window topmost in process
  5426.     C3h position mouse pointer relative to origin of current field
  5427.         BYTE rows below upper left corner of field
  5428.         BYTE columns to right of upper left corner of field
  5429.     C4h position mouse pointer relative to origin of given field
  5430.         BYTE field number
  5431.         BYTE rows below upper left corner of field
  5432.         BYTE columns to right of upper left corner of field
  5433.     C5h orphan current window (also hides it)
  5434.         Note: must be last in stream; all subsequent commands ignored
  5435.     C6h show all windows for this process
  5436.     C7h hide all windows for this process
  5437.     C8h suspend process and hide all its windows
  5438.     C9h force current process into background
  5439.     CAh make current window bottom-most in process
  5440.     CBh cancel current window manager operation, remove DV menu, give 
  5441.         control to topmost application
  5442.     CCh orphan window and give it to the system for use as paste data
  5443.     CEh reorder windows
  5444.         DWORD pointer to null-terminated list of words
  5445.           each word is segment of object handle for a window
  5446.     FFh no operation
  5447.  
  5448. MODES 14h to 1Fh "USER STREAMS"
  5449.     normally NOPs, but may be defined by SETESC message to invoke FAR
  5450.     routines, one for each mode number
  5451.       on entry to handler,
  5452.         DS:SI -> first byte of actual stream (not header)
  5453.         CX = #bytes in stream
  5454.         ES:DI = window's handle
  5455.  
  5456. Asynchronous notification routine defined by manager stream 8Ah called with:
  5457.     ES:DI = handle of window
  5458.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  5459.        mailbox contains message indicating event
  5460.           Opcode
  5461.            40h  horizontal movement
  5462.            DWORD object handle of window
  5463.            BYTE  new row
  5464.            BYTE  new col
  5465.            41h  vertical movement
  5466.            DWORD object handle of window
  5467.            BYTE  new row
  5468.            BYTE  new col
  5469.            42h  horizontal size change
  5470.            DWORD object handle of window
  5471.            BYTE  new rows
  5472.            BYTE  new cols
  5473.            43h  vertical size change
  5474.            DWORD object handle of window
  5475.            BYTE  new rows
  5476.            BYTE  new cols
  5477.            44h  scrolled horizontally
  5478.            DWORD object handle of window
  5479.            BYTE  mouse row within window
  5480.            BYTE  mouse column within window
  5481.            BYTE  field mouse is on, 0 if none
  5482.            BYTE  amount moved: >0 right, <0 left, 0 done
  5483.            45h  scrolled vertically
  5484.            DWORD object hande of window
  5485.            BYTE  mouse row within window
  5486.            BYTE  mouse column within window
  5487.            BYTE  field mouse is on, 0 if none
  5488.            BYTE  amount moved: >0 down, <0 up, 0 done
  5489.            46h  window close request
  5490.            DWORD object handle of window
  5491.            BYTE  mouse pointer row
  5492.            BYTE  mouse pointer column
  5493.            BYTE  field mouse is on, 0 if none
  5494.            47h  application's windows hidden
  5495.            48h  Help for Program selected
  5496.            DWORD object handle of window
  5497.            BYTE  mouse pointer row
  5498.            BYTE  mouse pointer column
  5499.            BYTE  field mouse is on, 0 if none
  5500.            49h  pointer message sent to window
  5501.            DWORD pointer handle which received message
  5502.            4Ah  switched to window from another ("raise")
  5503.            4Bh  switched away from the window ("lower")
  5504.            4Ch  video mode changed
  5505.            BYTE new BIOS video mode
  5506.            4Dh  Scissors/cUt selected
  5507.            DWORD object handle of window
  5508.            BYTE  row of upper left corner
  5509.            BYTE  column of upper left corner
  5510.            BYTE  field number ul corner is in, 0=none
  5511.            DWORD handle of orphaned window created with
  5512.              copy of data from specified region
  5513.            BYTE  height of region
  5514.            BYTE  width of region
  5515.            4Eh  Scissors/Copy selected
  5516.            DWORD object handle of window
  5517.            BYTE  row of upper left corner
  5518.            BYTE  column of upper left corner
  5519.            BYTE  field number ul corner is in, 0=none
  5520.            DWORD handle of orphaned window created with
  5521.              copy of data from specified region
  5522.            BYTE  height of region
  5523.            BYTE  width of region
  5524.            4Fh  Scissors/Paste selected
  5525.            DWORD object handle of window
  5526.            BYTE  row of upper left corner
  5527.            BYTE  column of upper left corner
  5528.            BYTE  field number ul corner is in, 0=none
  5529.            DWORD handle of orphaned window with data
  5530.            BYTE  height of region
  5531.            BYTE  width of region
  5532.             Note: orphaned data window should be adopted or freed
  5533.                 when done
  5534.            50h  main menu about to pop up
  5535.            51h  main menu popped down
  5536. Return: all registers unchanged
  5537. ----------1512--BH06-------------------------
  5538. INT 15 - DESQview 2.2+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  5539.     AH = 12h
  5540.     BH = 06h
  5541.     BL = object
  5542.         00h object handle in DWORD on top of stack
  5543.         mailbox, keyboard, pointer, or timer
  5544.         04h given task's keyboard (task's handle on top of stack)
  5545.         05h current task's default keyboard
  5546.     STACK: DWORD new priority of object in task's OBJECTQ 
  5547. Notes:    initially all objects have the same default value.  Should only make 
  5548.       relative adjustments to this default value.
  5549.     when changing priorities, all objects already on the objectq are
  5550.       reordered
  5551. SeeAlso: AH=12h/BH=07h
  5552. ----------1512--BH07-------------------------
  5553. INT 15 - DESQview 2.2+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  5554.     AH = 12h
  5555.     BH = 07h
  5556.     BL = object
  5557.         00h object handle in DWORD on top of stack
  5558.         mailbox, keyboard, pointer, or timer
  5559.         04h given task's keyboard (task's handle on top of stack)
  5560.         05h current task's default keyboard
  5561. Return: STACK: DWORD object priority
  5562. Note:    initially all objects have the same default value.  Should only make 
  5563.       relative adjustments to this default value.
  5564. SeeAlso: AH=12h/BH=06h
  5565. ----------1512--BH08-------------------------
  5566. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  5567.     AH = 12h
  5568.     BH = 08h
  5569.     BL = object
  5570.         00h handle in DWORD on top of stack
  5571.         window: total character positions in window
  5572.         timer: elapsed time since timer started
  5573.         pointer: number of messages queued to pointer object
  5574.         panel: number of panels in panel file
  5575.         keyboard: number of input buffers queued
  5576.         01h total chars in current task's default window
  5577.         02h number of messages in task's mailbox (task's handle on stack)
  5578.         03h number of messages in current task's mailbox
  5579.         04h number of input buffers queued in task's kbd (handle on stack)
  5580.         05h number of input buffers queued for current task's default kbd
  5581.         06h number of objects queued in OBJECTQ (task's handle on stack)
  5582.         07h number of objects queued in current task's OBJECTQ
  5583.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  5584.         0Dh (DV 2.26+) total chars in parent task's window
  5585. Return: DWORD on top of stack is result
  5586. Note:    for panel objects, a count of zero is returned if no panel file is open
  5587.       for the object
  5588. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  5589. ----------1512--BH09-------------------------
  5590. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  5591.     AH = 12h
  5592.     BH = 09h
  5593.     BL = object
  5594.         00h handle in DWORD on top of stack
  5595.         window: get chars/line
  5596.         timer: get 1/100 seconds remaining before timer expires
  5597.         01h get number of chars/line in current task's default window
  5598.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  5599.         0Dh (DV 2.26+) get chars/line in parent task's window
  5600. Return: DWORD on top of stack is length
  5601. SeeAlso: AH=12h/BH=08h
  5602. ----------1512--BH0A-------------------------
  5603. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  5604.     AH = 12h
  5605.     BH = 0Ah
  5606.     BL = window to write to
  5607.         00h window handle is DWORD on top of stack
  5608.         01h current task's default window
  5609.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5610.         0Dh (DV 2.26+) default window of parent of current task
  5611.     STACK:    DWORD count of attributes
  5612.         DWORD address of attribute string
  5613.         DWORD count of characters
  5614.         DWORD address of character string
  5615. Notes:    if one string is longer than the other, the shorter one will be reused
  5616.       until the longer one is exhausted
  5617.     the cursor is left just after the last character written
  5618. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  5619. ----------1512--BH0A-------------------------
  5620. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  5621.     AH = 12h
  5622.     BH = 0Ah
  5623.     BL = mailbox to write to
  5624.         00h handle is DWORD on top of stack
  5625.         02h default mailbox of task whose handle is on top of stack
  5626.         03h current task's default mailbox
  5627.     STACK:    DWORD    status (low byte)
  5628.         DWORD    length of message
  5629.         DWORD    address of message
  5630. Notes:    the message is copied into either system or common memory
  5631.     insufficient memory normally causes the process to be aborted; under
  5632.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  5633. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  5634. ----------1512--BH0A-------------------------
  5635. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  5636.     AH = 12h
  5637.     BH = 0Ah
  5638.     BL = object
  5639.         00h handle is DWORD on top of stack
  5640.         timer: start timer for specified interval
  5641.         pointer: set control flags
  5642.         keyboard: set control flags
  5643.         04h set control flags on KEYBOARD object (handle on top of stack)
  5644.         05h set control flags on task's default KEYBOARD object
  5645.     STACK: (if timer)   DWORD duration in 1/100 seconds
  5646.            (otherwise)  DWORD bits to set
  5647. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  5648.  
  5649. For keyboard objects, the bits have the following significance:
  5650.     bit 15 reserved, can't be set
  5651.     bit 14 unused
  5652.     bit 13 reserved, can't be set
  5653.     bit 12-6 unused
  5654.     bit 5  (DV 2.2+) exclusive input
  5655.     bit 4  filter all keys (used with handler established by SETESC)
  5656.         if 0, only keys that would normally be displayed are filtered
  5657.     bit 3  program continues executing while input in progress
  5658.     bit 2  insert mode active for field mode
  5659.     bit 1  hardware cursor displayed when task is hardware cursor owner
  5660.         must be set if keyboard in field mode and field table includes
  5661.         input fields
  5662.     bit 0  keyboard is in field mode rather than keystroke mode
  5663.  
  5664. For pointer objects, the bits have the following significance:
  5665.     bit 15 reserved, can't be set
  5666.     bit 14-8 unused
  5667.     bit 7  mouse pointer is hidden while in window
  5668.     bit 6  get messages even if window not topmost
  5669.     bit 5  get messages even if window not foreground
  5670.     bit 4  multiple clicks separated by less than 1/3 second are counted
  5671.         and returned in a single message
  5672.     bit 3  pointer position is relative to screen origin, not window origin
  5673.     bit 2  send message on button release as well as button press
  5674.     bit 1  (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever
  5675.         pointer leaves the window
  5676.     bit 0  send message only on button activity, not movement
  5677.            DV-specific, and INT 15h/AX=DE0Fh must have been called first
  5678. ----------1512--BH0B-------------------------
  5679. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  5680.     AH = 12h
  5681.     BH = 0Bh
  5682.     BL = window to write attributes to
  5683.         00h handle is DWORD on top of stack
  5684.         01h current task's default window
  5685.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5686.         0Dh (DV 2.26+) default window of parent of current task
  5687.     STACK:    DWORD number of attributes to write
  5688.         DWORD address of attributes
  5689. Note:    the attributes are written starting at the current cursor position; the
  5690.       cursor is left just after the last position written
  5691. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  5692. ----------1512--BH0B-------------------------
  5693. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  5694.     AH = 12h
  5695.     BH = 0Bh
  5696.     BL = mailbox to write to
  5697.         00h handle is DWORD on top of stack
  5698.         02h default mailbox of task whose handle is on top of stack
  5699.         03h current task's default mailbox
  5700.     STACK:    DWORD    status (low byte)
  5701.         DWORD    length of message
  5702.         DWORD    address of message
  5703. Notes:    only a pointer to the message is stored, but the write may still fail
  5704.       due to insufficient memory
  5705.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  5706. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  5707. ----------1512--BH0B-------------------------
  5708. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  5709.     AH = 12h
  5710.     BH = 0Bh
  5711.     BL = OBJECTQ from which to remove all copies of a particular object
  5712.         06h OBJECTQ of task whose handle is on top of stack
  5713.         07h task's default OBJECTQ
  5714.     STACK:    DWORD    handle of object to remove
  5715. Note:    should be sent whenever an object is erased or closed
  5716. ----------1512--BH0B-------------------------
  5717. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  5718.     AH = 12h
  5719.     BH = 0Bh
  5720.     BL = object
  5721.         00h handle is DWORD on top of stack
  5722.         pointer: reset control flags
  5723.         keyboard: reset control flags
  5724.         04h clear control flags on KEYBOARD object (handle on top of stack)
  5725.         05h clear control flags on task's default KEYBOARD object
  5726.     STACK:    DWORD    which bits to clear (see AH=12h/BH=0Ah"OBJECT")
  5727. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  5728. ----------1512--BH0C-------------------------
  5729. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  5730.     AH = 12h
  5731.     BH = 0Ch
  5732.     BL = object
  5733.         00h handle is DWORD on top of stack
  5734.         window:   fill with given character from scroll origin to end
  5735.         keyboard: attach to a window
  5736.         timer:      open
  5737.         pointer:  start taking input for window
  5738.         panel:      associate with a panel file
  5739.         01h fill task's default window with given char from scrl org to end
  5740.         02h open given task's mailbox for input (task's handle on stack)
  5741.         03h open current task's mailbox
  5742.         04h attach a KEYBOARD to a window (handle on top of stack)
  5743.         05h attach task's default KEYBOARD to a window
  5744.         06h open a task's OBJECTQ (task's handle on top of stack)
  5745.         07h open current task's OBJECTQ
  5746.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  5747.         0Dh (DV 2.26+) fill default window of parent of current task
  5748.      STACK: (if window)   DWORD character to fill with
  5749.         (if keyboard) DWORD handle of window to attach to
  5750.         (if pointer)  DWORD handle of window to attach to
  5751.         (if panel)    DWORD length of filename or resident panel
  5752.                   DWORD address of filename or resident panel
  5753.         (otherwise)   nothing
  5754. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  5755.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  5756.       the panel file
  5757.     result code of open may be retrieved with STATUS message
  5758.     logical cursor is left at scroll origin after filling window
  5759.     the task opening a mailbox becomes its owner, and the only task allowed
  5760.       to read the mailbox
  5761.     messages are only sent to a pointer object when the mouse is positioned
  5762.       in the window to which the pointer has been attached
  5763.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  5764.       messages automatically open the timer
  5765. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  5766. ----------1512--BH0D-------------------------
  5767. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  5768.     AH = 12h
  5769.     BH = 0Dh
  5770.     BL = object
  5771.         00h handle is DWORD on top of stack
  5772.         timer:      close
  5773.         keyboard: detach from window and discard queued input
  5774.         pointer:  stop taking input
  5775.         panel:      close
  5776.         mailbox:  close, unlock, and discard any pending messages
  5777.         02h close given task's mailbox (task's handle on top of stack)
  5778.         03h close task's default mailbox
  5779.         04h close KEYBOARD object (handle on top of stack)
  5780.         05h close task's default KEYBOARD
  5781.         06h close givent task's OBJECTQ (task's handle on top of stack)
  5782.         07h close current task's OBJECTQ
  5783. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  5784.       ERASE message (AH=12h/BH=0Eh)
  5785.     when a panel object is closed, the panel file and any panels currently
  5786.       in use are freed; window and keyboard objects created by APPLY are
  5787.       not affected, but field mode input ceases
  5788.     open but idle timer objects consume a small amount of CPU time
  5789. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  5790. ----------1512--BH0E-------------------------
  5791. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  5792.     AH = 12h
  5793.     BH = 0Eh
  5794.     BL = object
  5795.         00h handle is DWORD on top of stack
  5796.         window:   clear from scroll origin to end of window
  5797.         keyboard: discard input
  5798.         timer:      cancel current interval
  5799.         pointer:  discard all pending messages
  5800.         mailbox:  discard all pending messages
  5801.         01h clear task's default window from scroll origin to end
  5802.         02h discard all queued messages in mailbox (handle on top of stack)
  5803.         03h discard all queued messages in current task's default mailbox
  5804.         04h discard all input queued to KEYBOARD (handle on top of stack)
  5805.         05h discard all input queued to task's default KEYBOARD
  5806.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  5807.         07h remove all objects from current task's OBJECTQ
  5808.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  5809.         0Dh (DV 2.26+) clear default window of parent of current task
  5810. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  5811. SeeAlso: AH=12h/BH=02h
  5812. ----------1512--BH0F-------------------------
  5813. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  5814.     AH = 12h
  5815.     BH = 0Fh
  5816.     BL = object
  5817.         00h handle is DWORD on top of stack
  5818.         timer:     is it running?
  5819.         pointer: return status of last message
  5820.         panel:     verify success of last OPEN or APPLY
  5821.         02h return status of last msg READ from mailbox (handle on stack)
  5822.         03h return status of last msg READ from task's default mailbox
  5823.         04h get status of last msg from task's KEYBOARD (task handle on stk)
  5824.         05h get status of last msg from task's default KEYBOARD
  5825.         06h return whether OBJECTQ is open or not (handle on top of stack)
  5826.         07h return whether task's default OBJECTQ is open or not
  5827. Return: DWORD on top of stack is status
  5828. Notes:    if object is a panel object, the status indicates the error code:
  5829.       00h successful
  5830.       14h panel name not in panel directory
  5831.       15h not enough memory to apply panel
  5832.       16h invalid panel format
  5833.       17h panel file already open
  5834.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  5835.       95h not enough memory to open panel file     > that the panel was
  5836.       98h null panel file name            /  not opened
  5837.     if object is a timer, the status is:
  5838.       00000000h open but not running
  5839.       40000000h open and running
  5840.       80000000h closed
  5841.     if object is an OBJECTQ, the status is:
  5842.       00000000h open
  5843.       80000000h closed
  5844.     if object is a keyboard in keystroke mode, the status is the extended
  5845.       character code (scan code) of teh last keystroke
  5846.     if object is a keyboard in field mode, the status indicates the reason
  5847.       for the last return from the field manager
  5848.       00h Enter key pressed
  5849.       01h Button 1 or keystroke selection
  5850.       02h Button 2
  5851.       03h validation
  5852.       04h auto Enter on field
  5853.       1Bh Escape pressed
  5854.       46h ^Break pressed
  5855.       other: extended code for key terminating input
  5856.     the status of mailbox messages sent by the window manager is always 80h
  5857.     the status of a pointer message is the same as the status field in the
  5858.       message
  5859. SeeAlso: AH=12h/BH=04h"READ"
  5860. ----------1512--BH10-------------------------
  5861. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  5862.     AH = 12h
  5863.     BH = 10h
  5864.     BL = object
  5865.         00h handle is DWORD on top of stack
  5866.         window: return TRUE if logical cursor past end of window
  5867.         mailbox: ???
  5868.         01h returns TRUE if logical cursor past end of task's def window
  5869.         02h return ??? for task's mailbox (task's handle on top of stack)
  5870.         03h return ??? for current task's mailbox
  5871.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  5872.         0Dh (DV 2.26+) check log cursor of window of parent task
  5873. Return: DWORD on top of stack is status
  5874. ----------1512--BH11-------------------------
  5875. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  5876.     AH = 12h
  5877.     BH = 11h
  5878.     BL = window for which to move cursor
  5879.         00h window's handle is DWORD on top of stack
  5880.         01h task's default window
  5881.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  5882.         0Dh (DV 2.26+) default window of parent of current task
  5883.     STACK: DWORD column
  5884.            DWORD row
  5885. ----------1512--BH11-------------------------
  5886. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  5887.     AH = 12h
  5888.     BH = 11h
  5889.     BL = mailbox to name
  5890.         00h DWORD on top of stack is mailbox handle
  5891.         02h use given task's mailbox (task's handle on top of stack)
  5892.         03h use current task's default mailbox
  5893.     STACK: DWORD length of name
  5894.            DWORD address of name
  5895. SeeAlso: AX=DE0Eh
  5896. ----------1512--BX1100-----------------------
  5897. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  5898.     AH = 12h
  5899.     BX = 1100h
  5900.     STACK: DWORD object handle for pointer object
  5901.            DWORD number of colums to scale pointer position to
  5902.            DWORD number of rows to scale pointer position to
  5903. SeeAlso: AH=12h/BX=1200h
  5904. ----------1512--BH12-------------------------
  5905. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  5906.     AH = 12h
  5907.     BH = 12h
  5908.     BL = window to read from
  5909.         00h handle is DWORD on top of stack
  5910.         01h read next N chars or attributes on task's default window
  5911.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  5912.         0Dh (DV 2.26+) read default window of parent of current task
  5913.     STACK: DWORD count
  5914. Return: STACK: DWORD width of screen line
  5915.            DWORD address
  5916.            DWORD count actually read
  5917. Notes:    reading starts at the current logical cursor position; the cursor is
  5918.       updated to point at the character following the last one read
  5919.     any translucent blanks (FFh) which are visible on screen are changed
  5920.       to the character which is seen through them
  5921.     the string produced by the read is placed in an input buffer which may
  5922.       be reused by the next READ or READN of a window
  5923.     window stream opcodes D8h and D9h determine whether the read returns
  5924.       characters or attributes
  5925. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  5926. ----------1512--BX1200-----------------------
  5927. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  5928.     AH = 12h
  5929.     BX = 1200h
  5930.     STACK: DWORD object handle for pointer
  5931. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  5932.            DWORD pointer pos scaled as if window were this many rows high
  5933. SeeAlso: AH=12h/BX=1100h
  5934. ----------1512--BH13-------------------------
  5935. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  5936.     AH = 12h
  5937.     BH = 13h
  5938.     BL = window object
  5939.         00h DWORD on top of stack is handle for window to redraw
  5940.         01h redraw task's default window
  5941.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  5942.         0Dh (DV 2.26+) redraw default window of parent of current task
  5943. SeeAlso: AH=12h/BH=0Eh
  5944. ----------1512--BX1300-----------------------
  5945. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  5946.     AH = 12h
  5947.     BX = 1300h
  5948.     STACK: DWORD object handle for pointer
  5949.            DWORD character to use for pointer
  5950. ----------1512--BH14-------------------------
  5951. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  5952.     AH = 12h
  5953.     BH = 14h
  5954.     BL = message modifier
  5955.         00h handle is DWORD on top of stack
  5956.         01h define user stream
  5957.         04h intercept keystrokes from KEYBOARD to a window (handle on stack)
  5958.         05h intercept keystrokes from task's default KEYBOARD to a window
  5959.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  5960.                  DWORD address of FAR user stream handler
  5961.            (if keyboard) DWORD address of FAR filter function
  5962.  
  5963. The keyboard filter function is called when the keyboard is in field mode.  On
  5964. entry,
  5965.     AL = character
  5966.     AH = 00h or extended ASCII code if AL = 00h
  5967.     BL = field number
  5968.     CH = cursor column
  5969.     CL = cursor row
  5970.     DL = field type modifier (sixth item in field table entry)
  5971.     DH = seventh item in field table entry
  5972.     ES:SI = window's handle
  5973.     DS:DI -> field table entry for field containing the cursor
  5974. The filter function should return
  5975.     AH = 00h use keystroke
  5976.          01h ignore keystroke
  5977.          FFh beep and ignore keystroke
  5978. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  5979. ----------1512--BH14-------------------------
  5980. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  5981.     AH = 12h
  5982.     BH = 14h
  5983.     BL = object
  5984.         00h mailbox handle is DWORD on top of stack
  5985.         02h use given task's mailbox (task's handle on top of stack)
  5986.         03h use current task's default mailbox
  5987. Note:    release exclusive access by sending CLOSE message to mailbox
  5988.     access may be requested multiple times, and requires multiple CLOSEs
  5989. SeeAlso: AH=12h/BH=0Dh
  5990. ----------1512--BH15-------------------------
  5991. INT 15 - DESQview 2.2+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  5992.     AH = 12h
  5993.     BH = 15h
  5994.     BL = object
  5995.         00h DWORD on top of stack
  5996.         mailbox, keyboard, or pointer only
  5997.         02h mailbox for task whose handle is on top of stack
  5998.         03h mailbox for current task
  5999.         04h keyboard for task whose handle is on top of stack
  6000.         05h keyboard for current task
  6001.     STACK: DWORD flags
  6002.         if mailbox:
  6003.             bit 0: all mail messages in common memory
  6004.             bit 1: allow write even if closed
  6005.             bit 2: don't erase messages when mailbox closed
  6006.         if keyboard:
  6007.             bit 5: exclusive input when keyboard in use for input
  6008. Return: nothing
  6009. Notes:    only available if the API level has been set to at least 2.20
  6010.     equivalent to performing SUBFROM and ADDTO calls on the object
  6011. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  6012. ----------1512--BH16-------------------------
  6013. INT 15 - DESQview 2.2+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  6014.     AH = 12h 
  6015.     BH = 16h
  6016.     BL = object
  6017.         00h DWORD on top of stack
  6018.         mailbox, keyboard, or pointer only
  6019.         02h mailbox for task whose handle is on top of stack
  6020.         03h mailbox for current task
  6021.         04h keyboard for task whose handle is on top of stack
  6022.         05h keyboard for current task
  6023. Return: STACK: DWORD current control flags
  6024. Note:    only available if the API level has been set to at least 2.20
  6025. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=15h
  6026. ----------1513-------------------------------
  6027. INT 15 - VMiX - WAKE PROCESS
  6028.     AH = 13h
  6029.     STACK:    WORD    process ID
  6030. Return: AX = status
  6031. ----------1514-------------------------------
  6032. INT 15 - VMiX - CLEAR WINDOW
  6033.     AH = 14h
  6034.     STACK:    WORD    top left corner of window
  6035.         WORD    bottom right corner of window
  6036. Return: AX = status
  6037. ----------1515-------------------------------
  6038. INT 15 - VMiX - SET BANNER WINDOW MESSAGE
  6039.     AH = 15h
  6040.     STACK:    DWORD    pointer to ASCIZ banner    message
  6041. Return: AX = status
  6042. ----------1516-------------------------------
  6043. INT 15 - VMiX - SET ROOT WINDOW SIZE AND HOME CURSOR
  6044.     AH = 16h
  6045.     STACK:    DWORD    pointer to I/O Request Packet
  6046.         WORD    top left corner of window
  6047.         WORD    bottom right corner of window
  6048. Return: AX = status
  6049. ----------1517-------------------------------
  6050. INT 15 - VMiX - GET CONSOLE WINDOW COLORS
  6051.     AH = 17h
  6052. Return: AH = foreground color
  6053.     AL = background color
  6054. SeeAlso: AH=18h
  6055. ----------1518-------------------------------
  6056. INT 15 - VMiX - SET CONSOLE COLORS
  6057.     AH = 18h
  6058.     STACK:    WORD    new background/foreground colors
  6059. Return: AX = color
  6060. SeeAlso: AH=17h
  6061. ----------1519-------------------------------
  6062. INT 15 - VMiX v2+ - ???
  6063.     AH = 19h
  6064.     STACK: WORD ???
  6065. Return: ???
  6066. ----------151A-------------------------------
  6067. INT 15 - VMiX v2+ - ???
  6068.     AH = 1Ah
  6069.     STACK: 3 WORDs ???
  6070. Return: ???
  6071. ----------151B-------------------------------
  6072. INT 15 - VMiX v2+ - ???
  6073.     AH = 1Bh
  6074.     STACK: 5 WORDs ???
  6075. Return: ???
  6076. ----------151C-------------------------------
  6077. INT 15 - VMiX v2+ - ???
  6078.     AH = 1Ch
  6079.     STACK: 5 WORDs ???
  6080. Return: ???
  6081. ----------151D-------------------------------
  6082. INT 15 - VMiX v2+ - ???
  6083.     AH = 1Dh
  6084.     ???
  6085. Return: ???
  6086. ----------151E-------------------------------
  6087. INT 15 - VMiX v2+ - ???
  6088.     AH = 1Eh
  6089.     STACK: WORD ???
  6090. Return: ???
  6091. ----------152000-----------------------------
  6092. INT 15 - DOS 3.x PRINT.COM - DISABLE CRITICAL REGION FLAG (AT,XT286,PS50+)
  6093.     AX = 2000h
  6094. SeeAlso: AX=2001h
  6095. ----------152001-----------------------------
  6096. INT 15 - DOS 3.x PRINT.COM - SET CRITICAL REGION FLAG (AT,XT286,PS50+)
  6097.     AX = 2001h
  6098.     ES:BX -> byte which is to be incremented while in a DOS call
  6099. SeeAlso: AX=2000h
  6100. ----------152010-----------------------------
  6101. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  6102.     AX = 2010h
  6103.     ???
  6104. Return: ???
  6105. SeeAlso: AX=2011h
  6106. ----------152011-----------------------------
  6107. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  6108.     AX = 2011h
  6109.     ???
  6110. Return: ???
  6111. SeeAlso: AX=2010h
  6112. ----------1521-------------------------------
  6113. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  6114.     AH = 21h
  6115.     AL = subfunction
  6116.         00h read POST log
  6117.         01h write POST log
  6118.         BH = device ID
  6119.         BL = error code
  6120. Return: CF set on error
  6121.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  6122.     if function 00h:
  6123.        BX = number of error codes stored
  6124.        ES:DI -> error log
  6125. Note:    the log is a series of words, the first byte of which identifies the
  6126.       error code and the second the device.
  6127. ----------1540-------------------------------
  6128. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  6129.     AH = 40h
  6130.     AL = subfunction
  6131.         00h get system profile in CX and BX
  6132.         01h set system profile from CX and BX
  6133.         02h get internal modem profile in BX
  6134.         03h set internal modem profile from BX
  6135. ----------154000-----------------------------
  6136. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  6137.     AX = 4000h
  6138. Return: AX = 4000h
  6139.     CL = 00h timeout disabled
  6140.        else timeout in minutes
  6141. SeeAlso: AX=4001h,AX=4600h
  6142. ----------154001-----------------------------
  6143. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  6144.     AX = 4001h
  6145.     CL = 00h timeout disabled
  6146.        else  timeout in minutes
  6147. Return: AL = 00h timeout modified
  6148.          01h timeout cannot be modified
  6149.          40h timeout cannot be modified
  6150.     CL = 00h timeout disabled
  6151.        else timeout in minutes
  6152. SeeAlso: AX=4000h,AX=4601h
  6153. ----------1541-------------------------------
  6154. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE)
  6155.     AH = 41h
  6156.     AL = condition type
  6157.         bits 0-2: condition to wait for
  6158.              0 any external event
  6159.              1 compare and return if equal
  6160.              2 compare and return if not equal
  6161.              3 test and return if not zero
  6162.              4 test and return if zero
  6163.         bit 3:    reserved
  6164.         bit 4:    1=port address, 0=user byte
  6165.         bits 5-7: reserved
  6166.     BH = condition compare or mask value
  6167.     BL = timeout value times 55 milliseconds
  6168.         00h means no timeout
  6169.     DX = I/O port address if AL bit 4 set
  6170.     ES:DI -> user byte if AL bit 4 clear
  6171. ----------1542-------------------------------
  6172. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE)
  6173.     AH = 42h
  6174.     AL = 00h to use system profile
  6175.          01h to force suspend regardless of system profile
  6176. SeeAlso: AH=44h
  6177. ----------154280-----------------------------
  6178. INT 15 - Compaq SLT/286 - ENTER STANDBY
  6179.     AX = 4280h
  6180. Return: AH = 42h
  6181.     CF clear if successful
  6182.     CF set if unable to enter standby
  6183. SeeAlso: AX=4600h
  6184. ----------1543-------------------------------
  6185. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  6186.     AH = 43h
  6187. Return: AL = status bits
  6188.         bit 0: LCD detached
  6189.         bit 1: reserved
  6190.         bit 2: RS232/parallel adapter powered on
  6191.         bit 3: internal modem powered on
  6192.         bit 4: power activated by alarm
  6193.         bit 5: standby power lost
  6194.         bit 6: external power in use
  6195.         bit 7: power low
  6196. ----------1544-------------------------------
  6197. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  6198.     AH = 44h
  6199.     AL = 00h to power off
  6200.          01h to power on
  6201. SeeAlso: AH=42h
  6202. ----------154600-----------------------------
  6203. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  6204.     AX = 4600h
  6205. Return: AH = modem configuration information
  6206.         bit 0 powerup state
  6207.             0 off
  6208.             1 on
  6209.             1 modem installed
  6210.         2 IRQ line assignment
  6211.             0 IRQ 4
  6212.             1 IRQ 3
  6213.         3 COM port assignment
  6214.             0 = COM 2
  6215.             1 = COM 1
  6216.         4 modem state
  6217.             0 not assigned
  6218.             1 assigned
  6219.         5 modem is on
  6220.     AL = power conservation status information
  6221.         bit 0  power source (0 internal, 1 external)
  6222.            1-2 low battery state
  6223.             00 no low battery condition
  6224.             01 low battery 1
  6225.             10 reserved
  6226.             11 low battery 2
  6227.            3-4 power conservation mode
  6228.             00 automatic
  6229.             01 on
  6230.             10 off
  6231.             11 reserved
  6232.     BH = default system inactivity timeout (1-21 minutes)
  6233.     BL = current system inactivity timeout (1-21 minutes)
  6234.     CH = default video display inactivity timeout (1-63 minutes)
  6235.     CL = current video display inactivity timeout (1-63 minutes)        
  6236.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  6237.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  6238. SeeAlso: AX=4280h,AX=4601h,INT 77
  6239. ----------154601-----------------------------
  6240. INT 15 - Compaq SLT/286 - Modify Power Conservation/Modem Configuration
  6241.     AX = 4601h
  6242.     BL = system inactivity timeout (1-21 minutes)
  6243.        = FFh do not change
  6244.     CL = video display inactivity timeout (1-63 minutes)        
  6245.        = FFh do not change
  6246.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  6247.        = FFh do not change
  6248.     DH = 00h turn modem OFF
  6249.        = 01h turn modem ON
  6250.        = FFh do not change modem state
  6251. Return: CF clear if successful
  6252.         AH = 00h
  6253.         BL = current system inactivity timeout (1-21 minutes)
  6254.         CL = current video display inactivity timeout (1-63 minutes)    
  6255.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  6256.         DH = FFh modem state unchanged
  6257.            = 00h modem turned OFF
  6258.            = 01h modem turned ON
  6259.     CF set on error
  6260.         AH = 01h input is out of range
  6261.            = 02h - No modem present
  6262. SeeAlso: AX=4600h,INT 77
  6263. ----------154F-------------------------------
  6264. INT 15 - OS HOOK - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  6265.     AH = 4Fh
  6266.     AL = scan code
  6267.     CF set
  6268. Return: CF set
  6269.        AL = scan code
  6270.     CF clear
  6271.        scan code should be ignored
  6272. Note:    called by INT 9 handler to translate scan codes
  6273. SeeAlso: INT 09
  6274. ----------155400-----------------------------
  6275. INT 15 - Omniview Multitasker - INSTALLATION NOTIFICATION
  6276.     AX = 5400h
  6277.     ES:BX -> device information tables
  6278.     DI:DX -> dispatcher entry point
  6279. Note:    called by OmniView to notify programs loaded before OmniView of state
  6280.       changes inside OmniView
  6281. SeeAlso: AX=5407h
  6282. ----------155401-----------------------------
  6283. INT 15 - Omniview Multitasker - PROCESS CREATION
  6284.     AX = 5401h
  6285.     ES:BX = process handle
  6286. Note:    called by OmniView to notify programs loaded before OmniView of state
  6287.       changes inside OmniView
  6288. SeeAlso: AX=5402h
  6289. ----------155402-----------------------------
  6290. INT 15 - Omniview Multitasker - PROCESS DESTRUCTION
  6291.     AX = 5402h
  6292.     ES:DX = process handle
  6293. Note:    called by OmniView to notify programs loaded before OmniView of state
  6294.       changes inside OmniView
  6295. SeeAlso: AX=5401h
  6296. ----------155403-----------------------------
  6297. INT 15 - Omniview Multitasker - SAVE
  6298.     AX = 5403h
  6299.     ES:DX = process swapping out
  6300. Note:    called by OmniView to notify programs loaded before OmniView of state
  6301.       changes inside OmniView
  6302. SeeAlso: AX=5404h
  6303. ----------155404-----------------------------
  6304. INT 15 - Omniview Multitasker - RESTORE
  6305.     AX = 5404h
  6306.     ES:DX = process swapping in
  6307. Note:    called by OmniView to notify programs loaded before OmniView of state
  6308.       changes inside OmniView
  6309. SeeAlso: AX=5403h
  6310. ----------155405-----------------------------
  6311. INT 15 - Omniview Multitasker - SWITCHING TO BACKGROUND
  6312.     AX = 5405h
  6313.     ES:DX = process swapping in
  6314. Note:    called by OmniView to notify programs loaded before OmniView of state
  6315.       changes inside OmniView
  6316. SeeAlso: AX=5406h
  6317. ----------155406-----------------------------
  6318. INT 15 - Omniview Multitasker - SWITCHING TO FOREGROUND
  6319.     AX = 5406h
  6320.     ES:DX = process swapping in
  6321. Note:    called by OmniView to notify programs loaded before OmniView of state
  6322.       changes inside OmniView
  6323. SeeAlso: AX=5405h
  6324. ----------155407-----------------------------
  6325. INT 15 - Omniview Multitasker - EXIT NOTIFICATION
  6326.     AX = 5407h
  6327. Note:    called by OmniView to notify programs loaded before OmniView of state
  6328.       changes inside OmniView
  6329. SeeAlso: AX=5400h
  6330. ----------1580-------------------------------
  6331. INT 15 - OS HOOK - DEVICE OPEN (AT,XT2,XT286,PS)
  6332.     AH = 80h
  6333.     BX = device ID
  6334.     CX = process type
  6335. Return: CF set on error
  6336.         AH = status
  6337.     CF clear if successful
  6338.         AH = 00h        
  6339. SeeAlso: AH=81h,82h
  6340. ----------1581-------------------------------
  6341. INT 15 - OS HOOK - DEVICE CLOSE (AT,XT2,XT286,PS)
  6342.     AH = 81h
  6343.     BX = device ID
  6344.     CX = process type
  6345. Return: CF set on error
  6346.         AH = status
  6347.     CF clear if successful
  6348.         AH = 00h        
  6349. SeeAlso: AH=80h,82h
  6350. ----------1582-------------------------------
  6351. INT 15 - OS HOOK - DEVICE PROGRAM TERMINATE (AT,XT2,XT286,PS)
  6352.     AH = 82h
  6353.     BX = device ID
  6354. Return: CF set on error
  6355.         AH = status
  6356.     CF clear if successful
  6357.         AH = 00h        
  6358. Note:    closes all devices opened with function 80h
  6359. SeeAlso: AH=80h,81h
  6360. ----------1583-------------------------------
  6361. INT 15 - SYSTEM - EVENT WAIT (AT,XT286,CONV,PS)
  6362.     AH = 83h
  6363.     AL = subservice
  6364.         00h = set interval
  6365.         01h = cancel
  6366.     ES:BX -> event flag (bit 7 set when interval expires)
  6367.     CX:DX = number of microseconds to wait (only accurate to 977 us)
  6368. Return: CF set if function already busy
  6369. Note:    the resolution of the wait period is 977 microseconds on most systems
  6370.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  6371.       real-time clock chip which is available on INT 70
  6372. SeeAlso: AH=86h, INT 70
  6373. ----------1584-------------------------------
  6374. INT 15 - SYSTEM - READ JOYSTICK (AT,XT2,XT286,PS)
  6375.     AH = 84h
  6376.     DX = subservice
  6377.         0000h get switch settings
  6378.         Return: AL = switch settings
  6379.                 bit 7: stick B button 2
  6380.                 bit 6: stick B button 1
  6381.                 bit 5: stick A button 2
  6382.                 bit 4: stick A button 1
  6383.         0001h read joystick inputs
  6384.         Return: AX = A(x) value
  6385.             BX = A(y) value
  6386.             CX = B(x) value
  6387.             DX = B(y) value
  6388. ----------1585-------------------------------
  6389. INT 15 - OS HOOK - SYSTEM REQUEST KEY PRESSED (AT,XT2,XT286,CONV,PS)
  6390.     AH = 85h
  6391.     AL = 00h press
  6392.        = 01h release
  6393. Return: CF set on error
  6394.     AH = status
  6395. Note:    called by keyboard decode routine
  6396. SeeAlso: INT 09
  6397. ----------1586-------------------------------
  6398. INT 15 - SYSTEM - WAIT (AT,XT2,XT286,CONV,PS)
  6399.     AH = 86h
  6400.     CX,DX = number of microseconds to wait (only accurate to 977 us)
  6401. Return: CF clear: after wait elapses
  6402.     CF set: immediately due to error
  6403. Note:    the resolution of the wait period is 977 microseconds on most systems
  6404.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  6405.       real-time clock chip which is available on INT 70
  6406. SeeAlso: AH=83h, INT 70
  6407. ----------1587-------------------------------
  6408. INT 15 - EXTENDED MEMORY - BLOCK MOVE (AT,XT286,PS)
  6409.     AH = 87h
  6410.     CX = number of words to move
  6411.     ES:SI -> global descriptor table (see below)
  6412. Return: CF set on error
  6413.     AH = status
  6414.         00h source copied into destination
  6415.         01h parity error
  6416.         02h interrupt error
  6417.         03h address line 20 gating failed
  6418. SeeAlso: AH=88h
  6419.  
  6420. Format of global descriptor table:
  6421. Offset    Size    Description
  6422.  00h 16 BYTEs    zeros
  6423.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  6424.  12h  3 BYTEs    24-bit linear source address, low byte first
  6425.  15h    BYTE    source segment access rights (93h)
  6426.  16h    WORD    zero
  6427.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  6428.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  6429.  1Dh    BYTE    destination segment access rights (93h)
  6430.  1Eh 18 BYTEs    zeros
  6431. ----------1588-------------------------------
  6432. INT 15 - EXTENDED MEMORY - GET MEMORY SIZE (AT,XT286,PS)
  6433.     AH = 88h
  6434. Return: AX = memory size in K
  6435. SeeAlso: AH=87h
  6436. Note:    TSRs which wish to allocate extended memory to themselves often hook
  6437.       this call, and return a reduced memory size.    They are then free to
  6438.       use the memory between the new and old sizes at will.
  6439. ----------1589-------------------------------
  6440. INT 15 - SYSTEM - SWITCH TO VIRTUAL MODE (AT,XT286,PS50+)
  6441.     AH = 89h
  6442.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  6443.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  6444.     DS:SI -> GDT for protected mode
  6445.            offset 0h  null descriptor
  6446.               8h  GDT descriptor
  6447.              10h  IDT descriptor
  6448.              18h  DS
  6449.              20h  ES
  6450.              28h  SS
  6451.              30h  CS
  6452.              38h  uninitialized, used to build descriptor for BIOS CS
  6453.     CX = offset into protected-mode CS to jump to
  6454. Return: CF set on error
  6455.        AH = 0FFh  error enabling address line 20
  6456.     in protected mode at specified address if successful
  6457. SeeAlso: INT 67/AX=DE0Ch
  6458. ----------1590-------------------------------
  6459. INT 15 - OS HOOK - DEVICE BUSY LOOP (AT,XT2,XT286,CONV,PS)
  6460.     AH = 90h
  6461.     AL = type code
  6462.         00h disk
  6463.         01h diskette
  6464.         02h keyboard
  6465.         03h PS/2 pointing device
  6466.         80h network
  6467.         FCh disk reset
  6468.         FDh diskette motor start
  6469.         FEh printer
  6470.     ES:BX -> request block for type codes 80h through BFh
  6471. Return: CF set if wait time satisfied
  6472.     CF clear if driver must perform wait
  6473. Note:    type codes are allocated as follows:
  6474.       00-7F non-reentrant devices; OS must arbitrate access
  6475.       80-BF reentrant devices; ES:BX points to a unique control block
  6476.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  6477. SeeAlso: AH=91h
  6478. ----------1591-------------------------------
  6479. INT 15 - OS HOOK - SET FLAG AND COMPLETE INTERRUPT (AT,XT2,XT286,CONV,PS)
  6480.     AH = 91h
  6481.     AL = type code (see AH=90h)
  6482.     ES:BX -> request block for type codes 80h through BFh
  6483. Return: AH = 00h
  6484. SeeAlso: AH=90h
  6485. ----------15C0-------------------------------
  6486. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  6487.     AH = C0h
  6488. Return: CF set if BIOS doesn't support call
  6489.     CF clear on success
  6490.         ES:BX -> ROM table (see below)
  6491. Note:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  6492.  
  6493. Format of ROM configuration table:
  6494. Offset    Size    Description
  6495.  00h    WORD    number of bytes following
  6496.  02h    BYTE    model (see below)
  6497.  03h    BYTE    submodel (see below)
  6498.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  6499.  05h    BYTE    features:
  6500.         bit 7 = DMA channel 3 used by hard disk BIOS
  6501.         bit 6 = 2nd 8259 installed
  6502.         bit 5 = Real-Time Clock installed
  6503.         bit 4 = INT 15h/AH=4Fh called upon INT 9h
  6504.         bit 3 = wait for external event supported
  6505.         bit 2 = extended BIOS area allocated at 640K
  6506.         bit 1 = bus is Micro Channel instead of ISA
  6507.         bit 0 reserved
  6508.  06h    WORD    reserved (0)
  6509.  08h    WORD    reserved (0)
  6510.  0Ah        AWARD copyright notice here
  6511.  
  6512. Values for model/submodel/revision:
  6513. Model  Submdl  Rev    BIOS date    System
  6514.  FFh    *    *    04/24/81    PC (original)
  6515.  FFh    *    *    10/19/81    PC (some bugfixes)
  6516.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  6517.  FEh    *    *    08/16/82    PC XT
  6518.  FEh    *    *    11/08/82    PC XT and Portable
  6519.  FDh    *    *    06/01/83    PCjr
  6520.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  6521.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  6522.  FCh    00h    <> 01h      ???        7531/2 Industrial AT
  6523.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  6524.  FCh    01h    00h    01/15&88    Toshiba T5200/100
  6525.  FCh    01h    00h    12/26*89    Toshiba T1200/XE
  6526.             (Those date characters are not typos)
  6527.  FCh    01h    ???      ???        Compaq 286/386
  6528.  FCh    02h    00h    04/21/86    PC XT-286
  6529.  FCh    04h    00h    02/13/87     ** PS/2 Model 50
  6530.  FCh    04h    03h    04/18/88    PS/2 Model 50Z
  6531.  FCh    05h    00h    02/13/87     ** PS/2 Model 60
  6532.  FCh    06h    ???      ???        7552 "Gearbox"
  6533.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  6534.  FCh    0Bh    00h    02/16/90    PS/1
  6535.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  6536.  FBh    00h    01h    01/10/86    PC XT, Enh Keyb, 3.5" support
  6537.  FBh    00h    02h    05/09/86    PC XT
  6538.  FAh    00h    00h    09/02/86    PS/2 Model 30
  6539.  FAh    00h    01h    12/12/86    PS/2 Model 30
  6540.  FAh    01h    00h      ???        PS/2 Model 25
  6541.  F9h    00h    00h    09/13/85    PC Convertible
  6542.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 16MHz
  6543.  F8h    01h    00h    10/07/87    PS/2 Model 80 20MHz
  6544.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  6545.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  6546.  F8h    09h    ???      ???        PS/2 Model 70 16MHz, type 1 system brd
  6547.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  6548.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  6549.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121)
  6550.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  6551.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX
  6552.  F8h    0Dh    ???      ???        PS/2 Model 70 25MHz, type 3 system brd
  6553.  F8h    11h    00h    10/01/90    PS/2 Model ??
  6554.  F8h    13h    00h    10/01/90    PS/2 Model ??
  6555.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9
  6556.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD
  6557.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486
  6558.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121
  6559.  F8h    1Eh    00h    02/08/90    PS/2 Model ??
  6560.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  6561.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21
  6562.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  6563.  30h    ???    ???      ???        Sperry PC
  6564.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  6565.  
  6566.     * This BIOS call is not implemented in these early versions.
  6567.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  6568.    ** These BIOS versions require the DASDDRVR.SYS patches.
  6569. ----------15C1-------------------------------
  6570. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  6571.     AH = C1h
  6572. Return: CF set on error
  6573.     CF clear if successful
  6574.         ES = segment of data area
  6575. SeeAlso: AH=04h"ABIOS"
  6576. ----------15C200-----------------------------
  6577. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  6578.     AX = C200h
  6579.     BH = 00h disable
  6580.          01h enable
  6581. Return: CF set on error
  6582.     AH = status
  6583.         00h successful
  6584.         01h invalid function
  6585.         02h invalid input
  6586.         03h interface error
  6587.         04h need to resend
  6588.         05h no device handler installed
  6589. ----------15C201-----------------------------
  6590. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  6591.     AX = C201h
  6592. Return: CF set on error
  6593.          AH = status (see AX=C200h)
  6594.     CF clear if successful
  6595.         BH = device ID
  6596. SeeAlso: INT 33/AX=0000h
  6597. ----------15C202-----------------------------
  6598. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  6599.     AX = C202h
  6600.     BH = sampling rate
  6601.         00h 10/second
  6602.         01h 20/second
  6603.         02h 40/second
  6604.         03h 60/second
  6605.         04h 80/second
  6606.         05h 100/second
  6607.         06h 200/second
  6608. Return: CF set on error
  6609.         AH = status (see AX=C200h)
  6610. SeeAlso: INT 33/AX=001Ch
  6611. ----------15C203-----------------------------
  6612. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  6613.     AX = C203h
  6614.     BH = resolution
  6615.         00h one count per mm
  6616.         01h two counts per mm
  6617.         02h four counts per mm
  6618.         03h eight counts per mm
  6619. Return: CF set on error
  6620.         AH = status (see AX=C200h)
  6621. ----------15C204-----------------------------
  6622. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  6623.     AX = C204h
  6624. Return: CF set on error
  6625.         AH = status (see AX=C200h)
  6626.     CF clear if successful
  6627.         BH = device ID
  6628. ----------15C205-----------------------------
  6629. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  6630.     AX = C205h
  6631.     BH = data package size (1 - 8 bytes)
  6632. Return: CF set on error
  6633.         AH = status (see AX=C200h)
  6634. SeeAlso: AX=C201h
  6635. ----------15C206-----------------------------
  6636. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET/SET SCALING FACTOR
  6637.     AX = C206h
  6638.     BH = subfunction
  6639.         00h return device status
  6640.         Return: BL = status
  6641.                bit 0: right button pressed
  6642.                bit 1: reserved
  6643.                bit 2: left button pressed
  6644.                bit 3: reserved
  6645.                bit 4: 0 if 1:1 scaling, 1 if 2:1 scaling
  6646.                bit 5: device enabled
  6647.                bit 6: 0 if stream mode, 1 if remote mode
  6648.                bit 7: reserved
  6649.             CL = resolution (see AX=C203h)
  6650.               DL = sample rate, reports per second
  6651.         01h set scaling at 1:1
  6652.          02h set scaling at 2:1
  6653. Return: CF set on error
  6654.         AH = status (see AX=C200h)
  6655. ----------15C207-----------------------------
  6656. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  6657.     AX = C207h
  6658.     ES:BX = user device handler
  6659. Return: CF set on error
  6660.         AH = status (see AX=C200h)
  6661. SeeAlso: INT 33/AX=000Ch
  6662. ----------15C3------------------------------
  6663. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  6664.     AH = C3h
  6665.     AL = 00h disable
  6666.          01h enable
  6667.         BX = timer counter
  6668. Return: CF set on error
  6669.     CF clear if successful
  6670. Note:    the watchdog timer generates an NMI
  6671. ----------15C4-------------------------------
  6672. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  6673.     AH = C4h
  6674.     AL = 00h return base POS register address
  6675.          01h enable slot
  6676.          BL = slot number
  6677.          02h enable adapter
  6678. Return: CF set on error
  6679.     DX = base POS register address (if function 00h)
  6680. ----------15D800-----------------------------
  6681. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  6682.     AX = D800h
  6683.     CL = slot number (including embedded and virtual)
  6684. Return: CF clear if successful
  6685.         AH = 00h
  6686.     CF set on error
  6687.         AH = error code
  6688.         80h invalid slot number
  6689.         82h EISA CMOS corrupt
  6690.         83h empty slot
  6691.         86h invalid BIOS-FW function call
  6692.         87h invalid system configuration
  6693.     AL bit flags
  6694.         bit 7: set if duplicate IDs
  6695.         6: set if product ID readable
  6696.           4,5: slot type (00=expansion, 01=embedded, 10=virtual device)
  6697.           0-3: duplicate ID number if bit 7 set
  6698.     BH = major revision level of configuration utility
  6699.     BL = minor revision level of configuration utility
  6700.     CX = checksum of configuration file
  6701.     DH = number of device functions
  6702.     DL = combined function information byte
  6703.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6704. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  6705. SeeAlso: AX=D801h,AX=D804h
  6706. ----------15D801-----------------------------
  6707. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  6708.     AX = D801h
  6709.     CH = function number to read
  6710.     CL = slot number (including embedded and virtual)
  6711.     DS:SI -> 320-byte buffer for standard configuration data block
  6712. Return: CF clear if successful
  6713.         AH = 00h
  6714.         DS:SI buffer filled
  6715.     CF set on error
  6716.         AH = error code
  6717.         80h invalid slot number
  6718.         81h invalid function number
  6719.         82h EISA CMOS corrupt
  6720.         83h empty slot
  6721.         86h invalid BIOS-FW function call
  6722.         87h invalid system configuration
  6723.     BX destroyed
  6724. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  6725. ----------15D802-----------------------------
  6726. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  6727.     AX = D802h
  6728.     BH = EISA config utility major revision level
  6729.     BL = EISA config utility minor revision level
  6730. Return: CF clear if successful
  6731.         AH = 00h
  6732.     CF set on error
  6733.         AH = error code
  6734.         84h error clearing CMOS
  6735.         86h invalid BIOS-FW function call
  6736.         88h config utility version not supported
  6737. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  6738. SeeAlso: AX=D803h
  6739. ----------15D803-----------------------------
  6740. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  6741.     AX = D803h
  6742.     CX = length of data structure (0000h = empty slot)
  6743.         includes two bytes for config file checksum
  6744.     DS:SI -> configuration data
  6745. Return: CF clear if successful
  6746.         AH = 00h
  6747.     CF set on error
  6748.         AH = error code
  6749.         84h error clearing CMOS
  6750.         85h EISA CMOS is full
  6751.         86h invalid BIOS-FW function call
  6752. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  6753. SeeAlso: AX=D802h
  6754. ----------15D804-----------------------------
  6755. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  6756.     AX = D804h
  6757.     CL = slot number (including embedded and virtual)
  6758. Return: CF clear if successful
  6759.         AH = 00h
  6760.     CF set on error
  6761.         AH = error code
  6762.         80h invalid slot number
  6763.         83h empty slot
  6764.         86h invalid BIOS-FW function call
  6765.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  6766. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  6767. SeeAlso: AX=D800h
  6768. ----------15D8-------------------------------
  6769. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  6770.     AH = D8h
  6771.     AL = 80h to 84h
  6772.     other registers as appropriate for AL=00h to 04h
  6773. Return: as appropriate for AL=00h to 04h
  6774. Note:    these functions are identical to AX=D800h to D804h, except that they
  6775.       should be called when using 32-bit CS addressing mode (pointers use
  6776.       ESI rather than SI as offset) instead of 16-bit addressing mode
  6777. SeeAlso: AX=D800h, AX=D801h, AX=D802h, AX=D803h, AX=D804h
  6778. ----------15DE00-----------------------------
  6779. INT 15 - DESQview - GET PROGRAM NAME
  6780.     AX = DE00h
  6781. Return: AX = offset into DESQVIEW.DVO of current program's record (see below)
  6782. SeeAlso: AX=DE07h
  6783.  
  6784. Format of program entry in DESQVIEW.DVO:
  6785. Offset    Size    Description
  6786.  00h    BYTE    length of name
  6787.  01h  N BYTEs    name
  6788.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  6789.     WORD    ??? seems always to be 0000h
  6790.     BYTE    end flag: 00h for all but last entry, which is FFh
  6791. ----------15DE01-----------------------------
  6792. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  6793.     AX = DE01h
  6794. Return: nothing
  6795. Note:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  6796. ----------15DE02-----------------------------
  6797. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  6798.     AX = DE02h
  6799. Return: nothing
  6800. Note:    this call is a NOP in DV 2.x
  6801. SeeAlso: AX=DE03h
  6802. ----------15DE03-----------------------------
  6803. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  6804.     AX = DE03h
  6805. Return: AX = ??? for current window
  6806.     BX = ??? for current window
  6807. Note:    this call is a NOP in DV 2.x
  6808. SeeAlso: AX=DE02h
  6809. ----------15DE04-----------------------------
  6810. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  6811.     AX = DE04h
  6812. Return: BX = bytes of common memory available
  6813.     CX = largest block available
  6814.     DX = total common memory in bytes
  6815. SeeAlso: AX=DE05h,DE06h
  6816. ----------15DE05-----------------------------
  6817. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  6818.     AX = DE05h
  6819. Return: BX = K of memory available
  6820.     CX = largest block available
  6821.     DX = total conventional memory in K
  6822. SeeAlso: AX=DE04h,DE06h
  6823. ----------15DE06-----------------------------
  6824. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  6825.     AX = DE06h
  6826. Return: BX = K of expanded memory available
  6827.     CX = largest block available
  6828.     DX = total expanded memory in K
  6829. SeeAlso: AX=DE04h,DE05h
  6830. ----------15DE07-----------------------------
  6831. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  6832.     AX = DE07h
  6833. Return: AX = number of program as it appears on the "Switch Windows" menu
  6834. Note:    this API call may be made from a hardware interrupt handler
  6835. SeeAlso: AX=DE00h
  6836. ----------15DE08-----------------------------
  6837. INT 15 - DESQview - GET ???
  6838.     AX = DE08h
  6839. Return: AX = 0000h if ??? is not set to the current task
  6840.          0001h if ??? is set to the current task
  6841. ----------15DE09-----------------------------
  6842. INT 15 - DESQview - UNIMPLEMENTED
  6843.     AX = DE09h
  6844. Return: nothing (NOP in DV 1.x and 2.x)
  6845. ----------15DE0A-----------------------------
  6846. INT 15 - DESQview 2.x - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  6847.     AX = DE0Ah
  6848.     BL = character
  6849. Return: character displayed, next call will display in next position (which
  6850.     wraps back to the start of the line if off the right edge of screen)
  6851. Notes:    displays character on bottom line of *physical* screen, regardless
  6852.       of current size of window (even entirely hidden)
  6853.     does not know about graphics display modes, just pokes the characters
  6854.       into display memory
  6855.     this API call may be made from a hardware interrupt handler
  6856. SeeAlso: AX=1003h
  6857. ----------15DE0B-----------------------------
  6858. INT 15 - DESQview 2.x - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  6859.     AX = DE0Bh
  6860.     BL = API level major version number
  6861.     BH = API level minor version number
  6862. Return: AX = maximum API level (AL = major, AH = minor)
  6863. Notes:    if the requested API level is greater than the version of DESQview, a
  6864.       "You need a newer version" error window is popped up
  6865.     the API level defaults to 1.00, and is inherited by child tasks
  6866.     some early copies of DV 2.00 return AX=0200h instead of 0002h
  6867. ----------15DE0C-----------------------------
  6868. INT 15 - DESQview 2.x - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  6869.     AX = DE0Ch
  6870.     BX = number of bytes
  6871. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  6872. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  6873.       system memory
  6874. SeeAlso: AX=1001h,AX=DE0Dh,AX=DE15h
  6875. ----------15DE0D-----------------------------
  6876. INT 15 - DESQview 2.x - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  6877.     AX = DE0Dh
  6878.     ES:DI -> previously allocated block
  6879. Return: nothing
  6880. SeeAlso: AX=1002h,AX=DE0Ch
  6881. ----------15DE0E-----------------------------
  6882. INT 15 - DESQview 2.x - "FINDMAIL" - FIND MAILBOX BY NAME
  6883.     AX = DE0Eh
  6884.     ES:DI -> name to find
  6885.     CX = length of name
  6886. Return: BX = 0000h not found
  6887.          0001h found
  6888.         DS:SI = object handle
  6889. SeeAlso: AH=12h/BH=11h
  6890. ----------15DE0F-----------------------------
  6891. INT 15 - DESQview 2.x - ENABLE DESQview EXTENSIONS
  6892.     AX = DE0Fh
  6893. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  6894. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  6895.     enables an additional mouse mode
  6896. ----------15DE10-----------------------------
  6897. INT 15 - DESQview 2.x - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  6898.     AX = DE10h
  6899.     BH = scan code
  6900.     BL = character
  6901. Return: nothing
  6902. Notes:    a later read will get the keystroke as if it had been typed by the user
  6903.     multiple pushes are read last-in first-out
  6904.     if a script exists for the pushed key in the current application, the
  6905.       script will be executed
  6906.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  6907. SeeAlso: INT 16/AH=05h
  6908. ----------15DE11-----------------------------
  6909. INT 15 - DESQview 2.x - ENABLE/DISABLE AUTOMATIC JUSTIFICATION OF WINDOW
  6910.     AX = DE11h
  6911.     BL = 00h      viewport will not move automatically
  6912.          nonzero  viewport will move to keep cursor visible (default)
  6913. Return: nothing
  6914. ----------15DE12-----------------------------
  6915. INT 15 - DESQview 2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  6916.     AX = DE12h
  6917.     BX = 0000h    select normal style (linefeed only moved down)
  6918.          nonzero  select C style (linefeed moves to start of next line)
  6919. Return: nothing
  6920. Note:    set on a per-task basis, and inherited from the parent task
  6921. ----------15DE13-----------------------------
  6922. INT 15 - DESQview 2.2+ - GET CRITICAL NESTING COUNT
  6923.     AX = DE13h
  6924. Return: BX = number of calls to BEGINC or ENTERC (see INT 15/AX=101Bh,DE1Ch)
  6925.          without matching ENDC (see INT 15/AX=101Ch)
  6926. Note:    this API call may be made from within a hardware interrupt handler
  6927. SeeAlso: AX=101Bh,101Ch,DE1Bh,DE1Ch
  6928. ----------15DE14-----------------------------
  6929. INT 15 - DESQview 2.2+ - GET OBJECT TYPE
  6930.     AX = DE14h
  6931.     ES:DI -> object
  6932. Return: BL = 00h not an object
  6933.          08h window or task
  6934.          09h mailbox
  6935.          0Ah keyboard
  6936.          0Bh timer
  6937.          0Ch objectq
  6938.          0Fh pointer
  6939.          10h panel
  6940. SeeAlso: AX=1016h
  6941. ----------15DE15-----------------------------
  6942. INT 15 - DESQview 2.2+ - SET ERROR HANDLING
  6943.     AX = DE15h
  6944.     BL = 00h post system error on all error conditions
  6945.          01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  6946.          messages sent to mailboxes which fail due to lack of system
  6947.          or common memory
  6948.          02h (v2.26+) same as 01h, but return null pointer for GETMEM
  6949.          calls which fail due to lack of system memory
  6950. Return: nothing
  6951. SeeAlso: AX=DE16h
  6952. ----------15DE16-----------------------------
  6953. INT 15 - DESQview 2.2+ - GET ERROR HANDLING
  6954.     AX = DE16h
  6955. Return: BL = 00h always post system error
  6956.          01h return carry flag set on failed mailbox writes
  6957.          02h return CF set on failed mailbox writes and NULL on failed
  6958.          GETMEM calls
  6959. SeeAlso: AX=DE15h
  6960. ----------15DE17-----------------------------
  6961. INT 15 - DESQview 2.20-2.25 - reserved
  6962.     AX = DE17h
  6963. Return: pops up "Programming error" window
  6964. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  6965. SeeAlso: AX=1117h
  6966. ----------15DE17-----------------------------
  6967. INT 15 - DESQview 2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  6968.     AX = DE17h
  6969.     BX = 0000h    get current mapping context without setting
  6970.          nonzero    set new mapping context
  6971. Return: BX = mapping context in effect before call
  6972. Notes:    mapping contexts determine conventional-memory addressability; setting
  6973.       a mapping context ensures that the associated program and data areas
  6974.       are in memory for access.  Usable by drivers, TSRs and shared
  6975.       programs.
  6976.     caller need not be running under DESQview
  6977.     this API call may be made from a hardware interrupt handler
  6978. SeeAlso: AX=1117h,INT 2F/AX=1685h
  6979. ----------15DE18-----------------------------
  6980. INT 15 - DESQview 2.2+ internal -
  6981.     AX = DE18h
  6982.     BP = function number
  6983.         high byte must be 10h
  6984.         low byte is function
  6985.         00h set ???
  6986.             BL = ???  (00h-10h, video mode???)
  6987.             BH = value to store
  6988.         03h set ???
  6989.             BL = ??? (stored in driver)
  6990.         0Ah get ???
  6991.             ES:DI -> 18-byte buffer to hold ???
  6992. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  6993. ----------15DE19-----------------------------
  6994. INT 15 - DESQview 2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  6995.     AX = DE19h
  6996.     BX = number of bytes to allocate
  6997. Return: AX = 0000h successful
  6998.         ES:DI -> allocated block
  6999.          nonzero insufficient memory
  7000. Note:    this API call may be made from within a hardware interrupt handler
  7001. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  7002. ----------15DE1A-----------------------------
  7003. INT 15 - DESQview 2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  7004.     AX = DE1Ah
  7005.     DS:SI -> previously allocated block
  7006. Note:    this function may be called from within a hardware interrupt handler
  7007. SeeAlso: AX=DE0Dh,DE19h
  7008. ----------15DE1B-----------------------------
  7009. INT 15 - DESQview 2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  7010.     AX = DE1Bh
  7011. Return: nothing
  7012. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  7013. ----------15DE1C-----------------------------
  7014. INT 15 - DESQview 2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  7015.     AX = DE1Ch
  7016. Return: nothing
  7017. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  7018.       that DOS is free
  7019.     the official documentation states that this call should be paired with
  7020.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  7021.     this API call may be made from within a hardware interrupt handler
  7022. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  7023. ----------15DE1D-----------------------------
  7024. INT 15 - DESQview 2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  7025.     AX = DE1Dh
  7026.     DX = segment of handle for task to receive keystroke
  7027.     BL = character
  7028.     BH = scan code
  7029. Return: AX = 0000h if successful
  7030.        nonzero if receiver's keyboard buffer was full
  7031. Notes:    the key is treated as though the user had pressed it, ignoring any
  7032.       script which may be bound to the key, and using the current field
  7033.       table if the keyboard object is in field processing mode
  7034.     multiple PUTKEYs are seen in the order in which they are executed
  7035. SeeAlso: AX=DE10h
  7036. ----------15DE1E-----------------------------
  7037. INT 15 - DESQview 2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  7038.     AX = DE1Eh
  7039. Return:    CL = actual number of rows on screen
  7040.     CH = actual number of columns on screen
  7041.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  7042. Note:    this API call may be made from a hardware interrupt handler
  7043. SeeAlso: INT 10/AH=0Fh
  7044. ----------15DE1F-----------------------------
  7045. INT 15 - DESQview 2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  7046.     AX = DE1Fh
  7047. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  7048. Note:    this API call may be made from within a hardware interrupt handler
  7049. SeeAlso: AX=DE13h
  7050. ----------15DE20-----------------------------
  7051. INT 15 - DESQview 2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  7052.     AX = DE20h
  7053.     BX = segment of handle of task to interupt
  7054.     DX:CX -> FAR interrupt routine
  7055. Return: nothing
  7056. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  7057.       making the DISPATCHINT call
  7058.     multiple "DISPATCHINT" calls are processed in the order in which they
  7059.       were executed
  7060.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  7061.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  7062.       needs to be preserved
  7063.     this API call may be made from within a hardware interrupt handler
  7064. SeeAlso: AX=1021h
  7065. ----------15DE21-----------------------------
  7066. INT 15 - DESQview 2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  7067.     AX = DE21h
  7068.     BX = 0000h turn off
  7069.          nonzero turn on
  7070. Return: BX = old state of virtualization
  7071. Note:    this API call may be made from within a hardware interrupt handler
  7072. ----------15DE22-----------------------------
  7073. INT 15 - DESQview 2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  7074.     AX = DE22h
  7075.     DX = segment of task handle
  7076. Return: DX = total amount of memory in paragraphs
  7077.     BX = amount of system memory in paragraphs
  7078.     CX = largest block of system memory available in paragraphs
  7079.     AX = flags
  7080.         bit 0: system memory resides in shared memory
  7081.         1: process's memory is swapped out
  7082.         2: process's system memory is swapped out
  7083. Notes:    if the task handle is a child task, the returned values will be for the
  7084.       process containing the task, rather than the task itself
  7085.     if the process's system memory is swapped out, BX,CX,DX remain
  7086.       unchanged, because the memory usage cannot be determined
  7087. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  7088. ----------15DE23-----------------------------
  7089. INT 15 - DESQview 2.31+ - ???
  7090.     AX = DE23h
  7091.     BX = ???
  7092.     CX = ???
  7093. Return: ???
  7094. ----------15E00F-----------------------------
  7095. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  7096.     AX = E00Fh
  7097.     ES:BX -> start of 2nd processor's execution
  7098. Return: AL = 0Fh successful
  7099.        = 00h failure    
  7100. ----------15E10E-----------------------------
  7101. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  7102.     AX = E10Eh
  7103.     ES:BX -> start of 2nd processor's execution
  7104. Return: AL = 0Fh successful (halted)
  7105.        = 00h failure (not halted)
  7106. ----------15E200-----------------------------
  7107. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  7108.     AX = E200h
  7109. Return: AX = 8000h if 2nd processor available
  7110. ----------1600-------------------------------
  7111. INT 16 - KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
  7112.     AH = 00h
  7113. Return: AH = scan code
  7114.     AL = character
  7115. Note:    on extended keyboards, this function discards any extended keystrokes,
  7116.       returning only when a non-extended keystroke is available
  7117. SeeAlso: AH=01h,10h
  7118. ----------1601-------------------------------
  7119. INT 16 - KEYBOARD - CHECK BUFFER, DO NOT CLEAR
  7120.     AH = 01h
  7121. Return: ZF clear if character in buffer
  7122.         AH = scan code
  7123.         AL = character
  7124.     ZF set if no character in buffer
  7125. SeeAlso: AH=00h,11h
  7126. ----------1602-------------------------------
  7127. INT 16 - KEYBOARD - GET SHIFT STATUS
  7128.     AH = 02h
  7129.     AL = shift status bits
  7130.         0 = right shift key depressed
  7131.         1 = left shift key depressed
  7132.         2 = CTRL depressed
  7133.         3 = ALT depressed
  7134.         4 = SCROLL LOCK active
  7135.         5 = NUM LOCK active
  7136.         6 = CAPS LOCK active
  7137.         7 = INSERT state active
  7138. SeeAlso: AH=12h
  7139. ----------1603-------------------------------
  7140. INT 16 - KEYBOARD - SET DELAYS (Jr,AT model 339,XT286,PS)
  7141.     AH = 03h
  7142.     AL = subfunction
  7143.         00h reset typematic (PCjr)
  7144.         01h increase initial delay (PCjr)
  7145.         02h increase continuing delay (PCjr)
  7146.         03h increase both delays (PCjr)
  7147.         04h turn off typematic (PCjr)
  7148.         05h Set typematic rate (AT or PS/2)
  7149.     BH = 00h - 03h for delays of 250ms, 500ms, 750ms, or 1s
  7150.     BL = 00h - 1Fh for typematic rates of 30cps down to 2cps
  7151. ----------1604-------------------------------
  7152. INT 16 - KEYBOARD - KEYCLICK (Jr,CONV)
  7153.     AH = 04h
  7154.     AL = 00h click off
  7155.          01h click on
  7156. ----------1605-------------------------------
  7157. INT 16 - KEYBOARD - WRITE TO KEYBOARD BUFFER (AT model 339,XT2,XT286,PS)
  7158.     AH = 05h
  7159.     CH = scan code
  7160.     CL = character
  7161. Return: AL = 01h if buffer full
  7162. SeeAlso: AH=71h, INT 15/AX=DE10h
  7163. ----------1610-------------------------------
  7164. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
  7165.     AH = 10h
  7166. Return: AH = scan code
  7167.     AL = character
  7168. Note:    unlike AH=00h, this function does not discard extended keystrokes
  7169. SeeAlso: AH=00h,11h
  7170. ----------1611-------------------------------
  7171. INT 16 - KEYBOARD - CHECK ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
  7172.     AH = 11h
  7173. Return: ZF clear if keystroke available
  7174.         AH = scan code \ meaningless if ZF = 1
  7175.         AL = character /
  7176.     ZF set if kbd buffer empty
  7177. SeeAlso: AH=01h,10h
  7178. ----------1612-------------------------------
  7179. INT 16 - KEYBOARD - GET ENHANCED SHIFT FLAGS (AT model 339,XT2,XT286,PS)
  7180.     AH = 12h
  7181. Return: AL = shift flags (same as for AH=02h)
  7182.        bit 7: Ins ON
  7183.        bit 6: CapsLock ON
  7184.        bit 5: NumLock ON
  7185.        bit 4: ScrollLock ON
  7186.        bit 3: Either ALT key down
  7187.        bit 2: Either CTRL key down
  7188.        bit 1: Left shift key down
  7189.        bit 0: Right shift key down
  7190.     AH
  7191.        bit 7: SysReq key down
  7192.        bit 6: CapsLock key down
  7193.        bit 5: NumLock key down
  7194.        bit 4: ScrollLock key down
  7195.        bit 3: Right Alt key down
  7196.        bit 2: Right Ctrl key down
  7197.        bit 1: Left Alt key down
  7198.        bit 0: Left Ctrl key down
  7199. Notes:    AL bit 3 set only for left Alt key on many machines
  7200.     AH bits 7 through 4 always clear on a Compaq SLT/286
  7201. SeeAlso: AH=02h
  7202. ----------165500-----------------------------
  7203. INT 16 - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  7204.     AX = 5500h
  7205. Return: AX = 4D53h if keyboard TSR present
  7206. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  7207.       that are present through this call.
  7208.     If the return is not 4D53h, Word installs its own INT 9h and INT 16h
  7209.       handlers, otherwise it assumes that the TSR will handle the keyboard.
  7210. ----------166969BX6968-----------------------
  7211. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  7212.     AX = 6969h
  7213.     BX = 6968h
  7214. Return: resident code unhooked, but not removed from memory
  7215. ----------166969BX6969-----------------------
  7216. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  7217.     AX = 6969h
  7218.     BX = 6969h
  7219.     DX = 0000h
  7220. Return: DX nonzero if installed
  7221.         BX = CS of resident code
  7222.         DX = PSP segment of resident code
  7223.         DS:SI -> ASCIZ identification string "CPoint Talk"
  7224. ----------166F-------------------------------
  7225. INT 16 - MS Windows - ???
  7226.     AH = 6Fh
  7227.     ???
  7228. Return: ???
  7229. ----------1670-------------------------------
  7230. INT 16 - FAKEY.COM - INSTALLATION CHECK
  7231.     AH = 70h
  7232. Return: AX = 1954h if installed
  7233. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  7234. ----------1671-------------------------------
  7235. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  7236.     AH = 71h
  7237.     CX = number of keystrokes
  7238.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  7239. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  7240. SeeAlso: AH=05h,72h
  7241. ----------1672-------------------------------
  7242. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  7243.     AH = 72h
  7244. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  7245. SeeAlso: AH=71h
  7246. ----------1673-------------------------------
  7247. INT 16 - FAKEY.COM - PLAY TONES
  7248.     AH = 73h
  7249.     CX = number of tones to play
  7250.     DS:SI -> array of tones (see below)
  7251. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  7252.  
  7253. Format of tone array entries:
  7254. Offset    Size    Description
  7255.  00h    WORD    divisor for timer channel 2
  7256.  02h    WORD    duration in clock ticks
  7257. ----------1675-------------------------------
  7258. INT 16 - pcANYWHERE - SET TICK COUNT FOR SCANNING
  7259.     AH = 75h
  7260.     AL = number of ticks between checks for new screen changes
  7261. ----------1676-------------------------------
  7262. INT 16 - pcANYWHERE - SET ERROR CHECKING TYPE
  7263.     AH = 76h
  7264.     AL = error checking type
  7265.         00h none
  7266.         01h fast
  7267.         02h slow
  7268. ----------1677-------------------------------
  7269. INT 16 - pcANYWHERE - LOG OFF
  7270.     AH = 77h
  7271.     AL = mode
  7272.         00h wait for another call
  7273.         01h leave in Memory Resident Mode
  7274.         02h leave in Automatic Mode
  7275.         FFh leave in current operating mode
  7276. ----------167761-----------------------------
  7277. INT 16 - WATCH.COM - INSTALLATION CHECK
  7278.     AX = 7761h ('wa')
  7279. Return: AX = 5741h ('WA') if installed
  7280. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  7281. ----------167788BX7789-----------------------
  7282. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  7283.     AX = 7788h
  7284.     BX = 7789h
  7285. Return: AX = 7789h
  7286.     BX = 7788h
  7287.     DS:SI -> signature string
  7288. ----------1679-------------------------------
  7289. INT 16 - pcANYWHERE - CHECK STATUS
  7290.     AH = 79h
  7291. Return: AX = status
  7292.         FFFFh if resident and active
  7293.         FFFEh if resident but not active
  7294.         FFFDh if in Memory Resident mode
  7295.         FFFCh if in Automatic mode
  7296.         other value if not resident
  7297. ----------167A-------------------------------
  7298. INT 16 - pcANYWHERE - CANCEL SESSION
  7299.     AH = 7Ah
  7300. ----------167B00-----------------------------
  7301. INT 16 - pcANYWHERE - SUSPEND
  7302.     AX = 7B00h
  7303. SeeAlso: AX=7B01h
  7304. ----------167B01-----------------------------
  7305. INT 16 - pcANYWHERE - RESUME
  7306.     AX = 7B01h
  7307. SeeAlso: AX=7B00h
  7308. ----------167C-------------------------------
  7309. INT 16 - pcANYWHERE - GET PORT CONFIGURATION
  7310.     AH = 7Ch
  7311. Return: AH = port number
  7312.     AL = baud rate
  7313.         00h = 50 baud
  7314.         01h = 75 baud
  7315.         02h = 110 baud
  7316.         03h = 134.5 baud
  7317.         04h = 150 baud
  7318.         05h = 300 baud
  7319.         06h = 600 baud
  7320.         07h = 1200 baud
  7321.         08h = 1800 baud
  7322.         09h = 2000 baud
  7323.         0Ah = 2400 baud
  7324.         0Bh = 4800 baud
  7325.         0Ch = 7200 baud
  7326.         0Dh = 9600 baud
  7327.         0Eh = 19200 baud
  7328. ----------167D-------------------------------
  7329. INT 16 - pcANYWHERE - GET/SET TERMINAL PARAMETERS
  7330.     AH = 7Dh
  7331.     AL = subfunction
  7332.         00h set terminal parameters
  7333.         01h get terminal parameters
  7334.         02h get configuration header and terminal parameters
  7335.     DS:CX -> terminal parameter block
  7336. ----------167E-------------------------------
  7337. INT 16 - pcANYWHERE - COMMUNICATIONS I/O THROUGH PORT
  7338.     AH = 7Eh
  7339.     AL = subfunction
  7340.         01h port input status
  7341.         Return AX = 0 if no characer ready,
  7342.                AX = 1 if character ready
  7343.         02h port input character
  7344.         Return AL = received character
  7345.         03h port output character in CX
  7346.         11h hang up phone
  7347. ----------167F-------------------------------
  7348. INT 16 - pcANYWHERE - SET KEYBOARD/SCREEN MODE
  7349.     AH = 7Fh
  7350.     AL = subfunction
  7351.         00h enable remote keyboard only
  7352.         01h enable host keyboard only
  7353.         02h enable both keyboards
  7354.         08h display top 24 lines
  7355.         09h display bottom 24 lines
  7356.         10h Hayes modem
  7357.         11h other modem
  7358.         12h direct connect
  7359. ----------1680-------------------------------
  7360. INT 16 - MAKEY.COM - INSTALLATION CHECK
  7361.     AH = 80h
  7362. Return: AX = 1954h if installed
  7363. Note:    MAKEY is a utility by System Enhancement Associates
  7364. ----------16AA-------------------------------
  7365. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  7366.     AH = AAh
  7367.     Various registers set up by high level language.
  7368. Return: Graphics performed
  7369. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  7370.       Modula 2 and others from DataBiten in Sweden. The library is
  7371.       installed as a memory resident driver.
  7372. ----------16F0-------------------------------
  7373. INT 16 - Compaq 386 - SET CPU SPEED
  7374.     AH = F0h
  7375.     AL = speed
  7376.         00h equivalent to 6 MHz 80286 (COMMON)
  7377.         01h equivalent to 8 MHz 80286 (FAST)
  7378.         02h full 16 MHz (HIGH)
  7379.         03h toggles between 8 MHz-equivalent and speed set by system board
  7380.         switch (AUTO or HIGH)
  7381.         08h full 16 MHz except 8 MHz-equivalent during floppy disk access
  7382.         09h specify speed directly
  7383.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  7384. SeeAlso: AH=F1h,AH=F3h
  7385. ----------16F0F0-----------------------------
  7386. INT 16 - PE.EXE - INSTALLATION CHECK
  7387.     AX = F0F0h
  7388. Return: AX = 0F0Fh if installed
  7389.         ES:DI -> data block
  7390. Note:    PE is a TSR screen grabber included with ASMED, an integrated
  7391.       environment for TASM and MASM
  7392.  
  7393. Format of data block:
  7394. Offset    Size    Description
  7395.  00h    DWORD    pointer to program tag (counted ASCII string)
  7396.  04h    WORD    ???
  7397.  06h    DWORD    pointer to ???
  7398.  0Ah  4 BYTEs    ???
  7399.  0Eh    DWORD    ???
  7400.     more???
  7401. ----------16F1-------------------------------
  7402. INT 16 - Compaq 386 - READ CURRENT CPU SPEED
  7403.     AH = F1h
  7404. Return:    AL = speed code (see AH=F0h)
  7405.          if AL = 09h, CX = speed code
  7406. SeeAlso: AH=F0h,AH=F3h
  7407. ----------16F2-------------------------------
  7408. INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
  7409.     AH = F2h
  7410. Return: AL = type
  7411.         00h if 11-bit AT keyboard is in use
  7412.         01h if 9-bit PC keyboard is in use 
  7413. ----------16F3-------------------------------
  7414. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  7415.     AH = F3h
  7416.     AL = 00h limit is 6 Mhz
  7417.        = 01h limit is 8 Mhz/6 Mhz
  7418. SeeAlso: AH=F0h,AH=F1h
  7419. ----------16F400-----------------------------
  7420. INT 16 - Compaq Systempro - CACHE CONTROLLER STATUS
  7421.     AX = F400h
  7422. Return: AH = E2h
  7423.     AL = status
  7424.         00h not present
  7425.         01h enabled
  7426.         02h disabled
  7427. SeeAlso: AX=F401h,AX=F402h
  7428. ----------16F401-----------------------------
  7429. INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
  7430.     AX = F401h
  7431. Return: AX = E201h
  7432. SeeAlso: AX=F400h,AX=F402h
  7433. ----------16F402-----------------------------
  7434. INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
  7435.     AX = F402h
  7436. Return: AX = E202h
  7437. SeeAlso: AX=F400h,AX=F401h
  7438. ----------16FFAD-----------------------------
  7439. INT 16 - PC Tools v6.0 DESKTOP API - ???
  7440.     AX = FFADh
  7441.     ???
  7442. Return: ???
  7443. ----------16FFAE-----------------------------
  7444. INT 16 - PC Tools v6.0 DESKTOP API - ???
  7445.     AX = FFAEh
  7446.     ???
  7447. Return: ???
  7448. ----------16FFAF-----------------------------
  7449. INT 16 - PC Tools v6.0 DESKTOP API - ???
  7450.     AX = FFAFh
  7451.     ???
  7452. Return: ???
  7453. ----------16FFB0-----------------------------
  7454. INT 16 - PC Tools v6.0 DESKTOP API - ???
  7455.     AX = FFB0h
  7456.     ???
  7457. Return: ???
  7458. ----------16FFB1-----------------------------
  7459. INT 16 - PC Tools v6.0 DESKTOP API - ???
  7460.     AX = FFB1h
  7461.     ???
  7462. Return: ???
  7463. ----------16FFB2-----------------------------
  7464. INT 16 - PC Tools v5.5+ DESKTOP API - ???
  7465.     AX = FFB2h
  7466. Return: DS:SI -> ???
  7467. ----------16FFB3-----------------------------
  7468. INT 16 - PC Tools v5.5+ DESKTOP API - ???
  7469.     AX = FFB3h
  7470.     ???
  7471. Return: ???
  7472. Note:    available only when popped up
  7473. ----------16FFB4-----------------------------
  7474. INT 16 - PC Tools v5.5+ DESKTOP API - ???
  7475.     AX = FFB4h
  7476.     ???
  7477. Return: ???
  7478. Note:    available only when popped up
  7479. ----------16FFB5-----------------------------
  7480. INT 16 - PC Tools v5.5+ DESKTOP API - GET/SET ???
  7481.     AX = FFB5h
  7482.     BX = ??? (000Fh to 0019h)
  7483.     DX = 0000h get, nonzero = set
  7484.     ES:DI -> 16-byte buffer with new values or to receive old values
  7485. ----------16FFB6-----------------------------
  7486. INT 16 - PC Tools v5.5+ DESKTOP API - ???
  7487.     AX = FFB6h
  7488.     ???
  7489. Return: AH = ???
  7490.     AL = ???
  7491. ----------16FFB7-----------------------------
  7492. INT 16 - PC Tools v5.5+ DESKTOP API - SET ???
  7493.     AX = FFB7h
  7494.     DS:SI -> 10-byte buffer with ???
  7495.     ???
  7496. Return: ???
  7497. ----------16FFB8-----------------------------
  7498. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7499.     AX = FFB8h
  7500.     BH = subfunction
  7501.         00h get
  7502.         Return: BL = old value of ???
  7503.         nonzero set
  7504.         BL = new value for ???
  7505. ----------16FFB9-----------------------------
  7506. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7507.     AX = FFB9h
  7508.     ???
  7509. Return: AX = ???
  7510.     CX = ???
  7511.     DS:SI -> ???
  7512.     ES:DI -> ???
  7513. ----------16FFBA-----------------------------
  7514. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7515.     AX = FFBAh
  7516.     ???
  7517. Return: ???
  7518. Note:    available only when popped up
  7519. ----------16FFBB-----------------------------
  7520. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7521.     AX = FFBBh
  7522.     ???
  7523. Return: ???
  7524. Note:    available only when popped up
  7525. ----------16FFBC-----------------------------
  7526. INT 16 - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
  7527.     AX = FFBCh
  7528. ----------16FFBD-----------------------------
  7529. INT 16 - PC Tools v5.1+ DESKTOP API - POP DOWN???
  7530.     AX = FFBDh
  7531.     ???
  7532. Return: ???
  7533. ----------16FFBE-----------------------------
  7534. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7535.     AX = FFBEh
  7536.     ???
  7537. Return: ???
  7538. Note:    available only when popped up
  7539. ----------16FFBF-----------------------------
  7540. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7541.     AX = FFBFh
  7542.     ???
  7543. Return: ???
  7544. Note:    available only when popped up
  7545. ----------16FFC0-----------------------------
  7546. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7547.     AX = FFC0h
  7548.     ???
  7549. Return: ???
  7550. Note:    available only when popped up
  7551. ----------16FFC1-----------------------------
  7552. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7553.     AX = FFC1h
  7554.     ???
  7555. Return: ???
  7556. Note:    available only when popped up
  7557. ----------16FFC2-----------------------------
  7558. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7559.     AX = FFC2h
  7560.     ???
  7561. Return: ???
  7562. Note:    available only when popped up
  7563. ----------16FFC3-----------------------------
  7564. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7565.     AX = FFC3h
  7566.     ???
  7567. Return: ???
  7568. Note:    available only when popped up
  7569. ----------16FFC4-----------------------------
  7570. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7571.     AX = FFC4h
  7572.     ???
  7573. Return: ???
  7574. Note:    available only when popped up
  7575. ----------16FFC5-----------------------------
  7576. INT 16 - PC Tools v5.1+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
  7577.     AX = FFC5h
  7578. Return: BL = nonzero if loaded resident
  7579.        = 00h if nonresident
  7580. Note:    available only when popped up
  7581. ----------16FFC6-----------------------------
  7582. INT 16 - PC Tools v5.1+ DESKTOP API - SET ???
  7583.     AX = FFC6h
  7584.     BL = new value for ???
  7585. ----------16FFC7-----------------------------
  7586. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7587.     AX = FFC7h
  7588.     ???
  7589. Return: ???
  7590. Note:    screen swapping???
  7591. ----------16FFC8-----------------------------
  7592. INT 16 - PC Tools v5.1+ DESKTOP API - GET ???
  7593.     AX = FFC8h
  7594. Return: DS:SI -> ???
  7595. ----------16FFC9-----------------------------
  7596. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7597.     AX = FFC9h
  7598.     SI = ???
  7599.     CX = ???
  7600. Return: ???
  7601. Note:    available only when popped up
  7602. ----------16FFCA-----------------------------
  7603. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7604.     AX = FFCAh
  7605.     DX = ???
  7606. Return: ???
  7607. Note:    available only when popped up
  7608. ----------16FFCB-----------------------------
  7609. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7610.     AX = FFCBh
  7611.     DX = ???
  7612. Return: ???
  7613. Note:    available only when popped up
  7614. ----------16FFCC-----------------------------
  7615. INT 16 - PC Tools v5.1+ DESKTOP API - DISPLAY ASCIZ STRING
  7616.     AX = FFCCh
  7617.     DS:SI -> ASCIZ string
  7618. Return: AX = ???
  7619.     CX = ???
  7620.     ES:DI -> address past last character displayed
  7621. ----------16FFCD-----------------------------
  7622. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7623.     AX = FFCDh
  7624.     DS:DX -> ???
  7625. Return: ???
  7626. Note:    available only when popped up
  7627. ----------16FFCE-----------------------------
  7628. INT 16 - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
  7629.     AX = FFCEh
  7630.     CX = ???
  7631. Return: nothing???
  7632. ----------16FFCF-----------------------------
  7633. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7634.     AX = FFCFh
  7635.     ???
  7636. Return: ???
  7637. Note:    available only when popped up
  7638. ----------16FFD0-----------------------------
  7639. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7640.     AX = FFD0h
  7641.     ???
  7642. Return: ???
  7643. Note:    available only when popped up
  7644. ----------16FFD1-----------------------------
  7645. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7646.     AX = FFD1h
  7647.     ???
  7648. Return: ???
  7649. Note:    available only when popped up
  7650. ----------16FFD2-----------------------------
  7651. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7652.     AX = FFD2h
  7653.     BX = ???
  7654. Return: ???
  7655. Note:    available only when popped up
  7656. ----------16FFD3-----------------------------
  7657. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7658.     AX = FFD3h
  7659.     ???
  7660. Return: ???
  7661. ----------16FFD4-----------------------------
  7662. INT 16 - PC Tools v5.1+ DESKTOP API - CREATE/OPEN/DELETE FILE
  7663.     AX = FFD4h
  7664.     BH = 3Ch create file
  7665.         CX = file attributes
  7666.          3Dh open file
  7667.          41h delete file
  7668.     BL = access mode
  7669.          00h read only
  7670.          01h write only
  7671.          02h read/write
  7672.     DS:SI -> ASCIZ filename
  7673. Return: BX = file handle
  7674.         0000h on error
  7675. ----------16FFD5-----------------------------
  7676. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7677.     AX = FFD5h
  7678.     ???
  7679. Return: ???
  7680. Note:    available only when popped up
  7681. ----------16FFD6-----------------------------
  7682. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7683.     AX = FFD6h
  7684.     ???
  7685. Return: ???
  7686. Note:    available only when popped up
  7687. ----------16FFD7-----------------------------
  7688. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7689.     AX = FFD7h
  7690.     ???
  7691. Return: ???
  7692. Note:    available only when popped up
  7693. ----------16FFD8-----------------------------
  7694. INT 16 - PC Tools v5.1+ DESKTOP API - SAFE CREATE FILE
  7695.     AX = FFD8h
  7696.     DS:BX -> ASCIZ filename
  7697. Return: BX = file handle
  7698.         0000h on error
  7699. Note:    pops up confirmation menu if file already exists
  7700.     only available when popped up???
  7701. ----------16FFD9-----------------------------
  7702. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7703.     AX = FFD9h
  7704.     ???
  7705. Return: ???
  7706. Note:    available only when popped up
  7707. ----------16FFDA-----------------------------
  7708. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7709.     AX = FFDAh
  7710.     DS:SI -> ???
  7711. Return: DS:SI -> ???
  7712. ----------16FFDB-----------------------------
  7713. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7714.     AX = FFDBh
  7715.     ???
  7716. Return: ???
  7717. Note:    available only when popped up
  7718. ----------16FFDC-----------------------------
  7719. INT 16 - PC Tools v5.1+ DESKTOP API - UNHOOK
  7720.     AX = FFDCh
  7721. Return: interrupt vectors 09h, 16h, 1Ch, and 21h restored to original values
  7722. ----------16FFDDBX0000-----------------------
  7723. INT 16 - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  7724.     AX = FFDDh
  7725.     BX = 0000h
  7726. Return: CX = 5555h 
  7727.     DX = 5555h if PCShell installed in resident mode
  7728. ----------16FFDDBX0001-----------------------
  7729. INT 16 - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7730.     AX = FFDDh
  7731.     BX = 0001h
  7732. SeeAlso: AX=FFDDh/BX=0003h
  7733. ----------16FFDDBX0002-----------------------
  7734. INT 16 - PC Tools v5.1+ PCShell API - GET ???
  7735.     AX = FFDDh
  7736.     BX = 0002h
  7737. Return: AL = 
  7738.         00h ???
  7739.         01h ???
  7740. ----------16FFDDBX0003-----------------------
  7741. INT 16 - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7742.     AX = FFDDh
  7743.     BX = 0003h
  7744. SeeAlso: AX=FFDDh/BX=0001h
  7745. ----------16FFDDBX0004-----------------------
  7746. INT 16 - PC Tools v5.1+ PCShell API - ???
  7747.     AX = FFDDh
  7748.     BX = 0004h
  7749.     ???
  7750. Return: DS:SI -> ???
  7751. ----------16FFDDBX0005-----------------------
  7752. INT 16 - PC Tools v5.1+ PCShell API - ???
  7753.     AX = FFDDh
  7754.     BX = 0005h
  7755.     ???
  7756. Return: ???
  7757. ----------16FFDDBX0006-----------------------
  7758. INT 16 - PC Tools v5.1+ PCShell API - ???
  7759.     AX = FFDDh
  7760.     BX = 0006h
  7761.     ???
  7762. Return: ???
  7763. ----------16FFDDBX0007-----------------------
  7764. INT 16 - PC Tools v5.1+ PCShell API - ???
  7765.     AX = FFDDh
  7766.     BX = 0007h
  7767.     ???
  7768. Return: ???
  7769. ----------16FFDDBX0008-----------------------
  7770. INT 16 - PC Tools v5.1+ PCShell API - ???
  7771.     AX = FFDDh
  7772.     BX = 0008h
  7773.     ???
  7774. Return: ???
  7775. ----------16FFDDBX0009-----------------------
  7776. INT 16 - PC Tools v6.0 PCShell API - GET ???
  7777.     AX = FFDDh
  7778.     BX = 0009h
  7779. Return: DS:SI -> ???
  7780. ----------16FFDE-----------------------------
  7781. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7782.     AX = FFDEh
  7783.     DS:DX -> ???
  7784. Return: ???
  7785. Note:    available only when popped up
  7786. ----------16FFDF-----------------------------
  7787. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7788.     AX = FFDFh
  7789.     ???
  7790. Return: ???
  7791. ----------16FFE0-----------------------------
  7792. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7793.     AX = FFE0h
  7794.     CX = ???
  7795.     DX = ???
  7796. Return: ???
  7797. ----------16FFE1-----------------------------
  7798. INT 16 - PC Tools v5.1+ DESKTOP API - BEEP
  7799.     AX = FFE1h
  7800. ----------16FFE2-----------------------------
  7801. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7802.     AX = FFE2h
  7803.     DX = ???
  7804. Return: ???
  7805. Note:    available only when popped up
  7806. ----------16FFE3-----------------------------
  7807. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7808.     AX = FFE3h
  7809.     BL = ???
  7810. Return: ???
  7811. ----------16FFE4-----------------------------
  7812. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7813.     AX = FFE4h
  7814.     DX = segment of ???
  7815. Return: ???
  7816. Note:    available only when popped up
  7817. ----------16FFE5-----------------------------
  7818. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7819.     AX = FFE5h
  7820.     DS:SI -> wildcard filename???
  7821.     DX = ???
  7822. Return: AX = ???
  7823. Note:    available only when popped up
  7824. ----------16FFE6-----------------------------
  7825. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7826.     AX = FFE6h
  7827.     DS:SI -> ???
  7828. Return: AX = ???
  7829. ----------16FFE7-----------------------------
  7830. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7831.     AX = FFE7h
  7832.     BX = segment of ???
  7833. Return: ???
  7834. Note:    available only when popped up
  7835. ----------16FFE8-----------------------------
  7836. INT 16 - PC Tools v5.1+ DESKTOP API - DISPLAY NUMBER
  7837.     AX = FFE8h
  7838.     CX = number
  7839.     DH = attribute
  7840.     DS:SI -> destination for ASCII number
  7841. Return: DS:SI buffer filled in with alternating characters and attributes
  7842. ----------16FFE9-----------------------------
  7843. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7844.     AX = FFE9h
  7845.     ???
  7846. Return: ???
  7847. Note:    available only when popped up
  7848. ----------16FFEA-----------------------------
  7849. INT 16 - PC Tools v5.1+ DESKTOP API - DISPLAY COUNTED STRING
  7850.     AX = FFEAh
  7851.     DS:SI -> counted string (count byte followed by string)
  7852. Return: ???
  7853. Note:    available only when popped up
  7854. ----------16FFEB-----------------------------
  7855. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7856.     AX = FFEBh
  7857.     ???
  7858. Return: ???
  7859. ----------16FFEC-----------------------------
  7860. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7861.     AX = FFECh
  7862.     DS:SI -> FAR routine to ???
  7863.     BX = ???
  7864. Return: AX = ???
  7865. ----------16FFED-----------------------------
  7866. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7867.     AX = FFEDh
  7868. Return: AX = ???
  7869. ----------16FFEE-----------------------------
  7870. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7871.     AX = FFEEh
  7872.     SI = ???
  7873. Return: ???
  7874. Note:    available only when popped up
  7875. ----------16FFEFCX0000-----------------------
  7876. INT 16 - PC Tools v5.1+ DESKTOP API - INSTALLATION CHECK
  7877.     AX = FFEFh
  7878.     CX = 0000h
  7879. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  7880.         BX = segment of resident portion
  7881.         AX = ???
  7882. ----------16FFF0-----------------------------
  7883. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7884.     AX = FFF0h
  7885.     DX = ???
  7886. Return: ???
  7887. Note:    available only when popped up
  7888. ----------16FFF1-----------------------------
  7889. INT 16 - PC Tools v5.1+ DESKTOP API - ALTERNATE INSTALLATION CHECK
  7890.     AX = FFF1h
  7891.     BX = 0000h  leave ??? flag as is
  7892.         nonzero set ??? flag
  7893. Return: CX = 5555h if installed
  7894.     DX = 5555h
  7895. ----------16FFF2-----------------------------
  7896. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7897.     AX = FFF2h
  7898.     ???
  7899. Return: ???
  7900. Note:    available only when popped up
  7901. ----------16FFF3-----------------------------
  7902. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7903.     AX = FFF3h
  7904.     ???
  7905. Return: ???
  7906. ----------16FFF4-----------------------------
  7907. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7908.     AX = FFF4h
  7909.     ???
  7910. Return: ???
  7911. Note:    available only when popped up
  7912. ----------16FFF5-----------------------------
  7913. INT 16 - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
  7914.     AX = FFF5h
  7915. Return: ES:BX -> array of screen attributes 
  7916.         00h    BYTE  normal characters on desktop menu
  7917.         01h    BYTE  highlighted characters on desktop menu
  7918.         02h    BYTE 
  7919.         03h    BYTE
  7920.         etc.
  7921. ----------16FFF6-----------------------------
  7922. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7923.     AX = FFF6h
  7924.     DS = ???
  7925.     BX = ???
  7926.     DX = ???
  7927. Return: ???
  7928. Note:    available only when popped up
  7929. ----------16FFF7-----------------------------
  7930. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7931.     AX = FFF7h
  7932.     SI = ???
  7933. Return: ???
  7934. ----------16FFF8-----------------------------
  7935. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7936.     AX = FFF8h
  7937.     DS:SI -> ???
  7938.     BX = ???
  7939. Return: ???
  7940. ----------16FFF9-----------------------------
  7941. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7942.     AX = FFF9h
  7943.     ES:BX -> FAR routine to ???
  7944. Return: ???
  7945. Note:    available only when popped up
  7946. ----------16FFFA-----------------------------
  7947. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7948.     AX = FFFAh
  7949. Return: ???
  7950. ----------16FFFB-----------------------------
  7951. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7952.     AX = FFFBh
  7953. Return: ???
  7954. ----------16FFFC-----------------------------
  7955. INT 16 - PC Tools v5.1+ DESKTOP API - GET ???
  7956.     AX = FFFCh
  7957. Return: ES:BX = ???
  7958.     DS:DX = original INT 9 vector
  7959. ----------16FFFD-----------------------------
  7960. INT 16 - PC Tools v5.1+ DESKTOP API - ???
  7961.     AX = FFFDh
  7962.     ???
  7963. Return: ???
  7964. ----------16FFFE-----------------------------
  7965. INT 16 - PC Tools v5.1+ DESKTOP API - SHOW MOUSE CURSOR
  7966.     AX = FFFEh
  7967. SeeAlso: AX=FFFFh, INT 33/AX=0001h
  7968. ----------16FFFF-----------------------------
  7969. INT 16 - PC Tools v5.1+ DESKTOP API - HIDE MOUSE CURSOR
  7970.     AX = FFFFh
  7971. SeeAlso: AX=FFFEh, INT 33/AX=0002h
  7972. ----------17----DX0ABC-----------------------
  7973. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  7974.     DX = 0ABCh
  7975. Return: AX = AAAAh
  7976.     DX = BAAAh
  7977.     ES = code segment of resident portion
  7978. ----------17----DX0B90-----------------------
  7979. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  7980.     DX = 0B90h
  7981. Return: DX = ABBBh
  7982.     ES = code segment of resident portion
  7983. ----------17----DX0B91-----------------------
  7984. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  7985.     DX = 0B91h
  7986. Return: DX = ABCBh
  7987.     ES = code segment of resident portion
  7988. ----------17----DX0F5F-----------------------
  7989. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  7990.     DX = 0F5Fh
  7991. Return: AX = AAAAh
  7992.     DX = F555h
  7993.     ES = code segment of resident portion
  7994. ----------1700-------------------------------
  7995. INT 17 - PRINTER - OUTPUT CHARACTER
  7996.     AH = 00h
  7997.     AL = character
  7998.     DX = printer port (0-3)
  7999. Return: AH = status bits
  8000.         bit 0 time out
  8001.         1 unused
  8002.         2 unused
  8003.         3 I/O error
  8004.         4 selected
  8005.         5 out of paper
  8006.         6 acknowledge
  8007.         7 not busy
  8008. ----------1701-------------------------------
  8009. INT 17 - PRINTER - INITIALIZE
  8010.     AH = 01h
  8011.     DX = printer port (0-3)
  8012. Return: AH = status (see AH=00h)
  8013. ----------1702-------------------------------
  8014. INT 17 - PRINTER - GET STATUS
  8015.     AH = 02h
  8016.     DX = printer port (0-3)
  8017. Return: AH = status (see AH=00h)
  8018. ----------1702--CX07C3-----------------------
  8019. INT 17 - INSET - INSTALLATION CHECK
  8020.     AH = 02h
  8021.     DX = 0000h
  8022.     CX = 07C3h (1987d)
  8023. Return: CX = 07C2h (1986d) if installed
  8024. Note:    INSET is a text/graphics integration program
  8025. ----------1760-------------------------------
  8026. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  8027.     AH = 60h
  8028. Return: AL = 60h
  8029.     DX = CS of resident code
  8030. Note:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  8031.     FLASHUP also hooks INT 10 and received commands via INT 10/AH=09h,0Ah
  8032.       consisting of an 80h followed by the actual command
  8033. ----------1761-------------------------------
  8034. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  8035.     AH = 61h
  8036. Return: AL = 61h
  8037.     DX = CS of resident code
  8038. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  8039. ----------17C0-------------------------------
  8040. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  8041.     AH = C0h
  8042.     DX = printer port (0-3)
  8043. Return: ES:BX -> control block
  8044. SeeAlso: AH=C1h
  8045. ----------17C1--------------------------------
  8046. INT 17 - PC Magazine PCSpool - BUILD CONTROL RECORD
  8047.     AH = C1h
  8048.     DX = printer port (0-3)
  8049.     DS:SI -> ASCIIZ string to save for display
  8050. Note:    flushes pending writes
  8051. SeeAlso: AH=C0h,AH=C2h
  8052. ----------17C2-------------------------------
  8053. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  8054.     AH = C2h
  8055.     DX = printer port (0-3)
  8056. SeeAlso: AH=C3h
  8057. ----------17C3-------------------------------
  8058. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  8059.     AH = C3h
  8060.     DX = printer port (0-3)
  8061. SeeAlso: AH=C2h,AH=C7h
  8062. ----------17C4-------------------------------
  8063. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  8064.     AH = C4h
  8065. Return: DI = B0BFh
  8066.     SI = segment
  8067. ----------17C5-------------------------------
  8068. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  8069.     AH = C5h
  8070.     DX = printer port (0-3)
  8071. Note:     cancels up to the pause record 
  8072. ----------17C6-------------------------------
  8073. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  8074.     AH = C6h
  8075.     DX = printer port (0-3)
  8076. Return: AX = 0 printer not active or at pause
  8077.        = 1 printer busy
  8078. ----------17C7-------------------------------
  8079. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  8080.     AH = C7h
  8081.     DX = printer port (0-3)
  8082. SeeAlso: AH=C3h
  8083. ----------17CD00-----------------------------
  8084. INT 17 - INSET - EXECUTE COMMAND STRING
  8085.     AX = CD00h
  8086.     DS:DX -> ASCIZ command string (max 80 bytes)
  8087. Return: CX = 07C2h (1986d)
  8088. Note:    user interface menus pop up after last command, unless that command
  8089.     exits INSET
  8090. ----------17CD01-----------------------------
  8091. INT 17 - INSET - GET IMAGE SIZE
  8092.     AX = CD01h
  8093.     DS:DX -> ASCIZ name of image file
  8094. Return: AX = height in 1/720th inch
  8095.     BX = width in 1/720th inch
  8096.     CX = 07C2h (1986d)
  8097. ----------17CD02-----------------------------
  8098. INT 17 - INSET - INITIALIZE
  8099.     AX = CD02h
  8100. Return: CX = 07C2h (1986d)
  8101. Note:    all open files are closed and the printer is reset
  8102. SeeAlso: AX=CD04h
  8103. ----------17CD03-----------------------------
  8104. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  8105.     AX = CD03h
  8106. Return: CX = 07C2h (1986d)
  8107. ----------17CD04-----------------------------
  8108. INT 17 - INSET - INITIALIZE LINKED MODE
  8109.     AX = CD04h
  8110.     ES:DI -> FAR routine for linked mode
  8111. Return: CX = 07C2h
  8112. Note:    calling sequence for linked-mode routine
  8113.     AL = 00h send character in BL to printer
  8114.        = 01h send CX bytes from DS:DX to printer
  8115.        = 02h move print head to horizontal starting position of image
  8116.     return code for linked-mode routine:
  8117.     AX = 0000h success
  8118.        = 0001h failure
  8119. SeeAlso: AX=CD02h,AX=CD08h
  8120. ----------17CD05-----------------------------
  8121. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  8122.     AX = CD05h
  8123.     DS:DX -> ASCIZ name of PIX file
  8124.     CX = left margin of text in 1/720th inch
  8125. Return: AH = printer type
  8126.         00h page-oriented (multiple images may be placed side-by-side)
  8127.         01h line-oriented (use AX=CD06h for vertical paper movement)
  8128.     CX = 07C2h (1986d)
  8129. SeeAlso: AX=CD07h
  8130. ----------17CD06-----------------------------
  8131. INT 17 - INSET - GRAPHICS LINE FEED
  8132.     AX = CD06h
  8133. Return: AH = completion status
  8134.         00h image complete
  8135.         01h image incomplete
  8136.     CX = 07C2h (1986d)
  8137. SeeAlso: AX=CD09h
  8138. ----------17CD07-----------------------------
  8139. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  8140.     AX = CD07h
  8141. Return: CX = 07C2h
  8142. SeeAlso: AX=CD05h
  8143. ----------17CD08-----------------------------
  8144. INT 17 - INSET - CANCEL LINK MODE
  8145.     AX = CD08h
  8146. Return: CX = 07C2h
  8147. SeeAlso: AX=CD04h
  8148. ----------17CD09-----------------------------
  8149. INT 17 - INSET - ALTER GRAPHICS LINE SPACING
  8150.     AX = CD09h
  8151.     CX = line spacing in 1/720th inch
  8152. Return: CX = 07C2h
  8153. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  8154. SeeAlso: AX=CD06h
  8155. ----------17CD0A-----------------------------
  8156. INT 17 - INSET - GET SETUP
  8157.     AX = CD0Ah
  8158.     DS:DX -> buffer for IN.SET data
  8159. Return: CX = 07C2h
  8160. ----------17CD0B-----------------------------
  8161. INT 17 - INSET - START GETTING SCALED IMAGE
  8162.     AX = CD0Bh
  8163.     DS:SI -> ASCIZ pathname of .PIX file
  8164.     BX = number of bitplanes
  8165.     CX = number of rows in output bitmap
  8166.     DX = number of columns in output bitmap
  8167. Return: AX = status
  8168.         0000h OK
  8169.         FFFFh error    
  8170. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  8171. ----------17CD0C-----------------------------
  8172. INT 17 - INSET - GET NEXT IMAGE STRIP
  8173.     AX = CD0Ch
  8174. Return:    AX = status
  8175.         0000h OK but not complete
  8176.         0001h OK and image complete
  8177.         FFFFh error
  8178.     DS:SI -> buffer (max 4K) for bit map strip 
  8179.     CX = start row
  8180.     DX = number of rows
  8181.     BX = offset in bytes between bit planes
  8182. Note:    buffer may be overwritten by subsequent calls
  8183. SeeAlso: AX=CD0Bh
  8184. ----------18---------------------------------
  8185. INT 18 - TRANSFER TO ROM BASIC
  8186.    causes transfer to ROM-based BASIC (IBM-PC)
  8187.    often reboots a compatible; often has no effect at all
  8188. ----------19---------------------------------
  8189. INT 19 - DISK BOOT
  8190.    causes reboot of disk system (no memory test performed, interrupt vectors
  8191.    preserved).    Because interrupt vectors are preserved, this interrupt usually
  8192.    causes a system hang if any TSRs have hooked vectors from 00h through 1Ch,
  8193.    particularly INT 08.
  8194.  
  8195.    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A:
  8196.    to 0000h:7C00h.  If this fails, and a hard disk is installed, the BIOS will
  8197.    read sector 1, head 0, track 0 of the first hard disk.  This sector should
  8198.    contain a master bootstrap loader and a partition table.  After loading the
  8199.    master boot sector at 0000h:7C00h, the master bootstrap loader is given
  8200.    control.  It will scan the partition table for an active partition, and will
  8201.    then load the operating system's bootstrap loader (contained in the first
  8202.    sector of the active partition) and give it control.
  8203.  
  8204. Notes:    to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  8205.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  8206.       a reset, store 0000h at 0040h:0072h before jumping.
  8207.     VDISK.SYS hooks this interrupt to allow applications to find out how
  8208.       much extended memory has been used by VDISKs (the three bytes at
  8209.       offset 2Ch in the INT 19 handler's segment contain the linear address
  8210.       of the first free extended memory).
  8211.  
  8212. Format of hard disk master boot sector:
  8213. Offset    Size    Description
  8214.  00h 446 BYTEs    Master bootstrap loader code
  8215. 1BEh 16 BYTEs    partition record for partition 1 (see below)
  8216. 1CEh 16 BYTEs    partition record for partition 2
  8217. 1DEh 16 BYTEs    partition record for partition 3
  8218. 1EEh 16 BYTEs    partition record for partition 4
  8219. 1FEh    WORD    signature, AA55h indicates valid boot block
  8220.  
  8221. Format of partition record:
  8222. Offset    Size    Description
  8223.  00h    BYTE    boot indicator (80h = active partition)
  8224.  01h    BYTE    partition start head
  8225.  02h    BYTE    partition start sector (bits 0-5)
  8226.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  8227.  04h    BYTE    operating system indicator (see below)
  8228.  05h    BYTE    partition end head
  8229.  06h    BYTE    partition end sector (bits 0-5)
  8230.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  8231.  08h    DWORD    sectors preceding partition
  8232.  0Ch    DWORD    length of partition in sectors
  8233.  
  8234. Values for operating system indicator:
  8235.  00h empty
  8236.  01h DOS 12-bit FAT
  8237.  02h XENIX file system
  8238.  03h XENIX /usr file system (obsolete???)
  8239.  04h DOS 16-bit FAT
  8240.  05h DOS 3.3+ extended partition
  8241.  06h DOS Large File System
  8242.  07h QNX
  8243.  08h AIX bootable partition
  8244.  09h AIX data partition
  8245.  51h Disk Manager
  8246.  52h CP/M ???
  8247.  56h GB ???
  8248.  61h SpeedStor
  8249.  63h SysV/386
  8250.  64h Novell NetWare
  8251.  75h PC/IX
  8252.  80h Minix v1.3 and below
  8253.  81h Minix v1.5+
  8254.  DBh CP/M
  8255.  E1h SpeedStor 12-bit FAT extended partition
  8256.  E4h SpeedStor 16-bit FAT extended partition
  8257.  FFh BBT ???
  8258. ----------1A00-------------------------------
  8259. INT 1A - CLOCK - GET TIME OF DAY
  8260.     AH = 00h
  8261. Return: CX:DX = clock count
  8262.     AL = 00h if clock was read or written (via AH=0,1) since the previous
  8263.          midnight
  8264.          Otherwise, AL > 0
  8265. Note:    IBM and many clone BIOSes set the flag for AL rather than incrementing
  8266.       it, leading to loss of a day if two consecutive midnights pass
  8267.       without a request for the time (e.g. if the system is on but idle)
  8268. SeeAlso: AH=02h,INT 21/AH=2Ch
  8269. ----------1A01-------------------------------
  8270. INT 1A - CLOCK - SET TIME OF DAY
  8271.     AH = 01h
  8272.     CX:DX = clock count
  8273. Return: time of day set
  8274. SeeAlso: AH=03h,INT 21/AH=2Dh
  8275. ----------1A02-------------------------------
  8276. INT 1A - CLOCK - READ REAL TIME CLOCK (AT,XT286,CONV,PS)
  8277.     AH = 02h
  8278. Return: CH = hours in BCD
  8279.     CL = minutes in BCD
  8280.     DH = seconds in BCD
  8281. SeeAlso: AH=00h
  8282. ----------1A03-------------------------------
  8283. INT 1A - CLOCK - SET REAL TIME CLOCK (AT,XT286,CONV,PS)
  8284.     AH = 03h
  8285.     CH = hours in BCD
  8286.     CL = minutes in BCD
  8287.     DH = seconds in BCD
  8288.     DL = 01h if daylight savings, 00h if standard time
  8289. Return: CMOS clock set
  8290. SeeAlso: AH=01h
  8291. ----------1A04-------------------------------
  8292. INT 1A - CLOCK - READ DATE FROM REAL TIME CLOCK (AT,XT286,CONV,PS)
  8293.     AH = 04h
  8294. Return: DL = day in BCD
  8295.     DH = month in BCD
  8296.     CL = year in BCD
  8297.     CH = century (19h or 20h)
  8298. SeeAlso: AH=05h,INT 21/AH=2Ah
  8299. ----------1A05-------------------------------
  8300. INT 1A - CLOCK - SET DATE IN REAL TIME CLOCK (AT,XT286,CONV,PS)
  8301.     AH = 05h
  8302.     DL = day in BCD
  8303.     DH = month in BCD
  8304.     CL = year in BCD
  8305.     CH = century (19h or 20h)
  8306. Return: CMOS clock set
  8307. SeeAlso: AH=04h,INT 21/AH=2Bh
  8308. ----------1A06-------------------------------
  8309. INT 1A - CLOCK - SET ALARM (AT,XT286,CONV,PS)
  8310.     AH = 06h
  8311.     CH = hours in BCD
  8312.     CL = minutes in BCD
  8313.     DH = seconds in BCD
  8314. Return: CF set if alarm already set or clock inoperable
  8315.     INT 4Ah will be called when alarm goes off, every 24 hours until reset
  8316. SeeAlso: AH=07h,INT 4A
  8317. ----------1A07-------------------------------
  8318. INT 1A - CLOCK - RESET ALARM (AT,XT286,CONV,PS)
  8319.     AH = 07h
  8320. Return: alarm disabled
  8321. SeeAlso: AH=06h
  8322. ----------1A08-------------------------------
  8323. INT 1A - CLOCK - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  8324.     AH = 08h
  8325.     CH = hours in BCD
  8326.     CL = minutes in BCD
  8327.     DH = seconds in BCD
  8328. ----------1A09-------------------------------
  8329. INT 1A - CLOCK - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  8330.     AH = 09h
  8331. Return: CH = hours in BCD
  8332.     CL = minutes in BCD
  8333.     DH = seconds in BCD
  8334.     DL = alarm status
  8335.         00h alarm not enabled
  8336.         01h alarm enabled but will not power up system
  8337.         02h alarm will power up system
  8338. ----------1A0A-------------------------------
  8339. INT 1A - CLOCK - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  8340.     AH = 0Ah
  8341. Return: CF set on error
  8342.     CX = count of days since Jan 1,1980
  8343. SeeAlso: AH=0Bh
  8344. ----------1A0B-------------------------------
  8345. INT 1A - CLOCK - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  8346.     AH = 0Bh
  8347.     CX = count of days since Jan 1,1980
  8348. Return: CF set on error
  8349.     CF clear if successful
  8350. SeeAlso: AH=0Ah
  8351. ----------1A3601-----------------------------
  8352. INT 1A - WORD PERFECT 5.0 Third Party Interface - INSTALLATION CHECK
  8353.     AX = 3601h
  8354. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  8355.         ASCIZ string "WPCORP\0"
  8356. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  8357.       third party product wants to interface with it.  The third party
  8358.       product must intercept this interrupt and return the address of a
  8359.       keyboard monitor routine.
  8360.     Before checking for keyboard input, and after every key entered by the
  8361.       user, Word Perfect will call the routine whose address was provided
  8362.       in DS:SI with the following parameters:
  8363.         Entry:    AX = key code or 0
  8364.             BX = WordPerfect state flag
  8365.         Exit:    AX = 0 or key code
  8366.             BX = 0 or segment address of buffer with key codes
  8367.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  8368. ----------1A80-------------------------------
  8369. INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
  8370.     AH = 80h
  8371.     AL = 00h source is 8253 channel 2
  8372.          01h source is cassette input
  8373.          02h source is I/O channel "Audio IN"
  8374.          03h source is sound generator chip
  8375. ----------1AA0-------------------------------
  8376. INT 1A - Disk Spool II - INSTALLATION CHECK
  8377.     AH = A0h
  8378. Return: AH = B0h
  8379.     ES = code segment
  8380.     BX -> name of current spool file
  8381.     SI -> current despool file
  8382.     CL = 00h despooler is disabled
  8383.        = 41h despooler is enabled
  8384.     CH = 00h spooler is disabled
  8385.        = 41h spooler is enabled
  8386.     DL = 00h despooler is currently active printing a file
  8387.        = 41h despooler is standing by
  8388. SeeAlso: AH=D0h
  8389. ----------1AD0-------------------------------
  8390. INT 1A - Disk Spool II - FUNCTION CALLS
  8391.     AH = D0h
  8392.     AL = function code
  8393.         01h enable spooler and despooler
  8394.         02h enable spooler only
  8395.         03h enable despooler at beginning of file
  8396.         04h disable the despooler
  8397.         05h disable the despooler and spooler
  8398.         06h clear the spool file
  8399.         08h inhibit the popup menu
  8400.         09h enable the popup menu
  8401.         0Bh disable the spooler
  8402.         0Ch start despooler after last successfully printed document
  8403.         0Dh start despooler at the exact point where it last left off
  8404.         0Eh pop up the menu
  8405.         20h clear file pointed to be the despooler
  8406. SeeAlso: AH=A0h
  8407. ----------1AFE-------------------------------
  8408. INT 1A - AT&T 6300 - READ TIME AND DATE
  8409.     AH = FEh
  8410. Return: BX = day count (0 = Jan 1, 1984)
  8411.     CH = hour
  8412.     CL = minute
  8413.     DH = second
  8414.     DL = hundredths
  8415. SeeAlso: AH=FFh,INT 21/AH=2Ah,2Ch
  8416. ----------1AFF-------------------------------
  8417. INT 1A - AT&T 6300 - SET TIME AND DATE
  8418.     AH = FFh
  8419.     BX = day count (0 = Jan 1, 1984)
  8420.     CH = hour
  8421.     CL = minute
  8422.     DH = second
  8423.     DL = hundredths
  8424. Return: ???
  8425. SeeAlso: AH=FEh,INT 21/AH=2Bh,2Dh
  8426. ----------1B---------------------------------
  8427. INT 1B - CTRL-BREAK KEY
  8428.    This interrupt is called when the keyboard scanner of the IBM
  8429.    machines detects CTRL and BREAK pressed at the same time. It
  8430.    normally points to a short routine in DOS which sets the
  8431.    Ctrl-C flag, thus invoking INT 23h the next time DOS checks
  8432.    for Ctrl-C.
  8433. SeeAlso: INT 23
  8434. ----------1C---------------------------------
  8435. INT 1C - CLOCK TICK
  8436.    This interrupt is called (in the IBM) at the end of each time-update
  8437.    operation by the time-of-day routines.
  8438. Notes:    points to an IRET by default
  8439.     preferred interrupt to chain when a program needs to be invoked
  8440.       regularly
  8441. SeeAlso: INT 08
  8442. ----------1D---------------------------------
  8443. INT 1D - (NOT a vector!) 6845 VIDEO INIT TABLES
  8444.  
  8445. Format of video init tables:
  8446. Offset    Size    Description
  8447.  00h 16 BYTEs    table for modes 0 and 1        \
  8448.  10h 16 BYTEs    table for modes 2 and 3         \  each table contains values
  8449.  20h 16 BYTEs    table for modes 4, 5, and 6     /  for first sixteen 6485 regs
  8450.  30h 16 BYTEs    table for mode 7        /
  8451.  40h    WORD    size of video RAM for modes 0 and 1
  8452.  42h    WORD    size of video RAM for modes 2 and 3
  8453.  44h    WORD    size of video RAM for modes 4 and 5
  8454.  46h    WORD    size of video RAM for modes 6 and 7
  8455.  48h  8 BYTEs    number of colums in each of modes 0 through 7
  8456.  50h  8 BYTEs    video controller mode byte for each mode
  8457. ----------1E---------------------------------
  8458. INT 1E - (NOT a vector!) DISKETTE PARAMS (BASE TABLE)
  8459.     default parameters at F000h:EFC7h in PC and most compatibles
  8460. SeeAlso: INT 41
  8461.  
  8462. Format of diskette parameters:
  8463. Offset    Size    Description
  8464.  00h    BYTE    4-bit step rate & 4-bit head unload times
  8465.  01h    BYTE    7-bit head load time & 1-bit DMA flag
  8466.  02h    BYTE    motor off time in clock ticks (36 to 38 typical)
  8467.  03h    BYTE    sector size in bytes (0->128, 1->256, 2->512, 3->1024)
  8468.  04h    BYTE    last sector number (8 or 9 typical)
  8469.  05h    BYTE    inter-sector gap size on read/write (42 typical)
  8470.  06h    BYTE    data transfer length (255 typical)
  8471.  07h    BYTE    inter-sector gap size on format (80 typical)
  8472.  08h    BYTE    sector fill on format (F6h typical)
  8473.  09h    BYTE    head-settle time ms (typical 25, 1.10->0, 2.10->15, 3.10->1)
  8474.  0Ah    BYTE    motor start-up time (1/8 secs) (typical 4, 2.10->2)
  8475. ----------1F---------------------------------
  8476. INT 1F - (NOT a vector!) GRAPHICS SET 2
  8477.     pointer to bitmaps for high 128 chars (eight bytes per character)
  8478. ---------------------------------------------
  8479.