Rozdział 08 Karty graficzne


Rozdział 8.
Karty graficzne



Chociaż na wydajność systemu komputerowego wpływa głównie procesor oraz elementy płyty głównej, to o komforcie pracy decyduje monitor wraz ze sterownikiem graficznym. Od rodzaju sterownika zależy typ użytego monitora.
W czasie kilkunastoletniego rozwoju komputerów typu IBM PC powstało kilka konstrukcji sterowników graficznych pozwalających na osiągnięcie obrazu o coraz lepszych parametrach.
Przegląd kart graficznych
Pierwszym sterownikiem instalowanym w oryginalnych komputerach IBM PC był sterownik MDA (Monochrome Display Adapter), który pracował wyłącznie w trybie tekstowym, umożliwiając wyświetlenie 80 znaków w 25 wierszach w dwóch kolorach: czarnym i białym (właściwie w czarnym i jasnozielonym, gdyż taki luminofor posiadały ówczesne monitory). Później pojawił się - opracowany przez firmę IBM - sterownik CGA (Color Graphics Adapter), pozwalający na wyświetlanie obrazu o rozdzielczości 320 na 200 punktów w czterech kolorach lub obrazu o rozdzielczości 640 na 200 punktów w dwóch kolorach. Mimo "oszałamiającej" grafiki sterownik został nisko oceniony, gdyż w trybie tekstowym znaki miały rozmiar tylko 8 na 8 punktów. Wkrótce na rynku pojawił się sterownik o lepszych parametrach graficznych - Hercules. W trybie tekstowym posiadał te same parametry co sterownik MDA, ale umożliwiał także wyświetlanie dwukolorowego obrazu graficznego o rozdzielczości 720 na 350 punktów. Dzięki niskiej cenie i wysokich jak na owe czasy parametrach zdobył on ogromną popularność i przez długi czas był stosowany wszędzie tam, gdzie kolorowy obraz nie był konieczny.
W odpowiedzi na sterownik Hercules, firma IBM (która nigdy de facto nie uznała tego standardu) opracowała sterownik EGA (Enhanced Graphics Adapter}, o rozdzielczości 640 na 350 punktów i możliwości jednoczesnego wyświetlenia 16 kolorów z pośród 64 możliwych. Potomkiem karty EGA w prostej linii jest sterownik VGA (Video Graphics
Array) i jako taki jest zgodny ze swoimi poprzednikami. Jest to jego ogromną zaletą, gdyż i większość programów działających ze sterownikami MDA i CGA będzie działała poprawnie ze sterownikiem VGA.
Sterowniki VGA niektórych producentów umożliwiają także emulację karty Hercules, ale nie jest to opcja występująca w standardzie VGA.
Oprócz wymienionych sterowników opracowano kilka innych kart graficznych, miedzy innymi przeznaczony dla systemu OS/2 sterownik MCGA (Multi-Color Graphics Array) oraz sterownik PGA (Professional Graphics Adapter}, stanowiący ogniwo pośrednie pomiędzy kartą EGA a VGA.
Standardowy sterownik VGA umożliwia wyświetlenie na ekranie 25 wierszy znaków w 80 kolumnach. W tym trybie znaki mają rozmiar 9 na 16 punktów. Znak może być wyświetlony w jednym z 16 kolorów, niezależnie od koloru tła, które dla każdego znaku może być dobrane oddzielnie. Przy wykorzystaniu wszystkich kolorów znaków i tła oraz ustawieniu różnych atrybutów (rozjaśnienie, migotanie) można jednocześnie wyświetlić 256 kombinacji znak-tło.
W pewnych przypadkach może on podwoić liczbę wierszy tekstu do 50, ale dzieje się to kosztem zmniejszenia rozmiarów znaku do 8 na 8 punktów. Można także zwiększyć liczbę wyświetlanych kolumn.
W trybie graficznym standardowy sterownik VGA umożliwia wyświetlenie 640 punktów w 480 liniach przy 16 dostępnych kolorach (w jednym ze standardowych trybów możliwe jest wyświetlenie jednocześnie 256 kolorów, ale przy rozdzielczości 320 na 200). Jeśli sterownik posiada odpowiednio dużo pamięci, przez odpowiednie ustawienie rejestrów można uzyskać rozdzielczość nawet l 024 punktów w 768 liniach (przy odpowiedniej ilości pamięci nawet w 256 kolorach jednocześnie). Niezależnie od trybu graficznego wszystkie wyświetlane kolory mogą być wybrane z palety 262 144 barw.
Jednym z elementów różniących sterownik VGA od poprzedników jest sposób generowania sygnału wyjściowego. Sterownik VGA generuje sygnał analogowy, dzięki czemu do standardowej karty VGA można podłączyć zarówno monitor kolorowy jak i monochromatyczny, który zamiast kolorów będzie wyświetlał 64 poziomy szarości.
Istotną cechą sterownika VGA jest możliwość zamontowania go w jednym komputerze razem ze sterownikiem monochromatycznym, na przykład kartą Hercules. Tworzy się w ten sposób tak zwany system dual-monitor, bez którego bardzo trudno tworzyć programy korzystające ze skomplikowanej grafiki. Obecnie większość oprogramowania narzędziowego i graficznego pozwala na korzystanie z dwóch monitorów jednocześnie (na przykład środowiska programowe Borlanda lub pakiet graficzny AutoCAD).
W miarę rozwoju technologii parametry standardowego VGA stały się nie wystarczające i wielu producentów zaczęło swoje produkty wyposażać w dodatkowe opcje. Rozbudowa obejmuje głównie zwiększenie pamięci karty graficznej (standardowy sterownik VGA posiada 256 kB pamięci VRAM - VIDEO RAM) oraz dodanie nowych trybów gra-
ficznych (1024 x 768, 800 x 600, 2048 x 1024). Oprócz rozdzielczości zwiększeniu uległa także liczba jednocześnie wyświetlanych kolorów; obecnie istnieją karty umożliwiające wyświetlenie jednocześnie 32 768, 65 536 kolorów lub każdego punktu w innym kolorze, wybieranym z palety ponad 16 milionów odcieni (224 odcieni).
Niestety, jak dotąd nie powstał jednolity standard kart SVGA (Super VGA - tak nazywane są karty VGA posiadające rozbudowane możliwości). Główni producenci procesorów graficznych kart SVGA (ATI Technologies, Chips and Technologies, Genoa Systems, Paradise/Western Digital, Trident, Tseng Labs i Video 7/Headland Technologies) prześcigali się w dodawaniu nowych możliwości do swoich produktów - niestandardowe tryby pracy, w zależności od użytego procesora graficznego, mają różne numery, pamięć zorganizowana jest w różny sposób i różne są adresy niestandardowych rejestrów. Jako przykład niech posłuży tabela 8.1, ukazująca numery niestandardowych trybów graficznych sterowników różnych producentów.
Próby zapanowania nad tym bałaganem doprowadziły do powstania stowarzyszenia producentów urządzeń graficznych o nazwie VESA (Video Elestronics Standards Asso-ciation). Stowarzyszenie to postawiło sobie za cel opracowywanie norm umożliwiających standaryzację:
parametrów monitorów współpracujących z kartami SVGA,
numeracji rozszerzonych trybów graficznych,
interfejsu programowego (dodatkowych funkcji BIOS-u).
Nowoczesne sterowniki SVGA coraz częściej sprzętowo obsługują założenia standardu VESA - dla starszych typów konieczne jest stosowanie programowych emulatorów, opracowanych specjalnie dla danej karty.
Jednym z głównych zastosowań kart SVGA jest praca z aplikacjami graficznymi w Windows, gdyż oprogramowanie dostarczane przez producenta karty przeznaczone jest głównie dla tego systemu. Niektóre karty SVGA posiadają także sprzętowe akceleratory zaprojektowane specjalnie do współpracy z Windows; karty takie sprzętowo wypełniają prostokąty, rysują linie i operują prostokątnymi obszarami obrazu.
Omówienie kart graficznych EGA, VGA i SVGA
Sterownik EGA składa się z czterech głównych elementów funkcjonalnych:
Układu sekwencyjnego (sekwensera) - odpowiadającego za generowanie sygnału zegarowego, przesyłanie danych pomiędzy pamięcią obrazu, układem graficznym i układem określania atrybutu oraz za lokalizację wyświetlanego zbioru znaków.
Tabela 8.1.
Niestandardowe tryby pracy kart graficznych, wprowadzone przez różnych producentów

Numer tiyhu; Rozdzielczość; Liczba kolorów;

ATI Technology;

53; 800 x 600; 16;
54; 800 x 600; 16;
55; 1024x768; 16;
61; 640 x 400; 256;
62; 640 x 480; 256;
63; 800 x 600; 256;
65; 1024x768; 16;

Chips and Technologies;

25; 640 x 480; 16;
6A; 800 x 600; 16;
70; 800 x 600; 16;
71; 960 x 720; 16;
72; I024x 768; 16;
78; 640 x 400; 256;
79; 640 x 480; 256;
7A; 768 x 576; 256;
7C; 800 x 600; 256;
7E; 1024x 768; 256;

Genoa Systems;

59; 720 x 512; 16;
5B; 640 x 350; 256;
5C; 640 x 480; 256;
5D; 720 x 512; 256;
5E; 800 x 600; 256;
5F; 1024x 768; 16;
6A; 800 x 600; 16;
6C; 800 x 600; 256;
73; 640 x 480; 16;
79; 800 x 600; 16;
7C; 512x512; 16;
7D; 512 x 512; 256;
7E; 640 x 400; 256;
7F; 1024x 768; 4;

Paradise/Western Digital;

54; 924 x 387; 16;
54; multisync 1056 x 387; 16;
55; 924 x 400; 16;
55; multisync 1056 x 400; 16;
56; 924 x 387; 14;
56; multisync 1056 x 387; 14;
57; 924 x 400; 14;
57; multisync 1056 x 400; 14;

Trident;

5B; 800 x 600; 16;
5C; 640 x 400; 256;
5D; 640 x 480; 256;
5E; 800 x 600; 256;
5F; 1024x 768; 16;
61; portrait 768 x 1024; 16;
62; 1024x 768; 256;

Tseng Labs;

25; 640 x 480; 16;
29; 800 x 600; 16;
2D; 640 x 350; 256;
2E; 640 x 480; 256;
2F; 640 x 400; 256;
30; 800 x 600; 256;
37; 1024x768; 16;
38; 1024x 768; 256;

Video 7/Hcadland Technologies;

60; 752x410; 16;
61; 720 x 540; 16;
62; 800 x 600; 16;
63; 1024x 768; 2;
64; 1024x 768; 4;
65; 1024x 768; 16;
66; 640 x 400; 256;
67; 640 x 480; 256;
68; 720 x 540; 256;
69; 800 x 600; 256;








































Układu graficznego - odpowiadającego za przekazywanie danych pomiędzy pamięcią obrazu a procesorem i układem określania atrybutu.
Układu sterowania atrybutem - służącego do zmiany kolorów zapisanych w pamięci obrazu na indeksy kolorów zdefiniowanych w rejestrach wzorców kolorów.
Układu sterowania wyświetlaczem (kontrolera CRT) - odpowiadającego za zachowanie zależności czasowych podczas wyświetlania obrazu oraz wyświetlającego kursor.
Karta VGA posiada piąty element: przetwornik cyfrowo-analogowy, przetwarzający wzorce cyfrowe na sygnał analogowy przesyłany do monitora.
Powyższe układy zawierają od kilkudziesięciu (karta EGA) do kilkuset (karta VGA) programowalnych rejestrów sterujących.
Z punktu widzenia procesora, karta graficzna to zbiór portów wejścia-wyjścia i obszar pamięci obrazu - programowanie sterownika sprowadza się zatem do zapisu oraz odczytu do i z pamięci oraz portów wejścia-wyjścia. Pamięć obrazu jest odwzorowana bezpośrednio w przestrzeni adresowej procesora, pomiędzy adresami A000:0000h a B000:FFFFh, pozwalając na wykorzystanie do zapisu lub odczytu instrukcji mov lub
mosv.
Na pamięć obrazu przeznaczone jest 128 kB przestrzeni adresowej procesora. Była to ilość wystarczająca dla kart CGA. Standardowy sterownik VGA posiada 256 kB pamięci RAM, a karta SVGA co najmniej 512 kB. Z tego powodu pamięć obrazu zorganizowana jest na różne sposoby, w zależności od trybu pracy sterownika.
W trybach odziedziczonych po kartach CGA wykorzystywana jest spakowana (ang. packed) metoda odwzorowania pamięci - w jednym bloku pamięci RAM każdemu punktowi na ekranie odpowiada fragment bajtu zawierający numer koloru tego punktu (rysunek 8.1). Pole odpowiadające jednemu punktowi wynosi zwykle l, 2, 4 lub 8 - co odpowiada 2, 4, 16 lub 256 kolorom obrazu.
Dla kart EGA i VGA podstawową metodą odwzorowania ekranu jest metoda płatowa (ang. planar, bit mapped). Pamięć obrazu dzielona jest na 4 płaty (bloki) po 64 kB każdy (patrz rysunek 8.2). W każdym bloku jednemu bitowi odpowiada jeden punkt - dzięki takiej strukturze 256 kB pamięci obrazu zajmuje 64 kB przestrzeni adresowej. Konsekwencją przyjętej organizacji pamięci jest utrudniony dostęp do danych. Zapis lub odczyt wymaga dodatkowo programowania rejestrów układu graficznego.
Karty SVGA umożliwiają współpracę z co najmniej 512 kB pamięcią obrazu. Ponieważ na pamięć obrazu zarezerwowane jest 128 kB przestrzeni adresowej procesora, do dostępu do pamięci karty SVGA wykorzystują technikę stronicowania - polegającą na kojarzeniu z niewielkim obszarem pamięci (oknem) w przestrzeni adresowej różnych fragmentów większego obszaru pamięci (stron lub banków). Zapis lub odczyt adresu położonego wewnątrz okna powoduje zapis lub odczyt odpowiadającego mu bajtu w banku. Rozmiar
banku i okna wynosi zwykle 64 kB. Aby uzyskać dostęp do pamięci położonej poza ob.-rębem bieżącego banku, należy zmienić zawartość rejestru sterującego położeniem banku (przeważnie nosi on nazwę Bank Start Address).
Stronicowanie pamięci wykorzystuje jedną z następujących technik:
-pojedyncze okno,
-dwa nakładające się okna,
-dwa nie nakładające się okna .







We wszystkich metodach stronicowania ważnym parametrem jest odstęp pomiędzy po-j czątkami kolejnych banków (granularity*) - może być on mniejszy niż rozmiar banku, co oznacza, że kolejne banki mają część wspólną.
W trybach graficznych SVGA w obrębie banku odwzorowanie pamięci obrazu jest identyczne jak w analogicznych trybach VGA.
Tryby tekstowe
W trybach tekstowych pamięć obrazu sterowników EGA, VGA i SVGA zorganizowana jest tak samo jak w sterowniku MDA i CGA. Z tego powodu została zachowana całkowita zgodność pomiędzy poszczególnymi rodzajami kart graficznych.
Każdy znak reprezentowany jest przez dwa bajty pamięci obrazu. Pierwszy z nich zawiera kod ASCII wyświetlanego znaku, drugi zaś określa jego atrybut. Wyświetlanie znaków odbywa się bardzo szybko, gdyż do zapisania jednego znaku wymagane jest przesłanie tylko dwóch bajtów. W pamięci obrazu kody znaków zapisane są na przemian z atrybutami, dlatego do wyświetlania znaków można wykorzystać instrukcję asemblera rep movsx.
W pamięci obrazu można przechowywać do ośmiu stron tekstu, w zależności od ilości zainstalowanej pamięci i trybu pracy. Dostępne tekstowe tryby pracy podaje tabela 8.2.
Tabela 8.2.

Tekstowe tryby pracy kart graficznych

Numer trybu; Rozdzielczość; Liczba kolorów; Karta graficzna; Adres początku pamięci obrazu;
0h; 40x25; 16/8 szarości; CGA, EGA, VGA; B8000h
Ih; 40x25; 16/8; CGA, EGA, VGA; B8000h
2h; 80x25; 16/8 szarości; CGA, EGA, VGA; B8000h
3h; 80x25; 16/8; CGA, EGA, VGA; B8000h
7h; 80x25; 3; MDA, EGA, VGA; B0000h

rozmiar matrycy znaku zależy od karty graficznej:
tryby 0-3: CGA 8x8, EGA 8 x 14, VGA 9x16
tryb 7: MDA 9 x 14, EGA 9x14 VGA 9x16








W trybie tekstowym znak w lewym górnym rogu ekranu znajduje się w zerowym wierszu i zerowej kolumnie.
Sterowniki graficzne posiadają zdefiniowane standardowe zestawy znaków zapisane w pamięci stałej. W przypadku sterowników EGA, VGA i SVGA możliwa jest zmiana miejsca w pamięci, z którego pobierane będą wyświetlane znaki. Po przygotowaniu tzw.
matrycy znaków można wskazać ją sterownikowi graficznemu korzystając z funkcji 11 h (podfunkcje 00h i 10h) BIOS-u sterownika. W ten sposób, aby otrzymać na przykład polskie znaki diakrytyczne, nie trzeba dokonywać żadnych przeróbek sprzętowych, tak jak miało to miejsce w przypadku karty Hercules (do uzyskania polskich znaków trzeba było zmienić zawartość pamięci EPROM).
Sterowniki SVGA posiadają dodatkowe tryby tekstowe. Przykładowe tekstowe tryby pracy sterowników SVGA to 80 x 30, 80 x 43, 80 x 60, 132 x 25, 132 x 30, 132 x 43, 132 x 60, wszystkie w 16 kolorach.
Tryby graficzne
W zależności od trybu graficznego zmienia się organizacja pamięci obrazu. Jednak we wszystkich trybach graficznych kolejne komórki pamięci obrazu reprezentują kolejne punkty położone w kolejnych liniach poziomych, odczytywane z lewa na prawo i od góry do dołu. W trybach dwukolorowych pojedynczy punkt opisywany jest przez jeden bit. Osiem kolejnych punktów opisywanych jest przez jeden bajt pamięci obrazu, przy czym najbardziej znaczący bit znajduje się z lewej strony, zaś najmniej znaczący z prawej. W trybach czterokolorowych pojedynczy punkt opisywany jest dwoma bitami, a w trybach szesnastokolorowych - czterema. W specyficznym 256-kolorowym trybie 13h pojedynczy punkt opisywany jest jednym bajtem. Większość gier korzysta z tego trybu mimo stosunkowo niskiej rozdzielczości (320 x 200), gdyż do umieszczenia punktu na ekranie nie trzeba wykonywać żadnych złożonych operacji - wystarczy policzyć przesunięcie względem początku pamięci obrazu.
Dostępne tryby graficzne sterowników EGA i VGA przedstawia tabela 8.3.


Tabela 8.3.

Graficzne tryby pracy kart graficznych

Numer trybu; Rozdzielczość; Ilość kolorów Rozmiar znaku; Segment pamięci obrazu; Zgodny ze sterownikiem

04h; 320 x 200; 4; 8x8; B800h; CGA, EGA
05h; 320 x 200; 4 (szarości); 8x8; B800h; CGA, EGA
06h; 640 x 200; 2; 8x8; B800h; CGA, EGA
0Dh; 320 x 200; 16; 8x8; A000h; EGA, VGA
0Eh; 640 x 200; 16; 8x8; A000h; EGA, VGA
0Fh; 640 x 350; 3; 8x14; A000h; EGA, VGA
10h; 640 x 350; 4; 8x14; A000h; EGA, VGA
11h; 640 x 480; 2; 8x16; A000h; VGA
12h; 640 x 480; 16; 8x16; A000h; VGA
13h; 320 x 200; 256; 8x16; A000h; VGA












Sterowniki SVGA oferują dodatkowe tryby graficzne, na przykład tryb 640 x 480 w 256 kolorów, 800 x 600 w 16 i 256 kolorach lub tryb 1024 x 768 w 16 i 256 kolorach.
Tryby zapisu i odczytu pamięci obrazu
W trybach graficznych o spakowanej organizacji pamięci obrazu pamięć karty widziana jest jako ciągły obszar pamięci RAM. Z tego powodu zapis lub odczyt danych nie powinien sprawiać kłopotów.
W trybach graficznych o płatowej organizacji pamięci obrazu, odczyt lub zapis komórek pamięci może być różnie zinterpretowany przez poszczególne układy karty. Z tego powodu wprowadzone zostały cztery tryby zapisu i dwa tryby odczytu.
O. tryb zapisu
W zerowym trybie zapisu dane przesyłane przez procesor zapisywane są bezpośrednio w pamięci obrazu. Zapisywany bajt może być poddany operacji przesunięcia cyklicznego, możliwe jest także zamaskowanie jego poszczególnych bitów. Ta operacja wymaga wykonania cyklu odczyt-modyfikacja-zapis. Podczas odczytu cztery bajty z poszczególnych płatów pamięci obrazu zapisywane są w rejestrach zatrzaskowych.
Przed zapisem bajtu mogą być na nim wykonane operacje logiczne AND, OR lub XOR, których drugim argumentem jest zawartość rejestrów zatrzaskowych.
Dane mogą być zapisywane osobno do poszczególnych płatów; jedną instrukcją mov można zapisać cztery bajty pamięci obrazu, po jednym bajcie na płat.
1. tryb zapisu
Korzystając z zawartości rejestrów zatrzaskowych pojedynczą instrukcją mov można modyfikować wszystkie cztery płaty pamięci obrazu. Rejestry zatrzaskowe ładowane są podczas odczytu pamięci obrazu przez procesor. Pierwszy tryb zapisu umożliwia bardzo szybkie kopiowanie obszarów pamięci obrazu.
2. tryb zapisu
W tym trybie wszystkie cztery płaty mogą być modyfikowane przez cztery najbardziej znaczące bity przesyłanego bajtu. Zerowy bit jest ośmiokrotnie kopiowany i zapisywany do komórki płatu zerowego. Pierwszy bit jest ośmiokrotnie kopiowany i zapisywany do komórki płatu pierwszego. Podobnie dzieje się z bitami drugim i trzecim, które powielone zapisywane są odpowiednio do drugiego i trzeciego płatu pamięci obrazu. Do określenia, które z ośmiu bitów faktycznie mają zostać zapisane do pamięci obrazu służy rejestr modyfikacji bitów (bit mask register).
3. tryb zapisu
Trzeci tryb zapisu dostępny jest wyłącznie w sterowniku VGA i jest bardziej skomplikowany. Dane zapisywane do pamięci obrazu pobierane są z rejestru ustawiania/zerowania (set/reset register). Każdy z czterech najmniej znaczących bitów rejestru jest powielany osiem razy i zapisywany do odpowiednich płatów pamięci obrazu. Zapisywane bity mogą być maskowane operacją AND z przesuniętym cyklicznie bajtem wysłanym przez procesor. Bity o wartości O są kopiowane do pamięci z rejestrów zatrzaskowych, zaś bity o wartości l są albo kopiowane z rejestru ustawiania/zerowania lub podlegają operacji logicznej na bitach tego rejestru i odpowiednich bitach rejestrów zatrzaskowych. Możliwe jest także zablokowanie dostępu do poszczególnych płatów pamięci przez wpisacie odpowiedniej wartości do rejestru blokowania pamięci. Tryb ten jest szczególnie przydatny przy wyświetlaniu na ekranie jednokolorowych wzorów.
0. tryb odczytu
W tym trybie odczytu przesyłane bajty pobierane są z pamięci obrazu. Podczas pojedynczego odczytu dostępny jest tylko jeden, aktywny płat pamięci. Jeśli poszczególne punkty są reprezentowane przez poszczególne bity na wszystkich płatach pamięci, operacja jednego odczytu może zwrócić bity ośmiu sąsiadujących punktów.
1. tryb odczytu
W pierwszym trybie odczytu jako rezultat operacji zwracana jest wartość wynikająca z porównania zawartości pamięci z rejestrem porównania kolorów (color compare register}. Poszczególne bity rejestru są uwzględnianie na podstawie zawartości rejestru opuszczania kolorów (color don't car e register). W porównaniu uczestniczą wszystkie niezablokowane płaty pamięci. Odczytany bajt zawiera rezultat ośmiu równoległych porównań, po jednym dla każdego z ośmiu sąsiadujących poziomo punktów reprezentowanych przez pojedynczy bajt.
Standard VESA
Standard VESA ukazywał się w kilku edycjach. Do chwili obecnej opublikowano wskazania techniczne dotyczące:
parametrów monitorów przeznaczonych do współpracy z kartami SVGA,
numeracji i rozdzielczości trybów graficznych i znakowych,
interfejsu programowego (dodatkowych funkcji przerwania 10h BIOS-u),
magistrali lokalnej (Local Bus) do komunikacji ze sterownikiem graficznym.
Każda edycja wnosiła rozszerzenia w stosunku do poprzedniej. Pierwsza norma, ogłoszona w kwietniu 1989, zalecała tylko jeden rozszerzony tryb - 800 x 600 punktów
Tabela 8.4.

Tryby graficzne i tekstowe wprowadzone w standardzie VESA

Wersja BIOS-u; Numer trybu; Rodzaj trybu; Rozdzielczość; Liczba kolorów;

1.0; 100h; graficzny; 640 x 400; 256;
1.0; 101h; graficzny; 640 x 480; 256;
1.0; 102h; graficzny; 800 x 600; 16;
1.0; 103h; graficzny; 800 x 600; 256;
1.0; 104h; graficzny; 1024x768; 16;
1.0; 105h; graficzny; 1024x768; 256;
1.0; 106h; graficzny; 1280 x 1024; 16;
1.0; 107h; graficzny; 1280x 1024; 256;
1.1; 108h; tekstowy; 80x60; 16;
1.1; 109h; tekstowy; 132 x 25; 16;
1.1; 10Ah; tekstowy; 132x43; 16;
1.1; 10Bh; tekstowy; 132x50; 16;
1.1; 10Ch; tekstowy; 132x60; 16;
1.2; 10Dh; graficzny; 320 x 200; 32768;
1.2, 10Eh, graficzny; 320 x 200; 65536;
1.2, 10Fh, graficzny; 320 x 200; 16777216;
1.2, 110h, graficzny; 640 x 480; 32768;
1.2, 111h; graficzny; 640 x 480; 65536;
1.2, 112h, graficzny; 640 x 480; 16777216;
1.2, 113h, graficzny; 800 x 600; 32768;
1.2, 114h, graficzny; 800 x 600; 65536;
1.2, 115h, graficzny; 800 x 600; 16777216;
1.2, 116h, graficzny; 1024x768; 32768;
1.2, 117h, graficzny; 1024x768; 65536;
1.2, 118h, graficzny; 1024x768; 16777216;
1.2, 119h, graficzny; 1280 x 1024; 32768;
1.2, 11Ah, graficzny; 1280 x 1024; 65536;
1.2, 11Bh, graficzny; 1280 x 1024; 16777216;






























w 16 kolorach - przypisując mu l-bajtowy numer 6Ah. Przełączanie miało następować przy użyciu tej samej funkcji (OOh) przerwania lOh, co zwykły tryb VGA. Niestety, stało się to o wiele za późno, gdy producenci opracowali i rozpoczęli produkcję własnych rozwiązań (16-kolorowe tryby o wyższej rozdzielczości i tryby 256-kolorowe).
W październiku 1989 standard VESA wprowadził 16-bitowe numery identyfikujące tryby oraz zdefiniował sześć nowych funkcji przerwania lOh do ich obsługi. Funkcje te pozwalają na stwierdzenie obecności w systemie oprogramowania VESA, dostarczają informacji o dostępnych trybach oraz umożliwiają przełączanie banków pamięci. Specyfikację rozszerzonego w ten sposób BIOS-u oznaczono jako wersję 1.0.
Kolejne uzupełnienie (VESA BIOS 1.1) wprowadziło nowe tryby tekstowe oraz dwie kolejne funkcje, przeznaczone do wyboru wyświetlanego na ekranie obszaru pamięci.
Obecnie najczęściej spotykane na rynku sterowniki VESA są zgodne z wersją 1.2. Oznacza to możliwość obsługi trybów wielobarwnych (15, 16 lub 24 bity na piksel) pod warunkiem, że karta SVGA wyposażona jest w specjalny układ przetworników C/A. Tabela 8.4 zawiera spis dodatkowych trybów graficznych i tekstowych, które zostały uznane za standardowe.
Rejestry sterowników EGA/VGA
Zapisu i odczytu rejestrów sterowników graficznych dokonuje się za pomocą instrukcji out i in procesora. Większość dostępnych rejestrów zgrupowana jest w pary, gdzie pierwszy rejestr jest rejestrem indeksowym, a drugi - indeksem informacyjnym.

Przykładowy zapis wartości do rejestru może wyglądać następująco:

mov dx,adres_rejestru
mov al,index_rejestru
out dx,al
mov al,wartość
inc dx
out dx,al

Przykładowy odczyt zawartości rejestru:

mov dx,adres_rejestru
mov al,index_rejestru
out dx,al
inc dx
in al,dx ; rejestr AL zawiera odczytana wartość.

Rejestry sterownika EGA służą tylko do zapisu, niemożliwe jest odczytanie ich zawartości. Jeżeli chcemy zachować wpisane wartości, musimy w pamięci RAM zachować ich kopie. Przed modyfikowaniem zawartości rejestrów należy zablokować przyjmowanie przerwań rozkazem cli, a po zapisie do rejestru odblokować je rozkazem sti. Do dobrego tonu programowania należy odtworzenie wartości wszystkich modyfikowanych rejestrów przed wyjściem z programu.
Rejestry zewnętrzne (external/general registers)

Pomocniczy rejestr wyjściowy
(miscellaneous output register) - adres 3C2h/3CCh

Opisuje podstawowe parametry pracy sterownika.

bit 7; bit 6; bit 5; x; bit 3; bit 2; bit 1; bit 0

bity 7-6 = Rozdzielczość pionowa:
01 - 350 linii,
10- 400 linii,
11 - 480 linii.
bit 5 = Selekcja połówki pamięci obrazu przy adresowaniu przemiennym:
0 - pierwsze 64 kB,
1 - drugie 64 kB.
bity 3-2 = Częstotliwość taktowania przy wyświetlaniu punktów:
00 - częstotliwość 25,175 Mhz,
01 - częstotliwość 28,322 Mhz,
10 - zegar zewnętrzny podłączony przez złącze krawędziowe.
bit 1 = Udostępnienie pamięci obrazu procesorowi:
0 - pamięć nieudostępniona,
1 - pamięć udostępniona (standardowy tryb pracy).
bit 0 = Wybór adresów I/O dla rejestru urządzeń zewnętrznych, rejestru stanu i rejestrów sterowania wyświetlaczem:
0 - adresy 3B4h, 3B5h, 3BAh,
1 - adresy 3D4h, 3D5h, 3DAh.

Rejestr urządzeń zewnętrznych
(feature control register) - adres 3BAh/3CAh

Zarezerwowane; bit 3; Zarezerwowane

bity 7-4 = Zarezerwowane.
bit 3 = Musi mieć wartość zero.
bity 2 - 0 = Zarezerwowane.

Zapis do rejestru odbywa się przez podanie adresu 3C2h, a odczyt przez podanie adresu 3CCh.


Zerowy rejestr stanu
(input status register zero) - adres 3C2h

Informacja o wygenerowaniu przerwania przy powrocie pionowym,

bit 7; Zarezerwowane

bit 7=Informacja o wygenerowaniu przerwania IRQ2:
0 - przerwanie IRQ2 nie zostało wygenerowane lub zostało
wygenerowane przez inne urządzenie,
1 - przerwanie IRQ2 zostało wygenerowane po powrocie pionowym.
Procedura obsługi przerwania musi wyzerować ten bit modyfikując zawartość rejestru końca powrotu pionowego w
układzie sterowania wyświetlaczem.
bity 6-0=Zarezerwowane.

Pierwszy rejestr stanu
(input status register one) - adres 3BAh (3dah)

Różne informacje o sterowniku.

Nie używ.; bit 5; bit 4; bit 3; Zarezerw.; bit 0;

bity 7-6=Zarezerwowane.
bity 5-4=Bity diagnostyczne układu określenia atrybutu.
bit 3=Powrót pionowy:
0 - poza powrotem pionowym,
1 - następuje powrót pionowy lub inne urządzenie wygenerowało przerwanie IRQ2.
bity 2-l=Zarezerwowane.
bit 0=Faza wyświetlania obrazu:
0 - powrót poziomy lub pionowy,
1 - odczyt pamięci obrazu (wyświetlanie informacji).

Rejestr odłączenia sterownika
(video subsystem enable register) - adres 3C3h

Modyfikacja zawartości tego rejestru pozwala na programowe odłączenie i dołączenie sterownika.

Zarezerwowane; bit 0;

bity 7-1=Zarezerwowane.
bit 0=Dołączenie/odłączenie sterownika:
0 - odłączenie sterownika,
1 - dołączenie sterownika.

Układ sekwencyjny (seąuencer)
Układ sekwencyjny odpowiada za generowanie sygnału zegarowego, przesyłanie danych pomiędzy pamięcią obrazu,
układem graficznym i układem określania atrybutu oraz lokalizację wyświetlanego zbioru znaków.

Rejestr adresowy układu sekwencyjnego (seąuencer address register) - adres 3C4h

Wpisanie wartości do rejestru adresowego określa rejestr wewnętrzny, do którego chcemy się odwołać.

Rejestr informacyjny układu sekwencyjnego - adres 3C5h

Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskazanego przez rejestr adresowy.

Rejestr zerowania
(reset register) - indeks 00h

Rejestr zerowania pozwala na zatrzymanie działania układu sekwencyjnego oraz ustawienie jego wyjść w stan wysokiej
impedancji.

Zarezerwowane; bit 1; bit 0;

bity 7-2=Zarezerwowane.
bit 1=Zerowanie synchroniczne:
0 - zatrzymanie układu sekwencyjnego,
1 - standardowa praca układu.
bit 0=Zerowanie asynchroniczne:
0 - natychmiastowe zatrzymanie pracy układu sekwencyjnego
(dane zostają utracone),
1 - standardowa praca układu.

Rejestr trybu taktowania
(clocking modę register) - indeks 01h

Rejestr trybu taktowania określa większość parametrów zegara sterownika.

Nie używane; bit 5; bit 4; bit 3; bit 2; nie używany; bit 0;

bity 7-6=Nie używane.
bit 5=Wygaszenie ekranu:
0 - standardowe wyświetlanie obrazu,
1 - odłączenie monitora przy dalszej pracy sterownika.
bit 4=Tryb ładowania rejestrów przesuwających:
- bajty pobierane są z czterech płatów pamięci,
1 - bajty ze wszystkich płatów pamięci są łączone w grupy po cztery, co powoduje zmniejszenie do 1/4 liczby kolorów,
ale umożliwia wykorzystanie przestrzeni adresowej o poczwórnym rozmiarze.
bit 3=Częstotliwość wyświetlania punktów:
0 - standardowa częstotliwość wyświetlania punktów,
1 - częstotliwość wyświetlania podzielona przez 2 (dla trybów 320 x 200 i 40 kolumn).
bit 2=Tryb ładowania rejestrów przesuwających:
0 - bajty pobierane są z czterech płatów pamięci,
1 - bajty z dwóch płatów pamięci są łączone w pary, co powoduje zmniejszenie liczby kolorów, ale umożliwia
wykorzystanie podwojonej przestrzeni adresowej.
bit 1=Nie używany.
bit 0=Szerokość znaków:
0 - znaki o szerokości 9 punktów (w tekstowych trybach pracy
bez CGA i EGA),
1 - Znaki o szerokości 8 punktów.

Rejestr blokowania pamięci
(map mask register) - indeks 02h

Rejestr blokowania pamięci umożliwia zezwolenie na modyfikację poszczególnych płatów pamięci.

Nie używane; bit 3; bit 2; bit 1; bit 0


bity 7-4=Nie używane.
bit 3=Trzeci płat pamięci - analogicznie do płatu 0.
bit 2=Drugi płat pamięci - analogicznie do płatu 0.
bit 1=Pierwszy płat pamięci - analogicznie do płatu 0.
bit 0= Zerowy płat pamięci:
0 - brak zezwolenia na modyfikację,
1 - zezwolenie na modyfikację.

Rejestr zbioru znaków (character map register) - indeks 03h

Rejestr służy do określenia numeru zbioru znaków wyświetlanych w trybie tekstowym.
Nie używane; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bity 7-6=Nie używane.
bity 5, 3, 2=Numer drugiego zestawu znaków.
bity 4, 1 0=Numer pierwszego zestawu znaków.

Rejestr trybu dostępu do pamięci (memory modę register) - indeks 04h

Rejestr trybu dostępu do pamięci służy do informowania układu sekwencyjnego o strukturze pamięci obrazu.

Nie używane; bit 3; bit 2; 1; 0;

bity 7-4=Nie używane.
bit 3=Adresowanie modulo 4:
0 - standardowy dostęp do pamięci obrazu,
1 - komórki płatu zerowego mają adresy podzielne przez 4. Komórki płatu pierwszego mają adresy podzielne przez 4 z
resztą l itd. W ten sposób czterokrotnie wzrasta rozmiar dostępnej przestrzeni adresowej.
bit 2=Adresowanie przemienne:
0 - parzyste komórki na parzystych płatach pamięci obrazu mają
adresy parzyste, komórki nieparzyste na płatach
nieparzystych mają adresy nieparzyste,
1 - standardowy dostęp do pamięci obrazu.

bit 1=Musi być równy 1
bit 0=Musi być równy 0.

Układ graficzny (graphics controller)

Układ graficzny odpowiada za przekazywanie danych pomiędzy pamięcią obrazu a procesorem oraz układem określania
atrybutu.

Rejestr adresowy układu graficznego
(graphics l and 2 address register) - adres 3CEh

Rejestr adresowy układu graficznego wiąże rejestr informacyjny z rejestrami wewnętrznymi układu.

Rejestr informacyjny układu graficznego - adres 3CFh

Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskazanego przez rejestr adresowy:

Rejestr ustawiania/zerowania (set/reset register) - indeks 00h

Rejestr ustawiania/zerowania służy do określenia bitów, które będą ustawiane lub zerowane i poddawane operacjom
logicznym - za jego pomocą ustawia się więc kolor, który zostanie nadany punktom podczas zapisu do pamięci.
Wykonywana operacja logiczna wybierana jest przez zapis do rejestru przesunięcia i wyboru funkcji.

Nie używane; bit 3; bit 2; bit l; bit 0;

bity 7-4=Zarezerwowane.
bit 3=Analogicznie dla trzeciego płatu pamięci,
bit 2=Analogicznie dla drugiego płatu pamięci,
bit l=Analogicznie dla pierwszego płatu pamięci.
bit 0=Tryb modyfikacji zerowego płatu pamięci:
0 - zerowanie (lub operacja logiczna z 0),
1 - ustawianie (lub operacja logiczna z 1).

Rejestr zezwolenia na ustawiania/zerowania (enable set/reset register) - indeks 0lh

Rejestr służy do zezwolenia na modyfikację płatów pamięci zgodnie z zawartością rejestru ustawiania/zerowania.

Nie używane; bit 3; bit 2; bit l; bit 0;

bity 7-4=Zarezerwowane.
bit 3=Analogicznie dla trzeciego płatu pamięci,
bit 2=Analogicznie dla drugiego płatu pamięci,
bit l=Analogicznie dla pierwszego płatu pamięci.
bit 0=Mmodyfikacja zerowego płatu zgodnie z zawartością rejestru ustawiania/zerowania:
0 - brak zezwolenia na modyfikację,
1- zezwolenie na modyfikację.

Zawartość tego rejestru jest uwzględniana tylko w zerowym trybie zapisu.

Rejestr porównania kolorów
(color compare register) - indeks 02h

Rejestr służy do określenia numeru koloru, z którym porównywane są punkty podczas odczytu pamięci obrazu.

Nie używane; bit 3; bit 2; bit l; bit 0;

bity 7-4=Nie używane.
bity 3-0=Numer porównywanego koloru.

Zawartość rejestru brana jest pod uwagę tylko w pierwszym trybie odczytu. Jeśli numer koloru punktu jest zgodny z
numerem zapisanym w rejestrze, wartości bitów odczytanych z pamięci obrazu będą równe l, w przeciwnym
przypadku - 0.

Rejestr przesunięcia i wyboru funkcji
(data rotate/function select register) - indeks 03h

Rejestr przesunięcia i wyboru funkcji służy do określenia działań wykonywanych na danych zapisywanych do pamięci
obrazu. Określa, o ile bitów ma zostać przesunięty bajt przesyłany do pamięci obrazu i czy na tym bajcie będzie
wykonywana operacja logiczna z za wartością rejestru zatrzaskowego.

Nie używane; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-5=Nie używane.
bity 4-3=Wykonywana funkcja logiczna:
00 - zapis bez wykonywania operacji logicznej,
01 - operacja logiczna AND,
10 - operacja logiczna OR,
11 - operacja logiczna XOR.
bity 2-0=Wielkość przesunięcia w prawo (przesunięcie jest przesunięciem cyklicznym).
Przesunięcie bajtu ma priorytet wyższy od funkcji logicznej i dlatego przeprowadzane jest jako pierwsze. Przesunięcie
wykonywane jest tylko w zerowym i trzecim trybie zapisu. Przesunięcie wykonywane jest wyłącznie na bajtach
zapisywanych przez procesor.

Rejestr wyboru płatu do odczytu
(read map select register) - indeks 04h

Rejestr wyboru płatu do odczytu służy do określenia numeru płatu pamięci, z którego zostanie odczytany następny bajt.

Nie używane; bit 1; bit 0;

bity 7-2=Nie używane
bity 1-0=Numer płatu pamięci przeznaczonego do odczytu.

Zawartość tego rejestru jest brana pod uwagę tylko w zerowym trybie odczytu.

Rejestr trybu dostępu do pamięci (modę register) - indeks 05h

Rejestr trybu dostępu do pamięci określa sposób zapisywania i odczytywania informacji z pamięci obrazu. Razem z
rejestrem dodatkowym służy do określenia trybu adresowania pamięci przez układ graficzny.

Nie używane; bit 6; bit 5; bit 4; bit 3; Nie używane; bit l; bit 0;

bit 7=Nie używany.
bit 6= Dotyczy trybu 256-kolorowego:
0 - bity z pamięci obrazu są przepisywane do rejestrów
przesuwających, l
1 - podczas zapisu do pamięci obrazu bajt jest zamieniany na
cztery dwubitowe wartości wysyłane do rejestru sterowania
atrybutem.
bit 5=Sposób ładowania rejestrów przesuwających:
0 - bity z pamięci obrazu są przepisywane do rejestrów przesuwających,
1 - nieparzyste bity każdego bajtu pamięci obrazu są umieszczane w rejestrach przesuwających nieparzystych płatów
pamięci. Bity parzyste bajtów pamięci obrazu są umieszczane w rejestrach przesuwających parzystych płatów pamięci.
Pozwala to na emulacje trybu czterokolorowego karty CGA. '
bit 4=Adresowanie przemienne:
0 - standardowy sposób adresowania,
1 - komórki o parzystych adresach położone na parzystych płatach pamięci mają adresy parzyste; komórki nieparzyste
na nieparzystych płatach mają adresy nieparzyste. Pozwala to na podwojenie rozmiaru przestrzeni adresowej.
bit 3=Numer trybu odczytu:
0 - zerowy tryb odczytu,
1- pierwszy tryb odczytu.
bit 2=Nie używany.
bity l-0=Tryb zapisu:
00 - zerowy tryb zapisu,
01 - pierwszy tryb zapisu,
10 - drugi tryb zapisu,
11 - trzeci tryb zapisu.

Rejestr dodatkowy
(miscellaneous register) - indeks 06h

Rejestr dodatkowy układu graficznego służy do określenia trybu pracy sterownika i początku pamięci obrazu. Razem z
rejestrem trybu dostępu do pamięci służy do określenia trybu adresowania pamięci przez układ graficzny.

Nie używane; bit 3; bit 2; bit 1; bit 0

bity 7-4=Nie używane.
bity 3-2=Adres początku pamięci obrazu oraz jej rozmiar:
00 - początek: A000:0000, rozmiar 128 kB, 01 - początek: A000:0000, rozmiar 64 kB,
10 - początek: 6000:0000, rozmiar 32 kB,
11 - początek: 8800:0000, rozmiar 32 kB.
bit 1=Tryb adresowania:
0 - adresowanie standardowe,
l - podczas zapisu/odczytu bajtu zerowany jest najmłodszy bit adresu, przez co nie są dostępne bajty o nieparzystych
adresach.
bit 0=Tryb pracy:
0 - tryb tekstowy,
1 - tryb graficzny.

Jeśli pamięć obrazu rozpoczyna się od adresu A000:0000 i ma rozmiar 128 kB, występuje konflikt adresów pomiędzy
sterownikami zainstalowanymi w systemie.

Rejestr pominięcia koloru
(color don't care register) - indeks 07h

Rejestr pominięcia koloru służy do określenia płatów pamięci obrazu pomijanych podczas porównywania z zawartością
rejestru porównywania kolorów.

Nie używane; bit 3; bit 2; bit 1; bit 0;

bity 7-4=Nie używane.
bit 3=Pominięcie trzeviego płatu pamięci - analogicznie jak dla zerowego.
bit 2=Pominięcie drugiego płatu pamięci - analogicznie jak dla zerowego.
bit l=Pominięcie pierwszego płatu pamięci - analogicznie jak dla zerowego.
bit 0=Pominięcie zerowego płatu pamięci:
0 - wartość bitu odczytanego z zerowego płatu pamięci jest
zgodna z wartością bitu w rejestrze porównywania kolorów,
l - wartość bitu odczytanego z zerowego bitu pamięci jest
zgodna z wartością bitu w rejestrze porównywania kolorów
wtedy, gdy oba bity są takie same.
Wpisanie do rejestru wartości 00h spowoduje zgodność wszystkich kolorów z numerem koloru zapisanym
w porównywaniu kolorów.

Rejestr modyfikacji bitów
(bit mask register) - indeks 08h

Rejestr modyfikacji bitów służy do określenia bitów, które nie będą modyfikowane pod-1 czas zapisu do pamięci obrazu.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-1=Analogicznie dla bitów 7-1 komórki pamięci obrazu.
bit 0=Modyfikacja zerowego bitu pamięci obrazu:
0 - bit nie będzie modyfikowany,
1 - podczas zapisu bit zostanie zmodyfikowany.
W zerowym trybie zapisu zawartość rejestru nie jest uwzględniana.

Układ sterowania atrybutem (attribute controller)

Układ sterowania atrybutem służy do zamiany kolorów zapisanych w pamięci obrazu na indeksy kolorów zdefiniowanych
w rejestrach wzorców kolorów. Układ sterowania atrybutem odpowiada także za kolor krawędzi ekranu.

Rejestr adresowy układu sterowania atrybutem (graphics l and 2 address register) - adres 3C0h

Rejestr adresowy układu sterowania atrybutem wiąże rejestr informacyjny z rejestrami wewnętrznymi układu. Jest także
rejestrem informacyjnym tego układu. Zawartość rejestrów wewnętrznych układu może być także odczytana pod adresem
wejścia-wyjścia 3Clh.

Nie używane; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-6=Nie używane.
bit 5=Dostęp do rejestrów palety:
0 - zabronienie dostępu do rejestrów palety,
1 - udostępnienie rejestrów palety.
bity 4-0=Indeks wewnętrznego rejestru układu sterowania atrybutem.

Powiązanie adresu informacyjnego z rejestrem wewnętrznym musi być poprzedzone od-zvtaniem zawartości pierwszego
rejestru stanu o adresie 3BAh (3DAh).


Przykład:
cli ;zablokowanie przerwań
mov dx,3dah
in al,dx ; skojarzenie rej.
; indeksowego z adresem 3C0h mov al,indeks_rej_wewnetrz
mov dx,3C0h
out dx,al ; wybór rejestru wewn.
nop ; zwłoka na zmianę stanu
nop ; sterownika mov al,wartość
out dx,al ; zapis wartości do rejestru
; wewnętrznego

Rejestr informacyjny układu sterowania atrybutem - adres 3C0h/3C1h

Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskazanego poprzez rejestr adresowy.
Z powodu wspólnego adresu z rejestrem indeksowym, przed dostępem do wewnętrznych rejestrów należy dokonać
odczytu zawartości pierwszego rejestru stanu o adresie 3BAh (3DAh).

Zmiana zawartości rejestrów układu sterowania atrybutem powinna być dokonywana podczas powrotu pionowego;
w przeciwnym przypadku na ekranie można zaobserwować efekt "śnieżenia".

Rejestry palety
(palette registers) - indeksy 00h - 0Fh

Rejestry palety służą do przyporządkowania numerom koloru odpowiednich wzorców kolorów, przechowywanych
w rejestrach wzorców kolorów przetwornika cyfrowo-analogowego.

Nie używane; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-6 =Nie używane.
bity 5-0=Numer rejestru wzorca koloru zawierającego 18-bitowy wzorzec koloru.

W trybach 256-kolorowych nie są uwzględniane rejestry palety. Indeksem rejestru wzorca koloru staje się wtedy
8-bitowa wartość zapisana w pamięci obrazu.

Rejestr sterowania trybem pracy (modę control register) - indeks 10h

Rejestr sterowania trybem pracy służy do określenia trybu działania układu sterowania atrybutem.

bit 7; bit 6; bit 5; Nie używane; bit 3; bit 2; bit l; bit 0;

bit 7=Tryb podziału wzorców kolorów na bloki:
0 - cztery bloki po 64 wzorce kolorów,
1 - szesnaście bloków po 16 wzorców kolorów.
bit 6=Liczba bitów opisujących kolor punktu:
0 - cztery bity na punkt (tryb 16-kolorowy),
11 - osiem bitów na punkt (tryb 256-kolorowy).
bit 5=0graniczenie przesunięcia poziomego w trybie split screen:
0 - jednoczesne przesunięcie obu obszarów,
1 - przesunięcie tylko górnego obszaru.
bit 4=Nie używany.
bit 3=Tryb interpretacji bajtu atrybutu:
0 - bity 4-7 atrybutu określają kolor tła znaku,
1 - bity 6-4 atrybutu określają kolor tła znaku; bit 7 równy l oznacza migotanie znaku.
bit 2=Tryb wyświetlania znaków o szerokości 9 punktów:
0 - dziewiąty punkt znaku przybiera kolor tła poprzedniego
znaku,
1 - dla znaków o kodach C0h - DFh dziewiąty punkt ma taki sam kolor jak punkt ósmy; dla pozostałych znaków
dziewiąty punkt ma kolor tła.
bit l=Rodzaj monitora:
0 - monitor kolorowy,
1 - monitor monochromatyczny.
bit 0=Tryb pracy sterownika:
0 - tryb tekstowy,
1 - tryb graficzny.

Rejestr krawędzi ekranu (overscan register) - indeks 11h

Rejestr krawędzi ekranu służy do określenia koloru (numeru wzorca koloru) brzegu ekranu.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Numer wzorca koloru krawędzi ekranu

Standardowym kolorem krawędzi ekranu we wszystkich trybach pracy jest kolor o numerze 0 (zwykle czarny).
Dla niektórych sterowników nie jest możliwe określenie koloru brzegu ekranu innego niż czarny.

Rejestr uwzględnianych płatów pamięci (color pianę enable register) - indeks 12h

Rejestr uwzględnianych płatów pamięci służy do określenia płatów pamięci, które będą brane pod uwagę podczas
wyświetlania punktów. Pominięte płaty są traktowane tak, jakby były wypełnione zerami.

Nie używane; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-6-Nie używane.
bity 5-4-Wybór bitów diagnostycznych układu sterowania atrybutem,
które mogą być odczytane z bitów 4 i 5 pierwszego rejestru stanu
oadresie3DAh(3BAh):
00- bity 2 i 0,
01 - bity 5 i 4,
10- bity3 i 1,
11 - bity 7 i 6.
bit 3=Uzględnienie trzeciego płatu pamięci podczas wyświetlania:
0 - trzeci płat pamięci nie jest uwzględniany,
1- trzeci płat pamięci jest uwzględniany.
bit 2=Analogicznie dla drugiego płatu,
bit l=Analogicznie dla pierwszego płatu,
bit 0=Analogicznie dla zerowego płatu.

Rejestr przesunięcia poziomego
(horizontal pel panning register) - indeks 13h

Rejestr przesunięcia poziomego służy do określenia przesunięcia obrazu w lewo.

Nie używane; bit 3; bit 2; bit l; bit 0;

bity 7-4=Nie używane.

bity 3-0=Wielkość przesunięcia poziomego w punktach:

0000; tryby tekstowe=1; tryby graficzne 256-kolorowe=0; tryby graficzne 16-kolorowe=0
0001; tryby tekstowe=2; tryby graficzne 256-kolorowe=-; tryby graficzne 16-kolorowe=1
0010; tryby tekstowe=3; tryby graficzne 256-kolorowe=1; tryby graficzne 16-kolorowe=2
0011; tryby tekstowe=4; tryby graficzne 256-kolorowe=-; tryby graficzne 16-kolorowe=3
0100; tryby tekstowe=5; tryby graficzne 256-kolorowe=2; tryby graficzne 16-kolorowe=4
0101; tryby tekstowe=6; tryby graficzne 256-kolorowe=-; tryby graficzne 16-kolorowe=5
0110; tryby tekstowe=7; tryby graficzne 256-kolorowe=3; tryby graficzne 16-kolorowe=6
0111; tryby tekstowe=8; tryby graficzne 256-kolorowe=-; tryby graficzne 16-kolorowe=7
1000; tryby tekstowe=0; tryby graficzne 256-kolorowe=-; tryby graficzne 16-kolorowe=-

Zawartość rejestru jest uwzględniana w tekstowych i graficznych trybach pracy.

Rejestr wyboru koloru
(color select register) - indeks 14h

Rejestr wyboru koloru służy do wybrania bloku wzorców kolorów (grupy rejestrów przetwornika cyfrowo-analogowego).

Nie używane; bit 3; bit 2; bit l; bit 0;

Dla siódmego bitu rejestru sterowania trybem równego l:
bity 7-4=Nie używane,
bity 3-0=Numer jednego z szesnastu bloków wzorców kolorów.

Dla siódmego bitu rejestru sterowania trybem równego 0:
bity 7-4=Nie używane.
bity 3-2=Numer jednego z czterech bloków wzorców kolorów,
bity 1-0=Nie używane.

Zawartość rejestru nie ma znaczenia w 256-kolorowych trybach pracy.

Przetwornik cyfrowo-analogowy (digital to analog coiwerter)

Rolą przetwornika cyfrowo-analogowego jest przetworzenie wzorców kolorów zawartych w rejestrach wzorców
kolorów na sygnał analogowy wysyłany do monitora. Wzorce kolorów są zapisane w 256 18-bitowych rejestrach.
Wartość 18-bitowa pozwala na wyświetlenie 262144 odcieni, choć sterownik VGA pozwala na jednoczesne wyświetlenie
tylko 256 kolorów. Sterowniki SVGA pozwalają na uzyskanie większej ilości odcieni (nawet ponad 16 milionów) i
jednoczesne wyświetlenie większej liczby kolorów na ekranie.
Dla zachowania zgodności pierwsze 16 kolorów sterownika VGA odpowiada szesnastu kolorom sterownika EGA.
Kolejnym numerom odpowiadają następujące kolory:

Numer rejestru; Kolor
0; czarny (black)
1; niebieski (blue)
2; zielony (green)
3; siny (cyan)
4; czerwony (red)
5; fioletowy (magenta)
6; brązowy (brown)
7; jasnoszary (light gray)
8; szary (gray)
9; jasnoniebieski (light blue)
10; jasnozielony (light green)
11; jasnosiny (light cyan)
12; jasnoczerwony (light red)
13; różowy (pink)
14; żółty (yellow)
15; biały (white)

Kolejne 16 kolorów odpowiada odcieniom szarości tych kolorów.

Rejestr ograniczenia koloru
(PEL mask register) - adres 3C6h

Rejestr ograniczenia koloru służy do ograniczenia liczby wzorców kolorów używanych podczas wyświetlania punktów na
ekranie. Wartość wysyłana przez układ sterowania! atrybutem oraz zawartość rejestru ograniczającego są argumentami
funkcji AND, któraj jako wynik zwraca numer wzorca koloru.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

Po każdej zmianie trybu pracy do rejestru ograniczającego jest wpisywana wartość FFh.

Rejestr stanu przetwornika
(DAĆ status register) - adres 3C7h

Rejestr stanu przetwornika cyfrowo-analogowego jest używany do odczytania stanu wzorców kolorów.

Nie używane; bit 1; bit 0O;

bity 7-2=Nie używane.
bity l-0=Stan rejestrów wzorców kolorów:
00 - rejestry wzorców kolorów są aktualnie odczytywane,
11 - rejestry wzorców kolorów są aktualnie zapisywane.

Rejestr jest przeznaczony wyłącznie do odczytu.

Rejestr adresowy odczytu przetwornika
(PEL address read modę register) - adres 3C7h

Rejestr adresowy odczytu przetwornika służy do rozpoczęcia cyklu odczytu zawartości rejestrów wzorców kolorów.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Numer pierwszego rejestru wzorca koloru przeznaczonego do odczytu.

Po wpisaniu wartości do rejestru powinien nastąpić cykl odczytów zawartości rejestrów wzorców kolorów.
Cykl odczytu wzorca koloru polega na pobraniu trzech 6-bitowych wartości odpowiadających kolejno składowej
czerwonej, zielonej i niebieskiej wzorca koloru. Jeden cykl odczytu wzorca wymaga trzech odczytów rejestru formacyjnego
przetwornika o adresie 3C9h. Po każdym cyklu odczytu zawartość rejestru adresowego jest automatycznie
zwiększana o jeden i może zostać rozpoczęty kolejny cykl odczytu wzorca koloru.

Pomiędzy dwoma odczytami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.

Rejestr jest przeznaczony wyłącznie do zapisu.

Rejestr adresowy zapisu przetwornika
(PEL address write modę register) - adres 3C8h

Rejestr adresowy zapisu przetwornika służy do rozpoczęcia cyklu zapisu do rejestrów wzorców kolorów.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0 =Numer pierwszego rejestru wzorca koloru przeznaczonego do zapisu.

Po wpisaniu wartości do rejestru powinien nastąpić cykl zapisów do rejestrów wzorców kolorów. Cykl zapisu
wzorca koloru polega na wpisaniu trzech 6-bitowych wartości odpowiadających kolejno składowej czerwonej,
zielonej i niebieskiej wzorca koloru. Jeden cykl zapisu wzorca wymaga trzech zapisów rejestru informacyjnego
przetwornika o adresie 3C9h. Po każdym cyklu zapisu zawartość rejestru adresowego jest automatycznie zwiększana o
jeden i może zostać rozpoczęty kolejny cykl zapisu wzorca koloru.

Pomiędzy dwoma zapisami rejestru informacyjnego powinno upłynąć co najmniej 240 ns.

Rejestr jest przeznaczony wyłącznie do zapisu.

Rejestr informacyjny przetwornika (PEL data register) - adres 3C9h

Rejestr informacyjny przetwornika służy do zapisu i odczytu informacji o wzorcach kolorów.

Nie używanybit; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-6=Nie używane.
bity 5-0=Wartość jednej z trzech składowych wzorca koloru.

Każdy cykl zapisu/odczytu wzorca koloru składa się z trzech operacji zapisu/odczytu 6-bitowych wartości
odpowiadających kolejno składowej czerwonej, zielonej i niebieskiej wzorca koloru.

Pierwszy cykl zapisu musi być poprzedzony wpisaniem do rejestru adresowego zapisii przetwornika (adres 3C8h)
numeru pierwszego modyfikowanego wzorca koloru. Pier-j wszy cykl odczytu musi być poprzedzony wpisaniem do
rejestru adresowego odc2 przetwornika (adres 3C7h) numeru pierwszego odczytywanego wzorca koloru.
Pomiędzy dwoma operacjami zapisu/odczytu powinno upłynąć co najmniej 240 ns.

Układ sterowania wyświetlaczem (CRT controller)

Układ sterowania wyświetlaczem odpowiada za zachowanie zależności czasowych przy wyświetlaniu obrazu. Rejestry
układu sterowania określają także kształt kursora i jego położenie, wysokość podkreślenia, wysokość znaków, poziomy
podział obrazu oraz położenie wyświetlanej strony w pamięci obrazu.

Rejestr indeksowy układu sterowania wyświetlaczem (CRTC address register) - adres 3B4h (3D4h)

Rejestr adresowy układu graficznego wiąże rejestr informacyjny z rejestrami wewnętrznymi układu.

Rejestr informacyjny układu sterowania wyświetlaczem - adres 3B5h (3D5h)

Poprzez rejestr informacyjny następuje zapis/odczyt informacji do/z rejestru wskazanego przez rejestr indeksowy.

Rejestr całkowitego czasu wyświetlania linii (horizontal total register) - indeks 00h

Rejestr całkowitego czasu wyświetlania linii służy do określenia czasu trwania cyklu wyświetlania poziomej linii obrazu.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Całkowity czas wyświetlania linii.

Na czas wyświetlania linii składa się czas wyświetlania punktów obrazu, czas wyświetlenia prawej krawędzi obrazu,
czas powrotu pionowego i czas wyświetlania lewej krawędzi obrazu.

Rejestr końca wyświetlania poziomego (horizontal display end register) - indeks 0lh

Wartość zawarta w rejestrze końca wyświetlania poziomego określa moment zakończenia wyświetlania linii obrazu.

bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bity 7-0=Szerokość obrazu w znakach.

Wyświetlanie poziome kończy się w momencie osiągnięcia przez licznik znaków wartości zawartej w rejestrze + l.

Rejestr początku wygaszania poziomego
(start horizontal blanking register) - indeks 02h

Wartość zawarta w rejestrze początku wygaszania poziomego określa moment rozpoczęcia wyświetlania prawego
brzegu ekranu i wygaszenie plamki.

bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bity 7-0=Wartość licznika znaków, przy której następuje wygaszenie plamki.

Rejestr końca wygaszania poziomego
(end horizontal blanking register) - indeks 03h

Wartość zawarta w rejestrze końca wyświetlania poziomego określa moment zakończenia wygaszania poziomego.

1; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bit 7=Zawsze równy j eden.
bity 6-5=Opóźnienie rozpoczęcia następnego cyklu:
00 - bez opóźnienia,
01 - jeden znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia.
bity 4-0=Mniej znaczące bity wartości określającej koniec wygaszania poziomego.

W rejestrze znajduje się pięć najmniej znaczących bitów wartości określającej koniec wygaszania poziomego.
Bit 5 znajduje się w rejestrze końca powrotu poziomego, a bity 7 - 6 są równe dwóm najbardziej znaczącym bitom
rejestru początku wygaszania poziomego.

Rejestr początku powrotu poziomego
(start horizontal retrace register) - indeks 04h

Wartość zawarta w rejestrze początku powrotu poziomego określa moment rozpoczęcia powrotu poziomego.
bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bity 7-0=Wartość określająca początek powrotu poziomego.

Rejestr końca powrotu poziomego (end horizontal retrace register) - indeks 05h
Wartość zawarta w rejestrze końca powrotu poziomego określa moment zakończenia powrotu poziomego.

bbit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;
bit 7=Bit piąty wartości określającej koniec wygaszania poziomego.
bity 6-5=Opóźnienie początku powrotu poziomego:
00 - bez opóźnienia,
01 - jeden znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia.
bity 4-0 =Mniej znaczące bity wartości określającej koniec powrotu poziomego.

Rejestr zawiera pięć mniej znaczących bitów wartości określającej koniec powrotu poziomego. Bity bardziej znaczące
są równe najstarszym bitom rejestru początku powrotu poziomego.

Rejestr całkowitego czasu wyświetlania obrazu (vertical total register) - indeks 06h

Wartość zawarta w rejestrze całkowitego czasu wyświetlania obrazu odpowiada ośmiu najmniej znaczącym bitom
wartości określającej całkowity czas wyświetlania obrazu.

Bity ósmy i dziewiąty znajdują się w rejestrze przepełnień układu sterowania wyświetlaczem.

bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bity 7-0=Najmniej znaczące bity wartości określającej całkowity czas wyświetlania obrazu.

Jednostką czasu jest czas wyświetlania pojedynczej linii. Cykl wyświetlania obrazu rozpoczyna się od wyświetlenia
pamięci obrazu, następnie wyświetlany jest dolny brzeg ekranu, następuje powrót pionowy, po czym wyświetlany
jest górny brzeg obrazu.

Rejestr przepełnień układu sterowania wyświetlaczem (cwerflow register) - indeks 07h

Rejestr przepełnień zawiera bardziej znaczące bity wartości zawartych w innych rejestrach.

bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bit 7=Dziewiąty bit wartości określającej początek powrotu pionowego.
bit 6=Dziewiąty bit wartości określającej koniec wyświetlania pionowego.
bit 5=Dziewiąty bit wartości określającej całkowity czas wyświetlania obrazu.
bit 4=Ósmy bit rejestru porównania linii.
bit 3=Ósmy bit wartości określającej początek wygaszania pionowego,
bit 2=Ósmy bit wartości określającej początek powrotu pionowego,
bit l=Ósmy bit wartości określającej koniec wyświetlania pionowego.
bit 0=Ósmy bit wartości określającej całkowity czas wyświetlania obrazu.

Rejestr położenia pierwszej linii
(preset scan linę register) - indeks 08h

Rejestr położenia pierwszej linii zawiera numer linii, od której wyświetlana jest pierwszą linia znaków.

Nie używane; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bit 7-nie używany;
bity 6-5-dodatkowe bity rejestru przesunięcia poziomego;
bity 4-0-numer pierwszej wyświetlanej linii obrazu.

W trybach graficznych przesuwanie obrazu wykonywane jest za pomocą zmiany zawartości rejestru adresowego
(indeks 0Ch i 0Dh).

Rejestr ostatniej linii znaku (max scan linę register) - indeks 09h

Rejestr ostatniej linii znaku służy do określenia wysokości wyświetlanych znaków w punktach.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7=Jakość obrazu przy rozdzielczości pionowej 200 linii:
0 - pojedyncze wyświetlanie linii,
1 - podwójne wyświetlanie linii.
bit 6=Dziewiąty bit rejestru porównania linii;
bit 5=Dziewiąty bit wartości określającej początek wygaszania pionowego;
bity 4-0=Wysokość znaku pomniejszona o jeden.

Rejestr pierwszej linii kursora (cursor start register) - indeks 0Ah

Rejestr pierwszej linii kursora określa odległość górnej linii kursora od górnej krawędzi znaku.

Nie używane; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bity 7-6=Nie używane.
bit 5=Schowanie kursora:
0 - kursor widoczny, l - kursor schowany.
bity 4-0=Numer górnej linii kursora pomniejszony o 1. Pierwsza linia od góry ma numer 0.

Rejestr ostatniej linii kursora (cursor end register) - indeks 0Bh

Rejestr ostatniej linii kursora określa odległość dolnej linii kursora od górnej krawędzi znaku.



Nie używanebit; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;
bit 7=Nie używany.
bitv 6-5=Opóźnienie wyświetlania kursora:
00 - brak opóźnienia,
01 - jeden znak opóźnienia,
10 - dwa znaki opóźnienia,
11 - trzy znaki opóźnienia.
bity 4-0=Numer dolnej linii kursora pomniejszony o 1. Pierwsza linia od góry ma numer 0.

Rejestry adresowe
(start address high register, start address Iow register)
- indeksy 0Ch i 0Dh

Rejestry adresowe zawierają adres pierwszego wyświetlanego znaku (w trybach tekstowych) lub punktu (w trybach
graficznych)
.
bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bit 7; bit 6; bit 5; bit 4; bit 3 ; bit 2; bit l; bit 0;

bity 7-0=Bardziej i mniej znacząca część adresu pierwszego wyświetlanego punktu lub znaku.
Bardziej znacząca część adresu znajduje się w rejestrze o indeksie 0Ch,. mniej znacząca - w rejestrze o indeksie 0Dh.
Zmiana zawartości tych rejestrów powoduje przesunięcie początku wyświetlanego okna.

Rejestry pozycji kursora
(cursor location high register, cursor location Iow register) indeksy 0Eh i 0Fh

Rejestry pozycji kursora mają adres znaku zawierającego kursor (w trybach tekstowych).

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Bardziej i mniej znacząca część adresu znaku zawiającego kursor.

Bardziej znacząca część adresu zawarta jest w rejestrze o indeksie 0Eh, mniej znacząc - w rejestrze o indeksie 0Fh.

Rejestr początku powrotu pionowego (yertical retrace start) - indeks lOh

W rejestrze początku powrotu pionowego znajduje się osiem mniej znaczących bitów] wartości określającej moment
początku powrotu pionowego. Bity ósmy i dziewiąty war-] tości określającej rozpoczęcie powrotu pionowego znajdują
się w rejestrze przepełnień.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Mniej znaczące bity wartości określającej rozpoczęcie powrotu pionowego.

Rejestr końca powrotu pionowego (vertical retrace end) - indeks 11h

Rejestr końca powrotu pionowego zawiera cztery mniej znaczące bity wartości określa jącej moment zakończenia powrotu
pionowego.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bit 7=Zabezpieczenie przed zapisem rejestrów o indeksach 00h - 07h:
0 - zezwolenie na modyfikację,
l - brak zezwolenia na modyfikację.
bit 6=Liczba cykli odświeżania pamięci RAM sterownika:
0 - trzy cykle odświeżania na jedną linię,
l - pięć cykli odświeżania na jedną linię.
bit 5=Zezwolenie na przerwanie powrotu pionowego:
0 - zezwolenie na generowanie przerwania,
l - brak zezwolenia na generowanie przerwania.
bit 4=Potwierdzenie przyjęcia przerwania powrotu pionowego:
0 - przyjęcie żądania obsługi przerwania,
l - zakończenie obsługi przerwania.
bity 3-0 =Mniej znaczące bity wartości określającej moment końca powrotu pionowego.

Wystąpienie przerwania powrotu pionowego jest sygnalizowane zmianą stanu linii IRQ
2. Standardowy sterownik VGA nie generuje przerwania powrotu pionowego.

Rejestr końca wyświetlania pionowego (yertical display end register) - indeks 12h

Rejestr końca wyświetlania pionowego zawiera osiem mniej znaczących bitów wartości określającej moment końca
wyświetlania zawartości pamięci obrazu.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Mniej znaczące bity wartości określającej moment końca wyświetlania pionowego pomniejszony o 1.

Bity ósmy i dziewiąty wartości określającej moment końca wyświetlania pionowego znajdują się w rejestrze przepełnień.

Rejestr długości linii
(offset register) - indeks 13h

Rejestr długości linii zawiera wartość określającą długość jednej linii wyświetlanego obrazu w bajtach, słowach lub
podwójnych słowach w zależności od zawartości rejestru trybu adresowania.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0 =Rozmiar jednej linii wyświetlanego obrazu w bajtach.

Rejestr pozycji podkreślenia
(underline location register) - indeks 14h

Rejestr pozycji podkreślenia zawiera numer linii, w której będzie wyświetlane podkreślenie.

Nie używ.; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bit 7=Nie używany.
bit 6=Tryb adresowania pamięci obrazu:
0 - tryb jest określany przez szósty bit rejestru trybu
adresowania,
l - tryb podwójnych słów (tryb 256-kolorowy - interpretowana jest co czwarta komórka pamięci obrazu).
bit 5=Dzielnik licznika znaków:
0 - przejście do następnej komórki pamięci po zwiększeniu
licznika o l, l - przejście do następnej komórki pamięci po zwiększeniu
licznika o 4.
bity 4-0=Numer linii, w której będzie wyświetlane podkreślenie.

Rejestr pozycji podkreślenia zawiera także informację uzupełniającą o trybach adresowania stosowanych przez sterownik.

Rejestr początku wygaszania pionowego (start vertical blanking register) - indeks 15h

Rejestr początku wygaszania pionowego zawiera osiem mniej znaczących bitów wartości określającej moment rozpoczęcia
wygaszania pionowego.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Mniej znaczące bity wartości określającej moment początku wygaszania pionowego.

Ósmy bit wartości początku wygaszania pionowego znajduje się w rejestrze przepełnień, a bit dziewiąty znajduje się w
rejestrze wysokości znaku.

Rejestr końca wygaszania pionowego
(end vertical blanking register) - indeks 16h

W rejestrze końca wygaszania pionowego znajduje się osiem mniej znaczących bitów wartości określającej moment
zakończenia wygaszania pionowego.

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Mniej znaczące bity wartości określającej moment końca wygaszania pionowego.

Bity ósmy i dziewiąty wartości określającej koniec wygaszania pionowego są takie same jak bity ósmy i dziewiąty
wartości początku wygaszania pionowego.

Rejestr trybu adresowania
(modę control register) - indeks 17h

Rejestr trybu adresowania razem z rejestrem pozycji podkreślenia określa sposób adresowania pamięci obrazu.

bit 7; bit 6; bit 5; nie używ.; bit 3; bit 2; bit l; bit 0;

bit 7=Zerowanie układu:
0 - brak zezwolenia na wykonanie powrotu pionowego
i poziomego,
1 - standardowa praca.
bit 6=Tryb adresowania pamięci obrazu:
0- tryb bajtów (interpretowana jest każda komórka pamięci),
l - tryb słów (interpretowana jest co druga komórka pamięci).
bit 5=Bit używany, jeśli wyzerowany bit szósty:
0 - podczas interpretowania pamięci obrazu zerowy bit adres jest
zastępowany bitem trzynastym,
l - podczas interpretowania pamięci obrazu zerowy bit adresu jest zastępowany bitem piętnastym.
bit 4=Nie używany;
bit 3=Dzielnik licznika znaków:
0 - przejście do następnego adresu, gdy licznik znaków zwiększa się o l,
l - przejście do następnego adresu, gdy licznik znaków zwiększa się o 2.
bit 2=Sposób zwiększania licznika linii:
0 - licznik linii jest zwiększany po każdym powrocie poziomym, l - licznik linii jest zwiększany co drugi powrót poziomy.
bit l=Przesunięcie o 16 kB:
0 - pamięć obrazu podzielona jest na część zawierającą linie
o numerach, których reszta z dzielenia przez 4 wynosi O lub l (16 kB) i na część zawierającą linie o numerach, których
reszta z dzielenia przez 4 wynosi 2 lub 3 (16 kB),
l - linie parzyste i nieparzyste występują na przemian.
bit 0=Zgodność z CGA:
0 - pamięć obrazu podzielona jest na część zawierającą linie
parzyste (8 kB) i część zawierającą linie nieparzyste (8 kB),
l - linie parzyste i nieparzyste występują na przemian.

Rejestr porównania linii
(linę compare register) - indeks 18h

Rejestr porównania linii umożliwia poziome podzielenie ekranu na dwa, w dużym stopniu niezależne obszary.
bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit l; bit 0;

bity 7-0=Numer linii podziału ekranu.

Rejestr porównania linii zawiera osiem mniej znaczących bitów numeru linii dzielącej obraz. Bit ósmy znajduje się w
rejestrze przepełnień, a bit dziewiąty znajduje się w rejestrze wysokości znaku.

Adres pierwszego wyświetlanego znaku dla górnego obszaru wynika z zawartości rejestrów adresowych, a adres
początku dolnego obszaru zawsze wynosi zero.

Funkcje BIOS
obsługujące karty graficzne

Funkcje konieczne do obsługi sterowników VGA i EGA zawarte są w BlOS-ach tych sterowników. BIOS sterownika VGA
obejmuje wszystkie funkcje BIOS-u sterownika EGA; przy opisie podamy ewentualne różnice i dostępność danej funkcji.

Funkcje BIOS-u sterownika można podzielić tematycznie na:
-Funkcje określające tryb pracy i ogólne parametry sterownika (OOh - 07h oraz OFh).
-Funkcje dostępu do ekranu (08h - OEh).
-Funkcje służące do definiowania kolorów (lOh).
-Funkcje generatora znaków (11 h).
-Funkcje konfigurujące sterownik (l2h).
-Funkcje uzupełniające (13h, lAh - ICh).


Do wszystkich funkcji BIOS-u sterownika można odwołać się poprzez przerwanie programowe INT 10h. Parametry
wejściowe i wyjściowe przekazywane są w rejestrach procesora oraz poprzez wydzielone obszary pamięci. Numer funkcji i
podfunkcji przekazywany jest zawsze w rejestrach AH i AL lub BL.

Funkcje określające tryb pracy i ogólne parametry sterownika

Funkcja 00h - wybór trybu pracy sterownika (EGA/VGA)

Funkcja służy do wyboru trybu pracy sterownika.

Parametry wejściowe:

AH 00h;
AL bit 7= l; zawartość pamięci obrazu pozostanie bez zmian,
bit 7= 0; przy zmianie trybu pamięć zostanie wyzerowana,
bity 0-6; numer trybu.

Wyjście:

- brak -

Uwagi dodatkowe:

Tryby pracy standardowego sterownika VGA:

Liczba; ;
Numer trybu; Rozdzielczość; Liczba kolorów; Tryb graficzny/tekstowy; Emulacja sterownika
00h; 40x25; 16; tekstowy; CGA
01h; 40x25; 16; tekstowy; CGA
02h; 80x25; 16; tekstowy; CGA
03h; 80x25; 16; tekstowy; CGA
04h; 320x200; 4; graficzny; CGA
05h; 320x200; 4; graficzny; CGA
06h; 640x200; 2; graficzny; CGA
07h; 80x25; 2; tekstowy; MDA
0Dh; 320x200; 16; graficzny; EGA
0Eh; 640x200; 16; graficzny; EGA
0Fh; 640x350; 2; graficzny; EGA mono
I0h; 640x350; 16; graficzny; EGA
11h; 640x480; 2 graficzny; MCGA
12h; 640x480; 16; graficzny; VGA
13h; 320x200; 256; graficzny; MCGA


Funkcje dostępu do ekranu.

Funkcja 01h - określenie postaci kursora (EGA/VGA)

Funkcja służy do określenia wysokości i położenia wewnątrz znaku migającego prostokąta wyróżniającego znak na
ekranie.

Parametry wejściowe:
AH 01h;
CH bit 5- 1 kursor schowany;
bit 5- 0 kursor wyświetlany,
bity 4-0 numer górnej linii kursora,
CL bity 0-4 numer dolnej linii kursora.

Wyjście:
- brak -

Uwagi dodatkowe:
Najwyższa linia ma numer 0. Ustawienie numeru górnej linii mniejszego lub równego 3 i ustawienie numeru dolnej linii
większego lub równego 4 powoduje wyświetlenie linii zawartych pomiędzy czterema liniami górnymi i dolnymi.

Funkcja 02h - ustawienie pozycji kursora (EGA/VGA)
Funkcja służy do ustawienia kursora na ekranie.

Parametry wejściowe:
AH 02h;
BH numer strony;
DH numer wiersza;
DL numer kolumny.

Wyjście:
- brak -

Uwagi dodatkowe:
Lewy górny róg ekranu ma pozycję 0,0. W trybach 04h do 06h i 11 h do 13h istnieje tylko jedna strona graficzna o
numerze 0

Funkcja 03h - pobranie pozycji i postaci kursora (EGA/VGA)
Funkcja służy do odczytania bieżącego kształtu i położenia kursora.

Parametry wejściowe:
AH 03h;
BH numer strony.

Wyjście:
CH numer górnej linii kursora;
CL numer dolnej linii kursora;
DH numer bieżącego wiersza;
DL numer bieżącej kolumny.

Uwagi dodatkowe:
Lewy górny róg ekranu ma pozycję 0,0.

Funkcja 05h - ustawienie numeru wyświetlanej strony (EGA/VGA)
Funkcja służy do wyboru wyświetlanej strony.

Parametry wejściowe:
AH 05h;
AL numer strony.

Uwagi dodatkowe:
W różnych trybach pracy występuje różna ilość stron. Dla trybów 04h - 06h oraz 11 h -13h istnieje tylko strona 0, dla
trybów 0Fh - 10h istnieją strony 0 i l, dla trybu 0Eh istnieją strony 0 - 3, a dla trybów 00h - 03h, 07h i 0Dh istnieją strony
0-7. Wywołanie funkcji nie zmienia zawartości pamięci obrazu.

Funkcja 06h - przewinięcie tekstu w górę (EGA/VGA)
Funkcja służy do przewinięcia w górę podanego obszaru ekranu. Wiersze pozostające u dołu obszaru wypełnione będą
spacjami z podanym atrybutem.

Parametry wejściowe:
AH 06h;
AL wartość przesunięcia w wierszach;
BH atrybut spacji wypełniających puste linie;
CH numer wiersza lewego górnego rogu obszaru;
CL numer kolumny lewego górnego rogu obszaru;
DH numer wiersza prawego dolnego rogu obszaru;
DL numer kolumny prawego dolnego rogu obszaru.

Wyjście:
- brak -

Uwagi dodatkowe:
Wiersze przewinięte za górną krawędź obszaru zostają utracone. Podanie wartości przesunięcia równej 0 (AL = 0)
powoduje wypełnienie spacjami (wymazanie) całego podanego obszaru. Pozycja kursora pozostaje bez zmian.

Funkcja 07h - przewinięcie tekstu w dół (EGA/YGA)
Funkcja służy do przewinięcia w dół podanego obszaru ekranu. Wiersze pozostające u góry obszaru wypełnione będą
spacjami z podanym atrybutem.

Parametry wejściowe:
AH 06h;
AL wartość przesunięcia w wierszach;
BH atrybut spacji wypełniających puste linie;
CH numer wiersza lewego górnego rogu obszaru;
CL numer kolumny lewego górnego rogu obszaru;
DH numer wiersza prawego dolnego rogu obszaru;
DL numer kolumny prawego dolnego rogu obszaru.

Wyjście:
- brak -

Uwagi dodatkowe:
Wiersze przewinięte za dolną krawędź obszaru zostają utracone. Podanie wartości przesunięcia równej 0 (AL = 0)
powoduje wypełnienie spacjami (wymazanie) całego podanego obszaru. Pozycja kursora pozostaje bez zmian.

Funkcja 0Fh - pobranie numeru trybu pracy sterownika (EGA/VGA)
Funkcja służy do odczytu numeru trybu pracy sterownika.

Parametry wejściowe:
AH 0Fh.

Wyjście:
AH liczba wyświetlanych kolumn;
AL numer trybu pracy;
BH numer wyświetlanej strony.

Funkcje dostępu do ekranu

Funkcja 08h - pobranie kodu i atrybutu znaku,
znajdującego się w miejscu wskazywanym przez kursor (EGA/VGA)

Parametry wejściowe:
AH 08h;
BH numer strony.

Wyjście:
AH atrybut znaku;
AL kod ASCII znaku.

Uwagi dodatkowe:
W trybach graficznych zawartość rejestru AL powinna zostać zignorowana.

Funkcja 09h - ustawienie atrybutu i wypisanie znaku w pozycji wskazywanej przez kursor (EGA/VGA)
Funkcja służy do wypisania znaku (lub znaku i podanej liczby jego kopii) w miejscu wskazywanym przez kursor.
Ustawiane są także atrybuty wypisywanych znaków.

Parametry wejściowe:
AH 09h;
AL kod ASCII znaku;
BH numer strony;
BL w tekstowych trybach pracy - atrybut znaku, w graficznych trybach pracy - numer koloru;
CX ilość kopii znaku.

Uwagi dodatkowe:
Pozycja kursora nie ulega zmianie; znaki sterujące nie są brane pod uwagę, lecz są wyświetlane tak jak normalne znaki.

Funkcja 0Ah - wypisanie znaku
w pozycji wskazywanej przez kursor (EGA/VGA)
Funkcja służy do wypisania znaku (lub kilku jego kopii) w miejscu wskazywanym przez kursor. Atrybuty wypisywanych
znaków zależą od atrybutów ekranu.

Parametry wejściowe:
AH 0Ah;
AL kod ASCII znaku;
BH numer strony;
BL kolor (numer koloru) w graficznych trybach pracy;
CX liczba kopii znaku w AL.

Wyjście:
- brak -
Uwagi dodatkowe:

Atrybuty wyświetlanych kopii znaku pobierane są z kolejnych pozycji na ekranie. Pozycja kursora nie ulega zmianie,
gdyż kody sterujące nie są interpretowane, lecz wyświetlane tak jak normalne znaki.

Funkcja 0Bh - wybranie koloru tła
i krawędzi ekranu/wybranie palety kolorów

Podfunkcja 00h - wybór koloru tła i krawędzi ekranu (EGA/VGA)
W graficznych trybach pracy podfunkcja służy do określenia koloru tła i koloru krawędzi ekranu, natomiast w trybach
tekstowych służy tylko do wyboru koloru krawędzi ekranu.

Parametry wejściowe:
AH 0Bh;
BH 00h;
BL numer koloru.

Wyjście:
- brak -

Uwagi dodatkowe:
W tekstowych trybach pracy numer koloru musi zawierać się w przedziale 0-31. W graficznych trybach pracy numer
koloru musi zawierać się w przedziale 0-15.

Podfunkcja 01h - wybór palety kolorów (EGA/VGA)
Podfunkcja służy do wyboru palety kolorów wykorzystywanej w graficznych trybach pracy.

Parametry wejściowe:
AH 0Bh;
BH 0lh;
BL numer palety.

Wyjście:
- brak -

Uwagi dodatkowe:
Funkcja może być używana tylko w trybach pracy odpowiadających karcie CGA. W innych trybach do zmiany palety
służą podfunkcje OOh i 02h funkcji 10h.
Numer palety kolorów musi zawierać się w przedziale 0 - 127. Palety kolorów i odpowiadające im barwy przedstawia tabela:

Tabela

Palety o numerach parzystych;

Numer koloru= 0; Barwa =kolor tła
Numer koloru= 1; Barwa = zielony (GREEN)
Numer koloru= 2; Barwa =czerwony (RED)
Numer koloru= 3; Barwa=niebieski (BLUE)

Palety o numerach nieparzystych

Numer koloru= 0; Barwa =kolor tła
Numer koloru= 1; Barwa =siny (CYAN)
Numer koloru= 2; Barwa =fioletowy (MAGENTA)
Numer koloru= 2; Barwa =biały (WHITE)

Funkcja 0Ch - wyświetlenie punktu (piksela) w graficznych trybach pracy (EGA/VGA)
Funkcja służy do wyświetlenia punktu w określonym miejscu i w podanym kolorze.

Parametry wejściowe:
AH 0Ch;
AL kolor (numer koloru) punktu;
BH numer strony;
CX numer kolumny;
DX numer linii.

Wyjście:
- brak -

Uwagi dodatkowe:
Ustawienie najbardziej znaczącego bitu rejestru BL (bit 7=1) powoduje wykonanie funkcji XOR pomiędzy kolorem w
rejestrze AL a kolorem na ekranie.

Przy dużej liczbie punktów użycie tej funkcji znacznie spowalnia działanie programu. Bezpośredni dostęp do pamięci
obrazu trwa o wiele krócej.

Funkcja 0Dh - odczytanie koloru punktu (piksela) w graficznych trybach pracy (EGA/VGA)
Funkcja służy do pobrania koloru punktu w określonym miejscu ekranu.

Parametry wejściowe:
AH 0Dh;
BH numer strony;
CX numer kolumny;
DX numer linii.

Wyjście:
AL kolor (numer koloru) punktu.

Uwagi dodatkowe:
Przy dużej liczbie punktów użycie tej funkcji znacznie spowalnia działanie programu. Bezpośredni dostęp do pamięci
obrazu trwa o wiele krócej.

Funkcja 0Eh - wyświetlenie znaku
z przemieszczeniem kursora (EGA/VGA)
Funkcja służy do wyświetlenia znaku oraz przesunięcia kursora na następną pozycję.
Parametry wejściowe:
AH 0Eh;
AL kod ASCII znaku;
BH numer strony;
BL w graficznych trybach pracy numer koloru znaku.

Wyjście:
- brak -

Uwagi dodatkowe:
Funkcja działa zarówno w trybach graficznych jak i tekstowych. Brane są pod uwagę niektóre kody sterujące:
07h - sygnał dźwiękowy BEL,
08h - cofnięcie kursora BS,
0Dh - powrót na początek linii CR
0Ah - przejście do nowej linii LF,
natomiast pozostałe kody sterujące wyświetlane są jak normalne znaki.

Funkcje służące do definiowania kolorów

Funkcja 10h - operacje na palecie kolorów

Podfunkcja 00h - ustawienie jednego koloru palety (VGA)
Podfunkcja służy do określenia pojedynczego koloru palety.

Parametry wejściowe:
AH 10h;
AL 00h;
BH numer wzorca koloru;
BL numer koloru w palecie.

Wyjście:
- brak -

Uwagi dodatkowe:
Zmiana koloru następuje przez wpisanie numeru wzorca koloru do określonego rejestru palety.

Podfunkcja 01h - zmiana koloru krawędzi ekranu (EGA/VGA)
Podfunkcja służy do ustawienia koloru obrzeża ekranu.

Parametry wejściowe:
AH 10h;
AL 01h;
BH numer wzorca koloru.

Wyjście:
- brak -

Uwagi dodatkowe:
Zmiana koloru następuje przez wpisanie numeru wzorca koloru do określonego rejestru palety.

Podfunkcja 02h - zmiana kolorów palety i krawędzi ekranu (VGA)
Podfunkcja służy do jednoczesnego ustawienia wszystkich kolorów palety oraz koloru krawędzi ekranu.

Parametry wejściowe:
AH 10h; AL 02h;
ES:DX adres obszaru zawierającego tablicę kolorów (17 bajtów = 16 kolorów + krawędzi).

Wyjście:
- brak -

Uwagi dodatkowe:
Zmiana kolorów następuje przez wpisanie numeru wzorca kolorów do kolejnych rejestrów palety oraz do rejestru koloru
krawędzi ekranu. Pierwsze 16 bajtów wskazywanego obszaru powinno zawierać numery kolejnych wzorców
kolorów (0 - 15), a bajt o adresie ES:DX + 16 powinien zawierać numer wzorca koloru krawędzi ekranu.

Standardowe kolory w trybach 16-kolorowych pokazuje poniższa tabela:
Numer koloru; Kolor

0; czarny (black)
1; niebieski (blue)
2; zielony (green)
3; siny (cyan)
4; czerwony (red)
5; fioletowy (magenta)
6; brązowy (brown)
7; jasnoszary (light gray)
8; szary (dark gray)
9; jasnoniebieski (light blue)
10; jasnozielony (light green)
11; jasnosiny (light cyan)
12; jasnoczerwony (light red)
13; różowy (pink)
14; żółty (yellow)
15; biały (white)


Podfunkcja 03h - ustawienie sposobu interpretacji atrybutu znaku (EGA/VGA)
Podfunkcja służy do określenia w jaki sposób będzie interpretowany najstarszy bit atrybutu znaku.

Parametry wejściowe:
AH 10h;
AL 03h;
BH sposób interpretacji bitów atrybutu:
1 - bit 7= 1-znak będzie migotał,
bit 7=0 - znak nie będzie migotał,
bity 6-4 - numer koloru tła (0 -7),
bity 3-0 - numer koloru znaku (0 - 15),
0 - bity 7-4 - numer koloru tła (O - 15),
bity 3-0 - numer koloru znaku (O - 15).

Wyjście:
- brak -

Uwagi dodatkowe:
Użycie funkcji ma sens tylko w trybach tekstowych.

Podfunkcja 07h - pobranie pojedynczego koloru palety (VGA)
Podfunkcja służy do odczytu numeru wzorca koloru podanego rejestru palety.

Parametry wejściowe:
AH 10h;
AL 07h;
BL numer koloru w palecie.

Wyjście:
BH numer wzorca koloru.

Uwagi dodatkowe:
Zwracana informacja jest odczytywana z odpowiedniego rejestru palety.

Podfunkcja 08h - pobranie koloru krawędzi ekranu (VGA)
Podfunkcja służy do odczytu numeru wzorca koloru krawędzi ekranu.

Parametry wejściowe:
AH 10h;
AL 08h;

Wyjście:
BH numer wzorca koloru krawędzi ekranu.

Uwagi dodatkowe:
Zwracana informacja jest odczytywana z rejestru koloru krawędzi ekranu.

Podfunkcja 09h - pobranie kolorów palety i krawędzi ekranu (VGA)
Podfunkcja służy do jednoczesnego odczytu numerów wzorców kolorów całej palety i krawędzi brzegu ekranu.

Parametry wejściowe:
AH 10h;
AL 09h;
ES:DX adres obszaru pamięci do przechowania informacji o kolorach (17 bajtów).

Wyjście:
- brak -

Uwagi dodatkowe:
Zwracana informacja jest odczytywana z kolejnych rejestrów palety oraz rejestru koloru krawędzi ekranu i umieszczana
we wskazanym obszarze pamięci. Pierwsze szesnaście bajtów zawiera numery kolejnych wzorców kolorów (0 - 15),
a bajt o adresie ES:DX + 16 zawiera numer wzorca koloru krawędzi ekranu.

Podfunkcja 10h - określenie pojedynczego wzorca koloru (VGA)
Podfunkcja służy do określenia wzorca koloru poprzez podanie trzech składowych koloru składających się na 18-bitowy
wzorzec.

Parametry wejściowe:
AH 10h;
AL 10h;
BX numer wzorca koloru (0 - 255);
DH składowa czerwona koloru (0 - 63);
CH składowa zielona koloru (0 - 63);
CL składowa niebieska koloru (0 - 63).

Wyjście:
- brak -

Uwagi dodatkowe:
Wpisywane składowe powinny zawierać się w przedziale 0-63, wartości większe w standardowym sterowniku VGA
zostaną obcięte do 6 bitów. Jeśli zostało włączone przeliczanie barw do odcieni szarości (podfunkcja IBh funkcji 10h),
to wzorzec koloru zostanie przeliczony do odpowiedniego odcienia szarości, wybranego z 64 poziomów.

Podfunkcja 12h - określenie bloku wzorców kolorów (VGA)
Podfunkcja służy do określenia wzorców kolorów poprzez podanie trzech składowych koloru dla każdego koloru
w podanym bloku.

Parametry wejściowe:
AH 10h;
AL 12h;
BX numer pierwszego wzorca koloru w bloku (0 - 255);
CX liczba ustawianych wzorców;
ES:DX adres obszaru zawierającego kolejne wzorce kolorów.

Wyjście:
- brak -

Uwagi dodatkowe:
Kolejne rejestry wzorców kolorów w bloku są wypełniane wartościami ze wskazanego obszaru, który powinien zawierać
kolejno: składową czerwoną, składową zieloną i składową niebieską pierwszego koloru, składową czerwoną, składową
zieloną, składową niebieską drugiego koloru itd.
Wpisywane składowe powinny zawierać się w przedziale 0 - 63, wartości większe w standardowym sterowniku VGA
zostaną obcięte do 6 bitów. Jeśli zostało włączone przeliczanie barw do odcieni szarości (podfunkcja IBh funkcji 10h),
to wzorzec koloru zostanie przeliczony do odpowiedniego odcienia szarości, wybranego z 64 poziomów.

Parametry wejściowe:
AH 10h; AL 15h
BX numer wzorca koloru (0 - 255).

Wyjście:
DH składowa czerwona koloru;
CH składowa zielona koloru;
CL składowa niebieska koloru.

Uwagi dodatkowe:
Pobrana informacja jest odczytywana z 18-bitowego rejestru wzorca koloru.

Podfunkcja 17h - pobranie bloku wzorców kolorów (VGA)
Podfunkcja służy do odczytania składowych wzorców kolorów w podanym bloku.

Parametry wejściowe:
AH 10h;
AL 15h;
BX numer pierwszego pobieranego wzorca koloru;
CX liczba pobieranych wzorców koloru;
ES:DX adres obszaru pamięci, w którym zapisane zostaną składowe kolorów.

Wyjście:
- brak -

Uwagi dodatkowe:
Informacja o składowych odczytywana jest z odpowiednich 18-bitowych rejestrów wzorców kolorów bloku.
Po wykonaniu funkcji obszar wskazywany przez ES:DX zawiera trzybajtowe wzorce kolorów kolejno dla wszystkich
kolorów we wskazanym bloku. Następne trzy bajty zawierają 6-bitową czerwoną składową, 6-bitową zieloną
składową i 6-bitową składową niebieską koloru.

Podfunkcja 1Ah - pobranie informacji o blokach wzorców kolorów (VGA)
Funkcja służy do pobrania informacji o numerze aktywnego bloku i typie bloków wzorców kolorów.

































































Parametry wejściowe:
AH 10h;
AL lAh.
Wyjście:
BH numer aktywnego bloku wzorców koloru;
BL l - bloki wzorców kolorów zgrupowane są w 16 bloków po 16 wzorców,
0 - bloki wzorców kolorów zgrupowane są w 4 bloki po 64 wzorce.

Uwagi dodatkowe:
- brak -

Podfunkcja IBh - przekształcenie do poziomów szarości (VGA)
Podfunkcja służy do przeliczenia wzorców kolorów w podanym bloku do odpowiadających im poziomów
szarości.

Parametry wejściowe:
AH 10h;
AL IBh;
BX numer pierwszego przeliczanego wzorca koloru;
CX liczba przeliczanych wzorców kolorów.

Wyjście:
- brak -

Uwagi dodatkowe:
Dla wszystkich wzorców w bloku zostaje policzona wartość poziomu szarości. Każda barwa składowa zastępowana jest
sumą ważoną trzech barw, składającą się z 0,30 składowej czerwonej, 0,59 składowej zielonej i 0,11 składowej niebieskiej
koloru. Pierwotne wartości składowych zostają utracone.

Funkcje generatora znaków

Funkcja11h - działania na generatorze znaków

Podfunkcja 00h - definiowanie znaków tekstowego trybu pracy (EGA/VGA)
Podfunkcja służy do zastąpienia zbioru znaków lub jego części znakami zdefiniowanymi przez użytkownika.

Parametry wejściowe:
AH 11h;
AL 00h;
BH liczba bajtów opisujących pojedynczy znak;
BL numer zastępowanego zbioru znaków;
CX liczba zastępowanych znaków;
DX kod ASCII pierwszego zmienianego znaku;
ES:BP adres obszaru zawierającego definicje znaków użytkownika.

Wyjście:
- brak -

Uwagi dodatkowe:
Liczba bajtów opisujących pojedynczy znak waha się w zależności od trybu od 8 do 16, numer zastępowanego zbioru znaków należy do przedziału 0-7. Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak zawartość pamięci obrazu pozostaje nienaruszona.

Podfunkcja 0lh - załadowanie znaków standardowych 8 x 14 (EGA/VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x14 zapisanym w pamięci ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
A 01h;
BL numer zbioru znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak zawartość pamięci obrazu pozostaje
nienaruszona.
Podfunkcja 02h - załadowanie znaków standardowych 8x8 (EGA/VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x8 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 02h;
BL numer zbioru znaków.

Wyjście:
- brak -
Uwagi dodatkowe:
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak zawartość pamięci obrazu pozostaje
nienaruszona.

Podfunkcja 03h - ustawianie domyślnego zbioru znaków (EGA/VGA)
Podfunkcja służy do wyboru znaków, które będą wyświetlane na ekranie w tekstowych trybach pracy.

Parametry wejściowe:
AH 11h;
AL 03h;
BL bity 4, 1,0 - numer pierwszego zbioru znaków,
bity 5, 3, 2 - numer drugiego zbioru znaków.
Wyjście:
- brak -

Uwagi dodatkowe:
Wybrany zbiór musi zostać przedtem załadowany podfunkcjami 00h, 0lh, 02h, 10h, 11 h, 12hlub 14h funkcji 11 h.

W tekstowych trybach pracy można stosować zbiory 256-znakowe lub 512-znakowe. Dla zbioru 256-znakowego numery
pierwszego i drugiego zestawu znaków muszą być takie same. W zbiorach 512-znakowych pierwsze 256 znaków zostanie
wybrane, gdy trzeci bit atrybutu wynosi 0, a pozostałe 256 znaków - gdy trzeci bit atrybutu wynosi l.

Podfunkcja 04h - załadowanie znaków standardowych 8 x 16 (VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x16 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH llh;
AL 04h;
BL numer zbioru znaków.
Wyjście:
- brak -

Uwagi dodatkowe:
Podczas wywołania funkcji może nastąpić zmiana trybu pracy sterownika, jednak zawartość pamięci obrazu pozostaje nienaruszona.

Podfunkcja 10h - definicja znaków dla tekstowych trybów pracy (EGA/VGA)
Podfunkcja służy do zastąpienia zbioru znaków lub jego części znakami zdefiniowanymi przez użytkownika.

Parametry wejściowe:
AH 11h;
AL 10h;
BH liczba bajtów opisujących pojedynczy znak;
BL numer modyfikowanego zbioru znaków;
CX liczba zastępowanych znaków;
DX kod ASCII pierwszego zastępowanego znaku;
ES:BP adres obszaru pamięci zawierającego definicję znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Podfunkcja 10h służy do modyfikowania zestawów znaków o różnych wymiarach (w odróżnieniu od podfunkcji 00h).
Powinna być wywołana zaraz po ustawieniu tekstowego trybu pracy i podczas wyświetlania strony zerowej.

Podfunkcja 11h - załadowanie znaków standardowych 8 x 14 (EGA/VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x14 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 11h;
BL numer zbioru znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Załadowany zbiór znaków odpowiada rozmiarami zbiorowi znaków sterownika MDA, ale może on zastąpić zbiory znaków
o innych wymiarach. Podfunkcja powinna być wywołana zaraz po ustanowieniu tekstowego trybu pracy i podczas
wyświetlania strony 0.

Podfunkcja 12h - załadowanie znaków standardowych 8x8 (EGA/VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x8 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 12h;

BL numer zbioru znaków.
- brak -

Uwagi dodatkowe:
Podfunkcja służy do zastąpienia zbioru znaków o wymiarach innych niż 8x8. Powinna być wywołana zaraz po
ustanowieniu tekstowego trybu pracy i podczas wyświetlania strony 0.

Podfunkcja 14h - załadowanie znaków standardowych 8 x 16 (VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x16 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 14h;
BL numer zbioru znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Podfunkcja służy do zastąpienia zbioru znaków o wymiarach innych niż 8x16. Powinna być wywołana zaraz po
ustanowieniu tekstowego trybu pracy i podczas wyświetlania strony 0.

Podfunkcja 20h - modyfikowanie zestawu znaków w graficznych trybach pracy (EGA/VGA)
Podfunkcja służy do definiowania przez użytkownika wzorców znaków o kodach wyższych od 127.

Parametry wejściowe:
AH 11h;
A 20h;
ES:BP adres obszaru zawierającego opis znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Adres wskazywany przez rejestry ES:BP jest zapisywany w tablicy wektorów przerwań jako wektor IFh. Zmodyfikowane
znaki są dostępne w graficznych trybach pracy 04h -06h. Podfunkcja powinna być wywołana zaraz po ustanowieniu
graficznego trybu pracy.

Podfunkcja 21h - modyfikowanie zestawu znaków w graficznych trybach pracy (EGA/VGA)
Podfunkcja służy do definiowania przez użytkownika wzorców znaków dostępnych w graficznych trybach pracy.

Parametry wejściowe:
AH 11h;
AL 21h;
BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 14 wierszy,
2 - 25 wierszy,
3 - 43 wiersze;
CX liczba bajtów opisujących pojedynczy znak;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie;
ES:BP adres obszaru zawierającego opis znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Adres wskazywany przez rejestry ES:BP jest zapisywany w tablicy wektorów przerwań jako wektor 43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu pracy.
Podfunkcja 22h - załadowanie znaków standardowych 8 x 14 (EGA/VGA)

Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x14 zapisanym w pamięci ROM* sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 22h;

BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 14 wierszy,
2 - 25 wierszy,
3 - 43 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie.

Wyjście:
- brak -

Uwagi dodatkowe:
Adres zestawu znaków 8 x 14 jest zapisywany w tablicy wektorów przerwań jako wektor 43h. Podfunkcja powinna być
wywołana zaraz po ustanowieniu graficznego trybu pracy.

Podfunkcja 23h - załadowanie znaków standardowych 8x8 (EGA/VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorem znaków 8x8 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
AL 23h;
BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 14 wierszy,
2 - 25 wierszy,
3 - 43 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie.

Wyjście:
- brak -

Uwagi dodatkowe:
Adres zestawu znaków 8x8 jest zapisywany w tablicy wektorów przerwań jako wektor 43h. Podfunkcja powinna być wywołana zaraz po ustanowieniu graficznego trybu pracy.

Podfunkcja 24h - załadowanie znaków standardowych 8 x 16 (VGA)
Podfunkcja służy do zastąpienia wskazanego zbioru znaków standardowym zbiorę znaków 8x16 zapisanym w pamięci
ROM sterownika VGA.

Parametry wejściowe:
AH 11h;
BL liczba wierszy na ekranie zakodowana następująco:
0 - liczba wierszy podana w rejestrze DL,
1 - 14 wierszy,
2 - 25 wierszy,
3 - 43 wiersze;
DL dla rejestru BL = 0 zawiera liczbę wierszy na ekranie.

Wyjście:
- brak -

Uwagi dodatkowe:
Adres zestawu znaków 8 x 16 jest zapisywany w tablicy wektorów przerwań jako we tor 43h. Podfunkcja powinna być
wywołana zaraz po ustanowieniu graficznego trybu pracy.

Podfunkcja 30h - pobranie informacji o zestawach znaków (EGA/VGA)
Podfunkcja służy do pobrania informacji o dostępnych zbiorach znaków.

Parametry wejściowe:
AH 11h;
AL 30h;
BH zbiór znaków:
0 - zbiór znaków o adresie wskazywanym przez wektor przerwania IFh,
1 - zbiór znaków o adresie wskazywanym przez wektor przerwania 43h,
2 - zbiór znaków 8 x 14 z pamięci ROM sterownika,
3 - zbiór znaków 8 x 8 z pamięci ROM sterownika,
4 - zbiór znaków 8x80 kodach powyżej 127 z pamięci ROM sterownika,
5 - dodatkowy zbiór znaków 8 x 14 z pamięci ROM sterownika,

6 - zbiór znaków 8 x 16 z pamięci ROM sterownika,
7 - dodatkowy zbiór znaków 8 x 16 z pamięci ROM sterownika.

Wyjście:
CX liczba bajtów opisujących pojedynczy znak;
DL liczba wierszy możliwych do wyświetlenia na ekranie;
ES:BP adres początku obszaru zawierającego definicje znaków.

Funkcje konfigurujące sterownik

Funkcja 12h - konfiguracja sterownika

Podfunkcja 10h - informacja o konfiguracji aktywnego sterownika (EGA/VGA)
Podfunkcja służy do odczytania informacji o stanie aktywnego sterownika.

Parametry wejściowe:
AH 12h;
BL 10h.

Wyjście:
BH
typ monitora:
0 - monitor kolorowy,
l - monitor monochromatyczny;
BL
rozmiar pamięci obrazu:
0 - 64 kB,
l - 128 kB,
2- 192 kB,
3 -256 kB i więcej;
CH wartość odczytana z rejestru złącza krawędziowego.

Uwagi dodatkowe:
Sterownik VGA zawsze zakłada obecność monitora kolorowego.

Podfunkcja 20h - rozszerzenie operacji drukowania zawartości ekranu (EGA/VGA)
Podfunkcja służy do rozszerzenia zakresu działania standardowej procedury drukowania zawartości ekranu na tryby tekstowe o różnej ilości wierszy na ekranie.

Parametry wejściowe:
AH 12h;
BL 20h.

Wyjście:
- brak -

Uwagi dodatkowe:
BIOS sterownika obsługuje drukowanie zawartości ekranu tylko w tekstowych trybach pracy. Do drukowania zawartości ekranu w trybach graficznych należy posłużyć się programem DOS-a GRAPHICS.COM.

Podfunkcja 30h - ustawienie rozdzielczości pionowej tekstowych trybów pracy (VGA)
Podfunkcja służy do wybrania rozdzielczości pionowej, która będzie stosowana podczas najbliższego ustawienia tekstowego trybu pracy funkcją OOh.

Parametry wejściowe:
AH 12h;
BL 30h;
AL rozdzielczość pionowa:
0 -200 linii,
l -350 linii,
2-400 linii.

Wyjście:
AL OOh jeżeli aktywnym sterownikiem nie jest VGA, 12h jeżeli aktywnym sterownikiem jest VGA.

Uwagi dodatkowe:
Wyświetlenie obrazu z większą rozdzielczością pionową pozwala na wyświetlenie większej ilości wierszy na ekranie.

Podfunkcja 31h - powrót do standardowych kolorów (VGA)
Podfunkcja służy do określenia, czy podczas przełączania trybów pracy nastąpi przywrócenie standardowej palety kolorów.

Parametry wejściowe:
AH 12h;
BL 31h;
AL 0 - po zmianie trybu pracy nastąpi przywrócenie standardowej palety,
l - po zmianie trybu pracy nie nastąpi przywrócenie standardowej palety.

Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.

Podfunkcja 32h - odłączenie sterownika (VGA)
Podfunkcja służy do programowego odłączenia sterownika i zablokowania dostępu pamięci obrazu i rejestrów.

Parametry wejściowe:
AH 12h;
BL 32h;
AL 0 - przyłączenie sterownika,
l - odłączenie sterownika.

Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.

Uwagi dodatkowe:
Po odłączeniu sterownika wszelki zapis do rejestrów i pamięci obrazu nie przynosi żadnych efektów.

Podfunkcja 33h - przełączenie do poziomów szarości (VGA)
Podfunkcja służy do określenia trybu wyświetlania obrazu na ekranie kolorowego monitora.

Parametry wejściowe:
AH 12h;
BL 33h;
AL 0 - obraz będzie wyświetlany w poziomach szarości,
l - obraz będzie wyświetlany w kolorach.

Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.

Uwagi dodatkowe:
Obraz wyświetlany w poziomach szarości wyświetlany jest jako suma ważona barw składowych poszczególnych kolorów
. Na odcień szarości składa się 30 % barwy czerwonej, 59 % barwy zielonej i 11 % barwy niebieskiej. Przy podłączonym
monitorze monochromatycznym następuje domyślne ustawienie zezwolenia na wyświetlanie poziomów szarości.

Podfunkcja 34h - zezwolenie na emulację kursora (VGA)
Podfunkcja służy do określenia, czy kursor będzie emulowany programowo.

Parametry wejściowe:
- brak -
Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.

Uwagi dodatkowe:
W tekstowych trybach pracy OOh - 03h emulacja polega na zmianie górnej i dolnej linii kursora.

Podfunkcja 35h - wybór aktywnego sterownika (VGA)
Podfunkcja służy do zmiany aktywnego sterownika graficznego (jeżeli w systemie zainstalowano więcej niż jeden
sterownik).

Parametry wejściowe:
AH 12h; BL 35h;
AL 0 - pierwsze odłączenie aktywnego sterownika,
1 - pierwsze dołączenie nieaktywnego sterownika,
2 - kolejne odłączenie aktywnego sterownika,
3 - kolejne dołączenie nieaktywnego sterownika;
ES:DX adres obszaru do przechowania informacji o stanie aktywnego sterownika (128 bajtów).

Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.


Uwagi dodatkowe:
Zmiana sterownika polega na dwukrotnym wywołaniu funkcji, najpierw do odłączenia, a następnie do podłączenia
sterownika. Operacja może być wykonana, gdy oba sterowniki można odłączyć za pomocą podfunkcji 32h. Dla każdego
sterownika musi być zarezerwowany osobny 128-bajtowy obszar. Jeżeli adresy sterowników nie kolidują ze sobą,
wywołanie funkcji przestaje być potrzebne.

Podfunkcja 36h - wygaszanie ekranu (VGA)
Podfunkcja służy do wygaszenia ekranu oraz do odtworzenia jego zawartości.

Parametry wejściowe:
AH 12h;
BL 36h;
AL O - wyświetlanie obrazu,
l - wygaszenie obrazu.

Wyjście:
Jeżeli podano poprawne parametry wejściowe, to AL = 12h.

Uwagi dodatkowe:
Podfunkcja jest używana głównie w programach posiadających funkcję zapobiegania wypalaniu luminoforu (screen saver).

Funkcje uzupełniające

Funkcja 13h - wypisanie ciągu znaków (EGA/VGA)

Funkcja służy do wypisania ciągu znaków z uwzględnieniem znaków sterujących CR - 0Dh, LF - 0Ah, BS - 08h i
BEL - 07h. Pozostałe kody sterujące wyświetlane sąjak inne znaki.

Podfunkcja 00h - wypisanie ciągu znaków bez przesuwania kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia ciągu znaków z podanym atrybutem bez zmiany pozycji kursora.

Parametry wejściowe:
AH 13h;
AL 00h;
BH numer strony ;
BL atrybut wyświetlanych znaków;
CX liczba znaków w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu znaków.

Wyjście:
- brak -

Uwagi dodatkowe:
Podany ciąg musi zawierać tylko kody ASCII znaków. Użycie atrybutów jest niedopuszczalne.

Podfunkcja 01h - wypisanie ciągu znaków z przesunięciem kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia ciągu znaków z podanym atrybutem oraz przesunięcia pozycji kursora poza ostatni
wyświetlony znak.

Parametry wejściowe:
AH 13h;
AL 0lh;
B H numer strony;
BL atrybut wyświetlanych znaków;
CX liczba znaków w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu znaków.

Wyjście:
- brak -
Uwagi dodatkowe:
Podany ciąg musi zawierać tylko kody ASCII znaków. Użycie atrybutów jest niedopuszczalne.

Podfunkcja 02h - wypisanie ciągu znaków z atrybutami bez przesunięcia kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia znaków w postaci pary "znak-atrybut znaku" be2 przesunięcia pozycji kursora.

Parametry wejściowe:
AH 13h;
AL 02h;
BH numer strony;
CX liczba par "znak-atrybut" w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu par.

Wyjście:
- brak -

Podfunkcja 03h - wypisanie ciągu znaków z atrybutami oraz przesunięcie kursora (EGA/VGA)
Podfunkcja służy do wyświetlenia znaków w postaci pary "znak-atrybut" oraz przesunięcia pozycji kursora poza ostatni wyświetlany znak.

Parametry wejściowe:
AH 13h;
AL 03h;
BH numer strony ;
CX liczba par "znak-atrybut" w wyświetlanym ciągu;
DH numer wiersza;
DL numer początkowej kolumny;
ES:BP adres początku ciągu par.

Wyjście:
- brak -

Funkcja 1Ah - pobranie informacji o sterowniku graficznym (VGA)

Podfunkcja 00h - pobranie informacji o rodzaju sterownika graficznego (VGA)
Podfunkcja służy do pobrania informacji o rodzaju występujących w komputerz równików.

Parametry wejściowe:
AH 1Ah;
AL 00h.

Wyjście:
AL lAh;
BL typ sterownika aktywnego;
BH typ sterownika nieaktywnego,

Uwagi dodatkowe:
Jeśli zainstalowany jest tylko jeden sterownik, to rejestr BH = 0.

Zwracane wartości i odpowiadające im sterowniki:
00h; brak sterownika
01h; sterownik MDA
02h; sterownik CGA
04h; sterownik EGA kolor
05h; sterownik EGA monochromatycznym
06h; sterownik PGA
07h; sterownik VGA kolor
08h; sterownik VGA monochromatycznym
0Ah; sterownik MCGA z cyfrowym monitorem kolorowym
0Bh; sterownik MCGA z analogowym monitorem monochromatycznym
0Ch; sterownik MCGA z analogowym monitorem kolorowym
0FFh; sterownik nie rozpoznany

Podfunkcja 01h - wybranie rodzaju sterownika (VGA)
Podfunkcia służy do określenia zainstalowanych sterowników graficznych.

Parametry wejściowe:
AH 1Ah;
AL 01h;
BL typ sterownika aktywnego;
BH typ sterownika nieaktywnego.

Wyjście:
AL lAh.

Uwagi dodatkowe:
Rodzaje sterowników podano przy opisie podfunkcji 00h.

Funkcja 1Bh - informacja o stanie
i funkcjach aktywnego sterownika (VGA)
Funkcja służy do odczytania stanu aktywnego sterownika.

Parametry wejściowe:
AH 1Bh;
BX 0;
ES:DI adres obszaru przeznaczonego do zapisania informacji (64 bajty).

Wyjście:
AL 1Bh.

Uwagi dodatkowe:
Informacje o sterowniku podzielone są na dwie części: informacje o stanie sterownika oraz informacje o dostępnych
funkcjach. Adres obszaru informacji o funkcjach sterownika zajmuje pierwsze cztery bajty obszaru informacji o stanie
sterownika.

Struktura obszaru informacji o stanie sterownika:

Przesunięcie; Ilość bajtów; Zawartość
00h; 4; adres obszaru zawierającego informacje o funkcjach sterownika
04h; l; aktualny tryb pracy
05h; 2; liczba wyświetlanych kolumn
07h; 2; rozmiar aktualnie wykorzystanej pamięci obrazu w bajtach
09h; 2; adres lewego górnego rogu obrazu względem początku pamięci obrazu
0Bh; 2; pozycja kursora na stronie 0 (wiersz, kolumna) 0Dh; 2; pozycja kursora na stronie 1 (wiersz, kolumna)
0Fh; 2; pozycja kursora na stronie 2 (wiersz, kolumna)
11h; 2; pozycja kursora na stronie 3 (wiersz, kolumna)
13h; 2; pozycja kursora na stronie 4 (wiersz, kolumna)
15h; 2; pozycja kursora na stronie 5 (wiersz, kolumna)
17h; 2; pozycja kursora na stronie 6 (wiersz, kolumna)
19h; 2; pozycja kursora na stronie 7 (wiersz, kolumna)
1Bh; 1; numer górnej linii kursora
1Ch; 1 numer dolnej linii kursora
1Dh; 1; numer wyświetlanej strony obrazu
1Eh; 2; adres rejestru indeksowego układu sterowania wyświetlaczem
20h; 1; numer aktualnego trybu pracy
21h; 1; numer aktualnej palety kolorów w trybach 04 - 05h
22h; 1; liczba wyświetlanych wierszy
23h; 2; wysokość wyświetlanych znaków (w punktach)
25h; 1; rodzaj aktywnego sterownika (patrz podfunkcja OOh funkcji 1 Ah)
26h; 1; rodzaj nieaktywnego sterownika (patrz podfunkcja OOh funkcji 1 Ah)
27h; 2; maksymalna liczba jednocześnie wyświetlanych kolorów
29h; 1; liczba stron pamięci obrazu
2Ah; 1; rozdzielczość pionowa: 0 - 200 linii. 1 -350 linii. 2 - 400 linii, 3 - 480 linii
2Bh; 1; numer zbioru znaków pierwszej polowy 512 znakowego zbioru
2Ch; 1; numer zbioru znaków drugiej polowy 512 znakowego zbioru
2Dh; 1; informacje dodatkowe
2Eh; 3; zarezerwowane
3ih; 1; rozmiar pamięci obrazu: 0 - 64 kB, 1- 128 kB, 2- 192 kB. 3 - 256 kB i więcej



32h; 1; informacja o zawartości tablic wskaźników (głównej i dodatkowej):
bit 5 = - zmieniono rodzaj zainstalowanych sterowników
bit 4 = - zmieniono zestaw standardowych kolorów i wzorców
bit 3 = - zdefiniowano znaki dla graficznego trybu pracy
bit 2 = - zdefiniowano znaki dla tekstowego trybu pracy
bit 1= - zmieniono zestaw standardowych kolorów
bit 0 = - używany jest zbiór 512-znakowy
33h; 13; zarezerwowane

Struktura obszaru zawierającego informacje o funkcjach sterownika:

Przesunięcie; Ilość bajtów; Opis znaczenia bitów (funkcje są dostępne dla bitów = 1)

00h; 1; 0 dostępny tryb pracy OOh
1 dostępny tryb pracy Olh
2 dostępny tryb pracy 02h
3 dostępny tryb pracy 03h
4 dostępny tryb pracy 04h
5 dostępny tryb pracy 05 h
6 dostępny tryb pracy 06h
7 dostępny tryb pracy 07h
01h; 1; 0 dostępny tryb pracy 08h
1 dostępny tryb pracy 09h
2 dostępny tryb pracy OAh
3 dostępny tryb pracy OBh
4 dostępny tryb pracy OCh
5 dostępny tryb pracy ODh
6 dostępny tryb pracy OEh
7 dostępny tryb pracy OFh
02h; 1; 0 dostępny tryb pracy
1 Oh 1 dostępny tryb pracy 11 h
2 dostępny tryb pracy 1 2h
3 dostępny tryb pracy 13h
03h; 4; zarezerwowane
07h; 1; 0 dostępna rozdzielczość pionowa 200 linii
1 dostępna rozdzielczość pionowa 350 linii
2 dostępna rozdzielczość pionowa 400 linii
08h; 1; liczba dostępnych zbiorów znaków w trybach tekstowych
09h; 1; maksymalna liczba jednocześnie wyświetlanych zbiorów znaków
0Ah; 1; operacje wykonywane przez BIOS karty graficznej:
0 możliwe są wszystkie tryby pracy
1 możliwe jest uzyskanie odcieni szarości
2 możliwe jest zastąpienie zbioru znaków
3 możliwy jest powrót do standardowych kolorów po zmianie trybu
4 możliwa jest emulacja kursora
5 możliwe jest użycie 64-kolorowej palety sterownika EGA
6 możliwa jest zmiana wzorców kolorów 7 możliwe jest określenie liczby bloków wzorców kolorów
0Bh; 1; operacje wykonywane przez BIOS karty graficznej (c. d.):
0 możliwa jest obsługa pióra świetlnego (dla sterownika VGA równe 0)
1 możliwe jest zachowanie/odtworzenie stanu sterownika
2 możliwa jest zmiana interpretacji atrybutu (migotanie/tło)
3 możliwe jest uzyskanie informacji o stanie sterownika
0Ch; 2; zarezerwowane
Eh; 1; informacja o głównej i dodatkowej tablicy wskaźników:
0 możliwe jest używanie 512-znakowych zbiorów
1 możliwe jest zdefiniowanie tablicy kolorów
2 możliwa jest zmiana standardowego zbioru znaków w trybach tekstowych
3 możliwa jest zmiana standardowego zbioru znaków w trybach graficznych
4 możliwa jest zmiana standardowych kolorów i wzorców kolorów
5 możliwa jest zmiana dozwolonej kombinacji sterowników graficznych
0Fh; 1; zarezerwowane


Funkcja ICh - zachowanie/odtworzenie stanu sterownika (VGA)

Podfunkcja OOh - pobranie koniecznego rozmiaru
obszaru pamięci do zapisania danych o stanie sterownika (VGA)

Parametry wejściowe:
AH ICh;
AL OOh;
CX rodzaj informacji do zachowania:
bit 2 = l - informacja o wzorcach kołom,
bit l = l - informacja o stanie zapisana w obszarze danych BlOS-u,
bit O = l - informacja o stanie karty graficznej.























































Wyjście:
AL 1Ch;
BX rozmiar bufora.

Uwagi dodatkowe:
Zwracany rozmiar obszaru podawany jest w blokach po 64 bajty.

Podfunkcja 0lh - zachowanie stanu sterownika (VGA)
Podfunkcja służy do zapamiętania stanu sterownika w podanym obszarze pamięci.

Parametry wejściowe:
AH 1Ch;
AL 01h;
CX rodzaj informacji do zachowania:
bit 2 = 1- informacja o wzorcach koloru,
bit 1 = 1 - informacja o stanie zapisana w obszarze danych BIOS-u,
bit 0 = 1 - informacja o stanie karty graficznej;
ES:BX adres obszaru pamięci przeznaczonego do zapamiętania informacji o stanie.

Wyjście:
AL 1Ch.

Uwagi dodatkowe:
Po wywołaniu tej podfunkcji ulegają zmianie niektóre parametry sterownika. Stan przed wywołaniem podfunkcji można
odtworzyć wywołując podfunkcję 02h.

Podfunkcja 02h - odtworzenie stanu sterownika (VGA)
Podfunkcja służy do odtworzenia stanu sterownika zachowanego podfunkcją01h.

Parametry wejściowe:
AH 1ICh;
AL 02h;
CX rodzaj informacji o sterowniku:
bit 2 = l - informacja o wzorcach koloru,
bit l = l - informacja o stanie zapisana w obszarze danych BIOS-u,
bit 0 = l - informacja o stanie karty graficznej;
ES:BX adres obszaru pamięci zawierającego informację o stanie sterownika.

Wyjście:
AL 1Ch.

Dodatkowe funkcje obsługiwane przez VESA-BIOS

Producenci większości kart SVGA wyposażają swoje sterowniki w YESA-BIOS. Dodaje on kilka funkcji przerwania INT lOh do BIOS-u sterownika VGA.

Dodatkowe funkcje BIOS-u można podzielić zgodnie ze specyfikacjami VESA, które je wprowadziły:
funkcje wprowadzone przez specyfikację VESA l .0 (4FOOh - 4F06h),
funkcje wprowadzone przez specyfikację VESA l. l (4F07H - 4F08h),
funkcje wprowadzone przez specyfikację VESA l .2 (4F08h).

Funkcja 4F00H - informacja o karcie SVGA

Parametry wejściowe:
ES:DI wskaźnik do bufora danych.

Wyjście:
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01 h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).

Uwagi dodatkowe:
Zwraca 256-bajtowy blok danych opisujący parametry karty SVGA i środowiska.

Przemieszczenie; Rozmiar pola; Opis

00h; 4 bajty; sygnatura - napis ,.VESA"
04h; l słowo; numer wersji standardu VESA
06h; 2 słowa; wskaźnik do napisu firmowego, umieszczonego w pamięci ROM przez producenta
0Ah; 4 bajty; miejsce na dodatkową informację o środowisku, zwykle wypełnione bajtami o wartości 0
0Eh; 2 słowa; wskaźnik do listy trybów pracy zakończonej słowemo wartości FFFFh
12h; 238 bajtów; obszar zarezerwowany __

Funkcja 4F01H - informacja o trybach karty SVGA

Parametry wejściowe:
CX numer trybu;
ES:DI wskaźnik do bufora danych.

Wyjście:
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).

Uwagi dodatkowe:
Zwraca 256-bajtowy blok danych zawierający informację o sposobie przełączania banków (liczba, rozmiar, adresy,
możliwość czytania i zapisu, odstęp pomiędzy bankami) oraz szerokość ekranu wirtualnego (logicznego) dla zadanego
trybu. Funkcja ta powinna zwracać informacje zarówno dla trybów VESA, jak i dla trybów charakterystycznych dla
danej karty.

Przemieszczenie ; Rozmiar pola; Opis

00h; 1 słowo; atrybuty trybu:
bit 4 = 1 - tryb graficzny,
bit 4 - 0- tryb tekstowy,
bit 3 = 1 - tryb monochromatyczny,
bit 3 = 0 - tryb kolorowy,
bit 2 = 1 - można korzystać z funkcji wyprowadzania znaku, kreślenia piksela i przewijania okna
nierozszerzonego BIOS-u,
bit l = l - dostępna jest informacja dodatkowa,
bit 0 = I - tryb jest dostępny
02h; 1 bajt ; atrybuty okna A
bity 7 - 3 - zarezerwowane,
bit 2 = l - okno umożliwia zapis do banku,
bit l = l - okno umożliwia odczyt z banku,
bit 0 = l - okno istnieje
03h; 1 bajt ; atrybuty okna B
bity 7-3 - zarezerwowane,
bit 2 = l - okno umożliwia zapis do banku,
bit l = l - okno umożliwia odczyt z banku,
bit O = l - okno istnieje
04h; l słowo; minimalny odstęp między początkami dwu banków pamięci granularity, wyrażony w kB
06h; l słowo; rozmiar okna w kB
08h; l słowo; część segmentowa adresu okna A w przestrzeni adresowej komputera
0Ah; 1 słowo; część segmentowa adresu okna B w przestrzeni adresowej komputera
0Ch; 2 słowa; daleki wskaźnik do funkcji przełączającej banki
10h; 1 słowo; liczba bajtów, z których złożona jest jedna linia logiczna - linia logiczna może być dłuższa lub równa linii fizycznej (wyświetlanej na ekranie)

Poniższe dane są opcjonalne dla trybów VESA, lecz niezbędne dla trybów zdefiniowanych przez producenta karty.

12h; 1 słowo; szerokość ekranu w punktach
14h; 1 słowo; wysokość ekranu w punktach .
16h; 1 bajt; szerokość matrycy znaku w punktach
17h; 1 bajt; wysokość matrycy znaku w punktach
I8h; 1 bajt; liczba płatów pamięci
19h; 1 bajt; liczba bitów przypadająca na jeden piksel
1Ah; 1 bajt; liczba banków
1IBh; 1 bajt; organizacja pamięci obrazu:
00h - tekstowa.
01h - jak w trybach graficznych CGA.
02h - 16-kolorowa. 4-platowa.
04h - spakowana.
05h - 0Fh - zarezerwowane dla przyszłego wykorzystania w standardzie VESA.
10h - FFh - do użytku producentów kart graficznych
1Ch; 1 bajt; rozmiar banku w kB
1Dh; 1 bajt; liczba stron (pełnych ekranów)
1Eh; 1 bajt; zarezerwowane


Funkcja 4F02h - przełączanie trybów VESA

Parametry wejściowe:
BX bit 15:
0 - przełączenie trybu powoduje wyzerowanie pamięci obrazu.
l - przełączenie trybu bez zerowania pamięci obrazu,
bity 14-0 - numer trybu VESA.

Wyjście:
AH wynik wykonania funkcji:
0h - wykonanie poprawne.
0lh - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).






















Uwagi dodatkowe:
Numer trybu jest 16-bitowy.

Funkcja 4F03h - odczyt bieżącego trybu pracy

Parametry wejściowe:
- brak -

Wyjście:
BX bity 14-0 - numer trybu VESA (bez bitu zerowania pamięci obrazu);
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01 h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).

Uwagi dodatkowe:
Numer trybu jest 16-bitowy.

Funkcja 4F04H - zapamiętanie lub odtwarzanie parametrów karty

Parametry wejściowe:
DL numer podfunkcji:
00h - wyznaczenie rozmiaru pamięci potrzebnej na bufor stanu,
01 h - zapamiętanie stanu sterownika, 02h - odtworzenie stanu sterownika;
ES:BX wskaźnik do bufora stanu dla podfunkcji l i 2;
CX określa rodzaj zapisywanych lub odtwarzanych parametrów:
bit 3 - stan wszystkich parametrów charakterystycznych dla SVGA,
bit 2 - stan rejestrów koloru i rejestrów DAĆ,
bit l - stan obszarów danych Video-BIOS,
bit 0 - stan rejestrów układów odchylania i taktowania.

Wyjście:
BX wielkość wymaganego bufora stanu w blokach po 64 bajty (dla podfunkcji 1);
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01 h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).

Uwagi dodatkowe:
Funkcja zapamiętuje lub odtwarza zawartość rejestrów karty i obszaru komunikacyjnego BIOS-u.
Funkcja 4F05h - podłączenie banku pamięci obrazu lub odczyt numeru podłączonego banku

Parametry wejściowe:
BH wybór podfunkcj i:
00h - podłączenie banku do okna,
01h - odczyt numeru banku podłączonego do okna;
BL wybór okna:
00h - okno A,
01h -okno B;
DX numer banku (liczba i numeracja banków zależy od odstępu między nimi).

Wyjście:
DX numer banku;
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany).

Funkcja 4F06h - ustawienie lub odczyt szerokości ekranu wirtualnego

Parametry wejściowe:
BL wybór podfunkcj i:
00h - ustawienie szerokości ekranu wirtualnego,
0lh - odczyt szerokości ekranu wirtualnego;
CX szerokość ekranu wirtualnego w punktach.

Wyjście:
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
BX liczba bajtów przypadających na jedną poziomą linię ekranu wirtualnego;

CX szerokość ekranu wirtualnego w punktach;
DX maksymalna liczba linii ekranu wirtualnego.

Funkcja 4F07H - ustawienie/odczyt lewego górnego rogu ekranu rzeczywistego względem ekranu wirtualnego

Parametry wejściowe:
BH 00h - wartość zarezerwowana;
BL wybór podfunkcji:
00h - ustawienie położenia ekranu rzeczywistego względem ekranu wirtualnego,
01h - odczyt położenia ekranu rzeczywistego względem ekranu wirtualnego;
CX numer pierwszej wyświetlanej kolumny (współrzędna X lewej krawędzi ekranu dla podfunkcji 0);
DX numer pierwszej wyświetlanej linii (współrzędna Y górnej krawędzi ekranu dla podfunkcji 0).

Wyjście:
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01h - błąd wykonania;
AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
CX numer pierwszej wyświetlanej kolumny (dla podfunkcji 1);
DX numer pierwszego wyświetlanego wiersza (dla podfunkcji 1).

Funkcja 4F08h - ustawienie/odczyt liczby bitów odpowiadających barwom podstawowym (w układzie RGB) iv tablicy LUT

Parametry wejściowe:
BH żądana liczba bitów na składową koloru (R, G lub B dla podfunkcji 0);
BL wybór podfunkcji:
00Oh - ustawienie szerokości palety,
01lh - odczyt szerokości palety.
Wyjście:
AH wynik wykonania funkcji:
00h - wykonanie poprawne,
01h - błąd wykonania;

AL 4Fh, jeśli funkcja jest dostępna (VESA BIOS zainstalowany);
BH odczytana liczba bitów na składową koloru (R, G lub B dla podfunkcji 0) - dla karty VGA wynosi 6.

Przykłady zastosowania funkcji BIOS-u kart graficznych

Rozpoznanie typu karty graficznej

Podprogram rozpoznaje typ karty graficznej.

podaj_typ_sterownika proc
mov ah,lah ; numer funkcji BIOS-u sterownika
mov al,00h ; odczyt kombinacji sterowników
int 10h
ret ; rejestr BL zawiera kod aktywnego sterownika
; rejestr BH zawiera kod nieaktywnego sterownika
podaj_typ_sterownika endp

Parametry wejściowe:
- brak -

Wyjście:
AL jeśli AL * l Ah, to funkcja nie jest zaimplementowana, w przeciwnym przypadku (AL - l Ah);
BL kod aktywnego sterownika (patrz poniższa tabela); BH kod nieaktywnego sterownika (patrz poniższa tabela).

Kod; Sterownik
00h; brak sterownika (dla sterownika nieaktywnego)
01h; MDA
02h; CGA
04h; EGA kolor 05h; EGA mono
06h; PGC 07h; VGA mono
08h; VGA kolor 0Ah; MCGA z cyfrowym monitorem kolorowym
0Bh; MCGA z analogowym monitorem monochromatycznym
0Ch; MCGA z analogowym monitorem kolorowym
0FFh; sterownik nie rozpoznany


Sprawdzenie ilości pamięci zainstalowanej na karcie graficznej
Podprogram zwraca ilość pamięci zainstalowanej na karcie graficznej.

rozmiar_pamięci proc

mov ah,12h ; numer funkcji BIOS-u sterownika
mov bl,10h ; numer podfunkcji - pobranie rozmiaru pamięci
int 10h
ret ; rejestr BL zawiera kod rozmiaru pamięci
rozmiar_pamięci endp

Parametry wejściowe:
- brak -

Wyjście:
BL kod rozmiaru pamięci obrazu:
0 - 64 kB,
l - 128 kB,
2- 192 kB,
3 - 256 kB i więcej.

Zmiana wyglądu znaku

Podprogram zmienia wygląd znaku '@' standardowego zestawu znaków 8x8.

zmiana_znaku proc
push es
push bp
mov ax,es
mov es,ax
mov bp,offset dane ;załadowanie adresu opisu znaku do ES:BP
mov ah,llh ;numer funkcji BIOS-u sterownika
mov al,00h ;numer podfunkcji - definiowanie
;zbioru znaków
mov bh,08h ;jeden znak
mov bl,0 ;zestaw znaków nr O
mov ex,l ;podmieniamy l znak
mov dx,word ptr '@' ;podmieniamy znak '@'

int lOh
pop bp
pop es
ret
dane db 60,126,219,255,255,189,165,36
zmiana_znaku endp

Parametry wejściowe:
- brak -

Wyjście:
- brak -

Wyszukiwarka

Podobne podstrony:
09 rozdział 08 63dkeu7shlz4usq4tgmm3a2yvypfjm4m7h2e7ua
08 Rozdział 08
karty graficzne
ROZDZIAŁ 08 Choroba von Hippel Lindau
Karty Graficzne P Popielarski Licencjat
karty graficzne
Jak sprawdzić model karty graficznej (Windows XP)
utk7 karty graficzne podstawy
Jak sprawdzić model karty graficznej (Windows 7 i Windows Vista)
10 porad które ułatwią zakup karty graficznej
Krótka INSTRUKCJA INSTALACJI KARTY GRAFICZNEJ sAPPHIRE QIG VGA ML00112 R0

więcej podobnych podstron