home *** CD-ROM | disk | FTP | other *** search
/ BBS 1 / BBS#1.iso / document / vgadoc.arj / VGABIOS.DOC < prev    next >
Text File  |  1991-12-05  |  32KB  |  712 lines

  1.  
  2. ----------1000-------------------------------
  3. INT 10 - VIDEO - SET VIDEO MODE
  4.         AH = 00h
  5.         AL = mode (see below)
  6. Return: AL = video mode flag (Phoenix BIOS)
  7.              20h mode > 7
  8.              30h modes <= 7 except mode 6
  9.              3Fh mode 6
  10.         AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  11. Notes:       IBM standard modes do not clear the screen if the high bit of AL is set
  12.       (EGA or higher only)
  13. SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h
  14.  
  15. Values for video mode:
  16.      text/ text   pixel pixel    colors  disply  scrn system
  17.      grph  resol  box   resoltn          pages   addr
  18.  00h = T   40x25  8x14           16gray     8    B800 EGA
  19.      = T   40x25  8x16             16       8    B800 MCGA
  20.      = T   40x25  9x16             16       8    B800 VGA
  21.  01h = T   40x25  8x14             16       8    B800 EGA
  22.      = T   40x25  8x16             16       8    B800 MCGA
  23.      = T   40x25  9x16             16       8    B800 VGA
  24.  02h = T   80x25  8x14           16gray     4    B800 EGA
  25.      = T   80x25  8x16             16       4    B800 MCGA
  26.      = T   80x25  9x16             16       4    B800 VGA
  27.  03h = T   80x25  8x14             16       4    B800 EGA
  28.      = T   80x25  8x16             16       4    B800 MCGA
  29.      = T   80x25  9x16             16       4    B800 VGA
  30.  04h = G   40x25  8x8     320x200           4    B800 CGA,PCjr,EGA,MCGA,VGA
  31.  05h = G   40x25  8x8     320x200 4gray          B800 CGA,PCjr,EGA
  32.      = G   40x25  8x8     320x200   4            B800 MCGA,VGA
  33.  06h = G   80x25  8x8     640x200   2            B800 CGA,PCjr,EGA,MCGA,VGA
  34.  07h = T   80x25  9x14            mono     var   B000 MDA,Hercules,EGA
  35.      = T   80x25  9x16            mono           B000 VGA
  36.  0Bh =                 reserved (used internally by EGA BIOS)
  37.  0Ch =                 reserved (used internally by EGA BIOS)
  38.  0Dh = G   40x25  8x8     320x200  16       8    A000 EGA,VGA
  39.  0Eh = G   80x25  8x8     640x200  16       4    A000 EGA,VGA
  40.  0Fh = G   80x25  8x14    640x350 mono      2    A000 EGA,VGA
  41.  10h = G   80x25  8x14    640x350   4       2    A000 64k EGA
  42.      = G                  640x350  16            A000 256k EGA,VGA
  43.  11h = G   80x30  8x16    640x480 mono           A000 VGA,MCGA,ATI EGA,ATI VIP
  44.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  45.      = G   80x30  8x16    640x480 16/64          A000 ATI EGA Wonder
  46.  13h = G   40x25  8x8     320x200 256/256k       A000 VGA,MCGA,ATI VIP
  47. ----------1001-------------------------------
  48. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  49.         AH = 01h
  50.         CH = bit 7    should be zero
  51.              bits 6,5 cursor blink
  52.                 (00=normal, 01=invisible, 10=erratic, 11=slow)
  53.                 (00=normal, other=invisible on EGA/VGA)
  54.              bits 4-0 top scan line containing cursor
  55.         CL = bottom scan line containing cursor (bits 0-4)
  56. Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  57.        returns unmapped cursor shape
  58.        UltraVision scales size to the current font height by assuming 14-line
  59.        monochrome and 8-line color fonts; this call is not valid if cursor
  60.        emulation has been disabled
  61.        applications which wish to change the cursor by programming the
  62.        hardware directly on EGA or abovve should call INT 10/AX=1130h or
  63.        read 0040h:0085h first to determine the current font height
  64. BUG:   AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  65.        is not equal to the current video mode
  66. SeeAlso: AH=03h,AX=CD05h
  67. ----------1002-------------------------------
  68. INT 10 - VIDEO - SET CURSOR POSITION
  69.         AH = 02h
  70.         BH = page number
  71.               0-3 in modes 2&3
  72.               0-7 in modes 0&1
  73.                 0 in graphics modes
  74.         DH = row (00h is top)
  75.         DL = column (00h is left)
  76. SeeAlso: AH=03h,AH=05h
  77. ----------1003-------------------------------
  78. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  79.         AH = 03h
  80.         BH = page number
  81.               0-3 in modes 2&3
  82.               0-7 in modes 0&1
  83.                 0 in graphics modes
  84. Return: AX = 0000h (Phoenix BIOS)
  85.         CH = start scan line
  86.         CL = end scan line
  87.         DH = row (00h is top)
  88.         DL = column (00h is left)
  89. Notes:     a separate cursor is maintained for each of up to 8 display pages
  90.        many ROM BIOSes incorrectly return the default size for a color display
  91.        (start 06h, end 07h) when a monochrome display is attached
  92. SeeAlso: AH=01h,AH=02h
  93. ----------1004-------------------------------
  94. INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)
  95.         AH = 04h
  96. Return: AH = light pen trigger flag
  97.              00h not down/triggered
  98.              01h down/triggered 
  99.         DH,DL = row,column of character light pen is on 
  100.         CH = pixel row (graphics modes 04h-06h)
  101.         CX = pixel row (graphics modes with >200 rows)
  102.         BX = pixel column
  103. Notes:     on a CGA, returned column numbers are always multiples of 2 (320-
  104.        column modes) or 4 (640-column modes)
  105.        returned row numbers are only accurate to two lines
  106. ----------1005-------------------------------
  107. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  108.         AH = 05h
  109.         AL = new page number (00h to number of pages - 1) (see AH=00h)
  110. SeeAlso: AH=0Fh
  111. ----------1006-------------------------------
  112. INT 10 - VIDEO - SCROLL UP WINDOW
  113.         AH = 06h
  114.         AL = number of lines by which to scroll up (00h = clear entire window)
  115.         BH = attribute used to write blank lines at bottom of window
  116.      CH,CL = row,column of window's upper left corner
  117.      DH,DL = row,column of window's lower right corner
  118. Note:  affects only the currently active page (see AH=05h)
  119. Warning: some implementations have a bug which destroys BP
  120. SeeAlso: AH=07h,AH=72h,AH=73h
  121. ----------1007-------------------------------
  122. INT 10 - VIDEO - SCROLL DOWN WINDOW
  123.         AH = 07h
  124.         AL = number of lines by which to scroll down (00h=clear entire window)
  125.         BH = attribute used to write blank lines at top of window
  126.      CH,CL = row,column of window's upper left corner
  127.      DH,DL = row,column of window's lower right corner
  128. Note:  affects only the currently active page (see AH=05h)
  129. Warning: some implementations have a bug which destroys BP
  130. SeeAlso: AH=06h,AH=72h,AH=73h
  131. ----------1008-------------------------------
  132. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  133.         AH = 08h
  134.         BH = page number (00h to number of pages - 1) (see AH=00h)
  135. Return: AH = attribute
  136.              bit    7: blink
  137.              bits 6-4: background color
  138.                        000 black
  139.                        001 blue
  140.                        010 green
  141.                        011 cyan
  142.                        100 red
  143.                        101 magenta
  144.                        110 brown
  145.                        111 white
  146.              bits 3-0: foreground color
  147.                        0000 black       1000 dark gray
  148.                        0001 blue        1001 light blue
  149.                        0010 green       1010 light green
  150.                        0011 cyan        1011 light cyan
  151.                        0100 red         1100 light red
  152.                        0101 magenta     1101 light magenta
  153.                        0110 brown       1110 yellow
  154.                        0111 light gray  1111 white
  155.         AL = character
  156. Notes:     for monochrome displays, a foreground of 1 with background 0 is underlined
  157.        the blink bit may be reprogrammed to enable intense background colors
  158.        using AX=1003h or by programming the CRT controller
  159. SeeAlso: AH=09h,AX=1003h
  160. ----------1009-------------------------------
  161. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  162.         AH = 09h
  163.         AL = character to display
  164.         BH = page number (00h to number of pages - 1) (see AH=00h)
  165.         BL = attribute (text mode) or color (graphics mode)
  166.              if bit 7 set in graphics mode, character is xor'ed onto screen
  167.         CX = number of times to write character
  168. Notes: all characters are displayed, including CR, LF, and BS
  169.        replication count in CX may produce an unpredictable result in graphics
  170.        modes if it is greater than the number of positions remaining in the
  171.        current row
  172. SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  173. ----------100A-------------------------------
  174. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  175.         AH = 0Ah
  176.         AL = character to display
  177.         BH = page number (00h to number of pages - 1) (see AH=00h)
  178.         BL = attribute (PCjr only) or color (graphics mode)
  179.              if bit 7 set in graphics mode, character is xor'ed onto screen
  180.         CX = number of times to write character
  181. Notes: all characters are displayed, including CR, LF, and BS
  182.        replication count in CX may produce an unpredictable result in graphics
  183.        modes if it is greater than the number of positions remaining in the
  184.        current row
  185. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  186. ----------100B--BH00-------------------------
  187. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  188.         AH = 0Bh
  189.         BH = 00h
  190.         BL = background/border color (border only in text modes)
  191. SeeAlso: AH=0Bh/BH=01h
  192. ----------100B--BH01-------------------------
  193. INT 10 - VIDEO - SET PALETTE
  194.         AH = 0BH
  195.         BH = 01h
  196.         BL = palette ID
  197.              00h background, green, red, and brown/yellow
  198.              01h background, cyan, magenta, and white
  199. SeeAlso: AH=0Bh/BH=00h
  200. ----------100C-------------------------------
  201. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  202.         AH = 0Ch
  203.         BH = page number
  204.         AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  205.         CX = column
  206.         DX = row
  207. Notes: valid only in graphics modes
  208.        BH is ignored if the current video mode supports only one page
  209. SeeAlso: AH=0Dh,AH=46h
  210. ----------100D-------------------------------
  211. INT 10 - VIDEO - READ GRAPHICS PIXEL
  212.         AH = 0Dh
  213.         BH = page number
  214.         CX = column
  215.         DX = row
  216. Return: AL = pixel color
  217. Notes: valid only in graphics modes
  218.        BH is ignored if the current video mode supports only one page
  219. SeeAlso: AH=0Ch,AH=47h
  220. ----------100E-------------------------------
  221. INT 10 - VIDEO - TELETYPE OUTPUT
  222.         AH = 0Eh
  223.         AL = character to write
  224.         BH = page number
  225.         BL = foreground color (graphics modes only)
  226. Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  227.        and do the expected things
  228.        IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  229.        the current active page
  230. SeeAlso: AH=02h,AH=0Ah
  231. ----------100F-------------------------------
  232. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  233.         AH = 0Fh
  234. Return: AH = number of character columns
  235.         AL = display mode (see AH=00h)
  236.         BH = active page (see AH=05h)
  237. Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
  238.        also have bit 7 set
  239.        EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  240.        (monochrome) in all extended-row text modes
  241. SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h
  242. ----------101000----------------------------
  243. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  244.         AX = 1000h
  245.         BL = palette register number (00h-0Fh)
  246.            = attribute register number (undocumented)
  247.              10h attribute mode control register (should let BIOS control this)
  248.              11h overscan color register (see also AX=1001h)
  249.              12h color plane enable register (bits 3-0 enable corresponding
  250.                  text attribute bit)
  251.              13h horizontal PEL panning register
  252.              14h color select register
  253.         BH = color or attribute register value
  254. Notes: on MCGA, only BX = 0712h is supported
  255.        under UltraVision, the palette locking status (see AX=CD01h)
  256.        determines the outcome
  257. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  258. ----------101001-----------------------------
  259. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  260.         AX = 1001h
  261.         BH = border color (00h-3Fh)
  262. BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
  263.      and places the border color at offset 11h of the palette table
  264.      rather than offset 10h
  265. Note: under UltraVision, the palette locking status (see AX=CD01h)
  266.       determines the outcome
  267. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  268. ----------101002-----------------------------
  269. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  270.         AX = 1002h
  271.         ES:DX -> palette register list
  272. Note: under UltraVision, the palette locking status (see AX=CD01h)
  273.       determines the outcome
  274. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  275.  
  276. Format of palette register list:
  277. Offset  Size          Description
  278.  00h   16 BYTEs  colors for palette registers 00h through 0Fh
  279.  10h      BYTE       border color
  280. ----------101003-----------------------------
  281. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  282.         AX = 1003h
  283.         BL = new state
  284.              00h background intensity enabled
  285.              01h blink enabled
  286. Note: although there is no function to get the current status, bit 5 of
  287.       0040h:0065h indicates the state
  288. SeeAlso: AH=08h
  289. ----------101007-----------------------------
  290. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  291.         AX = 1007h
  292.         BL = palette or attribute (undoc) register number (see AX=1000h)
  293. Return: BH = palette or attribute register value
  294. Notes: UltraVision v2+ supports this function even on color EGA systems in
  295.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  296.        registers will cause incorrect results because the EGA registers are
  297.        write-only.  To guard against older versions or unsupported video
  298.        modes, programs which expect to use this function on EGA systems
  299.        should set BH to FFh on entry.
  300. SeeAlso: AX=1000h,AX=1009h
  301. ----------101008-----------------------------
  302. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  303.         AX = 1008h
  304. Return: BH = border color (00h-3Fh)
  305. Notes: UltraVision v2+ supports this function even on color EGA systems in
  306.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  307.        registers will cause incorrect results because the EGA registers are
  308.        write-only.  To guard against older versions or unsupported video
  309.        modes, programs which expect to use this function on EGA systems
  310.        should set BH to FFh on entry.
  311. SeeAlso: AX=1001h
  312. ----------101009-----------------------------
  313. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  314.         AX = 1009h
  315.         ES:DX -> 17-byte buffer (see AX=1002h)
  316. Notes: UltraVision v2+ supports this function even on color EGA systems in
  317.        video modes 00h-03h, 10h, and 12h; direct programming of the palette
  318.        registers will cause incorrect results because the EGA registers are
  319.        write-only.  To guard against older versions or unsupported video
  320.        modes, programs which expect to use this function on EGA systems
  321.        should set the ES:DX buffer to FFh before calling.
  322. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  323. ----------101010-----------------------------
  324. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  325.         AX = 1010h
  326.         BX = register number
  327.         CH = new value for green (0-63)
  328.         CL = new value for blue (0-63)
  329.         DH = new value for red (0-63)
  330. SeeAlso: AX=1012h,AX=1015h
  331. ----------101012-----------------------------
  332. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  333.         AX = 1012h
  334.         BX = starting color register
  335.         CX = number of registers to set
  336.         ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  337.                  byte each of red, green and blue (0-63)
  338. SeeAlso: AX=1010h,AX=1017h
  339. ----------101013-----------------------------
  340. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  341.         AX = 1013h
  342.         BL = subfunction
  343.              00h select paging mode
  344.                  BH = 00h select 4 blocks of 64
  345.                  BH = 01h select 16 blocks of 16
  346.              01h select page
  347.                  BH = page number (00h to 03h) or (00h to 0Fh)
  348. Note: not valid in mode 13h
  349. SeeAlso: AX=101Ah
  350. ----------101015-----------------------------
  351. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  352.         AX = 1015h
  353.         BL = palette register number
  354. Return: DH = red value
  355.         CH = green value
  356.         CL = blue value
  357. SeeAlso: AX=1010h,AX=1017h
  358. ----------101017-----------------------------
  359. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  360.         AX = 1017h
  361.         BX = starting palette register
  362.         CX = number of palette registers to read
  363.         ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  364. Return: buffer filled with CX red, green and blue triples
  365. SeeAlso: AX=1012h,AX=1015h
  366. ----------101018-----------------------------
  367. INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)
  368.         AX = 1018h
  369.         BL = new PEL value
  370. SeeAlso: AX=1019h
  371. ----------101019-----------------------------
  372. INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
  373.         AX = 1019h
  374. Return: BL = value read
  375. SeeAlso: AX=1018h
  376. ----------10101A-----------------------------
  377. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  378.         AX = 101Ah
  379. Return: BL = paging mode
  380.              00h four pages of 64
  381.              01h sixteen pages of 16
  382.         BH = current page
  383. SeeAlso: AX=1013h
  384. ----------10101B-----------------------------
  385. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  386.         AX = 101Bh
  387.         BX = starting palette register
  388.         CX = number of registers to convert
  389. SeeAlso: AH=12h/BL=33h
  390. ----------1011-------------------------------
  391. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  392.         AH = 11h
  393. The following functions will cause a mode set, completely resetting
  394. the video environment, but without clearing the video buffer
  395.         AL = 00h, 10h: load user-specified patterns
  396.              ES:BP -> user table
  397.              CX      = count of patterns to store
  398.              DX      = character offset into map 2 block
  399.              BL      = block to load in map 2
  400.              BH      = number of bytes per character pattern
  401.         AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  402.              BL      = block to load
  403.         AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  404.              BL      = block to load
  405.         AL = 03h: set block specifier
  406.              BL      = block specifier
  407.                (EGA/MCGA) bits 0,1 = block selected by chars with attribute bit 3 = 0
  408.                           bits 2,3 = block selected by chars with attribute bit 3 = 1
  409.                     (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  410.                           bits 2,3,5 = block selected by attribute bit 3 = 1
  411.         AL = 04h, 14h: load ROM 8x16 character set (VGA)
  412.              BL    = block to load
  413. The routines called with AL=1xh are designed to be called only
  414. immediately after a mode set and are similar to the routines called
  415. with AL=0xh, except that:
  416.       Page 0 must be active.
  417.       Bytes/character is recalculated.
  418.       Max character rows is recalculated.
  419.       CRT buffer length is recalculated.
  420.       CRTC registers are reprogrammed as follows:
  421.            R09 = bytes/char-1 ; max scan line (mode 7 only)
  422.            R0A = bytes/char-2 ; cursor start
  423.            R0B = 0        ; cursor end
  424.            R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  425.            R14 = bytes/char    ; underline loc
  426.                   (*** BUG: should be 1 less ***)
  427. SeeAlso: AX=CD10h
  428. ----------1011-------------------------------
  429. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  430.         AH = 11h
  431.         AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  432.                   ES:BP -> user table
  433.         AL = 21h: set user graphics characters
  434.                   ES:BP -> user table
  435.                   CX      = bytes per character
  436.                   BL      = row specifier
  437.                         00h user set
  438.                             DL = number of rows
  439.                         01h 14 rows
  440.                         02h 25 rows
  441.                         03h 43 rows
  442.         AL = 22h: ROM 8 by 14 set
  443.                   BL = row specifier (see above)
  444.         AL = 23h: ROM 8 by 8 double dot
  445.                   BL = row specifier (see above)
  446.         AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  447.                   BL = row specifier (see above)
  448.         AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  449.                   BL = row specifier (see above)
  450. Notes: these functions are meant to be called only after a mode set
  451.        UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
  452.        and 29h
  453. SeeAlso: INT 1F, INT 43
  454. ----------101130-----------------------------
  455. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  456.         AX = 1130h
  457.         BH = pointer specifier
  458.              00h INT 1Fh pointer
  459.              01h INT 43h pointer
  460.              02h ROM 8x14 character font pointer
  461.              03h ROM 8x8 double dot font pointer
  462.              04h ROM 8x8 double dot font (high 128 characters)
  463.              05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  464.              06h ROM 8x16 font (MCGA, VGA)
  465.              07h ROM alternate 9x16 font (VGA only)
  466.              11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  467.              12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  468. Return: ES:BP = specified pointer
  469.         CX    = bytes/character
  470.         DL    = character rows on screen - 1
  471. Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  472.       8xN font at ES:BP+256N
  473. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  474. ----------1012--BL10-------------------------
  475. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  476.         AH = 12h
  477.         BL = 10h
  478. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  479.              01h mono mode in effect (I/O port 3Bxh)
  480.         BL = 00h  64k bytes memory installed
  481.              01h 128k bytes memory installed
  482.              02h 192k bytes memory installed
  483.              03h 256k bytes memory installed
  484.         CH = feature bits
  485.         CL = switch settings
  486. ----------1012--BL20-------------------------
  487. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  488.         AH = 12h
  489.         BL = 20h  select alternate print screen routine
  490. Notes: installs a PrtSc routine from the video card's BIOS to replace the
  491.        default PrtSc handler from the ROM BIOS, which usually does not
  492.        understand screen heights other than 25 lines
  493.        some adapters disable print-screen instead of enhancing it
  494. SeeAlso: INT 05
  495. ----------1012--BL30-------------------------
  496. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  497.         AH = 12h
  498.         BL = 30h
  499.         AL = vertical resolution
  500.              00h 200 scan lines
  501.              01h 350 scan lines
  502.              02h 400 scan lines
  503. Return: AL = 12h if function supported
  504. ----------1012--BL31-------------------------
  505. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  506.         AH = 12h
  507.         BL = 31h
  508.         AL = 00h enable default palette loading
  509.              01h disable default palette loading
  510. Return: AL = 12h if function supported
  511. ----------1012--BL32-------------------------
  512. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  513.         AH = 12h
  514.         BL = 32h
  515.         AL = 00h enable video addressing
  516.              01h disable video addressing
  517. Return: AL = 12h if function supported
  518. ----------1012--BL33-------------------------
  519. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  520.         AH = 12h
  521.         BL = 33h
  522.         AL = 00h enable gray scale summing
  523.              01h disable gray scale summing
  524. Return: AL = 12h if function supported
  525. SeeAlso: AX=101Bh,AX=BF06h
  526. ----------1012--BL34-------------------------
  527. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  528.         AH = 12h
  529.         BL = 34h
  530.         AL = 00h enable alphanumeric cursor emulation
  531.              01h disable alphanumeric cursor emulation
  532. Return: AL = 12h if function supported
  533. ----------1012--BL35-------------------------
  534. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  535.         AH = 12h
  536.         BL = 35h
  537.         AL = 00h initial adapter video off
  538.              01h initial planar video on
  539.              02h switch active video off
  540.              03h switch inactive video on
  541.              80h *UNDOCUMENTED* set system board video active flag
  542.         ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  543. Return: AL = 12h if function supported
  544. ----------1012--BL36-------------------------
  545. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  546.         AH = 12h
  547.         BL = 36h
  548.         AL = 00h enable refresh
  549.              01h disable refresh
  550. Return: AL = 12h if function supported
  551. ----------1013-------------------------------
  552. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  553.         AH = 13h
  554.         AL = write mode
  555.              bit 0: update cursor after writing
  556.                  1: string contains alternating characters and attributes
  557.         BH = page number
  558.         BL = attribute if string contains only characters
  559.         CX = number of characters in string
  560.         DH,DL = row,column at which to start writing
  561.         ES:BP -> string to write
  562. Notes: recognizes CR, LF, BS, and bell
  563.        also available PC or XT with EGA or higher
  564.        HP 95LX only supports write mode 00h
  565. BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
  566.      the active page rather than the requested page
  567. SeeAlso: AH=09h,AH=0Ah
  568. ----------101A-------------------------------
  569. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  570.         AH = 1Ah
  571.         AL = 00h read display combination code
  572. Return:          BL = active display code (see below)
  573.                  BH = alternate display code
  574.              01h set display combination code
  575.                  BL = active display code (see below)
  576.                  BH = alternate display code
  577. Return: AL = 1Ah if function was supported
  578.  
  579. Values for display combination code:
  580.   00h no display
  581.   01h monochrome adapter w/ monochrome display
  582.   02h CGA w/ color display
  583.   03h reserved
  584.   04h EGA w/ color display
  585.   05h EGA w/ monochrome display
  586.   06h PGA w/ color display
  587.   07h VGA w/ monochrome analog display
  588.   08h VGA w/ color analog display
  589.   09h reserved
  590.   0Ah MCGA w/ digital color display
  591.   0Bh MCGA w/ monochrome analog display
  592.   0Ch MCGA w/ color analog display
  593.   FFh unknown display type
  594. ----------101B-------------------------------
  595. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  596.         AH = 1Bh
  597.         BX = implementation type
  598.              0000h return funtionality/state information
  599.         ES:DI -> 64 byte buffer for state information (see below)
  600. Return: AL = 1Bh if function supported
  601.         ES:DI buffer filled with state information
  602. SeeAlso: AH=15h
  603.  
  604. Format of state information:
  605. Offset Size   Description
  606.  00h   DWORD  address of static funtionality table (see below)
  607.  04h   BYTE   video mode in effect
  608.  05h   WORD   number of columns
  609.  07h   WORD   length of regen buffer in bytes
  610.  09h   WORD   starting address of regen buffer
  611.  0Bh   WORD   cursor position for page 0
  612.  0Dh   WORD   cursor position for page 1
  613.  0Fh   WORD   cursor position for page 2
  614.  11h   WORD   cursor position for page 3
  615.  13h   WORD   cursor position for page 4
  616.  15h   WORD   cursor position for page 5
  617.  17h   WORD   cursor position for page 6
  618.  19h   WORD   cursor position for page 7
  619.  1Bh   WORD   cursor type
  620.  1Dh   BYTE   active display page
  621.  1Eh   WORD   CRTC port address
  622.  20h   BYTE   current setting of register (3?8)
  623.  21h   BYTE   current setting of register (3?9)
  624.  22h   BYTE   number of rows
  625.  23h   WORD   bytes/character
  626.  25h   BYTE   display combination code of active display
  627.  26h   BYTE   DCC of alternate display
  628.  27h   WORD   number of colors supported in current mode
  629.  29h   BYTE   number of pages supported in current mode
  630.  2Ah   BYTE   number of scan lines active
  631.               (0,1,2,3) = (200,350,400,480)
  632.  2Bh   BYTE   primary character block
  633.  2Ch   BYTE   secondary character block
  634.  2Dh   BYTE   miscellaneous flags
  635.               bit 0 all modes on all displays on
  636.                   1 gray summing on
  637.                   2 monochrome display attached
  638.                   3 default palette loading disabled
  639.                   4 cursor emulation enabled
  640.                   5 0 = intensity; 1 = blinking
  641.                   6 PS/2 P70 plasma display (without 9-dot wide font) active
  642.                   7 reserved
  643.  2Eh  3 BYTEs reserved (00h)
  644.  31h   BYTE   video memory available
  645.               00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  646.  32h   BYTE   save pointer state flags
  647.               bit 0 512 character set active
  648.                   1 dynamic save area present
  649.                   2 alpha font override active
  650.                   3 graphics font override active
  651.                   4 palette override active
  652.                   5 DCC override active
  653.                   6 reserved
  654.                   7 reserved
  655.  33h 13 BYTEs    reserved (00h)
  656.  
  657. Format of Static Functionality Table:
  658. Offset Size    Description
  659.  00h   BYTE    modes supported #1
  660.                bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  661.  01h   BYTE    modes supported #2
  662.                bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  663.  02h   BYTE    modes supported #3
  664.                bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  665.                bit 4 to bit 7 reserved
  666.  03h  4 BYTEs      reserved
  667.  07h   BYTE    scan lines supported
  668.                bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  669.  08h   BYTE        total number of character blocks available in text modes
  670.  09h   BYTE        maximum number of active character blocks in text modes
  671.  0Ah   BYTE    miscellaneous function flags #1
  672.                bit 0 all modes on all displays function supported
  673.                    1 gray summing function supported
  674.                    2 character font loading function supported
  675.                    3 default palette loading enable/disable supported
  676.                    4 cursor emulation function supported
  677.                    5 EGA palette present
  678.                    6 color palette present
  679.                    7 color paging function supported
  680.  0Bh   BYTE    miscellaneous function flags #2
  681.                bit 0 light pen supported
  682.                    1 save/restore state function 1Ch supported
  683.                    2 intensity blinking function supported
  684.                    3 Display Combination Code supported
  685.                  4-7 reserved
  686.  0Ch   WORD    reserved
  687.  0Eh   BYTE    save pointer function flags
  688.                bit 0 512 character set supported
  689.                    1 dynamic save area supported
  690.                    2 alpha font override supported
  691.                    3 graphics font override supported
  692.                    4 palette override supported
  693.                    5 DCC extension supported
  694.                    6 reserved
  695.                    7 reserved
  696.  0Fh   BYTE    reserved
  697. ----------101C-------------------------------
  698. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  699.         AH = 1Ch
  700.         AL = 00h return state buffer size
  701. Return: BX = number of 64-byte blocks needed
  702.              01h save video state
  703.                  ES:BX -> buffer
  704.              02h restore video state
  705.                  ES:BX -> buffer containing previously saved state
  706.         CX = requested states
  707.              bit 0 video hardware
  708.                  1 BIOS data areas
  709.                  2 color registers and DAC state
  710.               3-15 reserved
  711. Return: AL = 1Ch if function supported
  712.