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