Programovani grafickych karet EGA/VGA Doposud popsane zpusoby ovladani zobrazovani mely jednu velkou vyhodu. Tim, ze slo o sluzby BIOS, bylo zajisteno, ze program pouzivajici pouze tato volani, bude pracovat na libovolne graficke karte. Program obsahoval pouze volani sluzby BIOS a teprve ta provedla prislusnou cinnost na instalovanem adapteru. Nemuseli jste se tedy skoro vubec zajimat o to, jakou mate v systemu instalovanou grafickou kartu. Vypada to az prilis jednoduse. Je zde tedy nejaky hacek. Za ziskanou flexibilitu musite necim zaplatit. V tomto pripade neprichazite o koruny ani dolary z uctu, ale o rychlost. Protoze sluzby BIOS musi pracovat na vsech moznych grafickych kartach, nemohou optimalne vyuzivat vsechny schopnosti tak velkeho poctu karet. Musite se tedy rozhodnout zda preferujete rychlost ci prenositelnost. Ve druhem pripade muzete pouzit BIOS. V tom prvnim se musite podrobne seznamit z organizaci pameti videoadapteru a ovladanim jeho registru. Pokud pak chcete, aby nejaky vas program pracoval na vice ruznych zobrazovacich kartach, musite vytvorit nekolik jeho verzi. Tak, aby k jedne graficke karte prislusela jedna verze programu. Nejcasteji se programovani adapteru pouziva v grafickych zobrazovacich rezimech. Je to nutnost, protoze BIOS praci v techto rezimech temer nepodporuje (obsahuje pouze velice pomale rutiny pro zobrazeni bodu a pro zjisteni barvy bodu). Nez se vsak pustite do tvorby vlastnich programu pro ovladani adapteru, zjistete, zda vasim pozadavkum nevyhovuje nejaka z mnoha bezne dostupnych grafickych knihoven (BGI, TEGL, TGE ...). Muzete tak usetrit velke mnozstvi prace, ktera je jiz jednou hotova. Zjistite-li vsak, ze vam uvedene knihovny necim nevyhovuji, je prava chvile pro to, abyste zacali cist nasledujici odstavce. Meli byste v nich najit vse potrebne, pro psani programu pro karty EGA a VGA. Organizace pameti Jiste vite, ze na grafickem adapteru je obsazena pamet. Obvykle jsou VGA karty s pameti 256K, 512K a 1MB (nektere lepsi maji i 2 a vice MB pameti). I ta nejjednodussi karta VGA ma 256K pameti. V prostredi MS-DOS vsak pracuji vsechny procesory Intel v realnem rezimu, tzn. mohou adresovat pouze 1MB pameti. V tomto stisnenem pametovem prostoru musi byt misto pro MS-DOS, aplikacni programy, BIOS, Video BIOS a take samozrejme pro pamet grafickeho adapteru (viz obr. 2). Pro pamet grafickeho adapteru je vyhrazen pametovy prostor a000:0000 az b000:ffff, tj. 128K. To je, ale dvakrat mene nez ma nejjednodusi VGA karta. Adapter tedy pouziva ruzne metody organizece pameti tak, aby s vyhrazenym adresnim prostorem vystacil. Adapter do teto oblasti premapovava svoji pamet tak, aby byla data logicky a jednosuse usporadana. Skutecne ulozeni dat v pameti videoadapteru byva mnohem slozitejsi, ale nemusi nas prilis zajimat, protoze jeho mapovani je pro nas transparentni. V pripadech, kdy je vyhodne znat i toto vnitrni usporadani, bude popsano. Organizece pameti se pro textove a graficke rezimy lisi a bude tedy vysvetlena oddelene. Organizace pameti v textovych rezimech V textovych rezimech jsou v pameti ulozeny ASCII kody zobrazovanych znaku spolu s jejich atributy (barvou). Prvni dva byte pameti priluseji znaku v levem hornim rohu. Nasledujici slovo (2 byte) prislusi znaku napravo od znaku v levem hornim rohu. Znaky jsou v pameti tedy zaznamenany sekvencne tak, ze nejprve jsou ulozeny zleva doprava znaky a atributy prvniho radku, pak zleva doprava druheho radku atd. Informace o kazdem znaku je ulozena ve dvou byte. Prvni z nich obsahuje ASCII kod znaku a druhy atribut znaku (viz obr. 3). Atribut znaku ma nasledujici strukturu: /------------------------------------------------\ |blikani| barva pozadi | inten- | barva znaku | | | | zita | | |-------+----------------+--------+--------------| MSB | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | \------------------------------------------------/ Standardni prirazeni barev pro barevne monitory je nasledujici: Bity 4-6 (barva pozadi): ------------------------ 000 cerna 001 modra 010 zelena 011 tyrkysova 100 cervena 101 fialova 110 hneda 111 bila Bity 0-3 (barva znaku): ----------------------- 0000 cerna 0001 modra 0010 zelena 0011 tyrkysova 0100 cervena 0101 fialova 0110 hneda 0111 svetle seda 1000 tmave seda 1001 svetle modra 1010 svetle zelena 1011 svetle tyrkysova 1100 svetle cervena 1101 svetle fialova 1110 zluta 1111 bila Na monochromatickych monitorech (neni myslen cernobily monitor, ktery se u nas casto pouziva v kombinaci s VGA kartou) by barva pozadi mela byt bud 0 (cerna) nebo 111b=07h (barevna). Barva znaku 000b odpovida cerne, 001b - znak bude podtrzeny a 111b - znak bude barevny. Pro barevne rezimy (00h, 01h, 02h a 03h) zacina pamet obrazovky na adrese b800:0000. Pro monochromaticke rezimy (07h) a pro nektere textove rezimy Super VGA (ty s vetsim poctem sloupcu nez 80) zacina pamet obrazovky na adrese b000:0000. Pro zobrazeni znaku staci zapsat na prislusne adresy jeho ASCII kod a atribut. Pokud naopak chcete zjistit jaky znak je nejake pozici, prectete jeho ASCII kod a atribut z prislusnych adres. Ke zjisteni adresy znaku o souradnicich X, Y slouzi nasledujici vzorce: Segment = b800 nebo b000 (podle modu) Offset = Y * 2 * Pocet_znaku_na_radce + 2 * X Adresa atributu bude mit offset zvetseny o jedna. Pocet_znaku_na_radce je konstanta zavisla na zobrazovacim rezimu. jeji nejbeznejsi velikost je 80, ale existuji mody, kde ma hodnotu 40 ci 132. Toto plati pro zabrazovaci stranku 0. Pokud byste chteli pouzivat i jine zobrazovaci stranky musite k offsetu pricist hodnoty podle nasledujici tabulky: /-------------------------------------------------\ | | Posunuti pro ruzne mody | | |---------------------------------------| | Stranka | Mody 0,1 (40x25) | Mody 2,3,7 (80x25) | | |------------------+--------------------| | | Dec | Hex | Dec | Hex | |---------+--------+---------+----------+---------| | 0 | 0 | 0000 | 0 | 0000 | | 1 | 2128 | 0850 | 4256 | 10a0 | | 2 | 4256 | 10a0 | 8512 | 2140 | | 3 | 6384 | 18f0 | 12768 | 31e0 | | 4 | 8512 | 2140 | 17024 | 4280 | | 5 | 10640 | 2990 | 21280 | 5320 | | 6 | 12768 | 31e0 | 25536 | 63c0 | | 7 | 14896 | 3a30 | 29792 | 7460 | \-------------------------------------------------/ Organizace pameti v grafickych rezimech CGA Zobrazovaci rezimy 4, 5 a 6 zachovavaji na kartach EGA/VGA komapatibilitu s puvodni kartou CGA. Stejna jako u CGA zustala v techto rezimech i organizace videopameti. Obsah pameti primo urcuje vyslednou zobrazovanou barvu. V modech 4 a 5 prislusi pro kazdy pixel dva bity (tj. vysledne ctyri barvy). V modu 6 (640 x 200) odpovida pixelu jeden bit. Zvlastnosti techto rezimu je, ze maji prokladane usporadani obrazove pameti. To znamena, ze sude radky jsou ulozeny v jedne oblasti pameti a liche radky v jine casti pameti. Bity odpovidajici jednotlivym pixelum v radce jsou v pameti opet zapsany zleva doprava. Sude radky jsou v pameti ulozeny od adresy b800:0000 a liche od adresy ba00:0000 (viz obr. 4). Pokud si na obrazovce zvolime souradny system tak, ze levy horni roh bude mit souradnice (0,0) a smerem dolu a doprava se budou souradnice bodu zvetsovat, pak adresu a bity prislusejici pixelu o souradnicich X a Y zjistime podle nasledujiciho: Segment = pro sude radky - b800 pro liche radky - ba00 Offset = Y div 2 * 80 + X div 8 (4 pro mody 4 a 5) Bit pro mod 6 = 7 - (X mod 7) Bity pro mody 4, 5 = (3 - (X mod 3)) * 2 a (3 - (X mod 3)) * 2 + 1 Pozn. div je oznaceni operace celociselneho deleni a mod je oznaceni operace vracejici zbytek celociselneho deleni. Organizace pameti v grafickem rezimu 13h (320 x 200, 256 barev) Tento rezim VGA ma asi nejjednodusi organizaci pameti ze vsech moznych zobrazovacich rezimu. Kazdy byte pameti odpovida jednomu bodu, ktery tedy muze mit jednu z 256 barev. Jednotlive pixely radku jsou v pameti opet ulozeny zleva doprava (viz obr. 5). Vypocet adresy, na ktere je ulozena barva pixelu je opravdu jednoduchy: Segment = a000 Offset = Y * 80 + X Organizace pameti v ostatnich grafickych rezimech EGA/VGA Pro vsechny tyto zobrazovaci rezimy zacina pamet na adrese a000:0000. K ulozeni grafickych dat je volny tedy jeden segment (a000). Jeden segment pojme 64K dat, ale nejvyssi rezim VGA 12h potrebuje k ulozeni informace o celem obrazu 150K. Jak tedy stesnat 150K do 64K? V tomto modu kazdy bit pameti odpovida jednomu pixelu na obrazovce. Jeden byte pameti tedy odpovida 8 pixelum. Pixely jsou v pameti opet ulozeny po radcich od shora dolu a jednotlive body radky jsou ulozeny zleva doprava. Bit s nejvyssi vahou v byte odpovida pixelu, ktery je nejvice nalevo (viz obr. 6). Jeden bit nam ale k ulozeni 16 barev nestaci. Na jedne adrese jsou tedy 4 bity misto jednoho. Tato technika organizace pameti se nazyva bitove roviny (viz obr. 7). Muzeme si ji totiz predstavit jako nekolik bank pameti polozenych na sebe. Na jedne adrese se pak nachazi ctyri bity (z kazde banky/bitove roviny jeden). Kombinaci techto 4 bitu dostavame pro kazdy pixel jednu z 16 moznych barev. Usporadani pameti do bitovych rovin ma nekolik vyhod. Prvni vyhodou je to, ze pozice pixelu na obrazovce primo odpovida pozici prislusneho bitu v pameti. V pripade standardniho nastaveni barev kazda bitova rovina odpovida jedne ze zakladni barev a intenzite barvy. Druhou vyhodou je snadne pridani barev. Pokud pridame jeste jednu bitovou rovinu, pocet pouzitelnych barev se zdvojnasobi a rutiny pocitajici adresy bodu ze souradnic zustanou naprosto stejne. Treti vyhodou je moznost modifikovat pamet stejne rychle v dvoubarevnem i 256barevnem modu, protoze obsah vsech rovin muze byt zmenen jednim zapisem do pameti. Samozrejme, ze jsou k dispozici ruzne metody pristupu k bitovym rovinam. Kdyby sla do vsech najednou zapsat pouze jednicka nebo nula, meli bychom k dispozici pouhe dve barvy. Existuji tri metody zapisu do videopameti a dve metody cteni videopameti. Kazda z techto metod, ktere nam umoznuji praci se vsemi barvami, ma sve vyhody i sva omezeni. Jejich funkce zde podrobne probereme. Zapisovaci mod 0 Tento zapisovaci mod je pouzivan rutinami BIOS. Pouziva registru Map mask k urceni bitovych map, do kterych se bude zapisovat. Pokud menite barvu, kterou kreslite na obrazovku, musite zmenit i obsah Map mask registru. Je zde ale jedna mala osemetnost. Rekneme, ze chcete na obrazovku nakreslit neco urcitou barvou. Ulozite tedy tuto barvu do Map mask registru a zapisete do pameti jednicky. Tim dosahnete toho, ze se prislusne bitove roviny nastavi na jedna. Pokud by ale bitove roviny neobsazene v Map mask registru obsahovaly jiz odpredtim nejake bity nastavene na jedna, nedostali byste na obrazovce barvu, kterou jste pozadovali. K tomu abyste obdrzeli bod o potrebne barve, musite tedy zajistit i vynulovani prislusnych bitovych rovin. Existuji dve mozne cesty. Tou prvni je nejprve zapsat do bitovych rovin neprislusejicich zapisovane barve nuly a pote do rovin prislusejicich zapisovane barve zapsat jednicky. Nejprve tedy musite nastavit Map mask registr na binarni negaci zapisovane barvy, zapsat do pameti nuly. Pak nastavite Map mask registr na zapisovanou barvu a zapisete do pameti jednicky. (Pozn. binarni negaci nejakeho cisla ziskate tak, ze v danem cisle obratete jenicky na nuly a naopak. Binarni negace binarniho cisla 0011 je tedy 1100.) Druha cesta vede pres pouziti Set/Reset a Enable Set/Reset registru. Pri vhodnem nastaveni techto dvou registru muzete dosahnout toho, ze potrebne bitove roviny se pri zapisu do pameti automaticky nastavi na nulu. Abyste mohli pouzit teto metody, nejprve zapiste do registru Set/Reset nulu. Pak do registru Enable Set/Reset zapiste binarni negaci barvy. Map mask registr nastavte na pozadovanou barvu a provedte zapis do pameti. Procesor normalne zapisuje jeden byte najednou. Zapisem do videopameti zmenime tedy 8 pixelu najednou. V mastavenych bitovych rovinach se bity podle zapisovane hodnoty nastavi na jedna nebo na nula. To nam umoznuje zobrazovat znaky, ktere jsou siroke osm bodu, ale neumoznuje nam to zobrazit samostatny bod. K tomu, abychom menili jenom nektere vybrane body z cele osmice, pouzijeme Bit mask registr. Pokud je nejaky bit Bit mask registru nastaven na jedna, prislusne bity v bitovych rovinach se pri zapisu zmeni. Bity rovin, ktere maji odpovidajici bity Bit mask registru nastaveny na nulu, zustanou zapisem nezmeneny. Pri zapisu se kombinuji data posilana procesorem s jiz ulozenymi daty. Aby toto bylo umozneno, musi byt pred zapisem nacten puvodni obsah videopameti do tzv. latch-registru. K nacteni latch-registru muzeme pouzit kuprikladu nasledujici instrukci: MOV AL, ES:[BX], kde ES:[BX] ukazuje na pozadovanou adresu. Latch registry jsou osmibitove a jsou ctyri (pro kazdou bitovou rovinu jeden). Teprve pote co spravne nastavime vsechny registry a nacteme latch registry, muzeme zapsisovat do videopameti. Nyni si ukazeme, jak zobrazit na nejake souradnici barevny bod. Chtejme napriklad nakreslit cerveny bod na souradnicich (100, 100). Nejprve urcime adresu byte, ve kterem lezi bit prislusejici nasemu bodu. Tuto adresu ziskame tak, ze souradnici y vynasobime poctem byte na zobrazovaci radku (tech je 80) a pricteme k ni souradnici x. Dostavame 100 * 80 + 100 = 8100. Video pamet je v techto zobrazovacich modech mapovana do segmentu a000h. Do registru DS ulozime hodnotu a000h a do registru BX hodnotu 8100. DS:[BX] nyni ukazuje na byte, ve kterem lezi bit prislusejici nasemu bodu. Cislo bitu, ktery prislusi nasemu bodu zjistime jako: 7 - ( X and 7). Jednodusi je ale umistit do nejakeho registru hodnotu 80h (10000000b) a posunout ji o (X and 7) doprava (to vyplyva z toho, ze bit 7 odpovida bodu na levem okraji byte). Tak dostaneme primo bitovou masku, kterou umistime do Bit mask registru. Cervena barva ma cislo 4, umistime ho tedy do Map mask registru. Set/Reset registr nastavime na 0 a Enable Set/Reset registr na binarni negaci 4 (4=0100b => 4'=1011b). Pak nacteme latch-registry a ulozime masku na patricnou adresu. V assembleru nakresleni bodu muze vypadat napriklad takto (Predpokladame, ze DS:[BX] ukazuje na prislusnou adresu a v registru AH je nastavena bitova maska bodu. V ukazce se pouzivaji registry grafickeho adapteru. Jejich podrobnejsi popis a popis jejich ovladani je uveden v samostatne casti o registrech.): mov DX, 3ceh ;do DX port Graphics adress registru mov AL, 8 ;index Bit mask registru out DX, AL inc DX ;datovy port Graphics controlleru mov AL, AH ;do AL bitova maska out DX, AL ;nastavi bitovou masku dec DX ;opet indexovy port Adress registru mov AL, 0 ;index Set/Reset registru out DX, AL inc DX mov AL, 0 ;hodnota pro Set/Reset registr out DX, AL dec DX ;opet port Graphics adress registru mov AL, 1 ;index Enable Set/Reset registru out DX, AL inc DX ;datovy port Graphics controlleru mov AL, 1011b ;negace cervene barvy mov DX, 3c4h ;port Sequencer controlleru mov AL, 2 ;index Map mask registru out DX, AL inc DX ;port datoveho registru Sequenceru mov AL, 0100b ;cervena barva out DX, AL mov AL, [BX] ;nacte latch registry mov [BX], AH ;zobrazi bod, tj. zkombinuje bitovou masku s latch registry Je to ponekud dlouhy program na to, ze zobrazuje pouze jeden bod (a jeste neni zahrnut kod pro vypocet adresy bodu ze souradnic). Ale da se zkratit tim, ze se misto pouziti Set/Reset registru pouzje dvoji zapis do videopameti. Ponekud efektivnejsi zpusob pro kresleni bodu poskytuje zapisovaci mod 2. V zapisovacim modu 0 mohou byt data z procesoru pred kombinovanim s latch-registry zrotovana az o 7 bodu. Tuto funkci lze nastavit pomoci Data rotate registru. Pomoci tohoto registru muzeme take urcit zpusob jakym se budou data z CPU a latch-registru kombinovat. K dispozici jsou ctyri moznosti: prepsani a bitove operace OR, XOR a AND. Obrazek 8b. Zapisovaci mod 2 V zapisovacim modu 2 se nepouziva Map mask registr (mel by byt nastaven na hodnotu 1111b). Barva bodu se zapisuje primo do videopameti. Na tuto barvu se pak nastavi ty bity, ktere jsou pomoci registru Bit mask odmaskovany. Zobrazovani bodu v tomto modu je tedy jednodussi nez v zapisovacim modu 0. Staci nastavit prislusnou masku do Bit mask registru, nacist latch-registry a ulozit barvu do pameti adapteru. Pomoci Data rotate registru lze opet nastavit zpusob kombinovani dat s latch-registry. Nelze vsak pouzit rotaci. Pokud budete ve vasem programu pouzivat zapisovaci mod 2 zaroven s rutinami BIOS, musite pred volanim BIOS rutiny zajistit, aby byl nastaven zapisovaci rezim 0, protoze to BIOS predpoklada. Zabranite tak pripadnym konfliktum pri zapisu na obrazovku. Zapisovaci mod 1 Tento mod slouzi k presouvani videopameti. Prectenim nejake adresy v pameti adapteru nactete do latch-registru obsah teto adresy. Pri zapisu do videopameti (obvykle na jinou adresu) se na toto misto v pameti ulozi obsah latch-registru. Tento zapisovaci mod je vyhodne pouzit zejmena pro prenaseni bloku obrazu. Muzete si nejaky obraz uschovat v neviditelne casti obrazove pameti a pak ho prenest do viditelne (lze vyuzivat napr. pri animaci, nebo uschove podkladu oken). Cteci mod 0 Pred pouzitim tohoto cteciho modu musime zvolit jakou chceme cist bitovou rovinu. Cislo bitove roviny k precteni ulozime do registru Read map select. (Narozdil od Map mask registru zde mohou byt cisla od 0-3 a nikoli od 0 do 15. Je to zrejme, kdyz si uvedomime, ze cist muzeme pouze obsah jedne roviny, kdezto najednou muzeme menit vice bitovych rovin. Map mask registr ma pro kazdou bitovou rovinu vyhrazen jeden bit, ktery urcuje zda se do ni bude zapisovat. Oproti tomu Read map select registr obashuje cislo bitove roviny, ktera se bude cist.) Pote jiz staci precist obsah pameti adapteru a obdrzime primo obsah jednoho byte jedne bitove roviny. Pokud chceme zjistit skutecnou barvu nejakeho bodu musime postupne nacitat obsahy bitovych map 0, 1, 2 a 3 a vyslednou barvu urcit slozenim jednotlivych prectenych hodnot. K zjisteni barvy tedy potrebuje 4 cteni. Obrazek 8a. Cteci mod 1 Tento mod pracuje ponekud odlisne od toho predchoziho. Lze ho efektivne uplatnit tam, kde chceme zjistit jestli ma dany bod nejakou urcitou barvu. Tento cteci mod totiz funguje tak, ze barvu ctenych osmi bodu porovna s barvou ulozenou v Color compare registru. V prectenem byte pak bit s hodnotou 1 znamena shodu barev prislusneho bodu s barvou ulozenou v Color compare registru. Pokud bychom vsak chteli tento mod vyuzit pro zjisteni barvy bodu, hrozilo by nam, ze operace nastaveni Color compare registru a cteni pameti, budeme muset provest az patnactkrat (do te doby nez se "strefime" do barvy bodu). Tento cteci mod je vyhodne pouzit zejmena tam, kde porovnavame zda ma bod nejakou urcitou barvu. Tuto metodu casto pouzivaji programy komprese obrazovych dat zalozene na algoritmu RLE (Run length encoding) a algoritmy pro vyplnovani ploch ohranicenych barvou. Pomoci registru Color don't care muzete z porovnavani vyradit jakoukoli bitovou rovinu pripadne jakoukoli kombinaci bitovych rovin. Organizace pameti v rezimech VESA Standardni zobrazovaci rezimy karet VGA zdaleka nevyuzivaji vsech jejich schopnosti. Napriklad v modu s nejvyssim rozlisenim (640 x 480) je vyuzito pouze 37.5K adresniho prostoru v segmentu vyhrazenem pro graficky adapter a pouze 150K z celkovych 256K adapteru VGA. Take vsechny registry jsou osmibitove a vyuziva se pouze jejich polovina. Odtud tedy nebylo daleko ke zvetseni hloubky barev na 8 bitu a ke zvyseni rozliseni. Nejcasteji pouzivany mod rozsirujici moznosti karet VGA byl mod 800 x 600 s 16 barvami. Spotreboval asi 235K z 256K adapteru VGA a jeste se cely najednou vesel do jenoho adresniho segmentu procesoru (zabral asi 60K). Navic stranovy pomer pri rozliseni 800 x 600 je stejny jako pri rozliseni 640 x 480. K pouziti tohoto modu nebylo treba mnoho menit. Ve stavajicich programech vetsinou stacilo pouze zmenit pocet byte na jedne zobrazovaci radce. Pokud mel adapter vice pameti a podporoval 256 barev, jedina zmena spocivala v praci s celymi registry a ne pouze s jejich ctyrmi bity. Novejsi mody 1024 x 768 prekrocily hranice jednoho segmentu. Zdanlive by zde nemel byt problem, nebot v pocitacich IBM PC je pro videoadaptery vyhrazena pamet na adesach a0000-bffff. Pro hardware adapteru by nebyl zadny problem mapovat videopamet do dvou segmentu. Byla by vsak ztracena moznost pouzivat dva zobrazovaci adaptery najednou (doslo by k prekryti oblasti vyhrazene pro MDA). Nektere Super VGA drze obsadi cele dva segmenty. Ty slusnejsi pouzivaji prepinani pametovych bank a stesnaji se i do jenoho segmentu. System pametovych bank je velmi stary a lze ho popsat nasledovne: je vyhrazen urcity mensi adresni prostor procesoru. Hardware adapteru pak do tohoto prostoru muze vzdy umistit cast sve pameti. Ve stejnem adresnim prostoru se mohou v ruznem okamziku nachazet ruzne casti mapovane pameti. Tyto casti pameti se nazyvaji banky a v pripade grafickych adapteru okna. Norma VESA podporuje tri ruzne konfigurace oken. Jednoduche okno, prekryvna okna a neprekryvna okna. Pokud pouzijete prvni z nich, prekryvne okno, budete mit moznost cist i zapisovat v ramci celeho 64K segmentu. Konfigurace se dvema okny se lisi pristupem k cteni a zapisu do pameti. Pokud pouzivate prekryvna okna, cteni dat z videopameti zajisti cteni z jedne banky a zapsani dat do pameti zajisti zapis do jine banky. Dve banky jsou tedy jakoby nad sebou, cte se z jedne a pri zapisu je aktivni ta druha. Pokud pouzivate neprekryvna okna, jsou v pameti dve banky namapovany za sebou. Mohou slouzit ke cteni nebo k zapisu. Obvykle je prvni okno urceno k zapisu a druhe ke cteni. Ale neni to pravidlo, tuto informaci si zjistete pomoci sluzeb VESA Super VGA BIOS. Banka pameti nemuze zacinat na libovolnem miste pameti videoadapteru. Offset banky musi byt nasobkem granularity (obvykle 32K nebo 64K).
Copyright © Jiri Kosek