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