Rozsireni BIOS pro EGA/VGA

     V teto kapitole se seznamime se sluzbami EGA/VGA BIOS,
ktere nam umozni vyuzivat specificke vlastnosti karet
EGA/VGA. Prace s temito sluzbami je naprosto principialne
shodna jako s temi predeslymi. Vzhledem k tomu, ze nove
poskytovanych sluzeb je opravdu mnoho a cisel sluzeb neni
neomezene mnozstvi, doslo k tomu, ze kazda sluzba v sobe
zahrnuje nekolik podsluzeb (budeme je nazyvat funkce). Cislo
funkce se uklada do registru AL nebo BL. K vyvolani vlastni
sluzby se opet pouziva INT 10h. Sluzby teto casti BIOS
muzeme rozdelit do tri hlavnich skupin: sluzby pro praci
s barvami a paletami barev, sluzby pro obsluhu znakovych sad
a sluzby zjistujici konfiguraci adapteru.

Sluzba 10h - Nastaveni registru palety
======================================
Popis: Tato sluzba se pouziva ke zmene jedne (nebo vsech)
     barev palety na jinou barvu a k nastaveni barvy
     ramecku. (Ramecek je plocha obrazovky na jejich
     okrajich, kde se obvykle nic nezobrazuje.)

Poznamka: V sesnactibarevnych modech EGA/VGA je cislo registru
     palety stejne jako cislo barvy. V kompatibilnich modech
     (CGA) urcuji registry 1-3 barvy palety 1 a registry 4-6
     urcuji barvy palety 0. Pokud mate kartu EGA s 64K
     pameti a pouzijete mod 10h, barvy jsou urceny
     nasledujicim schematem:

     Registr palety          Cisla barev
     -----------------------------------
           0                  0,2,8,10
           1                  1,3,9,11
           4                  4,6,12,14
           7                  5,7,13,15

     Po kazde inicializaci zobrazovaciho rezimu jsou hodnoty
     registru palety nastaveny na svoji puvodni hodnotu.
     Pokud tedy pouzivate svoji paletu, musite ji obnovit po
     kazde zmene zobrazovaciho rezimu. Jinou moznosti je
     ucinit vase hodnoty barev v palete stalymi. To
     dosahnete vytvorenim vlastni tabulky parametru
     a nastavenim ukazatele BIOS SAVE_PTR na ni. Format teto
     parametricke tabulky je uveden v popisu ukladaci
     oblasti BIOS. Na karte VGA muzete pomoci sluzby 12h
     a jeji funkce 31h zakazat obnovu palety po resetu modu.

     VGA ma krome standartnich registru palety take 256
     registru DAC (Digital to Analog Converter), ktere
     urcuji vyslednou barvu. Kazdy registr uchovava
     18bitovou hodnotu. Z techto 18 bitu prislusi vzdy 6
     kazde ze tri barev - cervene, zelene, modre (tzv. RGB
     barevny model). Hodnota techto sesti bitu udava
     intenzitu prislusne barvy. Vyslednym slozenim vsech tri
     zakladnich barev dostaneme barvu vyslednou, pro kterou
     mame celkem 262144 (=218) moznosti.

Vstup: AH = 10h  Cislo sluzby
       AL = Cislo funkce

Funkce 00h - Nastaveni jednoho registru palety
----------------------------------------------
Poznamka: Tato funkce muze byt pouzita i k nastaveni
     registru kontroleru atributu.

Vstup: AH = 10h  Cislo sluzby
       AL = 00h  Cislo funkce
       BL = Cislo registru palety (00h - 0fh)
          = Cislo registru atributu
            10h  Registr modu
            11h  Overscan color registr (barva ramecku)
            12h  Registr pristupu do bitovych rovin
            13h  Registr urcujici posun obrazu doleva
            14h  Registr vyberu barvy (pouze VGA)
       BH = Hodnota nastavovaneho registru

Funkce 01h - Nastaveni barvy ramecku
------------------------------------
Poznamka: Nefunguje na EGA pri 350 radkovych modech.

Vstup: AH = 10h  Cislo sluzby
       AL = 01h  Cislo funkce
       BH = Barva ramecku

Funkce 02h - Nastaveni vsech registru palety
--------------------------------------------
Poznamka: Tato funkce vyzaduje, aby byla v pameti ulozena
     tabulka o delce 17 bytu. Prvnich sestnact byte obsahuje
     hodnoty barev pro registry palety a 17. byte urcuje
     barvu ramecku.

Vstup: AH = 10h  Cislo sluzby
       AL = 02h  Cislo funkce
       ES = Segment obsahujici tabulku
       DX = Offset prvniho byte v tabulce

Funkce 03h - Zmena intenzity a blikani
--------------------------------------
Poznamka: Tato funkce urcuje zda bit 3 nebo 4 atributu bude
     urcovat intenzitu barvy nebo blikani.

Vstup: AH = 10h  Cislo sluzby
       AL = 03h  Cislo funkce
       BL = 0 - povol intenzitu (zakaz blikani)
            1 - povol blikani (zakaz intenzitu)

O tom jak je informace o barve zakodovana pro karty EGA
a CGA vypovidaji nasledujici tabulky.
CGA:
     /-------------------------------\
     | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
     |---+---+---+---+---+---+---+---|
     | X | X | X | I | X | R | G | B |
     \-------------------------------/
     X - nepouzito
     I - intenzita (pripadne blikani)
     R, G, B - cervena, zelena, modra

a pro EGA:
     /-------------------------------\
     | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
     |---+---+---+---+---+---+---+---|
     | X | X | R | G | B | R | G | B |
     \-------------------------------/

Standardni nastaveni registru palety:
     /--------------------------------------------\
     | Barva        | EGA       | CGA             |
     |   bity       | 543210    | 543210          |
     |--------------+-----------+-----------------|
     | cerna        | 000000    | 000000          |
     | modra        | 000001    | 000001          |
     | zelena       | 000010    | 000010          |
     | tyrkysova    | 000011    | 000011          |
     | cervena      | 000100    | 000100          |
     | fialova      | 000101    | 000101          |
     | hneda        | 010100    | 000110          |
     | bila         | 000111    | 000111          |
     | seda         | 111000    | 010000          |
     | sv. modra    | 111001    | 010001          |
     | sv. zelena   | 111010    | 010010          |
     | sv. tyrk.    | 111011    | 010011          |
     | sv. cervena  | 111100    | 010100          |
     | sv. fialova  | 111101    | 010101          |
     | zluta        | 111110    | 010110          |
     | bila         | 111111    | 010111          |
     \--------------------------------------------/
     pozn. Sv. samozrejme znamena svetle

Na VGA karte obsahuje registr palety ukazetel do registru
DAC, ze ktereho je teprve ziskana vysledna podoba barvy.

Funkce 07h - Zjisteni obsahu jednoho registru palety - pouze VGA
----------------------------------------------------------------
Vstup: AH = 10h  Cislo sluzby
       AL = 07h  Cislo funkce
       BL = Cislo registru k precteni

Vystup: Bude v registrech obsazen po zavolani sluzby
        BH = Nastaveni registru

Funkce 08h - Zjisteni barvy ramecku - pouze VGA
-----------------------------------------------
Vstup: AH = 10h  Cislo sluzby
       AL = 07h  Cislo funkce

Vystup: Bude v registrech obsazen po zavolani sluzby
        BH = Barva ramecku

Funkce 09h - Nacteni vsech registru palety - pouze VGA
------------------------------------------------------
Poznamka: Pred volanim teto funkce musite v pameti vyhradit
       17 byte. Do prvnich sestnacti byte ulozi funkce
       registry palety a do 17. byte ulozi barvu ramecku.

Vstup: AH = 10h  Cislo sluzby
       AL = 09h  Cislo funkce
       ES = Segment, ve kterem je tabulka
       DX = Offset prvniho byte tabulky

Vystup: Po zavolani sluzby budou zmeneny hodnoty tabulky o
     delce 17 byte na adrese ES:DX

Funkce 10h - Nastaveni jednoho DAC registru - pouze VGA
-------------------------------------------------------
Poznamka: Funkce nastavi 18bitovou hodnotu prislusneho
       DAC registru. Jednotlive barevne slozky RGB jsou
       ulozeny v registrech jako 6bitove hodnoty.

Vstup: AH = 10h  Cislo sluzby
       AL = 10h  Cislo funkce
       BX = DAC regitr (0-255)
       CH = Zelena slozka
       CL = Modra slozka
       DH = Cervena slozka

Funkce 12h - Nastaveni bloku DAC registru - pouze VGA
-----------------------------------------------------
Poznamka: Tato funkce nastavuje 18bitovou hodnotu
       nekolika DAC regsitru. V pameti musi byt ulozena
       tabulka, ve ktere jsou postupne za sebou ulozeny v
       bytech hodnoty pro cervenou, zelenou a modrou slozku
       kazdeho z nastavovanych DAC registru. Pro jeden
       registr jsou tedy potreba 3 byte pameti.

Vstup: AH = 10h  Cislo sluzba
       AL = 12h  Cislo funkce
       BX = Cislo prvniho predefinovavaneho DAC registru
                       (0-255)
       CX = Pocet registru k predefinovani (1-256)
       ES = Segment tabulky
       DX = Offset prvniho byte tabulky

Funkce 13h - Vyber podmnoziny barev - pouze VGA
-----------------------------------------------
Popis: Tato funkce se sklada ze dvou podfunkci. Prvni z nich
       (BL=0) nastavuje pocet podmnozin DAC pouzitelnych
       v sestnactibarevnych modech - 4 skupiny po 64 barvach
       nebo 16 skupin po 16 barvach. Druha (BL=1) vybira
       aktivni podmnozinu.

Vstup: AH = 10h  Cislo sluzby
       AL = 13h  Cislo funkce
       BL = 00h  Vyber strankovaciho rezimu
                 BH = 00h 4 skupiny po 64 registrech
                      01h 16 skupin po 16 registrech
            01h  Vyber aktivni podmnoziny DAC regsitru
                 BH = Aktivni podmnozina DAC (0-3 nebo 0-15)

Funkce 15h - Zjisteni hodnoty jednoho DAC registru - pouze VGA
--------------------------------------------------------------
Vstup: AH = 10h  Cislo sluzby
       AL = 15h  Cislo funkce
       BX = Cislo DAC registru (0-255)

Vystup: Bude v registrech obsazen po zavolani sluzby
        CH = Intenzita zelene slozky
        CL = Intenzita modre slozky
        DH = Intenzita cervene slozky

Funkce 17h - Zjisteni hodnoty nekolika DAC registru - pouze VGA
---------------------------------------------------------------
Popis: Tato funkce cte 18bitove hodnoty nekolika DAC
       registru. Program musi pro kazdy DAC registr vyhradit
       3 byte pameti. Po vyvolani sluzby budou v tabulce za
       sebou ulozene hodnoty intenzity cervene, zelene
       a modre slozky jednotlivych DAC registru.

Vstup: AH = 10h  Cislo sluzby
       AL = 17h  Cislo funkce
       BX = Cislo prvniho DAC registru, ktery se ma cist
                       (0-255)
       CX = Pocet registru DAC k precteni (1-256)
       ES = Segment tabulky
       DX = Offset prvniho byte tabulky

Funkce 18h - Nastaveni PEL maskovaciho registru - pouze VGA
-----------------------------------------------------------
Popis: Tato funkce nastavuje hodnotu PEL maskovaciho
       registru (port 3c6h). Vsechny 8bitove cisla barev,
       ktere maji byt zpracovany DAC, jsou nejprve pomoci
       logicke operace AND s PEL maskovacim registrem
       upraveny.

Poznamka: Nastavenim PEL maskovaciho registru muzete omezit
       pocet pouzivanych barev. BIOS hodnotu tohoto registru
       nastavuje na ffh.

Vstup: AH = 10h  Cislo sluzby
       AL = 18h  Cislo funkce
       BL = Nova hodnota PEL maskovaciho registru

Funkce 19h - Cteni PEL maskovaciho registru - pouze VGA
-------------------------------------------------------
Popis: Tato hodnota cte aktualni nastaveni PEL maskovaciho
       registru (port 3c6h).

Vstup: AH = 10h  Cislo sluzby
       AL = 19h  Cislo funkce

Vystup: Bude v registrech obsazen po zavolani sluzby
        BL = Hodnota PEL maskovaciho registru

Funkce 1ah - Zjisteni nastaveni podmnoziny DAC registru - pouze VGA
-------------------------------------------------------------------
Popis: Tato funkce vraci cislo aktivni podmnoziny DAC
       registru a celkovy pocet podmnozin.

Vstup: AH = 10h  cislo sluzby
       AL = 1ah  Cislo funkce

Vystup: Bude v registrech obsazen po zavolani sluzby
        BH = Cislo aktivni podmnoziny DAC registru
        BL = 00h 4 podmnoziny DAC registru
             01h 16 podmnozin DAC registru

Funkce 1bh - Prepocitani DAC registru na odstiny sedi - pouze VGA
-----------------------------------------------------------------
Popis: Tato funkce prepocita definovany blok DAC registru na
       odpovidajici stupne sedi. Stavajici hodnoty barevnych
       slozek se prepocitaji podle nasledujicich vztahu:
       R = 0.299 * R
       G = 0.587 * G
       B = 0.114 * B

Vstup: AH = 10h  Cislo sluzby
       AL = 1bh  Cislo funkce
       BX = Cislo prvniho DAC registru k prepocitani (0-255)
       CX = Pocet registru k prepocitani (1-256)

Poznamka: Pokud pouzivate mono monitor a kartu VGA, meli
       byste do vaseho souboru AUTOEXEC.BAT zaradit volani
       nasledujiciho programu VGAMONO. Ten prepocita barvy
       na odpovidajici stupne sedi. Nestane se vam pak to,
       ze nektere barvy nejsou na monitoru temer videt.

       Program je mozno zkompilovat pomoci Turbo Assembleru.
       Pokud ho ulozite do souboru VGAMONO.ASM, do
       spustitelneho tvaru ho muzete prevest pomoci prikazu:
       TASM vgamono
       TLINK vgamono

Vypis programu VGAMONO.ASM:

                .MODEL small    ; pametovy model
                .STACK 100h     ; definice zasobniku

                .CODE                   ; zacatek kodoveho segmentu

        ; povoleni prepocitavani na stupne sedi pri zmene modu
        ; sluzba 12h, funkce 33h
                mov     AH, 12h         ; cislo sluzby
                mov     BL, 33h         ; cislo funkce
                mov     AL, 00h         ; povol prepocitavani na stupne sedi
                int     10h             ; zavolej sluzbu

        ; prepocitani prvnich sesnacti registru DAC na stupne sedi
        ; sluzba 10h, funkce 1bh
                mov     AX, 101bh       ; cislo sluzby a funkce
                xor     BX, BX          ; do BX nulu, prvni predefinovavany DAC
                                        ; registr bude reg. c. 0
                mov     CX, 10h         ; predefinovat prvnich 16 registru
                int     10h             ; volani sluzby

        ; nastaveni zobrazovaciho rezimu 03h (text 80x25)
                mov     AX, 0003h       ; cislo sluzby a modu
                int     10h             ; volani sluzby

        ; ukonceni DOS aplikace (programu VGAMONO.EXE)
                mov     AH, 4ch
                int     21h             ; DOS interrupt

                END                     ; konec zdroj. textu


Sluzba 11h - Funkce pro praci se znakovym generatorem
=====================================================
Popis: Tato sluzba vam zpristupni praci se znakovymi sadami.
       V textovych rezimech muzete pouzivat az 8 znakovych
       bloku (EGA pouze 4 a EGA 64K pouze 1). Kazdy takovyto
       blok obsahuje definici vsech 256 znaku a vy muzete
       urcit, ktery blok bude pouzivan k zobrazovani
       znaku na obrazovku. Dva bloky mohou byt pouzivany
       najednou k zobrazeni 512 ruznych znaku (v grafickych
       rezimech muzete pracovat pouze s 256 znaky).

       Znakove sady pro graficky rezim obsazuji normalni
       pamet RAM nebo ROM. Oproti tomu definice znakovych
       sad pro textove rezimy jsou ulozeny v bitove rovine
       2 (ve znakovych blocich). I presto musi byt po kazde
       inicializaci zobrazovaciho modu znakova sada znovu
       nahrana do pameti videoadapteru.

       Znakova sada je v pameti ulozena jako sekvence bytu.
       Jeden byte odpovida jedne radce znaku. Bity, ktere
       jsou v tomto byte nastaveny na jedicku se zobrazuji
       jako body na obrazovce. Kazdy znak je pak definovan
       pomoci nekolika byte (nejcasteji 8, 14 nebo 16).
       Definice jednotlivych znaku jsou v pameti ulozeny
       sekvencne a to tak, ze prvni byte definice odpovida
       horni radce znaku s ASCII kodem 0 a posledni byte
       znakove sady odpovida spodni radce znaku s ASCII
       kodem 255. V textovych rezimech nemusi byt definovano
       vsech 256 znaku, staci nadefinovat nejakou souvislou
       cast znakove sady. V grafickem rezimu musi byt
       definovano vsech 256 znaku.

       V definici znaku jsou bity s nejvyssi vahou
       zobrazovany nejvice vlevo. Definice znaku "A" pro
       znakovou matici 8x8 muze tedy vypadat nasledovne:

       db 00000000b             ........
       db 00011000b             ...**...
       db 01100110b             .**..**.
       db 01100110b             .**..**.
       db 01100110b             .**..**.
       db 01111110b             .******.
       db 01100110b             .**..**.
       db 01100110b             .**..**.

Poznamka: Znakova sada bude nastavena do svoji puvodni
       podoby po kazde inicializaci zobrazovaciho rezimu.
       Pokud definujete vlastni znakovou sadu, musite ji
       znovu nadefinovat po kazde inicializaci modu nebo
       muzete zmenit prislusne udaje v ukladaci oblasti
       BIOS. Pokud pouzivate 512 znaku, je po inicializaci
       modu nastavena 256znakova sada. To muzete opet obejit
       pomoci parametricke tabulky, na kterou ukazuje BIOS
       SAVE_PTR.

Funkce 00h - Nacteni uzivatelem definovane znakove sady
-------------------------------------------------------
Popis: Tato funkce nahradi implicitni znakovou sadu (nebo
       jeji cast) v nekterem ze znakovych bloku uzivatelem
       definovanou znakovou sadou.

Poznamka: Tato funkce inicializuje zobrazovaci mod.

Vstup: AH = 11h  Cislo sluzby
       AL = 00h  Cislo funkce
       BL = Cislo znakoveho bloku k predefinovani (0-7, EGA 0-3)
       BH = Pocet byte na jeden znak (nejcasteji 8, 14, 16)
       CX = Pocet definovanych znaku
       DX = ASCII kod prvniho znaku v uzivatelem definovane
                       znakove tabulce
       ES = Segment, ve kterem je uzivatelem definovana
                       znakova sada
       BP = Offset uzivatelovy znakove sady

Funkce 01h - Nahrani 14radkoveho ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakove sady 8x14 do
       nektereho ze znakovych bloku.

Poznamka: Tato funkce inicializuje zobrazovaci mod.

Vstup: AH = 11h  Cislo sluzby
       AL = 01h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x14 (0-7, EGA 0-3)

Funkce 02h - Nahrani 8radkoveho ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce nacte definici znakove sady 8x8 do
       nektereho ze znakovych bloku.

Poznamka: Tato funkce inicializuje zobrazovaci mod.

Vstup: AH = 11h  Cislo sluzby
       AL = 02h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x8 (0-7, EGA 0-3)

Funkce 03h - Nastaveni znakove sady pro 512 znaku
-------------------------------------------------
Popis: Tato funkce vytvori v textovych rezimech znakovou
       sadu s 512 znaky. Zmeni vyznam bitu 3 atributu
       - misto intenzity barvy bude vybirat ze dvou
       znakovych bloku (kazdy po 256 znacich).

Vstup: AH = 11h  Cislo sluzby
       AL = 03h  Cislo funkce
       BL = bity 0,1,4 - pouzivany znakovy blok, pokud je
                       bit 3 atributu = 0
            bity 2,3,5 - pouzivany znakovy blok, pokud je
                       bit 3 atributu = 1

Poznamka: Bity 4 a 5 pouziva pouze VGA, ktera ma k dispozici
       8 znakovych bloku.

Funkce 04 - Nahrani 16radkoveho ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakove sady 8x16 do
       nektereho ze znakovych bloku.

Poznamka: Tato funkce inicializuje zobrazovaci mod.

Vstup: AH = 11h  Cislo sluzby
       AL = 04h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x16 (0-7)

Nasledujici 4 funkce (10h, 11h, 12h, 14h) jsou velmi podobne
funkcim (00h, 01h, 02h a 04h). Je tu vsak nekolik rozdilu.
Tyto funkce museji byt volany ihned po nastaveni
zobrazovaciho modu, aktivni zobrazovaci stranka musi byt 0.
Funkce dale prepocita pocet byte na znak, pocet radku na
obrazovce a delku zobrazovaciho bufferu. Zmeni take
nasledujici CRTC registry:
/------------------------------------------------------------\
|  Registr | Novy obsah                  | Vyznam            |
|----------+-----------------------------+-------------------|
|  09h1    | pocet byte na znak - 1      | max. scan radka   |
|----------+-----------------------------+-------------------|
|  0ah     | pocet byte na znak - 2      | zacatek kurzoru   |
|----------+-----------------------------+-------------------|
|  0bh     | 0                           | konec kurzoru     |
|----------+-----------------------------+-------------------|
|  12h     | (pocet radku + 1) *         | vertikalni konec  |
|          |  * (pocet byte na znak) - 1 |  obrazovky        |
|----------+-----------------------------+-------------------|
|  14h2    | pocet byte na znak          | pozice podtrzeni  |
\------------------------------------------------------------/
     1) Tento registr je prepocitavan pouze pro mod 07h
     2) Toto je chyba v EGA/VGA BIOS. Mela by zde byt
        hodnota o 1 nizsi. Pri tomto nastaveni nebude
        podtrzeni (pokud je to nastaveno pomoci atributu)
        viditelne.

Funkce 10h - Nacteni uzivatelem definovane znakove sady
-------------------------------------------------------
Popis: Tato funkce nahradi implicitni znakovou sadu (nebo
       jeji cast) v nekterem ze znakovych bloku uzivatelem
       definovanou znakovou sadou.

Vstup: AH = 11h  Cislo sluzby
       AL = 10h  Cislo funkce
       BL = Cislo znakoveho bloku k predefinovani (0-7, EGA 0-3)
       BH = Pocet byte na jeden znak (nejcasteji 8, 14, 16)
       CX = Pocet definovanych znaku
       DX = ASCII kod prvniho znaku v uzivatelem definovane
                       znakove tabulce
       ES = Segment, ve kterem je uzivatelem definovana
                       znakova sada
       BP = Offset uzivatelovy znakove sady

Funkce 11h - Nahrani 14radkoveho ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakove sady 8x14 do
       nektereho ze znakovych bloku.

Vstup: AH = 11h  Cislo sluzby
       AL = 11h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x14 (0-7, EGA 0-3)

Funkce 12h - Nahrani 8radkoveho ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce nacte definici znakove sady 8x8 do
       nektereho ze znakovych bloku.

Vstup: AH = 11h  Cislo sluzby
       AL = 12h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x8 (0-7, EGA 0-3)

Funkce 14 - Nahrani 16radkoveho ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakove sady 8x16 do
       nektereho ze znakovych bloku.

Vstup: AH = 11h  Cislo sluzby
       AL = 14h  Cislo funkce
       BL = Cislo znakoveho bloku kam se ma nacist ROM font
                       8x16 (0-7)

Nasledujici funkce by mely byt pouzivany ihned po
inicializaci grafickych rezimu (predchozi funkce pracovaly
pouze v textovych rezimech).

Funkce 20h - Nastav uzivatelsky font 8x8 v grafice
--------------------------------------------------
Popis: Tato funkce nastavi INT 1fh tak, aby ukazoval na
       znakovou sadu 8x8 na znaky s ASCII kody 128-255.
       Pouziva se prevazne v kompatibilnich rezimech.
       Nastavi INT 1fh na hodnotu ulozenou ES:BP.

Vstup: AH = 11h  Cislo sluzby
       AL = 20h  Cislo funkce
       ES = Segment obsahujici definovanou znakovou sadu
       BP = Offset znakove sady

Function 21h - Nastaveni uzivatelskeho fontu pro graficke rezimy
----------------------------------------------------------------
Popis: Tato funkce nastavi INT 43h na uzivatelskou znakovou
       sadu.

Vstup: AH = 11h  Cislo sluzby
       AL = 21h  Cislo funkce
       BL = Pocet radku na obrazovce
            0 - uzivatelem definovano (v registru DL)
            1 - 14 radek
            2 - 25 radek
            3 - 43 radek
       CX = Pocet byte na znak
       ES = Segment obsahujici uzivatelskou znakovou sadu
       BP = Offset uzivatelske znakove sady

Funkce 22h - Nastavi ROM font 8x14 pro grafiku
----------------------------------------------
Popis: Tato funkce nastavi INT 43h na znakovou sadu 8x14
       v ROM.

Vstup: AH = 11h  Cislo sluzby
       AL = 22h  Cislo funkce
       BL = Pocet radku na obrazovce
            0 - uzivatelem definovano (v registru DL)
            1 - 14 radek
            2 - 25 radek
            3 - 43 radek

Funkce 23h - Nastavi ROM font 8x8 pro grafiku
---------------------------------------------
Popis: Tato funkce nastavi INT 43h na znakovou sadu 8x8 v
       ROM.

Vstup: AH = 11h  Cislo sluzby
       AL = 23h  Cislo funkce
       BL = Pocet radku na obrazovce
            0 - uzivatelem definovano (v registru DL)
            1 - 14 radek
            2 - 25 radek
            3 - 43 radek

Funkce 24h - Nastavi ROM font 8x16 pro grafiku
----------------------------------------------
Popis: Tato funkce nastavi INT 43h na znakovou sadu 8x16 v
       ROM.

Vstup: AH = 11h  Cislo sluzby
       AL = 24h  Cislo funkce
       BL = Pocet radku na obrazovce
            0 - uzivatelem definovano (v registru DL)
            1 - 14 radek
            2 - 25 radek
            3 - 43 radek

Funkce 30h - Zjistuje informace o fontu
---------------------------------------
Popis: Tato funkce vraci informace o pozadovanem fontu
       (znakove sade).

Poznamka: Fonty 9x14 a 9x16 jsou az na definice nekterych
       znaku shodne s fonty 8x14 a 8x16. Pouze u grafickych
       symbolu (ramecky a blokove znaky) je osmy bod
       kopirovan na pozici devateho, aby ramecky nebyly
       prerusovane. U ostatnich znaku zustava misto
       devateho bodu vzdy volne.


Vstup: AH = 11h  Cislo sluzby
       AL = 30h  Cislo funkce
       BH = 00h  Zjisti pointer na INT 1fh font
            01h  Zjisti pointer na INT 43h font
            02h  Zjisti pointer na ROM 8x14 font
            03h  Zjisti pointer na ROM 8x8 font
            04h  Zjisti pointer na ROM 8x8 font (hornich 128
                             znaku)
            05h  Zjisti pointer na ROM 9x14 font
            06h  Zjisti pointer na ROM 8x16 font
            07h  Zjisti pointer na ROM 9x16 font

Vystup: CX = Pocet byte na znak fontu, ktery je na obrazovce
                       (ne toho, na ktery se dotazujeme)
        DL = Pocet radku na obrazovce - 1 (VGA)
             Pocet radku na obrazovce (EGA)
        ES = Segment ulozeni pozadovaneho fontu
        BP = Offset ulozeni pozadovaneho fontu

Sluzba 12h - Alternativni vyber
===============================
Popis: Tato sluzba obasahuje funkce, ktere zjistuji aktualni
       nastaveni adapteru a mohou instalovat novou rutinu
       pro obsluhu stisknuti klavesy PrtScr. Na adapterech
       VGA pak obsahuje jeste nekolik doplnkovych funkci.

Vstup: AH = 12h  Cislo sluzby

Funkce 10h - Zjisteni informace o EGA
-------------------------------------
Popis: Zjisti aktualni konfiguraci graficke karty VGA nebo
       EGA. O VGA vsak nezjisti vsechny udaje, pouze ty,
       ktera ma VGA spolecne s EGA.

Vstup: AH = 12h  Cislo sluzby
       BL = 10h  Cislo funkce

Vystup: BH = 0  - aktivni je barevny mod (registry adapteru
                       jsou na portech 3d?h)
             1  - aktivni je monochromaticky mod (registry
                       adapteru jsou na portech 3b?h)
        BL = Velikost instalovane pameti na videokarte
                 0 =  64K
                 1 = 128K
                 2 = 192K
                 3 = 256K
        CH = Obsahuje kopii Feature Control registru
        CL = Nastaveni switchu na karte EGA
             (1 = OFF, 0 = ON)
             bit 0 - switch 1
             bit 1 - switch 2
             bit 2 - switch 3
             bit 3 - switch 4

Funkce 20h - Vyber alternativni rutinu pro tisk obrazovky
---------------------------------------------------------
Popis: Volani teto funkce nahradi rutinu pro tisk obrazovky
       z ROM BIOS rutinou z EGA/VGA BIOS, ktera zvlada tisk
       i pro zobrazovaci rezimy s vice nez 25 radky.

Vstup: AH = 12h  Cislo sluzby
       BL = 20h  Cislo funkce

Funkce 30h - Nastaveni vertikalniho rozliseni - pouze VGA
---------------------------------------------------------
Popis: Tato funkce nastavi vertikalni rozliseni pro
       textovy rezim, ktery bude inicializovan. Tato funkce
       umoznuje i na lepsich grafickych adapterech,
       dosahnout stejne kvality rozliseni jako na tech
       starsich. CGA pouziva 200 radek, MDA a EGA 350 a
       konecne VGA 400 radek.

Vstup: AH = 12h  Cislo sluzby
       BL = 30h  Cislo funkce
       AL = 0  - 200 radek
            1  - 350 radek
            2  - 400 radek

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 31h - Zapnuti/vypnuti nahrani palety - pouze VGA
-------------------------------------------------------
Popis: Tato funkce umoznuje zvolit, zda pri inicializaci
       zobrazovaciho rezimu bude nahrana standardni paleta a
       nebo se v cinnosti ponecha aktualni paleta. Na
       kartach EGA je aktualni paleta vzdy prepsana
       standardni paletou.

Vstup: AH = 12h  Cislo sluzby
       BL = 31h  Cislo funkce
       AL = 0  - Povol prepisovani aktualni palety
            1  - Zachovavej aktualni paletu

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 32h - Zapnuti/vypnuti pristupu do videopameti - pouze VGA
----------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje pristup do
       videopameti a k registrum videoadapteru. Pokud se
       pristup do pameti zakaze, vzhled obrazovky ani obsah
       videopameti se nezmeni, ale zapisy a cteni do
       videopameti budou ignorovany do te doby, nez se
       zapis povoli.

Vstup: AH = 12h  Cislo sluzby
       BL = 32h  Cislo funkce
       AL = 0  - povol zapis
            1  - zakaz zapis

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 33h - Zapnuti/vypnuti prepocitavani na stupne sedi - pouze VGA
---------------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje prepocitavani barev
       na odstiny sedi po inicializaci zobrazovaciho modu a
       po zmene registru palety. Stavajici hodnoty barevnych
       slozek budou urceny nasledujicimi vztahy:
       R = 0.299 * R
       G = 0.587 * G
       B = 0.114 * B

Vstup: AH = 12h  Cislo sluzby
       BL = 33h  Cislo funkce
       AL = 0  - povol prepocitavani na stupne sedi
            1  - zakaz prepocitavani na stupne sedi

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 34h - Zapnuti/vypnuti emulace kurzoru - pouze VGA
--------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje emulaci textoveho
       kurzoru. Pokud je emulace zapnuta, je informace o
       zacatku a konci kurzoru prepocitana z puvodniho
       rozsahu CGA 8 radku na znak na aktualni pocet radku
       na znak. Pokud je emulace vypnuta, hodnoty se
       neprepocitavaji a bez uprav se pouziji pro velikost
       kurzoru.

Vstup: AH = 12h  Cislo sluzby
       BL = 34h  Cislo funkce
       AL = 0  - povol emulaci kurzoru
            1  - zakaz emulaci kurzoru

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 35h - Prepinani monitoru - pouze VGA
-------------------------------------------
Popis: Tato funkce prepina mezi adapterem umistenym na desce
       pocitace a externim, pokud mohou nastat nejake
       problemy s adresovanim nebo pristupem k portum. Pokud
       jsou v pocitaci dva adaptery, externi je pouzit jako
       defaultni adapter.

       Pri prvni zmene adpteru se musi volat dve funkce po
       sobe (AL=0 a AL=1). Pro dalsi prepinani se pouzivaji
       opet dve volani. Nejprve AL=2, k vypnuti aktivniho
       adapteru a pote AL=3, k zapnuti neaktivniho adapteru.
       Program musi v pameti vyhradit dva 128 byte dlouhe
       buffery pro ukladani stavovych informaci adapteru.

Vstup: AH = 12h  Cislo sluzby
       BL = 35h  Cislo funkce
       AL = 0  - Prvni vypnuti externiho adapteru
                 ES:DX - ukazatel na 128 byte dlouhy buffer
                       pro ulozeni stavovych informaci adapteru
            1  - Prvni zapnuti graficke karty na desce
            2  - Vypni aktivni adapter
                 ES:DX - ukazatel na 128 byte dlouhy buffer
                       pro ulozeni stavovych informaci adapteru
            3  - Zapni neaktivni adapter
                 ES:DX - ukazatel na 128 byte dlouhy buffer
                       s drive ulozenymi stavovymi informacemi

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Funkce 36h - Zapnuti/vypnuti obrazovky - pouze VGA
--------------------------------------------------
Popis: Tato funkce zapina a vypina obrazovku. Muze byt
       pouzita napriklad jako jednoduchy setric obrazovky
       (screen saver). Nebo muzete vypnout obrazovku,
       vykreslit nejaky slozitejsi obrazek. Pak obrazovku
       zapnout a obrazek se objevi cely najednou bez
       pomaleho vykreslovani.

Vstup: AH = 12h  Cislo sluzby
       BL = 36h  Cislo funkce
       AL = 0  - Zapnuti obrazovky (normalne)
            1  - Vypnuti obrazovky

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 12h  Pokud je funkce podporovana adapterem a
                             byla uspesne provedena.

Sluzba 13h - Vypsani znakoveho retezce na obrazovku
===================================================
Popis: Tato sluzba zobrazi retezec znaku v pameti na
       obrazovku. Jsou dve moznosti: retezec v pameti
       obsahuje pouze znaky, jejich atribut bude urcen
       registrem BL. Druhou moznosti je, ulozit do pameti
       posloupnost znak, atribut, znak, atribut... Kazdy
       znak pak ma definovan svuj vlastni atribut. Muzete
       take urcit zda se ma kurzor presunout na konec
       vypisovaneho retezce nebo jestli ma zustat na sve
       puvodni pozici.

       Tato sluzba je podobna sluzbe 0eh. Ridici znaky jako
       07h bell, 0dh CR, 0ah LF, 08h BS nejsou zobrazovany
       jako znaky, ale je provedena jim odpovidajici cinnost
       (pipnuti, presun kurzoru na zacatek radky, posun
       kurzoru o radek dolu a smazani posledniho znaku).

Vstup: AH = 13h  Cislo sluzby
       AL = bit 0 = 0  - kurzor neni presouvan
                  = 1  - kurzor je presunut na konec retezce
            bit 1 = 0  - retezec obsahuje pouze znaky
                    1  - retezec obsahuje i atributy
       BL = Atribut znaku retezce (Pokud bit 1 registru AL
                             je 0)
       BH = Cislo obrazove stranky (viz. sluzba 05h)
       CX = Pocet znaku (nezapocitavaji se atributy)
       DX = Souradnice prvniho znaku
               DH - Radka
               DL - Sloupec
       ES = Segment retezce k vypsani
       BP = Offset retezce k vypsani

Sluzba 1ah - Cteni/zapis kombinace monitoru - pouze VGA
=======================================================
Popis: Tato umoznuje zjistit a nastavit kody, ktere urcuji
       typ primarniho a sekundarniho displeje.

Vstup: AH = 1ah  Cislo sluzby

       Tabulka kodu kombinaci monitoru:
       /---------------------------------------\
       |Kod | Druh monitoru                    |
       |----+----------------------------------|
       |00h | Monitor neni pripojen            |
       |01h | MDA                              |
       |02h | CGA                              |
       |04h | EGA s barevnym monitorem         |
       |05h | EGA s monochromatickym monitorem |
       |06h | PGC                              |
       |07h | VGA s monochromatickym monitorem |
       |08h | VGA s barevnym monitorem         |
       |0ah | MCGA s digitalnim monitorem      |
       |0bh | MCGA s monochromatickym monitorem|
       |0ch | MCGA s barevnym monitorem        |
       |ffh | Neznamy typ monitoru             |
       \---------------------------------------/

Funkce 00h - Cteni kombinace monitoru - pouze VGA
-------------------------------------------------
Popis: Zjisti aktualni konfiguraci monitoru.

Vstup: AH = 1ah  Cislo sluzby
       AL = 00h  Cislo funkce

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1ah  Volani funkce probehlo uspesne
        BH = Kod sekundarniho displeje
        BL = Kod aktivniho displeje

Funkce 01h - Nastaveni kombinace monitoru - pouze VGA
-----------------------------------------------------
Popis: Nastavi aktualni konfiguraci monitoru.

Vstup: AH = 1ah  Cislo sluzby
       AL = 01h  Cislo funkce
       BH = Kod sekundarniho displeje
       BL = Kod aktivniho displeje

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1ah  Volani funkce probehlo uspesne

Sluzba 1bh - Zjisteni stavovych informaci - pouze VGA
=====================================================
Popis: Tato sluzba zjisti informace o aktualnim nastaveni
       grafickeho adapteru. Pred volanim teto sluzby musite
       v pameti vyhradit 64 byte pro ulozeni informaci.

Vstup: AH = 1bh  Cislo sluzby
       BX = Typ implementace (musi byt 0)
       ES = Segment, ve kterem je vymezenych 64 byte pameti
       DI = Offset 1. byte vymezene pameti

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1bh  Volani funkce probehlo uspesne

Format tabulky na adrese ES:DI (delka 64 byte):
/-----------------------------------------------------------\
|Offset | Velikost | Popis                                  |
|-------+----------+----------------------------------------|
|  00h  |  1 word  | Offset staticke tabulky rezimu         |
|-------+----------+----------------------------------------|
|  02h  |  1 word  | Segment staticke tabulky rezimu        |
|-------+----------+----------------------------------------|
|  04h  |  1 byte  | Cislo aktualniho zobrazovaciho rezimu  |
|-------+----------+----------------------------------------|
|  05h  |  1 word  | Pocet zobrazitelnych textovych sloupcu |
|-------+----------+----------------------------------------|
|  07h  |  1 word  | Velikost zabrazovane pameti video      |
|       |          | adapteru                               |
|-------+----------+----------------------------------------|
|  09h  |  1 word  | Pocatecni adresa videopameti           |
|-------+----------+----------------------------------------|
|  0bh  |  1 word  | Pozice kurzoru v zobrazovaci strance 0 |
|       |          | (Vyssi byte - radka,                   |
|       |          |  nizzsi byte - sloupec)                |
|-------+----------+----------------------------------------|
|  0dh  |  1 word  | Pozice kurzoru v zobrazovaci strance 1 |
|-------+----------+----------------------------------------|
|  0fh  |  1 word  | Pozice kurzoru v zobrazovaci strance 2 |
|-------+----------+----------------------------------------|
|  11h  |  1 word  | Pozice kurzoru v zobrazovaci strance 3 |
|-------+----------+----------------------------------------|
|  13h  |  1 word  | Pozice kurzoru v zobrazovaci strance 4 |
|-------+----------+----------------------------------------|
|  15h  |  1 word  | Pozice kurzoru v zobrazovaci strance 5 |
|-------+----------+----------------------------------------|
|  17h  |  1 word  | Pozice kurzoru v zobrazovaci strance 6 |
|-------+----------+----------------------------------------|
|  19h  |  1 word  | Pozice kurzoru v zobrazovaci strance 7 |
|-------+----------+----------------------------------------|
|  1bh  |  1 byte  | Pocatecni radka kurzoru                |
|-------+----------+----------------------------------------|
|  1ch  |  1 byte  | Koncova radka kurzoru                  |
|-------+----------+----------------------------------------|
|  1dh  |  1 byte  | Aktivni zobrazovaci stranka            |
|-------+----------+----------------------------------------|
|  1eh  |  1 word  | Adresa portu, na kterych jsou mapovany |
|       |          | CRTC registry                          |
|-------+----------+----------------------------------------|
|  20h  |  1 byte  | Hodnota registru 3?8h                  |
|-------+----------+----------------------------------------|
|  21h  |  1 byte  | Hodnota registru 3?9h                  |
|-------+----------+----------------------------------------|
|  22h  |  1 byte  | Pocet zobrazitelnych textovych radek   |
|-------+----------+----------------------------------------|
|  23h  |  1 byte  | Vyska znaku v pixelech (pocet byte na  |
|       |          | znak)                                  |
|-------+----------+----------------------------------------|
|  25h  |  1 byte  | Kod primarniho displeje                |
|       |          | (viz. tabulka kodu kombinaci monitoru) |
|-------+----------+----------------------------------------|
|  26h  |  1 byte  | Kod sekundarniho displeje              |
|       |          | (viz. tabulka kodu kombinaci monitoru) |
|-------+----------+----------------------------------------|
|  27h  |  1 word  | Pocet barev zobrazitelnych v aktualnim |
|       |          | zobrazovacim rezimu                    |
|-------+----------+----------------------------------------|
|  29h  |  1 byte  | Pocet dostupnych zobrazovacich stranek |
|       |          | v aktualnim zobrazovacim rezimu        |
|-------+----------+----------------------------------------|
|  2ah  |  1 byte  | Pocet rastrovych radek na obrazovce:   |
|       |          |         0 - 200 radek                  |
|       |          |         1 - 350 radek                  |
|       |          |         2 - 400 radek                  |
|       |          |         3 - 480 radek                  |
|-------+----------+----------------------------------------|
|  2bh  |  1 byte  | Cislo primarniho znakoveho bloku       |
|-------+----------+----------------------------------------|
|  2ch  |  1 byte  | Cislo sekundarniho znakoveho bloku     |
|-------+----------+----------------------------------------|
|  2dh  |  1 byte  | Informace o obrazovem systemu:         |
|       |          | Bit   Popis (kdyz bit = 1)             |
|       |          | ---   ---------------------------------|
|       |          |  0    Podporuje vsechny mody           |
|       |          |  1    Barvy jsou prepocitavany na      |
|       |          |         odstiny sedi                   |
|       |          |  2    Pripojen je monochromaticky      |
|       |          |         monitor                        |
|       |          |  3    Neni nahravana standardni paleta |
|       |          |  4    Emulace CGA kurzoru              |
|       |          |  5    1 = blikani, 0 = intenzita barvy |
|       |          |         pozadi                         |
|       |          | 6-7   Vyhrazeno                        |
|-------+----------+----------------------------------------|
|  2eh  |  3 byte  | Vyhrazeno                              |
|-------+----------+----------------------------------------|
|  31h  |  1 byte  | Velikost dostupne videopameti          |
|       |          |         0 -  64K                       |
|       |          |         1 - 128K                       |
|       |          |         2 - 192K                       |
|       |          |         3 - 256K                       |
|-------+----------+----------------------------------------|
|  32h  |  1 byte  | Doplnkove informace o zobrazovaci      |
|       |          | Bit   Popis (kdyz bit = 1)             |
|       |          | ---   ---------------------------------|
|       |          |  0    Je pouzivana 512znakova sada     |
|       |          |  1    Je pouzivana oblast pro ulozeni  |
|       |          |         palety                         |
|       |          |  2    Je pouzivana uzivatelem          |
|       |          |         definovana znakova sada        |
|       |          |  3    V grafickem rezimu je pouzivana  |
|       |          |         uzivatelem definovana znakova  |
|       |          |         sada                           |
|       |          |  4    Je pouzivana uzivatelem          |
|       |          |         definovana paleta              |
|       |          |  5    Je pouzivana podpora             |
|       |          |         dvou-monitoroveho systemu      |
|       |          | 6-7   Rezervovano                      |
|-------+----------+----------------------------------------|
|  33h  | 13 byte  | Rezervovano                            |
\-----------------------------------------------------------/

Format staticke tabulky rezimu (delka 16 byte):
/-----------------------------------------------------------\
|Offset | Velikost|  Popis                                  |
|-------+---------+-----------------------------------------|
|  00h  |  1 byte |  Podporovane videomody                  |
|       |         |  bit 0 = 1  Mod 0 je podporovan         |
|       |         |  bit 1 = 1  Mod 1 je podporovan         |
|       |         |  bit 2 = 1  Mod 2 je podporovan         |
|       |         |  bit 3 = 1  Mod 3 je podporovan         |
|       |         |  bit 4 = 1  Mod 4 je podporovan         |
|       |         |  bit 5 = 1  Mod 5 je podporovan         |
|       |         |  bit 6 = 1  Mod 6 je podporovan         |
|       |         |  bit 7 = 1  Mod 7 je podporovan         |
|-------+---------+-----------------------------------------|
|  01h  |  1 byte |  Podporovane videomody                  |
|       |         |  bit 0 = 1  Mod 8 je podporovan         |
|       |         |  bit 1 = 1  Mod 9 je podporovan         |
|       |         |  bit 2 = 1  Mod 0ah je podporovan       |
|       |         |  bit 3 = 1  Mod 0bh je podporovan       |
|       |         |  bit 4 = 1  Mod 0ch je podporovan       |
|       |         |  bit 5 = 1  Mod 0dh je podporovan       |
|       |         |  bit 6 = 1  Mod 0eh je podporovan       |
|       |         |  bit 7 = 1  Mod 0fh je podporovan       |
|-------+---------+-----------------------------------------|
|  02h  |  1 byte |  Podporovane videomody                  |
|       |         |  bit 0 = 1  Mod 10h je podporovan       |
|       |         |  bit 1 = 1  Mod 11h je podporovan       |
|       |         |  bit 2 = 1  Mod 12h je podporovan       |
|       |         |  bit 3 = 1  Mod 13h je podporovan       |
|-------+---------+-----------------------------------------|
|  03h  |  4 byte |  Rezervovano                            |
|-------+---------+-----------------------------------------|
|  07h  |  1 byte |  Pocet rastrovych radek v textovych     |
|       |         |  rezimech: bit 0 = 1 - 200 radek        |
|       |         |            bit 1 = 1 - 350 radek        |
|       |         |            bit 2 = 1 - 400 radek        |
|-------+---------+-----------------------------------------|
|  08h  |  1 byte |  Celkovy pocet znakovych bloku v        |
|       |         |  textovych rezimech                     |
|-------+---------+-----------------------------------------|
|  09h  |  1 byte |  Maximalni pocet najednou pouzivanych   |
|       |         |  znakovych bloku v textovych rezimech   |
|-------+---------+-----------------------------------------|
|  0ah  |  1 byte |  Doplnkove informace                    |
|       |         |  Bit   Popis (kdyz bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Lze pouzivat vsechny zobr. mody  |
|       |         |   1    Je podporovano prepocitavani     |
|       |         |          barev na odstiny sedi          |
|       |         |   2    Je podporovana uzivatelem        |
|       |         |          definovana znakova sada        |
|       |         |   3    Je podporovana uzivatelem        |
|       |         |          definovana paleta              |
|       |         |   4    Je podporovana emulace CGA       |
|       |         |          kurzoru                        |
|       |         |   5    Jsou pritomny registry palety EGA|
|       |         |   6    Jsou pritomny registry palety DAC|
|       |         |   7    Je podporovano nekolik sad DAC   |
|       |         |          registru                       |
|-------+---------+-----------------------------------------|
|  0bh  |  1 byte |  Doplnkove informace                    |
|       |         |  Bit   Popis (kdyz bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Podpora svetelneho pera          |
|       |         |   1    Podpora sluzby 1ch               |
|       |         |   2    Podpora volby mezi intenzitou    |
|       |         |          pozadi a blikanim              |
|       |         |   3    Je podporovan kod kombinace      |
|       |         |          monitoru                       |
|       |         |  4-7   Rezervovano                      |
|-------+---------+-----------------------------------------|
|  0ch  |  1 word |  Rezervovano                            |
|-------+---------+-----------------------------------------|
|  0eh  |  1 byte |  Priznaky uchovavani nastaveni          |
|       |         |  Bit   Popis (kdyz bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Uchovava se 512znakova sada      |
|       |         |   1    Uchovava se aktualni paleta      |
|       |         |   2    Uzivatelem definovana zn. sada   |
|       |         |   3    Uzivatelem definovana zn. sada v |
|       |         |          grafickych rezimech            |
|       |         |   4    Uzivatelem definovana paleta     |
|       |         |   5    Podpora dvou-monitoroveho systemu|
|       |         |  6-7   Rezervovano                      |
|-------+---------+-----------------------------------------|
|  0fh  |  1 byte |  Rezervovano                            |
\-----------------------------------------------------------/

Sluzba 1ch - Ulozeni/obnoveni aktualniho nastaveni adapteru - pouze VGA
=======================================================================
Popis: Tato sluzba uklada a opet obnovuje nastaveni
       grafickeho adapteru a aktualniho zobrazovaciho rezimu
       (BIOS oblast, registry adapteru, registry palety).
       Program musi v pameti vyhradit misto pro ulozeni
       informaci. Pozadovanou velikost bufferu vraci funkce
       00h.

Poznamka: Registr CX definuje co se bude ukladat. Kazdy bit
       definuje jednu cast k ukladani. Pro ulozeni vsech tri
       skupin informaci pouzijte CX = 7.

Funkce 00h - Zjisteni velikosti bufferu - pouze VGA
---------------------------------------------------
Vstup: AH = 1ch  Cislo sluzby
       AL = 00h  Cislo funkce
       CX = Urceni informaci k ulozeni/nastaveni
            (pokud se bit = 1, s informaci se pracuje)
            Bit 0 - registry grafickeho adapteru
            Bit 1 - datova oblast BIOS
            Bit 2 - registry palety a DAC registry

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1ch  Funkce je podporovana
        BX = Velikost bufferu (v 64 byte slouhych blocich)

Funkce 01h - Ulozeni nastaveni - pouze VGA
------------------------------------------
Vstup: AH = 1ch  Cislo sluzby
       AL = 01h  Cislo funkce
       ES = Segment ukladaci oblasti (bufferu)
       BX = Offset ukladaci oblasti (bufferu)
       CX = Urceni informaci k ulozeni/nastaveni
            (pokud se bit = 1, s informaci se pracuje)
            Bit 0 - registry grafickeho adapteru
            Bit 1 - datova oblast BIOS
            Bit 2 - registry palety a DAC registry

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1ch   Funkce je podporovana

Funkce 02h - Obnoveni nastaveni - pouze VGA
-------------------------------------------
Vstup: AH = 1ch  Cislo sluzby
       AL = 02h  Cislo funkce
       ES = Segment ukladaci oblasti (bufferu)
       BX = Offset ukladaci oblasti (bufferu)
       CX = Urceni informaci k ulozeni/nastaveni
            (pokud se bit = 1, s informaci se pracuje)
            Bit 0 - registry grafickeho adapteru
            Bit 1 - datova oblast BIOS
            Bit 2 - registry palety a DAC registry

Vystup: Bude v registrech obsazen po zavolani sluzby
        AL = 1ch   Funkce je podporovana

[Pokracovani]


Copyright © Jiri Kosek