]> 4ch.mooo.com Git - 16.git/blobdiff - 16/tweak16/MISC/VGABIOS.TXT
refresh wwww
[16.git] / 16 / tweak16 / MISC / VGABIOS.TXT
diff --git a/16/tweak16/MISC/VGABIOS.TXT b/16/tweak16/MISC/VGABIOS.TXT
new file mode 100755 (executable)
index 0000000..40601ba
--- /dev/null
@@ -0,0 +1,707 @@
+----------1000-------------------------------\r
+INT 10 - VIDEO - SET VIDEO MODE\r
+       AH = 00h\r
+       AL = mode (see below)\r
+Return: AL = video mode flag (Phoenix BIOS)\r
+            20h mode > 7\r
+            30h modes <= 7 except mode 6\r
+            3Fh mode 6\r
+       AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)\r
+Notes:       IBM standard modes do not clear the screen if the high bit of AL is set\r
+      (EGA or higher only)\r
+SeeAlso: AX=0070h,AX=007Eh,AX=10F0h,AX=6F05h,AH=FFh"GO32",INT 5F/AH=00h\r
+\r
+Values for video mode:\r
+     text/ text   pixel pixel    colors  display  scrn system\r
+     grph  resol  box   resoltn          pages   addr\r
+ 00h = T   40x25  8x14           16gray     8    B800 EGA\r
+     = T   40x25  8x16             16       8    B800 MCGA\r
+     = T   40x25  9x16             16       8    B800 VGA\r
+ 01h = T   40x25  8x14             16       8    B800 EGA\r
+     = T   40x25  8x16             16       8    B800 MCGA\r
+     = T   40x25  9x16             16       8    B800 VGA\r
+ 02h = T   80x25  8x14           16gray     4    B800 EGA\r
+     = T   80x25  8x16             16       4    B800 MCGA\r
+     = T   80x25  9x16             16       4    B800 VGA\r
+ 03h = T   80x25  8x14             16       4    B800 EGA\r
+     = T   80x25  8x16             16       4    B800 MCGA\r
+     = T   80x25  9x16             16       4    B800 VGA\r
+ 04h = G   40x25  8x8     320x200           4    B800 CGA,PCjr,EGA,MCGA,VGA\r
+ 05h = G   40x25  8x8     320x200 4gray          B800 CGA,PCjr,EGA\r
+     = G   40x25  8x8     320x200   4            B800 MCGA,VGA\r
+ 06h = G   80x25  8x8     640x200   2            B800 CGA,PCjr,EGA,MCGA,VGA\r
+ 07h = T   80x25  9x14            mono     var   B000 MDA,Hercules,EGA\r
+     = T   80x25  9x16            mono           B000 VGA\r
+ 0Bh =                 reserved (used internally by EGA BIOS)\r
+ 0Ch =                 reserved (used internally by EGA BIOS)\r
+ 0Dh = G   40x25  8x8     320x200  16       8    A000 EGA,VGA\r
+ 0Eh = G   80x25  8x8     640x200  16       4    A000 EGA,VGA\r
+ 0Fh = G   80x25  8x14    640x350 mono      2    A000 EGA,VGA\r
+ 10h = G   80x25  8x14    640x350   4       2    A000 64k EGA\r
+     = G                  640x350  16            A000 256k EGA,VGA\r
+ 11h = G   80x30  8x16    640x480 mono           A000 VGA,MCGA,ATI EGA,ATI VIP\r
+ 12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP\r
+     = G   80x30  8x16    640x480 16/64          A000 ATI EGA Wonder\r
+ 13h = G   40x25  8x8     320x200 256/256k       A000 VGA,MCGA,ATI VIP\r
+----------1001-------------------------------\r
+INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE\r
+       AH = 01h\r
+       CH = bit 7    should be zero\r
+            bits 6,5 cursor blink\r
+               (00=normal, 01=invisible, 10=erratic, 11=slow)\r
+               (00=normal, other=invisible on EGA/VGA)\r
+            bits 4-0 top scan line containing cursor\r
+       CL = bottom scan line containing cursor (bits 0-4)\r
+Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but\r
+       returns unmapped cursor shape\r
+       applications which wish to change the cursor by programming the\r
+       hardware directly on EGA or above should call INT 10/AX=1130h or\r
+       read 0040h:0085h first to determine the current font height\r
+BUG:   AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL\r
+       is not equal to the current video mode\r
+SeeAlso: AH=03h,AX=CD05h\r
+----------1002-------------------------------\r
+INT 10 - VIDEO - SET CURSOR POSITION\r
+       AH = 02h\r
+       BH = page number\r
+             0-3 in modes 2&3\r
+             0-7 in modes 0&1\r
+               0 in graphics modes\r
+       DH = row (00h is top)\r
+       DL = column (00h is left)\r
+SeeAlso: AH=03h,AH=05h\r
+----------1003-------------------------------\r
+INT 10 - VIDEO - GET CURSOR POSITION AND SIZE\r
+       AH = 03h\r
+       BH = page number\r
+             0-3 in modes 2&3\r
+             0-7 in modes 0&1\r
+               0 in graphics modes\r
+Return: AX = 0000h (Phoenix BIOS)\r
+       CH = start scan line\r
+       CL = end scan line\r
+       DH = row (00h is top)\r
+       DL = column (00h is left)\r
+Notes: a separate cursor is maintained for each of up to 8 display pages\r
+       many ROM BIOSes incorrectly return the default size for a color display\r
+       (start 06h, end 07h) when a monochrome display is attached\r
+SeeAlso: AH=01h,AH=02h\r
+----------1004-------------------------------\r
+INT 10 - VIDEO - READ LIGHT PEN POSITION (EGA Only)\r
+       AH = 04h\r
+Return: AH = light pen trigger flag\r
+            00h not down/triggered\r
+            01h down/triggered \r
+       DH,DL = row,column of character light pen is on \r
+       CH = pixel row (graphics modes 04h-06h)\r
+       CX = pixel row (graphics modes with >200 rows)\r
+       BX = pixel column\r
+Notes: on a CGA, returned column numbers are always multiples of 2 (320-\r
+       column modes) or 4 (640-column modes)\r
+       returned row numbers are only accurate to two lines\r
+----------1005-------------------------------\r
+INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE\r
+       AH = 05h\r
+       AL = new page number (00h to number of pages - 1) (see AH=00h)\r
+SeeAlso: AH=0Fh\r
+----------1006-------------------------------\r
+INT 10 - VIDEO - SCROLL UP WINDOW\r
+       AH = 06h\r
+       AL = number of lines by which to scroll up (00h = clear entire window)\r
+       BH = attribute used to write blank lines at bottom of window\r
+     CH,CL = row,column of window's upper left corner\r
+     DH,DL = row,column of window's lower right corner\r
+Note:  affects only the currently active page (see AH=05h)\r
+Warning: some implementations have a bug which destroys BP\r
+SeeAlso: AH=07h,AH=72h,AH=73h\r
+----------1007-------------------------------\r
+INT 10 - VIDEO - SCROLL DOWN WINDOW\r
+       AH = 07h\r
+       AL = number of lines by which to scroll down (00h=clear entire window)\r
+       BH = attribute used to write blank lines at top of window\r
+     CH,CL = row,column of window's upper left corner\r
+     DH,DL = row,column of window's lower right corner\r
+Note:  affects only the currently active page (see AH=05h)\r
+Warning: some implementations have a bug which destroys BP\r
+SeeAlso: AH=06h,AH=72h,AH=73h\r
+----------1008-------------------------------\r
+INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION\r
+       AH = 08h\r
+       BH = page number (00h to number of pages - 1) (see AH=00h)\r
+Return: AH = attribute\r
+            bit    7: blink\r
+            bits 6-4: background color\r
+                      000 black\r
+                      001 blue\r
+                      010 green\r
+                      011 cyan\r
+                      100 red\r
+                      101 magenta\r
+                      110 brown\r
+                      111 white\r
+            bits 3-0: foreground color\r
+                      0000 black       1000 dark gray\r
+                      0001 blue        1001 light blue\r
+                      0010 green       1010 light green\r
+                      0011 cyan        1011 light cyan\r
+                      0100 red         1100 light red\r
+                      0101 magenta     1101 light magenta\r
+                      0110 brown       1110 yellow\r
+                      0111 light gray  1111 white\r
+       AL = character\r
+Notes: for monochrome displays, a foreground of 1 with background 0 is underlined\r
+       the blink bit may be reprogrammed to enable intense background colors\r
+       using AX=1003h or by programming the CRT controller\r
+SeeAlso: AH=09h,AX=1003h\r
+----------1009-------------------------------\r
+INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION\r
+       AH = 09h\r
+       AL = character to display\r
+       BH = page number (00h to number of pages - 1) (see AH=00h)\r
+       BL = attribute (text mode) or color (graphics mode)\r
+            if bit 7 set in graphics mode, character is xor'ed onto screen\r
+       CX = number of times to write character\r
+Notes: all characters are displayed, including CR, LF, and BS\r
+       replication count in CX may produce an unpredictable result in graphics\r
+       modes if it is greater than the number of positions remaining in the\r
+       current row\r
+SeeAlso: AH=08h,AH=0Ah,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44\r
+----------100A-------------------------------\r
+INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION\r
+       AH = 0Ah\r
+       AL = character to display\r
+       BH = page number (00h to number of pages - 1) (see AH=00h)\r
+       BL = attribute (PCjr only) or color (graphics mode)\r
+            if bit 7 set in graphics mode, character is xor'ed onto screen\r
+       CX = number of times to write character\r
+Notes: all characters are displayed, including CR, LF, and BS\r
+       replication count in CX may produce an unpredictable result in graphics\r
+       modes if it is greater than the number of positions remaining in the\r
+       current row\r
+SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44\r
+----------100B--BH00-------------------------\r
+INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR\r
+       AH = 0Bh\r
+       BH = 00h\r
+       BL = background/border color (border only in text modes)\r
+SeeAlso: AH=0Bh/BH=01h\r
+----------100B--BH01-------------------------\r
+INT 10 - VIDEO - SET PALETTE\r
+       AH = 0BH\r
+       BH = 01h\r
+       BL = palette ID\r
+            00h background, green, red, and brown/yellow\r
+            01h background, cyan, magenta, and white\r
+SeeAlso: AH=0Bh/BH=00h\r
+----------100C-------------------------------\r
+INT 10 - VIDEO - WRITE GRAPHICS PIXEL\r
+       AH = 0Ch\r
+       BH = page number\r
+       AL = pixel color (if bit 7 set, value is xor'ed onto screen)\r
+       CX = column\r
+       DX = row\r
+Notes: valid only in graphics modes\r
+       BH is ignored if the current video mode supports only one page\r
+SeeAlso: AH=0Dh,AH=46h\r
+----------100D-------------------------------\r
+INT 10 - VIDEO - READ GRAPHICS PIXEL\r
+       AH = 0Dh\r
+       BH = page number\r
+       CX = column\r
+       DX = row\r
+Return: AL = pixel color\r
+Notes: valid only in graphics modes\r
+       BH is ignored if the current video mode supports only one page\r
+SeeAlso: AH=0Ch,AH=47h\r
+----------100E-------------------------------\r
+INT 10 - VIDEO - TELETYPE OUTPUT\r
+       AH = 0Eh\r
+       AL = character to write\r
+       BH = page number\r
+       BL = foreground color (graphics modes only)\r
+Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted\r
+       and do the expected things\r
+       IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as\r
+       the current active page\r
+SeeAlso: AH=02h,AH=0Ah\r
+----------100F-------------------------------\r
+INT 10 - VIDEO - GET CURRENT VIDEO MODE\r
+       AH = 0Fh\r
+Return: AH = number of character columns\r
+       AL = display mode (see AH=00h)\r
+       BH = active page (see AH=05h)\r
+Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will\r
+       also have bit 7 set\r
+       EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h\r
+       (monochrome) in all extended-row text modes\r
+SeeAlso: AH=00h,AH=05h,AX=1130h,AX=CD04h\r
+----------101000----------------------------\r
+INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)\r
+       AX = 1000h\r
+       BL = palette register number (00h-0Fh)\r
+          = attribute register number (undocumented)\r
+            10h attribute mode control register (should let BIOS control this)\r
+            11h overscan color register (see also AX=1001h)\r
+            12h color plane enable register (bits 3-0 enable corresponding\r
+                text attribute bit)\r
+            13h horizontal PEL panning register\r
+            14h color select register\r
+       BH = color or attribute register value\r
+Notes: on MCGA, only BX = 0712h is supported\r
+       under UltraVision, the palette locking status (see AX=CD01h)\r
+       determines the outcome\r
+SeeAlso: AX=1002h,AX=1007h,AX=CD01h\r
+----------101001-----------------------------\r
+INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)\r
+       AX = 1001h\r
+       BH = border color (00h-3Fh)\r
+BUG: the original IBM VGA BIOS incorrectly updates the parameter save area\r
+     and places the border color at offset 11h of the palette table\r
+     rather than offset 10h\r
+Note: under UltraVision, the palette locking status (see AX=CD01h)\r
+      determines the outcome\r
+SeeAlso: AX=1002h,AX=1008h,AX=CD01h\r
+----------101002-----------------------------\r
+INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)\r
+       AX = 1002h\r
+       ES:DX -> palette register list\r
+Note: under UltraVision, the palette locking status (see AX=CD01h)\r
+      determines the outcome\r
+SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h\r
+\r
+Format of palette register list:\r
+Offset  Size     Description\r
+ 00h   16 BYTEs  colors for palette registers 00h through 0Fh\r
+ 10h      BYTE   border color\r
+----------101003-----------------------------\r
+INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)\r
+       AX = 1003h\r
+       BL = new state\r
+            00h background intensity enabled\r
+            01h blink enabled\r
+Note: although there is no function to get the current status, bit 5 of\r
+      0040h:0065h indicates the state\r
+SeeAlso: AH=08h\r
+----------101007-----------------------------\r
+INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)\r
+       AX = 1007h\r
+       BL = palette or attribute (undoc) register number (see AX=1000h)\r
+Return: BH = palette or attribute register value\r
+Notes: UltraVision v2+ supports this function even on color EGA systems in\r
+       video modes 00h-03h, 10h, and 12h; direct programming of the palette\r
+       registers will cause incorrect results because the EGA registers are\r
+       write-only.  To guard against older versions or unsupported video\r
+       modes, programs which expect to use this function on EGA systems\r
+       should set BH to FFh on entry.\r
+SeeAlso: AX=1000h,AX=1009h\r
+----------101008-----------------------------\r
+INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)\r
+       AX = 1008h\r
+Return: BH = border color (00h-3Fh)\r
+Notes: UltraVision v2+ supports this function even on color EGA systems in\r
+       video modes 00h-03h, 10h, and 12h; direct programming of the palette\r
+       registers will cause incorrect results because the EGA registers are\r
+       write-only.  To guard against older versions or unsupported video\r
+       modes, programs which expect to use this function on EGA systems\r
+       should set BH to FFh on entry.\r
+SeeAlso: AX=1001h\r
+----------101009-----------------------------\r
+INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)\r
+       AX = 1009h\r
+       ES:DX -> 17-byte buffer (see AX=1002h)\r
+Notes: UltraVision v2+ supports this function even on color EGA systems in\r
+       video modes 00h-03h, 10h, and 12h; direct programming of the palette\r
+       registers will cause incorrect results because the EGA registers are\r
+       write-only.  To guard against older versions or unsupported video\r
+       modes, programs which expect to use this function on EGA systems\r
+       should set the ES:DX buffer to FFh before calling.\r
+SeeAlso: AX=1002h,AX=1007h,AX=CD02h\r
+----------101010-----------------------------\r
+INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)\r
+       AX = 1010h\r
+       BX = register number\r
+       CH = new value for green (0-63)\r
+       CL = new value for blue (0-63)\r
+       DH = new value for red (0-63)\r
+SeeAlso: AX=1012h,AX=1015h\r
+----------101012-----------------------------\r
+INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)\r
+       AX = 1012h\r
+       BX = starting color register\r
+       CX = number of registers to set\r
+       ES:DX -> table of 3*CX bytes where each 3 byte group represents one\r
+                byte each of red, green and blue (0-63)\r
+SeeAlso: AX=1010h,AX=1017h\r
+----------101013-----------------------------\r
+INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)\r
+       AX = 1013h\r
+       BL = subfunction\r
+            00h select paging mode\r
+                BH = 00h select 4 blocks of 64\r
+                BH = 01h select 16 blocks of 16\r
+            01h select page\r
+                BH = page number (00h to 03h) or (00h to 0Fh)\r
+Note: not valid in mode 13h\r
+SeeAlso: AX=101Ah\r
+----------101015-----------------------------\r
+INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)\r
+       AX = 1015h\r
+       BL = palette register number\r
+Return: DH = red value\r
+       CH = green value\r
+       CL = blue value\r
+SeeAlso: AX=1010h,AX=1017h\r
+----------101017-----------------------------\r
+INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)\r
+       AX = 1017h\r
+       BX = starting palette register\r
+       CX = number of palette registers to read\r
+       ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)\r
+Return: buffer filled with CX red, green and blue triples\r
+SeeAlso: AX=1012h,AX=1015h\r
+----------101018-----------------------------\r
+INT 10 - VIDEO - undocumented - SET PEL MASK (VGA/MCGA)\r
+       AX = 1018h\r
+       BL = new PEL value\r
+SeeAlso: AX=1019h\r
+----------101019-----------------------------\r
+INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)\r
+       AX = 1019h\r
+Return: BL = value read\r
+SeeAlso: AX=1018h\r
+----------10101A-----------------------------\r
+INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)\r
+       AX = 101Ah\r
+Return: BL = paging mode\r
+            00h four pages of 64\r
+            01h sixteen pages of 16\r
+       BH = current page\r
+SeeAlso: AX=1013h\r
+----------10101B-----------------------------\r
+INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)\r
+       AX = 101Bh\r
+       BX = starting palette register\r
+       CX = number of registers to convert\r
+SeeAlso: AH=12h/BL=33h\r
+----------1011-------------------------------\r
+INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)\r
+       AH = 11h\r
+The following functions will cause a mode set, completely resetting\r
+the video environment, but without clearing the video buffer\r
+       AL = 00h, 10h: load user-specified patterns\r
+            ES:BP -> user table\r
+            CX  = count of patterns to store\r
+            DX  = character offset into map 2 block\r
+            BL  = block to load in map 2\r
+            BH  = number of bytes per character pattern\r
+       AL = 01h, 11h: load ROM monochrome patterns (8 by 14)\r
+            BL  = block to load\r
+       AL = 02h, 12h: load ROM 8 by 8 double-dot patterns\r
+            BL  = block to load\r
+       AL = 03h: set block specifier\r
+            BL  = block specifier\r
+              (EGA/MCGA) bits 0,1 = block selected by chars with attribute bit 3=0\r
+                         bits 2,3 = block selected by chars with attribute bit 3=1\r
+                   (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0\r
+                         bits 2,3,5 = block selected by attribute bit 3 = 1\r
+       AL = 04h, 14h: load ROM 8x16 character set (VGA)\r
+            BL  = block to load\r
+The routines called with AL=1xh are designed to be called only\r
+immediately after a mode set and are similar to the routines called\r
+with AL=0xh, except that:\r
+      Page 0 must be active.\r
+      Bytes/character is recalculated.\r
+      Max character rows is recalculated.\r
+      CRT buffer length is recalculated.\r
+      CRTC registers are reprogrammed as follows:\r
+          R09 = bytes/char-1 ; max scan line (mode 7 only)\r
+          R0A = bytes/char-2 ; cursor start\r
+          R0B = 0            ; cursor end\r
+          R12 = ((rows+1)*(bytes/char))-1 ; vertical display end\r
+          R14 = bytes/char     ; underline loc\r
+                 (*** BUG: should be 1 less ***)\r
+SeeAlso: AX=CD10h\r
+----------1011-------------------------------\r
+INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)\r
+       AH = 11h\r
+       AL = 20h: set user 8 by 8 graphics characters (INT 1F)\r
+                 ES:BP -> user table\r
+       AL = 21h: set user graphics characters\r
+                 ES:BP -> user table\r
+                 CX      = bytes per character\r
+                 BL      = row specifier\r
+                       00h user set\r
+                           DL = number of rows\r
+                       01h 14 rows\r
+                       02h 25 rows\r
+                       03h 43 rows\r
+       AL = 22h: ROM 8 by 14 set\r
+                 BL = row specifier (see above)\r
+       AL = 23h: ROM 8 by 8 double dot\r
+                 BL = row specifier (see above)\r
+       AL = 24h: load 8x16 graphics characters (VGA/MCGA)\r
+                 BL = row specifier (see above)\r
+       AL = 29h: load 8x16 graphics characters (Compaq Systempro)\r
+                 BL = row specifier (see above)\r
+Notes: these functions are meant to be called only after a mode set\r
+       UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,\r
+       and 29h\r
+SeeAlso: INT 1F, INT 43\r
+----------101130-----------------------------\r
+INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)\r
+       AX = 1130h\r
+       BH = pointer specifier\r
+            00h INT 1Fh pointer\r
+            01h INT 43h pointer\r
+            02h ROM 8x14 character font pointer\r
+            03h ROM 8x8 double dot font pointer\r
+            04h ROM 8x8 double dot font (high 128 characters)\r
+            05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)\r
+            06h ROM 8x16 font (MCGA, VGA)\r
+            07h ROM alternate 9x16 font (VGA only)\r
+            11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)\r
+            12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)\r
+Return: ES:BP = specified pointer\r
+       CX    = bytes/character\r
+       DL    = character rows on screen - 1\r
+Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding\r
+      8xN font at ES:BP+256N\r
+SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43\r
+----------1012--BL10-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO\r
+       AH = 12h\r
+       BL = 10h\r
+Return: BH = 00h color mode in effect (I/O port 3Dxh)\r
+            01h mono mode in effect (I/O port 3Bxh)\r
+       BL = 00h  64k bytes memory installed\r
+            01h 128k bytes memory installed\r
+            02h 192k bytes memory installed\r
+            03h 256k bytes memory installed\r
+       CH = feature bits\r
+       CL = switch settings\r
+----------1012--BL20-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC\r
+       AH = 12h\r
+       BL = 20h  select alternate print screen routine\r
+Notes: installs a PrtSc routine from the video card's BIOS to replace the\r
+       default PrtSc handler from the ROM BIOS, which usually does not\r
+       understand screen heights other than 25 lines\r
+       some adapters disable print-screen instead of enhancing it\r
+SeeAlso: INT 05\r
+----------1012--BL30-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION\r
+       AH = 12h\r
+       BL = 30h\r
+       AL = vertical resolution\r
+            00h 200 scan lines\r
+            01h 350 scan lines\r
+            02h 400 scan lines\r
+Return: AL = 12h if function supported\r
+----------1012--BL31-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING\r
+       AH = 12h\r
+       BL = 31h\r
+       AL = 00h enable default palette loading\r
+            01h disable default palette loading\r
+Return: AL = 12h if function supported\r
+----------1012--BL32-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING\r
+       AH = 12h\r
+       BL = 32h\r
+       AL = 00h enable video addressing\r
+            01h disable video addressing\r
+Return: AL = 12h if function supported\r
+----------1012--BL33-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING\r
+       AH = 12h\r
+       BL = 33h\r
+       AL = 00h enable gray scale summing\r
+            01h disable gray scale summing\r
+Return: AL = 12h if function supported\r
+SeeAlso: AX=101Bh,AX=BF06h\r
+----------1012--BL34-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION\r
+       AH = 12h\r
+       BL = 34h\r
+       AL = 00h enable alphanumeric cursor emulation\r
+            01h disable alphanumeric cursor emulation\r
+Return: AL = 12h if function supported\r
+----------1012--BL35-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE\r
+       AH = 12h\r
+       BL = 35h\r
+       AL = 00h initial adapter video off\r
+            01h initial planar video on\r
+            02h switch active video off\r
+            03h switch inactive video on\r
+            80h *UNDOCUMENTED* set system board video active flag\r
+       ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)\r
+Return: AL = 12h if function supported\r
+----------1012--BL36-------------------------\r
+INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL\r
+       AH = 12h\r
+       BL = 36h\r
+       AL = 00h enable refresh\r
+            01h disable refresh\r
+Return: AL = 12h if function supported\r
+----------1013-------------------------------\r
+INT 10 - VIDEO - WRITE STRING (AT and later,EGA)\r
+       AH = 13h\r
+       AL = write mode\r
+            bit 0: update cursor after writing\r
+                1: string contains alternating characters and attributes\r
+       BH = page number\r
+       BL = attribute if string contains only characters\r
+       CX = number of characters in string\r
+       DH,DL = row,column at which to start writing\r
+       ES:BP -> string to write\r
+Notes: recognizes CR, LF, BS, and bell\r
+       also available PC or XT with EGA or higher\r
+       HP 95LX only supports write mode 00h\r
+BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on\r
+     the active page rather than the requested page\r
+SeeAlso: AH=09h,AH=0Ah\r
+----------101A-------------------------------\r
+INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)\r
+       AH = 1Ah\r
+       AL = 00h read display combination code\r
+Return:          BL = active display code (see below)\r
+                BH = alternate display code\r
+            01h set display combination code\r
+                BL = active display code (see below)\r
+                BH = alternate display code\r
+Return: AL = 1Ah if function was supported\r
+\r
+Values for display combination code:\r
+  00h no display\r
+  01h monochrome adapter w/ monochrome display\r
+  02h CGA w/ color display\r
+  03h reserved\r
+  04h EGA w/ color display\r
+  05h EGA w/ monochrome display\r
+  06h PGA w/ color display\r
+  07h VGA w/ monochrome analog display\r
+  08h VGA w/ color analog display\r
+  09h reserved\r
+  0Ah MCGA w/ digital color display\r
+  0Bh MCGA w/ monochrome analog display\r
+  0Ch MCGA w/ color analog display\r
+  FFh unknown display type\r
+----------101B-------------------------------\r
+INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)\r
+       AH = 1Bh\r
+       BX = implementation type\r
+            0000h return functionality/state information\r
+       ES:DI -> 64 byte buffer for state information (see below)\r
+Return: AL = 1Bh if function supported\r
+       ES:DI buffer filled with state information\r
+SeeAlso: AH=15h\r
+\r
+Format of state information:\r
+Offset Size   Description\r
+ 00h   DWORD  address of static functionality table (see below)\r
+ 04h   BYTE   video mode in effect\r
+ 05h   WORD   number of columns\r
+ 07h   WORD   length of regen buffer in bytes\r
+ 09h   WORD   starting address of regen buffer\r
+ 0Bh   WORD   cursor position for page 0\r
+ 0Dh   WORD   cursor position for page 1\r
+ 0Fh   WORD   cursor position for page 2\r
+ 11h   WORD   cursor position for page 3\r
+ 13h   WORD   cursor position for page 4\r
+ 15h   WORD   cursor position for page 5\r
+ 17h   WORD   cursor position for page 6\r
+ 19h   WORD   cursor position for page 7\r
+ 1Bh   WORD   cursor type\r
+ 1Dh   BYTE   active display page\r
+ 1Eh   WORD   CRTC port address\r
+ 20h   BYTE   current setting of register (3?8)\r
+ 21h   BYTE   current setting of register (3?9)\r
+ 22h   BYTE   number of rows\r
+ 23h   WORD   bytes/character\r
+ 25h   BYTE   display combination code of active display\r
+ 26h   BYTE   DCC of alternate display\r
+ 27h   WORD   number of colors supported in current mode\r
+ 29h   BYTE   number of pages supported in current mode\r
+ 2Ah   BYTE   number of scan lines active\r
+             (0,1,2,3) = (200,350,400,480)\r
+ 2Bh   BYTE   primary character block\r
+ 2Ch   BYTE   secondary character block\r
+ 2Dh   BYTE   miscellaneous flags\r
+             bit 0 all modes on all displays on\r
+                 1 gray summing on\r
+                 2 monochrome display attached\r
+                 3 default palette loading disabled\r
+                 4 cursor emulation enabled\r
+                 5 0 = intensity; 1 = blinking\r
+                 6 PS/2 P70 plasma display (without 9-dot wide font) active\r
+                 7 reserved\r
+ 2Eh  3 BYTEs reserved (00h)\r
+ 31h   BYTE   video memory available\r
+             00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K\r
+ 32h   BYTE   save pointer state flags\r
+             bit 0 512 character set active\r
+                 1 dynamic save area present\r
+                 2 alpha font override active\r
+                 3 graphics font override active\r
+                 4 palette override active\r
+                 5 DCC override active\r
+                 6 reserved\r
+                 7 reserved\r
+ 33h 13 BYTEs reserved (00h)\r
+\r
+Format of Static Functionality Table:\r
+Offset Size    Description\r
+ 00h   BYTE    modes supported #1\r
+              bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported\r
+ 01h   BYTE    modes supported #2\r
+              bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported\r
+ 02h   BYTE    modes supported #3\r
+              bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported\r
+              bit 4 to bit 7 reserved\r
+ 03h  4 BYTEs  reserved\r
+ 07h   BYTE    scan lines supported\r
+              bit 0 to bit 2 = 1 if scan lines 200,350,400 supported\r
+ 08h   BYTE    total number of character blocks available in text modes\r
+ 09h   BYTE    maximum number of active character blocks in text modes\r
+ 0Ah   BYTE    miscellaneous function flags #1\r
+              bit 0 all modes on all displays function supported\r
+                  1 gray summing function supported\r
+                  2 character font loading function supported\r
+                  3 default palette loading enable/disable supported\r
+                  4 cursor emulation function supported\r
+                  5 EGA palette present\r
+                  6 color palette present\r
+                  7 color paging function supported\r
+ 0Bh   BYTE    miscellaneous function flags #2\r
+              bit 0 light pen supported\r
+                  1 save/restore state function 1Ch supported\r
+                  2 intensity blinking function supported\r
+                  3 Display Combination Code supported\r
+                4-7 reserved\r
+ 0Ch   WORD    reserved\r
+ 0Eh   BYTE    save pointer function flags\r
+              bit 0 512 character set supported\r
+                  1 dynamic save area supported\r
+                  2 alpha font override supported\r
+                  3 graphics font override supported\r
+                  4 palette override supported\r
+                  5 DCC extension supported\r
+                  6 reserved\r
+                  7 reserved\r
+ 0Fh   BYTE    reserved\r
+----------101C-------------------------------\r
+INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)\r
+       AH = 1Ch\r
+       AL = 00h return state buffer size\r
+Return: BX = number of 64-byte blocks needed\r
+            01h save video state\r
+                ES:BX -> buffer\r
+            02h restore video state\r
+                ES:BX -> buffer containing previously saved state\r
+       CX = requested states\r
+            bit 0 video hardware\r
+                1 BIOS data areas\r
+                2 color registers and DAC state\r
+             3-15 reserved\r
+Return: AL = 1Ch if function supported\r