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