--- /dev/null
+----------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