Programování registrů
Zobrazovací adaptéry EGA a VGA mají několik registrů,
které ovlivňují funcki těchto adaptérů. O některých z těchto
registrů jsme se již zmínili v popisu přístupu do paměti
adaptéru. Registry lze rozdělit do šesti skupin:
- externí registry (External registers)
- registry sequenceru (Sequencer registers)
- CRTC registry (CRTC = Cathode Ray Tube Controller -
kontroler obrazovky)
- registry grafického kontroleru (Grapics Controller
registers)
- atributové registry (Attribute registers)
- DAC (Digital to Analog Converter = číslicově
anologový převodník) registry - ty má pouze VGA
Registry patřící do téže skupiny mají většinou úzce spjatý
význam a ovládají jednu z částí tvorby a zobrazovaní dat na
obrazovce. Sequencer řídí tok dat mezi videopamětí a
atributovým kontrolerem. Atributový kontroler má na starosti
práci s barvou a paletami barev. DAC převádí v kartě VGA
digitální informaci o barvě na příslušná napětí pro
analogový monitor. Pomocí CRTC registrů lze ovládat časování
obrazovky. Grafický kontroler ovládá módy přístupu k
obrazové paměti. Externí registry zajišťují několik funkcí,
které nejsou zařazeny v ostatních skupinách registrů. DAC
regsitry jsou přítomny pouze na kartách VGA, neboť EGA
používá digitální přenos obrazových informací do monitoru.
K většině registrů (výjimku tvoří externí registry) se
přistupuje nepřímo. Každá skupina registrů má vlastní
adresový a datový registr. Tyto dva registry jsou mapovány
na vstupně-výstupních portech procesoru. Pokud chcete
přistupovat k nějakému registru, musíte nejprve na příslušný
port náležící adresovému registru zapsat index vámi
požadovaného registru a pak můžete na portu odpovídajícímu
datovému registru pracovat s vámi požadovaným registrem.
Pokud tedy chcete zapsat hodnotu 10 do Map mask registru
(ten má index 2 v sequenceru), můžete použít následující
rutinu:
mov DX, 3c4h ;číslo portu adresového registru sequenceru
mov AL, 2 ;index Map mask registru
out DX, AL ;zapsání hodnoty na port
inc DX ;v DX je port datového registru sequenceru
mov AL, 10 ;požadovaná hodnota pro Map mask
out DX, AL ;zapsání hodnoty v AL na port
Port adresového i datového registru leží hned vedle sebe.
Mikroprocesory 80x86 umožňují pomocí jedné instrukce
(OUT DX, AX) zápis na dva následující porty. Většina
grafických karet umožňuje přístup k registrům pomocí této
programovací techniky. Obecně pak lze psát:
mov DX, Port adresního registru
mov AL, Index požadovaného registru
mov AH, Hodnota zapisovaná do požadovaného registru
out DX, AX
Výše uvedená rutina modifikující Map mask registr lze
použitím této finty přepsat do tvaru krátké rutinky:
mov DX, 3c4h
mov AX, 2 + 256 * 10
out DX, AX
Adresový registr si uchvává svou hodnotu až do další změny.
Modifikujete-li tedy pouze jeden registr ze skupiny stačí
nastavit adresní registr jednou a měnit pouze hodnoty
zapisované do datového registru. Změnu adresního registru je
v takových případech výhodné umístit vně cyklu. Můsíte však
být opatrní a vyloučit to, že vám index zapsaný v adresním
registru změní volání služby BIOS nebo program aktivovaný
pomocí přerušení. Pokud si nejste jisti, že nemůže dojít ke
změně tohoto registru vyvoláním nějakého rezidentního
programu, radši zakažte po dobu provádění operací přerušení.
Do registrů na kartě EGA lze pouze zapisovat. VGA
umožňuje číst aktuální stav registrů s výjimkou
latch-registrů, adresního registru atributového kontroleru a
Input-status registru. Zjištění aktuálního nastavení karty
VGA je tedy pouze otázkou přečtení několika hodnot z portů.
U EGA je už situace složitější. Pokud je aktivní videomód
nasatven pomocí BIOS, měly by být potřebné obsahy registrů
spolu s dalšími informacemi uloženy v ukládací oblasti BIOS.
Pokud používáte adaptér VGA a chcete modifikovat
některý z jeho registrů, měli byste nejprve načíst obsah
tohoto registru, poté změnit pouze požadované bity a
výsledek zapsat zpět na port. Zajistíte tak kompatibilitu s
následujícími verzemi zobrazovacích adaptérů.
Externí registry
Externí registry poskytují na adaptérech EGA a VGA několik
užitečných funkcí. Narozdíl od většiny registrů
zobrazovacího adaptéru se k těmto registrům přistupuje
přímo. Každý z těchto registrů má vyhrazen vlastní port.
Miscellaneous Output register Port: 3c2h
pouze zápis
===========================================================
Popis: Tento registr umožňuje změnu několika nastavení
adaptéru, které ovlivňují jeho činnost.
Hardwarový reset počítače nastaví všechny bity v
tomto registru na 0.
Tento registr je určen pouze pro zápis, a to jak na
EGA tak i na VGA. Pokud máte VGA kartu můžete si
přečíst nastavení tohoto registru z portu 3cch.
Bity 2 a 3 mohou být použity ke změně časování. Pokud
na feature-konektor připojíte zdroj kmitání o vyšší
frekvenci než je obvyklé a změníte nastavení CRTC
registrů, můžete dosáhnout vyššího rozlišení.
Bity Popis
---- ---------------------------------------------------
0 Volba portů pro CRTC registry (3d?h/3b?h)
Tento bit určuje umístění portů CRTC
kontroleru a Input-status registru 1. Nastavení
tohoto bitu na 0 určuje kompatibiltu
s monochromatickými adaptéry (MDA), čísla portů
jsou 3b?h. Naopak nasatvení tohoto bitu na jedna
znamená čísla portů 3d?h, což odpovídá barevným
adaptérům.
Před tím než budete pracovat s CRTC registry
či případně s Input-status registrem 1, měli byste
pomocí tohoto bitu zjistit, na kterých portech jsou
příslušné registry dostupné.
1 Povolení přístupu do RAM
Nastavení tohoto bitu na 0 znemožní procesoru
přístup k paměti videoadaptéru. Standardní
nastavení tohoto bitu je 1, tj. přístup k paměti je
povolen.
2-3 Nastavení rychlosti časovače
Tyto bity určují frekvenci časovače podle
následující tabulky:
/--------------------------------------------\
| Hodnota | EGA | VGA |
|---------+-----------------+----------------|
| 00b | 14MHz | 25MHz |
|---------+-----------------+----------------|
| 01b | 16MHz | 28MHz |
|---------+----------------------------------|
| 10b | Frekvence je určena externím |
| | signálem (z feature-konektoru) |
|---------+----------------------------------|
| 11b | Nepoužito | Nepoužito |
\--------------------------------------------/
Před změnou tohoto nastavení byste měli pomocí
Reset-registru sequenceru vyvolat synchronní reset
adaptéru.
4 Vypnutí interního ovladače obrazovky (pouze EGA)
Tento bit určuje původce videosignálu pro
monitor. Obvykle je tento bit nastaven na 0 a
adaptér EGA ovládá připojený monitor. Pokud je bit
nastaven na 1, signál pro monitor pochází z
výstupních pinů feature-konektoru. Protože tento
konektor obsahuje i vstupní piny, může zařízení
připojené pomocí feature-konektoru kombinovat
signál z karty EGA se signálem z nějakého jiného
zdroje (například z videa).
5 Stránkový bit pro prokládáné módy
Tento bit přepíná mezi dvěma 64K stránkami
paměti z celé 128K roviny, když je aktivní mód s
prokládáním řádku, tj. sudé řádky jsou v jedné
stránce paměti a liché v druhé. Nastavené tohoto
bitu na 0 mapuje do segmentu vyhrazeného pro
videoadaptér dolních 64K a nastavení na 1 mapuje
horních 64K.
6 Polarita horizontálního zatemňovacího impulsu
Polarita horizontálního zpětného paprsku je
kladná, pokud je tento bit nastaven na 0, a
záporná, pokud je nasatven na 1. Digitální monitory
používají kladnou polaritu. Na analogovývh
monitorech tento bit spolu s bitem 7 určují počet
řádek na obrazovce.
7 Polarita vertikálního zatemňovacího impulsu
Polarita vertikálního zpětnéhoo impulsu je
kladná, pokud je tento bit nastaven na 0, a
záporná, pokud je nastaven 1. Monochraomatický
monitor používá zápornou polaritu, barevné monitory
používají kladné polarity a analogové monitory
používají tento bit spolu s bitem 6 k určení počtu
řádek na obrazovce.
Počty řádek na obrazovce pro analogové monitory
jsou kódovány následujícím způsobem:
/------------------------------------\
| Bity 6 a 7 | EGA | VGA |
|------------+-----------+-----------|
| 00b | 200 řádek | Nepoužito |
| 01b | 350 řádek | 350 řádek |
| 10b | Nepoužito | 400 řádek |
| 11b | Nepoužito | 480 řádek |
\------------------------------------/
Feature Control Register Port: 3?ah
pouze zápis
============================================================
Popis: Na kartě EGA jsou bity tohoto registru použity
k ovládání signálů na dvou pinech feature-konektoru
(piny FC0 a FC1). Pomocí těchto dvou signálů můžete
ovládat zařízení připojené k feature-konektoru.
Číslo portu je buď 3bah (monochromatické adaptéry)
nebo 3dah (barevné adaptéry).
VGA tyto bity nepoužívá, bit 3 musí být nastaven na
0. Karta VGA umožňuje čtení obsahu tohoto registru na
portu 3cah.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Nastavení tohoto bitu je promítáno na pin 21
feature-konektoru (FC0).
1 Nastavení tohoto bitu je promítáno na pin 20
feature-konektoru (FC1).
2-7 Rezervováno
VGA:
Bity Popis
---- ---------------------------------------------------
0-7 Rezervováno (bit 3 musí být nula)
Input Status Register 0 Port: 3c2h
Vstupní stavový registr 0 pouze čtení
============================================================
Popis: Tento registr zpřístupňuje několik důležitých
informací o grafické kartě. Na obou adaptérech EGA i
VGA je určen pouze pro čtení.
Na adaptérech EGA bity 5 a 6 odpovídají signálům FEAT
0 a FEAT 1 z feature-konektoru. Mohou být využity pro
komunikaci mezi programem a zařízením připojeným přes
feature-konektor. Na kartě VGA jsou tyto dva bity
rezervovány.
Bity Popis
---- ---------------------------------------------------
0-4 Nepoužito
5 Tento bit odpovídá signálu na pinu 19
feature-konektoru (FEAT 0) - pouze EGA
6 Tento bit odpovídá signálu na pinu 17
feature-konektoru (FEAT 1) - pouze EGA
7 Přerušení obrazovky
Tento bit je nastaven na 1, pokud bylo
vyvoláno přerušení IRQ2 začátkem vertikálního
zatemňovacího impulsu. Používá se pro kontrolu zda
přerušení bylo opravdu vyvoláno kartou EGA/VGA,
neboť IRQ2 je používáno i jinými zařízeními (u AT
je na něj v kaskádě napojen další řadič přerušení).
Tento bit zůstavá nastaven na 1 do té doby, než je
smazán. Obsluha přerušení by tedy měla tento bit
smazat a znovu povolit přerušení pomocí registru
CRTC - Konec vertikálního zpětného chodu (index
tohoto registru je 11h).
Input Status Register 1 Port: 3?ah
Vstupní stavový registr 1 pouze čtení
============================================================
Popis: Tento registr zpřůstupňuje několik důležitých
informací o grafické kartě. Na obou adaptérech EGA i
VGA je určen pouze pro čtení.
Číslo portu je buď 3bah (monochromatické adaptéry)
nebo 3dah (barevné adaptéry).
Bity Popis
---- ---------------------------------------------------
0 Přístup adaptéru k paměti
Tento bit je nastaven na jedna během aktivního
zobrazovacího intervalu (tj. adaptér přistupuje k
videopaměti). Během zatemňovacího impulsu je tento
bit nastaven na 0. Tento bit je zde umístěn pro
zachování zpětné kompatibility s CGA. U karty CGA
docházelo při současném přístupu videodaptéru i
procesoru do paměti k poruchám obrazu (tzv.
sněžení). Zápis do paměti adaptéru EGA/VGA může být
prováděn kdykoli, bez jakýchkoli vedlejších efektů.
1 Světelné pero je přiloženo k obrazovce - pouze EGA
Tento bit je nastaven na jedna, pokud je
světelné pero přiloženo k obrazovce. Pokud je
světelné pero neaktivní obsahuje tento bit 0.
2 Spínač světelného pera - pouze EGA
Tento bit je nastaven na jedna, pokud je
spínač světelného pera otevřený, a na hodnotu 0 je
nastaven, pokud je sepnutý.
3 Indikace vertikálního zatemňovacího signálu
Tento bit je nastaven na 1 při zpětném
vertikálním zatemňovacím impulsu, tj. když se
elektronový paprsek obrazovky, který vytváří na
stínítku obraz, vrací z pravého dolního rohu
obrazovky do levého horního. Po skončení
zatemňovacího signálu je tento bit nastaven až do
dalšího zatemnění na nula.
4-5 Diagnostické použití
Tyto dva bity odpovídají nastavení dvou bitů
registru atributů. Výběr bitů je uskutečněn pomocí
bitů 4 a 5 registru atributového kontroleru pro
přístup k bitovým rovinám (Color Enable Register).
6-7 Nepoužito
Video Subsystem Enable Register Port: 3c3h
Registr ovládání aktivity videokarty pouze VGA
============================================================
Popis: Tento registr ovládá aktivitu karty VGA. Pomocí bitu
1 registru Miscellaneous-Output (povolení přístupu do
RAM) může být zákázan procesoru přístup k paměti a k
registrům videodaptéru. Pokud je zakázán přístup
procesoru do paměti a k registrům videodaptéru, může
být i nadále vytvářen adaptérem obraz. Podmínkou pro
vytváření obrazu je nastavení bitu 1 registru pro
ovládání aktivity videokarty na jedna.
Bity Popis
---- ---------------------------------------------------
0 = 1 Je generován obraz.
= 0 Není generován obraz.
1-7 Rezervováno
Registry sequenceru
Úlohou sequenceru v procesu vytváření obrazu je
ovládání toku dat z paměti a grafického kontroleru do
atributového kontroleru. V každém cyklu hodin během
aktivního zobrazovacího intervalu musí sequencer dodat
atributovému kontroleru 4 bity, které jsou převedeny na
pixel odpovídající barvy. V grafických režimech je vždy
z bitových rovin přečten byte. Bitové roviny jsou čtyři,
přečtené jsou tedy 4 byte. Tyto 4 byte se uloží do 4
posuvných registrů, odkud jsou po čtveřicích bitů posílány
do atributového kontroleru k vytvoření barvy. V textových
režimech je ASCII kód znaku použit jako odkaz do znakového
bloku, ve kterém je bitová definice tvaru znaku. Z této
definice a atributu je opět vytvořena čtveřice byte, která
je posuvným registrem postoupena atributovému kontroleru.
Na kartě EGA atributový kontroler přímo ovládá
obrazovku. Karta VGA používá výstup atributového kontroleru
jako odkaz do tabulky DAC. Z této tabulky jsou přečteny
intenzity základních barev a po převedení na odpovídající
napětí jsou poslány na obrazovku.
Registry sequenceru ovládájí kmitočet hodin, posuvné
registry a umístění znakového generátoru. Sequencer
rozděluje přístup procesoru a adaptéru k paměti, určuje
bitové mapy přístupné procesoru. Většina běžných aplikací
z registrů sequenceru využívá pouze Map Mask a Character Map
Select registry.
Sequencer Adress Register Port: 3c4h
Adresový registr sequenceru
============================================================
Popis: Obsah tohoto registru určuje, který z registrů
sequenceru bude mapován na datovém portu 3c5h. Pro
přístup k registru sequenceru musíte na tento port
zapsat index vámi požadovaného registru sequenceru.
/---------------------------------------------------\
|Index| Registr |
|-----+---------------------------------------------|
| 0 | Reset |
| 1 | Režim časovače (Clocking Mode) |
| 2 | Map mask |
| 3 | Výběr znakového bloku (Character Map Select)|
| 4 | Paměťový režim (Memory Mode) |
\---------------------------------------------------/
Reset Register Port: 3c5h
Reset registr Index: 0
============================================================
Popis: Tento registr je používán k resetování sequenceru. To
je nezbytné pro zachování obsahu obrazovky při změně
režimu časovače. Aby sequencer pracoval musí být oba
bity 0 a 1 nastaveny na jedna.
Bity Popis
---- ---------------------------------------------------
0 Asynchroní smazání sequenceru
Nastavení tohoto bitu na 0 způsobí smazání a
zastavení sequenceru. Výstupy se uvedou do stavu s
vysokou impendací. Tím může být zapříčiněna ztráta
obrazových dat.
1 Synchroní smazání sequenceru
Nastavení tohoto bitu na 0 způsobí smazání a
zastavení sequenceru. Do tohoto stavu by měl být
sequencer uveden, pokud se mění režim časovače nebo
rychlost časovače.
2-7 Nepoužito
Clocking Mode Register Port: 3c5h
Režim časovače Index: 1
============================================================
Popis: Tento registr ovlivňuje některé funkce související s
časováním adaptéru. Před tím, než měníte nějaké
nastavení tohoto registru, měli byste provést
synchronní reset sequenceru.
Bity Popis
---- ---------------------------------------------------
0 8/9 taktů na jeden znak
Pokud je tento bit nastaven na 1, generují se
standardní, 8 bodů široké znaky. Pokud je nastaven
na 0, generují se 9 bodů široké znaky (pouze v MDA
a VGA textových módech).
1 Šířka pásma pro přístup do paměti - pouze EGA
Tento bit ovládá přístupový čas do paměti pro
videoadaptér. Nastavení tohoto bitu na jedna
vyhradí adaptéru 2 z 5 paměťových cyklů. Nastavení
tohoto bitu na nula vyhradí pro adaptér 4 z 5
paměťovývh cyklů. Protože módy s vyšším rozlišením
potřebují číst více dat během jednoho řádku,
vyžadují všechny módy kromě 0, 1, 4, 5 a 0dh 4 z 5
cyklů. Nastavení tohoto bitu ovlivní waitstates
generované adaptérem. Během zpětného chodu paprsku
pokračuje na EGA přidělování přístupu k paměti. Na
VGA je při zpětném chodu přístup k paměti zcela
vyhrazen procesoru.
2 4/2 posuvné registry
Obvykle je tento bit nastaven na 0. Data z
paměti jsou posílána do atributového kontroleru
pomocí 4 8bitových posuvných registrů. Nastavení
tohoto bitu na jedna kombinuje data ze dvou
bitových rovin do 16bitových posuvných registrů.
Tyto registry jsou nyní však pouze dva. Sníží se
tak počet barev, ale zvětší dostupná paměť.
3 1/2 hodinové frekvence
Po nastavení tohoto bitu na jedna se bude
frekvence z časovače dělit dvěma. Toto zdvojení
časových intervalů se používá pro zobrazení módů
s rozlišením 320 x 200 či textových módů se 40
znaky na řádku.
4 4->1 posuvné registry
Nastavení tohoto bitu na jedna aktivuje čtení
z jedné bitové roviny po 32 bitech, které se poté
uloží do posuvných registrů. Žádný ze standardních
módů nepoužívá toto nastavení, neboť je k dispozici
dostatečně velký adresní prostor.
5 Vypnutí obrazovky
Nastavení tohoto bitu na jedna vypne
generování obrazu na stínítku při zachování všech
interních funkcí videoadaptéru. Vypínání obrazovky
lze použít v případě, kdy potřebujeme vyhradit
všechen přístupový čas do videopaměti procesoru
(například pro práci s velkým objemem dat). Další
použití je v jednoduchéch screensaveru (šetřiči
obrazovky).
6-7 Nepoužito
Map Mask Register Port: 3c5h
Map mask registr Index: 2
============================================================
Popis: Map mask registr povoluje a zakazuje modifikaci
jednotlivých bitových map během zápisu do paměti.
Každý bit nastavený na jedna umožní modifikaci
příslušné bitové roviny.
Pokud používáte módy s oddělenými sudými a lichými
řádky, měly by mít bity 0 a 1 stejnou hodnotu, stejně
tak by měly mít bity 2 a 3 stejnou hodnotu. Pokud
použiváte režim zřetězení 4 bitových map (je nastaven
v grafickém režimu 320 x 200, 256 barev), měly by mít
všechny bity stejnou hodnotu.
Tento registr je aktivní ve všech zapisovacích
režimech, tj. ovlivňuje veškerá data zapisovaná do
paměti videoadaptéru.
Bity Popis
---- ---------------------------------------------------
0 = 1 Povolena modifikace bitové roviny 0
1 = 1 Povolena modifikace bitové roviny 1
2 = 1 Povolena modifikace bitové roviny 2
3 = 1 Povolena modifikace bitové roviny 3
4-7 Nepoužito
Character Map Select Register Port: 3c5h
Regsitr výběru znakového bloku Index: 3
============================================================
Popis: Tento registr určuje, která část bitové roviny
obsahuje definici znakovové sady pro textové režimy.
Bitová rovina 2 je rozdělena na 4 části po 8K (na
kartách EGA s méně než 256K přísluší každých 64K
jedné části). Na kartách EGA může každá tato část
obsahovat jeden znakový blok z celkových čtyř. VGA
může obsahovat v jedné 8K části dva znakové bloky.
Dva z těchto osmi (u EGA čtyř) znakových bloků mohou
být vybrány jako primární a sekundární znakové sady.
Obvykle jsou primární a sekundární znaková sada
totožné a je možno zobrazovat pouze 256 znaků. Pokud
je ale obsah znakových sad rozdílný, určuje bit 3
atributu (intenzita) používanou znakovou sadu. Znaky
s nastavenou intenzitou se pak objeví jako dalších
256 použitelných znaků.
EGA musí mít více než 64K paměti, aby podporovala dvě
znakové sady najednou.
Tento registr by měl být nastavován po resetu
sequenceru, protože asynchroní smazání sequenceru
vynuluje tento registr.
Bity Popis
---- ---------------------------------------------------
0-1 Výběr primární znakové sady
Hodnota těchto dvou bitů určuje 8K čast bitové
roviny 2 použitou k uložení primární znakové sady.
Hodnota 0-3 odpovídá znakovému bloku 0-3.
2-3 Výběr sekundární znakové sady
Hodnota těchto dvou bitů určuje 8K čast bitové
roviny 2 použitou k uložení sekundární znakové sady
(bit 3 atributu = 1). Hodnota 0-3 odpovídá
znakovému bloku 0-3.
4 Nejvyšší bit výběru sekundární znakové sady - pouze VGA
Tento bit se připojuje na VGA k bitům 2 a 3.
Sekundární znaková sada může být na adaptéru VGA
uložena v jednom z osmi znakových bloků.
5 Nejvyšší bit výběru primární znakové sady - pouze VGA
Tento bit na VGA rozšiřuje bity 0 a 1.
Umožňuje volbu primární znakové sady z celkem osmi
znakových bloků.
6-7 Nepoužito
Memory Mode Registr Port: 3c5h
Paměťový režim sequenceru Index: 4
============================================================
Popis: Tento registr ovlivňuje přístup sequenceru k paměti.
Bity Popis
---- ---------------------------------------------------
0 Textový režim
Tento bit je nastaven na jedna v textových
režimech a na nula v grafických. V textových
režimech je bitová rovina 2 vyhrazena pro znakový
generátor.
1 Rozšíření paměti
Tento bit je nastaven na jedna, pokud má
adaptér více než 64K paměti. V opačném případě je
nastaven nula.
2 Paměťový mód s oddělenými sudými a lichými adresami
Když je tento bit nastaven na jedna, data na
sudých adresách jsou mapována do sudých bitových
rovin a data na lichých adresách jsou mapována do
lichých bitových map. Toto nastavení se týká pouze
sequenceru. Pokud je pomocí bitu 4 registru režimu
grafického kontroleru přepnut i grafický kontroler
do tohoto režimu, snadno se emulují módy CGA. Tento
paměťový model je použit i v textových režimech,
kde jsou ASCII kódy znaků uloženy v jedné bitové
rovině a atributy v druhé.
3 Zřetězení 4 bitových map - pouze VGA
Nastavení tohoto bitu na jedna uvede v
činnost mapování podobné tomu předchozímu. Adresy
jsou však rozděleny do čtyř skupin. Adresy, které
jsou násobkem čtyř jsou uloženy v bitové rovině 0.
Adresy, které po vydělení čtyřmi dávají zbytek
jedna jsou uloženy v bitové rovině 1 atd. Tento
paměťový režim využívá mód 13h (320 x 200, 256
barev). Každá bitová rovina obsahuje jen každý
čtvrtý byte. Procesor však vidí celou paměťovou
oblast souvisle.
4-7 Nepoužito
Registry CRTC
Registry CRTC tvoří největší skupinu registrů adaptéru
EGA a VGA. Ovládají veškeré funkce týkající se časovaní
a synchronizace vytváření obrazu. Jedinečností registrů CRTC
je to, že se mohou vyskytovat na dvou různých portech.
V monochromatických režimech se pro přístup k CRTC registrům
používají porty 3b4h/3b5h a v barevných režimech se
používají porty 3d4h/3d5h. Toto dvojí umístění je důsledkem
zachovávání zpětné kompatibility s MDA a CGA. Tyto adaptéry
mají totiž registry CRTC umístěny na rozdílných portech.
Jelikož registrů CRTC je veliké množství a jejich
souvislost by nemusela být na první pohled zřejmá, povíme se
nejprve něco o způsobu tvorby obrazu na stínítku monitoru.
Obraz je vytvářen tím, že vrstva luminescenční látky je
aktivována pomocí elektronového paprsku. Tato aktivace se
projeví rozsvícením ozářené části luminoforu. Čím silnější
elektronový svazek dopadal na stínítko, tím jasnější bude
obraz. Na barevném displeji jsou naneseny luminofory tří
základních barev (buď v tenkých proužcích vedle sebe, nebo
jako trojice teček), které po složení dávají výslednou
barvu.
Elektronový paprsek začíná svůj pohyb v levém horním
rohu obrazovky. Při pohybu doprava vykresluje jednu řádku.
Když dosáhne pravého okraje stínítka, paprsek se deaktivuje
a přesová se na následující řádku vlevo (tzv. zpětný chod
paprsku). Tento celý proces se opakuje, dokud není
vykreslena celá obrazovka. Z pravého okraje poslední řádky
se deaktivovaný paprsek přesouvá zpět do levého horního
rohu. Samotný obraz videopaměti nezabírá celou tuto plochu.
Okolo obrazu je ještě rámeček vyplněný určitou barvou (viz
obr. 9).
Registry CRTC můžeme rozdělit do dvou skupin podle toho
zda ovlivňují zobrazování jedné řádky (horizontální) nebo
skládání těchto řádek do výsledného obrazu (vertikální).
Tvorbu obrazu a velikost rozlišení ovlivňují tyto registry:
Horizontální - Celkový počet znaků (index 0)
Počet zobrazovaných znaků (index 1)
Začátek zatemnění (index 2)
Konec zetemnění (index 3)
Začátek zpětného impulsu (index 4)
Konec zpětného chodu paprsku (index 5)
Vertikální - Celkový počet řádek (index 6)
Začátek zpětného chodu paprsku (index 10h)
Konec zpětného chodu (index 11h)
Počet zobrazovaných řádek (index 12h)
Začátek zatemnění (index 15h)
Konec zatemnění (index 16h)
Některé z těchto registrů jsou více než osmibitové.
Zbývající bity mají umístěny v registru přetečení
(Overflow-register) s indexem 7.
Horizontální hodnoty jsou ve znacích. Počítání
horizontální pozice začíná od nuly a končí celkovým počtem
znaků (index 0) plus jedna (EGA) nebo plus čtyři (VGA). Data
jsou zobrazována od 0 do počtu zobrazovaných znaků. Ten bývá
obvykle 39 nebo 79. Dostáváme tak 40 nebo 80 znaků na řádku
(v grafice krát 8 - počet bitů na znak - dostáváme 320 nebo
640). Na pozici následující za posledním zobrazeným znakem
obvykle začíná zatemnění (hodnota registru bývá nejčastěji
40 nebo 80) při zatemnění se generuje rámeček. O několik
znaků později začíná zpětný chod paprsku. Registry určující
konec zatemnění a zpětného chodu používají pouze svých 5
nejnižších bitů. Pokud 5 nejnižších bitů aktuálně kresleného
znaku odpovídá konci zatemnění, začne se vykreslovat levý
rámeček. Poté už se čeká jen na to až bude konec zpětného
chodu odpovídat aktuální poloze paprsku a začíná
vykreslování nové řádky. Protože mezi koncem zpětného chodu
a začátkem vykreslování nové řádky je málo času, lze
začátek vykreslování nové řádky posunout pomocí bitů 5 a 6
registru konec zatemnění.
Vertikální registry mají obdobný význam, pouze jejich
jednotkou nejsou znaky, ale řádky. Vertikální snímkovací
frekvence bývá obvykle v rozsahu od 50 do 90 Hz. Obecně lze
řící, čím větší je tato frekvence, tím ostřejší
a kvalitnější je obraz. Pokud je tato frekvence menší než
60 Hz, může nám obraz připadat nestálý a klepající se.
CRTC Adress register Port: 3?4h
Adresový registr CRTC
============================================================
Popis: Adresový registr CRTC určuje, který z registrů CRTC
bude přístupný přes datový registr CRTC. Tento
registr se může vyskytovat na dvou různých portech.
Na adaptéru VGA můžete zjistit pomocí bitu 0 registru
přečteného z portu 3cch, která ze dvou možností
umístění je právě používána.
/-------------------------------------------------------\
|Index| Registr |
|-----+-------------------------------------------------|
| 00h | Celkový horizontální počet znaků |
| 01h | Horizontální počet zobrazovaných znaků |
| 02h | Začátek horizontálního zatemnění |
| 03h | Konec horizontálního zatemnění |
| 04h | Začátek horizontálního zpětného chodu paprsku |
| 05h | Konec horizontálního zpětného chodu paprsku |
| 06h | Celkový vertikální počet řádek |
| 07h | Registr přetečení |
| 08h | Verikální posun ve znakových režimech |
| 09h | Počet řádek na znak |
| 0ah | Začátek kurzoru |
| 0bh | Konec kurzoru |
| 0ch | Počáteční adresa - vyšší byte |
| 0dh | Počáteční adresa - nižší byte |
| 0eh | Pozice kurzoru - vyšší byte |
| 0fh | Pozice kurzoru - nižší byte |
| 10h | Začátek vertikálního zpětného chodu |
| | EGA čtení - Pozice světelného pera - vyšší byte |
| 11h | Konec vertikálního zpětného chodu |
| | EGA čtení - Pozice světelného pera - nižší byte |
| 12h | Vertikální počet zobrazovaných řádek |
| 13h | Offset |
| 14h | Pozice podtržení |
| 15h | Začátek vertikálního zatemnění |
| 16h | Konec vertikálního zatemnění |
| 17h | Ovládání režimu |
| 18h | Porovnání řádky |
\-------------------------------------------------------/
Horizontal Total Register Port: 3?5h
Celkový horizontální počet znaků Index: 00h
============================================================
Popis: Tento registr obsahuje počet znaků v jedné
horizontální řádce plus znaky odpovídající zpětnému
chodu paprsku. Interní čítač se po dosažení této
hodnoty vynuluje. Nový interval pro další řádku začne
jeden takt po vynulování čítače.
Hodnota v tomto registru je u EGA o 2 menší a u VGA o
5 menší než skutečný počet znakových délek na jedné
řádce.
Adaptér vždy považuje první zobrazitelnou pozici za
první pozici v čítači. Následující intervaly přísluší
pravému rámečku, zpětnému chodu paprsku a levému
rámečku.
Tento registr ovlivňuje horizintální velikost pixelu.
Čím je hodnota tohoto registru vyšší, tím více znaků
se musí na jedné řádce zobrazit a tím menší musí být
jeden bod.
Bity Popis
---- ---------------------------------------------------
0-7 Celkový horizontální počet znaků (o dvě menší na
EGA a o pět menší na VGA).
Horizontal Display Enable End Register Port: 3?5h
Horizontální počet zobrazovaných znaků Index: 01h
============================================================
Popis: Tento registr obsahuje počet znakových šířek v
zobrazované oblasti. Pokud interní čítač dosáhne
hodnoty v tomto registru, začíná vykreslování pravé
části rámečku.
Hodnota v tomto registru je o 1 menší než počet
zobrazitelných znaků. Hodnota 0 tedy znamená, že bude
zobrazován jeden znak na řádku.
Bity Popis
---- ---------------------------------------------------
0-7 Horizontální počet zobrazovaných znaků mínus jedna
(obvykle 39 nebo 79).
Start Horizontal Blanking Register Port: 3?5h
Začátek horizontálního zatemnění Index: 02h
============================================================
Popis: Pokud čítač dosáhne hodnoty tohoto registru, začne
horizontální zatemnění, tj. začne se vykreslovat
pravý rámeček. Vykreslování pravé části rámečku
skončí v okamžiku, kdy čítač dosáhne hodnoty registru
začátek zpětného chodu.
Bity Popis
---- ---------------------------------------------------
0-7 Pozice, na které se zečne zobrazovat pravá část
rámečku.
End Horizontal Blanking Register Port: 3?5h
Konec horizontálního zatemnění Index: 03h
============================================================
Popis: Tento registr obsahuje hodnotu čítače, při kter se
přestane s vykreslováním rámečku. Obsahuje pouze 5
méně významných bitů této hodnoty. Ty významnější
jsou shodné s bity v registru pro začátek
horizontálního zatmění.
Tento registr také obsahuje kontrolu nad pauzou,
která předchází zobrazování nové řádky. Během této
pauzy musí mít CRTC dost času k přístupu do
videopaměti, ke znakovému generátoru a k atributům.
Pokud je tato pauza příliš malá, může být první znak
zobrazován vícekrát. Pokud je pauza příliš velká,
může být několik prvních znaků nezobrazených.
Bity Popis
---- ---------------------------------------------------
0-4 Konec horizontálního zatemnění.
5-6 Pauza po naplnění interního horizontálního čítače
= 00b Žádná pauza
= 01b Pauza odpovídající vykreslení jednoho znaku
= 10b Pauza odpovídající vykreslení dvou znaků
= 11b Pauza odpovídající vykreslení tří znaků
7 EGA - Nepoužito
VGA - Určeno pro testování, mělo by být nastaveno
na 1.
Start Horizontal Retrace Pulse Register Port: 3?5h
Začátek horizontálního zpětného chodu paprsku Index: 04h
============================================================
Popis: Tento registr obsahuje hodnotu čítače, při které
bude vygenerován impuls zpětného chodu a elektronový
paprsek bude přesouván doleva. Zpětný chod může být
prodloužen pomocí některých bitů registru konec
zpětného chodu paprsku.
Bity Popis
---- ---------------------------------------------------
0-7 Hodnota interního čítače, při které začne být
generován signál pro zpětný chod paprsku.
End Horizontal Retrace Register Port: 3?5h
Konec horizontálního zpětného chodu paprsku Index: 05h
============================================================
Popis: Tento registr obsahuje pět méně významných bitů,
které při shodě s interním čítačem ukončí zpětný chod
elektronového paprsku. Tři významnější bity jsou
shodné s registrem určujícím začátek zpětného chodu.
Bity 5-6 určují pauzu, o kterou bude prodloužen
zpětný chod paprsku. Může být použita pro
synchronizaci se zatemňováním.
Tento registr obsahuje na adaptérech VGA v bitu 7
šestý bit registru konec horizontálního zatemnění.
Bity Popis
---- ---------------------------------------------------
0-4 Pět méně významných bitů čítače, při kterých skončí
zpětný chod paprsku.
5-6 Pauza po návratu paprsku
= 00b Žádná pauza
= 01b Pauza odpovídající vykreslení jednoho znaku
= 10b Pauza odpovídající vykreslení dvou znaků
= 11b Pauza odpovídající vykreslení tří znaků
7 Rozšíření horizontálního scrolování - pouze EGA
Tento bit je normálně nastaven na 0. Pokud
máte EGA kartu s více než 64K paměti, můžete tento
bit použít pro rozšíření rozsahu scrolování. pro
využití této schopnosti nejprve nastavte tento bit
na 0. Poté scrolujte běžným způsobem o 8 pixelů.
Nastavte tento bit na 1 a opět běžným způsobem
scrolujet o osm bodů. Poté změnte počáteční adresu
zobrazovaných dat a celý proces opakujte. Karta VGA
má obdobný bit v registru pro počet řádek na znak.
7 6. bit registru konec horizontálního zatemnění - pouze VGA
Tento bit rozšiřuje registr konce
horizontálního zatemnění.
Vertical Total Register Port: 3?5h
Celkový vertikální počet řádek Index: 06h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů počtu
zobrazovaných řádek plus počet řádek potřebných na
zatěmnění a zpětný chod paprsku. Interní vertikální
čítač bude pracovat od 0 do této hodnoty. V registru
přetečení jsou uloženy bit 8 a 9 (VGA) tohoto
registru.
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů celkového počtu řádek.
CRTC Overflow register Port: 3?5h
Registr přetečení Index: 07h
============================================================
Popis: tento registr obsahuje nejvýznamnější bity některých
registrů CRTC, které překročily osmibitový rozsah.
Bity Popis
---- ---------------------------------------------------
0 9. bit registru celkový vertikální počet řádek
1 9. bit registru vertikální počet zobrazovaných
řádek
2 9. bit registru začátek vertikálního zpětného chodu
3 9. bit registru začátek vertikálního zatemnění
4 9. bit registru porovnání řádky
5 10. bit registru celkový vertikální počet řádek -
pouze VGA
6 10. bit registru vertikální počet zobrazovaných
řádek - pouze VGA
7 10. bit registru začátek vertikálního zpětného
chodu - pouze VGA
Preset Row Scan Register Port: 3?5h
Vertikální počet ve znakových režimech Index: 08h
============================================================
Popis: První zobrazovaná řádka je určena obsahem registru
počáteční adresa zobrazování plus offset určený tímto
registrem. Tento registr obsahuje počáteční řádku pro
zobrazování (normálně 0). Tento registr se používá
pro implmentaci plynulého scrolování v textových
režimech. Určuje na kolikáté řádce znaku začne
zobrazování. Hodnota tohoto registru by tedy neměla
přesáhnout počet řádek jednoho znaku. V grafických
režimech by měl být tento registr nastaven na nula.
Plynulé vertikální scrolování lze v grafických
režimech provádět za použití samotného registru
počáteční adresy zobrazování.
Změna tohoto registru se promítne až do následujícího
zobrazovacího intervalu. Pouze pokud je změna
provedena během vykreslování první řádky, je reakce
na změnu nastavení okamžitá. Tento registr by tedy
měl být měněn buď během vertikálního zpětného chodu
paprsku nebo během prvního horizontálního zpětného
chodu.
Bity Popis
---- ---------------------------------------------------
0-4 Číslo první zobrazované řádky po skončení
vertikálního zpětného chodu.
5-6 4. a 5. bit horizontálního scrolování - pouze VGA
Tyto bity rozšiřují registr pro horizontální
posun obrazu doleva. Toto rozšíření je nutné pokud
je používáno zřetězení bitových map.
7 Nepoužito
Maximum Scan Line Register Port: 3?5h
Počet řádek na znak Index: 09h
============================================================
Popis: Registr obsahuje výšku používaných znaků mínus jedna.
Tento registr má uvedený význam pouze v textových
režimech.
Bity Popis
---- ---------------------------------------------------
0-4 Výška používaných znaků mínus jedna
5 10. bit registru začátek vertikálního zatemnění -
pouze VGA
6 10. bit registru porovnání řádky - pouze VGA
7 Konverze 200 na 400 - pouze VGA
Pokud je tento bit nasatven na jedna, je
každá řádka v 200 řádkovém režimu zobrazována
dvakrát. Dosahuje se tak stejné kvality zobraní
jako při vertikálním rozlišení 400.
Cursor Start Register Port: 3?5h
Začátek kurzoru Index: 0ah
============================================================
Popis: Obsah tohoto registru určuje číslo řádky znakového
boxu, na které začne být zobrazován kurzor. Poslední
řádka kurzoru se nastavuje pomocí registru konec
kurzoru (index 0bh). Tento registr je platný pouze v
textových režimech. Řádky jsou číslovány odshora
dolů, od 0 do počtu byte na znak mínus jedna.
Pokud je na adaptérech EGA počáteční řádka kurzoru
větší než koncová, zobrazí se inverzní kurzor. Na VGA
toto nastavení vede ke zmizení kurzoru.
Bity Popis
---- ---------------------------------------------------
0-4 Začátek kurzoru
Číslo řádky, na které začne zobrazování
kurzoru.
5 Vypnutí kurzoru - pouze VGA
Pokud je tento bit nastaven na jedna, kurzor
není zobrazován.
6-7 Nepoužito
Cursor End Register Port: 3?5h
Konec kurzoru Index: 0bh
============================================================
Popis: Obsah tohoto registru určuje číslo řádky znakového
boxu, na kterém přestane zobrazování kurzoru. První
zobrazovaná řádka kurzoru se nastavuje pomocí
registru začátek kurzoru (index 0ah). Číslování řádek
začíná odshora od nuly.
Tento registr obsahuje bity 5 a 6, které umožňují
ovládat pauzu po vyslání kontrolního signálu kurzoru.
Bity Popis
---- ---------------------------------------------------
0-4 Konec kurzoru
Číslo řádky, na které skončí zobrazování
kurzoru.
5-6 Spoždění kontrolního signálu kurzoru
= 00b Žádná pauza
= 01b Pauza odpovídající vykreslení jednoho znaku
= 10b Pauza odpovídající vykreslení dvou znaků
= 11b Pauza odpovídající vykreslení tří znaků
7 Nepoužito
Start Address High Register Port: 3?5h
Počáteční adresa - vyšší byte Index: 0ch
============================================================
Popis: Tento registr obsahuje osm nejvýznamnějších bitů
adresy (z pohledu CRTC), na které je první
zobrazovaným znak (v textových režimech) nebo první
zobrazovaný pixel (v grafických režimech). Osm méně
významných bitů je uloženo v registru s indexem 0dh.
Tento registr umožňuje snadnou implementaci
vertikálního scrolování. Změna tohoto registru se
projevuje na začátku zpětného chodu paprsku. Registr
by tedy měl být nastaven během aktivního
zobrazovacího intervalu.
Bity Popis
---- ---------------------------------------------------
0-7 Významnějších osm bitů adresy počátku zobrazování.
Start Adddress Low Register Port: 3?5h
Počáteční adresa - nižší byte Index: 0dh
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
adresy (z pohledu CRTC), na které je první
zobrazovaný znak (v textových režimech) nebo první
zobrazovaný pixel (v grafických režimech). Osm
významnějších bitů je uloženo v registru s indexem
0ch.
Tento registr umožňuje snadnou implementaci
vertikálního scrolování. Změna tohoto registru se
projevuje na začátku zpětného chodu paprsku. Registr
by tedy měl být nastaven během aktivního
zobrazovacího intervalu.
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů adresy počátku zobrazování.
Cursor Location High Register Port: 3?5h
Pozice kurzoru - vyšší byte Index: 0eh
============================================================
Popis: Tento registr obsahuje osm významnějších bitů
16bitové adresy CRTC, na které je umístěn kurzor.
Zbývajících osm méně významných bitů je uloženo v
následujcím registru (index 0fh).
Bity Popis
---- ---------------------------------------------------
0-7 Osm významnějších bitů adresy pozice kurzoru.
Cursor Location Low Register Port: 3?5h
Pozice kurzoru - nižší byte Index: 0fh
============================================================
Popis: Tento registr uchovává osm méně významných bitů
adresy CRTC, na které je umístěn kurzor. Osm
významnějších bitů je uloženo v registru předchozím
(index 0eh).
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů adresy pozice kurzoru.
Vertical Retrace Start Register Port: 3?5h
Začátek vertikálního zpětného chodu Index: 10h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
hodnoty, která při shodě s interním vertikálním
čítačem vyvolá zpětný chod paprsku. Čítač nabývá
hodnot od 0 do celkového počtu vertikálních řádek.
Devatý a desátý bit tohoto registru jsou uloženy v
registru přetečení (index 07h).
Bity Popis
---- ---------------------------------------------------
0-7 8 méně významných bitů hodnoty čítače vyvolávající
zpětný chod paprsku.
Light Pen High Register Port: 3?5h
Pozice světelného pera - vyšší byte
Pouze EGA, pouze čtení Index: 10h
============================================================
Popis: Pokud je světelné pero přiloženo k obrazovce, vrací
tento registr osm více významných bitů adresy, která
odpovídá pozici světelného pera.
Tuto funkci podporuje pouze EGA. VGA světelné pero
nepodporuje.
Bity Popis
---- ---------------------------------------------------
0-7 Osm významnějších bitů adresy světelného pera.
Vertical Retrace End Register Port: 3?5h
Konec vertikálního zpětného chodu Index: 11h
============================================================
Popis: Tento registr obsahuje čtyři méně významné bity,
které při shodě s čítačem ukončí zpětný chod paprsku.
Zbývající významnější bity jsou shodné s bity
registru začátek zpětného chodu.
Tento registr taktéž obsahuje bity pro mazání a
povolení vertikálního přerušení (IRQ 2). Pokud
používáte vertikální přerušení, měla by jeho obslužná
rutina před svým skončením smazat přerušení a znovu
ho povolit. To lze provést zapsáním nul do bitů 4 a 5
a poté zapsáním jedničky do bitu 4. Přerušení IRQ 2
může být vyvoláno i jiným zařízením než
videoadaptérem (u AT jsou na něm kaskádově připojena
přerušení 8 až 15). Pokud bylo přerušení vyvoláno
adaptérem je nastaven bit 7 vstupního stavového
registru 0 (port 3c2h).
Bity Popis
---- ---------------------------------------------------
0-3 4 méně významné bity čítače pro ukončení zpětného
chodu paprsku.
4 Smazání vertikálního přerušení
Nastavení tohoto bitu na 0 smaže předešlou
aktivaci vertikálního přerušení.
5 Povolení vertikálního přerušení
Zapsání nuly do tohoto bitu povolý generování
vertikálního přerušení při každém vyvolání
vertikálního zpětného chodu paprsku.
6 Nastav 5 obnovovacích cyklů - pouze VGA
Tento registr určuje počet paměťových
obnovovacích cyklů během zobrazování jedné řádky.
Normálně je tento bit nastaven na 0 a jsou
generovány tři signály pro osvěžení paměti. Pokud
je bit nastaven na jedna, je generováno pět
osvěžení RAM, což dovoluje připojit monitor s
řádkovou frekvencí 15.75 kHz.
7 Ochrana R0-R7 - pouze VGA
Registry CRTC s indexy 0 - 7 mohou být
chráněny proti přepsání nastavením tohoto bitu na
jedna. Registry 0-7 obsahují důležité informace o
časování adaptéru a tak by měly být títmto způsobem
chráněny před nežádoucím přepsáním.
Light Pen Low Register Port: 3?5h
Pozice světelného pera - nižší byte
Pouze EGA, pouze čtení Index: 11h
============================================================
Popis: Pokud je světelné pero přiloženo k obrazovce, vrací
tento registr osm méně významných bitů adresy, která
odpovídá pozici světelného pera.
Tuto funkci podporuje pouze EGA. VGA světelné pero
nepodporuje.
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů adresy světelného pera.
Vertical Display Enable Register Port: 3?5h
Vertikální počet zobrazovaných řádek Index: 12h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
celkového počtu zobrazovaných řádek. Řádky jsou
číslovány od 0, tudíž registr obsahuje o jedničku
menší číslo, než je počet zobrazovaných řádek. Bity 8
a 9 jsou obsaženy v registru přetečení (index 07h).
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů počtu zobrazovaných řádek
mínus jedna.
Offset Register Port: 3?5h
Offset Index: 13h
============================================================
Popis: Tento registr obsahuje velikost videopaměti
spotřebované na jednu zobrazovací řádku. Tato
velikost nemusí odpovídat skutečné velikosti
zobrazované řádky. Pokud je větší, může toho být
výhodně užito při horizontálním scrolování obrazovky.
Délka řádky je udávána ve dvojicích, čtveřicích nebo
osmicích byte (platné nastavení lze zjistit v
registru sequenecru ovládajícím režim časovače (index
01h).
Bity Popis
---- ---------------------------------------------------
0-7 Logická délka jedné řádky (dělená 2, 4 nebo 8).
Underline Location Register Port: 3?5h
Pozice podtržení Index: 14h
============================================================
Popis: Tento registr nastavuje pozici podtržení ve znakovém
boxu. Pozice se počítá od nuly od shora znakového
boxu.
Bity Popis
---- ---------------------------------------------------
0-4 Pozice podtržení ve znakovém boxu.
5 Adresa po 4 taktech - pouze VGA
Nastavení tohoto bitu na jedna vydělí
frekvenci, která zvětšuje čítač adresy paměti,
čtyřikrát. Adresa bude měněna až po každém čtvrtém
taktu.
6 Paměťový mód dvojslov - pouze VGA
Nastavením tohoto bitu na jedna si vynutíte
používaní dvojslovového adresování. Před použitím
této možnosti musíte nastavit bit 6 registru
ovládání režimu (index 17h) na nula.
7 Nepoužito
Start Vertical Blanking Register Port: 3?5h
Začátek vertikálního zatemnění Index: 15h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů, po
jejichž dosažení čítečem bude generován začátek
vertikálního zatemnění, tj. začne se vykreslovat
spodní část rámečku. 9. bit tohoto registru je uložen
v registru přetečení (index 07h) a 10. bit (pro VGA)
v registru počet řádek na znak (index 09h).
Bity Popis
---- ---------------------------------------------------
0-7 8 méně významných bitů hodnoty čítače, při které
začne vertikální zatemnění.
End Vertical Blanking Port: 3?5h
Konec vertikálního zatemnění Index: 16h
============================================================
Popis: Tento registr obsahuje 5 (VGA 8) méně významných bitů
hodnoty, při jejíž shodě s interním vertikálním
čítačem přestane být generováno vertikální zatemnění,
tj. skončí vykreslovánbí horní části rámečku.
Významnější bity jsou shodné s bity v registru pro
začátek vertikálního zatemnění.
Bity Popis
---- ---------------------------------------------------
0-4 Pouze EGA
5 méně významných bitů hodnoty čítače, při
které se ukončí vertikální zatemnění.
0-7 Pouze VGA
8 méně významných bitů hodnoty čítače, při
které se ukončí vertikální zatemnění.
Mode Control Register Port: 3?5h
Ovládání režimu Index: 17h
============================================================
Popis: Tento registr umožňuje ovládat způsob mapování
videopaměti. Je obdobou registru paměťového režimu
sequenceru a režimu grafického kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Podpora kompatibilních režimů
Nastavení tohoto bitu na 0 vytvoří dvě
oblasti paměti, jednu pro sudé a druhou pro liché
řádky. Oblasti začínají vždy na offsetu, který je
náseobkem 8K. Dosaženo je toho záměnou bitu 13
adresy paměti za poslední bit čísla řádku. Toto
nastavení umožňuje emulaci zobrazovacích režimů
kompatibilních s CGA.
1 Výběr adresy podle bitu 1 čítače řádek
Funkce tohoto bitu je podobná funkci
předchozího bitu. Pokud je bit nastaven na 0,
adresní bit 14 je nahrozován bitem 1 čísla řádku.
2 Zdvojení vertikálního čítače řádek
Pokud je tento bit nastaven na nula, je
vertikální čítač zvětšen o jedna po každém
horizontálím zpětném chodu paprsku. Pokud je bit
nastaven na 1, je čítač zvětšen po každém druhém
zpětném horizontálním chodu. Umožňuje to
zdvojnásobit vertikální rozlišení.
3 Adresa po 2 taktech
Nastavení tohoto bitu na nula si vynutí
zvětšení adresního čítače po každém impulsu
časovače. Pokud je bit nastaven na jedna, je adresa
zvětšena po každém druhém taktu.
4 Ovládání výstupů - pouze EGA
Normálně je tento bit nastaven na nula. Jeho
nasatvení na jedna uvede výstupy adaptéru do stavu
s vysokou impendancí.
5 Zarovnávání adresy
Tento bit je používán ve spojení s bitem 6
tohoto registru. V bajtovém módu nemá význam. Ve
word módu nastavení tohoto bitu na jedna umístí
adresní bit 15 na místo adresního bitu 0. Pokud je
tento bit 0, nastaví se na adresní bit 0 adresní
bit 13. Bit 13 je používán pro spojování bitových
map na kartách EGA s 64K paměti.
6 Výběr módu - byte/word
Byte mód je zvolen nastavením tohoto bitu na
1 a word mód nastavením tohoto bitu na 0. Word mód
umožňuje střídání dvou bitových rovin (například
znaky a atributy v textových režimech). V tomto
módu jsou adresní bity posunuty doleva a bit nula
je nahrazen bitem 13 nebo 15. VGA podoruje také
double-word mód, kdy je adresa posunuta o dva bity
doleva a bity 0 a 1 jsou nahrazeny bity 12 a 13.
7 Hardwarový reset
Nastavení tohoto bitu na jedna povoluje
generování signálů pro vertikální a horizontální
zpětné chody paprsku (normální nastavení).
Nastavení na nula přeruší generování těchto
signálů.
Line Compare Register Port: 3?5h
Porovnání řádky Index: 18h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
hodnoty řádkového čítače. Po dosažení této hodnoty
čítačem dojde k vynulování čítače. Použití této
techniky může část obrazovky eliminovat ze
scrolování. Tato technika může být použita také
k implementování dvou oken. První část obrazovky
zobrazuje data od adresy určené registrem počáteční
adresa (index 0ch a 0dh). Druhé okno zobrazuje vždy
data od adresy 0. V 200 řádkových módech by zde měla
být uložena pouze sudá hodnota. 9. bit tohoto
registru je uložen v registru přetečení (index 07h)
a 10. bit v registru počet řádek na znak (index 09h).
Bity Popis
---- ---------------------------------------------------
0-7 Osm méně významných bitů hodnoty čítače, při které
se tento řádkový čítač vynuluje.
Registry grafického kontroleru
Grafický kontroler má na starosti komunikaci
videopaměti s procesorem. Jeho registry tedy ovládají způsob
práce CPU s videopamětí. Některé z registrů grafického
kontroleru umožňují emulaci CGA režimů.
Funkce registrů nám může být zřejmější pokud si
osvěžíme operace prováděné kontrolerem při čtení a zápisu do
paměti. Ke každé bitové rovině přísluší jeden 8bitový
latch-registr. V grafických módech nepřistupuje do paměti
přímo procesor, ale aritmeticko-logická jednotka (ALU)
adaptéru. Při čtení z videopaměti, jsou data načtena do tzv.
latch-registrů. Obvykle je z celé osmice bodů měněn pouze
jeden. Latch-registry tedy slouží k uchování hodnoty
nemodifikovaných bitů. Při zápisu do paměti, jsou příslušně
(v závislosti na zapisovacím režimu) upraveny naposled čtené
latch-registry a jejich obsah je uložen do videopaměti.
Latch-registry by měly být načteny před modifikací paměti
pomocí instrukce MOV (nebo nějaké její obdoby).
Grafický kontroler umožňuje volit z několika způsobů
kombinování dat v latch-registrech s daty z procesoru. Data
mohou být s latch-registry kombinována pomocí logických
operací AND, OR, XOR, mohou být rotována. Bitové pozice
mohou být maskovány atd.
Graphics 1 and 2 Address Register Port: 3ceh
Adresový registr grafického kontroleru
============================================================
Popis: Obsah tohoto registru určuje, který registr bude
mapován na port 3cfh. Index potřebného registru se
zapisuje na port 3ceh.
/-----------------------------------------------------\
|Index | Registr |
|------+----------------------------------------------|
| 0 | Set/Reset |
| 1 | Povolení Set/Reset (Enable Set/Reset) |
| 2 | Porovnání barev (Color Compare) |
| 3 | Kombinace dat (Data Rotate) |
| 4 | Mapa pro čtení (Read Map Select) |
| 5 | Režim grafického kontroleru (Mode Register) |
| 6 | Různé (Miscellaneous) |
| 7 | Eliminace barev (Color Don't Care) |
| 8 | Bit mask |
\-----------------------------------------------------/
Set/Reset Register Port: 3cfh
Set/Reset registr Index: 0
============================================================
Popis: Tento registr určuje bitové roviny, do kterých bude
vždy při modifikování videopaměti zapsána nula nebo
jednička. Nastavení bitové roviny do SET režimu
způsobí, že při každém zápisu do videopaměti bude do
maskovaných bitů (registrem Bit mask) zapsána
jednička. RESET režim způsobí zapsání nul do
maskovaných bitů.
Tento registr je platný pouze v zapisovacích režimech
0 a 3. Pokud ho chcete používat v zapisovacím režimu
0, musíte nejprve příslušným bitem registru Povolení
Set/Reset povolit permanentní zapisování do bitové
roviny.
Bity Popis
---- ---------------------------------------------------
0 = 0 RESET mód pro bitovou rovinu 0
= 1 SET mód pro bitovou rovinu 0
1 = 0 RESET mód pro bitovou rovinu 1
= 1 SET mód pro bitovou rovinu 1
2 = 0 RESET mód pro bitovou rovinu 2
= 1 SET mód pro bitovou rovinu 2
3 = 0 RESET mód pro bitovou rovinu 3
= 1 SET mód pro bitovou rovinu 3
Enable Set/Reset Register Port: 3cfh
Povolení Set/Reset Index: 1
============================================================
Popis: Tento registr slouží k aktivování služby Set/Reset
pro jednotlivé bitové roviny. Nastavení bitu tohoto
registru na jedna aktivuje používání nastavení
Set/Reset registru pro určitou bitovouu rovinu.
Bity Popis
---- ---------------------------------------------------
0 Povolení Set/Reset registru pro bitovou rovinu 0
1 Povolení Set/Reset registru pro bitovou rovinu 1
2 Povolení Set/Reset registru pro bitovou rovinu 2
3 Povolení Set/Reset registru pro bitovou rovinu 3
Color Compare Register Port: 3cfh
Porovnání barev Index: 2
============================================================
Popis: Tento registr slouží k uchování barvy, která je
porovnávána s obsahem videopaměti. Po přečtení paměti
budou bity, které odpovídají pixelům s barvou shodnou
s barvou v tomto registru, nastaveny ma jedna. Bity
neshodujících se pixelů budou nastaveny na nula.
Tento registr pracuje pouze ve čtecím módu 1.
Jakákoliv z bitových rovin může být z porovnávání
vyřazena pomocí registru pro eliminaci barev (index
7).
Bity Popis
---- ---------------------------------------------------
0-3 Porovnávaná barva
4-7 Nepoužito
Data Rotate Register Port: 3cfh
Kombinace dat Index: 3
============================================================
Popis: Tento registr ovládá dvě funkce. Tou první je možnost
data zapisovaná procesorem do videopaměti zrotovat o
n (0-7) bodů. Druhou funkcí je možnost změny způsobu
kombinování dat z procesoru s daty v
latch-registrech.
Pokud je nastaveno použití rotace a logické operace
najednou, nejprve se provede rotace. Tento registr
nepracuje v zapisovacím módu 1 (pracuje pouze s daty
zapisovanými procesorem).
Rotace ovlivní zapisovaná data pouze v zapisovacím
módu 0.
Bity Popis
---- ---------------------------------------------------
0-2 Počet rotací vpravo
3-4 Způsob zápisu
00b Zapiš data beze změny
01b AND dat s latch-registry
10b OR dat s latch-registry
11b XOR dat s latch-registry
5-7 Nepoužito
Read Map Select Register Port: 3cfh
Mapa pro čtení Index: 4
============================================================
Popis: Tento registr vybírá bitovou rovinu, jejíž obsah bude
vrácen při čtení z videopaměti v čtecím módu 0.
Bity Popis
---- ---------------------------------------------------
0-1 Číslo bitové roviny určené ke čtení
2-7 Nepoužito
Mode Register Port: 3cfh
Režim grafického kontroleru Index: 5
============================================================
Popis: Tento registr určuje, který ze tří (čtyř - VGA)
zapisovacích a dvou čtecích režimů bude použit. Spolu
s registrem s indexem 6 (Miscellaneous) obsahují
některá nastavení týkající se organizace paměti.
Bity Popis
---- ---------------------------------------------------
0-1 Zapisovací mód
00b = Zapisovací mód 0. Map mask registr
(sequencer, index 2) určuje bitové mapy pro
zápis. Bit mask registr (index 8) slouží k
povolení nebo zakázání modifikace pixelů v
rámci byte. Data jsou zapisována do každé
odmaskované bitové roviny (pokud ovšem není
pro příslušnou rovinu aktivován Set/Reset
mód). Před ukládáním do paměti se musí
načíst její obsah do latch-registrů.
01b = Zapisovací mód 1. Do paměti je zapsán pouze
obsah latch-registrů. Používá se při
přesouvání úseků videopaměti.
10b = Zapisovací mód 2. Bit mask registr určuje
modifikované bity. Do videopaměti se
zapisuje číslo požadované barvy. Před
zápisem je nutno načíst latch-registry.
11b = Pouze VGA: Na požadovanou adresu je uložen
výsledek logické operace AND mezi Bit mask
registrem (index 8) a hodnotou obsaženou
v Set/Reset registru. Pro tento režim nemusí
být aktivní Enable Set/Reset registr (index
1).
2 Test grafického kontroleru - pouze EGA
Nastavení tohoto bitu na jedna uvede výstupy
kontroleru do stavu s vysokou impendancí.
3 Čtecí mód
0 = Do CPU je načten jeden byte zvolené bitové
mapy
1 = Do CPU je načten výsledek porovnání barev
pixelů na požadované adrese s registrem pro
porovnání barev (index 2).
4 Sudé/liché
Pokud je tento bit nastaven na jedna jsou
liché adresy uloženy v lichých bitových rovinách a
sudé adresy v sudých bitových rovinách. Toto
nasatvení se týká pouze grafického kontroleru.
Využívá se zejména v textových režimech a v
režimech zachovávajících komaptibilitu s CGA. Pokud
je tento bit nastaven na jedna, je obvykle i
sequencer nastaven do patřičného režimu (bit 2
paměťového režimu, index 4).
5 Posuvný registr
Když je tento bit nastaven na jedna, jsou
sudé bity z obrazové paměti zapisovány do sudých
bitových map a stejně tak jsou liché bity
zapisovány do lichých bitových map. Tak jsou dva za
sebou v paměti zapsané bity rozděleny do dvou
posuvných registrů. To umožňuje emulaci barev CGA
režimů.
6 256barevný režim - pouze VGA
Tento bit má podobnou funkci jako bit 5. Data
jsou do posuvných registrů přesouvána tak, že jeden
byte je převeden na matici 2 x 4 bity. To je
potřebné pro atributový kontroler, jehož všechny
funkce nefungují v 256barevném režimu.
Miscellaneous Register Port: 3cfh
Různé Index: 6
============================================================
Popis: Tento registr ovládá některé funkce související s
organizací paměti grafického kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Grafický režim
Tento bit je nastaven na jedna v grafických
režimech a na nula v textových.
1 Zřetězení lichých map do sudých
Tento bit je používán ve spojení s bitem 4
registru režimu grafického kontroleru (index 4).
Liché adresy jsou zapsány do lichých bitových map a
sudé adresy jsou zapsány do sudých bitových map.
Při nastavení tohoto bitu na jedna je nejméně
významný bit adresy zaměněn s bitem 13 nebo 15
(podle počtu instalované paměti). To způsobí, že v
paměti jsou nejprve bitové roviny 0 a 2 a až za
nimi následují roviny 1 a 3.
2-3 Mapování paměti
Tyto bity určují umístění a velikost
adresního procesoru, do kterého se bude mapovat
videopaměť.
/------------------------------\
| Hodnota | Počátek | Velikost |
|---------+---------+----------|
| 00b | a0000h | 128K |
| 01b | a0000h | 64K |
| 10b | b0000h | 32K |
| 11b | b8000h | 32K |
\------------------------------/
4-7 Nepoužito
Color Don't Care Register Port: 3cfh
Eliminace barev Index: 7
============================================================
Popis: Tento registr umožňuje vynechat některé bitové roviny
z porovnávání barev, pokud je aktivní čtecí mód 0.
Pokud je tento registr nastaven na 0fh, jsou na shodu
barvy porovnávány všechny bitové roviny. Pokud
registr obsahuje nulu, porovnávání vyhovuje jakákoliv
barva.
Bity Popis
---- ---------------------------------------------------
0 = 0 Kontroluje se zda obsah bitové roviny 0
odpovídá bitu 0 registru porovnání barev
(index 2)
1 = 0 Kontroluje se zda obsah bitové roviny 1
odpovídá bitu 1 registru porovnání barev
(index 2)
2 = 0 Kontroluje se zda obsah bitové roviny 2
odpovídá bitu 2 registru porovnání barev
(index 2)
3 = 0 Kontroluje se zda obsah bitové roviny 3
odpovídá bitu 3 registru porovnání barev
(index 2)
4-7 Nepoužito
Bit Mask Register Port: 3cfh
Bit mask registr Index: 8
============================================================
Popis: Tento registr omezuje přístup k jednotlivým bitům
jedné adresy videopaměti. Nastavení odpovídajících
bitů na jedna povolí modifikaci příslušných bitů
videopaměti. Pro zápis jednoho bodu je tedy pouze
jeden bit tohoto registru nastaven na jedna. Před
zápisem do paměti je potřeba načíst obsah latch
registrů.
Zapisovací mód 1 tímto registrem není ovlivněn
(narozdíl od Map mask registru).
Bity Popis
---- ---------------------------------------------------
0-7 Nastavení bitu na jedna povolí modifikace
příslušného bitu na adrese videopaměti.
Registry atributového kontroleru
Registry atributového kontroleru ovládají přiřazení
barev jednotlivým číslům barev, rámečku a pozadí. Obvykle do
atributového kontroleru přicházejí 4 bity. Ty jsou použity
jako odkaz do palety, ze které je vybrána příslušná barva k
zobrazení. Na VGA je hodnota tohoto paletového registru po
úpravách předána DAC.
Registry atributového kontroleru jsou přístupné přes
port 3c0h. Tento port má jednu zvláštnost. Slouží zároveň
jako adresový i datový port registrů atributového
kontroleru. Po každém zápisu se jeho funkce mění. Nemůžeme
tedy mít jistotu, zda je na portu právě datový či adresový
registr (změnu mohla provést například nějaká rutina běžící
pod přerušením). Na port 3c0h se namapuje adresový registr
atributového kontroleru po každém čtení vstupního stavového
registru 1 (port 3?ah). Čtení tohoto registru má ještě jednu
výhodu. Jeho bit 0 indukuje probíhání zpětného chodu paprsku
a atributové registry by měly být měněny jen během této
doby. Pokud tedy chceme měnit některý z registrů
atributového kontroleru, měli bychom nejprve počkat na
zpětný chod paprsku a poté měnit registr. Například takto:
mov DX, 3dah ;číslo portu vstupního stavového registru 1 (3bah pro MDA)
WaitRetrace:
in AL, DX ;čtení obsahu registru
and AL, 1 ;odmaskování bitu 0
jnz WaitRetrace ;čekání na zpětný chod elektronového paprsku
mov DX, 3c0h ;číslo portu pro registry atributového kontroleru
mov AL, Index ;index požadovaného registru pro změnu
out DX, AL ;nastavení adresového registru
mov AL, Hodnota ;nová hodnota do registru
out DX, AL ;zápis do datového registru
Na kartách VGA lze nastavení atributových registrů číst z
portu 3c1h.
Attribute Address Register Port: 3c0h
Adresový registr atributového kontroleru
============================================================
Popis: Do tohoto registru se zapisuje index registru, který
bude přístupný pro zápis na portu 3c0h a pro čtení na
portu 3c1h (druhá možnost je pouze na VGA). Nastavení
portu 3c0h do adresového módu se provede přečtením
vstupního stavového registru 1 (port 3bah nebo 3dah).
Na kartách EGA musí být bit 5 před změnou paletových
regitrů nastaven na nula a po změně nastaven zpět na
jedna.
/----------------------------------------------------\
|Index| Registr |
|-----+----------------------------------------------|
|0-0fh| Registry palety |
| 10h | Režim atributového kontroleru (Mode Control) |
| 11h | Barva rámečku (Overscan Color) |
| 12h | Povolení bitových rovin (Color Plane Enable) |
| 13h | Horizontální posun (Horizontal Pel Panning) |
| 14h | Výběr barvy (Color Select) |
\----------------------------------------------------/
Bity Popis
---- ---------------------------------------------------
0-4 Index registru atributového kontroleru
5 Povolení přístupu k paletě - pouze EGA
Nastavení tohoto bitu na jedna povolí přístup
karty EGA k paletovým registrům.
6-7 Nepoužito
Palette Registers Port: 3c0h
Registry palety Index: 0-0fh
============================================================
Popis: Tyto registry obsahují informace o zobrazované barvě
příslušející číslu barvy. Každá barva (číslo 0-15) má
svůj paletový registr. Ten obsahuje informace, které
určují barvu skutečně zobrazované barvy. Na kartě EGA
slouží k určení skutečně zobrazované barvy šest bitů.
Po dvojicích náleží jednotlivým základním barvám.
Mohou tak vytvářet až 64 různých odstínů (najednou
zobrazitelných je jich však pořád jen 16). Na
kartách VGA je hodnota paletového registru použita
jako odkaz do 18bitového DAC registru, který obsahuje
jeden z 262144 možných odstínů použitých pro
zobrazení dané barvy. Pomocí registru pro výběr barvy
(index 14h) mohou být informace jdoucí z paletových
registrů do DAC upraveny.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Modrá
1 Zelená
2 Červená
3 Intenzivní modrá
4 Intenzivní zelená
5 Intenzivní červená
6-7 Nepoužito
VGA:
Bity Popis
---- ---------------------------------------------------
0-5 Odkaz do jednoho z DAC registrů
6-7 Nepoužito
Mode Control Register Port: 3c0h
Režim atributového kontroleru Index: 10h
============================================================
Popis: Tento registr uchovává informace o pracovním režimu
atributového kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Textový/grafický režim
= 0 textový režim
= 1 grafický režim
1 Monochromatický/barevný displej
= 0 určuje použití barevného adaptéru
= 1 určuje použití monochromatického adaptéru
2 Podpora čárové grafiky
Tento bit je používán v zobrazovacím módu 7,
pokud jsou používány 9 bodů široké znaky. Pokud je
tento bit nastaven na jedna, je u znaků s ASCII
kódem c0h-dfh kopírován osmý bit do devátého, tj.
čárová grafika zůstane nepřerušená. Pokud je
nastaven na nula, je devátý pod znaku vykreslen
barvou pozadí.
3 Volba intenzita/blikání
= 0 7. bit atributu bude považován za intenzitu
barvy pozadí
= 1 7. bit atributu bude určovat blikání znaku
4 Nepoužito
5 Vypnutí horizontálního posuvu - pouze VGA
= 0 Horizontální posun je aplikován na celý obraz
= 1 Horizontální posun je aplikován pouze na
horní část obrazu. Část obrazu následující za
řádkou obsaženou v registru pro porovnání
řádky (CRTC index 18h) nebude posouvána.
6 Šířka posuvu - pouze VGA
Nastavení tohoto bitu na jedna, způsobí že
každému bodu přísluší 8 bitů (režim 13h, 256
barev). V ostatních režimech by měl být tento bit
nastaven na nula.
7 Přemapování bitů 4 a 5 - pouze VGA
= 0 Obsahy peltových registrů jsou do DAC
posílány přímo, bez modifikací.
= 1 Bity 4 a 5 paletového regsitru jsou nahrazeny
bity 0 a 1 registru výběr barvy (index 14h) a
teprve poté poslány do DAC.
Overscan Color Register Port: 3c0h
Barva rámečku Index: 11h
============================================================
Popis: Tento registr určuje barvu rámečku pomocí intenzit
složek základních barev (EGA) nebo pomocí odkazu do
DAC registru (VGA).
Barva rámečku bývá obvykle černá (registr obsahuje
0). V některých módech s vyšším rozlišením nelze
použít jiné barvy rámečku než černé.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Modrá
1 Zelená
2 Červená
3 Intenzivní modrá
4 Intenzivní zelená
5 Intenzivní červená
6-7 Nepoužito
VGA:
Bity Popis
---- ---------------------------------------------------
0-5 Odkaz do jednoho z DAC registrů
6-7 Nepoužito
Color Plane Enable Register Port: 3c0h
Povolení bitových rovin Index: 12h
============================================================
Popis: Tento registr určuje bitové roviny, ze kterých bude
brána informace o čísle barvy bodu pro odkaz do
registrů palety. Obvykle tento registr obsahuje
hodnotu 0fh, tj. barva je získávána ze všech čtyř
bitových rovin.
Bity Popis
---- ---------------------------------------------------
0 = 1 Barva je brána i z bitové roviny 0
1 = 1 Barva je brána i z bitové roviny 1
2 = 1 Barva je brána i z bitové roviny 2
3 = 1 Barva je brána i z bitové roviny 3
4-5 Volba diagnostických bitů
Tyto bity určují, které bity atributového
registru se objeví v bitech 4 a 5 vstupního
stavového registru 1.
/-----------------\
| Hodnota | Bity |
|---------+-------|
| 00b | 2 a 0 |
| 01b | 5 a 4 |
| 10b | 3 a 1 |
| 11b | 7 a 6 |
\-----------------/
6-7 Nepoužito
Horizontal PEL Panning Register Port: 3c0h
Horizontální posun Index: 13h
============================================================
Popis: Tento registr určuje o kolik bodů bude obraz posunut
doleva. Při použití virtuální obrazovky (viditelná
část obrazovky je pouze částí větší virtuální
obrazovky) jej lze s výhodou uplatnit pro dosažení
horizontálního scrolování.
Bity Popis
---- ---------------------------------------------------
0-3 Počet bodů, o které se obraz posune doleva.
/-----------------------------------------\
| | Posunutí pro různé |
|Obsah | zobrazovací režimy |
|registru|--------------------------------|
| | 7, 0-3 VGA | 13h VGA | Ostatní |
|--------+------------+---------+---------|
| 000b | 1 | 0 | 0 |
| 001b | 2 | nelze | 1 |
| 010b | 3 | 1 | 2 |
| 011b | 4 | nelze | 3 |
| 100b | 5 | 2 | 4 |
| 101b | 6 | nelze | 5 |
| 110b | 7 | 3 | 6 |
| 111b | 8 | nelze | 7 |
| 1000b | 0 | nelze | nelze |
\-----------------------------------------/
Color Select Register - pouze VGA Port: 3c0h
Výběr barvy Index: 14h
============================================================
Popis: Tento registr umožňuje rozšířit barvu v paletovém
registru na 8 bitů. Obsahuje dva bity, které se
přidají k 6bitové hodnotě paletového registru.
Dosáhneme tak možnosti výběru ze všech 256 DAC
registrů. Obsahuje také dva bity, které mohou
nahradit bity 4 a 5 paletového registru.
Tento registr neovlivňuje zobrazovací mód 13h.
Bity Popis
---- ---------------------------------------------------
0-1 Tyto bity nahrazují bity 4 a 5 paletových registrů,
pokud je bit 7 režimu atributového kontroleru
nastaven na jedna.
2-3 Tyto bity se přidávají k hodnotě jdoucí z
paletového registru do DAC.
4-7 Nepoužito
Registry číslicově-anologového převodníku - pouze VGA
DAC převádí binární barevnou informaci na analogový
signál pro monitor. Používá k tomu DAC registry, které jsou
funkčně obdobné s paletovými registry. Každý DAC registr
obsahuje 18bitovou hodnotu, které se skládá z šesti bitů pro
každou základní barvu (červená, modrá, zelená).
Osmnáctibitová hodnota nám dává možnost výběru jedné z
262144 možných barev v každém z 256 DAC registrů. Standardně
prvních 16 DAC registrů obsahuje barvy shodné s barvami na
EGA. Dalších 16 DAC registrů obsahuje různé stupně šedi.
Zbylých 224 registrů obsahuje různé barvy. Pouze v režimu
13h může být zobrazeno všech 256 barev najednou. Běžně může
být najednou zobrazeno 16 barev. Pomocí atributového
kontroleru však můžeme změnit šestnáctici používaných DAC
registrů a dosáhnout tak zajímavých efektů okamžitou změnou
všech barev.
DAC State Register Port: 3c7h
Stavový registr DAC pouze VGA, pouze čtení
============================================================
Popis: Tento registr umožňuje zjistit aktuální stav datového
registru DAC, který může být ve dvou režimech
- zapisovacím nebo čtecím. Během čtecího režimu může
být obsah tohoto registru pouze čten a během
zapisovacího režimu naopak nesmí být čten obsah
tohoto registru.
Bity Popis
---- ---------------------------------------------------
0-1 = 00b Zapisovací režim
= 11b Čtecí režim
2-7 Rezervováno
PEL Address Read Mode Port: 3c7h
Adresový registr pro čtecí režim pouze VGA, pouze zápis
============================================================
Popis: Tento registr určuje číslo DAC registru, který bude
čten. Po nastavení tohoto registru můžete z datového
registru přečíst po sobě tři 6bitové hodnoty
(intenzitu červené složky, intenzitu zelené složky a
intenzitu modré složky). Po přečtení těchto tří
hodnot se obsah adresového registru automatický zvýší
a bude ukazovat na následující DAC registr.
Zápis na datový port během čtení může poškodit
informace uložené v DAC paletě.
Dokumentace karty VGA uvádí, že jednotlivé přístupy k
datovému registru by měly následovat nejdříve po 240
nanosekundách.
Bity Popis
---- ---------------------------------------------------
0-7 Číslo DAC registru pro čtení
PEL Address Write Mode Port: 3c8h
Adresový registr pro zápis pouze VGA, pouze zápis
============================================================
Popis: Tento registr určuje číslo DAC registru, do kterého
bude zapisováno. Po nastavení tohoto registru na
odpovídající hodnotu, můžete do datového registru
zapsat po sobě tři 6bitové hodnoty odpovídající
postupně intenzitě červené složky, intenzitě zelené
složky a konečně intenzitě modré složky barvy. Po
zápisu tří hodnot na datový registr se automaticky
zvýší obsah adresového registru pro zápis.
Čtení z datového portu během zápisu může poškodit
informace uložené v DAC tabulce.
Dokumentace karty VGA uvádí, že jednotlivé přístupy k
datovému registru by měly následovat nejdříve po 240
nanosekundách.
Bity Popis
---- ---------------------------------------------------
0-7 Číslo DAC registru pro zápis
PEL Data Register Port: 3c9h
Datový registr pouze VGA
============================================================
Popis: Tento registr umožňuje zapisovat a číst nastavení
jednotlivých DAC registrů. Při každém přístupu k DAC
registru by se měly použít tři čtení/zápisy pro
všechny tři základní složky - posobě červená, zelená
a modrá. Každé složce přísluší 6 bitů.
Dokumentace karty VGA uvádí, že jednotlivé přístupy k
datovému registru by měly následovat nejdříve po 240
nanosekundách.
Bity Popis
---- ---------------------------------------------------
0-5 Hodnota určená ke čtení/zápisu
6-7 Rezervováno
PEL Mask Port: 3c6h
Maska pro přístup k DAC registrům pouze VGA
============================================================
Popis: S hodnotou jdoucí do DAC a obsahem tohoto registru se
provádí binární AND a teprve výsledek této operace
směřuje do DAC. Standardně je hodnota registru 0ffh,
tj. na příchozích datech se nic nezmění. Nižší
hodnota snižuje počet použitelných barev.
Bity Popis
---- ---------------------------------------------------
0-7 Hodnota masky
[Pokračování] |
[Obsah]
Copyright © Jiří Kosek