Programovani registru
Zobrazovaci adaptery EGA a VGA maji nekolik registru,
ktere ovlivnuji funcki techto adapteru. O nekterych z techto
registru jsme se jiz zminili v popisu pristupu do pameti
adapteru. Registry lze rozdelit do sesti skupin:
- externi registry (External registers)
- registry sequenceru (Sequencer registers)
- CRTC registry (CRTC = Cathode Ray Tube Controller -
kontroler obrazovky)
- registry grafickeho kontroleru (Grapics Controller
registers)
- atributove registry (Attribute registers)
- DAC (Digital to Analog Converter = cislicove
anologovy prevodnik) registry - ty ma pouze VGA
Registry patrici do teze skupiny maji vetsinou uzce spjaty
vyznam a ovladaji jednu z casti tvorby a zobrazovani dat na
obrazovce. Sequencer ridi tok dat mezi videopameti a
atributovym kontrolerem. Atributovy kontroler ma na starosti
praci s barvou a paletami barev. DAC prevadi v karte VGA
digitalni informaci o barve na prislusna napeti pro
analogovy monitor. Pomoci CRTC registru lze ovladat casovani
obrazovky. Graficky kontroler ovlada mody pristupu k
obrazove pameti. Externi registry zajistuji nekolik funkci,
ktere nejsou zarazeny v ostatnich skupinach registru. DAC
regsitry jsou pritomny pouze na kartach VGA, nebot EGA
pouziva digitalni prenos obrazovych informaci do monitoru.
K vetsine registru (vyjimku tvori externi registry) se
pristupuje neprimo. Kazda skupina registru ma vlastni
adresovy a datovy registr. Tyto dva registry jsou mapovany
na vstupne-vystupnich portech procesoru. Pokud chcete
pristupovat k nejakemu registru, musite nejprve na prislusny
port nalezici adresovemu registru zapsat index vami
pozadovaneho registru a pak muzete na portu odpovidajicimu
datovemu registru pracovat s vami pozadovanym registrem.
Pokud tedy chcete zapsat hodnotu 10 do Map mask registru
(ten ma index 2 v sequenceru), muzete pouzit nasledujici
rutinu:
mov DX, 3c4h ;cislo portu adresoveho registru sequenceru
mov AL, 2 ;index Map mask registru
out DX, AL ;zapsani hodnoty na port
inc DX ;v DX je port datoveho registru sequenceru
mov AL, 10 ;pozadovana hodnota pro Map mask
out DX, AL ;zapsani hodnoty v AL na port
Port adresoveho i datoveho registru lezi hned vedle sebe.
Mikroprocesory 80x86 umoznuji pomoci jedne instrukce
(OUT DX, AX) zapis na dva nasledujici porty. Vetsina
grafickych karet umoznuje pristup k registrum pomoci teto
programovaci techniky. Obecne pak lze psat:
mov DX, Port adresniho registru
mov AL, Index pozadovaneho registru
mov AH, Hodnota zapisovana do pozadovaneho registru
out DX, AX
Vyse uvedena rutina modifikujici Map mask registr lze
pouzitim teto finty prepsat do tvaru kratke rutinky:
mov DX, 3c4h
mov AX, 2 + 256 * 10
out DX, AX
Adresovy registr si uchvava svou hodnotu az do dalsi zmeny.
Modifikujete-li tedy pouze jeden registr ze skupiny staci
nastavit adresni registr jednou a menit pouze hodnoty
zapisovane do datoveho registru. Zmenu adresniho registru je
v takovych pripadech vyhodne umistit vne cyklu. Musite vsak
byt opatrni a vyloucit to, ze vam index zapsany v adresnim
registru zmeni volani sluzby BIOS nebo program aktivovany
pomoci preruseni. Pokud si nejste jisti, ze nemuze dojit ke
zmene tohoto registru vyvolanim nejakeho rezidentniho
programu, radsi zakazte po dobu provadeni operaci preruseni.
Do registru na karte EGA lze pouze zapisovat. VGA
umoznuje cist aktualni stav registru s vyjimkou
latch-registru, adresniho registru atributoveho kontroleru a
Input-status registru. Zjisteni aktualniho nastaveni karty
VGA je tedy pouze otazkou precteni nekolika hodnot z portu.
U EGA je uz situace slozitejsi. Pokud je aktivni videomod
nasatven pomoci BIOS, mely by byt potrebne obsahy registru
spolu s dalsimi informacemi ulozeny v ukladaci oblasti BIOS.
Pokud pouzivate adapter VGA a chcete modifikovat
nektery z jeho registru, meli byste nejprve nacist obsah
tohoto registru, pote zmenit pouze pozadovane bity a
vysledek zapsat zpet na port. Zajistite tak kompatibilitu s
nasledujicimi verzemi zobrazovacich adapteru.
Externi registry
Externi registry poskytuji na adapterech EGA a VGA nekolik
uzitecnych funkci. Narozdil od vetsiny registru
zobrazovaciho adapteru se k temto registrum pristupuje
primo. Kazdy z techto registru ma vyhrazen vlastni port.
Miscellaneous Output register Port: 3c2h
pouze zapis
===========================================================
Popis: Tento registr umoznuje zmenu nekolika nastaveni
adapteru, ktere ovlivnuji jeho cinnost.
Hardwarovy reset pocitace nastavi vsechny bity v
tomto registru na 0.
Tento registr je urcen pouze pro zapis, a to jak na
EGA tak i na VGA. Pokud mate VGA kartu muzete si
precist nastaveni tohoto registru z portu 3cch.
Bity 2 a 3 mohou byt pouzity ke zmene casovani. Pokud
na feature-konektor pripojite zdroj kmitani o vyssi
frekvenci nez je obvykle a zmenite nastaveni CRTC
registru, muzete dosahnout vyssiho rozliseni.
Bity Popis
---- ---------------------------------------------------
0 Volba portu pro CRTC registry (3d?h/3b?h)
Tento bit urcuje umisteni portu CRTC
kontroleru a Input-status registru 1. Nastaveni
tohoto bitu na 0 urcuje kompatibiltu
s monochromatickymi adaptery (MDA), cisla portu
jsou 3b?h. Naopak nasatveni tohoto bitu na jedna
znamena cisla portu 3d?h, coz odpovida barevnym
adapterum.
Pred tim nez budete pracovat s CRTC registry
ci pripadne s Input-status registrem 1, meli byste
pomoci tohoto bitu zjistit, na kterych portech jsou
prislusne registry dostupne.
1 Povoleni pristupu do RAM
Nastaveni tohoto bitu na 0 znemozni procesoru
pristup k pameti videoadapteru. Standardni
nastaveni tohoto bitu je 1, tj. pristup k pameti je
povolen.
2-3 Nastaveni rychlosti casovace
Tyto bity urcuji frekvenci casovace podle
nasledujici tabulky:
/--------------------------------------------\
| Hodnota | EGA | VGA |
|---------+-----------------+----------------|
| 00b | 14MHz | 25MHz |
|---------+-----------------+----------------|
| 01b | 16MHz | 28MHz |
|---------+----------------------------------|
| 10b | Frekvence je urcena externim |
| | signalem (z feature-konektoru) |
|---------+----------------------------------|
| 11b | Nepouzito | Nepouzito |
\--------------------------------------------/
Pred zmenou tohoto nastaveni byste meli pomoci
Reset-registru sequenceru vyvolat synchronni reset
adapteru.
4 Vypnuti interniho ovladace obrazovky (pouze EGA)
Tento bit urcuje puvodce videosignalu pro
monitor. Obvykle je tento bit nastaven na 0 a
adapter EGA ovlada pripojeny monitor. Pokud je bit
nastaven na 1, signal pro monitor pochazi z
vystupnich pinu feature-konektoru. Protoze tento
konektor obsahuje i vstupni piny, muze zarizeni
pripojene pomoci feature-konektoru kombinovat
signal z karty EGA se signalem z nejakeho jineho
zdroje (napriklad z videa).
5 Strankovy bit pro prokladane mody
Tento bit prepina mezi dvema 64K strankami
pameti z cele 128K roviny, kdyz je aktivni mod s
prokladanim radku, tj. sude radky jsou v jedne
strance pameti a liche v druhe. Nastavene tohoto
bitu na 0 mapuje do segmentu vyhrazeneho pro
videoadapter dolnich 64K a nastaveni na 1 mapuje
hornich 64K.
6 Polarita horizontalniho zatemnovaciho impulsu
Polarita horizontalniho zpetneho paprsku je
kladna, pokud je tento bit nastaven na 0, a
zaporna, pokud je nasatven na 1. Digitalni monitory
pouzivaji kladnou polaritu. Na analogovyvh
monitorech tento bit spolu s bitem 7 urcuji pocet
radek na obrazovce.
7 Polarita vertikalniho zatemnovaciho impulsu
Polarita vertikalniho zpetnehoo impulsu je
kladna, pokud je tento bit nastaven na 0, a
zaporna, pokud je nastaven 1. Monochraomaticky
monitor pouziva zapornou polaritu, barevne monitory
pouzivaji kladne polarity a analogove monitory
pouzivaji tento bit spolu s bitem 6 k urceni poctu
radek na obrazovce.
Pocty radek na obrazovce pro analogove monitory
jsou kodovany nasledujicim zpusobem:
/------------------------------------\
| Bity 6 a 7 | EGA | VGA |
|------------+-----------+-----------|
| 00b | 200 radek | Nepouzito |
| 01b | 350 radek | 350 radek |
| 10b | Nepouzito | 400 radek |
| 11b | Nepouzito | 480 radek |
\------------------------------------/
Feature Control Register Port: 3?ah
pouze zapis
============================================================
Popis: Na karte EGA jsou bity tohoto registru pouzity
k ovladani signalu na dvou pinech feature-konektoru
(piny FC0 a FC1). Pomoci techto dvou signalu muzete
ovladat zarizeni pripojene k feature-konektoru.
Cislo portu je bud 3bah (monochromaticke adaptery)
nebo 3dah (barevne adaptery).
VGA tyto bity nepouziva, bit 3 musi byt nastaven na
0. Karta VGA umoznuje cteni obsahu tohoto registru na
portu 3cah.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Nastaveni tohoto bitu je promitano na pin 21
feature-konektoru (FC0).
1 Nastaveni tohoto bitu je promitano na pin 20
feature-konektoru (FC1).
2-7 Rezervovano
VGA:
Bity Popis
---- ---------------------------------------------------
0-7 Rezervovano (bit 3 musi byt nula)
Input Status Register 0 Port: 3c2h
Vstupni stavovy registr 0 pouze cteni
============================================================
Popis: Tento registr zpristupnuje nekolik dulezitych
informaci o graficke karte. Na obou adapterech EGA i
VGA je urcen pouze pro cteni.
Na adapterech EGA bity 5 a 6 odpovidaji signalum FEAT
0 a FEAT 1 z feature-konektoru. Mohou byt vyuzity pro
komunikaci mezi programem a zarizenim pripojenym pres
feature-konektor. Na karte VGA jsou tyto dva bity
rezervovany.
Bity Popis
---- ---------------------------------------------------
0-4 Nepouzito
5 Tento bit odpovida signalu na pinu 19
feature-konektoru (FEAT 0) - pouze EGA
6 Tento bit odpovida signalu na pinu 17
feature-konektoru (FEAT 1) - pouze EGA
7 Preruseni obrazovky
Tento bit je nastaven na 1, pokud bylo
vyvolano preruseni IRQ2 zacatkem vertikalniho
zatemnovaciho impulsu. Pouziva se pro kontrolu zda
preruseni bylo opravdu vyvolano kartou EGA/VGA,
nebot IRQ2 je pouzivano i jinymi zarizenimi (u AT
je na nej v kaskade napojen dalsi radic preruseni).
Tento bit zustava nastaven na 1 do te doby, nez je
smazan. Obsluha preruseni by tedy mela tento bit
smazat a znovu povolit preruseni pomoci registru
CRTC - Konec vertikalniho zpetneho chodu (index
tohoto registru je 11h).
Input Status Register 1 Port: 3?ah
Vstupni stavovy registr 1 pouze cteni
============================================================
Popis: Tento registr zprustupnuje nekolik dulezitych
informaci o graficke karte. Na obou adapterech EGA i
VGA je urcen pouze pro cteni.
Cislo portu je bud 3bah (monochromaticke adaptery)
nebo 3dah (barevne adaptery).
Bity Popis
---- ---------------------------------------------------
0 Pristup adapteru k pameti
Tento bit je nastaven na jedna behem aktivniho
zobrazovaciho intervalu (tj. adapter pristupuje k
videopameti). Behem zatemnovaciho impulsu je tento
bit nastaven na 0. Tento bit je zde umisten pro
zachovani zpetne kompatibility s CGA. U karty CGA
dochazelo pri soucasnem pristupu videodapteru i
procesoru do pameti k porucham obrazu (tzv.
snezeni). Zapis do pameti adapteru EGA/VGA muze byt
provaden kdykoli, bez jakychkoli vedlejsich efektu.
1 Svetelne pero je prilozeno k obrazovce - pouze EGA
Tento bit je nastaven na jedna, pokud je
svetelne pero prilozeno k obrazovce. Pokud je
svetelne pero neaktivni obsahuje tento bit 0.
2 Spinac svetelneho pera - pouze EGA
Tento bit je nastaven na jedna, pokud je
spinac svetelneho pera otevreny, a na hodnotu 0 je
nastaven, pokud je sepnuty.
3 Indikace vertikalniho zatemnovaciho signalu
Tento bit je nastaven na 1 pri zpetnem
vertikalnim zatemnovacim impulsu, tj. kdyz se
elektronovy paprsek obrazovky, ktery vytvari na
stinitku obraz, vraci z praveho dolniho rohu
obrazovky do leveho horniho. Po skonceni
zatemnovaciho signalu je tento bit nastaven az do
dalsiho zatemneni na nula.
4-5 Diagnosticke pouziti
Tyto dva bity odpovidaji nastaveni dvou bitu
registru atributu. Vyber bitu je uskutecnen pomoci
bitu 4 a 5 registru atributoveho kontroleru pro
pristup k bitovym rovinam (Color Enable Register).
6-7 Nepouzito
Video Subsystem Enable Register Port: 3c3h
Registr ovladani aktivity videokarty pouze VGA
============================================================
Popis: Tento registr ovlada aktivitu karty VGA. Pomoci bitu
1 registru Miscellaneous-Output (povoleni pristupu do
RAM) muze byt zakazan procesoru pristup k pameti a k
registrum videodapteru. Pokud je zakazan pristup
procesoru do pameti a k registrum videodapteru, muze
byt i nadale vytvaren adapterem obraz. Podminkou pro
vytvareni obrazu je nastaveni bitu 1 registru pro
ovladani aktivity videokarty na jedna.
Bity Popis
---- ---------------------------------------------------
0 = 1 Je generovan obraz.
= 0 Neni generovan obraz.
1-7 Rezervovano
Registry sequenceru
Ulohou sequenceru v procesu vytvareni obrazu je
ovladani toku dat z pameti a grafickeho kontroleru do
atributoveho kontroleru. V kazdem cyklu hodin behem
aktivniho zobrazovaciho intervalu musi sequencer dodat
atributovemu kontroleru 4 bity, ktere jsou prevedeny na
pixel odpovidajici barvy. V grafickych rezimech je vzdy
z bitovych rovin precten byte. Bitove roviny jsou ctyri,
prectene jsou tedy 4 byte. Tyto 4 byte se ulozi do 4
posuvnych registru, odkud jsou po ctvericich bitu posilany
do atributoveho kontroleru k vytvoreni barvy. V textovych
rezimech je ASCII kod znaku pouzit jako odkaz do znakoveho
bloku, ve kterem je bitova definice tvaru znaku. Z teto
definice a atributu je opet vytvorena ctverice byte, ktera
je posuvnym registrem postoupena atributovemu kontroleru.
Na karte EGA atributovy kontroler primo ovlada
obrazovku. Karta VGA pouziva vystup atributoveho kontroleru
jako odkaz do tabulky DAC. Z teto tabulky jsou precteny
intenzity zakladnich barev a po prevedeni na odpovidajici
napeti jsou poslany na obrazovku.
Registry sequenceru ovladaji kmitocet hodin, posuvne
registry a umisteni znakoveho generatoru. Sequencer
rozdeluje pristup procesoru a adapteru k pameti, urcuje
bitove mapy pristupne procesoru. Vetsina beznych aplikaci
z registru sequenceru vyuziva pouze Map Mask a Character Map
Select registry.
Sequencer Adress Register Port: 3c4h
Adresovy registr sequenceru
============================================================
Popis: Obsah tohoto registru urcuje, ktery z registru
sequenceru bude mapovan na datovem portu 3c5h. Pro
pristup k registru sequenceru musite na tento port
zapsat index vami pozadovaneho registru sequenceru.
/---------------------------------------------------\
|Index| Registr |
|-----+---------------------------------------------|
| 0 | Reset |
| 1 | Rezim casovace (Clocking Mode) |
| 2 | Map mask |
| 3 | Vyber znakoveho bloku (Character Map Select)|
| 4 | Pametovy rezim (Memory Mode) |
\---------------------------------------------------/
Reset Register Port: 3c5h
Reset registr Index: 0
============================================================
Popis: Tento registr je pouzivan k resetovani sequenceru. To
je nezbytne pro zachovani obsahu obrazovky pri zmene
rezimu casovace. Aby sequencer pracoval musi byt oba
bity 0 a 1 nastaveny na jedna.
Bity Popis
---- ---------------------------------------------------
0 Asynchroni smazani sequenceru
Nastaveni tohoto bitu na 0 zpusobi smazani a
zastaveni sequenceru. Vystupy se uvedou do stavu s
vysokou impendaci. Tim muze byt zapricinena ztrata
obrazovych dat.
1 Synchroni smazani sequenceru
Nastaveni tohoto bitu na 0 zpusobi smazani a
zastaveni sequenceru. Do tohoto stavu by mel byt
sequencer uveden, pokud se meni rezim casovace nebo
rychlost casovace.
2-7 Nepouzito
Clocking Mode Register Port: 3c5h
Rezim casovace Index: 1
============================================================
Popis: Tento registr ovlivnuje nektere funkce souvisejici s
casovanim adapteru. Pred tim, nez menite nejake
nastaveni tohoto registru, meli byste provest
synchronni reset sequenceru.
Bity Popis
---- ---------------------------------------------------
0 8/9 taktu na jeden znak
Pokud je tento bit nastaven na 1, generuji se
standardni, 8 bodu siroke znaky. Pokud je nastaven
na 0, generuji se 9 bodu siroke znaky (pouze v MDA
a VGA textovych modech).
1 Sirka pasma pro pristup do pameti - pouze EGA
Tento bit ovlada pristupovy cas do pameti pro
videoadapter. Nastaveni tohoto bitu na jedna
vyhradi adapteru 2 z 5 pametovych cyklu. Nastaveni
tohoto bitu na nula vyhradi pro adapter 4 z 5
pametovyvh cyklu. Protoze mody s vyssim rozlisenim
potrebuji cist vice dat behem jednoho radku,
vyzaduji vsechny mody krome 0, 1, 4, 5 a 0dh 4 z 5
cyklu. Nastaveni tohoto bitu ovlivni waitstates
generovane adapterem. Behem zpetneho chodu paprsku
pokracuje na EGA pridelovani pristupu k pameti. Na
VGA je pri zpetnem chodu pristup k pameti zcela
vyhrazen procesoru.
2 4/2 posuvne registry
Obvykle je tento bit nastaven na 0. Data z
pameti jsou posilana do atributoveho kontroleru
pomoci 4 8bitovych posuvnych registru. Nastaveni
tohoto bitu na jedna kombinuje data ze dvou
bitovych rovin do 16bitovych posuvnych registru.
Tyto registry jsou nyni vsak pouze dva. Snizi se
tak pocet barev, ale zvetsi dostupna pamet.
3 1/2 hodinove frekvence
Po nastaveni tohoto bitu na jedna se bude
frekvence z casovace delit dvema. Toto zdvojeni
casovych intervalu se pouziva pro zobrazeni modu
s rozlisenim 320 x 200 ci textovych modu se 40
znaky na radku.
4 4->1 posuvne registry
Nastaveni tohoto bitu na jedna aktivuje cteni
z jedne bitove roviny po 32 bitech, ktere se pote
ulozi do posuvnych registru. Zadny ze standardnich
modu nepouziva toto nastaveni, nebot je k dispozici
dostatecne velky adresni prostor.
5 Vypnuti obrazovky
Nastaveni tohoto bitu na jedna vypne
generovani obrazu na stinitku pri zachovani vsech
internich funkci videoadapteru. Vypinani obrazovky
lze pouzit v pripade, kdy potrebujeme vyhradit
vsechen pristupovy cas do videopameti procesoru
(napriklad pro praci s velkym objemem dat). Dalsi
pouziti je v jednoduchech screensaveru (setrici
obrazovky).
6-7 Nepouzito
Map Mask Register Port: 3c5h
Map mask registr Index: 2
============================================================
Popis: Map mask registr povoluje a zakazuje modifikaci
jednotlivych bitovych map behem zapisu do pameti.
Kazdy bit nastaveny na jedna umozni modifikaci
prislusne bitove roviny.
Pokud pouzivate mody s oddelenymi sudymi a lichymi
radky, mely by mit bity 0 a 1 stejnou hodnotu, stejne
tak by mely mit bity 2 a 3 stejnou hodnotu. Pokud
pouzivate rezim zretezeni 4 bitovych map (je nastaven
v grafickem rezimu 320 x 200, 256 barev), mely by mit
vsechny bity stejnou hodnotu.
Tento registr je aktivni ve vsech zapisovacich
rezimech, tj. ovlivnuje veskera data zapisovana do
pameti videoadapteru.
Bity Popis
---- ---------------------------------------------------
0 = 1 Povolena modifikace bitove roviny 0
1 = 1 Povolena modifikace bitove roviny 1
2 = 1 Povolena modifikace bitove roviny 2
3 = 1 Povolena modifikace bitove roviny 3
4-7 Nepouzito
Character Map Select Register Port: 3c5h
Regsitr vyberu znakoveho bloku Index: 3
============================================================
Popis: Tento registr urcuje, ktera cast bitove roviny
obsahuje definici znakovove sady pro textove rezimy.
Bitova rovina 2 je rozdelena na 4 casti po 8K (na
kartach EGA s mene nez 256K prislusi kazdych 64K
jedne casti). Na kartach EGA muze kazda tato cast
obsahovat jeden znakovy blok z celkovych ctyr. VGA
muze obsahovat v jedne 8K casti dva znakove bloky.
Dva z techto osmi (u EGA ctyr) znakovych bloku mohou
byt vybrany jako primarni a sekundarni znakove sady.
Obvykle jsou primarni a sekundarni znakova sada
totozne a je mozno zobrazovat pouze 256 znaku. Pokud
je ale obsah znakovych sad rozdilny, urcuje bit 3
atributu (intenzita) pouzivanou znakovou sadu. Znaky
s nastavenou intenzitou se pak objevi jako dalsich
256 pouzitelnych znaku.
EGA musi mit vice nez 64K pameti, aby podporovala dve
znakove sady najednou.
Tento registr by mel byt nastavovan po resetu
sequenceru, protoze asynchroni smazani sequenceru
vynuluje tento registr.
Bity Popis
---- ---------------------------------------------------
0-1 Vyber primarni znakove sady
Hodnota techto dvou bitu urcuje 8K cast bitove
roviny 2 pouzitou k ulozeni primarni znakove sady.
Hodnota 0-3 odpovida znakovemu bloku 0-3.
2-3 Vyber sekundarni znakove sady
Hodnota techto dvou bitu urcuje 8K cast bitove
roviny 2 pouzitou k ulozeni sekundarni znakove sady
(bit 3 atributu = 1). Hodnota 0-3 odpovida
znakovemu bloku 0-3.
4 Nejvyssi bit vyberu sekundarni znakove sady - pouze VGA
Tento bit se pripojuje na VGA k bitum 2 a 3.
Sekundarni znakova sada muze byt na adapteru VGA
ulozena v jednom z osmi znakovych bloku.
5 Nejvyssi bit vyberu primarni znakove sady - pouze VGA
Tento bit na VGA rozsiruje bity 0 a 1.
Umoznuje volbu primarni znakove sady z celkem osmi
znakovych bloku.
6-7 Nepouzito
Memory Mode Registr Port: 3c5h
Pametovy rezim sequenceru Index: 4
============================================================
Popis: Tento registr ovlivnuje pristup sequenceru k pameti.
Bity Popis
---- ---------------------------------------------------
0 Textovy rezim
Tento bit je nastaven na jedna v textovych
rezimech a na nula v grafickych. V textovych
rezimech je bitova rovina 2 vyhrazena pro znakovy
generator.
1 Rozsireni pameti
Tento bit je nastaven na jedna, pokud ma
adapter vice nez 64K pameti. V opacnem pripade je
nastaven nula.
2 Pametovy mod s oddelenymi sudymi a lichymi adresami
Kdyz je tento bit nastaven na jedna, data na
sudych adresach jsou mapovana do sudych bitovych
rovin a data na lichych adresach jsou mapovana do
lichych bitovych map. Toto nastaveni se tyka pouze
sequenceru. Pokud je pomoci bitu 4 registru rezimu
grafickeho kontroleru prepnut i graficky kontroler
do tohoto rezimu, snadno se emuluji mody CGA. Tento
pametovy model je pouzit i v textovych rezimech,
kde jsou ASCII kody znaku ulozeny v jedne bitove
rovine a atributy v druhe.
3 Zretezeni 4 bitovych map - pouze VGA
Nastaveni tohoto bitu na jedna uvede v
cinnost mapovani podobne tomu predchozimu. Adresy
jsou vsak rozdeleny do ctyr skupin. Adresy, ktere
jsou nasobkem ctyr jsou ulozeny v bitove rovine 0.
Adresy, ktere po vydeleni ctyrmi davaji zbytek
jedna jsou ulozeny v bitove rovine 1 atd. Tento
pametovy rezim vyuziva mod 13h (320 x 200, 256
barev). Kazda bitova rovina obsahuje jen kazdy
ctvrty byte. Procesor vsak vidi celou pametovou
oblast souvisle.
4-7 Nepouzito
Registry CRTC
Registry CRTC tvori nejvetsi skupinu registru adapteru
EGA a VGA. Ovladaji veskere funkce tykajici se casovani
a synchronizace vytvareni obrazu. Jedinecnosti registru CRTC
je to, ze se mohou vyskytovat na dvou ruznych portech.
V monochromatickych rezimech se pro pristup k CRTC registrum
pouzivaji porty 3b4h/3b5h a v barevnych rezimech se
pouzivaji porty 3d4h/3d5h. Toto dvoji umisteni je dusledkem
zachovavani zpetne kompatibility s MDA a CGA. Tyto adaptery
maji totiz registry CRTC umisteny na rozdilnych portech.
Jelikoz registru CRTC je velike mnozstvi a jejich
souvislost by nemusela byt na prvni pohled zrejma, povime se
nejprve neco o zpusobu tvorby obrazu na stinitku monitoru.
Obraz je vytvaren tim, ze vrstva luminescencni latky je
aktivovana pomoci elektronoveho paprsku. Tato aktivace se
projevi rozsvicenim ozarene casti luminoforu. Cim silnejsi
elektronovy svazek dopadal na stinitko, tim jasnejsi bude
obraz. Na barevnem displeji jsou naneseny luminofory tri
zakladnich barev (bud v tenkych prouzcich vedle sebe, nebo
jako trojice tecek), ktere po slozeni davaji vyslednou
barvu.
Elektronovy paprsek zacina svuj pohyb v levem hornim
rohu obrazovky. Pri pohybu doprava vykresluje jednu radku.
Kdyz dosahne praveho okraje stinitka, paprsek se deaktivuje
a presova se na nasledujici radku vlevo (tzv. zpetny chod
paprsku). Tento cely proces se opakuje, dokud neni
vykreslena cela obrazovka. Z praveho okraje posledni radky
se deaktivovany paprsek presouva zpet do leveho horniho
rohu. Samotny obraz videopameti nezabira celou tuto plochu.
Okolo obrazu je jeste ramecek vyplneny urcitou barvou (viz
obr. 9).
Registry CRTC muzeme rozdelit do dvou skupin podle toho
zda ovlivnuji zobrazovani jedne radky (horizontalni) nebo
skladani techto radek do vysledneho obrazu (vertikalni).
Tvorbu obrazu a velikost rozliseni ovlivnuji tyto registry:
Horizontalni - Celkovy pocet znaku (index 0)
Pocet zobrazovanych znaku (index 1)
Zacatek zatemneni (index 2)
Konec zetemneni (index 3)
Zacatek zpetneho impulsu (index 4)
Konec zpetneho chodu paprsku (index 5)
Vertikalni - Celkovy pocet radek (index 6)
Zacatek zpetneho chodu paprsku (index 10h)
Konec zpetneho chodu (index 11h)
Pocet zobrazovanych radek (index 12h)
Zacatek zatemneni (index 15h)
Konec zatemneni (index 16h)
Nektere z techto registru jsou vice nez osmibitove.
Zbyvajici bity maji umisteny v registru preteceni
(Overflow-register) s indexem 7.
Horizontalni hodnoty jsou ve znacich. Pocitani
horizontalni pozice zacina od nuly a konci celkovym poctem
znaku (index 0) plus jedna (EGA) nebo plus ctyri (VGA). Data
jsou zobrazovana od 0 do poctu zobrazovanych znaku. Ten byva
obvykle 39 nebo 79. Dostavame tak 40 nebo 80 znaku na radku
(v grafice krat 8 - pocet bitu na znak - dostavame 320 nebo
640). Na pozici nasledujici za poslednim zobrazenym znakem
obvykle zacina zatemneni (hodnota registru byva nejcasteji
40 nebo 80) pri zatemneni se generuje ramecek. O nekolik
znaku pozdeji zacina zpetny chod paprsku. Registry urcujici
konec zatemneni a zpetneho chodu pouzivaji pouze svych 5
nejnizsich bitu. Pokud 5 nejnizsich bitu aktualne kresleneho
znaku odpovida konci zatemneni, zacne se vykreslovat levy
ramecek. Pote uz se ceka jen na to az bude konec zpetneho
chodu odpovidat aktualni poloze paprsku a zacina
vykreslovani nove radky. Protoze mezi koncem zpetneho chodu
a zacatkem vykreslovani nove radky je malo casu, lze
zacatek vykreslovani nove radky posunout pomoci bitu 5 a 6
registru konec zatemneni.
Vertikalni registry maji obdobny vyznam, pouze jejich
jednotkou nejsou znaky, ale radky. Vertikalni snimkovaci
frekvence byva obvykle v rozsahu od 50 do 90 Hz. Obecne lze
rici, cim vetsi je tato frekvence, tim ostrejsi
a kvalitnejsi je obraz. Pokud je tato frekvence mensi nez
60 Hz, muze nam obraz pripadat nestaly a klepajici se.
CRTC Adress register Port: 3?4h
Adresovy registr CRTC
============================================================
Popis: Adresovy registr CRTC urcuje, ktery z registru CRTC
bude pristupny pres datovy registr CRTC. Tento
registr se muze vyskytovat na dvou ruznych portech.
Na adapteru VGA muzete zjistit pomoci bitu 0 registru
precteneho z portu 3cch, ktera ze dvou moznosti
umisteni je prave pouzivana.
/-------------------------------------------------------\
|Index| Registr |
|-----+-------------------------------------------------|
| 00h | Celkovy horizontalni pocet znaku |
| 01h | Horizontalni pocet zobrazovanych znaku |
| 02h | Zacatek horizontalniho zatemneni |
| 03h | Konec horizontalniho zatemneni |
| 04h | Zacatek horizontalniho zpetneho chodu paprsku |
| 05h | Konec horizontalniho zpetneho chodu paprsku |
| 06h | Celkovy vertikalni pocet radek |
| 07h | Registr preteceni |
| 08h | Verikalni posun ve znakovych rezimech |
| 09h | Pocet radek na znak |
| 0ah | Zacatek kurzoru |
| 0bh | Konec kurzoru |
| 0ch | Pocatecni adresa - vyssi byte |
| 0dh | Pocatecni adresa - nizsi byte |
| 0eh | Pozice kurzoru - vyssi byte |
| 0fh | Pozice kurzoru - nizsi byte |
| 10h | Zacatek vertikalniho zpetneho chodu |
| | EGA cteni - Pozice svetelneho pera - vyssi byte |
| 11h | Konec vertikalniho zpetneho chodu |
| | EGA cteni - Pozice svetelneho pera - nizsi byte |
| 12h | Vertikalni pocet zobrazovanych radek |
| 13h | Offset |
| 14h | Pozice podtrzeni |
| 15h | Zacatek vertikalniho zatemneni |
| 16h | Konec vertikalniho zatemneni |
| 17h | Ovladani rezimu |
| 18h | Porovnani radky |
\-------------------------------------------------------/
Horizontal Total Register Port: 3?5h
Celkovy horizontalni pocet znaku Index: 00h
============================================================
Popis: Tento registr obsahuje pocet znaku v jedne
horizontalni radce plus znaky odpovidajici zpetnemu
chodu paprsku. Interni citac se po dosazeni teto
hodnoty vynuluje. Novy interval pro dalsi radku zacne
jeden takt po vynulovani citace.
Hodnota v tomto registru je u EGA o 2 mensi a u VGA o
5 mensi nez skutecny pocet znakovych delek na jedne
radce.
Adapter vzdy povazuje prvni zobrazitelnou pozici za
prvni pozici v citaci. Nasledujici intervaly prislusi
pravemu ramecku, zpetnemu chodu paprsku a levemu
ramecku.
Tento registr ovlivnuje horizintalni velikost pixelu.
Cim je hodnota tohoto registru vyssi, tim vice znaku
se musi na jedne radce zobrazit a tim mensi musi byt
jeden bod.
Bity Popis
---- ---------------------------------------------------
0-7 Celkovy horizontalni pocet znaku (o dve mensi na
EGA a o pet mensi na VGA).
Horizontal Display Enable End Register Port: 3?5h
Horizontalni pocet zobrazovanych znaku Index: 01h
============================================================
Popis: Tento registr obsahuje pocet znakovych sirek v
zobrazovane oblasti. Pokud interni citac dosahne
hodnoty v tomto registru, zacina vykreslovani prave
casti ramecku.
Hodnota v tomto registru je o 1 mensi nez pocet
zobrazitelnych znaku. Hodnota 0 tedy znamena, ze bude
zobrazovan jeden znak na radku.
Bity Popis
---- ---------------------------------------------------
0-7 Horizontalni pocet zobrazovanych znaku minus jedna
(obvykle 39 nebo 79).
Start Horizontal Blanking Register Port: 3?5h
Zacatek horizontalniho zatemneni Index: 02h
============================================================
Popis: Pokud citac dosahne hodnoty tohoto registru, zacne
horizontalni zatemneni, tj. zacne se vykreslovat
pravy ramecek. Vykreslovani prave casti ramecku
skonci v okamziku, kdy citac dosahne hodnoty registru
zacatek zpetneho chodu.
Bity Popis
---- ---------------------------------------------------
0-7 Pozice, na ktere se zecne zobrazovat prava cast
ramecku.
End Horizontal Blanking Register Port: 3?5h
Konec horizontalniho zatemneni Index: 03h
============================================================
Popis: Tento registr obsahuje hodnotu citace, pri kter se
prestane s vykreslovanim ramecku. Obsahuje pouze 5
mene vyznamnych bitu teto hodnoty. Ty vyznamnejsi
jsou shodne s bity v registru pro zacatek
horizontalniho zatmeni.
Tento registr take obsahuje kontrolu nad pauzou,
ktera predchazi zobrazovani nove radky. Behem teto
pauzy musi mit CRTC dost casu k pristupu do
videopameti, ke znakovemu generatoru a k atributum.
Pokud je tato pauza prilis mala, muze byt prvni znak
zobrazovan vicekrat. Pokud je pauza prilis velka,
muze byt nekolik prvnich znaku nezobrazenych.
Bity Popis
---- ---------------------------------------------------
0-4 Konec horizontalniho zatemneni.
5-6 Pauza po naplneni interniho horizontalniho citace
= 00b Zadna pauza
= 01b Pauza odpovidajici vykresleni jednoho znaku
= 10b Pauza odpovidajici vykresleni dvou znaku
= 11b Pauza odpovidajici vykresleni tri znaku
7 EGA - Nepouzito
VGA - Urceno pro testovani, melo by byt nastaveno
na 1.
Start Horizontal Retrace Pulse Register Port: 3?5h
Zacatek horizontalniho zpetneho chodu paprsku Index: 04h
============================================================
Popis: Tento registr obsahuje hodnotu citace, pri ktere
bude vygenerovan impuls zpetneho chodu a elektronovy
paprsek bude presouvan doleva. Zpetny chod muze byt
prodlouzen pomoci nekterych bitu registru konec
zpetneho chodu paprsku.
Bity Popis
---- ---------------------------------------------------
0-7 Hodnota interniho citace, pri ktere zacne byt
generovan signal pro zpetny chod paprsku.
End Horizontal Retrace Register Port: 3?5h
Konec horizontalniho zpetneho chodu paprsku Index: 05h
============================================================
Popis: Tento registr obsahuje pet mene vyznamnych bitu,
ktere pri shode s internim citacem ukonci zpetny chod
elektronoveho paprsku. Tri vyznamnejsi bity jsou
shodne s registrem urcujicim zacatek zpetneho chodu.
Bity 5-6 urcuji pauzu, o kterou bude prodlouzen
zpetny chod paprsku. Muze byt pouzita pro
synchronizaci se zatemnovanim.
Tento registr obsahuje na adapterech VGA v bitu 7
sesty bit registru konec horizontalniho zatemneni.
Bity Popis
---- ---------------------------------------------------
0-4 Pet mene vyznamnych bitu citace, pri kterych skonci
zpetny chod paprsku.
5-6 Pauza po navratu paprsku
= 00b Zadna pauza
= 01b Pauza odpovidajici vykresleni jednoho znaku
= 10b Pauza odpovidajici vykresleni dvou znaku
= 11b Pauza odpovidajici vykresleni tri znaku
7 Rozsireni horizontalniho scrolovani - pouze EGA
Tento bit je normalne nastaven na 0. Pokud
mate EGA kartu s vice nez 64K pameti, muzete tento
bit pouzit pro rozsireni rozsahu scrolovani. pro
vyuziti teto schopnosti nejprve nastavte tento bit
na 0. Pote scrolujte beznym zpusobem o 8 pixelu.
Nastavte tento bit na 1 a opet beznym zpusobem
scrolujet o osm bodu. Pote zmente pocatecni adresu
zobrazovanych dat a cely proces opakujte. Karta VGA
ma obdobny bit v registru pro pocet radek na znak.
7 6. bit registru konec horizontalniho zatemneni - pouze VGA
Tento bit rozsiruje registr konce
horizontalniho zatemneni.
Vertical Total Register Port: 3?5h
Celkovy vertikalni pocet radek Index: 06h
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu poctu
zobrazovanych radek plus pocet radek potrebnych na
zatemneni a zpetny chod paprsku. Interni vertikalni
citac bude pracovat od 0 do teto hodnoty. V registru
preteceni jsou ulozeny bit 8 a 9 (VGA) tohoto
registru.
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu celkoveho poctu radek.
CRTC Overflow register Port: 3?5h
Registr preteceni Index: 07h
============================================================
Popis: tento registr obsahuje nejvyznamnejsi bity nekterych
registru CRTC, ktere prekrocily osmibitovy rozsah.
Bity Popis
---- ---------------------------------------------------
0 9. bit registru celkovy vertikalni pocet radek
1 9. bit registru vertikalni pocet zobrazovanych
radek
2 9. bit registru zacatek vertikalniho zpetneho chodu
3 9. bit registru zacatek vertikalniho zatemneni
4 9. bit registru porovnani radky
5 10. bit registru celkovy vertikalni pocet radek -
pouze VGA
6 10. bit registru vertikalni pocet zobrazovanych
radek - pouze VGA
7 10. bit registru zacatek vertikalniho zpetneho
chodu - pouze VGA
Preset Row Scan Register Port: 3?5h
Vertikalni pocet ve znakovych rezimech Index: 08h
============================================================
Popis: Prvni zobrazovana radka je urcena obsahem registru
pocatecni adresa zobrazovani plus offset urceny timto
registrem. Tento registr obsahuje pocatecni radku pro
zobrazovani (normalne 0). Tento registr se pouziva
pro implmentaci plynuleho scrolovani v textovych
rezimech. Urcuje na kolikate radce znaku zacne
zobrazovani. Hodnota tohoto registru by tedy nemela
presahnout pocet radek jednoho znaku. V grafickych
rezimech by mel byt tento registr nastaven na nula.
Plynule vertikalni scrolovani lze v grafickych
rezimech provadet za pouziti samotneho registru
pocatecni adresy zobrazovani.
Zmena tohoto registru se promitne az do nasledujiciho
zobrazovaciho intervalu. Pouze pokud je zmena
provedena behem vykreslovani prvni radky, je reakce
na zmenu nastaveni okamzita. Tento registr by tedy
mel byt menen bud behem vertikalniho zpetneho chodu
paprsku nebo behem prvniho horizontalniho zpetneho
chodu.
Bity Popis
---- ---------------------------------------------------
0-4 Cislo prvni zobrazovane radky po skonceni
vertikalniho zpetneho chodu.
5-6 4. a 5. bit horizontalniho scrolovani - pouze VGA
Tyto bity rozsiruji registr pro horizontalni
posun obrazu doleva. Toto rozsireni je nutne pokud
je pouzivano zretezeni bitovych map.
7 Nepouzito
Maximum Scan Line Register Port: 3?5h
Pocet radek na znak Index: 09h
============================================================
Popis: Registr obsahuje vysku pouzivanych znaku minus jedna.
Tento registr ma uvedeny vyznam pouze v textovych
rezimech.
Bity Popis
---- ---------------------------------------------------
0-4 Vyska pouzivanych znaku minus jedna
5 10. bit registru zacatek vertikalniho zatemneni -
pouze VGA
6 10. bit registru porovnani radky - pouze VGA
7 Konverze 200 na 400 - pouze VGA
Pokud je tento bit nasatven na jedna, je
kazda radka v 200 radkovem rezimu zobrazovana
dvakrat. Dosahuje se tak stejne kvality zobrani
jako pri vertikalnim rozliseni 400.
Cursor Start Register Port: 3?5h
Zacatek kurzoru Index: 0ah
============================================================
Popis: Obsah tohoto registru urcuje cislo radky znakoveho
boxu, na ktere zacne byt zobrazovan kurzor. Posledni
radka kurzoru se nastavuje pomoci registru konec
kurzoru (index 0bh). Tento registr je platny pouze v
textovych rezimech. Radky jsou cislovany odshora
dolu, od 0 do poctu byte na znak minus jedna.
Pokud je na adapterech EGA pocatecni radka kurzoru
vetsi nez koncova, zobrazi se inverzni kurzor. Na VGA
toto nastaveni vede ke zmizeni kurzoru.
Bity Popis
---- ---------------------------------------------------
0-4 Zacatek kurzoru
Cislo radky, na ktere zacne zobrazovani
kurzoru.
5 Vypnuti kurzoru - pouze VGA
Pokud je tento bit nastaven na jedna, kurzor
neni zobrazovan.
6-7 Nepouzito
Cursor End Register Port: 3?5h
Konec kurzoru Index: 0bh
============================================================
Popis: Obsah tohoto registru urcuje cislo radky znakoveho
boxu, na kterem prestane zobrazovani kurzoru. Prvni
zobrazovana radka kurzoru se nastavuje pomoci
registru zacatek kurzoru (index 0ah). Cislovani radek
zacina odshora od nuly.
Tento registr obsahuje bity 5 a 6, ktere umoznuji
ovladat pauzu po vyslani kontrolniho signalu kurzoru.
Bity Popis
---- ---------------------------------------------------
0-4 Konec kurzoru
Cislo radky, na ktere skonci zobrazovani
kurzoru.
5-6 Spozdeni kontrolniho signalu kurzoru
= 00b Zadna pauza
= 01b Pauza odpovidajici vykresleni jednoho znaku
= 10b Pauza odpovidajici vykresleni dvou znaku
= 11b Pauza odpovidajici vykresleni tri znaku
7 Nepouzito
Start Address High Register Port: 3?5h
Pocatecni adresa - vyssi byte Index: 0ch
============================================================
Popis: Tento registr obsahuje osm nejvyznamnejsich bitu
adresy (z pohledu CRTC), na ktere je prvni
zobrazovanym znak (v textovych rezimech) nebo prvni
zobrazovany pixel (v grafickych rezimech). Osm mene
vyznamnych bitu je ulozeno v registru s indexem 0dh.
Tento registr umoznuje snadnou implementaci
vertikalniho scrolovani. Zmena tohoto registru se
projevuje na zacatku zpetneho chodu paprsku. Registr
by tedy mel byt nastaven behem aktivniho
zobrazovaciho intervalu.
Bity Popis
---- ---------------------------------------------------
0-7 Vyznamnejsich osm bitu adresy pocatku zobrazovani.
Start Adddress Low Register Port: 3?5h
Pocatecni adresa - nizsi byte Index: 0dh
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu
adresy (z pohledu CRTC), na ktere je prvni
zobrazovany znak (v textovych rezimech) nebo prvni
zobrazovany pixel (v grafickych rezimech). Osm
vyznamnejsich bitu je ulozeno v registru s indexem
0ch.
Tento registr umoznuje snadnou implementaci
vertikalniho scrolovani. Zmena tohoto registru se
projevuje na zacatku zpetneho chodu paprsku. Registr
by tedy mel byt nastaven behem aktivniho
zobrazovaciho intervalu.
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu adresy pocatku zobrazovani.
Cursor Location High Register Port: 3?5h
Pozice kurzoru - vyssi byte Index: 0eh
============================================================
Popis: Tento registr obsahuje osm vyznamnejsich bitu
16bitove adresy CRTC, na ktere je umisten kurzor.
Zbyvajicich osm mene vyznamnych bitu je ulozeno v
nasledujcim registru (index 0fh).
Bity Popis
---- ---------------------------------------------------
0-7 Osm vyznamnejsich bitu adresy pozice kurzoru.
Cursor Location Low Register Port: 3?5h
Pozice kurzoru - nizsi byte Index: 0fh
============================================================
Popis: Tento registr uchovava osm mene vyznamnych bitu
adresy CRTC, na ktere je umisten kurzor. Osm
vyznamnejsich bitu je ulozeno v registru predchozim
(index 0eh).
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu adresy pozice kurzoru.
Vertical Retrace Start Register Port: 3?5h
Zacatek vertikalniho zpetneho chodu Index: 10h
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu
hodnoty, ktera pri shode s internim vertikalnim
citacem vyvola zpetny chod paprsku. Citac nabyva
hodnot od 0 do celkoveho poctu vertikalnich radek.
Devaty a desaty bit tohoto registru jsou ulozeny v
registru preteceni (index 07h).
Bity Popis
---- ---------------------------------------------------
0-7 8 mene vyznamnych bitu hodnoty citace vyvolavajici
zpetny chod paprsku.
Light Pen High Register Port: 3?5h
Pozice svetelneho pera - vyssi byte
Pouze EGA, pouze cteni Index: 10h
============================================================
Popis: Pokud je svetelne pero prilozeno k obrazovce, vraci
tento registr osm vice vyznamnych bitu adresy, ktera
odpovida pozici svetelneho pera.
Tuto funkci podporuje pouze EGA. VGA svetelne pero
nepodporuje.
Bity Popis
---- ---------------------------------------------------
0-7 Osm vyznamnejsich bitu adresy svetelneho pera.
Vertical Retrace End Register Port: 3?5h
Konec vertikalniho zpetneho chodu Index: 11h
============================================================
Popis: Tento registr obsahuje ctyri mene vyznamne bity,
ktere pri shode s citacem ukonci zpetny chod paprsku.
Zbyvajici vyznamnejsi bity jsou shodne s bity
registru zacatek zpetneho chodu.
Tento registr taktez obsahuje bity pro mazani a
povoleni vertikalniho preruseni (IRQ 2). Pokud
pouzivate vertikalni preruseni, mela by jeho obsluzna
rutina pred svym skoncenim smazat preruseni a znovu
ho povolit. To lze provest zapsanim nul do bitu 4 a 5
a pote zapsanim jednicky do bitu 4. Preruseni IRQ 2
muze byt vyvolano i jinym zarizenim nez
videoadapterem (u AT jsou na nem kaskadove pripojena
preruseni 8 az 15). Pokud bylo preruseni vyvolano
adapterem je nastaven bit 7 vstupniho stavoveho
registru 0 (port 3c2h).
Bity Popis
---- ---------------------------------------------------
0-3 4 mene vyznamne bity citace pro ukonceni zpetneho
chodu paprsku.
4 Smazani vertikalniho preruseni
Nastaveni tohoto bitu na 0 smaze predeslou
aktivaci vertikalniho preruseni.
5 Povoleni vertikalniho preruseni
Zapsani nuly do tohoto bitu povoly generovani
vertikalniho preruseni pri kazdem vyvolani
vertikalniho zpetneho chodu paprsku.
6 Nastav 5 obnovovacich cyklu - pouze VGA
Tento registr urcuje pocet pametovych
obnovovacich cyklu behem zobrazovani jedne radky.
Normalne je tento bit nastaven na 0 a jsou
generovany tri signaly pro osvezeni pameti. Pokud
je bit nastaven na jedna, je generovano pet
osvezeni RAM, coz dovoluje pripojit monitor s
radkovou frekvenci 15.75 kHz.
7 Ochrana R0-R7 - pouze VGA
Registry CRTC s indexy 0 - 7 mohou byt
chraneny proti prepsani nastavenim tohoto bitu na
jedna. Registry 0-7 obsahuji dulezite informace o
casovani adapteru a tak by mely byt titmto zpusobem
chraneny pred nezadoucim prepsanim.
Light Pen Low Register Port: 3?5h
Pozice svetelneho pera - nizsi byte
Pouze EGA, pouze cteni Index: 11h
============================================================
Popis: Pokud je svetelne pero prilozeno k obrazovce, vraci
tento registr osm mene vyznamnych bitu adresy, ktera
odpovida pozici svetelneho pera.
Tuto funkci podporuje pouze EGA. VGA svetelne pero
nepodporuje.
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu adresy svetelneho pera.
Vertical Display Enable Register Port: 3?5h
Vertikalni pocet zobrazovanych radek Index: 12h
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu
celkoveho poctu zobrazovanych radek. Radky jsou
cislovany od 0, tudiz registr obsahuje o jednicku
mensi cislo, nez je pocet zobrazovanych radek. Bity 8
a 9 jsou obsazeny v registru preteceni (index 07h).
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu poctu zobrazovanych radek
minus jedna.
Offset Register Port: 3?5h
Offset Index: 13h
============================================================
Popis: Tento registr obsahuje velikost videopameti
spotrebovane na jednu zobrazovaci radku. Tato
velikost nemusi odpovidat skutecne velikosti
zobrazovane radky. Pokud je vetsi, muze toho byt
vyhodne uzito pri horizontalnim scrolovani obrazovky.
Delka radky je udavana ve dvojicich, ctvericich nebo
osmicich byte (platne nastaveni lze zjistit v
registru sequenecru ovladajicim rezim casovace (index
01h).
Bity Popis
---- ---------------------------------------------------
0-7 Logicka delka jedne radky (delena 2, 4 nebo 8).
Underline Location Register Port: 3?5h
Pozice podtrzeni Index: 14h
============================================================
Popis: Tento registr nastavuje pozici podtrzeni ve znakovem
boxu. Pozice se pocita od nuly od shora znakoveho
boxu.
Bity Popis
---- ---------------------------------------------------
0-4 Pozice podtrzeni ve znakovem boxu.
5 Adresa po 4 taktech - pouze VGA
Nastaveni tohoto bitu na jedna vydeli
frekvenci, ktera zvetsuje citac adresy pameti,
ctyrikrat. Adresa bude menena az po kazdem ctvrtem
taktu.
6 Pametovy mod dvojslov - pouze VGA
Nastavenim tohoto bitu na jedna si vynutite
pouzivani dvojslovoveho adresovani. Pred pouzitim
teto moznosti musite nastavit bit 6 registru
ovladani rezimu (index 17h) na nula.
7 Nepouzito
Start Vertical Blanking Register Port: 3?5h
Zacatek vertikalniho zatemneni Index: 15h
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu, po
jejichz dosazeni citecem bude generovan zacatek
vertikalniho zatemneni, tj. zacne se vykreslovat
spodni cast ramecku. 9. bit tohoto registru je ulozen
v registru preteceni (index 07h) a 10. bit (pro VGA)
v registru pocet radek na znak (index 09h).
Bity Popis
---- ---------------------------------------------------
0-7 8 mene vyznamnych bitu hodnoty citace, pri ktere
zacne vertikalni zatemneni.
End Vertical Blanking Port: 3?5h
Konec vertikalniho zatemneni Index: 16h
============================================================
Popis: Tento registr obsahuje 5 (VGA 8) mene vyznamnych bitu
hodnoty, pri jejiz shode s internim vertikalnim
citacem prestane byt generovano vertikalni zatemneni,
tj. skonci vykreslovanbi horni casti ramecku.
Vyznamnejsi bity jsou shodne s bity v registru pro
zacatek vertikalniho zatemneni.
Bity Popis
---- ---------------------------------------------------
0-4 Pouze EGA
5 mene vyznamnych bitu hodnoty citace, pri
ktere se ukonci vertikalni zatemneni.
0-7 Pouze VGA
8 mene vyznamnych bitu hodnoty citace, pri
ktere se ukonci vertikalni zatemneni.
Mode Control Register Port: 3?5h
Ovladani rezimu Index: 17h
============================================================
Popis: Tento registr umoznuje ovladat zpusob mapovani
videopameti. Je obdobou registru pametoveho rezimu
sequenceru a rezimu grafickeho kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Podpora kompatibilnich rezimu
Nastaveni tohoto bitu na 0 vytvori dve
oblasti pameti, jednu pro sude a druhou pro liche
radky. Oblasti zacinaji vzdy na offsetu, ktery je
naseobkem 8K. Dosazeno je toho zamenou bitu 13
adresy pameti za posledni bit cisla radku. Toto
nastaveni umoznuje emulaci zobrazovacich rezimu
kompatibilnich s CGA.
1 Vyber adresy podle bitu 1 citace radek
Funkce tohoto bitu je podobna funkci
predchoziho bitu. Pokud je bit nastaven na 0,
adresni bit 14 je nahrozovan bitem 1 cisla radku.
2 Zdvojeni vertikalniho citace radek
Pokud je tento bit nastaven na nula, je
vertikalni citac zvetsen o jedna po kazdem
horizontalim zpetnem chodu paprsku. Pokud je bit
nastaven na 1, je citac zvetsen po kazdem druhem
zpetnem horizontalnim chodu. Umoznuje to
zdvojnasobit vertikalni rozliseni.
3 Adresa po 2 taktech
Nastaveni tohoto bitu na nula si vynuti
zvetseni adresniho citace po kazdem impulsu
casovace. Pokud je bit nastaven na jedna, je adresa
zvetsena po kazdem druhem taktu.
4 Ovladani vystupu - pouze EGA
Normalne je tento bit nastaven na nula. Jeho
nasatveni na jedna uvede vystupy adapteru do stavu
s vysokou impendanci.
5 Zarovnavani adresy
Tento bit je pouzivan ve spojeni s bitem 6
tohoto registru. V bajtovem modu nema vyznam. Ve
word modu nastaveni tohoto bitu na jedna umisti
adresni bit 15 na misto adresniho bitu 0. Pokud je
tento bit 0, nastavi se na adresni bit 0 adresni
bit 13. Bit 13 je pouzivan pro spojovani bitovych
map na kartach EGA s 64K pameti.
6 Vyber modu - byte/word
Byte mod je zvolen nastavenim tohoto bitu na
1 a word mod nastavenim tohoto bitu na 0. Word mod
umoznuje stridani dvou bitovych rovin (napriklad
znaky a atributy v textovych rezimech). V tomto
modu jsou adresni bity posunuty doleva a bit nula
je nahrazen bitem 13 nebo 15. VGA podoruje take
double-word mod, kdy je adresa posunuta o dva bity
doleva a bity 0 a 1 jsou nahrazeny bity 12 a 13.
7 Hardwarovy reset
Nastaveni tohoto bitu na jedna povoluje
generovani signalu pro vertikalni a horizontalni
zpetne chody paprsku (normalni nastaveni).
Nastaveni na nula prerusi generovani techto
signalu.
Line Compare Register Port: 3?5h
Porovnani radky Index: 18h
============================================================
Popis: Tento registr obsahuje osm mene vyznamnych bitu
hodnoty radkoveho citace. Po dosazeni teto hodnoty
citacem dojde k vynulovani citace. Pouziti teto
techniky muze cast obrazovky eliminovat ze
scrolovani. Tato technika muze byt pouzita take
k implementovani dvou oken. Prvni cast obrazovky
zobrazuje data od adresy urcene registrem pocatecni
adresa (index 0ch a 0dh). Druhe okno zobrazuje vzdy
data od adresy 0. V 200 radkovych modech by zde mela
byt ulozena pouze suda hodnota. 9. bit tohoto
registru je ulozen v registru preteceni (index 07h)
a 10. bit v registru pocet radek na znak (index 09h).
Bity Popis
---- ---------------------------------------------------
0-7 Osm mene vyznamnych bitu hodnoty citace, pri ktere
se tento radkovy citac vynuluje.
Registry grafickeho kontroleru
Graficky kontroler ma na starosti komunikaci
videopameti s procesorem. Jeho registry tedy ovladaji zpusob
prace CPU s videopameti. Nektere z registru grafickeho
kontroleru umoznuji emulaci CGA rezimu.
Funkce registru nam muze byt zrejmejsi pokud si
osvezime operace provadene kontrolerem pri cteni a zapisu do
pameti. Ke kazde bitove rovine prislusi jeden 8bitovy
latch-registr. V grafickych modech nepristupuje do pameti
primo procesor, ale aritmeticko-logicka jednotka (ALU)
adapteru. Pri cteni z videopameti, jsou data nactena do tzv.
latch-registru. Obvykle je z cele osmice bodu menen pouze
jeden. Latch-registry tedy slouzi k uchovani hodnoty
nemodifikovanych bitu. Pri zapisu do pameti, jsou prislusne
(v zavislosti na zapisovacim rezimu) upraveny naposled ctene
latch-registry a jejich obsah je ulozen do videopameti.
Latch-registry by mely byt nacteny pred modifikaci pameti
pomoci instrukce MOV (nebo nejake jeji obdoby).
Graficky kontroler umoznuje volit z nekolika zpusobu
kombinovani dat v latch-registrech s daty z procesoru. Data
mohou byt s latch-registry kombinovana pomoci logickych
operaci AND, OR, XOR, mohou byt rotovana. Bitove pozice
mohou byt maskovany atd.
Graphics 1 and 2 Address Register Port: 3ceh
Adresovy registr grafickeho kontroleru
============================================================
Popis: Obsah tohoto registru urcuje, ktery registr bude
mapovan na port 3cfh. Index potrebneho registru se
zapisuje na port 3ceh.
/-----------------------------------------------------\
|Index | Registr |
|------+----------------------------------------------|
| 0 | Set/Reset |
| 1 | Povoleni Set/Reset (Enable Set/Reset) |
| 2 | Porovnani barev (Color Compare) |
| 3 | Kombinace dat (Data Rotate) |
| 4 | Mapa pro cteni (Read Map Select) |
| 5 | Rezim grafickeho kontroleru (Mode Register) |
| 6 | Ruzne (Miscellaneous) |
| 7 | Eliminace barev (Color Don't Care) |
| 8 | Bit mask |
\-----------------------------------------------------/
Set/Reset Register Port: 3cfh
Set/Reset registr Index: 0
============================================================
Popis: Tento registr urcuje bitove roviny, do kterych bude
vzdy pri modifikovani videopameti zapsana nula nebo
jednicka. Nastaveni bitove roviny do SET rezimu
zpusobi, ze pri kazdem zapisu do videopameti bude do
maskovanych bitu (registrem Bit mask) zapsana
jednicka. RESET rezim zpusobi zapsani nul do
maskovanych bitu.
Tento registr je platny pouze v zapisovacich rezimech
0 a 3. Pokud ho chcete pouzivat v zapisovacim rezimu
0, musite nejprve prislusnym bitem registru Povoleni
Set/Reset povolit permanentni zapisovani do bitove
roviny.
Bity Popis
---- ---------------------------------------------------
0 = 0 RESET mod pro bitovou rovinu 0
= 1 SET mod pro bitovou rovinu 0
1 = 0 RESET mod pro bitovou rovinu 1
= 1 SET mod pro bitovou rovinu 1
2 = 0 RESET mod pro bitovou rovinu 2
= 1 SET mod pro bitovou rovinu 2
3 = 0 RESET mod pro bitovou rovinu 3
= 1 SET mod pro bitovou rovinu 3
Enable Set/Reset Register Port: 3cfh
Povoleni Set/Reset Index: 1
============================================================
Popis: Tento registr slouzi k aktivovani sluzby Set/Reset
pro jednotlive bitove roviny. Nastaveni bitu tohoto
registru na jedna aktivuje pouzivani nastaveni
Set/Reset registru pro urcitou bitovouu rovinu.
Bity Popis
---- ---------------------------------------------------
0 Povoleni Set/Reset registru pro bitovou rovinu 0
1 Povoleni Set/Reset registru pro bitovou rovinu 1
2 Povoleni Set/Reset registru pro bitovou rovinu 2
3 Povoleni Set/Reset registru pro bitovou rovinu 3
Color Compare Register Port: 3cfh
Porovnani barev Index: 2
============================================================
Popis: Tento registr slouzi k uchovani barvy, ktera je
porovnavana s obsahem videopameti. Po precteni pameti
budou bity, ktere odpovidaji pixelum s barvou shodnou
s barvou v tomto registru, nastaveny ma jedna. Bity
neshodujicich se pixelu budou nastaveny na nula.
Tento registr pracuje pouze ve ctecim modu 1.
Jakakoliv z bitovych rovin muze byt z porovnavani
vyrazena pomoci registru pro eliminaci barev (index
7).
Bity Popis
---- ---------------------------------------------------
0-3 Porovnavana barva
4-7 Nepouzito
Data Rotate Register Port: 3cfh
Kombinace dat Index: 3
============================================================
Popis: Tento registr ovlada dve funkce. Tou prvni je moznost
data zapisovana procesorem do videopameti zrotovat o
n (0-7) bodu. Druhou funkci je moznost zmeny zpusobu
kombinovani dat z procesoru s daty v
latch-registrech.
Pokud je nastaveno pouziti rotace a logicke operace
najednou, nejprve se provede rotace. Tento registr
nepracuje v zapisovacim modu 1 (pracuje pouze s daty
zapisovanymi procesorem).
Rotace ovlivni zapisovana data pouze v zapisovacim
modu 0.
Bity Popis
---- ---------------------------------------------------
0-2 Pocet rotaci vpravo
3-4 Zpusob zapisu
00b Zapis data beze zmeny
01b AND dat s latch-registry
10b OR dat s latch-registry
11b XOR dat s latch-registry
5-7 Nepouzito
Read Map Select Register Port: 3cfh
Mapa pro cteni Index: 4
============================================================
Popis: Tento registr vybira bitovou rovinu, jejiz obsah bude
vracen pri cteni z videopameti v ctecim modu 0.
Bity Popis
---- ---------------------------------------------------
0-1 Cislo bitove roviny urcene ke cteni
2-7 Nepouzito
Mode Register Port: 3cfh
Rezim grafickeho kontroleru Index: 5
============================================================
Popis: Tento registr urcuje, ktery ze tri (ctyr - VGA)
zapisovacich a dvou ctecich rezimu bude pouzit. Spolu
s registrem s indexem 6 (Miscellaneous) obsahuji
nektera nastaveni tykajici se organizace pameti.
Bity Popis
---- ---------------------------------------------------
0-1 Zapisovaci mod
00b = Zapisovaci mod 0. Map mask registr
(sequencer, index 2) urcuje bitove mapy pro
zapis. Bit mask registr (index 8) slouzi k
povoleni nebo zakazani modifikace pixelu v
ramci byte. Data jsou zapisovana do kazde
odmaskovane bitove roviny (pokud ovsem neni
pro prislusnou rovinu aktivovan Set/Reset
mod). Pred ukladanim do pameti se musi
nacist jeji obsah do latch-registru.
01b = Zapisovaci mod 1. Do pameti je zapsan pouze
obsah latch-registru. Pouziva se pri
presouvani useku videopameti.
10b = Zapisovaci mod 2. Bit mask registr urcuje
modifikovane bity. Do videopameti se
zapisuje cislo pozadovane barvy. Pred
zapisem je nutno nacist latch-registry.
11b = Pouze VGA: Na pozadovanou adresu je ulozen
vysledek logicke operace AND mezi Bit mask
registrem (index 8) a hodnotou obsazenou
v Set/Reset registru. Pro tento rezim nemusi
byt aktivni Enable Set/Reset registr (index
1).
2 Test grafickeho kontroleru - pouze EGA
Nastaveni tohoto bitu na jedna uvede vystupy
kontroleru do stavu s vysokou impendanci.
3 Cteci mod
0 = Do CPU je nacten jeden byte zvolene bitove
mapy
1 = Do CPU je nacten vysledek porovnani barev
pixelu na pozadovane adrese s registrem pro
porovnani barev (index 2).
4 Sude/liche
Pokud je tento bit nastaven na jedna jsou
liche adresy ulozeny v lichych bitovych rovinach a
sude adresy v sudych bitovych rovinach. Toto
nasatveni se tyka pouze grafickeho kontroleru.
Vyuziva se zejmena v textovych rezimech a v
rezimech zachovavajicich komaptibilitu s CGA. Pokud
je tento bit nastaven na jedna, je obvykle i
sequencer nastaven do patricneho rezimu (bit 2
pametoveho rezimu, index 4).
5 Posuvny registr
Kdyz je tento bit nastaven na jedna, jsou
sude bity z obrazove pameti zapisovany do sudych
bitovych map a stejne tak jsou liche bity
zapisovany do lichych bitovych map. Tak jsou dva za
sebou v pameti zapsane bity rozdeleny do dvou
posuvnych registru. To umoznuje emulaci barev CGA
rezimu.
6 256barevny rezim - pouze VGA
Tento bit ma podobnou funkci jako bit 5. Data
jsou do posuvnych registru presouvana tak, ze jeden
byte je preveden na matici 2 x 4 bity. To je
potrebne pro atributovy kontroler, jehoz vsechny
funkce nefunguji v 256barevnem rezimu.
Miscellaneous Register Port: 3cfh
Ruzne Index: 6
============================================================
Popis: Tento registr ovlada nektere funkce souvisejici s
organizaci pameti grafickeho kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Graficky rezim
Tento bit je nastaven na jedna v grafickych
rezimech a na nula v textovych.
1 Zretezeni lichych map do sudych
Tento bit je pouzivan ve spojeni s bitem 4
registru rezimu grafickeho kontroleru (index 4).
Liche adresy jsou zapsany do lichych bitovych map a
sude adresy jsou zapsany do sudych bitovych map.
Pri nastaveni tohoto bitu na jedna je nejmene
vyznamny bit adresy zamenen s bitem 13 nebo 15
(podle poctu instalovane pameti). To zpusobi, ze v
pameti jsou nejprve bitove roviny 0 a 2 a az za
nimi nasleduji roviny 1 a 3.
2-3 Mapovani pameti
Tyto bity urcuji umisteni a velikost
adresniho procesoru, do ktereho se bude mapovat
videopamet.
/------------------------------\
| Hodnota | Pocatek | Velikost |
|---------+---------+----------|
| 00b | a0000h | 128K |
| 01b | a0000h | 64K |
| 10b | b0000h | 32K |
| 11b | b8000h | 32K |
\------------------------------/
4-7 Nepouzito
Color Don't Care Register Port: 3cfh
Eliminace barev Index: 7
============================================================
Popis: Tento registr umoznuje vynechat nektere bitove roviny
z porovnavani barev, pokud je aktivni cteci mod 0.
Pokud je tento registr nastaven na 0fh, jsou na shodu
barvy porovnavany vsechny bitove roviny. Pokud
registr obsahuje nulu, porovnavani vyhovuje jakakoliv
barva.
Bity Popis
---- ---------------------------------------------------
0 = 0 Kontroluje se zda obsah bitove roviny 0
odpovida bitu 0 registru porovnani barev
(index 2)
1 = 0 Kontroluje se zda obsah bitove roviny 1
odpovida bitu 1 registru porovnani barev
(index 2)
2 = 0 Kontroluje se zda obsah bitove roviny 2
odpovida bitu 2 registru porovnani barev
(index 2)
3 = 0 Kontroluje se zda obsah bitove roviny 3
odpovida bitu 3 registru porovnani barev
(index 2)
4-7 Nepouzito
Bit Mask Register Port: 3cfh
Bit mask registr Index: 8
============================================================
Popis: Tento registr omezuje pristup k jednotlivym bitum
jedne adresy videopameti. Nastaveni odpovidajicich
bitu na jedna povoli modifikaci prislusnych bitu
videopameti. Pro zapis jednoho bodu je tedy pouze
jeden bit tohoto registru nastaven na jedna. Pred
zapisem do pameti je potreba nacist obsah latch
registru.
Zapisovaci mod 1 timto registrem neni ovlivnen
(narozdil od Map mask registru).
Bity Popis
---- ---------------------------------------------------
0-7 Nastaveni bitu na jedna povoli modifikace
prislusneho bitu na adrese videopameti.
Registry atributoveho kontroleru
Registry atributoveho kontroleru ovladaji prirazeni
barev jednotlivym cislum barev, ramecku a pozadi. Obvykle do
atributoveho kontroleru prichazeji 4 bity. Ty jsou pouzity
jako odkaz do palety, ze ktere je vybrana prislusna barva k
zobrazeni. Na VGA je hodnota tohoto paletoveho registru po
upravach predana DAC.
Registry atributoveho kontroleru jsou pristupne pres
port 3c0h. Tento port ma jednu zvlastnost. Slouzi zaroven
jako adresovy i datovy port registru atributoveho
kontroleru. Po kazdem zapisu se jeho funkce meni. Nemuzeme
tedy mit jistotu, zda je na portu prave datovy ci adresovy
registr (zmenu mohla provest napriklad nejaka rutina bezici
pod prerusenim). Na port 3c0h se namapuje adresovy registr
atributoveho kontroleru po kazdem cteni vstupniho stavoveho
registru 1 (port 3?ah). Cteni tohoto registru ma jeste jednu
vyhodu. Jeho bit 0 indukuje probihani zpetneho chodu paprsku
a atributove registry by mely byt meneny jen behem teto
doby. Pokud tedy chceme menit nektery z registru
atributoveho kontroleru, meli bychom nejprve pockat na
zpetny chod paprsku a pote menit registr. Napriklad takto:
mov DX, 3dah ;cislo portu vstupniho stavoveho registru 1 (3bah pro MDA)
WaitRetrace:
in AL, DX ;cteni obsahu registru
and AL, 1 ;odmaskovani bitu 0
jnz WaitRetrace ;cekani na zpetny chod elektronoveho paprsku
mov DX, 3c0h ;cislo portu pro registry atributoveho kontroleru
mov AL, Index ;index pozadovaneho registru pro zmenu
out DX, AL ;nastaveni adresoveho registru
mov AL, Hodnota ;nova hodnota do registru
out DX, AL ;zapis do datoveho registru
Na kartach VGA lze nastaveni atributovych registru cist z
portu 3c1h.
Attribute Address Register Port: 3c0h
Adresovy registr atributoveho kontroleru
============================================================
Popis: Do tohoto registru se zapisuje index registru, ktery
bude pristupny pro zapis na portu 3c0h a pro cteni na
portu 3c1h (druha moznost je pouze na VGA). Nastaveni
portu 3c0h do adresoveho modu se provede prectenim
vstupniho stavoveho registru 1 (port 3bah nebo 3dah).
Na kartach EGA musi byt bit 5 pred zmenou paletovych
regitru nastaven na nula a po zmene nastaven zpet na
jedna.
/----------------------------------------------------\
|Index| Registr |
|-----+----------------------------------------------|
|0-0fh| Registry palety |
| 10h | Rezim atributoveho kontroleru (Mode Control) |
| 11h | Barva ramecku (Overscan Color) |
| 12h | Povoleni bitovych rovin (Color Plane Enable) |
| 13h | Horizontalni posun (Horizontal Pel Panning) |
| 14h | Vyber barvy (Color Select) |
\----------------------------------------------------/
Bity Popis
---- ---------------------------------------------------
0-4 Index registru atributoveho kontroleru
5 Povoleni pristupu k palete - pouze EGA
Nastaveni tohoto bitu na jedna povoli pristup
karty EGA k paletovym registrum.
6-7 Nepouzito
Palette Registers Port: 3c0h
Registry palety Index: 0-0fh
============================================================
Popis: Tyto registry obsahuji informace o zobrazovane barve
prislusejici cislu barvy. Kazda barva (cislo 0-15) ma
svuj paletovy registr. Ten obsahuje informace, ktere
urcuji barvu skutecne zobrazovane barvy. Na karte EGA
slouzi k urceni skutecne zobrazovane barvy sest bitu.
Po dvojicich nalezi jednotlivym zakladnim barvam.
Mohou tak vytvaret az 64 ruznych odstinu (najednou
zobrazitelnych je jich vsak porad jen 16). Na
kartach VGA je hodnota paletoveho registru pouzita
jako odkaz do 18bitoveho DAC registru, ktery obsahuje
jeden z 262144 moznych odstinu pouzitych pro
zobrazeni dane barvy. Pomoci registru pro vyber barvy
(index 14h) mohou byt informace jdouci z paletovych
registru do DAC upraveny.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Modra
1 Zelena
2 Cervena
3 Intenzivni modra
4 Intenzivni zelena
5 Intenzivni cervena
6-7 Nepouzito
VGA:
Bity Popis
---- ---------------------------------------------------
0-5 Odkaz do jednoho z DAC registru
6-7 Nepouzito
Mode Control Register Port: 3c0h
Rezim atributoveho kontroleru Index: 10h
============================================================
Popis: Tento registr uchovava informace o pracovnim rezimu
atributoveho kontroleru.
Bity Popis
---- ---------------------------------------------------
0 Textovy/graficky rezim
= 0 textovy rezim
= 1 graficky rezim
1 Monochromaticky/barevny displej
= 0 urcuje pouziti barevneho adapteru
= 1 urcuje pouziti monochromatickeho adapteru
2 Podpora carove grafiky
Tento bit je pouzivan v zobrazovacim modu 7,
pokud jsou pouzivany 9 bodu siroke znaky. Pokud je
tento bit nastaven na jedna, je u znaku s ASCII
kodem c0h-dfh kopirovan osmy bit do devateho, tj.
carova grafika zustane neprerusena. Pokud je
nastaven na nula, je devaty pod znaku vykreslen
barvou pozadi.
3 Volba intenzita/blikani
= 0 7. bit atributu bude povazovan za intenzitu
barvy pozadi
= 1 7. bit atributu bude urcovat blikani znaku
4 Nepouzito
5 Vypnuti horizontalniho posuvu - pouze VGA
= 0 Horizontalni posun je aplikovan na cely obraz
= 1 Horizontalni posun je aplikovan pouze na
horni cast obrazu. Cast obrazu nasledujici za
radkou obsazenou v registru pro porovnani
radky (CRTC index 18h) nebude posouvana.
6 Sirka posuvu - pouze VGA
Nastaveni tohoto bitu na jedna, zpusobi ze
kazdemu bodu prislusi 8 bitu (rezim 13h, 256
barev). V ostatnich rezimech by mel byt tento bit
nastaven na nula.
7 Premapovani bitu 4 a 5 - pouze VGA
= 0 Obsahy peltovych registru jsou do DAC
posilany primo, bez modifikaci.
= 1 Bity 4 a 5 paletoveho regsitru jsou nahrazeny
bity 0 a 1 registru vyber barvy (index 14h) a
teprve pote poslany do DAC.
Overscan Color Register Port: 3c0h
Barva ramecku Index: 11h
============================================================
Popis: Tento registr urcuje barvu ramecku pomoci intenzit
slozek zakladnich barev (EGA) nebo pomoci odkazu do
DAC registru (VGA).
Barva ramecku byva obvykle cerna (registr obsahuje
0). V nekterych modech s vyssim rozlisenim nelze
pouzit jine barvy ramecku nez cerne.
EGA:
Bity Popis
---- ---------------------------------------------------
0 Modra
1 Zelena
2 Cervena
3 Intenzivni modra
4 Intenzivni zelena
5 Intenzivni cervena
6-7 Nepouzito
VGA:
Bity Popis
---- ---------------------------------------------------
0-5 Odkaz do jednoho z DAC registru
6-7 Nepouzito
Color Plane Enable Register Port: 3c0h
Povoleni bitovych rovin Index: 12h
============================================================
Popis: Tento registr urcuje bitove roviny, ze kterych bude
brana informace o cisle barvy bodu pro odkaz do
registru palety. Obvykle tento registr obsahuje
hodnotu 0fh, tj. barva je ziskavana ze vsech ctyr
bitovych rovin.
Bity Popis
---- ---------------------------------------------------
0 = 1 Barva je brana i z bitove roviny 0
1 = 1 Barva je brana i z bitove roviny 1
2 = 1 Barva je brana i z bitove roviny 2
3 = 1 Barva je brana i z bitove roviny 3
4-5 Volba diagnostickych bitu
Tyto bity urcuji, ktere bity atributoveho
registru se objevi v bitech 4 a 5 vstupniho
stavoveho registru 1.
/-----------------\
| Hodnota | Bity |
|---------+-------|
| 00b | 2 a 0 |
| 01b | 5 a 4 |
| 10b | 3 a 1 |
| 11b | 7 a 6 |
\-----------------/
6-7 Nepouzito
Horizontal PEL Panning Register Port: 3c0h
Horizontalni posun Index: 13h
============================================================
Popis: Tento registr urcuje o kolik bodu bude obraz posunut
doleva. Pri pouziti virtualni obrazovky (viditelna
cast obrazovky je pouze casti vetsi virtualni
obrazovky) jej lze s vyhodou uplatnit pro dosazeni
horizontalniho scrolovani.
Bity Popis
---- ---------------------------------------------------
0-3 Pocet bodu, o ktere se obraz posune doleva.
/-----------------------------------------\
| | Posunuti pro ruzne |
|Obsah | zobrazovaci rezimy |
|registru|--------------------------------|
| | 7, 0-3 VGA | 13h VGA | Ostatni |
|--------+------------+---------+---------|
| 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
Vyber barvy Index: 14h
============================================================
Popis: Tento registr umoznuje rozsirit barvu v paletovem
registru na 8 bitu. Obsahuje dva bity, ktere se
pridaji k 6bitove hodnote paletoveho registru.
Dosahneme tak moznosti vyberu ze vsech 256 DAC
registru. Obsahuje take dva bity, ktere mohou
nahradit bity 4 a 5 paletoveho registru.
Tento registr neovlivnuje zobrazovaci mod 13h.
Bity Popis
---- ---------------------------------------------------
0-1 Tyto bity nahrazuji bity 4 a 5 paletovych registru,
pokud je bit 7 rezimu atributoveho kontroleru
nastaven na jedna.
2-3 Tyto bity se pridavaji k hodnote jdouci z
paletoveho registru do DAC.
4-7 Nepouzito
Registry cislicove-anologoveho prevodniku - pouze VGA
DAC prevadi binarni barevnou informaci na analogovy
signal pro monitor. Pouziva k tomu DAC registry, ktere jsou
funkcne obdobne s paletovymi registry. Kazdy DAC registr
obsahuje 18bitovou hodnotu, ktere se sklada z sesti bitu pro
kazdou zakladni barvu (cervena, modra, zelena).
Osmnactibitova hodnota nam dava moznost vyberu jedne z
262144 moznych barev v kazdem z 256 DAC registru. Standardne
prvnich 16 DAC registru obsahuje barvy shodne s barvami na
EGA. Dalsich 16 DAC registru obsahuje ruzne stupne sedi.
Zbylych 224 registru obsahuje ruzne barvy. Pouze v rezimu
13h muze byt zobrazeno vsech 256 barev najednou. Bezne muze
byt najednou zobrazeno 16 barev. Pomoci atributoveho
kontroleru vsak muzeme zmenit sestnactici pouzivanych DAC
registru a dosahnout tak zajimavych efektu okamzitou zmenou
vsech barev.
DAC State Register Port: 3c7h
Stavovy registr DAC pouze VGA, pouze cteni
============================================================
Popis: Tento registr umoznuje zjistit aktualni stav datoveho
registru DAC, ktery muze byt ve dvou rezimech
- zapisovacim nebo ctecim. Behem cteciho rezimu muze
byt obsah tohoto registru pouze cten a behem
zapisovaciho rezimu naopak nesmi byt cten obsah
tohoto registru.
Bity Popis
---- ---------------------------------------------------
0-1 = 00b Zapisovaci rezim
= 11b Cteci rezim
2-7 Rezervovano
PEL Address Read Mode Port: 3c7h
Adresovy registr pro cteci rezim pouze VGA, pouze zapis
============================================================
Popis: Tento registr urcuje cislo DAC registru, ktery bude
cten. Po nastaveni tohoto registru muzete z datoveho
registru precist po sobe tri 6bitove hodnoty
(intenzitu cervene slozky, intenzitu zelene slozky a
intenzitu modre slozky). Po precteni techto tri
hodnot se obsah adresoveho registru automaticky zvysi
a bude ukazovat na nasledujici DAC registr.
Zapis na datovy port behem cteni muze poskodit
informace ulozene v DAC palete.
Dokumentace karty VGA uvadi, ze jednotlive pristupy k
datovemu registru by mely nasledovat nejdrive po 240
nanosekundach.
Bity Popis
---- ---------------------------------------------------
0-7 Cislo DAC registru pro cteni
PEL Address Write Mode Port: 3c8h
Adresovy registr pro zapis pouze VGA, pouze zapis
============================================================
Popis: Tento registr urcuje cislo DAC registru, do ktereho
bude zapisovano. Po nastaveni tohoto registru na
odpovidajici hodnotu, muzete do datoveho registru
zapsat po sobe tri 6bitove hodnoty odpovidajici
postupne intenzite cervene slozky, intenzite zelene
slozky a konecne intenzite modre slozky barvy. Po
zapisu tri hodnot na datovy registr se automaticky
zvysi obsah adresoveho registru pro zapis.
Cteni z datoveho portu behem zapisu muze poskodit
informace ulozene v DAC tabulce.
Dokumentace karty VGA uvadi, ze jednotlive pristupy k
datovemu registru by mely nasledovat nejdrive po 240
nanosekundach.
Bity Popis
---- ---------------------------------------------------
0-7 Cislo DAC registru pro zapis
PEL Data Register Port: 3c9h
Datovy registr pouze VGA
============================================================
Popis: Tento registr umoznuje zapisovat a cist nastaveni
jednotlivych DAC registru. Pri kazdem pristupu k DAC
registru by se mely pouzit tri cteni/zapisy pro
vsechny tri zakladni slozky - posobe cervena, zelena
a modra. Kazde slozce prislusi 6 bitu.
Dokumentace karty VGA uvadi, ze jednotlive pristupy k
datovemu registru by mely nasledovat nejdrive po 240
nanosekundach.
Bity Popis
---- ---------------------------------------------------
0-5 Hodnota urcena ke cteni/zapisu
6-7 Rezervovano
PEL Mask Port: 3c6h
Maska pro pristup k DAC registrum pouze VGA
============================================================
Popis: S hodnotou jdouci do DAC a obsahem tohoto registru se
provadi binarni AND a teprve vysledek teto operace
smeruje do DAC. Standardne je hodnota registru 0ffh,
tj. na prichozich datech se nic nezmeni. Nizsi
hodnota snizuje pocet pouzitelnych barev.
Bity Popis
---- ---------------------------------------------------
0-7 Hodnota masky
[Pokracovani] |
[Obsah]
Copyright © Jiri Kosek