📄 vga.htm
字号:
13h horizontal pel panning register<br>
14h color select register<br>
bh = color or attribute register value<br>
notes: on mcga, only bx = 0712h is supported<br>
under ultravision, the palette locking status (see ax=cd01h)<br>
determines the outcome<br>
seealso: ax=1002h,ax=1007h,ax=cd01h<br>
----------101001-----------------------------<br>
int 10 - video - set border (overscan) color (pcjr,ega,vga)<br>
ax = 1001h<br>
bh = border color (00h-3fh)<br>
bug: the original ibm vga bios incorrectly updates the parameter save area<br>
and places the border color at offset 11h of the palette table<br>
rather than offset 10h<br>
note: under ultravision, the palette locking status (see ax=cd01h)<br>
determines the outcome<br>
seealso: ax=1002h,ax=1008h,ax=cd01h<br>
----------101002-----------------------------<br>
int 10 - video - set all palette registers (pcjr,ega,vga)<br>
ax = 1002h<br>
es:dx -> palette register list<br>
note: under ultravision, the palette locking status (see ax=cd01h)<br>
determines the outcome<br>
seealso: ax=1000h,ax=1001h,ax=1009h,ax=cd01h<br>
<br>
format of palette register list:<br>
offset size description<br>
00h 16 bytes colors for palette registers 00h through 0fh<br>
10h byte border color<br>
----------101003-----------------------------<br>
int 10 - video - toggle intensity/blinking bit (jr, ps, tandy 1000, ega, vga)<br>
ax = 1003h<br>
bl = new state<br>
00h background../jpg/di1.JPGy enabled<br>
01h blink enabled<br>
note: although there is no function to get the current status, bit 5 of<br>
0040h:0065h indicates the state<br>
seealso: ah=08h<br>
----------101007-----------------------------<br>
int 10 - video - get individual palette register (vga,ultravision v2+)<br>
ax = 1007h<br>
bl = palette or attribute (undoc) register number (see ax=1000h)<br>
return: bh = palette or attribute register value<br>
notes: ultravision v2+ supports this function even on color ega systems in<br>
video modes 00h-03h, 10h, and 12h; direct programming of the palette<br>
registers will cause incorrect results because the ega registers are<br>
write-only. to guard against older versions or unsupported video<br>
modes, programs which expect to use this function on ega systems<br>
should set bh to ffh on entry.<br>
seealso: ax=1000h,ax=1009h<br>
----------101008-----------------------------<br>
int 10 - video - read overscan (border color) register (vga,ultravision v2+)<br>
ax = 1008h<br>
return: bh = border color (00h-3fh)<br>
notes: ultravision v2+ supports this function even on color ega systems in<br>
video modes 00h-03h, 10h, and 12h; direct programming of the palette<br>
registers will cause incorrect results because the ega registers are<br>
write-only. to guard against older versions or unsupported video<br>
modes, programs which expect to use this function on ega systems<br>
should set bh to ffh on entry.<br>
seealso: ax=1001h<br>
----------101009-----------------------------<br>
int 10 - video - read all palette registers and overscan register (vga)<br>
ax = 1009h<br>
es:dx -> 17-byte buffer (see ax=1002h)<br>
notes: ultravision v2+ supports this function even on color ega systems in<br>
video modes 00h-03h, 10h, and 12h; direct programming of the palette<br>
registers will cause incorrect results because the ega registers are<br>
write-only. to guard against older versions or unsupported video<br>
modes, programs which expect to use this function on ega systems<br>
should set the es:dx buffer to ffh before calling.<br>
seealso: ax=1002h,ax=1007h,ax=cd02h<br>
----------101010-----------------------------<br>
int 10 - video - set individual dac register (vga/mcga)<br>
ax = 1010h<br>
bx = register number<br>
ch = new value for green (0-63)<br>
cl = new value for blue (0-63)<br>
dh = new value for red (0-63)<br>
seealso: ax=1012h,ax=1015h<br>
----------101012-----------------------------<br>
int 10 - video - set block of dac registers (vga/mcga)<br>
ax = 1012h<br>
bx = starting color register<br>
cx = number of registers to set<br>
es:dx -> table of 3*cx bytes where each 3 byte group represents one<br>
byte each of red, green and blue (0-63)<br>
seealso: ax=1010h,ax=1017h<br>
----------101013-----------------------------<br>
int 10 - video - select video dac color page (vga)<br>
ax = 1013h<br>
bl = subfunction<br>
00h select paging mode<br>
bh = 00h select 4 blocks of 64<br>
bh = 01h select 16 blocks of 16<br>
01h select page<br>
bh = page number (00h to 03h) or (00h to 0fh)<br>
note: not valid in mode 13h<br>
seealso: ax=101ah<br>
----------101015-----------------------------<br>
int 10 - video - read individual dac register (vga/mcga)<br>
ax = 1015h<br>
bl = palette register number<br>
return: dh = red value<br>
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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -