RozÜφ°enφ BIOS pro EGA/VGA
V tΘto kapitole se seznßmφme se slu₧bami EGA/VGA BIOS,
kterΘ nßm umo₧nφ vyu₧φvat specifickΘ vlastnosti karet
EGA/VGA. Prßce s t∞mito slu₧bami je naprosto principißln∞
shodnß jako s t∞mi p°edeÜl²mi. Vzhledem k tomu, ₧e nov∞
poskytovan²ch slu₧eb je opravdu mnoho a Φφsel slu₧eb nenφ
neomezenΘ mno₧stvφ, doÜlo k tomu, ₧e ka₧dß slu₧ba v sob∞
zahrnuje n∞kolik podslu₧eb (budeme je naz²vat funkce). ╚φslo
funkce se uklßdß do registru AL nebo BL. K vyvolßnφ vlastnφ
slu₧by se op∞t pou₧φvß INT 10h. Slu₧by tΘto Φßsti BIOS
m∙₧eme rozd∞lit do t°φ hlavnφch skupin: slu₧by pro prßci
s barvami a paletami barev, slu₧by pro obsluhu znakov²ch sad
a slu₧by zjiÜ¥ujφcφ konfiguraci adaptΘru.
Slu₧ba 10h - Nastavenφ registr∙ palety
======================================
Popis: Tato slu₧ba se pou₧φvß ke zm∞n∞ jednΘ (nebo vÜech)
barev palety na jinou barvu a k nastavenφ barvy
rßmeΦku. (RßmeΦek je plocha obrazovky na jejφch
okrajφch, kde se obvykle nic nezobrazuje.)
Poznßmka: V Üesnßctibarevn²ch m≤dech EGA/VGA je Φφslo registru
palety stejnΘ jako Φφslo barvy. V kompatibilnφch m≤dech
(CGA) urΦujφ registry 1-3 barvy palety 1 a registry 4-6
urΦujφ barvy palety 0. Pokud mßte kartu EGA s 64K
pam∞ti a pou₧ijete m≤d 10h, barvy jsou urΦeny
nßsledujφcφm schΘmatem:
Registr palety ╚φsla barev
-----------------------------------
0 0,2,8,10
1 1,3,9,11
4 4,6,12,14
7 5,7,13,15
Po ka₧dΘ inicializaci zobrazovacφho re₧imu jsou hodnoty
registr∙ palety nastaveny na svojφ p∙vodnφ hodnotu.
Pokud tedy pou₧φvßte svoji paletu, musφte ji obnovit po
ka₧dΘ zm∞n∞ zobrazovacφho re₧imu. Jinou mo₧nostφ je
uΦinit vaÜe hodnoty barev v palet∞ stßl²mi. To
dosßhnete vytvo°enφm vlastnφ tabulky parametr∙
a nastavenφm ukazatele BIOS SAVE_PTR na nφ. Formßt tΘto
parametrickΘ tabulky je uveden v popisu uklßdacφ
oblasti BIOS. Na kart∞ VGA m∙₧ete pomocφ slu₧by 12h
a jejφ funkce 31h zakßzat obnovu palety po resetu m≤du.
VGA mß krom∞ standartnφch registr∙ palety takΘ 256
registr∙ DAC (Digital to Analog Converter), kterΘ
urΦujφ v²slednou barvu. Ka₧d² registr uchovßvß
18bitovou hodnotu. Z t∞chto 18 bit∙ p°φsluÜφ v₧dy 6
ka₧dΘ ze t°φ barev - ΦervenΘ, zelenΘ, modrΘ (tzv. RGB
barevn² model). Hodnota t∞chto Üesti bit∙ udßvß
intenzitu p°φsluÜnΘ barvy. V²sledn²m slo₧enφm vÜech t°φ
zßkladnφch barev dostaneme barvu v²slednou, pro kterou
mßme celkem 262144 (=218) mo₧nostφ.
Vstup: AH = 10h ╚φslo slu₧by
AL = ╚φslo funkce
Funkce 00h - Nastavenφ jednoho registru palety
----------------------------------------------
Poznßmka: Tato funkce m∙₧e b²t pou₧ita i k nastavenφ
registr∙ kontroleru atribut∙.
Vstup: AH = 10h ╚φslo slu₧by
AL = 00h ╚φslo funkce
BL = ╚φslo registru palety (00h - 0fh)
= ╚φslo registru atribut∙
10h Registr m≤du
11h Overscan color registr (barva rßmeΦku)
12h Registr p°φstupu do bitov²ch rovin
13h Registr urΦujφcφ posun obrazu doleva
14h Registr v²b∞ru barvy (pouze VGA)
BH = Hodnota nastavovanΘho registru
Funkce 01h - Nastavenφ barvy rßmeΦku
------------------------------------
Poznßmka: Nefunguje na EGA p°i 350 °ßdkov²ch m≤dech.
Vstup: AH = 10h ╚φslo slu₧by
AL = 01h ╚φslo funkce
BH = Barva rßmeΦku
Funkce 02h - Nastavenφ vÜech registr∙ palety
--------------------------------------------
Poznßmka: Tato funkce vy₧aduje, aby byla v pam∞ti ulo₧ena
tabulka o dΘlce 17 byt∙. Prvnφch Üestnßct byte obsahuje
hodnoty barev pro registry palety a 17. byte urΦuje
barvu rßmeΦku.
Vstup: AH = 10h ╚φslo slu₧by
AL = 02h ╚φslo funkce
ES = Segment obsahujφcφ tabulku
DX = Offset prvnφho byte v tabulce
Funkce 03h - Zm∞na intenzity a blikßnφ
--------------------------------------
Poznßmka: Tato funkce urΦuje zda bit 3 nebo 4 atributu bude
urΦovat intenzitu barvy nebo blikßnφ.
Vstup: AH = 10h ╚φslo slu₧by
AL = 03h ╚φslo funkce
BL = 0 - povol intenzitu (zaka₧ blikßnφ)
1 - povol blikßnφ (zaka₧ intenzitu)
O tom jak je informace o barv∞ zak≤dovßna pro karty EGA
a CGA vypovφdajφ nßsledujφcφ tabulky.
CGA:
/-------------------------------\
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---+---+---+---+---+---+---+---|
| X | X | X | I | X | R | G | B |
\-------------------------------/
X - nepou₧ito
I - intenzita (p°φpadn∞ blikßnφ)
R, G, B - Φervenß, zelenß, modrß
a pro EGA:
/-------------------------------\
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---+---+---+---+---+---+---+---|
| X | X | R | G | B | R | G | B |
\-------------------------------/
Standardnφ nastavenφ registr∙ palety:
/--------------------------------------------\
| Barva | EGA | CGA |
| bity | 543210 | 543210 |
|--------------+-----------+-----------------|
| Φernß | 000000 | 000000 |
| modrß | 000001 | 000001 |
| zelenß | 000010 | 000010 |
| tyrkysovß | 000011 | 000011 |
| Φervenß | 000100 | 000100 |
| fialovß | 000101 | 000101 |
| hn∞dß | 010100 | 000110 |
| bφlß | 000111 | 000111 |
| Üedß | 111000 | 010000 |
| sv. modrß | 111001 | 010001 |
| sv. zelenß | 111010 | 010010 |
| sv. tyrk. | 111011 | 010011 |
| sv. Φervenß | 111100 | 010100 |
| sv. fialovß | 111101 | 010101 |
| ₧lutß | 111110 | 010110 |
| bφlß | 111111 | 010111 |
\--------------------------------------------/
pozn. Sv. samoz°ejm∞ znamenß sv∞tle
Na VGA kart∞ obsahuje registr palety ukazetel do registru
DAC, ze kterΘho je teprve zφskßna v²slednß podoba barvy.
Funkce 07h - ZjiÜt∞nφ obsahu jednoho registru palety - pouze VGA
----------------------------------------------------------------
Vstup: AH = 10h ╚φslo slu₧by
AL = 07h ╚φslo funkce
BL = ╚φslo registru k p°eΦtenφ
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
BH = Nastavenφ registru
Funkce 08h - ZjiÜt∞nφ barvy rßmeΦku - pouze VGA
-----------------------------------------------
Vstup: AH = 10h ╚φslo slu₧by
AL = 07h ╚φslo funkce
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
BH = Barva rßmeΦku
Funkce 09h - NaΦtenφ vÜech registr∙ palety - pouze VGA
------------------------------------------------------
Poznßmka: P°ed volßnφm tΘto funkce musφte v pam∞ti vyhradit
17 byte. Do prvnφch Üestnßcti byte ulo₧φ funkce
registry palety a do 17. byte ulo₧φ barvu rßmeΦku.
Vstup: AH = 10h ╚φslo slu₧by
AL = 09h ╚φslo funkce
ES = Segment, ve kterΘm je tabulka
DX = Offset prvnφho byte tabulky
V²stup: Po zavolßnφ slu₧by budou zm∞n∞ny hodnoty tabulky o
dΘlce 17 byte na adrese ES:DX
Funkce 10h - Nastavenφ jednoho DAC registru - pouze VGA
-------------------------------------------------------
Poznßmka: Funkce nastavφ 18bitovou hodnotu p°φsluÜnΘho
DAC registru. JednotlivΘ barevnΘ slo₧ky RGB jsou
ulo₧eny v registrech jako 6bitovΘ hodnoty.
Vstup: AH = 10h ╚φslo slu₧by
AL = 10h ╚φslo funkce
BX = DAC regitr (0-255)
CH = Zelenß slo₧ka
CL = Modrß slo₧ka
DH = ╚ervenß slo₧ka
Funkce 12h - Nastavenφ bloku DAC registr∙ - pouze VGA
-----------------------------------------------------
Poznßmka: Tato funkce nastavuje 18bitovou hodnotu
n∞kolika DAC regsitr∙. V pam∞ti musφ b²t ulo₧ena
tabulka, ve kterΘ jsou postupn∞ za sebou ulo₧eny v
bytech hodnoty pro Φervenou, zelenou a modrou slo₧ku
ka₧dΘho z nastavovan²ch DAC registr∙. Pro jeden
registr jsou tedy pot°eba 3 byte pam∞ti.
Vstup: AH = 10h ╚φslo slu₧ba
AL = 12h ╚φslo funkce
BX = ╚φslo prvnφho p°edefinovßvanΘho DAC registru
(0-255)
CX = PoΦet registr∙ k p°edefinovßnφ (1-256)
ES = Segment tabulky
DX = Offset prvnφho byte tabulky
Funkce 13h - V²b∞r podmno₧iny barev - pouze VGA
-----------------------------------------------
Popis: Tato funkce se sklßdß ze dvou podfunkcφ. Prvnφ z nich
(BL=0) nastavuje poΦet podmno₧in DAC pou₧iteln²ch
v Üestnßctibarevn²ch m≤dech - 4 skupiny po 64 barvßch
nebo 16 skupin po 16 barvßch. Druhß (BL=1) vybφrß
aktivnφ podmno₧inu.
Vstup: AH = 10h ╚φslo slu₧by
AL = 13h ╚φslo funkce
BL = 00h V²b∞r strßnkovacφho re₧imu
BH = 00h 4 skupiny po 64 registrech
01h 16 skupin po 16 registrech
01h V²b∞r aktivnφ podmno₧iny DAC regsitr∙
BH = Aktivnφ podmno₧ina DAC (0-3 nebo 0-15)
Funkce 15h - ZjiÜt∞nφ hodnoty jednoho DAC registru - pouze VGA
--------------------------------------------------------------
Vstup: AH = 10h ╚φslo slu₧by
AL = 15h ╚φslo funkce
BX = ╚φslo DAC registru (0-255)
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
CH = Intenzita zelenΘ slo₧ky
CL = Intenzita modrΘ slo₧ky
DH = Intenzita ΦervenΘ slo₧ky
Funkce 17h - ZjiÜt∞nφ hodnoty n∞kolika DAC registr∙ - pouze VGA
---------------------------------------------------------------
Popis: Tato funkce Φte 18bitovΘ hodnoty n∞kolika DAC
registr∙. Program musφ pro ka₧d² DAC registr vyhradit
3 byte pam∞ti. Po vyvolßnφ slu₧by budou v tabulce za
sebou ulo₧enΘ hodnoty intenzity ΦervenΘ, zelenΘ
a modrΘ slo₧ky jednotliv²ch DAC registr∙.
Vstup: AH = 10h ╚φslo slu₧by
AL = 17h ╚φslo funkce
BX = ╚φslo prvnφho DAC registru, kter² se mß Φφst
(0-255)
CX = PoΦet registr∙ DAC k p°eΦtenφ (1-256)
ES = Segment tabulky
DX = Offset prvnφho byte tabulky
Funkce 18h - Nastavenφ PEL maskovacφho registru - pouze VGA
-----------------------------------------------------------
Popis: Tato funkce nastavuje hodnotu PEL maskovacφho
registru (port 3c6h). VÜechny 8bitovΘ Φφsla barev,
kterΘ majφ b²t zpracovßny DAC, jsou nejprve pomocφ
logickΘ operace AND s PEL maskovacφm registrem
upraveny.
Poznßmka: Nastavenφm PEL maskovacφho registru m∙₧ete omezit
poΦet pou₧φvan²ch barev. BIOS hodnotu tohoto registru
nastavuje na ffh.
Vstup: AH = 10h ╚φslo slu₧by
AL = 18h ╚φslo funkce
BL = Novß hodnota PEL maskovacφho registru
Funkce 19h - ╚tenφ PEL maskovacφho registru - pouze VGA
-------------------------------------------------------
Popis: Tato hodnota Φte aktußlnφ nastavenφ PEL maskovacφho
registru (port 3c6h).
Vstup: AH = 10h ╚φslo slu₧by
AL = 19h ╚φslo funkce
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
BL = Hodnota PEL maskovacφho registru
Funkce 1ah - ZjiÜt∞nφ nastavenφ podmno₧iny DAC registr∙ - pouze VGA
-------------------------------------------------------------------
Popis: Tato funkce vracφ Φφslo aktivnφ podmno₧iny DAC
registr∙ a celkov² poΦet podmno₧in.
Vstup: AH = 10h Φφslo slu₧by
AL = 1ah ╚φslo funkce
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
BH = ╚φslo aktivnφ podmno₧iny DAC registr∙
BL = 00h 4 podmno₧iny DAC registr∙
01h 16 podmno₧in DAC registr∙
Funkce 1bh - P°epoΦφtßnφ DAC registr∙ na odstφny Üedi - pouze VGA
-----------------------------------------------------------------
Popis: Tato funkce p°epoΦφtß definovan² blok DAC registr∙ na
odpovφdajφcφ stupn∞ Üedi. Stßvajφcφ hodnoty barevn²ch
slo₧ek se p°epoΦφtajφ podle nßsledujφcφch vztah∙:
R = 0.299 * R
G = 0.587 * G
B = 0.114 * B
Vstup: AH = 10h ╚φslo slu₧by
AL = 1bh ╚φslo funkce
BX = ╚φslo prvnφho DAC registru k p°epoΦφtßnφ (0-255)
CX = PoΦet registr∙ k p°epoΦφtßnφ (1-256)
Poznßmka: Pokud pou₧φvßte mono monitor a kartu VGA, m∞li
byste do vaÜeho souboru AUTOEXEC.BAT za°adit volßnφ
nßsledujφcφho programu VGAMONO. Ten p°epoΦφtß barvy
na odpovφdajφcφ stupn∞ Üedi. Nestane se vßm pak to,
₧e n∞kterΘ barvy nejsou na monitoru tΘm∞° vid∞t.
Program je mo₧no zkompilovat pomocφ Turbo Assembleru.
Pokud ho ulo₧φte do souboru VGAMONO.ASM, do
spustitelnΘho tvaru ho m∙₧ete p°evΘst pomocφ p°φkaz∙:
TASM vgamono
TLINK vgamono
V²pis programu VGAMONO.ASM:
.MODEL small ; pam∞¥ov² model
.STACK 100h ; definice zßsobnφku
.CODE ; zaΦßtek k≤dovΘho segmentu
; povolenφ p°epoΦφtßvßnφ na stupn∞ Üedi p°i zm∞n∞ m≤du
; slu₧ba 12h, funkce 33h
mov AH, 12h ; Φφslo slu₧by
mov BL, 33h ; Φφslo funkce
mov AL, 00h ; povol p°epoΦφtßvßnφ na stupn∞ Üedi
int 10h ; zavolej slu₧bu
; p°epoΦφtßnφ prvnφch Üesnßcti registr∙ DAC na stupn∞ Üedi
; slu₧ba 10h, funkce 1bh
mov AX, 101bh ; Φφslo slu₧by a funkce
xor BX, BX ; do BX nulu, prvnφ p°edefinovßvan² DAC
; registr bude reg. Φ. 0
mov CX, 10h ; p°edefinovat prvnφch 16 registr∙
int 10h ; volßnφ slu₧by
; nastavenφ zobrazovacφho re₧imu 03h (text 80x25)
mov AX, 0003h ; Φφslo slu₧by a m≤du
int 10h ; volßnφ slu₧by
; ukonΦenφ DOS aplikace (programu VGAMONO.EXE)
mov AH, 4ch
int 21h ; DOS interrupt
END ; konec zdroj. textu
Slu₧ba 11h - Funkce pro prßci se znakov²m generßtorem
=====================================================
Popis: Tato slu₧ba vßm zp°φstupnφ prßci se znakov²mi sadami.
V textov²ch re₧imech m∙₧ete pou₧φvat a₧ 8 znakov²ch
blok∙ (EGA pouze 4 a EGA 64K pouze 1). Ka₧d² takov²to
blok obsahuje definici vÜech 256 znak∙ a vy m∙₧ete
urΦit, kter² blok bude pou₧φvßn k zobrazovßnφ
znak∙ na obrazovku. Dva bloky mohou b²t pou₧φvßny
najednou k zobrazenφ 512 r∙zn²ch znak∙ (v grafick²ch
re₧imech m∙₧ete pracovat pouze s 256 znaky).
ZnakovΘ sady pro grafick² re₧im obsazujφ normalnφ
pam∞¥ RAM nebo ROM. Oproti tomu definice znakov²ch
sad pro textovΘ re₧imy jsou ulo₧eny v bitovΘ rovin∞
2 (ve znakov²ch blocφch). I p°esto musφ b²t po ka₧dΘ
inicializaci zobrazovacφho m≤du znakovß sada znovu
nahrßna do pam∞ti videoadaptΘru.
Znakovß sada je v pam∞ti ulo₧ena jako sekvence byt∙.
Jeden byte odpovφdß jednΘ °ßdce znaku. Bity, kterΘ
jsou v tomto byte nastaveny na jediΦku se zobrazujφ
jako body na obrazovce. Ka₧d² znak je pak definovßn
pomocφ n∞kolika byte (nejΦast∞jφ 8, 14 nebo 16).
Definice jednotliv²ch znak∙ jsou v pam∞ti ulo₧eny
sekvenΦn∞ a to tak, ₧e prvnφ byte definice odpovφdß
hornφ °ßdce znaku s ASCII k≤dem 0 a poslednφ byte
znakovΘ sady odpovφdß spodnφ °ßdce znaku s ASCII
k≤dem 255. V textov²ch re₧imech nemusφ b²t definovßno
vÜech 256 znak∙, staΦφ nadefinovat n∞jakou souvislou
Φßst znakovΘ sady. V grafickΘm re₧imu musφ b²t
definovßno vÜech 256 znak∙.
V definici znaku jsou bity s nejvyÜÜφ vahou
zobrazovßny nejvφce vlevo. Definice znaku "A" pro
znakovou matici 8x8 m∙₧e tedy vypadat nßsledovn∞:
db 00000000b ........
db 00011000b ...**...
db 01100110b .**..**.
db 01100110b .**..**.
db 01100110b .**..**.
db 01111110b .******.
db 01100110b .**..**.
db 01100110b .**..**.
Poznßmka: Znakovß sada bude nastavena do svojφ p∙vodnφ
podoby po ka₧dΘ inicializaci zobrazovacφho re₧imu.
Pokud definujete vlastnφ znakovou sadu, musφte ji
znovu nadefinovat po ka₧dΘ inicializaci m≤du nebo
m∙₧ete zm∞nit p°φsluÜnΘ ·daje v uklßdacφ oblasti
BIOS. Pokud pou₧φvate 512 znak∙, je po inicializaci
m≤du nastavena 256znakovß sada. To m∙₧ete op∞t obejφt
pomocφ parametrickΘ tabulky, na kterou ukazuje BIOS
SAVE_PTR.
Funkce 00h - NaΦtenφ u₧ivatelem definovanΘ znakovΘ sady
-------------------------------------------------------
Popis: Tato funkce nahradφ implicitnφ znakovou sadu (nebo
jejφ Φßst) v n∞kterΘm ze znakov²ch blok∙ u₧ivatelem
definovanou znakovou sadou.
Poznßmka: Tato funkce inicializuje zobrazovacφ m≤d.
Vstup: AH = 11h ╚φslo slu₧by
AL = 00h ╚φslo funkce
BL = ╚φslo znakovΘho bloku k p°edefinovßnφ (0-7, EGA 0-3)
BH = PoΦet byte na jeden znak (nejΦast∞ji 8, 14, 16)
CX = PoΦet definovan²ch znak∙
DX = ASCII k≤d prvnφho znaku v u₧ivatelem definovanΘ
znakovΘ tabulce
ES = Segment, ve kterΘm je u₧ivatelem definovanß
znakovß sada
BP = Offset u₧ivatelovy znakovΘ sady
Funkce 01h - Nahrßnφ 14°ßdkovΘho ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakovΘ sady 8x14 do
n∞kterΘho ze znakov²ch blok∙.
Poznßmka: Tato funkce inicializuje zobrazovacφ m≤d.
Vstup: AH = 11h ╚φslo slu₧by
AL = 01h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x14 (0-7, EGA 0-3)
Funkce 02h - Nahrßnφ 8°ßdkovΘho ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce naΦte definici znakovΘ sady 8x8 do
n∞kterΘho ze znakov²ch blok∙.
Poznßmka: Tato funkce inicializuje zobrazovacφ m≤d.
Vstup: AH = 11h ╚φslo slu₧by
AL = 02h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x8 (0-7, EGA 0-3)
Funkce 03h - Nastavenφ znakovΘ sady pro 512 znak∙
-------------------------------------------------
Popis: Tato funkce vytvo°φ v textov²ch re₧imech znakovou
sadu s 512 znaky. Zm∞nφ v²znam bitu 3 atributu
- mφsto intenzity barvy bude vybφrat ze dvou
znakov²ch blok∙ (ka₧d² po 256 znacφch).
Vstup: AH = 11h ╚φslo slu₧by
AL = 03h ╚φslo funkce
BL = bity 0,1,4 - pou₧φvan² znakov² blok, pokud je
bit 3 atributu = 0
bity 2,3,5 - pou₧φvan² znakov² blok, pokud je
bit 3 atributu = 1
Poznßmka: Bity 4 a 5 pou₧φvß pouze VGA, kterß mß k dispozici
8 znakov²ch blok∙.
Funkce 04 - Nahrßnφ 16°ßdkovΘho ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakovΘ sady 8x16 do
n∞kterΘho ze znakov²ch blok∙.
Poznßmka: Tato funkce inicializuje zobrazovacφ m≤d.
Vstup: AH = 11h ╚φslo slu₧by
AL = 04h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x16 (0-7)
Nßsledujφcφ 4 funkce (10h, 11h, 12h, 14h) jsou velmi podobnΘ
funkcφm (00h, 01h, 02h a 04h). Je tu vÜak n∞kolik rozdφl∙.
Tyto funkce musejφ b²t volßny ihned po nastavenφ
zobrazovacφho m≤du, aktivnφ zobrazovacφ strßnka musφ b²t 0.
Funkce dßle p°epoΦφtß poΦet byte na znak, poΦet °ßdk∙ na
obrazovce a dΘlku zobrazovacφho bufferu. Zm∞nφ takΘ
nßsledujφcφ CRTC registry:
/------------------------------------------------------------\
| Registr | Nov² obsah | V²znam |
|----------+-----------------------------+-------------------|
| 09h1 | poΦet byte na znak - 1 | max. scan °ßdka |
|----------+-----------------------------+-------------------|
| 0ah | poΦet byte na znak - 2 | zaΦßtek kurzoru |
|----------+-----------------------------+-------------------|
| 0bh | 0 | konec kurzoru |
|----------+-----------------------------+-------------------|
| 12h | (poΦet °ßdk∙ + 1) * | vertikßlnφ konec |
| | * (poΦet byte na znak) - 1 | obrazovky |
|----------+-----------------------------+-------------------|
| 14h2 | poΦet byte na znak | pozice podtr₧enφ |
\------------------------------------------------------------/
1) Tento registr je p°epoΦφtßvßn pouze pro m≤d 07h
2) Toto je chyba v EGA/VGA BIOS. M∞la by zde b²t
hodnota o 1 ni₧Üφ. P°i tomto nastavenφ nebude
podtr₧enφ (pokud je to nastaveno pomocφ atributu)
viditelnΘ.
Funkce 10h - NaΦtenφ u₧ivatelem definovanΘ znakovΘ sady
-------------------------------------------------------
Popis: Tato funkce nahradφ implicitnφ znakovou sadu (nebo
jejφ Φßst) v n∞kterΘm ze znakov²ch blok∙ u₧ivatelem
definovanou znakovou sadou.
Vstup: AH = 11h ╚φslo slu₧by
AL = 10h ╚φslo funkce
BL = ╚φslo znakovΘho bloku k p°edefinovßnφ (0-7, EGA 0-3)
BH = PoΦet byte na jeden znak (nejΦast∞ji 8, 14, 16)
CX = PoΦet definovan²ch znak∙
DX = ASCII k≤d prvnφho znaku v u₧ivatelem definovanΘ
znakovΘ tabulce
ES = Segment, ve kterΘm je u₧ivatelem definovanß
znakovß sada
BP = Offset u₧ivatelovy znakovΘ sady
Funkce 11h - Nahrßnφ 14°ßdkovΘho ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakovΘ sady 8x14 do
n∞kterΘho ze znakov²ch blok∙.
Vstup: AH = 11h ╚φslo slu₧by
AL = 11h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x14 (0-7, EGA 0-3)
Funkce 12h - Nahrßnφ 8°ßdkovΘho ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce naΦte definici znakovΘ sady 8x8 do
n∞kterΘho ze znakov²ch blok∙.
Vstup: AH = 11h ╚φslo slu₧by
AL = 12h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x8 (0-7, EGA 0-3)
Funkce 14 - Nahrßnφ 16°ßdkovΘho ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakovΘ sady 8x16 do
n∞kterΘho ze znakov²ch blok∙.
Vstup: AH = 11h ╚φslo slu₧by
AL = 14h ╚φslo funkce
BL = ╚φslo znakovΘho bloku kam se mß naΦφst ROM font
8x16 (0-7)
Nßsledujφcφ funkce by m∞ly b²t pou₧φvßny ihned po
inicializaci grafick²ch re₧im∙ (p°edchozφ funkce pracovaly
pouze v textov²ch re₧imech).
Funkce 20h - Nastav u₧ivatelsk² font 8x8 v grafice
--------------------------------------------------
Popis: Tato funkce nastavφ INT 1fh tak, aby ukazoval na
znakovou sadu 8x8 na znaky s ASCII k≤dy 128-255.
Pou₧φvß se p°evß₧n∞ v kompatibilnφch re₧imech.
Nastavφ INT 1fh na hodnotu ulo₧enou ES:BP.
Vstup: AH = 11h ╚φslo slu₧by
AL = 20h ╚φslo funkce
ES = Segment obsahujφcφ definovanou znakovou sadu
BP = Offset znakovΘ sady
Function 21h - Nastavenφ u₧ivatelskΘho fontu pro grafickΘ re₧imy
----------------------------------------------------------------
Popis: Tato funkce nastavφ INT 43h na u₧ivatelskou znakovou
sadu.
Vstup: AH = 11h ╚φslo slu₧by
AL = 21h ╚φslo funkce
BL = PoΦet °ßdk∙ na obrazovce
0 - u₧ivatelem definovßno (v registru DL)
1 - 14 °ßdek
2 - 25 °ßdek
3 - 43 °ßdek
CX = PoΦet byte na znak
ES = Segment obsahujφcφ u₧ivatelskou znakovou sadu
BP = Offset u₧ivatelskΘ znakovΘ sady
Funkce 22h - Nastavφ ROM font 8x14 pro grafiku
----------------------------------------------
Popis: Tato funkce nastavφ INT 43h na znakovou sadu 8x14
v ROM.
Vstup: AH = 11h ╚φslo slu₧by
AL = 22h ╚φslo funkce
BL = PoΦet °ßdk∙ na obrazovce
0 - u₧ivatelem definovßno (v registru DL)
1 - 14 °ßdek
2 - 25 °ßdek
3 - 43 °ßdek
Funkce 23h - Nastavφ ROM font 8x8 pro grafiku
---------------------------------------------
Popis: Tato funkce nastavφ INT 43h na znakovou sadu 8x8 v
ROM.
Vstup: AH = 11h ╚φslo slu₧by
AL = 23h ╚φslo funkce
BL = PoΦet °ßdk∙ na obrazovce
0 - u₧ivatelem definovßno (v registru DL)
1 - 14 °ßdek
2 - 25 °ßdek
3 - 43 °ßdek
Funkce 24h - Nastavφ ROM font 8x16 pro grafiku
----------------------------------------------
Popis: Tato funkce nastavφ INT 43h na znakovou sadu 8x16 v
ROM.
Vstup: AH = 11h ╚φslo slu₧by
AL = 24h ╚φslo funkce
BL = PoΦet °ßdk∙ na obrazovce
0 - u₧ivatelem definovßno (v registru DL)
1 - 14 °ßdek
2 - 25 °ßdek
3 - 43 °ßdek
Funkce 30h - Zjiܥuje informace o fontu
---------------------------------------
Popis: Tato funkce vracφ informace o po₧adovanΘm fontu
(znakovΘ sad∞).
Poznßmka: Fonty 9x14 a 9x16 jsou a₧ na definice n∞kter²ch
znak∙ shodnΘ s fonty 8x14 a 8x16. Pouze u grafick²ch
symbol∙ (rßmeΦky a blokovΘ znaky) je osm² bod
kopφrovßn na pozici devßtΘho, aby rßmeΦky nebyly
p°eruÜovanΘ. U ostatnφch znak∙ z∙stßvß mφsto
devßtΘho bodu v₧dy volnΘ.
Vstup: AH = 11h ╚φslo slu₧by
AL = 30h ╚φslo funkce
BH = 00h Zjisti pointer na INT 1fh font
01h Zjisti pointer na INT 43h font
02h Zjisti pointer na ROM 8x14 font
03h Zjisti pointer na ROM 8x8 font
04h Zjisti pointer na ROM 8x8 font (hornφch 128
znak∙)
05h Zjisti pointer na ROM 9x14 font
06h Zjisti pointer na ROM 8x16 font
07h Zjisti pointer na ROM 9x16 font
V²stup: CX = PoΦet byte na znak fontu, kter² je na obrazovce
(ne toho, na kter² se dotazujeme)
DL = PoΦet °ßdk∙ na obrazovce - 1 (VGA)
PoΦet °ßdk∙ na obrazovce (EGA)
ES = Segment ulo₧enφ po₧adovanΘho fontu
BP = Offset ulo₧enφ po₧adovanΘho fontu
Slu₧ba 12h - Alternativnφ v²b∞r
===============================
Popis: Tato slu₧ba obasahuje funkce, kterΘ zjiÜ¥ujφ aktußlnφ
nastavenφ adaptΘru a mohou instalovat novou rutinu
pro obsluhu stisknutφ klßvesy PrtScr. Na adaptΘrech
VGA pak obsahuje jeÜt∞ n∞kolik dopl≥kov²ch funkcφ.
Vstup: AH = 12h ╚φslo slu₧by
Funkce 10h - ZjiÜt∞nφ informace o EGA
-------------------------------------
Popis: Zjistφ aktußlnφ konfiguraci grafickΘ karty VGA nebo
EGA. O VGA vÜak nezjistφ vÜechny ·daje, pouze ty,
kterß mß VGA spoleΦnΘ s EGA.
Vstup: AH = 12h ╚φslo slu₧by
BL = 10h ╚φslo funkce
V²stup: BH = 0 - aktivnφ je barevn² m≤d (registry adaptΘru
jsou na portech 3d?h)
1 - aktivnφ je monochromatick² m≤d (registry
adaptΘru jsou na portech 3b?h)
BL = Velikost instalovanΘ pam∞ti na videokart∞
0 = 64K
1 = 128K
2 = 192K
3 = 256K
CH = Obsahuje kopii Feature Control registru
CL = Nastavenφ switch∙ na kart∞ EGA
(1 = OFF, 0 = ON)
bit 0 - switch 1
bit 1 - switch 2
bit 2 - switch 3
bit 3 - switch 4
Funkce 20h - Vyber alternativnφ rutinu pro tisk obrazovky
---------------------------------------------------------
Popis: Volßnφ tΘto funkce nahradφ rutinu pro tisk obrazovky
z ROM BIOS rutinou z EGA/VGA BIOS, kterß zvlßdß tisk
i pro zobrazovacφ re₧imy s vφce ne₧ 25 °ßdky.
Vstup: AH = 12h ╚φslo slu₧by
BL = 20h ╚φslo funkce
Funkce 30h - Nastavenφ vertikßlnφho rozliÜenφ - pouze VGA
---------------------------------------------------------
Popis: Tato funkce nastavφ vertikßlnφ rozliÜenφ pro
textov² re₧im, kter² bude inicializovßn. Tato funkce
umo₧≥uje i na lepÜφch grafick²ch adaptΘrech,
dosßhnout stejnΘ kvality rozliÜenφ jako na t∞ch
starÜφch. CGA pou₧φvß 200 °ßdek, MDA a EGA 350 a
koneΦn∞ VGA 400 °ßdek.
Vstup: AH = 12h ╚φslo slu₧by
BL = 30h ╚φslo funkce
AL = 0 - 200 °ßdek
1 - 350 °ßdek
2 - 400 °ßdek
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 31h - Zapnutφ/vypnutφ nahrßnφ palety - pouze VGA
-------------------------------------------------------
Popis: Tato funkce umo₧≥uje zvolit, zda p°i inicializaci
zobrazovacφho re₧imu bude nahrßna standardnφ paleta a
nebo se v Φinnosti ponechß aktußlnφ paleta. Na
kartßch EGA je aktußlnφ paleta v₧dy p°epsßna
standardnφ paletou.
Vstup: AH = 12h ╚φslo slu₧by
BL = 31h ╚φslo funkce
AL = 0 - Povol p°episovßnφ aktußlnφ palety
1 - Zachovßvej aktußlnφ paletu
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 32h - Zapnutφ/vypnutφ p°φstupu do videopam∞ti - pouze VGA
----------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje p°φstup do
videopam∞ti a k registr∙m videoadaptΘru. Pokud se
p°φstup do pam∞ti zakß₧e, vzhled obrazovky ani obsah
videopam∞ti se nezm∞nφ, ale zßpisy a Φtenφ do
videopam∞ti budou ignorovßny do tΘ doby, ne₧ se
zßpis povolφ.
Vstup: AH = 12h ╚φslo slu₧by
BL = 32h ╚φslo funkce
AL = 0 - povol zßpis
1 - zaka₧ zßpis
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 33h - Zapnutφ/vypnutφ p°epoΦφtßvßnφ na stupn∞ Üedi - pouze VGA
---------------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje p°epoΦφtßvßnφ barev
na odstφny Üedi po inicializaci zobrazovacφho m≤du a
po zm∞n∞ registr∙ palety. Stßvajφcφ hodnoty barevn²ch
slo₧ek budou urΦeny nßsledujφcφmi vztahy:
R = 0.299 * R
G = 0.587 * G
B = 0.114 * B
Vstup: AH = 12h ╚φslo slu₧by
BL = 33h ╚φslo funkce
AL = 0 - povol p°epoΦφtßvßnφ na stupn∞ Üedi
1 - zaka₧ p°epoΦφtßvßnφ na stupn∞ Üedi
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 34h - Zapnutφ/vypnutφ emulace kurzoru - pouze VGA
--------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje emulaci textovΘho
kurzoru. Pokud je emulace zapnuta, je informace o
zaΦßtku a konci kurzoru p°epoΦφtßna z p∙vodnφho
rozsahu CGA 8 °ßdk∙ na znak na aktußlnφ poΦet °ßdk∙
na znak. Pokud je emulace vypnutß, hodnoty se
nep°epoΦφtßvajφ a bez ·prav se pou₧ijφ pro velikost
kurzoru.
Vstup: AH = 12h ╚φslo slu₧by
BL = 34h ╚φslo funkce
AL = 0 - povol emulaci kurzoru
1 - zaka₧ emulaci kurzoru
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 35h - P°epφnßnφ monitor∙ - pouze VGA
-------------------------------------------
Popis: Tato funkce p°epφnß mezi adaptΘrem umφst∞n²m na desce
poΦφtaΦe a externφm, pokud mohou nastat n∞jakΘ
problΘmy s adresovßnφm nebo p°φstupem k port∙m. Pokud
jsou v poΦφtaΦi dva adaptΘry, externφ je pou₧it jako
defaultnφ adaptΘr.
P°i prvnφ zm∞n∞ adptΘru se musφ volat dv∞ funkce po
sob∞ (AL=0 a AL=1). Pro dalÜφ p°epφnßnφ se pou₧φvajφ
op∞t dv∞ volßnφ. Nejprve AL=2, k vypnutφ aktivnφho
adaptΘru a potΘ AL=3, k zapnutφ neaktivnφho adaptΘru.
Program musφ v pam∞ti vyhradit dva 128 byte dlouhΘ
buffery pro uklßdßnφ stavov²ch informacφ adaptΘr∙.
Vstup: AH = 12h ╚φslo slu₧by
BL = 35h ╚φslo funkce
AL = 0 - Prvnφ vypnutφ externφho adaptΘru
ES:DX - ukazatel na 128 byte dlouh² buffer
pro ulo₧enφ stavov²ch informacφ adaptΘru
1 - Prvnφ zapnutφ grafickΘ karty na desce
2 - Vypni aktivnφ adaptΘr
ES:DX - ukazatel na 128 byte dlouh² buffer
pro ulo₧enφ stavov²ch informacφ adaptΘru
3 - Zapni neaktivnφ adaptΘr
ES:DX - ukazatel na 128 byte dlouh² buffer
s d°φve ulo₧en²mi stavov²mi informacemi
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Funkce 36h - Zapnutφ/vypnutφ obrazovky - pouze VGA
--------------------------------------------------
Popis: Tato funkce zapφnß a vypφnß obrazovku. M∙₧e b²t
pou₧ita nap°φklad jako jednoduch² Üet°iΦ obrazovky
(screen saver). Nebo m∙₧ete vypnout obrazovku,
vykreslit n∞jak² slo₧it∞jÜφ obrßzek. Pak obrazovku
zapnout a obrßzek se objevφ cel² najednou bez
pomalΘho vykreslovßnφ.
Vstup: AH = 12h ╚φslo slu₧by
BL = 36h ╚φslo funkce
AL = 0 - Zapnutφ obrazovky (normßln∞)
1 - Vypnutφ obrazovky
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 12h Pokud je funkce podporovßna adaptΘrem a
byla ·sp∞Ün∞ provedena.
Slu₧ba 13h - Vypsßnφ znakovΘho °et∞zce na obrazovku
===================================================
Popis: Tato slu₧ba zobrazφ °et∞zec znak∙ v pam∞ti na
obrazovku. Jsou dv∞ mo₧nosti: °et∞zec v pam∞ti
obsahuje pouze znaky, jejich atribut bude urΦen
registrem BL. Druhou mo₧nostφ je, ulo₧it do pam∞ti
posloupnost znak, atribut, znak, atribut... Ka₧d²
znak pak mß definovßn sv∙j vlastnφ atribut. M∙₧ete
takΘ urΦit zda se mß kurzor p°esunout na konec
vypisovanΘho °et∞zce nebo jestli mß z∙stat na svΘ
p∙vodnφ pozici.
Tato slu₧ba je podobnß slu₧b∞ 0eh. ╪φdφcφ znaky jako
07h bell, 0dh CR, 0ah LF, 08h BS nejsou zobrazovßny
jako znaky, ale je provedena jim odpovφdajφcφ Φinnost
(pφpnutφ, p°esun kurzoru na zaΦßtek °ßdky, posun
kurzoru o °ßdek dol∙ a smazßnφ poslednφho znaku).
Vstup: AH = 13h ╚φslo slu₧by
AL = bit 0 = 0 - kurzor nenφ p°esouvßn
= 1 - kurzor je p°esunut na konec °et∞zce
bit 1 = 0 - °et∞zec obsahuje pouze znaky
1 - °et∞zec obsahuje i atributy
BL = Atribut znak∙ °et∞zce (Pokud bit 1 registru AL
je 0)
BH = ╚φslo obrazovΘ strßnky (viz. slu₧ba 05h)
CX = PoΦet znak∙ (nezapoΦφtavajφ se atributy)
DX = Sou°adnice prvnφho znaku
DH - ╪ßdka
DL - Sloupec
ES = Segment °et∞zce k vypsßnφ
BP = Offset °et∞zce k vypsßnφ
Slu₧ba 1ah - ╚tenφ/zßpis kombinace monitor∙ - pouze VGA
=======================================================
Popis: Tato umo₧≥uje zjistit a nastavit k≤dy, kterΘ urΦujφ
typ primßrnφho a sekundßrnφho displeje.
Vstup: AH = 1ah ╚φslo slu₧by
Tabulka k≤d∙ kombinacφ monitor∙:
/---------------------------------------\
|K≤d | Druh monitoru |
|----+----------------------------------|
|00h | Monitor nenφ p°ipojen |
|01h | MDA |
|02h | CGA |
|04h | EGA s barevn²m monitorem |
|05h | EGA s monochromatick²m monitorem |
|06h | PGC |
|07h | VGA s monochromatick²m monitorem |
|08h | VGA s barevn²m monitorem |
|0ah | MCGA s digitßlnφm monitorem |
|0bh | MCGA s monochromatick²m monitorem|
|0ch | MCGA s barevn²m monitorem |
|ffh | Neznßm² typ monitoru |
\---------------------------------------/
Funkce 00h - ╚tenφ kombinace monitor∙ - pouze VGA
-------------------------------------------------
Popis: Zjistφ aktußlnφ konfiguraci monitor∙.
Vstup: AH = 1ah ╚φslo slu₧by
AL = 00h ╚φslo funkce
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1ah Volßnφ funkce prob∞hlo ·sp∞Ün∞
BH = K≤d sekundßrnφho displeje
BL = K≤d aktivnφho displeje
Funkce 01h - Nastavenφ kombinace monitor∙ - pouze VGA
-----------------------------------------------------
Popis: Nastavφ aktußlnφ konfiguraci monitor∙.
Vstup: AH = 1ah ╚φslo slu₧by
AL = 01h ╚φslo funkce
BH = K≤d sekundßrnφho displeje
BL = K≤d aktivnφho displeje
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1ah Volßnφ funkce prob∞hlo ·sp∞Ün∞
Slu₧ba 1bh - ZjiÜt∞nφ stavov²ch informacφ - pouze VGA
=====================================================
Popis: Tato slu₧ba zjistφ informace o aktußlnφm nastavenφ
grafickΘho adaptΘru. P°ed volßnφm tΘto slu₧by musφte
v pam∞ti vyhradit 64 byte pro ulo₧enφ informacφ.
Vstup: AH = 1bh ╚φslo slu₧by
BX = Typ implementace (musφ b²t 0)
ES = Segment, ve kterΘm je vymezen²ch 64 byte pam∞ti
DI = Offset 1. byte vymezenΘ pam∞ti
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1bh Volßnφ funkce prob∞hlo ·sp∞Ün∞
Formßt tabulky na adrese ES:DI (dΘlka 64 byte):
/-----------------------------------------------------------\
|Offset | Velikost | Popis |
|-------+----------+----------------------------------------|
| 00h | 1 word | Offset statickΘ tabulky re₧imu |
|-------+----------+----------------------------------------|
| 02h | 1 word | Segment statickΘ tabulky re₧imu |
|-------+----------+----------------------------------------|
| 04h | 1 byte | ╚φslo aktußlnφho zobrazovacφho re₧imu |
|-------+----------+----------------------------------------|
| 05h | 1 word | PoΦet zobraziteln²ch textov²ch sloupc∙ |
|-------+----------+----------------------------------------|
| 07h | 1 word | Velikost zabrazovanΘ pam∞ti video |
| | | adaptΘru |
|-------+----------+----------------------------------------|
| 09h | 1 word | PoΦßteΦnφ adresa videopam∞ti |
|-------+----------+----------------------------------------|
| 0bh | 1 word | Pozice kurzoru v zobrazovacφ strßnce 0 |
| | | (VyÜÜφ byte - °ßdka, |
| | | ni₧₧sφ byte - sloupec) |
|-------+----------+----------------------------------------|
| 0dh | 1 word | Pozice kurzoru v zobrazovacφ strßnce 1 |
|-------+----------+----------------------------------------|
| 0fh | 1 word | Pozice kurzoru v zobrazovacφ strßnce 2 |
|-------+----------+----------------------------------------|
| 11h | 1 word | Pozice kurzoru v zobrazovacφ strßnce 3 |
|-------+----------+----------------------------------------|
| 13h | 1 word | Pozice kurzoru v zobrazovacφ strßnce 4 |
|-------+----------+----------------------------------------|
| 15h | 1 word | Pozice kurzoru v zobrazovacφ strßnce 5 |
|-------+----------+----------------------------------------|
| 17h | 1 word | Pozice kurzoru v zobrazovacφ strßnce 6 |
|-------+----------+----------------------------------------|
| 19h | 1 word | Pozice kurzoru v zobrazovacφ strßnce 7 |
|-------+----------+----------------------------------------|
| 1bh | 1 byte | PoΦßteΦnφ °ßdka kurzoru |
|-------+----------+----------------------------------------|
| 1ch | 1 byte | Koncovß °ßdka kurzoru |
|-------+----------+----------------------------------------|
| 1dh | 1 byte | Aktivnφ zobrazovacφ strßnka |
|-------+----------+----------------------------------------|
| 1eh | 1 word | Adresa port∙, na kter²ch jsou mapovßny |
| | | CRTC registry |
|-------+----------+----------------------------------------|
| 20h | 1 byte | Hodnota registru 3?8h |
|-------+----------+----------------------------------------|
| 21h | 1 byte | Hodnota registru 3?9h |
|-------+----------+----------------------------------------|
| 22h | 1 byte | PoΦet zobraziteln²ch textov²ch °ßdek |
|-------+----------+----------------------------------------|
| 23h | 1 byte | V²Üka znaku v pixelech (poΦet byte na |
| | | znak) |
|-------+----------+----------------------------------------|
| 25h | 1 byte | K≤d primßrnφho displeje |
| | | (viz. tabulka k≤du kombinacφ monitor∙) |
|-------+----------+----------------------------------------|
| 26h | 1 byte | K≤d sekundßrnφho displeje |
| | | (viz. tabulka k≤du kombinacφ monitor∙) |
|-------+----------+----------------------------------------|
| 27h | 1 word | PoΦet barev zobraziteln²ch v aktußlnφm |
| | | zobrazovacφm re₧imu |
|-------+----------+----------------------------------------|
| 29h | 1 byte | PoΦet dostupn²ch zobrazovacφch strßnek |
| | | v aktußlnφm zobrazovacφm re₧imu |
|-------+----------+----------------------------------------|
| 2ah | 1 byte | PoΦet rastrov²ch °ßdek na obrazovce: |
| | | 0 - 200 °ßdek |
| | | 1 - 350 °ßdek |
| | | 2 - 400 °ßdek |
| | | 3 - 480 °ßdek |
|-------+----------+----------------------------------------|
| 2bh | 1 byte | ╚φslo primßrnφho znakovΘho bloku |
|-------+----------+----------------------------------------|
| 2ch | 1 byte | ╚φslo sekundßrnφho znakovΘho bloku |
|-------+----------+----------------------------------------|
| 2dh | 1 byte | Informace o obrazovΘm systΘmu: |
| | | Bit Popis (kdy₧ bit = 1) |
| | | --- ---------------------------------|
| | | 0 Podporuje vÜechny m≤dy |
| | | 1 Barvy jsou p°epoΦφtßvßny na |
| | | odstφny Üedi |
| | | 2 P°ipojen je monochromatick² |
| | | monitor |
| | | 3 Nenφ nahrßvßna standardnφ paleta |
| | | 4 Emulace CGA kurzoru |
| | | 5 1 = blikßnφ, 0 = intenzita barvy |
| | | pozadφ |
| | | 6-7 Vyhrazeno |
|-------+----------+----------------------------------------|
| 2eh | 3 byte | Vyhrazeno |
|-------+----------+----------------------------------------|
| 31h | 1 byte | Velikost dostupnΘ videopam∞ti |
| | | 0 - 64K |
| | | 1 - 128K |
| | | 2 - 192K |
| | | 3 - 256K |
|-------+----------+----------------------------------------|
| 32h | 1 byte | Dopl≥kovΘ informace o zobrazovaΦi |
| | | Bit Popis (kdy₧ bit = 1) |
| | | --- ---------------------------------|
| | | 0 Je pou₧φvßna 512znakovß sada |
| | | 1 Je pou₧φvßna oblast pro ulo₧enφ |
| | | palety |
| | | 2 Je pou₧φvßna u₧ivatelem |
| | | definovanß znakovß sada |
| | | 3 V grafickΘm re₧imu je pou₧φvßna |
| | | u₧ivatelem definovanß znakovß |
| | | sada |
| | | 4 Je pou₧φvßna u₧ivatelem |
| | | definovanß paleta |
| | | 5 Je pou₧φvßna podpora |
| | | dvou-monitorovΘho systΘmu |
| | | 6-7 Rezervovßno |
|-------+----------+----------------------------------------|
| 33h | 13 byte | Rezervovßno |
\-----------------------------------------------------------/
Formßt statickΘ tabulky re₧imu (dΘlka 16 byte):
/-----------------------------------------------------------\
|Offset | Velikost| Popis |
|-------+---------+-----------------------------------------|
| 00h | 1 byte | PodporovanΘ videom≤dy |
| | | bit 0 = 1 M≤d 0 je podporovßn |
| | | bit 1 = 1 M≤d 1 je podporovßn |
| | | bit 2 = 1 M≤d 2 je podporovßn |
| | | bit 3 = 1 M≤d 3 je podporovßn |
| | | bit 4 = 1 M≤d 4 je podporovßn |
| | | bit 5 = 1 M≤d 5 je podporovßn |
| | | bit 6 = 1 M≤d 6 je podporovßn |
| | | bit 7 = 1 M≤d 7 je podporovßn |
|-------+---------+-----------------------------------------|
| 01h | 1 byte | PodporovanΘ videom≤dy |
| | | bit 0 = 1 M≤d 8 je podporovßn |
| | | bit 1 = 1 M≤d 9 je podporovßn |
| | | bit 2 = 1 M≤d 0ah je podporovßn |
| | | bit 3 = 1 M≤d 0bh je podporovßn |
| | | bit 4 = 1 M≤d 0ch je podporovßn |
| | | bit 5 = 1 M≤d 0dh je podporovßn |
| | | bit 6 = 1 M≤d 0eh je podporovßn |
| | | bit 7 = 1 M≤d 0fh je podporovßn |
|-------+---------+-----------------------------------------|
| 02h | 1 byte | PodporovanΘ videom≤dy |
| | | bit 0 = 1 M≤d 10h je podporovßn |
| | | bit 1 = 1 M≤d 11h je podporovßn |
| | | bit 2 = 1 M≤d 12h je podporovßn |
| | | bit 3 = 1 M≤d 13h je podporovßn |
|-------+---------+-----------------------------------------|
| 03h | 4 byte | Rezervovßno |
|-------+---------+-----------------------------------------|
| 07h | 1 byte | PoΦet rastrov²ch °ßdek v textov²ch |
| | | re₧imech: bit 0 = 1 - 200 °ßdek |
| | | bit 1 = 1 - 350 °ßdek |
| | | bit 2 = 1 - 400 °ßdek |
|-------+---------+-----------------------------------------|
| 08h | 1 byte | Celkov² poΦet znakov²ch blok∙ v |
| | | textov²ch re₧imech |
|-------+---------+-----------------------------------------|
| 09h | 1 byte | Maximßlnφ poΦet najednou pou₧φvan²ch |
| | | znakov²ch blok∙ v textov²ch re₧imech |
|-------+---------+-----------------------------------------|
| 0ah | 1 byte | Dopl≥kovΘ informace |
| | | Bit Popis (kdy₧ bit = 1) |
| | | --- ---------------------------------|
| | | 0 Lze pou₧φvat vÜechny zobr. m≤dy |
| | | 1 Je podporovßno p°epoΦφtßvßnφ |
| | | barev na odstφny Üedi |
| | | 2 Je podporovßna u₧ivatelem |
| | | definovanß znakovß sada |
| | | 3 Je podporovanß u₧ivatelem |
| | | definovanß paleta |
| | | 4 Je podporovßna emulace CGA |
| | | kurzoru |
| | | 5 Jsou p°φtomny registry palety EGA|
| | | 6 Jsou p°φtomny registry palety DAC|
| | | 7 Je podporovßno n∞kolik sad DAC |
| | | registr∙ |
|-------+---------+-----------------------------------------|
| 0bh | 1 byte | Dopl≥kovΘ informace |
| | | Bit Popis (kdy₧ bit = 1) |
| | | --- ---------------------------------|
| | | 0 Podpora sv∞telnΘho pera |
| | | 1 Podpora slu₧by 1ch |
| | | 2 Podpora volby mezi intenzitou |
| | | pozadφ a blikßnφm |
| | | 3 Je podporovßn k≤d kombinace |
| | | monitor∙ |
| | | 4-7 Rezervovßno |
|-------+---------+-----------------------------------------|
| 0ch | 1 word | Rezervovßno |
|-------+---------+-----------------------------------------|
| 0eh | 1 byte | P°φznaky uchovßvßnφ nastavenφ |
| | | Bit Popis (kdy₧ bit = 1) |
| | | --- ---------------------------------|
| | | 0 Uchovßvß se 512znakovß sada |
| | | 1 Uchovßvß se aktußlnφ paleta |
| | | 2 U₧ivatelem definovanß zn. sada |
| | | 3 U₧ivatelem definovanß zn. sada v |
| | | grafick²ch re₧imech |
| | | 4 U₧ivatelem definovanß paleta |
| | | 5 Podpora dvou-monitorovΘho systΘmu|
| | | 6-7 Rezervovßno |
|-------+---------+-----------------------------------------|
| 0fh | 1 byte | Rezervovßno |
\-----------------------------------------------------------/
Slu₧ba 1ch - Ulo₧enφ/obnovenφ aktußlnφho nastavenφ adaptΘru - pouze VGA
=======================================================================
Popis: Tato slu₧ba uklßdß a op∞t obnovuje nastavenφ
grafickΘho adaptΘru a aktußlnφho zobrazovacφho re₧imu
(BIOS oblast, registry adaptΘru, registry palety).
Program musφ v pam∞ti vyhradit mφsto pro ulo₧enφ
informacφ. Po₧adovanou velikost bufferu vracφ funkce
00h.
Poznßmka: Registr CX definuje co se bude uklßdat. Ka₧d² bit
definuje jednu Φßst k uklßdßnφ. Pro ulo₧enφ vÜech t°φ
skupin informacφ pou₧ijte CX = 7.
Funkce 00h - ZjiÜt∞ni velikosti bufferu - pouze VGA
---------------------------------------------------
Vstup: AH = 1ch ╚φslo slu₧by
AL = 00h ╚φslo funkce
CX = UrΦenφ informacφ k ulo₧enφ/nastavenφ
(pokud se bit = 1, s informacφ se pracuje)
Bit 0 - registry grafickΘho adaptΘru
Bit 1 - datovß oblast BIOS
Bit 2 - registry palety a DAC registry
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1ch Funkce je podporovßna
BX = Velikost bufferu (v 64 byte slouh²ch blocφch)
Funkce 01h - Ulo₧enφ nastavenφ - pouze VGA
------------------------------------------
Vstup: AH = 1ch ╚φslo slu₧by
AL = 01h ╚φslo funkce
ES = Segment uklßdacφ oblasti (bufferu)
BX = Offset uklßdacφ oblasti (bufferu)
CX = UrΦenφ informacφ k ulo₧enφ/nastavenφ
(pokud se bit = 1, s informacφ se pracuje)
Bit 0 - registry grafickΘho adaptΘru
Bit 1 - datovß oblast BIOS
Bit 2 - registry palety a DAC registry
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1ch Funkce je podporovßna
Funkce 02h - Obnovenφ nastavenφ - pouze VGA
-------------------------------------------
Vstup: AH = 1ch ╚φslo slu₧by
AL = 02h ╚φslo funkce
ES = Segment uklßdacφ oblasti (bufferu)
BX = Offset uklßdacφ oblasti (bufferu)
CX = UrΦenφ informacφ k ulo₧enφ/nastavenφ
(pokud se bit = 1, s informacφ se pracuje)
Bit 0 - registry grafickΘho adaptΘru
Bit 1 - datovß oblast BIOS
Bit 2 - registry palety a DAC registry
V²stup: Bude v registrech obsa₧en po zavolßnφ slu₧by
AL = 1ch Funkce je podporovßna
[PokraΦovßnφ] |
[Obsah]
Copyright © Ji°φ Kosek