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