Rozšíření BIOS pro EGA/VGA

     V této kapitole se seznámíme se službami EGA/VGA BIOS,
které nám umožní využívat specifické vlastnosti karet
EGA/VGA. Práce s těmito službami je naprosto principiálně
shodná jako s těmi předešlými. Vzhledem k tomu, že nově
poskytovaných služeb je opravdu mnoho a čísel služeb není
neomezené množství, došlo k tomu, že každá služba v sobě
zahrnuje několik podslužeb (budeme je nazývat funkce). Číslo
funkce se ukládá do registru AL nebo BL. K vyvolání vlastní
služby se opět používá INT 10h. Služby této části BIOS
můžeme rozdělit do tří hlavních skupin: služby pro práci
s barvami a paletami barev, služby pro obsluhu znakových sad
a služby zjišťující konfiguraci adaptéru.

Služba 10h - Nastavení registrů palety
======================================
Popis: Tato služba se používá ke změně jedné (nebo všech)
     barev palety na jinou barvu a k nastavení barvy
     rámečku. (Rámeček je plocha obrazovky na jejích
     okrajích, kde se obvykle nic nezobrazuje.)

Poznámka: V šesnáctibarevných módech EGA/VGA je číslo registru
     palety stejné jako číslo barvy. V kompatibilních módech
     (CGA) určují registry 1-3 barvy palety 1 a registry 4-6
     určují barvy palety 0. Pokud máte kartu EGA s 64K
     paměti a použijete mód 10h, barvy jsou určeny
     následujícím schématem:

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

     Po každé inicializaci zobrazovacího režimu jsou hodnoty
     registrů palety nastaveny na svojí původní hodnotu.
     Pokud tedy používáte svoji paletu, musíte ji obnovit po
     každé změně zobrazovacího režimu. Jinou možností je
     učinit vaše hodnoty barev v paletě stálými. To
     dosáhnete vytvořením vlastní tabulky parametrů
     a nastavením ukazatele BIOS SAVE_PTR na ní. Formát této
     parametrické tabulky je uveden v popisu ukládací
     oblasti BIOS. Na kartě VGA můžete pomocí služby 12h
     a její funkce 31h zakázat obnovu palety po resetu módu.

     VGA má kromě standartních registrů palety také 256
     registrů DAC (Digital to Analog Converter), které
     určují výslednou barvu. Každý registr uchovává
     18bitovou hodnotu. Z těchto 18 bitů přísluší vždy 6
     každé ze tří barev - červené, zelené, modré (tzv. RGB
     barevný model). Hodnota těchto šesti bitů udává
     intenzitu příslušné barvy. Výsledným složením všech tří
     základních barev dostaneme barvu výslednou, pro kterou
     máme celkem 262144 (=218) možností.

Vstup: AH = 10h  Číslo služby
       AL = Číslo funkce

Funkce 00h - Nastavení jednoho registru palety
----------------------------------------------
Poznámka: Tato funkce může být použita i k nastavení
     registrů kontroleru atributů.

Vstup: AH = 10h  Číslo služby
       AL = 00h  Číslo funkce
       BL = Číslo registru palety (00h - 0fh)
          = Číslo registru atributů
            10h  Registr módu
            11h  Overscan color registr (barva rámečku)
            12h  Registr přístupu do bitových rovin
            13h  Registr určující posun obrazu doleva
            14h  Registr výběru barvy (pouze VGA)
       BH = Hodnota nastavovaného registru

Funkce 01h - Nastavení barvy rámečku
------------------------------------
Poznámka: Nefunguje na EGA při 350 řádkových módech.

Vstup: AH = 10h  Číslo služby
       AL = 01h  Číslo funkce
       BH = Barva rámečku

Funkce 02h - Nastavení všech registrů palety
--------------------------------------------
Poznámka: Tato funkce vyžaduje, aby byla v paměti uložena
     tabulka o délce 17 bytů. Prvních šestnáct byte obsahuje
     hodnoty barev pro registry palety a 17. byte určuje
     barvu rámečku.

Vstup: AH = 10h  Číslo služby
       AL = 02h  Číslo funkce
       ES = Segment obsahující tabulku
       DX = Offset prvního byte v tabulce

Funkce 03h - Změna intenzity a blikání
--------------------------------------
Poznámka: Tato funkce určuje zda bit 3 nebo 4 atributu bude
     určovat intenzitu barvy nebo blikání.

Vstup: AH = 10h  Číslo služby
       AL = 03h  Číslo funkce
       BL = 0 - povol intenzitu (zakaž blikání)
            1 - povol blikání (zakaž intenzitu)

O tom jak je informace o barvě zakódována pro karty EGA
a CGA vypovídají následující tabulky.
CGA:
     /-------------------------------\
     | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
     |---+---+---+---+---+---+---+---|
     | X | X | X | I | X | R | G | B |
     \-------------------------------/
     X - nepoužito
     I - intenzita (případně blikání)
     R, G, B - červená, zelená, modrá

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

Standardní nastavení registrů palety:
     /--------------------------------------------\
     | Barva        | EGA       | CGA             |
     |   bity       | 543210    | 543210          |
     |--------------+-----------+-----------------|
     | černá        | 000000    | 000000          |
     | modrá        | 000001    | 000001          |
     | zelená       | 000010    | 000010          |
     | tyrkysová    | 000011    | 000011          |
     | červená      | 000100    | 000100          |
     | fialová      | 000101    | 000101          |
     | hnědá        | 010100    | 000110          |
     | bílá         | 000111    | 000111          |
     | šedá         | 111000    | 010000          |
     | sv. modrá    | 111001    | 010001          |
     | sv. zelená   | 111010    | 010010          |
     | sv. tyrk.    | 111011    | 010011          |
     | sv. červená  | 111100    | 010100          |
     | sv. fialová  | 111101    | 010101          |
     | žlutá        | 111110    | 010110          |
     | bílá         | 111111    | 010111          |
     \--------------------------------------------/
     pozn. Sv. samozřejmě znamená světle

Na VGA kartě obsahuje registr palety ukazetel do registru
DAC, ze kterého je teprve získána výsledná podoba barvy.

Funkce 07h - Zjištění obsahu jednoho registru palety - pouze VGA
----------------------------------------------------------------
Vstup: AH = 10h  Číslo služby
       AL = 07h  Číslo funkce
       BL = Číslo registru k přečtení

Výstup: Bude v registrech obsažen po zavolání služby
        BH = Nastavení registru

Funkce 08h - Zjištění barvy rámečku - pouze VGA
-----------------------------------------------
Vstup: AH = 10h  Číslo služby
       AL = 07h  Číslo funkce

Výstup: Bude v registrech obsažen po zavolání služby
        BH = Barva rámečku

Funkce 09h - Načtení všech registrů palety - pouze VGA
------------------------------------------------------
Poznámka: Před voláním této funkce musíte v paměti vyhradit
       17 byte. Do prvních šestnácti byte uloží funkce
       registry palety a do 17. byte uloží barvu rámečku.

Vstup: AH = 10h  Číslo služby
       AL = 09h  Číslo funkce
       ES = Segment, ve kterém je tabulka
       DX = Offset prvního byte tabulky

Výstup: Po zavolání služby budou změněny hodnoty tabulky o
     délce 17 byte na adrese ES:DX

Funkce 10h - Nastavení jednoho DAC registru - pouze VGA
-------------------------------------------------------
Poznámka: Funkce nastaví 18bitovou hodnotu příslušného
       DAC registru. Jednotlivé barevné složky RGB jsou
       uloženy v registrech jako 6bitové hodnoty.

Vstup: AH = 10h  Číslo služby
       AL = 10h  Číslo funkce
       BX = DAC regitr (0-255)
       CH = Zelená složka
       CL = Modrá složka
       DH = Červená složka

Funkce 12h - Nastavení bloku DAC registrů - pouze VGA
-----------------------------------------------------
Poznámka: Tato funkce nastavuje 18bitovou hodnotu
       několika DAC regsitrů. V paměti musí být uložena
       tabulka, ve které jsou postupně za sebou uloženy v
       bytech hodnoty pro červenou, zelenou a modrou složku
       každého z nastavovaných DAC registrů. Pro jeden
       registr jsou tedy potřeba 3 byte paměti.

Vstup: AH = 10h  Číslo služba
       AL = 12h  Číslo funkce
       BX = Číslo prvního předefinovávaného DAC registru
                       (0-255)
       CX = Počet registrů k předefinování (1-256)
       ES = Segment tabulky
       DX = Offset prvního byte tabulky

Funkce 13h - Výběr podmnožiny barev - pouze VGA
-----------------------------------------------
Popis: Tato funkce se skládá ze dvou podfunkcí. První z nich
       (BL=0) nastavuje počet podmnožin DAC použitelných
       v šestnáctibarevných módech - 4 skupiny po 64 barvách
       nebo 16 skupin po 16 barvách. Druhá (BL=1) vybírá
       aktivní podmnožinu.

Vstup: AH = 10h  Číslo služby
       AL = 13h  Číslo funkce
       BL = 00h  Výběr stránkovacího režimu
                 BH = 00h 4 skupiny po 64 registrech
                      01h 16 skupin po 16 registrech
            01h  Výběr aktivní podmnožiny DAC regsitrů
                 BH = Aktivní podmnožina DAC (0-3 nebo 0-15)

Funkce 15h - Zjištění hodnoty jednoho DAC registru - pouze VGA
--------------------------------------------------------------
Vstup: AH = 10h  Číslo služby
       AL = 15h  Číslo funkce
       BX = Číslo DAC registru (0-255)

Výstup: Bude v registrech obsažen po zavolání služby
        CH = Intenzita zelené složky
        CL = Intenzita modré složky
        DH = Intenzita červené složky

Funkce 17h - Zjištění hodnoty několika DAC registrů - pouze VGA
---------------------------------------------------------------
Popis: Tato funkce čte 18bitové hodnoty několika DAC
       registrů. Program musí pro každý DAC registr vyhradit
       3 byte paměti. Po vyvolání služby budou v tabulce za
       sebou uložené hodnoty intenzity červené, zelené
       a modré složky jednotlivých DAC registrů.

Vstup: AH = 10h  Číslo služby
       AL = 17h  Číslo funkce
       BX = Číslo prvního DAC registru, který se má číst
                       (0-255)
       CX = Počet registrů DAC k přečtení (1-256)
       ES = Segment tabulky
       DX = Offset prvního byte tabulky

Funkce 18h - Nastavení PEL maskovacího registru - pouze VGA
-----------------------------------------------------------
Popis: Tato funkce nastavuje hodnotu PEL maskovacího
       registru (port 3c6h). Všechny 8bitové čísla barev,
       které mají být zpracovány DAC, jsou nejprve pomocí
       logické operace AND s PEL maskovacím registrem
       upraveny.

Poznámka: Nastavením PEL maskovacího registru můžete omezit
       počet používaných barev. BIOS hodnotu tohoto registru
       nastavuje na ffh.

Vstup: AH = 10h  Číslo služby
       AL = 18h  Číslo funkce
       BL = Nová hodnota PEL maskovacího registru

Funkce 19h - Čtení PEL maskovacího registru - pouze VGA
-------------------------------------------------------
Popis: Tato hodnota čte aktuální nastavení PEL maskovacího
       registru (port 3c6h).

Vstup: AH = 10h  Číslo služby
       AL = 19h  Číslo funkce

Výstup: Bude v registrech obsažen po zavolání služby
        BL = Hodnota PEL maskovacího registru

Funkce 1ah - Zjištění nastavení podmnožiny DAC registrů - pouze VGA
-------------------------------------------------------------------
Popis: Tato funkce vrací číslo aktivní podmnožiny DAC
       registrů a celkový počet podmnožin.

Vstup: AH = 10h  číslo služby
       AL = 1ah  Číslo funkce

Výstup: Bude v registrech obsažen po zavolání služby
        BH = Číslo aktivní podmnožiny DAC registrů
        BL = 00h 4 podmnožiny DAC registrů
             01h 16 podmnožin DAC registrů

Funkce 1bh - Přepočítání DAC registrů na odstíny šedi - pouze VGA
-----------------------------------------------------------------
Popis: Tato funkce přepočítá definovaný blok DAC registrů na
       odpovídající stupně šedi. Stávající hodnoty barevných
       složek se přepočítají podle následujících vztahů:
       R = 0.299 * R
       G = 0.587 * G
       B = 0.114 * B

Vstup: AH = 10h  Číslo služby
       AL = 1bh  Číslo funkce
       BX = Číslo prvního DAC registru k přepočítání (0-255)
       CX = Počet registrů k přepočítání (1-256)

Poznámka: Pokud používáte mono monitor a kartu VGA, měli
       byste do vašeho souboru AUTOEXEC.BAT zařadit volání
       následujícího programu VGAMONO. Ten přepočítá barvy
       na odpovídající stupně šedi. Nestane se vám pak to,
       že některé barvy nejsou na monitoru téměř vidět.

       Program je možno zkompilovat pomocí Turbo Assembleru.
       Pokud ho uložíte do souboru VGAMONO.ASM, do
       spustitelného tvaru ho můžete převést pomocí příkazů:
       TASM vgamono
       TLINK vgamono

Výpis programu VGAMONO.ASM:

                .MODEL small    ; paměťový model
                .STACK 100h     ; definice zásobníku

                .CODE                   ; začátek kódového segmentu

        ; povolení přepočítávání na stupně šedi při změně módu
        ; služba 12h, funkce 33h
                mov     AH, 12h         ; číslo služby
                mov     BL, 33h         ; číslo funkce
                mov     AL, 00h         ; povol přepočítávání na stupně šedi
                int     10h             ; zavolej službu

        ; přepočítání prvních šesnácti registrů DAC na stupně šedi
        ; služba 10h, funkce 1bh
                mov     AX, 101bh       ; číslo služby a funkce
                xor     BX, BX          ; do BX nulu, první předefinovávaný DAC
                                        ; registr bude reg. č. 0
                mov     CX, 10h         ; předefinovat prvních 16 registrů
                int     10h             ; volání služby

        ; nastavení zobrazovacího režimu 03h (text 80x25)
                mov     AX, 0003h       ; číslo služby a módu
                int     10h             ; volání služby

        ; ukončení DOS aplikace (programu VGAMONO.EXE)
                mov     AH, 4ch
                int     21h             ; DOS interrupt

                END                     ; konec zdroj. textu


Služba 11h - Funkce pro práci se znakovým generátorem
=====================================================
Popis: Tato služba vám zpřístupní práci se znakovými sadami.
       V textových režimech můžete používat až 8 znakových
       bloků (EGA pouze 4 a EGA 64K pouze 1). Každý takovýto
       blok obsahuje definici všech 256 znaků a vy můžete
       určit, který blok bude používán k zobrazování
       znaků na obrazovku. Dva bloky mohou být používány
       najednou k zobrazení 512 různých znaků (v grafických
       režimech můžete pracovat pouze s 256 znaky).

       Znakové sady pro grafický režim obsazují normalní
       paměť RAM nebo ROM. Oproti tomu definice znakových
       sad pro textové režimy jsou uloženy v bitové rovině
       2 (ve znakových blocích). I přesto musí být po každé
       inicializaci zobrazovacího módu znaková sada znovu
       nahrána do paměti videoadaptéru.

       Znaková sada je v paměti uložena jako sekvence bytů.
       Jeden byte odpovídá jedné řádce znaku. Bity, které
       jsou v tomto byte nastaveny na jedičku se zobrazují
       jako body na obrazovce. Každý znak je pak definován
       pomocí několika byte (nejčastějí 8, 14 nebo 16).
       Definice jednotlivých znaků jsou v paměti uloženy
       sekvenčně a to tak, že první byte definice odpovídá
       horní řádce znaku s ASCII kódem 0 a poslední byte
       znakové sady odpovídá spodní řádce znaku s ASCII
       kódem 255. V textových režimech nemusí být definováno
       všech 256 znaků, stačí nadefinovat nějakou souvislou
       část znakové sady. V grafickém režimu musí být
       definováno všech 256 znaků.

       V definici znaku jsou bity s nejvyšší vahou
       zobrazovány nejvíce vlevo. Definice znaku "A" pro
       znakovou matici 8x8 může tedy vypadat následovně:

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

Poznámka: Znaková sada bude nastavena do svojí původní
       podoby po každé inicializaci zobrazovacího režimu.
       Pokud definujete vlastní znakovou sadu, musíte ji
       znovu nadefinovat po každé inicializaci módu nebo
       můžete změnit příslušné údaje v ukládací oblasti
       BIOS. Pokud používate 512 znaků, je po inicializaci
       módu nastavena 256znaková sada. To můžete opět obejít
       pomocí parametrické tabulky, na kterou ukazuje BIOS
       SAVE_PTR.

Funkce 00h - Načtení uživatelem definované znakové sady
-------------------------------------------------------
Popis: Tato funkce nahradí implicitní znakovou sadu (nebo
       její část) v některém ze znakových bloků uživatelem
       definovanou znakovou sadou.

Poznámka: Tato funkce inicializuje zobrazovací mód.

Vstup: AH = 11h  Číslo služby
       AL = 00h  Číslo funkce
       BL = Číslo znakového bloku k předefinování (0-7, EGA 0-3)
       BH = Počet byte na jeden znak (nejčastěji 8, 14, 16)
       CX = Počet definovaných znaků
       DX = ASCII kód prvního znaku v uživatelem definované
                       znakové tabulce
       ES = Segment, ve kterém je uživatelem definovaná
                       znaková sada
       BP = Offset uživatelovy znakové sady

Funkce 01h - Nahrání 14řádkového ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakové sady 8x14 do
       některého ze znakových bloků.

Poznámka: Tato funkce inicializuje zobrazovací mód.

Vstup: AH = 11h  Číslo služby
       AL = 01h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x14 (0-7, EGA 0-3)

Funkce 02h - Nahrání 8řádkového ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce načte definici znakové sady 8x8 do
       některého ze znakových bloků.

Poznámka: Tato funkce inicializuje zobrazovací mód.

Vstup: AH = 11h  Číslo služby
       AL = 02h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x8 (0-7, EGA 0-3)

Funkce 03h - Nastavení znakové sady pro 512 znaků
-------------------------------------------------
Popis: Tato funkce vytvoří v textových režimech znakovou
       sadu s 512 znaky. Změní význam bitu 3 atributu
       - místo intenzity barvy bude vybírat ze dvou
       znakových bloků (každý po 256 znacích).

Vstup: AH = 11h  Číslo služby
       AL = 03h  Číslo funkce
       BL = bity 0,1,4 - používaný znakový blok, pokud je
                       bit 3 atributu = 0
            bity 2,3,5 - používaný znakový blok, pokud je
                       bit 3 atributu = 1

Poznámka: Bity 4 a 5 používá pouze VGA, která má k dispozici
       8 znakových bloků.

Funkce 04 - Nahrání 16řádkového ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakové sady 8x16 do
       některého ze znakových bloků.

Poznámka: Tato funkce inicializuje zobrazovací mód.

Vstup: AH = 11h  Číslo služby
       AL = 04h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x16 (0-7)

Následující 4 funkce (10h, 11h, 12h, 14h) jsou velmi podobné
funkcím (00h, 01h, 02h a 04h). Je tu však několik rozdílů.
Tyto funkce musejí být volány ihned po nastavení
zobrazovacího módu, aktivní zobrazovací stránka musí být 0.
Funkce dále přepočítá počet byte na znak, počet řádků na
obrazovce a délku zobrazovacího bufferu. Změní také
následující CRTC registry:
/------------------------------------------------------------\
|  Registr | Nový obsah                  | Význam            |
|----------+-----------------------------+-------------------|
|  09h1    | počet byte na znak - 1      | max. scan řádka   |
|----------+-----------------------------+-------------------|
|  0ah     | počet byte na znak - 2      | začátek kurzoru   |
|----------+-----------------------------+-------------------|
|  0bh     | 0                           | konec kurzoru     |
|----------+-----------------------------+-------------------|
|  12h     | (počet řádků + 1) *         | vertikální konec  |
|          |  * (počet byte na znak) - 1 |  obrazovky        |
|----------+-----------------------------+-------------------|
|  14h2    | počet byte na znak          | pozice podtržení  |
\------------------------------------------------------------/
     1) Tento registr je přepočítáván pouze pro mód 07h
     2) Toto je chyba v EGA/VGA BIOS. Měla by zde být
        hodnota o 1 nižší. Při tomto nastavení nebude
        podtržení (pokud je to nastaveno pomocí atributu)
        viditelné.

Funkce 10h - Načtení uživatelem definované znakové sady
-------------------------------------------------------
Popis: Tato funkce nahradí implicitní znakovou sadu (nebo
       její část) v některém ze znakových bloků uživatelem
       definovanou znakovou sadou.

Vstup: AH = 11h  Číslo služby
       AL = 10h  Číslo funkce
       BL = Číslo znakového bloku k předefinování (0-7, EGA 0-3)
       BH = Počet byte na jeden znak (nejčastěji 8, 14, 16)
       CX = Počet definovaných znaků
       DX = ASCII kód prvního znaku v uživatelem definované
                       znakové tabulce
       ES = Segment, ve kterém je uživatelem definovaná
                       znaková sada
       BP = Offset uživatelovy znakové sady

Funkce 11h - Nahrání 14řádkového ROM fontu do zn. bloku
-------------------------------------------------------
Popis: Tato funkce nahraje definici znakové sady 8x14 do
       některého ze znakových bloků.

Vstup: AH = 11h  Číslo služby
       AL = 11h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x14 (0-7, EGA 0-3)

Funkce 12h - Nahrání 8řádkového ROM fontu do zn. bloku
------------------------------------------------------
Popis: Tato funkce načte definici znakové sady 8x8 do
       některého ze znakových bloků.

Vstup: AH = 11h  Číslo služby
       AL = 12h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x8 (0-7, EGA 0-3)

Funkce 14 - Nahrání 16řádkového ROM fontu do zn. bloku - pouze VGA
------------------------------------------------------------------
Popis: Tato funkce nahraje definici znakové sady 8x16 do
       některého ze znakových bloků.

Vstup: AH = 11h  Číslo služby
       AL = 14h  Číslo funkce
       BL = Číslo znakového bloku kam se má načíst ROM font
                       8x16 (0-7)

Následující funkce by měly být používány ihned po
inicializaci grafických režimů (předchozí funkce pracovaly
pouze v textových režimech).

Funkce 20h - Nastav uživatelský font 8x8 v grafice
--------------------------------------------------
Popis: Tato funkce nastaví INT 1fh tak, aby ukazoval na
       znakovou sadu 8x8 na znaky s ASCII kódy 128-255.
       Používá se převážně v kompatibilních režimech.
       Nastaví INT 1fh na hodnotu uloženou ES:BP.

Vstup: AH = 11h  Číslo služby
       AL = 20h  Číslo funkce
       ES = Segment obsahující definovanou znakovou sadu
       BP = Offset znakové sady

Function 21h - Nastavení uživatelského fontu pro grafické režimy
----------------------------------------------------------------
Popis: Tato funkce nastaví INT 43h na uživatelskou znakovou
       sadu.

Vstup: AH = 11h  Číslo služby
       AL = 21h  Číslo funkce
       BL = Počet řádků na obrazovce
            0 - uživatelem definováno (v registru DL)
            1 - 14 řádek
            2 - 25 řádek
            3 - 43 řádek
       CX = Počet byte na znak
       ES = Segment obsahující uživatelskou znakovou sadu
       BP = Offset uživatelské znakové sady

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

Vstup: AH = 11h  Číslo služby
       AL = 22h  Číslo funkce
       BL = Počet řádků na obrazovce
            0 - uživatelem definováno (v registru DL)
            1 - 14 řádek
            2 - 25 řádek
            3 - 43 řádek

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

Vstup: AH = 11h  Číslo služby
       AL = 23h  Číslo funkce
       BL = Počet řádků na obrazovce
            0 - uživatelem definováno (v registru DL)
            1 - 14 řádek
            2 - 25 řádek
            3 - 43 řádek

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

Vstup: AH = 11h  Číslo služby
       AL = 24h  Číslo funkce
       BL = Počet řádků na obrazovce
            0 - uživatelem definováno (v registru DL)
            1 - 14 řádek
            2 - 25 řádek
            3 - 43 řádek

Funkce 30h - Zjišťuje informace o fontu
---------------------------------------
Popis: Tato funkce vrací informace o požadovaném fontu
       (znakové sadě).

Poznámka: Fonty 9x14 a 9x16 jsou až na definice některých
       znaků shodné s fonty 8x14 a 8x16. Pouze u grafických
       symbolů (rámečky a blokové znaky) je osmý bod
       kopírován na pozici devátého, aby rámečky nebyly
       přerušované. U ostatních znaků zůstává místo
       devátého bodu vždy volné.


Vstup: AH = 11h  Číslo služby
       AL = 30h  Číslo 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 (horních 128
                             znaků)
            05h  Zjisti pointer na ROM 9x14 font
            06h  Zjisti pointer na ROM 8x16 font
            07h  Zjisti pointer na ROM 9x16 font

Výstup: CX = Počet byte na znak fontu, který je na obrazovce
                       (ne toho, na který se dotazujeme)
        DL = Počet řádků na obrazovce - 1 (VGA)
             Počet řádků na obrazovce (EGA)
        ES = Segment uložení požadovaného fontu
        BP = Offset uložení požadovaného fontu

Služba 12h - Alternativní výběr
===============================
Popis: Tato služba obasahuje funkce, které zjišťují aktuální
       nastavení adaptéru a mohou instalovat novou rutinu
       pro obsluhu stisknutí klávesy PrtScr. Na adaptérech
       VGA pak obsahuje ještě několik doplňkových funkcí.

Vstup: AH = 12h  Číslo služby

Funkce 10h - Zjištění informace o EGA
-------------------------------------
Popis: Zjistí aktuální konfiguraci grafické karty VGA nebo
       EGA. O VGA však nezjistí všechny údaje, pouze ty,
       která má VGA společné s EGA.

Vstup: AH = 12h  Číslo služby
       BL = 10h  Číslo funkce

Výstup: BH = 0  - aktivní je barevný mód (registry adaptéru
                       jsou na portech 3d?h)
             1  - aktivní je monochromatický mód (registry
                       adaptéru jsou na portech 3b?h)
        BL = Velikost instalované paměti na videokartě
                 0 =  64K
                 1 = 128K
                 2 = 192K
                 3 = 256K
        CH = Obsahuje kopii Feature Control registru
        CL = Nastavení switchů na kartě EGA
             (1 = OFF, 0 = ON)
             bit 0 - switch 1
             bit 1 - switch 2
             bit 2 - switch 3
             bit 3 - switch 4

Funkce 20h - Vyber alternativní rutinu pro tisk obrazovky
---------------------------------------------------------
Popis: Volání této funkce nahradí rutinu pro tisk obrazovky
       z ROM BIOS rutinou z EGA/VGA BIOS, která zvládá tisk
       i pro zobrazovací režimy s více než 25 řádky.

Vstup: AH = 12h  Číslo služby
       BL = 20h  Číslo funkce

Funkce 30h - Nastavení vertikálního rozlišení - pouze VGA
---------------------------------------------------------
Popis: Tato funkce nastaví vertikální rozlišení pro
       textový režim, který bude inicializován. Tato funkce
       umožňuje i na lepších grafických adaptérech,
       dosáhnout stejné kvality rozlišení jako na těch
       starších. CGA používá 200 řádek, MDA a EGA 350 a
       konečně VGA 400 řádek.

Vstup: AH = 12h  Číslo služby
       BL = 30h  Číslo funkce
       AL = 0  - 200 řádek
            1  - 350 řádek
            2  - 400 řádek

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 31h - Zapnutí/vypnutí nahrání palety - pouze VGA
-------------------------------------------------------
Popis: Tato funkce umožňuje zvolit, zda při inicializaci
       zobrazovacího režimu bude nahrána standardní paleta a
       nebo se v činnosti ponechá aktuální paleta. Na
       kartách EGA je aktuální paleta vždy přepsána
       standardní paletou.

Vstup: AH = 12h  Číslo služby
       BL = 31h  Číslo funkce
       AL = 0  - Povol přepisování aktuální palety
            1  - Zachovávej aktuální paletu

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 32h - Zapnutí/vypnutí přístupu do videopaměti - pouze VGA
----------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje přístup do
       videopaměti a k registrům videoadaptéru. Pokud se
       přístup do paměti zakáže, vzhled obrazovky ani obsah
       videopaměti se nezmění, ale zápisy a čtení do
       videopaměti budou ignorovány do té doby, než se
       zápis povolí.

Vstup: AH = 12h  Číslo služby
       BL = 32h  Číslo funkce
       AL = 0  - povol zápis
            1  - zakaž zápis

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 33h - Zapnutí/vypnutí přepočítávání na stupně šedi - pouze VGA
---------------------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje přepočítávání barev
       na odstíny šedi po inicializaci zobrazovacího módu a
       po změně registrů palety. Stávající hodnoty barevných
       složek budou určeny následujícími vztahy:
       R = 0.299 * R
       G = 0.587 * G
       B = 0.114 * B

Vstup: AH = 12h  Číslo služby
       BL = 33h  Číslo funkce
       AL = 0  - povol přepočítávání na stupně šedi
            1  - zakaž přepočítávání na stupně šedi

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 34h - Zapnutí/vypnutí emulace kurzoru - pouze VGA
--------------------------------------------------------
Popis: Tato funkce povoluje a zakazuje emulaci textového
       kurzoru. Pokud je emulace zapnuta, je informace o
       začátku a konci kurzoru přepočítána z původního
       rozsahu CGA 8 řádků na znak na aktuální počet řádků
       na znak. Pokud je emulace vypnutá, hodnoty se
       nepřepočítávají a bez úprav se použijí pro velikost
       kurzoru.

Vstup: AH = 12h  Číslo služby
       BL = 34h  Číslo funkce
       AL = 0  - povol emulaci kurzoru
            1  - zakaž emulaci kurzoru

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 35h - Přepínání monitorů - pouze VGA
-------------------------------------------
Popis: Tato funkce přepíná mezi adaptérem umístěným na desce
       počítače a externím, pokud mohou nastat nějaké
       problémy s adresováním nebo přístupem k portům. Pokud
       jsou v počítači dva adaptéry, externí je použit jako
       defaultní adaptér.

       Při první změně adptéru se musí volat dvě funkce po
       sobě (AL=0 a AL=1). Pro další přepínání se používají
       opět dvě volání. Nejprve AL=2, k vypnutí aktivního
       adaptéru a poté AL=3, k zapnutí neaktivního adaptéru.
       Program musí v paměti vyhradit dva 128 byte dlouhé
       buffery pro ukládání stavových informací adaptérů.

Vstup: AH = 12h  Číslo služby
       BL = 35h  Číslo funkce
       AL = 0  - První vypnutí externího adaptéru
                 ES:DX - ukazatel na 128 byte dlouhý buffer
                       pro uložení stavových informací adaptéru
            1  - První zapnutí grafické karty na desce
            2  - Vypni aktivní adaptér
                 ES:DX - ukazatel na 128 byte dlouhý buffer
                       pro uložení stavových informací adaptéru
            3  - Zapni neaktivní adaptér
                 ES:DX - ukazatel na 128 byte dlouhý buffer
                       s dříve uloženými stavovými informacemi

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Funkce 36h - Zapnutí/vypnutí obrazovky - pouze VGA
--------------------------------------------------
Popis: Tato funkce zapíná a vypíná obrazovku. Může být
       použita například jako jednoduchý šetřič obrazovky
       (screen saver). Nebo můžete vypnout obrazovku,
       vykreslit nějaký složitější obrázek. Pak obrazovku
       zapnout a obrázek se objeví celý najednou bez
       pomalého vykreslování.

Vstup: AH = 12h  Číslo služby
       BL = 36h  Číslo funkce
       AL = 0  - Zapnutí obrazovky (normálně)
            1  - Vypnutí obrazovky

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 12h  Pokud je funkce podporována adaptérem a
                             byla úspěšně provedena.

Služba 13h - Vypsání znakového řetězce na obrazovku
===================================================
Popis: Tato služba zobrazí řetězec znaků v paměti na
       obrazovku. Jsou dvě možnosti: řetězec v paměti
       obsahuje pouze znaky, jejich atribut bude určen
       registrem BL. Druhou možností je, uložit do paměti
       posloupnost znak, atribut, znak, atribut... Každý
       znak pak má definován svůj vlastní atribut. Můžete
       také určit zda se má kurzor přesunout na konec
       vypisovaného řetězce nebo jestli má zůstat na své
       původní pozici.

       Tato služba je podobná službě 0eh. Řídící znaky jako
       07h bell, 0dh CR, 0ah LF, 08h BS nejsou zobrazovány
       jako znaky, ale je provedena jim odpovídající činnost
       (pípnutí, přesun kurzoru na začátek řádky, posun
       kurzoru o řádek dolů a smazání posledního znaku).

Vstup: AH = 13h  Číslo služby
       AL = bit 0 = 0  - kurzor není přesouván
                  = 1  - kurzor je přesunut na konec řetězce
            bit 1 = 0  - řetězec obsahuje pouze znaky
                    1  - řetězec obsahuje i atributy
       BL = Atribut znaků řetězce (Pokud bit 1 registru AL
                             je 0)
       BH = Číslo obrazové stránky (viz. služba 05h)
       CX = Počet znaků (nezapočítavají se atributy)
       DX = Souřadnice prvního znaku
               DH - Řádka
               DL - Sloupec
       ES = Segment řetězce k vypsání
       BP = Offset řetězce k vypsání

Služba 1ah - Čtení/zápis kombinace monitorů - pouze VGA
=======================================================
Popis: Tato umožňuje zjistit a nastavit kódy, které určují
       typ primárního a sekundárního displeje.

Vstup: AH = 1ah  Číslo služby

       Tabulka kódů kombinací monitorů:
       /---------------------------------------\
       |Kód | Druh monitoru                    |
       |----+----------------------------------|
       |00h | Monitor není připojen            |
       |01h | MDA                              |
       |02h | CGA                              |
       |04h | EGA s barevným monitorem         |
       |05h | EGA s monochromatickým monitorem |
       |06h | PGC                              |
       |07h | VGA s monochromatickým monitorem |
       |08h | VGA s barevným monitorem         |
       |0ah | MCGA s digitálním monitorem      |
       |0bh | MCGA s monochromatickým monitorem|
       |0ch | MCGA s barevným monitorem        |
       |ffh | Neznámý typ monitoru             |
       \---------------------------------------/

Funkce 00h - Čtení kombinace monitorů - pouze VGA
-------------------------------------------------
Popis: Zjistí aktuální konfiguraci monitorů.

Vstup: AH = 1ah  Číslo služby
       AL = 00h  Číslo funkce

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1ah  Volání funkce proběhlo úspěšně
        BH = Kód sekundárního displeje
        BL = Kód aktivního displeje

Funkce 01h - Nastavení kombinace monitorů - pouze VGA
-----------------------------------------------------
Popis: Nastaví aktuální konfiguraci monitorů.

Vstup: AH = 1ah  Číslo služby
       AL = 01h  Číslo funkce
       BH = Kód sekundárního displeje
       BL = Kód aktivního displeje

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1ah  Volání funkce proběhlo úspěšně

Služba 1bh - Zjištění stavových informací - pouze VGA
=====================================================
Popis: Tato služba zjistí informace o aktuálním nastavení
       grafického adaptéru. Před voláním této služby musíte
       v paměti vyhradit 64 byte pro uložení informací.

Vstup: AH = 1bh  Číslo služby
       BX = Typ implementace (musí být 0)
       ES = Segment, ve kterém je vymezených 64 byte paměti
       DI = Offset 1. byte vymezené paměti

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1bh  Volání funkce proběhlo úspěšně

Formát tabulky na adrese ES:DI (délka 64 byte):
/-----------------------------------------------------------\
|Offset | Velikost | Popis                                  |
|-------+----------+----------------------------------------|
|  00h  |  1 word  | Offset statické tabulky režimu         |
|-------+----------+----------------------------------------|
|  02h  |  1 word  | Segment statické tabulky režimu        |
|-------+----------+----------------------------------------|
|  04h  |  1 byte  | Číslo aktuálního zobrazovacího režimu  |
|-------+----------+----------------------------------------|
|  05h  |  1 word  | Počet zobrazitelných textových sloupců |
|-------+----------+----------------------------------------|
|  07h  |  1 word  | Velikost zabrazované paměti video      |
|       |          | adaptéru                               |
|-------+----------+----------------------------------------|
|  09h  |  1 word  | Počáteční adresa videopaměti           |
|-------+----------+----------------------------------------|
|  0bh  |  1 word  | Pozice kurzoru v zobrazovací stránce 0 |
|       |          | (Vyšší byte - řádka,                   |
|       |          |  nižžsí byte - sloupec)                |
|-------+----------+----------------------------------------|
|  0dh  |  1 word  | Pozice kurzoru v zobrazovací stránce 1 |
|-------+----------+----------------------------------------|
|  0fh  |  1 word  | Pozice kurzoru v zobrazovací stránce 2 |
|-------+----------+----------------------------------------|
|  11h  |  1 word  | Pozice kurzoru v zobrazovací stránce 3 |
|-------+----------+----------------------------------------|
|  13h  |  1 word  | Pozice kurzoru v zobrazovací stránce 4 |
|-------+----------+----------------------------------------|
|  15h  |  1 word  | Pozice kurzoru v zobrazovací stránce 5 |
|-------+----------+----------------------------------------|
|  17h  |  1 word  | Pozice kurzoru v zobrazovací stránce 6 |
|-------+----------+----------------------------------------|
|  19h  |  1 word  | Pozice kurzoru v zobrazovací stránce 7 |
|-------+----------+----------------------------------------|
|  1bh  |  1 byte  | Počáteční řádka kurzoru                |
|-------+----------+----------------------------------------|
|  1ch  |  1 byte  | Koncová řádka kurzoru                  |
|-------+----------+----------------------------------------|
|  1dh  |  1 byte  | Aktivní zobrazovací stránka            |
|-------+----------+----------------------------------------|
|  1eh  |  1 word  | Adresa portů, na kterých jsou mapovány |
|       |          | CRTC registry                          |
|-------+----------+----------------------------------------|
|  20h  |  1 byte  | Hodnota registru 3?8h                  |
|-------+----------+----------------------------------------|
|  21h  |  1 byte  | Hodnota registru 3?9h                  |
|-------+----------+----------------------------------------|
|  22h  |  1 byte  | Počet zobrazitelných textových řádek   |
|-------+----------+----------------------------------------|
|  23h  |  1 byte  | Výška znaku v pixelech (počet byte na  |
|       |          | znak)                                  |
|-------+----------+----------------------------------------|
|  25h  |  1 byte  | Kód primárního displeje                |
|       |          | (viz. tabulka kódu kombinací monitorů) |
|-------+----------+----------------------------------------|
|  26h  |  1 byte  | Kód sekundárního displeje              |
|       |          | (viz. tabulka kódu kombinací monitorů) |
|-------+----------+----------------------------------------|
|  27h  |  1 word  | Počet barev zobrazitelných v aktuálním |
|       |          | zobrazovacím režimu                    |
|-------+----------+----------------------------------------|
|  29h  |  1 byte  | Počet dostupných zobrazovacích stránek |
|       |          | v aktuálním zobrazovacím režimu        |
|-------+----------+----------------------------------------|
|  2ah  |  1 byte  | Počet rastrových řádek na obrazovce:   |
|       |          |         0 - 200 řádek                  |
|       |          |         1 - 350 řádek                  |
|       |          |         2 - 400 řádek                  |
|       |          |         3 - 480 řádek                  |
|-------+----------+----------------------------------------|
|  2bh  |  1 byte  | Číslo primárního znakového bloku       |
|-------+----------+----------------------------------------|
|  2ch  |  1 byte  | Číslo sekundárního znakového bloku     |
|-------+----------+----------------------------------------|
|  2dh  |  1 byte  | Informace o obrazovém systému:         |
|       |          | Bit   Popis (když bit = 1)             |
|       |          | ---   ---------------------------------|
|       |          |  0    Podporuje všechny módy           |
|       |          |  1    Barvy jsou přepočítávány na      |
|       |          |         odstíny šedi                   |
|       |          |  2    Připojen je monochromatický      |
|       |          |         monitor                        |
|       |          |  3    Není nahrávána standardní paleta |
|       |          |  4    Emulace CGA kurzoru              |
|       |          |  5    1 = blikání, 0 = intenzita barvy |
|       |          |         pozadí                         |
|       |          | 6-7   Vyhrazeno                        |
|-------+----------+----------------------------------------|
|  2eh  |  3 byte  | Vyhrazeno                              |
|-------+----------+----------------------------------------|
|  31h  |  1 byte  | Velikost dostupné videopaměti          |
|       |          |         0 -  64K                       |
|       |          |         1 - 128K                       |
|       |          |         2 - 192K                       |
|       |          |         3 - 256K                       |
|-------+----------+----------------------------------------|
|  32h  |  1 byte  | Doplňkové informace o zobrazovači      |
|       |          | Bit   Popis (když bit = 1)             |
|       |          | ---   ---------------------------------|
|       |          |  0    Je používána 512znaková sada     |
|       |          |  1    Je používána oblast pro uložení  |
|       |          |         palety                         |
|       |          |  2    Je používána uživatelem          |
|       |          |         definovaná znaková sada        |
|       |          |  3    V grafickém režimu je používána  |
|       |          |         uživatelem definovaná znaková  |
|       |          |         sada                           |
|       |          |  4    Je používána uživatelem          |
|       |          |         definovaná paleta              |
|       |          |  5    Je používána podpora             |
|       |          |         dvou-monitorového systému      |
|       |          | 6-7   Rezervováno                      |
|-------+----------+----------------------------------------|
|  33h  | 13 byte  | Rezervováno                            |
\-----------------------------------------------------------/

Formát statické tabulky režimu (délka 16 byte):
/-----------------------------------------------------------\
|Offset | Velikost|  Popis                                  |
|-------+---------+-----------------------------------------|
|  00h  |  1 byte |  Podporované videomódy                  |
|       |         |  bit 0 = 1  Mód 0 je podporován         |
|       |         |  bit 1 = 1  Mód 1 je podporován         |
|       |         |  bit 2 = 1  Mód 2 je podporován         |
|       |         |  bit 3 = 1  Mód 3 je podporován         |
|       |         |  bit 4 = 1  Mód 4 je podporován         |
|       |         |  bit 5 = 1  Mód 5 je podporován         |
|       |         |  bit 6 = 1  Mód 6 je podporován         |
|       |         |  bit 7 = 1  Mód 7 je podporován         |
|-------+---------+-----------------------------------------|
|  01h  |  1 byte |  Podporované videomódy                  |
|       |         |  bit 0 = 1  Mód 8 je podporován         |
|       |         |  bit 1 = 1  Mód 9 je podporován         |
|       |         |  bit 2 = 1  Mód 0ah je podporován       |
|       |         |  bit 3 = 1  Mód 0bh je podporován       |
|       |         |  bit 4 = 1  Mód 0ch je podporován       |
|       |         |  bit 5 = 1  Mód 0dh je podporován       |
|       |         |  bit 6 = 1  Mód 0eh je podporován       |
|       |         |  bit 7 = 1  Mód 0fh je podporován       |
|-------+---------+-----------------------------------------|
|  02h  |  1 byte |  Podporované videomódy                  |
|       |         |  bit 0 = 1  Mód 10h je podporován       |
|       |         |  bit 1 = 1  Mód 11h je podporován       |
|       |         |  bit 2 = 1  Mód 12h je podporován       |
|       |         |  bit 3 = 1  Mód 13h je podporován       |
|-------+---------+-----------------------------------------|
|  03h  |  4 byte |  Rezervováno                            |
|-------+---------+-----------------------------------------|
|  07h  |  1 byte |  Počet rastrových řádek v textových     |
|       |         |  režimech: bit 0 = 1 - 200 řádek        |
|       |         |            bit 1 = 1 - 350 řádek        |
|       |         |            bit 2 = 1 - 400 řádek        |
|-------+---------+-----------------------------------------|
|  08h  |  1 byte |  Celkový počet znakových bloků v        |
|       |         |  textových režimech                     |
|-------+---------+-----------------------------------------|
|  09h  |  1 byte |  Maximální počet najednou používaných   |
|       |         |  znakových bloků v textových režimech   |
|-------+---------+-----------------------------------------|
|  0ah  |  1 byte |  Doplňkové informace                    |
|       |         |  Bit   Popis (když bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Lze používat všechny zobr. módy  |
|       |         |   1    Je podporováno přepočítávání     |
|       |         |          barev na odstíny šedi          |
|       |         |   2    Je podporována uživatelem        |
|       |         |          definovaná znaková sada        |
|       |         |   3    Je podporovaná uživatelem        |
|       |         |          definovaná paleta              |
|       |         |   4    Je podporována emulace CGA       |
|       |         |          kurzoru                        |
|       |         |   5    Jsou přítomny registry palety EGA|
|       |         |   6    Jsou přítomny registry palety DAC|
|       |         |   7    Je podporováno několik sad DAC   |
|       |         |          registrů                       |
|-------+---------+-----------------------------------------|
|  0bh  |  1 byte |  Doplňkové informace                    |
|       |         |  Bit   Popis (když bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Podpora světelného pera          |
|       |         |   1    Podpora služby 1ch               |
|       |         |   2    Podpora volby mezi intenzitou    |
|       |         |          pozadí a blikáním              |
|       |         |   3    Je podporován kód kombinace      |
|       |         |          monitorů                       |
|       |         |  4-7   Rezervováno                      |
|-------+---------+-----------------------------------------|
|  0ch  |  1 word |  Rezervováno                            |
|-------+---------+-----------------------------------------|
|  0eh  |  1 byte |  Příznaky uchovávání nastavení          |
|       |         |  Bit   Popis (když bit = 1)             |
|       |         |  ---   ---------------------------------|
|       |         |   0    Uchovává se 512znaková sada      |
|       |         |   1    Uchovává se aktuální paleta      |
|       |         |   2    Uživatelem definovaná zn. sada   |
|       |         |   3    Uživatelem definovaná zn. sada v |
|       |         |          grafických režimech            |
|       |         |   4    Uživatelem definovaná paleta     |
|       |         |   5    Podpora dvou-monitorového systému|
|       |         |  6-7   Rezervováno                      |
|-------+---------+-----------------------------------------|
|  0fh  |  1 byte |  Rezervováno                            |
\-----------------------------------------------------------/

Služba 1ch - Uložení/obnovení aktuálního nastavení adaptéru - pouze VGA
=======================================================================
Popis: Tato služba ukládá a opět obnovuje nastavení
       grafického adaptéru a aktuálního zobrazovacího režimu
       (BIOS oblast, registry adaptéru, registry palety).
       Program musí v paměti vyhradit místo pro uložení
       informací. Požadovanou velikost bufferu vrací funkce
       00h.

Poznámka: Registr CX definuje co se bude ukládat. Každý bit
       definuje jednu část k ukládání. Pro uložení všech tří
       skupin informací použijte CX = 7.

Funkce 00h - Zjištěni velikosti bufferu - pouze VGA
---------------------------------------------------
Vstup: AH = 1ch  Číslo služby
       AL = 00h  Číslo funkce
       CX = Určení informací k uložení/nastavení
            (pokud se bit = 1, s informací se pracuje)
            Bit 0 - registry grafického adaptéru
            Bit 1 - datová oblast BIOS
            Bit 2 - registry palety a DAC registry

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1ch  Funkce je podporována
        BX = Velikost bufferu (v 64 byte slouhých blocích)

Funkce 01h - Uložení nastavení - pouze VGA
------------------------------------------
Vstup: AH = 1ch  Číslo služby
       AL = 01h  Číslo funkce
       ES = Segment ukládací oblasti (bufferu)
       BX = Offset ukládací oblasti (bufferu)
       CX = Určení informací k uložení/nastavení
            (pokud se bit = 1, s informací se pracuje)
            Bit 0 - registry grafického adaptéru
            Bit 1 - datová oblast BIOS
            Bit 2 - registry palety a DAC registry

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1ch   Funkce je podporována

Funkce 02h - Obnovení nastavení - pouze VGA
-------------------------------------------
Vstup: AH = 1ch  Číslo služby
       AL = 02h  Číslo funkce
       ES = Segment ukládací oblasti (bufferu)
       BX = Offset ukládací oblasti (bufferu)
       CX = Určení informací k uložení/nastavení
            (pokud se bit = 1, s informací se pracuje)
            Bit 0 - registry grafického adaptéru
            Bit 1 - datová oblast BIOS
            Bit 2 - registry palety a DAC registry

Výstup: Bude v registrech obsažen po zavolání služby
        AL = 1ch   Funkce je podporována

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


Copyright © Jiří Kosek