1 ----------1000-------------------------------
\r
2 INT 10 - VIDEO - SET VIDEO MODE
\r
4 AL = mode (see below)
\r
5 Return: AL = video mode flag (Phoenix BIOS)
\r
7 30h modes <= 7 except 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
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
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
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
80 Return: AX = 0000h (Phoenix BIOS)
\r
81 CH = start 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
92 Return: AH = light pen trigger flag
\r
93 00h not 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
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
105 AL = new page number (00h to number of pages - 1) (see AH=00h)
\r
107 ----------1006-------------------------------
\r
108 INT 10 - VIDEO - SCROLL UP WINDOW
\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
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
130 BH = page number (00h to number of pages - 1) (see AH=00h)
\r
131 Return: AH = attribute
\r
133 bits 6-4: background color
\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
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
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
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
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
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
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
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
200 AL = pixel color (if bit 7 set, value is xor'ed onto screen)
\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
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
219 AL = character to write
\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
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
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
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
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
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
280 00h background intensity 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
285 ----------101007-----------------------------
\r
286 INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
\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
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
308 ----------101009-----------------------------
\r
309 INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
\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
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
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
339 00h select paging mode
\r
340 BH = 00h select 4 blocks of 64
\r
341 BH = 01h select 16 blocks of 16
\r
343 BH = page number (00h to 03h) or (00h to 0Fh)
\r
344 Note: not valid in mode 13h
\r
346 ----------101015-----------------------------
\r
347 INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
\r
349 BL = palette register number
\r
350 Return: DH = red value
\r
353 SeeAlso: AX=1010h,AX=1017h
\r
354 ----------101017-----------------------------
\r
355 INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
\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
367 ----------101019-----------------------------
\r
368 INT 10 - VIDEO - undocumented - READ PEL MASK (VGA/MCGA)
\r
370 Return: BL = value read
\r
372 ----------10101A-----------------------------
\r
373 INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
\r
375 Return: BL = paging mode
\r
376 00h four pages of 64
\r
377 01h sixteen pages of 16
\r
380 ----------10101B-----------------------------
\r
381 INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
\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
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
399 AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
\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
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
424 ----------1011-------------------------------
\r
425 INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
\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
434 DL = number of 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
449 SeeAlso: INT 1F, INT 43
\r
450 ----------101130-----------------------------
\r
451 INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
\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
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
481 CL = switch settings
\r
482 ----------1012--BL20-------------------------
\r
483 INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
\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
491 ----------1012--BL30-------------------------
\r
492 INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
\r
495 AL = vertical resolution
\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
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
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
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
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
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
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
551 bit 0: update cursor after writing
\r
552 1: string contains alternating characters and attributes
\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
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
575 Values for display combination code:
\r
577 01h monochrome adapter w/ monochrome display
\r
578 02h CGA w/ color display
\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
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
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
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
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
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
651 33h 13 BYTEs reserved (00h)
\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
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
693 ----------101C-------------------------------
\r
694 INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
\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
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
705 2 color registers and DAC state
\r
707 Return: AL = 1Ch if function supported
\r