📄 vga.htm
字号:
ch = green value<br>
cl = blue value<br>
seealso: ax=1010h,ax=1017h<br>
----------101017-----------------------------<br>
int 10 - video - read block of dac registers (vga/mcga)<br>
ax = 1017h<br>
bx = starting palette register<br>
cx = number of palette registers to read<br>
es:dx -> buffer (3 * cx bytes in size) (see also ax=1012h)<br>
return: buffer filled with cx red, green and blue triples<br>
seealso: ax=1012h,ax=1015h<br>
----------101018-----------------------------<br>
int 10 - video - undocumented - set pel mask (vga/mcga)<br>
ax = 1018h<br>
bl = new pel value<br>
seealso: ax=1019h<br>
----------101019-----------------------------<br>
int 10 - video - undocumented - read pel mask (vga/mcga)<br>
ax = 1019h<br>
return: bl = value read<br>
seealso: ax=1018h<br>
----------10101a-----------------------------<br>
int 10 - video - get video dac color-page state (vga)<br>
ax = 101ah<br>
return: bl = paging mode<br>
00h four pages of 64<br>
01h sixteen pages of 16<br>
bh = current page<br>
seealso: ax=1013h<br>
----------10101b-----------------------------<br>
int 10 - video - perform gray-scale summing (vga/mcga)<br>
ax = 101bh<br>
bx = starting palette register<br>
cx = number of registers to convert<br>
seealso: ah=12h/bl=33h<br>
----------1011-------------------------------<br>
int 10 - video - text-mode character generator functions (ps, ega, vga)<br>
ah = 11h<br>
the following functions will cause a mode set, completely resetting<br>
the video environment, but without clearing the video buffer<br>
al = 00h, 10h: load user-specified patterns<br>
es:bp -> user table<br>
cx = count of patterns to store<br>
dx = character offset into map 2 block<br>
bl = block to load in map 2<br>
bh = number of bytes per character pattern<br>
al = 01h, 11h: load rom monochrome patterns (8 by 14)<br>
bl = block to load<br>
al = 02h, 12h: load rom 8 by 8 double-dot patterns<br>
bl = block to load<br>
al = 03h: set block specifier<br>
bl = block specifier<br>
(ega/mcga) bits 0,1 = block selected by chars with attribute bit 3=0<br>
bits 2,3 = block selected by chars with attribute bit 3=1<br>
(vga) bits 0,1,4 = block selected by attribute bit 3 = 0<br>
bits 2,3,5 = block selected by attribute bit 3 = 1<br>
al = 04h, 14h: load rom 8x16 character set (vga)<br>
bl = block to load<br>
the routines called with al=1xh are designed to be called only<br>
immediately after a mode set and are similar to the routines called<br>
with al=0xh, except that:<br>
page 0 must be active.<br>
bytes/character is recalculated.<br>
max character rows is recalculated.<br>
crt buffer length is recalculated.<br>
crtc registers are reprogrammed as follows:<br>
r09 = bytes/char-1 ; max scan line (mode 7 only)<br>
r0a = bytes/char-2 ; cursor start<br>
r0b = 0 ; cursor end<br>
r12 = ((rows+1)*(bytes/char))-1 ; vertical display end<br>
r14 = bytes/char ; underline loc<br>
(*** bug: should be 1 less ***)<br>
seealso: ax=cd10h<br>
----------1011-------------------------------<br>
int 10 - video - graphics-mode character generator functions (ps, ega, vga)<br>
ah = 11h<br>
al = 20h: set user 8 by 8 graphics characters (int 1f)<br>
es:bp -> user table<br>
al = 21h: set user graphics characters<br>
es:bp -> user table<br>
cx = bytes per character<br>
bl = row specifier<br>
00h user set<br>
dl = number of rows<br>
01h 14 rows<br>
02h 25 rows<br>
03h 43 rows<br>
al = 22h: rom 8 by 14 set<br>
bl = row specifier (see above)<br>
al = 23h: rom 8 by 8 double dot<br>
bl = row specifier (see above)<br>
al = 24h: load 8x16 graphics characters (vga/mcga)<br>
bl = row specifier (see above)<br>
al = 29h: load 8x16 graphics characters (compaq systempro)<br>
bl = row specifier (see above)<br>
notes: these functions are meant to be called only after a mode set<br>
ultravision v2+ sets int 43 to the appropriate font for al=22h,23h,24h,<br>
and 29h<br>
seealso: int 1f, int 43<br>
----------101130-----------------------------<br>
int 10 - video - get font information (ega, mcga, vga)<br>
ax = 1130h<br>
bh = pointer specifier<br>
00h int 1fh pointer<br>
01h int 43h pointer<br>
02h rom 8x14 character font pointer<br>
03h rom 8x8 double dot font pointer<br>
04h rom 8x8 double dot font (high 128 characters)<br>
05h rom alpha alternate (9 by 14) pointer (ega,vga)<br>
06h rom 8x16 font (mcga, vga)<br>
07h rom alternate 9x16 font (vga only)<br>
11h (ultravision v2+) 8x20 font (vga) or 8x19 font (autosync ega)<br>
12h (ultravision v2+) 8x10 font (vga) or 8x11 font (autosync ega)<br>
return: es:bp = specified pointer<br>
cx = bytes/character<br>
dl = character rows on screen - 1<br>
note: for ultravision v2+, the 9xn alternate fonts follow the corresponding<br>
8xn font at es:bp+256n<br>
seealso: ax=1100h,ax=1120h,int 1f,int 43<br>
----------1012--bl10-------------------------<br>
int 10 - video - alternate function select (ps, ega, vga, mcga) - get ega info<br>
ah = 12h<br>
bl = 10h<br>
return: bh = 00h color mode in effect (i/o port 3dxh)<br>
01h mono mode in effect (i/o port 3bxh)<br>
bl = 00h 64k bytes memory installed<br>
01h 128k bytes memory installed<br>
02h 192k bytes memory installed<br>
03h 256k bytes memory installed<br>
ch = feature bits<br>
cl = switch settings<br>
----------1012--bl20-------------------------<br>
int 10 - video - alternate function select (ps,ega,vga,mcga) - alternate prtsc<br>
ah = 12h<br>
bl = 20h select alternate print screen routine<br>
notes: installs a prtsc routine from the video card's bios to replace the<br>
default prtsc handler from the rom bios, which usually does not<br>
understand screen heights other than 25 lines<br>
some adapters disable print-screen instead of enhancing it<br>
seealso: int 05<br>
----------1012--bl30-------------------------<br>
int 10 - video - alternate function select (vga) - select vertical resolution<br>
ah = 12h<br>
bl = 30h<br>
al = vertical resolution<br>
00h 200 scan lines<br>
01h 350 scan lines<br>
02h 400 scan lines<br>
return: al = 12h if function supported<br>
----------1012--bl31-------------------------<br>
int 10 - video - alternate function select (vga, mcga) - palette loading<br>
ah = 12h<br>
bl = 31h<br>
al = 00h enable default palette loading<br>
01h disable default palette loading<br>
return: al = 12h if function supported<br>
----------1012--bl32-------------------------<br>
int 10 - video - alternate function select (vga, mcga) - video addressing<br>
ah = 12h<br>
bl = 32h<br>
al = 00h enable video addressing<br>
01h disable video addressing<br>
return: al = 12h if function supported<br>
----------1012--bl33-------------------------<br>
int 10 - video - alternate function select (vga, mcga) - gray-scale summing<br>
ah = 12h<br>
bl = 33h<br>
al = 00h enable gray scale summing<br>
01h disable gray scale summing<br>
return: al = 12h if function supported<br>
seealso: ax=101bh,ax=bf06h<br>
----------1012--bl34-------------------------<br>
int 10 - video - alternate function select (vga) - cursor emulation<br>
ah = 12h<br>
bl = 34h<br>
al = 00h enable alphanumeric cursor emulation<br>
01h disable alphanumeric cursor emulation<br>
return: al = 12h if function supported<br>
----------1012--bl35-------------------------<br>
int 10 - video - alternate function select (ps) - display-switch interface<br>
ah = 12h<br>
bl = 35h<br>
al = 00h initial adapter video off<br>
01h initial planar video on<br>
02h switch active video off<br>
03h switch inactive video on<br>
80h *undocumented* set system board video active flag<br>
es:dx -> buffer (128 byte save area if al = 0, 2 or 3)<br>
return: al = 12h if function supported<br>
----------1012--bl36-------------------------<br>
int 10 - video - alternate function select (ps, vga) - video refresh control<br>
ah = 12h<br>
bl = 36h<br>
al = 00h enable refresh<br>
01h disable refresh<br>
return: al = 12h if function supported<br>
----------1013-------------------------------<br>
int 10 - video - write string (at and later,ega)<br>
ah = 13h<br>
al = write mode<br>
bit 0: update cursor after writing<br>
1: string contains alternating characters and attributes<br>
bh = page number<br>
bl = attribute if string contains only characters<br>
cx = number of characters in string<br>
dh,dl = row,column at which to start writing<br>
es:bp -> string to write<br>
notes: recognizes cr, lf, bs, and bell<br>
also available pc or xt with ega or higher<br>
hp 95lx only supports write mode 00h<br>
bug: on the ibm vga adapter, any scrolling which may occur is performed on<br>
the active page rather than the requested page<br>
seealso: ah=09h,ah=0ah<br>
----------101a-------------------------------<br>
int 10 - video - display combination (ps,vga/mcga)<br>
ah = 1ah<br>
al = 00h read display combination code<br>
return: bl = active display code (see below)<br>
bh = alternate display code<br>
01h set display combination code<br>
bl = active display code (see below)<br>
bh = alternate display code<br>
return: al = 1ah if function was supported<br>
<br>
values for display combination code:<br>
00h no display<br>
01h monochrome adapter w/ monochrome display<br>
02h cga w/ color display<br>
03h reserved<br>
04h ega w/ color display<br>
05h ega w/ monochrome display<br>
06h pga w/ color display<br>
07h vga w/ monochrome analog display<br>
08h vga w/ color analog display<br>
09h reserved<br>
0ah mcga w/ digital color display<br>
0bh mcga w/ monochrome analog display<br>
0ch mcga w/ color analog display<br>
ffh unknown display type<br>
----------101b-------------------------------<br>
int 10 - video - functionality/state information (ps,vga/mcga)<br>
ah = 1bh<br>
bx = implementation type<br>
0000h return functionality/state information<br>
es:di -> 64 byte buffer for state information (see below)<br>
return: al = 1bh if function supported<br>
es:di buffer filled with state information<br>
seealso: ah=15h<br>
<br>
format of state information:<br>
offset size description<br>
00h dword address of static functionality table (see below)<br>
04h byte video mode in effect<br>
05h word number of columns<br>
07h word length of regen buffer in bytes<br>
09h word starting address of regen buffer<br>
0bh word cursor position for page 0<br>
0dh word cursor position for page 1<br>
0fh word cursor position for page 2<br>
11h word cursor position for page 3<br>
13h word cursor position for page 4<br>
15h word cursor position for page 5<br>
17h word cursor position for page 6<br>
19h word cursor position for page 7<br>
1bh word cursor type<br>
1dh byte active display page<br>
1eh word crtc port address<br>
20h byte current setting of register (3?8)<br>
21h byte current setting of register (3?9)<br>
22h byte number of rows<br>
23h word bytes/character<br>
25h byte display combination code of active display<br>
26h byte dcc of alternate display<br>
27h word number of colors supported in current mode<br>
29h byte number of pages supported in current mode<br>
2ah byte number of scan lines active<br>
(0,1,2,3) = (200,350,400,480)<br>
2bh byte primary character block<br>
2ch byte secondary character block<br>
2dh byte miscellaneous flags<br>
bit 0 all modes on all displays on<br>
1 gray summing on<br>
2 monochrome display attached<br>
3 default palette loading disabled<br>
4 cursor emulation enabled<br>
5 0 = intensity; 1 = blinking<br>
6 ps/2 p70 plasma display (without 9-dot wide font) active<br>
7 reserved<br>
2eh 3 bytes reserved (00h)<br>
31h byte video memory available<br>
00h = 64k, 01h = 128k, 02h = 192k, 03h = 256k<br>
32h byte save pointer state flags<br>
bit 0 512 character set active<br>
1 dynamic save area present<br>
2 alpha font override active<br>
3 graphics font override active<br>
4 palette override active<br>
5 dcc override active<br>
6 reserved<br>
7 reserved<br>
33h 13 bytes reserved (00h)<br>
<br>
format of static functionality table:<br>
offset size description<br>
00h byte modes supported #1<br>
bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported<br>
01h byte modes supported #2<br>
bit 0 to bit 7 = 1 modes 8,9,0ah,0bh,0ch,0dh,0eh,0fh supported<br>
02h byte modes supported #3<br>
bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported<br>
bit 4 to bit 7 reserved<br>
03h 4 bytes reserved<br>
07h byte scan lines supported<br>
bit 0 to bit 2 = 1 if scan lines 200,350,400 supported<br>
08h byte total number of character blocks available in text modes<br>
09h byte maximum number of active character blocks in text modes<br>
0ah byte miscellaneous function flags #1<br>
bit 0 all modes on all displays function supported<br>
1 gray summing function supported<br>
2 character font loading function supported<br>
3 default palette loading enable/disable supported<br>
4 cursor emulation function supported<br>
5 ega palette present<br>
6 color palette present<br>
7 color paging function supported<br>
0bh byte miscellaneous function flags #2<br>
bit 0 light pen supported<br>
1 save/restore state function 1ch supported<br>
2 intensity blinking function supported<br>
3 display combination code supported<br>
4-7 reserved<br>
0ch word reserved<br>
0eh byte save pointer function flags<br>
bit 0 512 character set supported<br>
1 dynamic save area supported<br>
2 alpha font override supported<br>
3 graphics font override supported<br>
4 palette override supported<br>
5 dcc extension supported<br>
6 reserved<br>
7 reserved<br>
0fh byte reserved<br>
----------101c-------------------------------<br>
int 10 - video - save/restore video state (ps50+,vga)<br>
ah = 1ch<br>
al = 00h return state buffer size<br>
return: bx = number of 64-byte blocks needed<br>
01h save video state<br>
es:bx -> buffer<br>
02h restore video state<br>
es:bx -> buffer containing previously saved state<br>
cx = requested states<br>
bit 0 video hardware<br>
1 bios data areas<br>
2 color registers and dac state<br>
3-15 reserved<br>
return: al = 1ch if function supported<br>
</td>
</tr>
</table>
</center></div>
<p align="center"><a href="../index.htm">返回</a></p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -