Programování registrů

     Zobrazovací adaptéry EGA a VGA mají několik registrů,
které ovlivňují funcki těchto adaptérů. O některých z těchto
registrů jsme se již zmínili v popisu přístupu do paměti
adaptéru. Registry lze rozdělit do šesti skupin:
     - externí registry (External registers)
     - registry sequenceru (Sequencer registers)
     - CRTC registry (CRTC = Cathode Ray Tube Controller -
       kontroler obrazovky)
     - registry grafického kontroleru (Grapics Controller
       registers)
     - atributové registry (Attribute registers)
     - DAC (Digital to Analog Converter = číslicově
       anologový převodník) registry - ty má pouze VGA
Registry patřící do téže skupiny mají většinou úzce spjatý
význam a ovládají jednu z částí tvorby a zobrazovaní dat na
obrazovce. Sequencer řídí tok dat mezi videopamětí a
atributovým kontrolerem. Atributový kontroler má na starosti
práci s barvou a paletami barev. DAC převádí v kartě VGA
digitální informaci o barvě na příslušná napětí pro
analogový monitor. Pomocí CRTC registrů lze ovládat časování
obrazovky. Grafický kontroler ovládá módy přístupu k
obrazové paměti. Externí registry zajišťují několik funkcí,
které nejsou zařazeny v ostatních skupinách registrů. DAC
regsitry jsou přítomny pouze na kartách VGA, neboť EGA
používá digitální přenos obrazových informací do monitoru.
     K většině registrů (výjimku tvoří externí registry) se
přistupuje nepřímo. Každá skupina registrů má vlastní
adresový a datový registr. Tyto dva registry jsou mapovány
na vstupně-výstupních portech procesoru. Pokud chcete
přistupovat k nějakému registru, musíte nejprve na příslušný
port náležící adresovému registru zapsat index vámi
požadovaného registru a pak můžete na portu odpovídajícímu
datovému registru pracovat s vámi požadovaným registrem.
Pokud tedy chcete zapsat hodnotu 10 do Map mask registru
(ten má index 2 v sequenceru), můžete použít následující
rutinu:

     mov   DX, 3c4h    ;číslo portu adresového registru sequenceru
     mov   AL, 2       ;index Map mask registru
     out   DX, AL      ;zapsání hodnoty na port
     inc   DX          ;v DX je port datového registru sequenceru
     mov   AL, 10      ;požadovaná hodnota pro Map mask
     out   DX, AL      ;zapsání hodnoty v AL na port

Port adresového i datového registru leží hned vedle sebe.
Mikroprocesory 80x86 umožňují pomocí jedné instrukce
(OUT DX, AX) zápis na dva následující porty. Většina
grafických karet umožňuje přístup k registrům pomocí této
programovací techniky. Obecně pak lze psát:

     mov   DX, Port adresního registru
     mov   AL, Index požadovaného registru
     mov   AH, Hodnota zapisovaná do požadovaného registru
     out   DX, AX

Výše uvedená rutina modifikující Map mask registr lze
použitím této finty přepsat do tvaru krátké rutinky:

     mov   DX, 3c4h
     mov   AX, 2 + 256 * 10
     out   DX, AX

Adresový registr si uchvává svou hodnotu až do další změny.
Modifikujete-li tedy pouze jeden registr ze skupiny stačí
nastavit adresní registr jednou a měnit pouze hodnoty
zapisované do datového registru. Změnu adresního registru je
v takových případech výhodné umístit vně cyklu. Můsíte však
být opatrní a vyloučit to, že vám index zapsaný v adresním
registru změní volání služby BIOS nebo program aktivovaný
pomocí přerušení. Pokud si nejste jisti, že nemůže dojít ke
změně tohoto registru vyvoláním nějakého rezidentního
programu, radši zakažte po dobu provádění operací přerušení.
     Do registrů na kartě EGA lze pouze zapisovat. VGA
umožňuje číst aktuální stav registrů s výjimkou
latch-registrů, adresního registru atributového kontroleru a
Input-status registru. Zjištění aktuálního nastavení karty
VGA je tedy pouze otázkou přečtení několika hodnot z portů.
U EGA je už situace složitější. Pokud je aktivní videomód
nasatven pomocí BIOS, měly by být potřebné obsahy registrů
spolu s dalšími informacemi uloženy v ukládací oblasti BIOS.
     Pokud používáte adaptér VGA a chcete modifikovat
některý z jeho registrů, měli byste nejprve načíst obsah
tohoto registru, poté změnit pouze požadované bity a
výsledek zapsat zpět na port. Zajistíte tak kompatibilitu s
následujícími verzemi zobrazovacích adaptérů.


                     Externí registry

Externí registry poskytují na adaptérech EGA a VGA několik
užitečných funkcí. Narozdíl od většiny registrů
zobrazovacího adaptéru se k těmto registrům přistupuje
přímo. Každý z těchto registrů má vyhrazen vlastní port.

Miscellaneous Output register                    Port: 3c2h
                                                pouze zápis
===========================================================
Popis: Tento registr umožňuje změnu několika nastavení
       adaptéru, které ovlivňují jeho činnost.

       Hardwarový reset počítače nastaví všechny bity v
       tomto registru na 0.

       Tento registr je určen pouze pro zápis, a to jak na
       EGA tak i na VGA. Pokud máte VGA kartu můžete si
       přečíst nastavení tohoto registru z portu 3cch.

       Bity 2 a 3 mohou být použity ke změně časování. Pokud
       na feature-konektor připojíte zdroj kmitání o vyšší
       frekvenci než je obvyklé a změníte nastavení CRTC
       registrů, můžete dosáhnout vyššího rozlišení.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Volba portů pro CRTC registry (3d?h/3b?h)
              Tento bit určuje umístění portů CRTC
         kontroleru a Input-status registru 1. Nastavení
         tohoto bitu na 0 určuje kompatibiltu
         s monochromatickými adaptéry (MDA), čísla portů
         jsou 3b?h. Naopak nasatvení tohoto bitu na jedna
         znamená čísla portů 3d?h, což odpovídá barevným
         adaptérům.
              Před tím než budete pracovat s CRTC registry
         či případně s Input-status registrem 1, měli byste
         pomocí tohoto bitu zjistit, na kterých portech jsou
         příslušné registry dostupné.

    1    Povolení přístupu do RAM
              Nastavení tohoto bitu na 0 znemožní procesoru
         přístup k paměti videoadaptéru. Standardní
         nastavení tohoto bitu je 1, tj. přístup k paměti je
         povolen.

  2-3    Nastavení rychlosti časovače
              Tyto bity určují frekvenci časovače podle
         následující tabulky:
         /--------------------------------------------\
         | Hodnota | EGA             |  VGA           |
         |---------+-----------------+----------------|
         |   00b   | 14MHz           |  25MHz         |
         |---------+-----------------+----------------|
         |   01b   | 16MHz           |  28MHz         |
         |---------+----------------------------------|
         |   10b   | Frekvence je určena externím     |
         |         | signálem (z feature-konektoru)   |
         |---------+----------------------------------|
         |   11b   | Nepoužito       | Nepoužito      |
         \--------------------------------------------/
         Před změnou tohoto nastavení byste měli pomocí
         Reset-registru sequenceru vyvolat synchronní reset
         adaptéru.

    4    Vypnutí interního ovladače obrazovky    (pouze EGA)
              Tento bit určuje původce videosignálu pro
         monitor. Obvykle je tento bit nastaven na 0 a
         adaptér EGA ovládá připojený monitor. Pokud je bit
         nastaven na 1, signál pro monitor pochází z
         výstupních pinů feature-konektoru. Protože tento
         konektor obsahuje i vstupní piny, může zařízení
         připojené pomocí feature-konektoru kombinovat
         signál z karty EGA se signálem z nějakého jiného
         zdroje (například z videa).

    5    Stránkový bit pro prokládáné módy
              Tento bit přepíná mezi dvěma 64K stránkami
         paměti z celé 128K roviny, když je aktivní mód s
         prokládáním řádku, tj. sudé řádky jsou v jedné
         stránce paměti a liché v druhé. Nastavené tohoto
         bitu na 0 mapuje do segmentu vyhrazeného pro
         videoadaptér dolních 64K a nastavení na 1 mapuje
         horních 64K.

    6    Polarita horizontálního zatemňovacího impulsu
              Polarita horizontálního zpětného paprsku je
         kladná, pokud je tento bit nastaven na 0, a
         záporná, pokud je nasatven na 1. Digitální monitory
         používají kladnou polaritu. Na analogovývh
         monitorech tento bit spolu s bitem 7 určují počet
         řádek na obrazovce.

   7     Polarita vertikálního zatemňovacího impulsu
              Polarita vertikálního zpětnéhoo impulsu je
         kladná, pokud je tento bit nastaven na 0, a
         záporná, pokud je nastaven 1. Monochraomatický
         monitor používá zápornou polaritu, barevné monitory
         používají kladné polarity a analogové monitory
         používají tento bit spolu s bitem 6 k určení počtu
         řádek na obrazovce.
         Počty řádek na obrazovce pro analogové monitory
         jsou kódovány následujícím způsobem:
         /------------------------------------\
         | Bity 6 a 7 | EGA       | VGA       |
         |------------+-----------+-----------|
         |    00b     | 200 řádek | Nepoužito |
         |    01b     | 350 řádek | 350 řádek |
         |    10b     | Nepoužito | 400 řádek |
         |    11b     | Nepoužito | 480 řádek |
         \------------------------------------/

Feature Control Register                          Port: 3?ah
                                                 pouze zápis
============================================================
Popis: Na kartě EGA jsou bity tohoto registru použity
       k ovládání signálů na dvou pinech feature-konektoru
       (piny FC0 a FC1). Pomocí těchto dvou signálů můžete
       ovládat zařízení připojené k feature-konektoru.

       Číslo portu je buď 3bah (monochromatické adaptéry)
       nebo 3dah (barevné adaptéry).

       VGA tyto bity nepoužívá, bit 3 musí být nastaven na
       0. Karta VGA umožňuje čtení obsahu tohoto registru na
       portu 3cah.

  EGA:
  Bity   Popis
  ----   ---------------------------------------------------
    0    Nastavení tohoto bitu je promítáno na pin 21
         feature-konektoru (FC0).

    1    Nastavení tohoto bitu je promítáno na pin 20
         feature-konektoru (FC1).

  2-7    Rezervováno

  VGA:
  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Rezervováno (bit 3 musí být nula)

Input Status Register 0                           Port: 3c2h
Vstupní stavový registr 0                        pouze čtení
============================================================
Popis: Tento registr zpřístupňuje několik důležitých
       informací o grafické kartě. Na obou adaptérech EGA i
       VGA je určen pouze pro čtení.

       Na adaptérech EGA bity 5 a 6 odpovídají signálům FEAT
       0 a FEAT 1 z feature-konektoru. Mohou být využity pro
       komunikaci mezi programem a zařízením připojeným přes
       feature-konektor. Na kartě VGA jsou tyto dva bity
       rezervovány.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Nepoužito

    5    Tento bit odpovídá signálu na pinu 19
         feature-konektoru (FEAT 0) - pouze EGA

    6    Tento bit odpovídá signálu na pinu 17
         feature-konektoru (FEAT 1) - pouze EGA

    7    Přerušení obrazovky
              Tento bit je nastaven na 1, pokud bylo
         vyvoláno přerušení IRQ2 začátkem vertikálního
         zatemňovacího impulsu. Používá se pro kontrolu zda
         přerušení bylo opravdu vyvoláno kartou EGA/VGA,
         neboť IRQ2 je používáno i jinými zařízeními (u AT
         je na něj v kaskádě napojen další řadič přerušení).
         Tento bit zůstavá nastaven na 1 do té doby, než je
         smazán. Obsluha přerušení by tedy měla tento bit
         smazat a znovu povolit přerušení pomocí registru
         CRTC - Konec vertikálního zpětného chodu (index
         tohoto registru je 11h).

Input Status Register 1                           Port: 3?ah
Vstupní stavový registr 1                        pouze čtení
============================================================
Popis: Tento registr zpřůstupňuje několik důležitých
       informací o grafické kartě. Na obou adaptérech EGA i
       VGA je určen pouze pro čtení.

       Číslo portu je buď 3bah (monochromatické adaptéry)
       nebo 3dah (barevné adaptéry).

  Bity   Popis
  ----   ---------------------------------------------------
    0    Přístup adaptéru k paměti
              Tento bit je nastaven na jedna během aktivního
         zobrazovacího intervalu (tj. adaptér přistupuje k
         videopaměti). Během zatemňovacího impulsu je tento
         bit nastaven na 0. Tento bit je zde umístěn pro
         zachování zpětné kompatibility s CGA. U karty CGA
         docházelo při současném přístupu videodaptéru i
         procesoru do paměti k poruchám obrazu (tzv.
         sněžení). Zápis do paměti adaptéru EGA/VGA může být
         prováděn kdykoli, bez jakýchkoli vedlejších efektů.

    1    Světelné pero je přiloženo k obrazovce - pouze EGA
              Tento bit je nastaven na jedna, pokud je
         světelné pero přiloženo k obrazovce. Pokud je
         světelné pero neaktivní obsahuje tento bit 0.

    2    Spínač světelného pera - pouze EGA
              Tento bit je nastaven na jedna, pokud je
         spínač světelného pera otevřený, a na hodnotu 0 je
         nastaven, pokud je sepnutý.

    3    Indikace vertikálního zatemňovacího signálu
              Tento bit je nastaven na 1 při zpětném
         vertikálním zatemňovacím impulsu, tj. když se
         elektronový paprsek obrazovky, který vytváří na
         stínítku obraz, vrací z pravého dolního rohu
         obrazovky do levého horního. Po skončení
         zatemňovacího signálu je tento bit nastaven až do
         dalšího zatemnění na nula.

  4-5    Diagnostické použití
              Tyto dva bity odpovídají nastavení dvou bitů
         registru atributů. Výběr bitů je uskutečněn pomocí
         bitů 4 a 5 registru atributového kontroleru pro
         přístup k bitovým rovinám (Color Enable Register).

  6-7    Nepoužito

Video Subsystem Enable Register                   Port: 3c3h
Registr ovládání aktivity videokarty               pouze VGA
============================================================
Popis: Tento registr ovládá aktivitu karty VGA. Pomocí bitu
       1 registru Miscellaneous-Output (povolení přístupu do
       RAM) může být zákázan procesoru přístup k paměti a k
       registrům videodaptéru. Pokud je zakázán přístup
       procesoru do paměti a k registrům videodaptéru, může
       být i nadále vytvářen adaptérem obraz. Podmínkou pro
       vytváření obrazu je nastavení bitu 1 registru pro
       ovládání aktivity videokarty na jedna.

  Bity   Popis
  ----   ---------------------------------------------------
    0     = 1  Je generován obraz.
          = 0  Není generován obraz.

  1-7    Rezervováno


                    Registry sequenceru

     Úlohou sequenceru v procesu vytváření obrazu je
ovládání toku dat z paměti a grafického kontroleru do
atributového kontroleru. V každém cyklu hodin během
aktivního zobrazovacího intervalu musí sequencer dodat
atributovému kontroleru 4 bity, které jsou převedeny na
pixel odpovídající barvy. V grafických režimech je vždy
z bitových rovin přečten byte. Bitové roviny jsou čtyři,
přečtené jsou tedy 4 byte. Tyto 4 byte se uloží do 4
posuvných registrů, odkud jsou po čtveřicích bitů posílány
do atributového kontroleru k vytvoření barvy. V textových
režimech je ASCII kód znaku použit jako odkaz do znakového
bloku, ve kterém je bitová definice tvaru znaku. Z této
definice a atributu je opět vytvořena čtveřice byte, která
je posuvným registrem postoupena atributovému kontroleru.
     Na kartě EGA atributový kontroler přímo ovládá
obrazovku. Karta VGA používá výstup atributového kontroleru
jako odkaz do tabulky DAC. Z této tabulky jsou přečteny
intenzity základních barev a po převedení na odpovídající
napětí jsou poslány na obrazovku.
     Registry sequenceru ovládájí kmitočet hodin, posuvné
registry a umístění znakového generátoru. Sequencer
rozděluje přístup procesoru a adaptéru k paměti, určuje
bitové mapy přístupné procesoru. Většina běžných aplikací
z registrů sequenceru využívá pouze Map Mask a Character Map
Select registry.

Sequencer Adress Register                         Port: 3c4h
Adresový registr sequenceru
============================================================
Popis: Obsah tohoto registru určuje, který z registrů
       sequenceru bude mapován na datovém portu 3c5h. Pro
       přístup k registru sequenceru musíte na tento port
       zapsat index vámi požadovaného registru sequenceru.
       /---------------------------------------------------\
       |Index| Registr                                     |
       |-----+---------------------------------------------|
       |  0  | Reset                                       |
       |  1  | Režim časovače (Clocking Mode)              |
       |  2  | Map mask                                    |
       |  3  | Výběr znakového bloku (Character Map Select)|
       |  4  | Paměťový režim (Memory Mode)                |
       \---------------------------------------------------/

Reset Register                                    Port: 3c5h
Reset registr                                    Index:    0
============================================================
Popis: Tento registr je používán k resetování sequenceru. To
       je nezbytné pro zachování obsahu obrazovky při změně
       režimu časovače. Aby sequencer pracoval musí být oba
       bity 0 a 1 nastaveny na jedna.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Asynchroní smazání sequenceru
              Nastavení tohoto bitu na 0 způsobí smazání a
         zastavení sequenceru. Výstupy se uvedou do stavu s
         vysokou impendací. Tím může být zapříčiněna ztráta
         obrazových dat.

    1    Synchroní smazání sequenceru
              Nastavení tohoto bitu na 0 způsobí smazání a
         zastavení sequenceru. Do tohoto stavu by měl být
         sequencer uveden, pokud se mění režim časovače nebo
         rychlost časovače.

  2-7    Nepoužito

Clocking Mode Register                            Port: 3c5h
Režim časovače                                   Index:    1
============================================================
Popis: Tento registr ovlivňuje některé funkce související s
       časováním adaptéru. Před tím, než měníte nějaké
       nastavení tohoto registru, měli byste provést
       synchronní reset sequenceru.

  Bity   Popis
  ----   ---------------------------------------------------
    0    8/9 taktů na jeden znak
              Pokud je tento bit nastaven na 1, generují se
         standardní, 8 bodů široké znaky. Pokud je nastaven
         na 0, generují se 9 bodů široké znaky (pouze v MDA
         a VGA textových módech).

    1    Šířka pásma pro přístup do paměti - pouze EGA
              Tento bit ovládá přístupový čas do paměti pro
         videoadaptér. Nastavení tohoto bitu na jedna
         vyhradí adaptéru 2 z 5 paměťových cyklů. Nastavení
         tohoto bitu na nula vyhradí pro adaptér 4 z 5
         paměťovývh cyklů. Protože módy s vyšším rozlišením
         potřebují číst více dat během jednoho řádku,
         vyžadují všechny módy kromě 0, 1, 4, 5 a 0dh 4 z 5
         cyklů. Nastavení tohoto bitu ovlivní waitstates
         generované adaptérem. Během zpětného chodu paprsku
         pokračuje na EGA přidělování přístupu k paměti. Na
         VGA je při zpětném chodu přístup k paměti zcela
         vyhrazen procesoru.

    2    4/2 posuvné registry
              Obvykle je tento bit nastaven na 0. Data z
         paměti jsou posílána do atributového kontroleru
         pomocí 4 8bitových posuvných registrů. Nastavení
         tohoto bitu na jedna kombinuje data ze dvou
         bitových rovin do 16bitových posuvných registrů.
         Tyto registry jsou nyní však pouze dva. Sníží se
         tak počet barev, ale zvětší dostupná paměť.

    3    1/2 hodinové frekvence
              Po nastavení tohoto bitu na jedna se bude
         frekvence z časovače dělit dvěma. Toto zdvojení
         časových intervalů se používá pro zobrazení módů
         s rozlišením 320 x 200 či textových módů se 40
         znaky na řádku.

    4    4->1 posuvné registry
              Nastavení tohoto bitu na jedna aktivuje čtení
         z jedné bitové roviny po 32 bitech, které se poté
         uloží do posuvných registrů. Žádný ze standardních
         módů nepoužívá toto nastavení, neboť je k dispozici
         dostatečně velký adresní prostor.

    5    Vypnutí obrazovky
              Nastavení tohoto bitu na jedna vypne
         generování obrazu na stínítku při zachování všech
         interních funkcí videoadaptéru. Vypínání obrazovky
         lze použít v případě, kdy potřebujeme vyhradit
         všechen přístupový čas do videopaměti procesoru
         (například pro práci s velkým objemem dat). Další
         použití je v jednoduchéch screensaveru (šetřiči
         obrazovky).

  6-7    Nepoužito

Map Mask Register                                 Port: 3c5h
Map mask registr                                 Index:    2
============================================================
Popis: Map mask registr povoluje a zakazuje modifikaci
       jednotlivých bitových map během zápisu do paměti.
       Každý bit nastavený na jedna umožní modifikaci
       příslušné bitové roviny.

       Pokud používáte módy s oddělenými sudými a lichými
       řádky, měly by mít bity 0 a 1 stejnou hodnotu, stejně
       tak by měly mít bity 2 a 3 stejnou hodnotu. Pokud
       použiváte režim zřetězení 4 bitových map (je nastaven
       v grafickém režimu 320 x 200, 256 barev), měly by mít
       všechny bity stejnou hodnotu.

       Tento registr je aktivní ve všech zapisovacích
       režimech, tj. ovlivňuje veškerá data zapisovaná do
       paměti videoadaptéru.

  Bity   Popis
  ----   ---------------------------------------------------
    0     = 1  Povolena modifikace bitové roviny 0

    1     = 1  Povolena modifikace bitové roviny 1

    2     = 1  Povolena modifikace bitové roviny 2

    3     = 1  Povolena modifikace bitové roviny 3

  4-7    Nepoužito

Character Map Select Register                     Port: 3c5h
Regsitr výběru znakového bloku                   Index:    3
============================================================
Popis: Tento registr určuje, která část bitové roviny
       obsahuje definici znakovové sady pro textové režimy.
       Bitová rovina 2 je rozdělena na 4 části po 8K (na
       kartách EGA s méně než 256K přísluší každých 64K
       jedné části). Na kartách EGA může každá tato část
       obsahovat jeden znakový blok z celkových čtyř. VGA
       může obsahovat v jedné 8K části dva znakové bloky.
       Dva z těchto osmi (u EGA čtyř) znakových bloků mohou
       být vybrány jako primární a sekundární znakové sady.
       Obvykle jsou primární a sekundární znaková sada
       totožné a je možno zobrazovat pouze 256 znaků. Pokud
       je ale obsah znakových sad rozdílný, určuje bit 3
       atributu (intenzita) používanou znakovou sadu. Znaky
       s nastavenou intenzitou se pak objeví jako dalších
       256 použitelných znaků.

       EGA musí mít více než 64K paměti, aby podporovala dvě
       znakové sady najednou.

       Tento registr by měl být nastavován po resetu
       sequenceru, protože asynchroní smazání sequenceru
       vynuluje tento registr.

  Bity   Popis
  ----   ---------------------------------------------------
  0-1    Výběr primární znakové sady
               Hodnota těchto dvou bitů určuje 8K čast bitové
         roviny 2 použitou k uložení primární znakové sady.
         Hodnota 0-3 odpovídá znakovému bloku 0-3.

  2-3    Výběr sekundární znakové sady
               Hodnota těchto dvou bitů určuje 8K čast bitové
         roviny 2 použitou k uložení sekundární znakové sady
         (bit 3 atributu = 1). Hodnota 0-3 odpovídá
         znakovému bloku 0-3.

    4    Nejvyšší bit výběru sekundární znakové sady - pouze VGA
               Tento bit se připojuje na VGA k bitům 2 a 3.
         Sekundární znaková sada může být na adaptéru VGA
         uložena v jednom z osmi znakových bloků.

    5    Nejvyšší bit výběru primární znakové sady - pouze VGA
               Tento bit na VGA rozšiřuje bity 0 a 1.
         Umožňuje volbu primární znakové sady z celkem osmi
         znakových bloků.

  6-7    Nepoužito

Memory Mode Registr                               Port: 3c5h
Paměťový režim sequenceru                        Index:    4
============================================================
Popis: Tento registr ovlivňuje přístup sequenceru k paměti.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Textový režim
               Tento bit je nastaven na jedna v textových
         režimech a na nula v grafických. V textových
         režimech je bitová rovina 2 vyhrazena pro znakový
         generátor.

    1    Rozšíření paměti
               Tento bit je nastaven na jedna, pokud má
         adaptér více než 64K paměti. V opačném případě je
         nastaven nula.

    2    Paměťový mód s oddělenými sudými a lichými adresami
               Když je tento bit nastaven na jedna, data na
         sudých adresách jsou mapována do sudých bitových
         rovin a data na lichých adresách jsou mapována do
         lichých bitových map. Toto nastavení se týká pouze
         sequenceru. Pokud je pomocí bitu 4 registru režimu
         grafického kontroleru přepnut i grafický kontroler
         do tohoto režimu, snadno se emulují módy CGA. Tento
         paměťový model je použit i v textových režimech,
         kde jsou ASCII kódy znaků uloženy v jedné bitové
         rovině a atributy v druhé.

    3    Zřetězení 4 bitových map - pouze VGA
               Nastavení tohoto bitu na jedna uvede v
         činnost mapování podobné tomu předchozímu. Adresy
         jsou však rozděleny do čtyř skupin. Adresy, které
         jsou násobkem čtyř jsou uloženy v bitové rovině 0.
         Adresy, které po vydělení čtyřmi dávají zbytek
         jedna jsou uloženy v bitové rovině 1 atd. Tento
         paměťový režim využívá mód 13h (320 x 200, 256
         barev). Každá bitová rovina obsahuje jen každý
         čtvrtý byte. Procesor však vidí celou paměťovou
         oblast souvisle.

  4-7    Nepoužito


                       Registry CRTC

     Registry CRTC tvoří největší skupinu registrů adaptéru
EGA a VGA. Ovládají veškeré funkce týkající se časovaní
a synchronizace vytváření obrazu. Jedinečností registrů CRTC
je to, že se mohou vyskytovat na dvou různých portech.
V monochromatických režimech se pro přístup k CRTC registrům
používají porty 3b4h/3b5h a v barevných režimech se
používají porty 3d4h/3d5h. Toto dvojí umístění je důsledkem
zachovávání zpětné kompatibility s MDA a CGA. Tyto adaptéry
mají totiž registry CRTC umístěny na rozdílných portech.
     Jelikož registrů CRTC je veliké množství a jejich
souvislost by nemusela být na první pohled zřejmá, povíme se
nejprve něco o způsobu tvorby obrazu na stínítku monitoru.
Obraz je vytvářen tím, že vrstva luminescenční látky je
aktivována pomocí elektronového paprsku. Tato aktivace se
projeví rozsvícením ozářené části luminoforu. Čím silnější
elektronový svazek dopadal na stínítko, tím jasnější bude
obraz. Na barevném displeji jsou naneseny luminofory tří
základních barev (buď v tenkých proužcích vedle sebe, nebo
jako trojice teček), které po složení dávají výslednou
barvu.
     Elektronový paprsek začíná svůj pohyb v levém horním
rohu obrazovky. Při pohybu doprava vykresluje jednu řádku.
Když dosáhne pravého okraje stínítka, paprsek se deaktivuje
a přesová se na následující řádku vlevo (tzv. zpětný chod
paprsku). Tento celý proces se opakuje, dokud není
vykreslena celá obrazovka. Z pravého okraje poslední řádky
se deaktivovaný paprsek přesouvá zpět do levého horního
rohu. Samotný obraz videopaměti nezabírá celou tuto plochu.
Okolo obrazu je ještě rámeček vyplněný určitou barvou (viz
obr. 9).
     Registry CRTC můžeme rozdělit do dvou skupin podle toho
zda ovlivňují zobrazování jedné řádky (horizontální) nebo
skládání těchto řádek do výsledného obrazu (vertikální).
Tvorbu obrazu a velikost rozlišení ovlivňují tyto registry:
  Horizontální - Celkový počet znaků (index 0)
                 Počet zobrazovaných znaků (index 1)
                 Začátek zatemnění (index 2)
                 Konec zetemnění (index 3)
                 Začátek zpětného impulsu (index 4)
                 Konec zpětného chodu paprsku (index 5)
  Vertikální  -  Celkový počet řádek (index 6)
                 Začátek zpětného chodu paprsku (index 10h)
                 Konec zpětného chodu (index 11h)
                 Počet zobrazovaných řádek (index 12h)
                 Začátek zatemnění (index 15h)
                 Konec zatemnění (index 16h)
Některé z těchto registrů jsou více než osmibitové.
Zbývající bity mají umístěny v registru přetečení
(Overflow-register) s indexem 7.
     Horizontální hodnoty jsou ve znacích. Počítání
horizontální pozice začíná od nuly a končí celkovým počtem
znaků (index 0) plus jedna (EGA) nebo plus čtyři (VGA). Data
jsou zobrazována od 0 do počtu zobrazovaných znaků. Ten bývá
obvykle 39 nebo 79. Dostáváme tak 40 nebo 80 znaků na řádku
(v grafice krát 8 - počet bitů na znak - dostáváme 320 nebo
640). Na pozici následující za posledním zobrazeným znakem
obvykle začíná zatemnění (hodnota registru bývá nejčastěji
40 nebo 80) při zatemnění se generuje rámeček. O několik
znaků později začíná zpětný chod paprsku. Registry určující
konec zatemnění a zpětného chodu používají pouze svých 5
nejnižších bitů. Pokud 5 nejnižších bitů aktuálně kresleného
znaku odpovídá konci zatemnění, začne se vykreslovat levý
rámeček. Poté už se čeká jen na to až bude konec zpětného
chodu odpovídat aktuální poloze paprsku a začíná
vykreslování nové řádky. Protože mezi koncem zpětného chodu
a začátkem vykreslování nové řádky je málo času, lze
začátek vykreslování nové řádky posunout pomocí bitů 5 a 6
registru konec zatemnění.
     Vertikální registry mají obdobný význam, pouze jejich
jednotkou nejsou znaky, ale řádky. Vertikální snímkovací
frekvence bývá obvykle v rozsahu od 50 do 90 Hz. Obecně lze
řící, čím větší je tato frekvence, tím ostřejší
a kvalitnější je obraz. Pokud je tato frekvence menší než
60 Hz, může nám obraz připadat nestálý a klepající se.

CRTC Adress register                              Port: 3?4h
Adresový registr CRTC
============================================================
Popis: Adresový registr CRTC určuje, který z registrů CRTC
       bude přístupný přes datový registr CRTC. Tento
       registr se může vyskytovat na dvou různých portech.
       Na adaptéru VGA můžete zjistit pomocí bitu 0 registru
       přečteného z portu 3cch, která ze dvou možností
       umístění je právě používána.
       /-------------------------------------------------------\
       |Index| Registr                                         |
       |-----+-------------------------------------------------|
       | 00h | Celkový horizontální počet znaků                |
       | 01h | Horizontální počet zobrazovaných znaků          |
       | 02h | Začátek horizontálního zatemnění                |
       | 03h | Konec horizontálního zatemnění                  |
       | 04h | Začátek horizontálního zpětného chodu paprsku   |
       | 05h | Konec horizontálního zpětného chodu paprsku     |
       | 06h | Celkový vertikální počet řádek                  |
       | 07h | Registr přetečení                               |
       | 08h | Verikální posun ve znakových režimech           |
       | 09h | Počet řádek na znak                             |
       | 0ah | Začátek kurzoru                                 |
       | 0bh | Konec kurzoru                                   |
       | 0ch | Počáteční adresa - vyšší byte                   |
       | 0dh | Počáteční adresa - nižší byte                   |
       | 0eh | Pozice kurzoru - vyšší byte                     |
       | 0fh | Pozice kurzoru - nižší byte                     |
       | 10h | Začátek vertikálního zpětného chodu             |
       |     | EGA čtení - Pozice světelného pera - vyšší byte |
       | 11h | Konec vertikálního zpětného chodu               |
       |     | EGA čtení - Pozice světelného pera - nižší byte |
       | 12h | Vertikální počet zobrazovaných řádek            |
       | 13h | Offset                                          |
       | 14h | Pozice podtržení                                |
       | 15h | Začátek vertikálního zatemnění                  |
       | 16h | Konec vertikálního zatemnění                    |
       | 17h | Ovládání režimu                                 |
       | 18h | Porovnání řádky                                 |
       \-------------------------------------------------------/

Horizontal Total Register                         Port: 3?5h
Celkový horizontální počet znaků                 Index:  00h
============================================================
Popis: Tento registr obsahuje počet znaků v jedné
       horizontální řádce plus znaky odpovídající zpětnému
       chodu paprsku. Interní čítač se po dosažení této
       hodnoty vynuluje. Nový interval pro další řádku začne
       jeden takt po vynulování čítače.

       Hodnota v tomto registru je u EGA o 2 menší a u VGA o
       5 menší než skutečný počet znakových délek na jedné
       řádce.

       Adaptér vždy považuje první zobrazitelnou pozici za
       první pozici v čítači. Následující intervaly přísluší
       pravému rámečku, zpětnému chodu paprsku a levému
       rámečku.

       Tento registr ovlivňuje horizintální velikost pixelu.
       Čím je hodnota tohoto registru vyšší, tím více znaků
       se musí na jedné řádce zobrazit a tím menší musí být
       jeden bod.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Celkový horizontální počet znaků (o dvě menší na
         EGA a o pět menší na VGA).

Horizontal Display Enable End Register            Port: 3?5h
Horizontální počet zobrazovaných znaků           Index:  01h
============================================================
Popis: Tento registr obsahuje počet znakových šířek v
       zobrazované oblasti. Pokud interní čítač dosáhne
       hodnoty v tomto registru, začíná vykreslování pravé
       části rámečku.

       Hodnota v tomto registru je o 1 menší než počet
       zobrazitelných znaků. Hodnota 0 tedy znamená, že bude
       zobrazován jeden znak na řádku.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Horizontální počet zobrazovaných znaků mínus jedna
         (obvykle 39 nebo 79).

Start Horizontal Blanking Register                Port: 3?5h
Začátek horizontálního zatemnění                 Index:  02h
============================================================
Popis: Pokud čítač dosáhne hodnoty tohoto registru, začne
       horizontální zatemnění, tj. začne se vykreslovat
       pravý rámeček. Vykreslování pravé části rámečku
       skončí v okamžiku, kdy čítač dosáhne hodnoty registru
       začátek zpětného chodu.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Pozice, na které se zečne zobrazovat pravá část
         rámečku.

End Horizontal Blanking Register                  Port: 3?5h
Konec horizontálního zatemnění                   Index:  03h
============================================================
Popis: Tento registr obsahuje hodnotu čítače, při kter se
       přestane s vykreslováním rámečku. Obsahuje pouze 5
       méně významných bitů této hodnoty. Ty významnější
       jsou shodné s bity v registru pro začátek
       horizontálního zatmění.

       Tento registr také obsahuje kontrolu nad pauzou,
       která předchází zobrazování nové řádky. Během této
       pauzy musí mít CRTC dost času k přístupu do
       videopaměti, ke znakovému generátoru a k atributům.
       Pokud je tato pauza příliš malá, může být první znak
       zobrazován vícekrát. Pokud je pauza příliš velká,
       může být několik prvních znaků nezobrazených.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Konec horizontálního zatemnění.

  5-6    Pauza po naplnění interního horizontálního čítače
          = 00b  Žádná pauza
          = 01b  Pauza odpovídající vykreslení jednoho znaku
          = 10b  Pauza odpovídající vykreslení dvou znaků
          = 11b  Pauza odpovídající vykreslení tří znaků

    7    EGA - Nepoužito
         VGA - Určeno pro testování, mělo by být nastaveno
               na 1.

Start Horizontal Retrace Pulse Register           Port: 3?5h
Začátek horizontálního zpětného chodu paprsku    Index:  04h
============================================================
Popis: Tento registr obsahuje hodnotu čítače, při které
       bude vygenerován impuls zpětného chodu a elektronový
       paprsek bude přesouván doleva. Zpětný chod může být
       prodloužen pomocí některých bitů registru konec
       zpětného chodu paprsku.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Hodnota interního čítače, při které začne být
         generován signál pro zpětný chod paprsku.

End Horizontal Retrace Register                   Port: 3?5h
Konec horizontálního zpětného chodu paprsku      Index:  05h
============================================================
Popis: Tento registr obsahuje pět méně významných bitů,
       které při shodě s interním čítačem ukončí zpětný chod
       elektronového paprsku. Tři významnější bity jsou
       shodné s registrem určujícím začátek zpětného chodu.

       Bity 5-6 určují pauzu, o kterou bude prodloužen
       zpětný chod paprsku. Může být použita pro
       synchronizaci se zatemňováním.

       Tento registr obsahuje na adaptérech VGA v bitu 7
       šestý bit registru konec horizontálního zatemnění.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Pět méně významných bitů čítače, při kterých skončí
         zpětný chod paprsku.

  5-6    Pauza po návratu paprsku
          = 00b  Žádná pauza
          = 01b  Pauza odpovídající vykreslení jednoho znaku
          = 10b  Pauza odpovídající vykreslení dvou znaků
          = 11b  Pauza odpovídající vykreslení tří znaků

    7    Rozšíření horizontálního scrolování - pouze EGA
               Tento bit je normálně nastaven na 0. Pokud
         máte EGA kartu s více než 64K paměti, můžete tento
         bit použít pro rozšíření rozsahu scrolování. pro
         využití této schopnosti nejprve nastavte tento bit
         na 0. Poté scrolujte běžným způsobem o 8 pixelů.
         Nastavte tento bit na 1 a opět běžným způsobem
         scrolujet o osm bodů. Poté změnte počáteční adresu
         zobrazovaných dat a celý proces opakujte. Karta VGA
         má obdobný bit v registru pro počet řádek na znak.

    7    6. bit registru konec horizontálního zatemnění - pouze VGA
               Tento bit rozšiřuje registr konce
         horizontálního zatemnění.

Vertical Total Register                           Port: 3?5h
Celkový vertikální počet řádek                   Index:  06h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů počtu
       zobrazovaných řádek plus počet řádek potřebných na
       zatěmnění a zpětný chod paprsku. Interní vertikální
       čítač bude pracovat od 0 do této hodnoty. V registru
       přetečení jsou uloženy bit 8 a 9 (VGA) tohoto
       registru.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů celkového počtu řádek.

CRTC Overflow register                            Port: 3?5h
Registr přetečení                                Index:  07h
============================================================
Popis: tento registr obsahuje nejvýznamnější bity některých
       registrů CRTC, které překročily osmibitový rozsah.

  Bity   Popis
  ----   ---------------------------------------------------
    0    9. bit registru celkový vertikální počet řádek

    1    9. bit registru vertikální počet zobrazovaných
         řádek

    2    9. bit registru začátek vertikálního zpětného chodu

    3    9. bit registru začátek vertikálního zatemnění

    4    9. bit registru porovnání řádky

    5    10. bit registru celkový vertikální počet řádek -
         pouze VGA

    6    10. bit registru vertikální počet zobrazovaných
         řádek - pouze VGA

    7    10. bit registru začátek vertikálního zpětného
         chodu - pouze VGA

Preset Row Scan Register                          Port: 3?5h
Vertikální počet ve znakových režimech           Index:  08h
============================================================
Popis: První zobrazovaná řádka je určena obsahem registru
       počáteční adresa zobrazování plus offset určený tímto
       registrem. Tento registr obsahuje počáteční řádku pro
       zobrazování (normálně 0). Tento registr se používá
       pro implmentaci plynulého scrolování v textových
       režimech. Určuje na kolikáté řádce znaku začne
       zobrazování. Hodnota tohoto registru by tedy neměla
       přesáhnout počet řádek jednoho znaku. V grafických
       režimech by měl být tento registr nastaven na nula.
       Plynulé vertikální scrolování lze v grafických
       režimech provádět za použití samotného registru
       počáteční adresy zobrazování.

       Změna tohoto registru se promítne až do následujícího
       zobrazovacího intervalu. Pouze pokud je změna
       provedena během vykreslování první řádky, je reakce
       na změnu nastavení okamžitá. Tento registr by tedy
       měl být měněn buď během vertikálního zpětného chodu
       paprsku nebo během prvního horizontálního zpětného
       chodu.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Číslo první zobrazované řádky po skončení
         vertikálního zpětného chodu.

  5-6    4. a 5. bit horizontálního scrolování - pouze VGA
               Tyto bity rozšiřují registr pro horizontální
         posun obrazu doleva. Toto rozšíření je nutné pokud
         je používáno zřetězení bitových map.

    7    Nepoužito

Maximum Scan Line Register                        Port: 3?5h
Počet řádek na znak                              Index:  09h
============================================================
Popis: Registr obsahuje výšku používaných znaků mínus jedna.
       Tento registr má uvedený význam pouze v textových
       režimech.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Výška používaných znaků mínus jedna

    5    10. bit registru začátek vertikálního zatemnění -
         pouze VGA

    6    10. bit registru porovnání řádky - pouze VGA

    7    Konverze 200 na 400 - pouze VGA
               Pokud je tento bit nasatven na jedna, je
         každá řádka v 200 řádkovém režimu zobrazována
         dvakrát. Dosahuje se tak stejné kvality zobraní
         jako při vertikálním rozlišení 400.

Cursor Start Register                             Port: 3?5h
Začátek kurzoru                                  Index:  0ah
============================================================
Popis: Obsah tohoto registru určuje číslo řádky znakového
       boxu, na které začne být zobrazován kurzor. Poslední
       řádka kurzoru se nastavuje pomocí registru konec
       kurzoru (index 0bh). Tento registr je platný pouze v
       textových režimech. Řádky jsou číslovány odshora
       dolů, od 0 do počtu byte na znak mínus jedna.

       Pokud je na adaptérech EGA počáteční řádka kurzoru
       větší než koncová, zobrazí se inverzní kurzor. Na VGA
       toto nastavení vede ke zmizení kurzoru.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Začátek kurzoru
               Číslo řádky, na které začne zobrazování
         kurzoru.

    5    Vypnutí kurzoru - pouze VGA
               Pokud je tento bit nastaven na jedna, kurzor
         není zobrazován.

  6-7    Nepoužito

Cursor End Register                               Port: 3?5h
Konec kurzoru                                    Index:  0bh
============================================================
Popis: Obsah tohoto registru určuje číslo řádky znakového
       boxu, na kterém přestane zobrazování kurzoru. První
       zobrazovaná řádka kurzoru se nastavuje pomocí
       registru začátek kurzoru (index 0ah). Číslování řádek
       začíná odshora od nuly.

       Tento registr obsahuje bity 5 a 6, které umožňují
       ovládat pauzu po vyslání kontrolního signálu kurzoru.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Konec kurzoru
               Číslo řádky, na které skončí zobrazování
         kurzoru.

  5-6    Spoždění kontrolního signálu kurzoru
          = 00b  Žádná pauza
          = 01b  Pauza odpovídající vykreslení jednoho znaku
          = 10b  Pauza odpovídající vykreslení dvou znaků
          = 11b  Pauza odpovídající vykreslení tří znaků

    7    Nepoužito

Start Address High Register                       Port: 3?5h
Počáteční adresa - vyšší byte                    Index:  0ch
============================================================
Popis: Tento registr obsahuje osm nejvýznamnějších bitů
       adresy (z pohledu CRTC), na které je první
       zobrazovaným znak (v textových režimech) nebo první
       zobrazovaný pixel (v grafických režimech). Osm méně
       významných bitů je uloženo v registru s indexem 0dh.

       Tento registr umožňuje snadnou implementaci
       vertikálního scrolování. Změna tohoto registru se
       projevuje na začátku zpětného chodu paprsku. Registr
       by tedy měl být nastaven během aktivního
       zobrazovacího intervalu.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Významnějších osm bitů adresy počátku zobrazování.

Start Adddress Low Register                       Port: 3?5h
Počáteční adresa - nižší byte                    Index:  0dh
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
       adresy (z pohledu CRTC), na které je první
       zobrazovaný znak (v textových režimech) nebo první
       zobrazovaný pixel (v grafických režimech). Osm
       významnějších bitů je uloženo v registru s indexem
       0ch.

       Tento registr umožňuje snadnou implementaci
       vertikálního scrolování. Změna tohoto registru se
       projevuje na začátku zpětného chodu paprsku. Registr
       by tedy měl být nastaven během aktivního
       zobrazovacího intervalu.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů adresy počátku zobrazování.

Cursor Location High Register                     Port: 3?5h
Pozice kurzoru - vyšší byte                      Index:  0eh
============================================================
Popis: Tento registr obsahuje osm významnějších bitů
       16bitové adresy CRTC, na které je umístěn kurzor.
       Zbývajících osm méně významných bitů je uloženo v
       následujcím registru (index 0fh).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm významnějších bitů adresy pozice kurzoru.

Cursor Location Low Register                      Port: 3?5h
Pozice kurzoru - nižší byte                      Index:  0fh
============================================================
Popis: Tento registr uchovává osm méně významných bitů
       adresy CRTC, na které je umístěn kurzor. Osm
       významnějších bitů je uloženo v registru předchozím
       (index 0eh).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů adresy pozice kurzoru.

Vertical Retrace Start Register                   Port: 3?5h
Začátek vertikálního zpětného chodu              Index:  10h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
       hodnoty, která při shodě s interním vertikálním
       čítačem vyvolá zpětný chod paprsku. Čítač nabývá
       hodnot od 0 do celkového počtu vertikálních řádek.
       Devatý a desátý bit tohoto registru jsou uloženy v
       registru přetečení (index 07h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    8 méně významných bitů hodnoty čítače vyvolávající
         zpětný chod paprsku.

Light Pen High Register                           Port: 3?5h
Pozice světelného pera - vyšší byte
Pouze EGA, pouze čtení                           Index:  10h
============================================================
Popis: Pokud je světelné pero přiloženo k obrazovce, vrací
       tento registr osm více významných bitů adresy, která
       odpovídá pozici světelného pera.

       Tuto funkci podporuje pouze EGA. VGA světelné pero
       nepodporuje.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm významnějších bitů adresy světelného pera.

Vertical Retrace End Register                     Port: 3?5h
Konec vertikálního zpětného chodu                Index:  11h
============================================================
Popis: Tento registr obsahuje čtyři méně významné bity,
       které při shodě s čítačem ukončí zpětný chod paprsku.
       Zbývající významnější bity jsou shodné s bity
       registru začátek zpětného chodu.

       Tento registr taktéž obsahuje bity pro mazání a
       povolení vertikálního přerušení (IRQ 2). Pokud
       používáte vertikální přerušení, měla by jeho obslužná
       rutina před svým skončením smazat přerušení a znovu
       ho povolit. To lze provést zapsáním nul do bitů 4 a 5
       a poté zapsáním jedničky do bitu 4. Přerušení IRQ 2
       může být vyvoláno i jiným zařízením než
       videoadaptérem (u AT jsou na něm kaskádově připojena
       přerušení 8 až 15). Pokud bylo přerušení vyvoláno
       adaptérem je nastaven bit 7 vstupního stavového
       registru 0 (port 3c2h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-3    4 méně významné bity čítače pro ukončení zpětného
         chodu paprsku.

    4    Smazání vertikálního přerušení
               Nastavení tohoto bitu na 0 smaže předešlou
         aktivaci vertikálního přerušení.

    5    Povolení vertikálního přerušení
               Zapsání nuly do tohoto bitu povolý generování
         vertikálního přerušení při každém vyvolání
         vertikálního zpětného chodu paprsku.

    6    Nastav 5 obnovovacích cyklů - pouze VGA
               Tento registr určuje počet paměťových
         obnovovacích cyklů během zobrazování jedné řádky.
         Normálně je tento bit nastaven na 0 a jsou
         generovány tři signály pro osvěžení paměti. Pokud
         je bit nastaven na jedna, je generováno pět
         osvěžení RAM, což dovoluje připojit monitor s
         řádkovou frekvencí 15.75 kHz.

    7    Ochrana R0-R7 - pouze VGA
               Registry CRTC s indexy 0 - 7 mohou být
         chráněny proti přepsání nastavením tohoto bitu na
         jedna. Registry 0-7 obsahují důležité informace o
         časování adaptéru a tak by měly být títmto způsobem
         chráněny před nežádoucím přepsáním.

Light Pen Low Register                            Port: 3?5h
Pozice světelného pera - nižší byte
Pouze EGA, pouze čtení                           Index:  11h
============================================================
Popis: Pokud je světelné pero přiloženo k obrazovce, vrací
       tento registr osm méně významných bitů adresy, která
       odpovídá pozici světelného pera.

       Tuto funkci podporuje pouze EGA. VGA světelné pero
       nepodporuje.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů adresy světelného pera.

Vertical Display Enable Register                  Port: 3?5h
Vertikální počet zobrazovaných řádek             Index:  12h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
       celkového počtu zobrazovaných řádek. Řádky jsou
       číslovány od 0, tudíž registr obsahuje o jedničku
       menší číslo, než je počet zobrazovaných řádek. Bity 8
       a 9 jsou obsaženy v registru přetečení (index 07h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů počtu zobrazovaných řádek
         mínus jedna.

Offset Register                                   Port: 3?5h
Offset                                           Index:  13h
============================================================
Popis: Tento registr obsahuje velikost videopaměti
       spotřebované na jednu zobrazovací řádku. Tato
       velikost nemusí odpovídat skutečné velikosti
       zobrazované řádky. Pokud je větší, může toho být
       výhodně užito při horizontálním scrolování obrazovky.
       Délka řádky je udávána ve dvojicích, čtveřicích nebo
       osmicích byte (platné nastavení lze zjistit v
       registru sequenecru ovládajícím režim časovače (index
       01h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Logická délka jedné řádky (dělená 2, 4 nebo 8).

Underline Location Register                       Port: 3?5h
Pozice podtržení                                 Index:  14h
============================================================
Popis: Tento registr nastavuje pozici podtržení ve znakovém
       boxu. Pozice se počítá od nuly od shora znakového
       boxu.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Pozice podtržení ve znakovém boxu.

    5    Adresa po 4 taktech - pouze VGA
               Nastavení tohoto bitu na jedna vydělí
         frekvenci, která zvětšuje čítač adresy paměti,
         čtyřikrát. Adresa bude měněna až po každém čtvrtém
         taktu.

    6    Paměťový mód dvojslov - pouze VGA
               Nastavením tohoto bitu na jedna si vynutíte
         používaní dvojslovového adresování. Před použitím
         této možnosti musíte nastavit bit 6 registru
         ovládání režimu (index 17h) na nula.

    7    Nepoužito

Start Vertical Blanking Register                  Port: 3?5h
Začátek vertikálního zatemnění                   Index:  15h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů, po
       jejichž dosažení čítečem bude generován začátek
       vertikálního zatemnění, tj. začne se vykreslovat
       spodní část rámečku. 9. bit tohoto registru je uložen
       v registru přetečení (index 07h) a 10. bit (pro VGA)
       v registru počet řádek na znak (index 09h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    8 méně významných bitů hodnoty čítače, při které
         začne vertikální zatemnění.

End Vertical Blanking                             Port: 3?5h
Konec vertikálního zatemnění                     Index:  16h
============================================================
Popis: Tento registr obsahuje 5 (VGA 8) méně významných bitů
       hodnoty, při jejíž shodě s interním vertikálním
       čítačem přestane být generováno vertikální zatemnění,
       tj. skončí vykreslovánbí horní části rámečku.
       Významnější bity jsou shodné s bity v registru pro
       začátek vertikálního zatemnění.

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Pouze EGA
               5 méně významných bitů hodnoty čítače, při
         které se ukončí vertikální zatemnění.

  0-7    Pouze VGA
               8 méně významných bitů hodnoty čítače, při
         které se ukončí vertikální zatemnění.

Mode Control Register                             Port: 3?5h
Ovládání režimu                                  Index:  17h
============================================================
Popis: Tento registr umožňuje ovládat způsob mapování
       videopaměti. Je obdobou registru paměťového režimu
       sequenceru a režimu grafického kontroleru.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Podpora kompatibilních režimů
               Nastavení tohoto bitu na 0 vytvoří dvě
         oblasti paměti, jednu pro sudé a druhou pro liché
         řádky. Oblasti začínají vždy na offsetu, který je
         náseobkem 8K. Dosaženo je toho záměnou bitu 13
         adresy paměti za poslední bit čísla řádku. Toto
         nastavení umožňuje emulaci zobrazovacích režimů
         kompatibilních s CGA.

     1   Výběr adresy podle bitu 1 čítače řádek
               Funkce tohoto bitu je podobná funkci
         předchozího bitu. Pokud je bit nastaven na 0,
         adresní bit 14 je nahrozován bitem 1 čísla řádku.

     2   Zdvojení vertikálního čítače řádek
               Pokud je tento bit nastaven na nula, je
         vertikální čítač zvětšen o jedna po každém
         horizontálím zpětném chodu paprsku. Pokud je bit
         nastaven na 1, je čítač zvětšen po každém druhém
         zpětném horizontálním chodu. Umožňuje to
         zdvojnásobit vertikální rozlišení.

     3   Adresa po 2 taktech
               Nastavení tohoto bitu na nula si vynutí
         zvětšení adresního čítače po každém impulsu
         časovače. Pokud je bit nastaven na jedna, je adresa
         zvětšena po každém druhém taktu.

     4   Ovládání výstupů - pouze EGA
               Normálně je tento bit nastaven na nula. Jeho
         nasatvení na jedna uvede výstupy adaptéru do stavu
         s vysokou impendancí.

     5   Zarovnávání adresy
               Tento bit je používán ve spojení s bitem 6
         tohoto registru. V bajtovém módu nemá význam. Ve
         word módu nastavení tohoto bitu na jedna umístí
         adresní bit 15 na místo adresního bitu 0. Pokud je
         tento bit 0, nastaví se na adresní bit 0 adresní
         bit 13. Bit 13 je používán pro spojování bitových
         map na kartách EGA s 64K paměti.

     6   Výběr módu - byte/word
               Byte mód je zvolen nastavením tohoto bitu na
         1 a word mód nastavením tohoto bitu na 0. Word mód
         umožňuje střídání dvou bitových rovin (například
         znaky a atributy v textových režimech). V tomto
         módu jsou adresní bity posunuty doleva a bit nula
         je nahrazen bitem 13 nebo 15. VGA podoruje také
         double-word mód, kdy je adresa posunuta o dva bity
         doleva a bity 0 a 1 jsou nahrazeny bity 12 a 13.

     7   Hardwarový reset
               Nastavení tohoto bitu na jedna povoluje
         generování signálů pro vertikální a horizontální
         zpětné chody paprsku (normální nastavení).
         Nastavení na nula přeruší generování těchto
         signálů.

Line Compare Register                             Port: 3?5h
Porovnání řádky                                  Index:  18h
============================================================
Popis: Tento registr obsahuje osm méně významných bitů
       hodnoty řádkového čítače. Po dosažení této hodnoty
       čítačem dojde k vynulování čítače. Použití této
       techniky může část obrazovky eliminovat ze
       scrolování. Tato technika může být použita také
       k implementování dvou oken. První část obrazovky
       zobrazuje data od adresy určené registrem počáteční
       adresa (index 0ch a 0dh). Druhé okno zobrazuje vždy
       data od adresy 0. V 200 řádkových módech by zde měla
       být uložena pouze sudá hodnota. 9. bit tohoto
       registru je uložen v registru přetečení (index 07h)
       a 10. bit v registru počet řádek na znak (index 09h).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Osm méně významných bitů hodnoty čítače, při které
         se tento řádkový čítač vynuluje.


              Registry grafického kontroleru

     Grafický kontroler má na starosti komunikaci
videopaměti s procesorem. Jeho registry tedy ovládají způsob
práce CPU s videopamětí. Některé z registrů grafického
kontroleru umožňují emulaci CGA režimů.
     Funkce registrů nám může být zřejmější pokud si
osvěžíme operace prováděné kontrolerem při čtení a zápisu do
paměti. Ke každé bitové rovině přísluší jeden 8bitový
latch-registr. V grafických módech nepřistupuje do paměti
přímo procesor, ale aritmeticko-logická jednotka (ALU)
adaptéru. Při čtení z videopaměti, jsou data načtena do tzv.
latch-registrů. Obvykle je z celé osmice bodů měněn pouze
jeden. Latch-registry tedy slouží k uchování hodnoty
nemodifikovaných bitů. Při zápisu do paměti, jsou příslušně
(v závislosti na zapisovacím režimu) upraveny naposled čtené
latch-registry a jejich obsah je uložen do videopaměti.
Latch-registry by měly být načteny před modifikací paměti
pomocí instrukce MOV (nebo nějaké její obdoby).
     Grafický kontroler umožňuje volit z několika způsobů
kombinování dat v latch-registrech s daty z procesoru. Data
mohou být s latch-registry kombinována pomocí logických
operací AND, OR, XOR, mohou být rotována. Bitové pozice
mohou být maskovány atd.

Graphics 1 and 2 Address Register                 Port: 3ceh
Adresový registr grafického kontroleru
============================================================
Popis: Obsah tohoto registru určuje, který registr bude
       mapován na port 3cfh. Index potřebného registru se
       zapisuje na port 3ceh.
       /-----------------------------------------------------\
       |Index | Registr                                      |
       |------+----------------------------------------------|
       |  0   | Set/Reset                                    |
       |  1   | Povolení Set/Reset (Enable Set/Reset)        |
       |  2   | Porovnání barev (Color Compare)              |
       |  3   | Kombinace dat (Data Rotate)                  |
       |  4   | Mapa pro čtení (Read Map Select)             |
       |  5   | Režim grafického kontroleru (Mode Register)  |
       |  6   | Různé (Miscellaneous)                        |
       |  7   | Eliminace barev (Color Don't Care)           |
       |  8   | Bit mask                                     |
       \-----------------------------------------------------/

Set/Reset Register                                Port: 3cfh
Set/Reset registr                                Index:    0
============================================================
Popis: Tento registr určuje bitové roviny, do kterých bude
       vždy při modifikování videopaměti zapsána nula nebo
       jednička. Nastavení bitové roviny do SET režimu
       způsobí, že při každém zápisu do videopaměti bude do
       maskovaných bitů (registrem Bit mask) zapsána
       jednička. RESET režim způsobí zapsání nul do
       maskovaných bitů.

       Tento registr je platný pouze v zapisovacích režimech
       0 a 3. Pokud ho chcete používat v zapisovacím režimu
       0, musíte nejprve příslušným bitem registru Povolení
       Set/Reset povolit permanentní zapisování do bitové
       roviny.

  Bity   Popis
  ----   ---------------------------------------------------
    0     = 0  RESET mód pro bitovou rovinu 0
          = 1  SET mód pro bitovou rovinu 0

    1     = 0  RESET mód pro bitovou rovinu 1
          = 1  SET mód pro bitovou rovinu 1

    2     = 0  RESET mód pro bitovou rovinu 2
          = 1  SET mód pro bitovou rovinu 2

    3     = 0  RESET mód pro bitovou rovinu 3
          = 1  SET mód pro bitovou rovinu 3

Enable Set/Reset Register                         Port: 3cfh
Povolení Set/Reset                               Index:    1
============================================================
Popis: Tento registr slouží k aktivování služby Set/Reset
       pro jednotlivé bitové roviny. Nastavení bitu tohoto
       registru na jedna aktivuje používání nastavení
       Set/Reset registru pro určitou bitovouu rovinu.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Povolení Set/Reset registru pro bitovou rovinu 0

    1    Povolení Set/Reset registru pro bitovou rovinu 1

    2    Povolení Set/Reset registru pro bitovou rovinu 2

    3    Povolení Set/Reset registru pro bitovou rovinu 3

Color Compare Register                            Port: 3cfh
Porovnání barev                                  Index:    2
============================================================
Popis: Tento registr slouží k uchování barvy, která je
       porovnávána s obsahem videopaměti. Po přečtení paměti
       budou bity, které odpovídají pixelům s barvou shodnou
       s barvou v tomto registru, nastaveny ma jedna. Bity
       neshodujících se pixelů budou nastaveny na nula.
       Tento registr pracuje pouze ve čtecím módu 1.
       Jakákoliv z bitových rovin může být z porovnávání
       vyřazena pomocí registru pro eliminaci barev (index
       7).

  Bity   Popis
  ----   ---------------------------------------------------
  0-3    Porovnávaná barva

  4-7    Nepoužito

Data Rotate Register                              Port: 3cfh
Kombinace dat                                    Index:    3
============================================================
Popis: Tento registr ovládá dvě funkce. Tou první je možnost
       data zapisovaná procesorem do videopaměti zrotovat o
       n (0-7) bodů. Druhou funkcí je možnost změny způsobu
       kombinování dat z procesoru s daty v
       latch-registrech.

       Pokud je nastaveno použití rotace a logické operace
       najednou, nejprve se provede rotace. Tento registr
       nepracuje v zapisovacím módu 1 (pracuje pouze s daty
       zapisovanými procesorem).

       Rotace ovlivní zapisovaná data pouze v zapisovacím
       módu 0.

  Bity   Popis
  ----   ---------------------------------------------------
  0-2    Počet rotací vpravo

  3-4    Způsob zápisu
          00b  Zapiš data beze změny
          01b  AND dat s latch-registry
          10b  OR dat s latch-registry
          11b  XOR dat s latch-registry

  5-7    Nepoužito

Read Map Select Register                          Port: 3cfh
Mapa pro čtení                                   Index:    4
============================================================
Popis: Tento registr vybírá bitovou rovinu, jejíž obsah bude
       vrácen při čtení z videopaměti v čtecím módu 0.

  Bity   Popis
  ----   ---------------------------------------------------
  0-1    Číslo bitové roviny určené ke čtení

  2-7    Nepoužito

Mode Register                                     Port: 3cfh
Režim grafického kontroleru                      Index:    5
============================================================
Popis: Tento registr určuje, který ze tří (čtyř - VGA)
       zapisovacích a dvou čtecích režimů bude použit. Spolu
       s registrem s indexem 6 (Miscellaneous) obsahují
       některá nastavení týkající se organizace paměti.

  Bity   Popis
  ----   ---------------------------------------------------
  0-1    Zapisovací mód
          00b = Zapisovací mód 0. Map mask registr
                (sequencer, index 2) určuje bitové mapy pro
                zápis. Bit mask registr (index 8) slouží k
                povolení nebo zakázání modifikace pixelů v
                rámci byte. Data jsou zapisována do každé
                odmaskované bitové roviny (pokud ovšem není
                pro příslušnou rovinu aktivován Set/Reset
                mód). Před ukládáním do paměti se musí
                načíst její obsah do latch-registrů.
          01b = Zapisovací mód 1. Do paměti je zapsán pouze
                obsah latch-registrů. Používá se při
                přesouvání úseků videopaměti.
          10b = Zapisovací mód 2. Bit mask registr určuje
                modifikované bity. Do videopaměti se
                zapisuje číslo požadované barvy. Před
                zápisem je nutno načíst latch-registry.
          11b = Pouze VGA: Na požadovanou adresu je uložen
                výsledek logické operace AND mezi Bit mask
                registrem (index 8) a hodnotou obsaženou
                v Set/Reset registru. Pro tento režim nemusí
                být aktivní Enable Set/Reset registr (index
                1).

    2    Test grafického kontroleru - pouze EGA
               Nastavení tohoto bitu na jedna uvede výstupy
         kontroleru do stavu s vysokou impendancí.

    3    Čtecí mód
          0 = Do CPU je načten jeden byte zvolené bitové
              mapy
          1 = Do CPU je načten výsledek porovnání barev
              pixelů na požadované adrese s registrem pro
              porovnání barev (index 2).

    4    Sudé/liché
               Pokud je tento bit nastaven na jedna jsou
         liché adresy uloženy v lichých bitových rovinách a
         sudé adresy v sudých bitových rovinách. Toto
         nasatvení se týká pouze grafického kontroleru.
         Využívá se zejména v textových režimech a v
         režimech zachovávajících komaptibilitu s CGA. Pokud
         je tento bit nastaven na jedna, je obvykle i
         sequencer nastaven do patřičného režimu (bit 2
         paměťového režimu, index 4).

    5    Posuvný registr
               Když je tento bit nastaven na jedna, jsou
         sudé bity z obrazové paměti zapisovány do sudých
         bitových map a stejně tak jsou liché bity
         zapisovány do lichých bitových map. Tak jsou dva za
         sebou v paměti zapsané bity rozděleny do dvou
         posuvných registrů. To umožňuje emulaci barev CGA
         režimů.

    6    256barevný režim - pouze VGA
               Tento bit má podobnou funkci jako bit 5. Data
         jsou do posuvných registrů přesouvána tak, že jeden
         byte je převeden na matici 2 x 4 bity. To je
         potřebné pro atributový kontroler, jehož všechny
         funkce nefungují v 256barevném režimu.

Miscellaneous Register                            Port: 3cfh
Různé                                            Index:    6
============================================================
Popis: Tento registr ovládá některé funkce související s
       organizací paměti grafického kontroleru.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Grafický režim
               Tento bit je nastaven na jedna v grafických
         režimech a na nula v textových.

    1    Zřetězení lichých map do sudých
               Tento bit je používán ve spojení s bitem 4
         registru režimu grafického kontroleru (index 4).
         Liché adresy jsou zapsány do lichých bitových map a
         sudé adresy jsou zapsány do sudých bitových map.
         Při nastavení tohoto bitu na jedna je nejméně
         významný bit adresy zaměněn s bitem 13 nebo 15
         (podle počtu instalované paměti). To způsobí, že v
         paměti jsou nejprve bitové roviny 0 a 2 a až za
         nimi následují roviny 1 a 3.

  2-3    Mapování paměti
               Tyto bity určují umístění a velikost
         adresního procesoru, do kterého se bude mapovat
         videopaměť.
         /------------------------------\
         | Hodnota | Počátek | Velikost |
         |---------+---------+----------|
         |   00b   |  a0000h |    128K  |
         |   01b   |  a0000h |     64K  |
         |   10b   |  b0000h |     32K  |
         |   11b   |  b8000h |     32K  |
         \------------------------------/

  4-7    Nepoužito

Color Don't Care Register                         Port: 3cfh
Eliminace barev                                  Index:    7
============================================================
Popis: Tento registr umožňuje vynechat některé bitové roviny
       z porovnávání barev, pokud je aktivní čtecí mód 0.
       Pokud je tento registr nastaven na 0fh, jsou na shodu
       barvy porovnávány všechny bitové roviny. Pokud
       registr obsahuje nulu, porovnávání vyhovuje jakákoliv
       barva.

  Bity   Popis
  ----   ---------------------------------------------------
    0     = 0  Kontroluje se zda obsah bitové roviny 0
               odpovídá bitu 0 registru porovnání barev
               (index 2)

    1     = 0  Kontroluje se zda obsah bitové roviny 1
               odpovídá bitu 1 registru porovnání barev
               (index 2)

    2     = 0  Kontroluje se zda obsah bitové roviny 2
               odpovídá bitu 2 registru porovnání barev
               (index 2)

    3     = 0  Kontroluje se zda obsah bitové roviny 3
               odpovídá bitu 3 registru porovnání barev
               (index 2)

  4-7    Nepoužito

Bit Mask Register                                 Port: 3cfh
Bit mask registr                                 Index:    8
============================================================
Popis: Tento registr omezuje přístup k jednotlivým bitům
       jedné adresy videopaměti. Nastavení odpovídajících
       bitů na jedna povolí modifikaci příslušných bitů
       videopaměti. Pro zápis jednoho bodu je tedy pouze
       jeden bit tohoto registru nastaven na jedna. Před
       zápisem do paměti je potřeba načíst obsah latch
       registrů.

       Zapisovací mód 1 tímto registrem není ovlivněn
       (narozdíl od Map mask registru).

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Nastavení bitu na jedna povolí modifikace
         příslušného bitu na adrese videopaměti.


             Registry atributového kontroleru

     Registry atributového kontroleru ovládají přiřazení
barev jednotlivým číslům barev, rámečku a pozadí. Obvykle do
atributového kontroleru přicházejí 4 bity. Ty jsou použity
jako odkaz do palety, ze které je vybrána příslušná barva k
zobrazení. Na VGA je hodnota tohoto paletového registru po
úpravách předána DAC.
     Registry atributového kontroleru jsou přístupné přes
port 3c0h. Tento port má jednu zvláštnost. Slouží zároveň
jako adresový i datový port registrů atributového
kontroleru. Po každém zápisu se jeho funkce mění. Nemůžeme
tedy mít jistotu, zda je na portu právě datový či adresový
registr (změnu mohla provést například nějaká rutina běžící
pod přerušením). Na port 3c0h se namapuje adresový registr
atributového kontroleru po každém čtení vstupního stavového
registru 1 (port 3?ah). Čtení tohoto registru má ještě jednu
výhodu. Jeho bit 0 indukuje probíhání zpětného chodu paprsku
a atributové registry by měly být měněny jen během této
doby. Pokud tedy chceme měnit některý z registrů
atributového kontroleru, měli bychom  nejprve počkat na
zpětný chod paprsku a poté měnit registr. Například takto:

       mov     DX, 3dah       ;číslo portu vstupního stavového registru 1 (3bah pro MDA)
 WaitRetrace:
       in      AL, DX         ;čtení obsahu registru
       and     AL, 1          ;odmaskování bitu 0
       jnz     WaitRetrace    ;čekání na zpětný chod elektronového paprsku
       mov     DX, 3c0h       ;číslo portu pro registry atributového kontroleru
       mov     AL, Index      ;index požadovaného registru pro změnu
       out     DX, AL         ;nastavení adresového registru
       mov     AL, Hodnota    ;nová hodnota do registru
       out     DX, AL         ;zápis do datového registru

Na kartách VGA lze nastavení atributových registrů číst z
portu 3c1h.

Attribute Address Register                        Port: 3c0h
Adresový registr atributového kontroleru
============================================================
Popis: Do tohoto registru se zapisuje index registru, který
       bude přístupný pro zápis na portu 3c0h a pro čtení na
       portu 3c1h (druhá možnost je pouze na VGA). Nastavení
       portu 3c0h do adresového módu se provede přečtením
       vstupního stavového registru 1 (port 3bah nebo 3dah).

       Na kartách EGA musí být bit 5 před změnou paletových
       regitrů nastaven na nula a po změně nastaven zpět na
       jedna.
       /----------------------------------------------------\
       |Index| Registr                                      |
       |-----+----------------------------------------------|
       |0-0fh| Registry palety                              |
       | 10h | Režim atributového kontroleru (Mode Control) |
       | 11h | Barva rámečku (Overscan Color)               |
       | 12h | Povolení bitových rovin (Color Plane Enable) |
       | 13h | Horizontální posun (Horizontal Pel Panning)  |
       | 14h | Výběr barvy (Color Select)                   |
       \----------------------------------------------------/

  Bity   Popis
  ----   ---------------------------------------------------
  0-4    Index registru atributového kontroleru

    5    Povolení přístupu k paletě - pouze EGA
               Nastavení tohoto bitu na jedna povolí přístup
         karty EGA k paletovým registrům.

  6-7    Nepoužito

Palette Registers                                 Port: 3c0h
Registry palety                                  Index: 0-0fh
============================================================
Popis: Tyto registry obsahují informace o zobrazované barvě
       příslušející číslu barvy. Každá barva (číslo 0-15) má
       svůj paletový registr. Ten obsahuje informace, které
       určují barvu skutečně zobrazované barvy. Na kartě EGA
       slouží k určení skutečně zobrazované barvy šest bitů.
       Po dvojicích náleží jednotlivým základním barvám.
       Mohou tak vytvářet až 64 různých odstínů (najednou
       zobrazitelných je jich však pořád jen 16). Na
       kartách VGA je hodnota paletového registru použita
       jako odkaz do 18bitového DAC registru, který obsahuje
       jeden z 262144 možných odstínů použitých pro
       zobrazení dané barvy. Pomocí registru pro výběr barvy
       (index 14h) mohou být informace jdoucí z paletových
       registrů do DAC upraveny.

EGA:
  Bity   Popis
  ----   ---------------------------------------------------
    0    Modrá

    1    Zelená

    2    Červená

    3    Intenzivní modrá

    4    Intenzivní zelená

    5    Intenzivní červená

  6-7    Nepoužito

VGA:
  Bity   Popis
  ----   ---------------------------------------------------
  0-5    Odkaz do jednoho z DAC registrů

  6-7    Nepoužito

Mode Control Register                             Port: 3c0h
Režim atributového kontroleru                    Index:  10h
============================================================
Popis: Tento registr uchovává informace o pracovním režimu
       atributového kontroleru.

  Bity   Popis
  ----   ---------------------------------------------------
    0    Textový/grafický režim
          = 0  textový režim
          = 1  grafický režim

    1    Monochromatický/barevný displej
          = 0  určuje použití barevného adaptéru
          = 1  určuje použití monochromatického adaptéru

    2    Podpora čárové grafiky
               Tento bit je používán v zobrazovacím módu 7,
         pokud jsou používány 9 bodů široké znaky. Pokud je
         tento bit nastaven na jedna, je u znaků s ASCII
         kódem c0h-dfh kopírován osmý bit do devátého, tj.
         čárová grafika zůstane nepřerušená. Pokud je
         nastaven na nula, je devátý pod znaku vykreslen
         barvou pozadí.

    3    Volba intenzita/blikání
          = 0  7. bit atributu bude považován za intenzitu
               barvy pozadí
          = 1  7. bit atributu bude určovat blikání znaku

    4    Nepoužito

    5    Vypnutí horizontálního posuvu - pouze VGA
          = 0  Horizontální posun je aplikován na celý obraz
          = 1  Horizontální posun je aplikován pouze na
               horní část obrazu. Část obrazu následující za
               řádkou obsaženou v registru pro porovnání
               řádky (CRTC index 18h) nebude posouvána.

    6    Šířka posuvu - pouze VGA
               Nastavení tohoto bitu na jedna, způsobí že
         každému bodu přísluší 8 bitů (režim 13h, 256
         barev). V ostatních režimech by měl být tento bit
         nastaven na nula.

    7    Přemapování bitů 4 a 5 - pouze VGA
          = 0  Obsahy peltových registrů jsou do DAC
               posílány přímo, bez modifikací.
          = 1  Bity 4 a 5 paletového regsitru jsou nahrazeny
               bity 0 a 1 registru výběr barvy (index 14h) a
               teprve poté poslány do DAC.

Overscan Color Register                           Port: 3c0h
Barva rámečku                                    Index:  11h
============================================================
Popis: Tento registr určuje barvu rámečku pomocí intenzit
       složek základních barev (EGA) nebo pomocí odkazu do
       DAC registru (VGA).

       Barva rámečku bývá obvykle černá (registr obsahuje
       0). V některých módech s vyšším rozlišením nelze
       použít jiné barvy rámečku než černé.

EGA:
  Bity   Popis
  ----   ---------------------------------------------------
    0    Modrá

    1    Zelená

    2    Červená

    3    Intenzivní modrá

    4    Intenzivní zelená

    5    Intenzivní červená

  6-7    Nepoužito

VGA:
  Bity   Popis
  ----   ---------------------------------------------------
  0-5    Odkaz do jednoho z DAC registrů

  6-7    Nepoužito

Color Plane Enable Register                       Port: 3c0h
Povolení bitových rovin                          Index:  12h
============================================================
Popis: Tento registr určuje bitové roviny, ze kterých bude
       brána informace o čísle barvy bodu pro odkaz do
       registrů palety. Obvykle tento registr obsahuje
       hodnotu 0fh, tj. barva je získávána ze všech čtyř
       bitových rovin.

  Bity   Popis
  ----   ---------------------------------------------------
    0     = 1  Barva je brána i z bitové roviny 0

    1     = 1  Barva je brána i z bitové roviny 1

    2     = 1  Barva je brána i z bitové roviny 2

    3     = 1  Barva je brána i z bitové roviny 3

  4-5    Volba diagnostických bitů
               Tyto bity určují, které bity atributového
         registru se objeví v bitech 4 a 5 vstupního
         stavového registru 1.
                  /-----------------\
                  | Hodnota | Bity  |
                  |---------+-------|
                  |   00b   | 2 a 0 |
                  |   01b   | 5 a 4 |
                  |   10b   | 3 a 1 |
                  |   11b   | 7 a 6 |
                  \-----------------/

  6-7    Nepoužito

Horizontal PEL Panning Register                   Port: 3c0h
Horizontální posun                               Index:  13h
============================================================
Popis: Tento registr určuje o kolik bodů bude obraz posunut
       doleva. Při použití virtuální obrazovky (viditelná
       část obrazovky je pouze částí větší virtuální
       obrazovky) jej lze s výhodou uplatnit pro dosažení
       horizontálního scrolování.

  Bity   Popis
  ----   ---------------------------------------------------
  0-3    Počet bodů, o které se obraz posune doleva.
         /-----------------------------------------\
         |        |      Posunutí pro různé        |
         |Obsah   |      zobrazovací režimy        |
         |registru|--------------------------------|
         |        | 7, 0-3 VGA | 13h VGA | Ostatní |
         |--------+------------+---------+---------|
         |  000b  |     1      |    0    |    0    |
         |  001b  |     2      |  nelze  |    1    |
         |  010b  |     3      |    1    |    2    |
         |  011b  |     4      |  nelze  |    3    |
         |  100b  |     5      |    2    |    4    |
         |  101b  |     6      |  nelze  |    5    |
         |  110b  |     7      |    3    |    6    |
         |  111b  |     8      |  nelze  |    7    |
         | 1000b  |     0      |  nelze  |  nelze  |
         \-----------------------------------------/

Color Select Register - pouze VGA                 Port: 3c0h
Výběr barvy                                      Index:  14h
============================================================
Popis: Tento registr umožňuje rozšířit barvu v paletovém
       registru na 8 bitů. Obsahuje dva bity, které se
       přidají k 6bitové hodnotě paletového registru.
       Dosáhneme tak možnosti výběru ze všech 256 DAC
       registrů. Obsahuje také dva bity, které mohou
       nahradit bity 4 a 5 paletového registru.

       Tento registr neovlivňuje zobrazovací mód 13h.

  Bity   Popis
  ----   ---------------------------------------------------
  0-1    Tyto bity nahrazují bity 4 a 5 paletových registrů,
         pokud je bit 7 režimu atributového kontroleru
         nastaven na jedna.

  2-3    Tyto bity se přidávají k hodnotě jdoucí z
         paletového registru do DAC.

  4-7    Nepoužito


   Registry číslicově-anologového převodníku - pouze VGA

     DAC převádí binární barevnou informaci na analogový
signál pro monitor. Používá k tomu DAC registry, které jsou
funkčně obdobné s paletovými registry. Každý DAC registr
obsahuje 18bitovou hodnotu, které se skládá z šesti bitů pro
každou základní barvu (červená, modrá, zelená).
Osmnáctibitová hodnota nám dává možnost výběru jedné z
262144 možných barev v každém z 256 DAC registrů. Standardně
prvních 16 DAC registrů obsahuje barvy shodné s barvami na
EGA. Dalších 16 DAC registrů obsahuje různé stupně šedi.
Zbylých 224 registrů obsahuje různé barvy. Pouze v režimu
13h může být zobrazeno všech 256 barev najednou. Běžně může
být najednou zobrazeno 16 barev. Pomocí atributového
kontroleru však můžeme změnit šestnáctici používaných DAC
registrů a dosáhnout tak zajímavých efektů okamžitou změnou
všech barev.

DAC State Register                                Port: 3c7h
Stavový registr DAC                   pouze VGA, pouze čtení
============================================================
Popis: Tento registr umožňuje zjistit aktuální stav datového
       registru DAC, který může být ve dvou režimech
       - zapisovacím nebo čtecím. Během čtecího režimu může
       být obsah tohoto registru pouze čten a během
       zapisovacího režimu naopak nesmí být čten obsah
       tohoto registru.

  Bity   Popis
  ----   ---------------------------------------------------
  0-1     = 00b  Zapisovací režim
          = 11b  Čtecí režim

  2-7    Rezervováno

PEL Address Read Mode                             Port: 3c7h
Adresový registr pro čtecí režim      pouze VGA, pouze zápis
============================================================
Popis: Tento registr určuje číslo DAC registru, který bude
       čten. Po nastavení tohoto registru můžete z datového
       registru přečíst po sobě tři 6bitové hodnoty
       (intenzitu červené složky, intenzitu zelené složky a
       intenzitu modré složky). Po přečtení těchto tří
       hodnot se obsah adresového registru automatický zvýší
       a bude ukazovat na následující DAC registr.

       Zápis na datový port během čtení může poškodit
       informace uložené v DAC paletě.

       Dokumentace karty VGA uvádí, že jednotlivé přístupy k
       datovému registru by měly následovat nejdříve po 240
       nanosekundách.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Číslo DAC registru pro čtení

PEL Address Write Mode                            Port: 3c8h
Adresový registr pro zápis            pouze VGA, pouze zápis
============================================================
Popis: Tento registr určuje číslo DAC registru, do kterého
       bude zapisováno. Po nastavení tohoto registru na
       odpovídající hodnotu, můžete do datového registru
       zapsat po sobě tři 6bitové hodnoty odpovídající
       postupně intenzitě červené složky, intenzitě zelené
       složky a konečně intenzitě modré složky barvy. Po
       zápisu tří hodnot na datový registr se automaticky
       zvýší obsah adresového registru pro zápis.

       Čtení z datového portu během zápisu může poškodit
       informace uložené v DAC tabulce.

       Dokumentace karty VGA uvádí, že jednotlivé přístupy k
       datovému registru by měly následovat nejdříve po 240
       nanosekundách.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Číslo DAC registru pro zápis

PEL Data Register                                 Port: 3c9h
Datový registr                                     pouze VGA
============================================================
Popis: Tento registr umožňuje zapisovat a číst nastavení
       jednotlivých DAC registrů. Při každém přístupu k DAC
       registru by se měly použít tři čtení/zápisy pro
       všechny tři základní složky - posobě červená, zelená
       a modrá. Každé složce přísluší 6 bitů.

       Dokumentace karty VGA uvádí, že jednotlivé přístupy k
       datovému registru by měly následovat nejdříve po 240
       nanosekundách.

  Bity   Popis
  ----   ---------------------------------------------------
  0-5    Hodnota určená ke čtení/zápisu

  6-7    Rezervováno

PEL Mask                                          Port: 3c6h
Maska pro přístup k DAC registrům                  pouze VGA
============================================================
Popis: S hodnotou jdoucí do DAC a obsahem tohoto registru se
       provádí binární AND a teprve výsledek této operace
       směřuje do DAC. Standardně je hodnota registru 0ffh,
       tj. na příchozích datech se nic nezmění. Nižší
       hodnota snižuje počet použitelných barev.

  Bity   Popis
  ----   ---------------------------------------------------
  0-7    Hodnota masky

[Pokračování] | [Obsah]


Copyright © Jiří Kosek