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