Rozšíření VESA BIOS

     S tím jak vzrůstaly požadavky na kvalitu zobrazovaných
informací, se zdokonalovaly grafické adaptéry. Téměř každý
výrobce grafického hardware vyráběl svůj vlastní adaptér
Super VGA, který poskytoval větší rozlišení a větší počet
barev než standardní VGA. Došlo tedy k situaci, kdy co
výrobce to jiná organizace paměti, jiné zobrazovací módy,
jiná struktura registrů grafické karty. Výsledkem byla
naprostá nekompatibilita těchto karet v módech s vyšším
rozlišením, než je definováno standardem VGA. V roce 1989
tedy vznikl standard VESA verze 1.0, který stanovil šest
volání VESA BIOS. Tato volání slouží k zjištění informací,
které jsou potřebné při použití módů s vyšším rozlišením.
Později ještě přibyly dvě volání ve verzi 1.1 a jedno ve
verzi 1.2. Samozřejmě pokud budete používat pouze volání
z verze 1.0, budou vaše programy pracovat i na všech vyšších
verzí (VESA BIOS tedy zachovává zpětnou kompatibilitu).
     V současné době vzrůstá počet grafických adaptérů,
které mají v paměti ROM umístěn VESA BIOS společně s VGA
BIOS. Někteří výrobci dodávají rozšíření o VESA ve formě
rezidentního programu, který obslouží příslušné požadavky na
volání VESA BIOS. Tento program pracuje tak, že po svém
zavedení na sebe přesměruje INT 10h. Pokud je pak vyvolán
INT 10h, tento ovladač zkontroluje zda jde o volání VESA.
Pokud ne, postoupí zpracování interruptu jeho původní
obsluze (tj. zavolá BIOS). Pokud jde o volání VESA,
rezidentní program sám provede požadovanou činnost.
     Pokud budete chtít používat VESA VGA zobrazovací módy
ve svých programech, měli byste nejprve zkontrolovat
přítomnost VESA BIOS. K tomu slouží služba 4f00h. V
assembleru by volání této služby mohlo vypadat následovně:
     mov   AX, InfoSegment
     mov   ES, AX
     mov   DI, InfoOffset
     mov   AX, 4f00h
     int   10h
Po zavolání každé VESA služby obdržíte v registru AX
návratový kód. Pokud je tento návratový kód 0045h, proběhlo
volání služby v pořádku a váš adaptér podporuje VESA.

Služba 4f00h - Zjištění informací o VESA Super VGA módech
=========================================================
Popis: Tato služba zjišťuje přítomnost grafické karty
       podporující VESA. Zjišťuje informace o grafické
       kartě, které jsou specifické u každého výrobce.
       Podrobnější informace o jednotlivých grafických
       módech můžete zjistit pomocí služby 4501h.

       Před voláním této služby musíte v paměti vyhradit 256
       byte dlouhý blok pro uložení zjišťovaných informací.

Vstup: AX = 4f00h  Číslo služby
       ES = Segment 256 byte dlouhého bufferu
       DI = Offset 256 byte dlouhého bufferu

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Služba byla úspěšně provedena

       Formát tabulky na adrese ES: DI je následující:
      /------------------------------------------------------\
      | Offset | Velikost | Popis                            |
      |--------+----------+----------------------------------|
      | 00h    | 4 byte   | Identifikace podpory VESA -      |
      |        |          | řetězec "VESA"                   |
      |--------+----------+----------------------------------|
      | 04h    | 1 word   | Verze VESA rozšíření             |
      |--------+----------+----------------------------------|
      | 06h    | 4 byte   | Ukazatel na tabulku s            |
      |        |          | informacemi specifickými pro     |
      |        |          | výrobce                          |
      |--------+----------+----------------------------------|
      | 0ah    | 4 byte   | Možnosti (zatím nedefinováno)    |
      |--------+----------+----------------------------------|
      | 0eh    | 4 byte   | Ukazatel na tabulku obsahující   |
      |        |          | seznam podporovaných             |
      |        |          | zobrazovacích režimů.            |
      |--------+----------+----------------------------------|
      | 12h    | 1 word   | Počet instalovaných bloků paměti |
      |        |          | na videoadaptéru v 64K blocích.  |
      |        |          | (Od verze 1.1.)                  |
      |--------+----------+----------------------------------|
      | 14h    | 236 byte | Rezervováno                      |
      \------------------------------------------------------/

       Identifikace bude vždy nastavena na VESA. Pokud se
       tedy chcete ujistit o tom, zda opravdu máte VESA
       kartu, zkontrolujte tento údaj.

       Číslo VESA verze je uloženo ve dvou bytech.
       Významnější z nich obsahuje hlavní číslo verze a méně
       významný z nich vedlejší čílo verze:
          0100h        verze 1.0
          0101h        verze 1.1
          0102h        verze 1.2
       Všechny verze zachovávají a budou zachovávat zpětnouu
       kompatibilitu s verzí 1.0.

       Formát informací specifických pro výrobce není nijak
       určen. Většinou jde o ASCIIZ string (tj. textový
       řetězec ukončený znakem s ASCII kódem 0), který
       obsahuje název výrobce, případně nějaké další
       informace o grafickém adaptéru.

       Tabulka je tvořena po sobě jdoucími hodnotami typu
       word (ty určují číslo podporovaného zobrazovacího
       režimu). Tabulka je ukončená hodnotou 0ffffh.
       Jednotlivé módy jsou podrobněji popsány v popisu
       služby 4f02h.

       VESA BIOS od verze 1.1 vrací velikost instalované
       videopaměti na adaptéru. Tato velikost je v 64K
       blocích. Adaptér, který má 1MB paměti, zde bude mít
       tedy umístěnu hodnotu 16 (16*64K=1MB).

Služba 4f01 - Zjištění informací o Super VGA módu
==================================================
Popis: Tato služba zjišťuje informace o určitém zobrazovacím
       režimu. Dostupné zobrazovací režimy můžete zjistit
       pomocí služby 4f00h. Před zavoláním služby musíte
       v paměti vyhradit 256 byte dlouhý buffer pro uložení
       zjišťovaných informací.

Vstup: AX = 4f01h  Číslo služby
       CX = Číslo Super VGA zobrazovacího módu
       ES = Segment 256 byte dlouhého bufferu
       DI = Offset 256 byte dlouhého bufferu

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Služba byla úspěšně provedena

       Formát tabulky informací na adrese ES: DI je
       následující:
      /----------------------------------------------------\
      | Offset | Velikost | Popis                          |
      |--------+----------+--------------------------------|
      | 00h    | 1 word   | Atributy zobrazovacího režimu1)|
      |--------+----------+--------------------------------|
      | 02h    | 1 byte   | Atributy okna A 2)             |
      |--------+----------+--------------------------------|
      | 03h    | 1 byte   | Atributy okna B 2)             |
      |--------+----------+--------------------------------|
      | 04h    | 1 word   | Granularita okna v K 3)        |
      |--------+----------+--------------------------------|
      | 06h    | 1 word   | Velikost okna v K 4)           |
      |--------+----------+--------------------------------|
      | 08h    | 1 word   | Segment začátku okna A 5)      |
      |--------+----------+--------------------------------|
      | 0ah    | 1 word   | Segment začátku okna B 5)      |
      |--------+----------+--------------------------------|
      | 0ch    | 4 byte   | Adresa volání služby 4f05h 6)  |
      |--------+----------+--------------------------------|
      | 10h    | 1 word   | Počet byte na jednu scan řádku |
      \----------------------------------------------------/

        Následující blok informací se používá výrobci
        k popsání zobrazovacích režimů, které nejsou přímo
        obsaženy ve VESA standardu. Tento blok je ve
        výstupních informacích obsažen, pokud je nastaven
        bit 1 atributu zobrazovacího režimu.
      /----------------------------------------------------\
      | Offset | Velikost | Popis                          |
      |--------+----------+--------------------------------|
      | 12h    | 1 word   | Horizontální rozlišení 7)      |
      |--------+----------+--------------------------------|
      | 14h    | 1 word   | Vertikální rozlišení 7)        |
      |--------+----------+--------------------------------|
      | 16h    | 1 byte   | Šířka znaku v pixelech         |
      |--------+----------+--------------------------------|
      | 17h    | 1 byte   | Výška znaku v pixelech         |
      |--------+----------+--------------------------------|
      | 18h    | 1 byte   | Počet bitových rovin           |
      |--------+----------+--------------------------------|
      | 19h    | 1 byte   | Celkový počet bitů na jeden    |
      |        |          | pixel 8)                       |
      |--------+----------+--------------------------------|
      | 1ah    | 1 byte   | Počet paměťových bank 9)       |
      |--------+----------+--------------------------------|
      | 1bh    | 1 byte   | Typ modelu paměti 10)          |
      |--------+----------+--------------------------------|
      | 1ch    | 1 byte   | Velikost paměťové banky v K    |
      |--------+----------+--------------------------------|
      | 1dh    | 1 byte   | Počet obrazových stránek       |
      |        |          | (Od verze 1.1.)                |
      |--------+----------+--------------------------------|
      | 1eh    | 1 byte   | Rezervováno (obsahuje 0)       |
      |----------------------------------------------------|
      | Počínaje offsetem 1fh jsou popsané informace       |
      | vraceny až od verze 1.2 VESA.                      |
      |----------------------------------------------------|
      | 1fh    | 1 byte   | Velikost červené masky         |
      |--------+----------+--------------------------------|
      | 20h    | 1 byte   | Pozice červené položky         |
      |--------+----------+--------------------------------|
      | 21h    | 1 byte   | Velikost zelené masky          |
      |--------+----------+--------------------------------|
      | 22h    | 1 byte   | Pozice zelené masky            |
      |--------+----------+--------------------------------|
      | 23h    | 1 byte   | Velikost modré masky           |
      |--------+----------+--------------------------------|
      | 24h    | 1 byte   | Pozice modré masky             |
      |--------+----------+--------------------------------|
      | 25h    | 1 byte   | Velikost rezervované masky     |
      |--------+----------+--------------------------------|
      | 26h    | 1 byte   | Pozice rezervované masky       |
      |--------+----------+--------------------------------|
      | 27h    | 1 byte   | Informace o přímém barevném    |
      |        |          | módu                           |
      |--------+----------+--------------------------------|
      | 28h    | 1 byte   | Rezervováno (obsahuje 0)       |
      \----------------------------------------------------/

    1)  Atribut zobrazovacího režimu má nasledující
        strukturu:
      /-----------------------------------------------------\
      | Bit   |  Popis                                      |
      |-------+---------------------------------------------|
      | 0     |  Nastaven na 1, pokud grafický adaptér      |
      |       |  podporuje zvolený zobrazovací režim.       |
      |-------+---------------------------------------------|
      | 1     |  Nastaven na 1, pokud jsou vraceny i        |
      |       |  rozšiřující informace výrobce.             |
      |-------+---------------------------------------------|
      | 2     |  Nastaven na 1, pokud standardní služby BIOS|
      |       |  podporují tento zobrazovací režim (zápis   |
      |       |  znaku, bodu, řetězce...). Pokud tedy chcete|
      |       |  zároveň používat VESA Super VGA módy a     |
      |       |  rutiny BIOS, zkontrolujte nejprve pomocí   |
      |       |  tohoto bitu, zda je to vůbec možné.        |
      |-------+---------------------------------------------|
      | 3     |  Nastaven na 1, pokud je zobrazovací režim  |
      |       |  barevný.                                   |
      |-------+---------------------------------------------|
      | 4     |  Nastaven na 1, pokud je zvolený zobrazovací|
      |       |  režim grafický.                            |
      |-------+---------------------------------------------|
      | 5-15  |  Rezervováno                                |
      \-----------------------------------------------------/

    2)  Atributy oken jsou uloženy následujícím způsobem:
      /-----------------------------------------------------\
      | Bit    | Popis                                      |
      |--------+--------------------------------------------|
      | 0      | Nastaven na 1, pokud okno existuje         |
      |--------+--------------------------------------------|
      | 1      | Nastaven na 1, pokud je okno určené pro    |
      |        | čtení                                      |
      |--------+--------------------------------------------|
      | 2      | Nastaven na 1, pokud je okno určené pro    |
      |        | zápis                                      |
      |--------+--------------------------------------------|
      | 3-7    | Rezervováno                                |
      \-----------------------------------------------------/
        Hodnoty 7 a 0 určují jednoduché okno (single
        window), hodnoty 7 a 7 určují nepřekryvná okna
        (non-overlapping windows) a hodnoty 3 a 5 určují
        překryvná okna (overlapping windows). Pokud jsou obě
        hodnoty nulové zobrazovací režim nepoužívá oken.
        Podrobnější informace o různých druzích oken
        naleznete v popisu fyzické konstrukce adaptéru.

     3) Granularita okna je nejmenší krok, o který může být
        měněn offset počátku okna (ten je v K). Pokud by
        tedy granularita byla například 8K, musí být offset
        okna dělitelný 8K (tj. 0, 8K, 16K ...).

     4) Velikost okna je největší offset, ke kterému může
        procesor přistupovat v rámci okna.

     5) Segment začátku okna je segment, do kterého se
        mapuje videopaměť. Obvykle bývá 0a000h.

     6) Adresa volání služby 4f05h je adresou, na které
        začíná rutina vyvolaná službou 4f05h. Tato služba
        mění počáteční offset okna. Můžeme pomocí ní
        přepínat různá okna. Přímé volání této rutiny je
        rychlejší než její volání přes VESA BIOS. Narozdíl
        od volání přes VESA BIOS tato rutina nevrací žádný
        status v registru AX.

     7) Horizontální a vertikální rozlišení je v grafických
        módech udáváno v pixelech a v textových módech je
        dáno v počtu znaků.

     8) Počet bitů na jeden pixel určuje počet barev, které
        můžete v daném zobrazovacím režimu používat. Počet
        barev získáte tak, že dvojku umocníte na toto číslo
        (8 bitů na pixel => 28=256 barev).

     9) Počet paměťových bank je používán v neobvyklých
        zobrazovacích režimech, kdy jsou zobrazovací řádky
        uloženy v různých paměťových bankách. Například CGA
        módy mají uloženy v jedné bance sudé řádky a v druhé
        liché. Pro tento mód by zde tedy byla hodnota 2. Pro
        většinu běžných módů je zde nula (tj. nepoužívají se
        paměťové banky).

    10) Typ modelu paměti je definován následovně:
      /-----------------------------------------------------\
      | Hodnota | Popis                                     |
      |---------+-------------------------------------------|
      | 0       | Textový režim                             |
      |---------+-------------------------------------------|
      | 1       | CGA grafika (2 paměťové banky)            |
      |---------+-------------------------------------------|
      | 2       | Herkules grafika (4 paměťové banky)       |
      |---------+-------------------------------------------|
      | 3       | 4 bitové roviny                           |
      |---------+-------------------------------------------|
      | 4       | 1 bitová rovina (1 bit = 1 pixel)         |
      |---------+-------------------------------------------|
      | 5       | 256 barev - 4 nezřetězené roviny          |
      |---------+-------------------------------------------|
      | 6       | True color (24 bitová grafika)            |
      |---------+-------------------------------------------|
      | 7-0fh   | Rezervováno pro VESA                      |
      |---------+-------------------------------------------|
      | >10h    | Rezervováno pro výrobce                   |
      \-----------------------------------------------------/

Služba 4f02h - Nastavení Super VGA módu
=======================================
Popis: Tato služba je obdou služby 0 pro standardní
       videomódy. Přepne grafický adaptér do specifikovaného
       Super VGA zobrazovacího režimu. Pokud je bit 15 čísla
       módu nastaven na 1, nesmaže se při inicializaci módu
       obrazovka.

Vstup: AX = 4f02h  Číslo služby
       BX = Číslo Super VGA módu

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Služba byla úspěšně provedena

        Tabulka Super VGA módů:
      /-----------------------------------------------------\
      | Mód    |  Rozlišení | Počet barev/popis             |
      |--------+------------+-------------------------------|
      | 6ah    |  800x600   | 16                            |
      | 100h   |  640x400   | 256                           |
      | 101h   |  640x480   | 256                           |
      | 102h   |  800x600   | 16                            |
      | 103h   |  800x600   | 256                           |
      | 104h   |  1024x768  | 16                            |
      | 105h   |  1024x768  | 256                           |
      | 106h   |  1280x1024 | 16                            |
      | 107h   |  1280x1024 | 256                           |
      | 108h   |  80x60     | Textový režim, od verze 1.1   |
      | 109h   |  132x25    | Textový režim, od verze 1.1   |
      | 10ah   |  132x43    | Textový režim, od verze 1.1   |
      | 10bh   |  132x50    | Textový režim, od verze 1.1   |
      | 10ch   |  132x60    | Textový režim, od verze 1.1   |
      | 10dh   |  320x200   | 32768, od verze 1.2           |
      | 10eh   |  320x200   | 65536, od verze 1.2           |
      | 10fh   |  320x200   | 16777216, od verze 1.2        |
      | 110h   |  640x480   | 32768, od verze 1.2           |
      | 111h   |  640x480   | 65536, od verze 1.2           |
      | 112h   |  640x480   | 16777216, od verze 1.2        |
      | 113h   |  800x600   | 32768, od verze 1.2           |
      | 114h   |  800x600   | 65536, od verze 1.2           |
      | 115h   |  800x600   | 16777216, od verze 1.2        |
      | 116h   |  1024x768  | 32768, od verze 1.2           |
      | 117h   |  1024x768  | 65536, od verze 1.2           |
      | 118h   |  1024x768  | 16777216, od verze 1.2        |
      | 119h   |  1280x1024 | 32768, od verze 1.2           |
      | 11ah   |  1280x1024 | 65536, od verze 1.2           |
      | 11bh   |  1280x1024 | 16777216, od verze 1.2        |
      \-----------------------------------------------------/

        11ch-7fffh            Rezervováno pro VESA
        14h-69h               Rezervováno pro výrobce
        6bh-7fh               Rezervováno pro výrobce

Služba 4f03h - Zjištění Super VGA módu
======================================
Popis: Tato služba zjišťuje aktuální zobrazovací režim
       (obdoba služby 0fh). Zjistí jak VESA režimy, tak
       standardní VGA režimy a výrobcem definované
       zobrazovací režimy.

Vstup: AX = 4f03h  Číslo služby

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Služba byla úspěšně provedena
        BX = Číslo zobrazovacího režimu

Služba 4f04h - Přečtení/Obnovení stavu Super VGA
================================================
Popis: Tato služba slouží k ukládání a obnovování informací
       o Super VGA grafickém adaptéru. Je podobná funkci
       1ch, ale navíc pracuje ještě s informacemi
       specifickými pro Super VGA. Před ukládáním informací
       musíte alokovat potřebný blok paměti. Jeho velikost
       můžete zjistit pomocí funkce 0 této služby.

       Podobně jako u služby 1ch můžete pomocí bitů registru
       CX specifikovat, s kterými informacemi si přejete
       pracovat. Nastavení příslušného bitu na jedna
       indikuje použití těchto informací.

Funkce 00h - Zjištění velikosti bufferu pro uložení informací
-------------------------------------------------------------
Popis: Zjišťuje velikost bufferu potřebného k uložení
       požadovaných informací. Velikost je vracena jako
       počet 64 byte dlouhých bloků paměti.

Vstup: AX = 4f04h  Číslo služby
       DL = 00h    Číslo funkce
       CX = Určení informací, se kterými se bude pracovat
             Bit   Popis
             ---   ----------------------------------
              0    Registry grafického adaptéru
              1    Datová oblast BIOS
              2    Registry palety a DAC registry
              3    Registry a data Super VGA adaptéru

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena
        BX = Potřebná velikost bufferu v 64byte blocích

Funkce 01h - Uložení nastavení
------------------------------
Popis: Uloží nastavení Super VGA adaptéru. Před voláním této
       funkce musíte v paměti vyhradit potřebný buffer pro
       informace (jeho velikost zjistíte pomocí funkce 00h
       služby 4f04h). Registry ES:BX musíte nastavit tak,
       aby ukazovaly na začátek bufferu. Registr CX
       specifikuje, které informace se mají uložit.

Vstup: AX = 4f04h  Číslo služby
       DL = 01h    Číslo funkce
       ES = Segment bufferu
       BX = Offset bufferu
       CX = Určení informací, se kterými se bude pracovat
             Bit   Popis
             ---   ----------------------------------
              0    Registry grafického adaptéru
              1    Datová oblast BIOS
              2    Registry palety a DAC registry
              3    Registry a data Super VGA adaptéru

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Funkce 02h - Obnovení nastavení
-------------------------------
Popis: Tato funkce obnoví nastavení Super VGA adaptéru podle
       informací, které předtím byly pomocí funkcí 01h
       uloženy. Registry ES:BX musíte nastavit tak, aby
       ukazovaly na začátek bufferu. Registr CX specifikuje,
       které informace se mají obnovit.

Vstup: AX = 4f04h  Číslo služby
       DL = 02h    Číslo funkce
       ES = Segment bufferu
       BX = Offset bufferu
       CX = Určení informací, se kterými se bude pracovat
             Bit   Popis
             ---   ----------------------------------
              0    Registry grafického adaptéru
              1    Datová oblast BIOS
              2    Registry palety a DAC registry
              3    Registry a data Super VGA adaptéru

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Služba 4f05h - Ovládání přístupu procesoru k oknům
==================================================
Popis: Tato služba slouží k nastavení a zjištění offsetu
       oken. Systém oken na Super VGA funguje systémem
       přepínání bank. Pouze část celé videopaměti je
       přístupná procesoru. Tato služba slouží k určení
       části videopaměti, která se objeví v okně. Příslušná
       část videopaměti je určena offsetem. Ten je zadáván
       v jednotkách granularita okna. Granularita je
       v různých režimech u různých výrobců různá.

Poznámka: K nastavení offsetu okna můžete použít přímé
          volání odpovídající funkce. Vektor této funkce
          zjistíte pomocí služby 4f01h. Tato služba vrací i
          další informace o organizaci oken nezbytné k
          správnému používání oken.

Funkce 00h - Nastavení offsetu okna
-----------------------------------
Popis: Nastaví offset okna. Offset okna musí být zadán v
       jednotkách granularita okna. Skutečný offset pak
       odpovídá zadávané hodnotě vynásobené granularitou
       okna.

Vstup: AX = 4f05h  Číslo služby
       BH = 00h    Číslo funkce
       BL = Číslo okna
            0 = Okno A
            1 = Okno B
       DX = Offset okna (v granularitě okna)

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Funkce 01 - Zjištění offsetu okna
---------------------------------
Popis: Zjistí offset okna. Výsledek je opět v granularitě.

Vstup: AX = 4f05h  Číslo služby
       BH = 01h    Číslo funkce
       BL = Číslo okna
            0 = Okno A
            1 = Okno B

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena
        DX = Offset okna

Služba 4f06h - Zjištění/nastavení délky scan řádky - od verze 1.1
=================================================================
Popis: Tato služba obsahuje dvě funkce. Jedna zjišťuje a
       druhá nastavuje délku scan řádky. Nastavení délky
       scan řádky na větší hodnotu než je její zobrazitelná
       délka nám umožní používat virtuální obrazku, tj.
       viditelná je pouze část celého obrazu. To lze
       uplatnit zejména při jemném plynulém scrolovaní
       obrazovky (to je umožněno službou 4f07h).

       Pokud zadáte nějakou nepřípustnou hodnotu (délka scan
       řádky je obvykle násobek 8), zaokrouhlí se vámi
       zadaná hodnota na nejbližší vyšší přípustnou hodnotu.

Funkce 00h - Nastavení délky scan řádky
---------------------------------------
Popis: Nastaví délku scan řádky. Délka se udává v pixelech.

Vstup: AX = 4f06h  Číslo služby
       BL = 00h    Číslo funkce
       CX = Nová délka scan řádky

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Funkce 01h - Zjištění délky scan řádky
--------------------------------------
Popis: Zjistí délku scan řádky a maximální počet scan řádek,
       tj. maximální virtuální vertikální rozlišení.

Vstup: AX = 4f06h  Číslo služby
       BL = 01h    Číslo funkce

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena
        BX = Počet byte v jedné scan řádce
        CX = Délka scan řádky v pixelech
        DX = Maximální počet scan řádek

Služba 4f07h - Zjištění/Nastavení počátku zobrazování - od verze 1.1
====================================================================
Popis: Tato služba obsahuje dvě funkce, které slouží
       k zjištění a nastavení počátku zobrazování. Tato
       služba umožňuje měnit viditelnou část velké virtuální
       obrazovky. Uplatní se pří scrolování obrazu nebo při
       přepínání mezi obrazovými stránkami.

       Posunutí od levého horního rohu je zadáno v pixelech.
       Pokud tuto službu chcete použít v textovém režimu,
       nezapomeňte vynásobit hodnoty v celých znacích
       patřičnou šířkou a výškou znaku v pixelech (obr. 1).

Funkce 00h - Nastavení počátku zobrazování
------------------------------------------
Popis: Tato funkce mění počátek zobrazování ve virtuální
       obrazovce. Hodnoty v registrech CX a DX udávají o
       kolik se zobrazovaný výřez ve virtuální obrazovce
       posune doprava a dolů oproti počátku (levý horní
       roh).

Vstup: AX = 4f07h  Číslo služby
       BL = 00h    Číslo funkce
       BH = 00h
       CX = Horizontální offset v pixelech
       DX = Vertikální offset v pixelech

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Funkce 01h - Zjištění počátku zobrazování
-----------------------------------------
Popis: Tato funkce zjistí offsety horizontálního a
       vertikálního posunu počátku zobrazování.

Vstup: AX = 4f07h  Číslo služby
       BL = 01h    Číslo funkce

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena
        BH = 00h
        CX = Aktuální horizontální offset v pixelech
        DX = Aktuální vertikální offset v pixelech

Služba 4f08h - Nastavení/Zjištění rozsahu základní barvy - od V1.2
==================================================================
Popis: Tato služba umožňuje zjistit a nastavit počet bitů,
       které určují intenzitu základní barvy. Základní barvy
       jsou tři: červená, modrá, zelená. Standardní VGA módy
       používají pro každou z těchto tří barev 6 bitů
       (konkrétní hodnoty jsou uloženy v DAC registrech).
       Celkem tedy 18 bitů. Výsledná zobrazitelná barva
       v tomto základním módu může mít tedy jeden
       z 218=262144 možných odstínů. Funkce této služby
       umožňují měnit počet barev, které lze v DAC
       registrech "namíchat". Nejde tedy o skutečný počet
       najednou zobrazitelný barev. Výsladná barva bodu je
       určena nepřímo pomocí palety.

Funkce 00h - Nastavení rozsahu základní barvy
---------------------------------------------
Popis: Nastaví počet "namíchatelných" barev.

Vstup: AX = 4f08h  Číslo služby
       BL = 00h    Číslo funkce
       BH = Počet bitů na jednu barvu

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena

Funkce 01h - Zjištění rozsahu základní barvy
--------------------------------------------
Popis: Zjistí počet dostupných barev.

Vstup: AX = 4f08h  Číslo služby
       BL = 01h    Číslo funkce

Výstup: Bude obsažen v registrech po zavolání služby.
        AX = 004fh  Funkce byla úspěšně provedena
        BH = Počet bitů na jednu základní barvu

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


Copyright © Jiří Kosek