1. CEL ĆWICZENIA .
Celem ćwiczenia jest zapoznanie się z budową oraz z zasadą działania karty graficznej.
Z programową obsługą kart graficznych podczas, której należy programowo zmieniać podstawowe parametry kart graficznych takie jak tryb wyświetlania , rozdzielczość oraz zmianę koloru wyświetlanego punktu na ekranie monitora. Należy zapoznać się ze sposobem wyświetlania informacji zarówno w trybie tekstowym jak i graficznym.
2. PODSTAWY TEORETYCZNE .
2.1. PODSTAWY ARCHITEKTURY KARTY VGA .
Karta graficzna VGA została opracowana i wprowadzona do produkcji przez firmę IBM w roku 1987, z przeznaczeniem dla mikrokomputerów rodziny PC i PC/2. Architektura sterownika VGA stanowiła rozszerzenie poprzedniego standardu EGA, pochodzącego z roku1984. Zmiany w budowie wprowadzono w taki sposób, by karta VGA mogła emulować tryby tekstowe i graficzne występujące w poprzednich sterownikach obrazu firmy IBM (MDA, CGA i EGA).
Najważniejsze dla użytkownika nowe cechy karty VGA to większa matryca znaków trybach alfanumerycznych (16x9 punktów) oraz nowe tryby graficzne: 16-kolorowy o rozdzielczości 640x480 punktów oraz 256-kolorowy o rozdzielczości 320x200 punktów. Ponadto barwy wyświetlane na ekranie (zarówno w trybach 16- jak i 256- kolorowych) można wybierać z palety zawierającej 218 (262144) wartości.
Od 1987 roku szereg producentów oferuje scalone układy kontrolerów graficznych bazujące na architekturze VGA, lecz posiadające szereg rozszerzeń. Karty zbudowane w oparciu o te układy określane są handlową nazwą „Super” lub „Super VGA”. Niestety nazwa ta nie oznacza już ścisłego standardu. „Super” - rozszerzenia różnią się między sobą tak, że ich wykorzystanie wymaga innych technik programowania dal układów poszczególnych producentów.
Pod względem funkcjonalnym sterownik monitora standardu EGA można podzielić na cztery główne elementy funkcjonalne:
kontroler CRT (ang. CRT Controller, CRTC),
sekwencer (ang. sequencer),
kontroler graficzny (ang. Graphics Controler, GDC),
kontroler atrybutów (ang. Attribute Controler, ATC),
karta VGA posiada dodatkowo piąty element:
blok przetworników cyfrowo - analogowych (C/A; ang. DAC - Dogital to Analog Converters).
Z poziomu procesora karta EGA i VGA jest „widoczna” jako zbiór portów w przestrzeni wejścia - wyjścia oraz obszar pamięci obrazu położony, w zależności od trybu pracy, między adresami A000:000h a B000:FFFFh. Bezpośrednie jej programowanie sprowadza się zatem do zapisu i odczytu odpowiednich wartości do i z pamięci oraz portów wejścia - wyjścia.
Krata graficzna VGA wykonana jest w postaci 16-bitowego modułu przeznaczonego do instalacji w 16-bitowym slocie ISA (PCI) na płycie głównej. W skład karty wchodzi wiele układów elektronicznych m.in. układ VLSI o wielkiej skali integracji mogący realizować wszystkie funkcje standardu zwanego jako ”VGA”.
W skład karty wchodzą:
pamięć ekranu - na kartach EGA \VGA zamontowana jest pamięć dynamiczna RAM służąca jako pamięć ekranu, czyli przechowująca informację o wyświetlanym obrazie. Pamięci towarzyszą układy nadzorujące dostęp do niej. Pamięć ekranu zajmuje fragment normalnej przestrzeni adresowej CPU. Procesor ma do nie swobodny dostęp, jednak karta generuje sygnały wstrzymujące chwilowo procesor (tzw. wait states) jeżeli nastąpi konflikt. Na oryginalnej karcie EGA zamontowano 64kB pamięci RAM, zachowując możliwość jej rozbudowy do 256 kB, blokami po 64kB. Obecnie spotykane karty EGA mają zamontowane pełne 256 kB RAM. Wszystkie karty VGA mają przynajmniej 256 kB pamięci ekranu. Większość kart realizujących rozszerzony standard VGA ( tzw. Super VGA ) ma większą pamięć ekranu - typowo 512 kB albo 1 MB.
ROM BIOS - karty EGA \ VGA dysponują własną pamięcią ROM, zawierająca rozszerzenie standardowego BIOS komputera. EGA \ VGA BIOS przejmuje realizacje funkcji BIOS związanych z obsługą ekranu. W pamięci ROM karty zapisane są również zestawy definicji znaków. Podczas wyświetlania tekstu definicje znaków nie są jednak pobierane z pamięci ROM, lecz z RAM, gdzie muszą zostać uprzednio przepisane.
kontroler CRT - jest to zestaw programowalnych liczników, generujących zgodnie z zadanymi parametrami wszystkie przebiegi czasowe niezbędne przy wyświetlaniu obrazu, tzn. częstotliwości impulsów synchronizacji, sygnały wygaszania itd.. Steruje we / wy z monitora, zajmuje się odświeżaniem dynamicznej pamięci obrazu, ” taktuje” pobieranie danych z pamięci ekranu. Kontroler CRT generuje sprzętowo kursor, podkreśleni i nadzoruje obsługę pióra świetlnego na karcie EGA. Układ ten zawiera 26 rejestrów wewnętrznych w przypadku karty EGA i 24 dla sterownika VGA. Rejestry te są dostępne pośrednio przez dwa porty, pełniące rolę rejestru indeksowego (adresowego) i rejestru danych. Aby odczytać lub wpisać nową wartość do rejestru wewnętrznego należy wpisać jego numer (indeks) do portu indeksowego a następnie odczytać lub zapisać port będący rejestrem danych. Bezpośrednie operacje na rejestrach sterownika CRT są niezbędne jedynie w specyficznych zastosowaniach graficznych takich jak:
programowanie własnych, niestandardowych trybów rozdzielczości,
przewijanie (scrolling) obrazu,
podział ekranu na dwie części wyświetlające niezależne obrazy (splitting),
operacje na kursorze.
sequencer - blok Sequencera kontroluje dostęp do pamięci ekranu. Z jednej strony blokuje lub umożliwia procesorowi zapis do niej, z drugiej strony - nadzoruje cykliczny dostęp do pamięci układów wyświetlających obraz. Kontroluje podstawowe przebiegi czasowe (częstotliwość generowania pojedynczych pikseli - tzw. 'dot clock' oraz liczb` pikseli przypadającą na linię znaku). Zawiera 6 rejestrów wewnętrznych, z którymi komunikacja programowa wygląda tak samo jak w przypadku sterownika CRT.
Kontroler graficzny - układ ten może być potraktowany jako prosty, wyspecjalizowany procesor udostępniający głównemu procesorowi komputera mechanizmy wyższego rzędu pozwalające na realizowanie operacji graficznych. Graphics Controller nie zapewnia realizacji takich funkcji, jak rysowanie wielokątów, wypełnianie obszarów itp., pozwala jednak wybrać jeden z kilku sposobów zapisu i odczytu pamięci ekranu, może automatycznie wykonywać funkcje logiczne (AND, OR, XOR) przy zapisie. Ponadto kontroluje położenie pamięci ekranu w przestrzeni adresowej CPU. Zawiera 9 rejestrów wewnętrznych dostępnych na tej samej zasadzie jak w przypadku sterownika CRT.
serializer - układ ten przetwarza informację o obrazie (w szczególności o kolorach poszczególnych elementów obrazu) zawartą w pamięci ekranu do postaci akceptowanej przez Attribute Controller (kontroler atrybutów). Ponieważ pamięć ekranu podzielona jest na rozłączne obszary, tzw. mapy bitowe, Serializer "składa" bity z poszczególnych map w jeden ciąg w celu prawidłowego określenia przez Attribute Controller numeru wzorca koloru.
kontroler atrybutów - Na karcie EGA układ ten odpowiedzialny jest za "składanie" danych z Serializera i informacji o aktualnie używanej palecie kolorów w cyfrowy sygnał kolorów GRB dla monitora kolorowego albo w cyfrowy sygnał wizji dla monitora monochromatycznego. Na karcie VGA Attribute Controller nie generuje cyfrowego sygnału kolorów lecz jedynie wybiera numer rejestru Video Dac, który zawiera definicję odpowiedniego koloru wyświetlanego punktu. Dla zachowania zgodności z EGA, Attribute Controller zawiera 16 rejestrów palety. Dostęp do sześciu rejestrów wewnętrznych jest inny niż dla sterownika CRT. Zapis lub odczyt (odczyt tylko dla VGA) odbywa się w sposób pośredni poprzez jeden port, pełniący na przemian rolę rejestru indeksowego (adresowego) i rejestru danych. Adres portu jest różny dla operacji zapisu i odczytu.
przetwornik analogowo - cyfrowy - Układ ten występuje jedynie na karcie VGA. Jest to przetwornik cyfrowo-analogowy, który zamienia cyfrową informację o kolorze, na sygnał analogowy dla monitora VGA. Zawiera on 256 rejestrów (zwanych rejestrami DAC), w których może przechowywać cyfrowe definicje 256 kolorów. Typowo, numer koloru elementu obrazu zapisany w pamięci ekranu, wskazuje na jeden z rejestrów palety Attribute Controllera. Rejestr palety zawiera numer rejestru DAC, a wskazany w tam sposób rejestr DAC zawiera 18-bitową definicję koloru (co daje 262.144 możliwe barwy). Ta definicja zamieniana jest na sygnał analogowy. Ponadto na karcie znajdują się liczne układy pomocnicze takie jak bufory lub generator kwarcowy i inne.
2.2. ZASADA DZIAŁANIA KARTY GRAFICZNEJ VGA .
Sygnał kierowany z procesora do rejestrów karty VGA trafia do kontrolera graficznego. Za pośrednictwem znajdujących się tam rejestrów dane obrazowe mogą być poddane - przed wpisaniem do pamięci karty - operacjom logicznym OR, AND, XOR, przesunięciu cyklicznemu w prawo, porównaniu z aktualnie wyświetlanymi danymi lub zamaskowaniu, czyli zablokowaniu możliwości przesłania wybranych danych do pamięci. Aby dane z CPU mogły być wpisane do pamięci karty musi na to `wyrazić zgodę' sequencer. Posiada on możliwość blokowania wpisania danych do map bitowych. Jeżeli dane ekranowe taką zgodą otrzymały to pamięć karty graficznej jest gotowa do przyjmowania danych.
W następnej kolejności dane przekazywane są do serializera, który zamienia je na postać akceptowaną przez kontroler atrybutów. Jak już wiemy pamięć jest podzielona na rozłączne obszary (mapy bitowe), tak więc serializer składa odpowiednie bity w jeden ciąg.
Złożone informacje wędrują do kontrolera atrybutów, który na podstawie nich określa numer rejestru Video DAC (wzorca koloru), określający kolor wyświetlanego punktu. Dane z kontrolera atrybutów przechodzą przez blok przetworników C/A, gdzie są zamieniane na analogowe sygnały RGB wyświetlane bezpośrednio na ekranie monitora.
W procesie wyświetlania obrazu ważną rolę odgrywa także kontroler CRT, którego podstawowe zadania zastały omówione w opisie budowy karty VGA.
SCHEMAT BLOKOWY PRZEDSTAWIAJĄCY BUDOWĘ KARTY VGA
sygnał z CPU
2.3. TRYBY PRACY STEROWNIKÓW OBRAZU .
Numer trybu |
Rodzaj trybu |
Rozmiar ekranu |
Matryca znaku |
Liczba kolorów |
Stero-wnik obrazu |
Org. pam. dla trybów graf. |
Adres pocz. pam. obrazu |
00/08 |
Tekstowy |
40x25 |
# |
16/8 poziomów szarości |
C,E,V |
|
$B800 |
01/81 |
Tekstowy |
40x25 |
# |
16/8 |
C,E,V |
|
$B800 |
02/82 |
Tekstowy |
80x25 |
# |
16/8 poziomów szarości |
C,E,V |
|
$B800 |
03/83 |
Tekstowy |
80x25 |
# |
16/8 |
C,E,V |
|
$B800 |
04/84 |
Graficzny |
320x200 |
8x8 |
4 |
C,E,V |
spakowana |
$B800 |
05/85 |
Graficzny |
320x200 |
8x8 |
4 poziomy szarości |
C,E,V |
Spakowana |
$B800 |
06/86 |
Graficzny |
640x200 |
8x8 |
2 |
C,E,V |
spakowana |
$B800 |
07/87 |
Tekstowy |
80x25 |
# |
3(ciemny,jasny,jaskr.) |
M,E,V |
|
$B800 |
0d/8d |
Graficzny |
320x200 |
8x8 |
16 |
E,V |
płatowa |
$A000 |
0e/8e |
Graficzny |
640x200 |
8x8 |
16 |
E,V |
Płatowa |
$A000 |
0f/8f |
Graficzny |
640x350 |
8x14 |
3(ciemny,jasny,jaskr.) |
E,V |
Płatowa |
$A000 |
10/90 |
Graficzny |
640x350 |
8x14 |
16 |
E,V |
Płatowa |
$A000 |
11/91 |
Graficzny |
640x480 |
8x16 |
2 |
V |
spakowana |
$A000 |
12/92 |
Graficzny |
640x480 |
8x16 |
16 |
V |
płatowa |
$A000 |
13/93 |
Graficzny |
320x200 |
8x16 |
256 |
V |
spakowana |
$A000 |
# - rozmiary matrycy w trybach 0 - 3 i 7 zależy od sterownika monitora:
w trybach 0 - 3 : CGA = 8x8, EGA = 8x14, VGA = 9x16
w trybie 7 : MDA i EGA = 9x14, VGA = 9x16
Wszystkie opisane w tabeli tryby zarówno alfanumeryczne, jak i graficzne, identyfikowane są dwoma numerami, różniącymi się zawartością najstarszego bitu. Wywołanie trybu przez podanie niższego numeru powoduje wymazanie zawartości pamięci obrazu w trakcie przełączani, podania natomiast numeru wyższego pozostawia je bez zmian.
2.4. FUNKCJE BIOS-u SŁUŻĄCE DO STEROWANIA KARTĄ GRAFICZNĄ .
W komputerach standardu IBM PC jedynym systemowym mechanizmem programowej komunikacji ze sterownikiem monitora są funkcje BIOS Basic Input-Output System wywoływane przerwaniem nr. 10.
Standardowe oprogramowanie BIOS przechowywane w pamięci stałej (ROM) komputera zawiera procedury obsługi kart CGA i MDA. Zarówno sterownik EGA jak i VGA posiadają własny BIOS, który w trakcie startu komputera „przejmuje rządy” nad obsługa przerwania 10h, modyfikując wektor przerwań. Zainstalowanie karty sterownika EGA bądź VGA powoduje rozszerzenie przerwania 10h o dodatkowe funkcje zawarte w pamięci ROM tych kart.
W poniższej tabeli zawarto zestawienie większości usług dostępnych przez przerwanie 10h BIOS-u. Zgodnie z ogólnie przyjęta konwencją numer funkcji usługowej przekazywany jest w rejestrze AH, zaś numer ewentualnej podfunkcji - w rejestrze AL.
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 00h
|
Przełączanie trybów pracy sterownika obrazu.
parametry wejściowe : AL. - numer trybu
|
MDA, CGA, EGA, VGA
|
AH = 01h
|
Ustawienie rozmiaru kursora (kursor jest wyświetlany jedynie w trybach znakowych).
parametry wejściowe : CH - numer początkowej linii kursora, CL - numer końcowej linii kursora.
UWAGA: podanie CH=CL=20h pozwala na ukrycie kursora
|
MDA, CGA, EGA, VGA
|
AH = 02h |
Ustawienie kursora na ekranie w pozycji opisanej podanymi parametrami.
parametry wejściowe : BH - numer strony pamięci ekranu, DH - numer wiersza, DL - numer kolumny. |
MDA, CGA, EGA, VGA |
AH = 03h |
Odczyt aktualnej pozycji kursora (kursor wyświetlany jest w trybach znakowych).
parametry wejściowe : BH - numer strony
wartości zwracane : DH - wiersz, w którym znajduje się kursor, DL - kolumna, w której znajduje się kursor, CH - numer początkowej linii kursora, CL - numer końcowej linii kursora.
|
MDA, CGA, EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 05h
|
Wybór aktywnej strony pamięci obrazu.
parametry wejściowe : AL - numer strony (zakres wartości zależy od trybu pracy oraz rozmiaru pamięci zainstalowanej na karcie).
|
MDA, CGA, EGA, VGA
|
AH = 06h |
Przewijanie obrazu w górę.
Uwaga : wartości parametrów dla funkcji 06h 07h podawane są w rozdzielczości znakowej.
parametry wejściowe : AL. - liczba wierszy, o którą zawartość okna ma zostać przesunięta w górę (0 - wyczyszcza obraz), BH - bajt atrybutu dla wprowadzanych na dole okna pustych znaków, CH - współrzędna Y lewego górnego rogu okna, CL - współrzędna X lewego górnego rogu okna, DH - współrzędna Y prawego dolnego rogu okna, DL - współrzędna X prawego dolnego rogu okna,
|
MDA, CGA, EGA, VGA |
AH = 07h |
Przewijanie obrazu w dół.
parametry wejściowe : AL. - liczba wierszy, o którą zawartość okna ma zostać przesunięta w dół (0 - wyczyszcza obraz), BH - bajt atrybutu dla wprowadzanych na górze okna pustych znaków, CH - współrzędna Y lewego górnego rogu okna, CL - współrzędna X lewego górnego rogu okna, DH - współrzędna Y prawego dolnego rogu okna, DL - współrzędna X prawego dolnego rogu okna
|
MDA, CGA, EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 08h
|
Odczyt znaku z atrybutem.
parametry wejściowe : BH - numer strony (kopii ekranu w pamięci obrazu),
wartości zwracane : AL. - kod znaku (dla trybów znakowych i graficznych), AH - atrybut znaku (dla trybów znakowych). |
MDA, CGA, EGA, VGA
|
AH = 09h |
Wyprowadzenie na ekran znaku z atrybutem.
parametry wejściowe : BH - numer strony, AL. - kod znaku, BL - kod atrybutu, CX - liczba powtórzeń znaku. |
MDA, CGA, EGA, VGA |
AH = 0Ah
|
Wyprowadzenie znaku bez atrybutu.
parametry wejściowe : BH - numer strony, AL. - kod znaku, BL - parametr sterujący wpisem, CX - liczba powtórzeń znaku. |
MDA, CGA, EGA, VGA |
AH = 0Bh |
Wybór palety kolorów lub koloru obrzeża ekranu dla trybów CGA.
parametry wejściowe : BH = 0 (dla trybów tekstowych) wybór koloru obrzeża ekranu : BL numer koloru tła z zakresu 00h-1Fh (wartości 10h- 1Fh wybierają kolory z podwyższoną intensywnością).
BH = 1 (dla trybów graficznych 4 i 5) wybór jednej z dwóch czterokolorowych palet : BL = 0 zestaw czarny-zielony-czerwony-brązowy BL = 1 zestaw czarny-turkusowy-purpurowy-biały.
|
CGA, EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 0Ch
|
Kreślenie punktu (dla wszystkich trybów graficznych).
parametry wejściowe : AL. - numer kreślonego koloru, BH - numer strony pamięci obrazu, CX - współrzędna pozioma punktu (X), DX - współrzędna pionowa punktu (Y). |
CGA, EGA, VGA
|
AH = 0Dh |
Odczyt koloru punktu o zadanych współrzędnych (dla wszystkich trybów graficznych).
parametry wejściowe : BH - numer strony pamięci obrazu, CX - współrzędna pozioma punktu (X), DX - współrzędna pionowa punktu (Y).
wartości zwracane : AL. - odczytana wartość koloru. |
CGA, EGA, VGA |
AH = 0Eh |
Wyprowadzenie na ekran znaku.
parametry wejściowe : AL. - kod znaku, BL - kolor znaku (dla trybów graficznych). |
MDA, CGA, EGA, VGA |
AH = 0Fh |
Odczyt trybu pracy (stanu0 karty sterownika obrazu.
wartości zwracane : AH - szerokość ekranu wyrażona w znakach, AL. - numer trybu graficznego lub znakowego, BH - numer aktualnie wyświetlanej strony pamięci obrazu. |
MDA, CGA, EGA, VGA |
AH = 10h AL. = 00h |
Modyfikacja pojedynczego rejestru 16-kolorowej palety kontrolera atrybutów.
parametry wejściowe : BH - nowa zawartość rejestru (5-0), BL - numer rejestru 9wartośc 0-15).
|
EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 10h AL. = 01h
|
Modyfikacja koloru obrzeża ekranu (wpis wartości do rejestru Overscan kontrolera atrybutów0.
parametry wejściowe : BH - nowa wartość rejestru Overscan (bity 5-0). |
EGA, VGA
|
AH = 10h AL. = 02h |
Wpis nowych wartości do wszystkich 16 rejestrów palety i rejestru Overscan kontrolera atrybutów.
parametry wejściowe : ES : DX - adres początku 17-bajtowej tablicy zawierającej nowe 6-bitowe wartości rejestrów palety w formacie SR, SG, SB,R, G, B. |
EGA, VGA |
AH = 10h AL = 03h |
Wybór sposobu interpretacji najstarszego bitu atrybutu w trybach znakowych.
parametry wejściowe : BL = 0 bit 7 atrybutu znaku decyduje o wyświetlaniu tego znaku z podwyższoną jasnością, tzn. tło znaku może przybrać jeden z 16 kolorów (8 normalnych i 8 rozjaśnionych), BL = 1 bit 7 atrybutu znaku steruje migotaniem, tzn. tło znaku może być wyświetlone w 8 kolorach z migotaniem lub bez. |
EGA, VGA |
AH = 10h AL = 07h
|
Odczyt pojedynczego rejestru z 16-kolorowej palety kontrolera atrybutów.
parametry wejściowe : BL - numer rejestru palety (0-15),
wartości zwracane : BH - odczytana zawartość rejestru (bity 5-0). |
VGA |
AH = 10h AL = 08h |
Odczyt rejestru Overscan kontrolera atrybutów
wartości zwracane : BH - zawartość rejestru Overscan (bity 5-0). |
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 10h AL. = 09h
|
Odczyt wszystkich 16 rejestrów palety oraz rejestru Overscan kontrolera atrybutów.
parametry wejściowe : ES : DX - adres początku 17-bajtowej tablicy, do której funkcja wpisuje zawartości odczytywanych rejestrów.
|
VGA
|
AH = 10h AL. = 10h |
Wpis wartości do pojedynczego zestawu rejestrów koloru RGB w bloku przetwornika C/A.
parametry wejściowe : BX - numer zestawu rejestrów RGB (0-255), DH - składowa R (wartość z zakresu 0-63), CH - składowa G (wartość z zakresu 0-63), CL - składowa B (wartość z zakresu 0-63).
|
VGA |
AH = 10h AL. = 12h |
Wpis wartości do grupy rejestrów RGB przetwornika C/A.
parametry wejściowe : BX - numer pierwszego rejestru modyfikowanego bloku, CX - liczba modyfikowanych rejestrów, ES : DX - adres początku tablicy, której zawartość zostanie przepisana do bloku rejestrów R, G, B. Tablica musi zawierać 3*CX bajtów.
|
VGA |
AH = 10h AL. = 13h |
Sterownie stronicowaniem palety, tzn. odwzorowaniem zbioru 16 6-bitowych rejestrów palety w zbiór 256 18-bitowych rejestrów RGB w trybach 16-kolorowych.
parametry wejściowe : BL = 0 wybór sposobu stronicowania palety : BH = 0 wybiera 4 strony po 64 kolory, BH= 0 wybiera 16strony po 16 kolory, BL = 1 wybór strony (zestawu) kolorów : BH numer strony kolorów.
|
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 10h AL. = 15h
|
Odczyt pojedynczego zestawu rejestrów koloru RGB z bloku przetworników C/A.
parametry wejściowe : BX - numer zestawu rejestrów RGB (wartość z zakresu 0-255).
wartości zwracane : DH - składowa R (wartość z zakresu 0-63), CH - składowa G (wartość z zakresu 0-63), CL - składowa B (wartość z zakresu 0-63). |
VGA
|
AH = 10h AL. = 17h
|
Odczyt grupy rejestrów RGB bloku przetworników C/A.
parametry wejściowe : BX - numer pierwszego rejestru czytanej grupy, CX - liczba czytanych rejestrów, ES : DX - adres początku tablicy, do której zostanie przepisana zawartość wybranych rejestrów RGB. Tablica ta musi zawierać 3*CX bajtów. |
VGA |
AH = 10h AL. = 18h
|
Ładowanie wartości do rejestru PEL Mask bloku przetworników C/A.
parametry wejściowe : BL - nowa wartość rejestru PEL Mask. |
EGA, VGA |
AH = 10h AL. = 19h |
Odczyt zawartości rejestru PEL Mask bloku przetworników C/A.
wartości zwracane : BL - odczytana zawartość rejestru PEL Mask. |
EGA, VGA |
AH = 10h AL. = 1Ah |
Odczyt numeru bieżącej strony koloru oraz atrybutu stronicowania palety.
wartości zwracane : BH - numer bieżącej strony, BL - tryb stronicowania. |
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 10h AL. = 1Bh
|
Konwersja kolorów na poziomy szarości. Funkcja ta modyfikuje zawartość rejestrów RGB, zmieniając kolor na odcień szarości o identycznej jasności.
parametry wejściowe : BX - numer pierwszego zestawu rejestrów RGB przetwarzanej grupy, CX - liczba zestawów rejestrów RGB poddawanych konwersji.
|
VGA
|
AH = 11h AL. = 00h |
Ładowanie zdefiniowanych przez użytkownika czcionek ekranowych do pamięci RAM generatora znaków. Podfunkcji 00h , 01h i 02h nie kasują zawartości ekranu i są przeznaczone dla trybów tekstowych.
parametry wejściowe : BH - liczba bajtów przypadająca na znak, BL - numer bloku 9bufora pamięci), do którego ładowane są definicje czcionek. Dozwolone numery bloków to 0-3 dla karty EGA i 0-7 dla VGA, CX - liczba ładowanych definicji znaków, DX - przemieszczanie w obszarze RAM generatora znaków, do którego zostaną załadowane definicje czcionek, ES : BP - adres tablicy zawierającej wzorce ładowanych czcionek.
|
EGA, VGA |
AH = 11h AL. = 01h |
Ładowanie czcionek ekranowych o matrycy znaku 9x14 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki. |
EGA, VGA |
AH = 11h AL. = 02h |
Ładowanie czcionek ekranowych o matrycy znaku 8x8 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki.
|
EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 11h AL. = 03h
|
Wybór kroju czcionki wyświetlanego na ekranie. Funkcja ta określa, które z bloków RAM generatora znaków są używane do wyświetlania znaków na ekranie.
parametry wejściowe : BL - selektor używanych bloków czcionek: dla karty EGA bity 7-4 niewykorzystane; bity 3-2 numer bloku RAM zawierającego wzorce używane do wyświetlania znaków o ustawionym bicie 3 atrybutu; bity 1-0 numer bloku RAM zawierającego wzorce używane do wyświetlania znaków o skasowanym bicie 3 atrybutu; dla karty VGA bity 7-6 niewykorzystane; bity 5,3,2 numer bloku RAM zawierającego wzorce używane do wyświetlania znaków o ustawionym bicie 3 atrybutu; bity 4,1,0 numer bloku RAM zawierającego wzorce używane do wyświetlania znaków o skasowanym bicie 3 atrybutu. |
EGA, VGA
|
AH = 11h AL. = 04h |
Ładowanie czcionek ekranowych o matrycy znaku 8x16 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku, do którego zostaną załadowane czcionki. |
VGA |
AH = 11h AL. = 11h |
Ładowanie czcionek ekranowych o matrycy znaku 9x14 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki |
EGA, VGA |
AH = 11h AL. = 11h |
Ładowanie czcionek ekranowych o matrycy znaku 9x14 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki. |
EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 11h AL. = 12h
|
Ładowanie czcionek ekranowych o matrycy znaku 8x8 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki.
|
EGA, VGA
|
AH = 11h AL. = 14h
|
Ładowanie czcionek ekranowych o matrycy znaku 8x16 z pamięci ROM do pamięci RAM generatora znaków.
parametry wejściowe : BL - numer bloku do którego zostaną załadowane czcionki.
|
EGA, VGA |
AH = 11h AL. = 21h |
Instalacja zestawu znaków o kodach 0-255 i zadanym rozmiarze, wykorzystywanych w trybach graficznych, wskazywanego wektorem przerwania 43h.
parametry wejściowe : BL - liczba wyświetlanych na ekranie wierszy: = 00h liczba wierszy w rejestrze DL (tylko EGA), = 01h 14 wierszy, = 02h 25 wierszy, = 03h 43 wiersze, CX - liczba bajtów opisujących matrycę jednego znaku, DL - liczba wierszy na ekranie, wybrana w wyniku ustawienia BL = 00h (tylko EGA), ES : BP - adres początku tablicy czcionek zdefiniowanych przez użytkownika.
|
EGA, VGA |
AH = 11h AL. = 22h
|
Udostępnianie do wyświetlania w trybach graficznych definicji czcionki o matrycy 8x14 przechowywanej w pamięci ROM.
parametry wejściowe : BL - liczba wyświetlanych na ekranie wierszy (patrz podfunkcja 21h), DL - (tylko EGA) jak dla podfunkcji 21h.
|
EGA, VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 11h AL. = 23h
|
Udostępnianie do wyświetlania w trybach graficznych definicji czcionki o matrycy 8x8 (znaki o kodach 0-127) przechowywanej w pamięci ROM.
parametry wejściowe : BL - liczba wyświetlanych na ekranie wierszy (patrz podfunkcja 21h), DL - (tylko EGA) jak dla podfunkcji 21h.
|
EGA, VGA
|
AH = 11h AL. = 24h |
Udostępnianie do wyświetlania w trybach graficznych definicji czcionki o matrycy 8x16 przechowywanej w pamięci ROM.
parametry wejściowe : BL - liczba wyświetlanych na ekranie wierszy : = 01h 14 wierszy; = 02h 25 wierszy; = 03h 43 wierszy.
|
VGA |
AH = 12h AL. = 00h BL = 10h |
Odczyt informacji związanych z trybem pracy i konfiguracją sterownika obrazu.
wartości zwracane : BH - tryb pracy : = 00h kolorowy; = 01h monochromatyczny, BL - rozmiar pamięci obrazu na karcie : = 00h - 64kB; = 01h - 128kB; = 02h - 192B; = 03h - 256kB; CH - wartość bitów 19 i17 złącza „feature connector”, używanego do podłączenia urządzeń zewnętrznych do karty, CL - stan 4 przełączników konfiguracyjnych na karcie. Przełączniki te ustawia użytkownik instalując kartę.
|
EGA, VGA
|
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 12h AL. = 00h BL = 30h
|
Wybór rozdzielczości pionowej ekranu oraz standardowego formatu czcionki dla tej rozdzielczości w trybach znakowych. Uwaga :podfunkcja ta (oraz siedem następnych) może być wykorzystywana dla detekcji karty VGA w systemie (po jej wywołaniu w rejestrze AL. powinna zostać zwrócona wartość 12h).
parametry wejściowe : AL. - liczba poziomych linii wyświetlanych na ekranie (rozdzielczość pionowa): = 00h 200 linii; = 01h 350 linii; = 02h 400 linii.
wartości zwracane : AL. - informuje o rezultacie wykonania funkcji : =12 wykonanie poprawne; Inne wartości oznaczają błąd. |
VGA
|
AH = 12h BL = 31h
|
Sterowanie ładowaniem standardowych wartości rejestrów palety i rejestru Overscan kontrolera atrybutów w czasie przełączania trybów.
parametry wejściowe : AL. - wybiera lub blokuje ładowanie standardowych wartości do rejestrów palety w czasie przełączania trybów: = 00h ładowanie możliwe; = 01h ładowanie zablokowane.
wartości zwracane : AL. = 12 jeżeli funkcja została wykonana prawidłowo. |
VGA |
AH = 12h BL = 32h |
Sterowanie dekodowaniem przez kartę wysyłanych z procesora odwołań do portów i pamięci obrazu.
parametry wejściowe : AL. = 01h blokada dekodowania adresów, = 00h dekodowanie możliwe wartości zwracane : AL. = 12h jeżeli funkcja została wykonana poprawnie. |
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 12h BL = 34h
|
Włączenie lub wyłączenie tzw. emulacji kursora. Emulacja polega na automatycznej modyfikacji wyglądu kursora wraz ze zmianą wielkości matrycy wyświetlanej czcionki.
parametry wejściowe : AL. = 00h włączenie emulacji kursora; 01h wyłączenie emulacji kursora.
wartości zwracane : AL. = jeżeli funkcja została wykonana poprawnie. |
VGA
|
AH = 12h BL = 35h
|
Przełączanie pomiędzy sterownikiem VGA wbudowanym w płytę główną (w systemach PS/2) i kartą VGA podłączoną do gniazda rozszerzeń.
parametry wejściowe : AL. - kod podfunkcji : = 00h wyłączenie karty VGA włożonej do gniazda rozszerzeń; = 01h włączenie sterownika VGA wbudowanego w płytę główną; = 02h wyłączenie aktywnego sterownika obrazu,; = 03h włączenie nieaktywnego sterownika obrazu, ES : DX - adres początku 128-bitoego bufora, w którym funkcja będzie składować parametry stanu wyłączonego sterownika.
wartości zwracane : AL. = 12h jeżeli funkcja została wykonana poprawnie. |
VGA |
AH = 12h BL = 36h
|
Blokada lub odblokowanie układów wyświetlających obraz (wygaszenie ekranu).
parametry wejściowe : AL. = 01h blokada wyświetlania; 00h odblokowanie wyświetlania.
wartości zwracane : AL. = 12h jeżeli funkcja została wykonana poprawnie. |
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 1Ah
|
Odczyt lub zapis kodu konfiguracji sterownika obrazu DCC -Display Combination Code z/do obszaru komunikacyjnego BIOS-u (obszaru RAM rozpoczynającego się od adresu 0:0400h). Funkcja ta wywoływana jest w ramach procedur testujących wykonywanych po włączeniu komputera Power On Self Test. parametry wejściowe : AL. - wybór funkcji : = 00h odczyt kodu DCC; = 01h zapis kodu DCC, BH - kod DCC dla nieaktywnego sterownika obrazu, BL - kod DCC dla aktywnego sterownika obrazu.
wartości zwracane : AL = 1Ah oznacza poprawne wykonanie, BH - kod DCC dla zablokowanego sterownika obrazu, BL - kod DCC dla aktywnego sterownika obrazu.
Kody DCC : 00h - monitor nie podłączony, 01h - MDA z monitorem monochromatycznym, 02h - CGA z monitorem kolorowym, 04h - EGA z monitorem kolorowym, 05h - EGA z monitorem monochromatycznym, 06h - PGC z monitorem kolorowym, 07h - VGA z analogowym monitorem monochromatycznym, 08h - VGA z analogowym monitorem kolorowym, 0Bh - karta MCGA (PS/2 Model 30) z analogowym monitorem monochromatycznym, 0Ch - karta MCGA z analogowym monitorem kolorowy. |
|
AH = 1Bh |
Odczyt 64-bajtowej tablicy parametrów funkcjonalnych sterownika graficznego.
parametry wejściowe : BX = 0000h, ES : DI - wskaźnik do 64-bajtowego bufora, do którego zostanie wpisana zawartość tablicy parametrów funkcjonalnych karty. wartości zwracane : AL. =1Bh jeżeli funkcja została wykonana poprawnie. |
VGA |
Parametry wejściowe funkcji
|
Opis funkcji
|
Typ karty, dla której funkcja jest dostępna
|
AH = 1Ch
|
Odczyt lub zapis parametrów stanu karty.
parametry wejściowe : AL. - kod podfunkcji : = 00h żądanie podania rozmiaru bufora potrzebnego do przechowania odczytywanych parametrów stanu (wybranych rejestrem CX); = 01h odczyt parametrów stanu karty do tablicy zarezerwowanej przez użytkownika w RAM; = 10h przypisanie parametrom stanu sterownika obrazu wartości przechowywanych w tablicy zdefiniowanej przez użytkownika, ES : BX - adres początku tablicy przeznaczonej przez użytkownika do przechowywania parametrów stanu, CX - bity 0-2 opisują grupy parametrów stanu, które są wybierane bądź pomijane w podfunkcjach 00, 01 i 01 (wartość 0 oznacza pominięcie) : bit 0 parametry sprzętowe; bit 1 pola danych BIOS-u; bit 2 parametry stanu przetworników C/A i zawartość rejestrów koloru.
wartości zwracane : BX - rozmiar potrzebnej pamięci wyrażony w 64-bajtowych blokach (dla podfunkcji 00h), AL. = 1Ch jeżeli funkcja została wykonana poprawnie.
|
VGA
|
2.5. TRYB TEKSTOWY .
Generator znaków jest to pamięć, w której w kolejnych komórkach umieszczana jest informacja o kształcie poszczególnych znaków. Informacje te są dostępne pod adresami, które składają się z dwóch części : kodu ASCII danego znaku oraz numeru określonej linii.
do wzmacniacza wizji
Sterownik karty graficznej wysyła na magistralę adresową kolejne adresy komórek pamięci VideoRAM. Odczytane zawartości komórek trafiają na magistralę danych a dalej są kierowane w ten sposób, że pierwszy bajt stanowi część adresu dla generatora znaków. Drugą część adresu otrzymuje generator znaków od sterownika - w wyniku tego odczytana jest z generatora znaków informacja o kształcie poszczególnych znaków. Zawartość komórek generatora znaków jest przesyłana do rejestru przesuwnego, skąd w postaci sygnału szeregowego trafia na wejście adresowe multipleksera dwuwejściowego, 4-bitowego. Na 4-bitowe wejścia informacyjne jest podawany bajt atrybutu znaku. Jedynka na wejściu adresowym multipleksera powoduje, że na jego wyjściu pojawi się informacja o kolorze piksela odpowiadającego znakowi, natomiast zero spowoduje pojawienie się na jego wyjściu informacji o kolorze piksela tła. Sygnały z wyjścia multipleksera są kierowane do wzmacniacza wizji a następnie do kineskopu.
2.6. UKŁAD WSPÓŁRZĘDNYCH EKRANU .
W trybie tekstowym znak w lewym górnym rogu ekranu znajduje się w zerowym wierszu i zerowej kolumnie.
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 tryby pracy podaje tabela poniżej.
Numer trybu |
Rozdzielczość
|
Liczba kolorów |
Karta graficzna |
Adres początku pamięci obrazu |
0h |
40x24 |
16/8 szarości |
CGA,EGA,CGA |
B8000h |
1h |
40x25 |
16/8 |
CGA,EGA,CGA |
B8000h |
2h |
80x25 |
16/8 szarości |
CGA,EGA,CGA |
B8000h |
3h |
80x25 |
16/8 |
CGA,EGA,CGA |
B8000h |
7h |
80x25 |
3 |
MDA,EGA,CGA |
B0000h |
rozmiar matrycy znaku zależy od karty graficznej : tryby 0 - 3 : CGA 8x8, EGA 8x14, VGA 9x16 tryb 7 : MDA 9x14, EGA 9x14, VGA 9x16 |
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 korzystając z funkcji 11h 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 to miało miejsce w przypadku karty Hercules (do uzyskania polskich znaków trzeba było zmienić zawartość pamięci EPRPM).
2.7. ATRYBUTY ZNAKÓW .
Pamięć obrazu jest to obszar pamięci RAM ( Video RAM) do którego procesor przesyła kody ASCII znaków, które mają być wyświetlone na ekranie przy czym każdemu kodowi ASCII
( 1 bajt) towarzyszy informacja o kolorze tła, na którym ten znak ma pojawić się na ekranie i o kolorze znaku.
bajt kodu ASCII znaku |
bajt atrybutu |
|||||||
|
I |
R |
G |
B |
I |
R |
G |
B |
kolor znaku kolor tła
Każdy z trzycyfrowych sygnałów RGB wytwarzanych przez kartę graficzną i doprowadzony do odpowiedniej katody monitora powoduje wygaszenie strumienia elektronów (bit = 0) co powoduje brak świecenia piksela o danym kolorze, lub (bit = 1) wygenerowanie strumienia elektronów co powoduje świecenie określonego piksela. Trzybitowa wariacja RGB pozwala uzyskać na ekranie 8 kolorów ( 23 ). Czwarty sygnał I powoduje zmianę współczynnika wzmocnienia wzmacniaczy wizji co wpływa na zmianę natężenia strumienia elektronów w kineskopie i powoduje zmianę jaskrawości danego piksela. Powoduje to , że uzyskuje się 16 możliwych kolorów.
2.8. KODY KLAWISZY .
Oznaczenie |
Sam klawisz |
Z SHIFT |
Z CTRL |
Z ALT |
0 |
48 |
41 |
- |
0 129 |
1 |
49 |
33 |
- |
0 120 |
2 |
50 |
64 |
- |
0 121 |
3 |
51 |
35 |
- |
0 122 |
4 |
52 |
36 |
- |
0 123 |
5 |
53 |
37 |
- |
0 124 |
6 |
54 |
94 |
- |
0 125 |
7 |
55 |
38 |
- |
0 126 |
8 |
56 |
42 |
- |
0 127 |
9 |
57 |
40 |
- |
0 128 |
A |
97 |
65 |
1 |
0 30 |
B |
98 |
66 |
2 |
0 48 |
C |
99 |
67 |
3 |
0 46 |
D |
100 |
68 |
4 |
0 32 |
E |
101 |
69 |
5 |
0 18 |
F |
102 |
70 |
6 |
0 33 |
G |
103 |
71 |
7 |
0 34 |
H |
104 |
72 |
8 |
0 35 |
I |
105 |
73 |
9 |
0 23 |
J |
106 |
74 |
10 |
0 36 |
K |
107 |
75 |
11 |
0 37 |
L |
108 |
76 |
12 |
0 38 |
M |
109 |
77 |
13 |
0 50 |
N |
110 |
78 |
14 |
0 49 |
O |
111 |
79 |
15 |
0 24 |
P |
112 |
80 |
16 |
0 25 |
Q |
113 |
81 |
17 |
0 16 |
R |
114 |
82 |
18 |
0 19 |
S |
115 |
83 |
19 |
0 31 |
T |
116 |
84 |
<> |
0 20 |
U |
117 |
85 |
21 |
0 22 |
V |
118 |
86 |
22 |
0 47 |
W |
119 |
87 |
23 |
0 17 |
X |
120 |
88 |
24 |
0 45 |
Oznaczenie |
Sam klawisz |
Z SHIFT |
Z CTRL |
Z ALT |
Y |
121 |
89 |
25 |
0 21 |
Z |
122 |
90 |
26 |
0 44 |
- |
45 |
95 |
31 |
0 130 |
= |
61 |
43 |
- |
0 131 |
\ |
92 |
124 |
28 |
- |
/ |
47 |
63 |
- |
- |
SPACJA |
32 |
32 |
32 |
32 |
F1 |
0 59 |
0 84 |
0 94 |
0 104 |
F2 |
0 60 |
0 85 |
0 95 |
0 105 |
F3 |
0 61 |
0 86 |
0 96 |
0 106 |
F4 |
0 62 |
0 87 |
0 97 |
0 107 |
F5 |
0 63 |
0 88 |
0 98 |
0 108 |
F6 |
0 64 |
0 89 |
0 99 |
0 109 |
F7 |
0 65 |
0 90 |
0 100 |
0 110 |
F8 |
0 66 |
0 91 |
0 101 |
0 111 |
F9 |
0 67 |
0 92 |
0 102 |
0 112 |
F10 |
0 68 |
0 93 |
0 103 |
0 113 |
DO GÓRY |
0 72 |
56 |
- |
8 |
W PRAWO |
0 77 |
54 |
0 116 |
6 |
W LEWO |
0 75 |
52 |
0 115 |
4 lub 0 132 |
W DÓŁ |
0 80 |
50 |
- |
2 lub 0 130 |
HOME |
0 71 |
55 |
0 119 |
7 |
END |
0 79 |
49 |
0 117 |
1 lub 0 129 |
PgUp |
0 73 |
57 |
0 132 |
9 |
PgDn |
0 81 |
51 |
0 118 |
3 lub 0 131 |
Ins |
0 82 |
48 |
- |
- |
Del |
0 83 |
46 |
- |
- |
5 (num) |
- |
53 |
- |
5 lub - |
* (szary) |
42 |
PrtSc |
0 114 |
- |
- (szary) |
45 |
45 |
- |
- |
+ (szary) |
43 |
43 |
- |
- |
ESC |
27 |
27 |
27 |
- |
BackSpace |
8 |
8 |
127 |
- |
TAB |
9 |
0 15 |
- |
- |
ENTER |
13 |
13 |
10 |
- |
2.9. WYKAZ REJESTRÓW .
Rejestry wewnętrzne .
Wszystkie parametry związane z wyświetlaniem obrazu są kontrolowane poprzez zbiór 8-bitowych rejestrów wewnętrznych. Każdy z rejestrów może zawierać kilka niezależnych pól, sterujących różnymi funkcjami graficznymi:
rejestry ogólnego przeznaczenia lub „zewnętrzne” General or External
rejestry sekwencera,
rejestry kontrolera CRT,
rejestry kontrolera graficznego,
rejestry kontrolera atrybutów,
rejestry przetworników C/A (tylko dla karty VGA).
Każda z powyższych grup jest odwzorowywana przez karty w przestrzeń wejścia - wyjścia procesora i dostępna poprzez rozkazy in i out asemblera. Sposób dostępu jest jednak różny dla różnych rejestrów:
bezpośredni, poprzez osobny adres portu dla każdego rejestru (dla rejestrów ogólnego przeznaczenia),
pośredni, poprzez dwa porty: indeksowy i danych (dla rejestrów sekwencera, kontrolera graficznego, kontrolera CRT i rejestrów koloru przetwornika C/A),
pośredni, poprzez jeden port z przełączanym kontekstem(dla kontrolera atrybutów).
2.10. REJESTRY OGÓLNEGO PRZEZNACZENIA .
Do grupy tej zaliczane są cztery rejestry odwzorowane bezpośrednio w przestrzeń adresów wejścia - wyjścia procesora i położone poza głównymi blokami sterującymi. W dokumentacji technicznej rejestry te są określane nazwą „external” dla karty EGA, lub „general” dla karty VGA, co można tłumaczyć jako „zewnętrzne”, „główne” lub ”ogólne”.
Nazwa rejestru |
Port dla zapisu (EGA/VGA) |
Port dla odczytu (EGA) |
Port dla odczytu (VGA) |
Miscellaneous Output |
3C2 |
-- |
3CC |
Feature Control |
3?A |
-- |
3CA |
Input Status #0 |
-- |
3C2 |
3C2 |
Input Status #1 |
-- |
3?A |
3?A |
? = D dal trybów kolorowych, B dla trybów monochromatycznych
|
2.11. REJESTRY UKŁADU SEKWENCYJNEGO .
REJESTR ZEROWANIA - indeks 00h.
Rejestr zerowania (Reset Register) umożliwia zatrzymanie układu sekwencyjnego (konieczne do zabezpieczenia pamięci obrazu przy zmianie zawartości rejestru trybu taktowania (indeks 01h) lub zmianie częstotliwości zegara wybieranego zawartością dodatkowego rejestru wyjściowego (rejestry zewnętrzne - adres 3C2h/3CCh)).
BIT : ZNACZENIE
0 : Asynchroniczne zerowanie:
0 - Natychmiastowe zatrzymanie układu sekwencyjnego oraz odcięcie rejestru informacyjnego układu sekwencyjnego przez ustawienie jego wyprowadzeń w stan wysokiej impedancji (grozi utratą danych),
1 - Normalna praca układu sekwencyjnego.
1 : Synchroniczne zerowanie:
0 - Zatrzymanie układu sekwencyjnego; powinno poprzedzać zmianę zawartości rejestru trybu taktowania (indeks 01h) lub wybór zegara w dodatkowym rejestrze wyjściowym (rejestry zewnętrzne - adres we/wy 3C2h/3CCh)
1 - Normalna praca układu sekwencyjnego.
2 - 7 : Zarezerwowane.
UWAGA:
Bity 0 i 1 rejestru zerowania muszą mieć wartość 1 przy normalnej pracy układu sekwencyjnego.
REJESTR TRYBU TAKTOWANIA - indeks 01h.
Rejestr trybu taktowania (Clocking Mode Register) określa część parametrów dotyczących zegara taktującego pracę sterownika. W celu zabezpieczenia zawartości pamięci obrazu podczas zmiany tego rejestru należy spowodować synchroniczne zerowanie układu sekwencyjnego za pomocą rejestru zerowania (indeks 00h).
BIT : ZNACZENIE
0 : Wybór szerokości znaków 8/9:
0 - Znaki o szerokości 9 punktów w trybie pracy 07h oraz tekstowych trybach pracy bez emulacji CGA lub EGA (wtedy szerokość znaków wynosi 8 punktów),
1 - Znaki o szerokości 8 punktów,
1 : Nie używany,
2 : Wybór sposobu ładowania rejestrów przesuwnych (co 2):
0 - Bajty pobierane z płatów pamięci są przesyłane do układu określania atrybutu w formie czterech równoległych sekwencji bitowych (po jednej dla kadiego płatu),
1 - Bajty pobierane z dwóch kolejnych płatów pamięci są ze sobą† łączone i przesyłane do układu określania atrybutu w formie dwóch równoległych sekwencji bitowych (po jednej dla dwóch płatów) co zmniejsza o połowę liczbę dostępnych kolorów, ale podwaja liniową przestrzeń adresową; przy każdym odczycie z pamięci jest pobieranych 16 (a nie 8) bitów sekwencji, a więc sterownik odczytuje pamięć obrazu co drugi takt licznika znaków (żaden ze standardowych trybów pracy nie korzysta z tej możliwości)
3 : Dzielnik częstotliwości wyświetlanych punktów:
0 - Częstotliwość wyświetlania punktów bez zmian,
1 - Częstotliwość wyświetlania punktów o połowę mniejsza (w celu realizacji trybów pracy o rozdzielczości 320x200 punktów (40 kolumn)),
4 : Wybór sposobu ładowania rejestrów przesuwnych (co 4):
0 - Bajty pobierane z płatów pamięci są przesyłane do układu określania atrybutu w formie czterech równoległych sekwencji bitowych (po jednej dla każdego płatu),
1 - Bajty pobierane z czterech kolejnych płatów pamięci są ze sobą łączone i przesyłane do układu określania atrybutu w formie jednej sekwencji bitowej co zmniejsza do jednej czwartej liczbę dostępnych kolorów, ale zwiększa czterokrotnie liniową przestrzeń adresową; przy każdym odczycie z pamięci są pobierane 32 (a nie 8) bity sekwencji, a więc sterownik odczytuje pamięć obrazu co czwarty takt licznika znaków (żaden ze standardowych trybów pracy nie korzysta z tej możliwości),
5 : Wygaszenie ekranu:
0 - Normalne wyświetlenie obrazu,
1 - Programowe odłączenie monitora przy jednoczesnym zachowaniu działania sterownika; może być używane w programach wygaszających ekran,
6 - 7 : Nie używane.
REJESTR ZABLOKOWANIA PŁATÓW PAMIĘCI - indeks 02h.
Rejestr zablokowania płatów pamięci (Map Mask Register) umożliwia selektywną modyfikację wybranych płatów pamięci podczas zapisu do pamięci obrazu.
BIT : ZNACZENIE
0 : Zerowy płat pamięci:
0 - Brak zezwolenia na modyfikację płatu,
1 - Zezwolenie na modyfikację płatu,
1 : Analogicznie dla płatu nr 1,
2 : Analogicznie dla płatu nr 2,
3 : Analogicznie dla płatu nr 3,
4 - 7 : Nie używane.
UWAGI:
Zawartość rejestru jest uwzględniana w każdym trybie zapisu do pamięci obrazu.
W trybach pracy sterownika używających adresowania przemiennego bity 0 i 1 oraz 2 i 3 rejestru powinny mieć takie same wartości.
W trybach używających adresowania modulo 4 bity 0,1,2,3 rejestru powinny mieć taką samą wartość.
Zablokowanie płatu pamięci (brak zezwolenia na modyfikację płatu) nie jest równoznaczne z pominięciem płatu przy wyświetlaniu obrazu na ekranie określanym przez rejestr pominięcia płatów pamięci (układ określania atrybutu - indeks 12h).
REJESTR WYBORU ZBIORU ZNAKÓW - indeks 03h.
Rejestr wyboru znaków (Charakter Map Register) umożliwia określenie numeru obszaru, w którym znajduje się zbiór znaków wyświetlanych w trybie tekstowym. Za pomocą tego rejestru można również wybrać drugi zbiór znaków wyświetlanych, gdy bit 3 atrybutu znaku ma wartość 1 (w ten sposób na ekranie może być wyświetlonych 512 znaków).
BIT : ZNACZENIE
0,1,4 : Numer obszaru zawierającego pierwszy zbiór znaków (wybierany, gdy bit 3 atrybutu znaku ma wartość 0),
2,3,5 : Numer obszaru zawierającego drugi zbiór znaków (wybierany, gdy bit 3 atrybutu znaku ma wartość 1),
6 - 7 : Nie używane,
UWAGI:
W tekstowym trybie pracy zbiory znaków są przechowywane w drugim płacie pamięci w ośmiu 8192-bajtowych obszarach po 256 znaków (32 bajty na znak). Przed wybraniem obszaru należy wypełnić go wzorcami bitowymi - załadować do niego zbiór znaków. Wybór tekstowego trybu pracy za pomocą funkcji BIOS-u 00h powoduje załadowanie standardowego dla danego trybu zbioru znaków do obszaru 0 i wyzerowanie rejestru wyboru zbioru znaków. Rejestr wyboru zbioru znaków powinien być modyfikowany tylko po
synchronicznym zerowaniu układu sekwencyjnego (rejestr zerowania - indeks 00h).
Asynchroniczne zerowanie układu sekwencyjnego (rejestr zerowania - indeks 00h) powoduje wyzerowanie rejestru wyboru zbioru znaków.
REJESTR TRYBU ADRESOWANIA PAMIĘCI - indeks 04h.
Rejestr trybu adresowania pamięci (Memory Mode Register) określa bieżący tryb adresowania pamięci stosowany przez układ sekwencyjny.
BIT : ZNACZENIE
0 : Nie używany równy 0,
1 : Nie używany równy 1,
2 : Adresowanie przemienne:
0 - Parzyste komórki pamięci na parzystych płatach mają (dla procesora) adresy parzyste, zaś nieparzyste komórki pamięci na nieparzystych płatach - adresy nieparzyste; taki sposób przypisania adresów komórkom pamięci umożliwia podwojenie liniowej przestrzeni adresowej,
1 - Standardowy sposób adresowania,
3 : Adresowanie modulo 4:
0 - Standardowy tryb adresowania,
1 - Kolejne komórki każdego płatu pamięci mają (dla procesora) adresy różniące się o 4, czyli:
- komórki płatu 0 - adresy podzielne przez 4,
- komórki płatu 1 - adresy podzielne przez 4 z resztą 1,
- komórki płatu 2 - adresy podzielne przez 4 z resztą 2,
- komórki płatu 3 - adresy podzielne przez 4 z resztą 3.
Taki sposób adresowania pozwala zwiększyć czterokrotnie liniową przestrzeń adresową.
4-7 : Nie używane.
UWAGI:
Wyzerowanie bitu 2 rejestru (adresowanie przemienne) powoduje przy odczycie zastąpienie nieparzystych komórek na parzystych płatach pamięci nieparzystymi komórkami z nieparzystych płatów oraz przy zapisie - ochronę przed modyfikacją (przez wyłączenie z przestrzeni adresowej procesora) parzystych komórek na nieparzystych płatach pamięci i nieparzystych komórek na parzystych płatach. Adresowanie przemienne (z przesunięciem) jest stosowane w tekstowych trybach pracy oraz podczas emulacji graficznych trybów pracy ster. CGA (porównaj rejestr dodatkowy układu graficznego - indeks 06h). Adresowanie modulo 4 jest używane w graficznych trybach pracy z 256 kolorami.
Bieżący tryb adresowania pamięci stosowany przez układ sekwencyjny powinien być zgodny z trybem adresowania pamięci stosowanym przez układ graficzny (patrz rejestr trybu zapisu/odczytu - indeks 05h i rejestr dodatkowy układu graficznego - indeks 06h) oraz układ sterowania wyświetlaczem (patrz rejestr trybu adresowania - indeks 17h).
2.12. REJESTRY UKŁADU GRAFICZNEGO .
REJESTR USTAWIANIA/ZEROWANIA - indeks 00h.
Rejestr ustawiania/zerowania (Set/Reset Register) dzieli płaty pamięci na te, których bity będą ustawiane (lub poddawane operacji logicznej z 1) i te, których bity będą zerowane (lub poddawane operacji logicznej z 0) podczas zapisu do pamięci obrazu, czyli zawiera numer koloru nadawany punktom podczas zapisu. Rodzaj wykonywanej operacji
logicznej zależy od stanu rejestru przesunięcia cyklicznego i wyboru funkcji (indeks 03h).
BIT : ZNACZENIE
0 : Sposób modyfikacji płatu pamięci nr 0,
0 - Zerowanie (lub operacja logiczna z 0),
1 - Ustawianie (lub operacja logiczna z 1),
1 : Analogicznie dla płatu pamięci nr 1,
2 : Analogicznie dla płatu pamięci nr 2,
3 : Analogicznie dla płatu pamięci nr 3, czyli bity 0-3 zawierają numer koloru,
4 - 7 : Nie używane.
UWAGI:
Zapis do pamięci obrazu odbywa się zgodnie ze stanem rejestru trybu zapisu/odczytu (indeks 05h), rejestru zezwolenia na ustawianie/zerowanie (indeks 01h), rejestru przesunięcia cyklicznego i wyboru funkcji (indeks 03h) oraz rejestru wyboru bitów (indeks 08h).
Zawartość rejestru ustawiania/zerowania jest uwzględniana tylko w 0 i 3 trybie zapisu (patrz rejestr trybu zapisu/odczytu - indeks 05h). W 0 trybie zapisu interpretacja zawartości rejestru ustawiania/zerowania zależy od zawartości rejestru zezwolenia na ustawianie/zerowanie (indeks 01h).
REJESTR ZEZWOLENIA NA USTAWIANIE/ZEROWANIE - indeks 01h.
Rejestr zezwolenia na ustawianie/zerowanie (Enable Set/Reset Register) pozwala na zezwolenie (lub zabronienie) na modyfikacje płatów pamięci zgodnie z zawartością rejestru ustawiania/zerowania (indeks 00h).
BIT : ZNACZENIE
0 : Modyfikacja 0 płatu pamięci zgodnie z zawartością rejestru ustawiania/zerowania (indeks 00h),
0 - Brak zezwolenia na modyfikację,
1 - Zezwolenie na modyfikację,
1 : Analogicznie dla płatu pamięci nr 1,
2 : Analogicznie dla płatu pamięci nr 2,
3 : Analogicznie dla płatu pamięci nr 3,
4 - 7 : Nie używane.
UWAGI:
Zawartość rejestru zezwolenia na ustawianie/zerowanie jest uwzględniana tylko w 0 trybie zapisu (patrz rejestr trybu zapisu/odczytu - indeks 05h).
REJESTR PORÓWNANIA NUMERÓW KOLORU - indeks 02h.
Rejestr porównania numerów koloru (Color Compare Register) określa numer koloru, z którym są porównywane numery koloru punktów podczas odczytu pamięci obrazu.
BIT : ZNACZENIE
0 - 3 : Numer koloru do porównania,
4 - 7 : Nie używane.
UWAGI:
Zawartość rejestr jest uwzględniana tylko w 1 trybie odczytu (patrz rejestr trybu zapisu/odczytu - indeks 05h).
Wartość odczytanego z pamięci obrazu bitu będzie wynosiła 1, gdy numer koloru punktu jest zgodny z numerem koloru zapisanym do rejestru porównania numerów koloru i 0 w przeciwnym przypadku (podczas jednej operacji odczytu porównane są numery koloru 8 kolejnych punktów). Bieżąca zawartość każdego z płatów pamięci może być zignorowana (w celu wymuszenia zgodności różnych numerów koloru) zgodnie z zawartością rejestru pominięcia koloru (indeks 07h).
REJESTR PRZESUNIĘCIA CYKLICZNEGO I WYBORU FUNKCJI - indeks 03h.
Rejestr przesunięcia cyklicznego i wyboru funkcji (Data Rotate/Function Select Register) określa rodzaj operacji wykonywanej na bajtach zapisywanych do pamięci obrazu. Wartość wpisana do rejestru określa, o ile bitów ma zostać przesunięty cyklicznie bajt przesyłany przez procesor do pamięci obrazu (zwykle 0) oraz czy na bajtach
zapisywanych do pamięci będzie wykonywana funkcja logiczna (której drugim argumentem jest wartość odpowiedniego rejestru zatrzaskowego).
BIT : ZNACZENIE
0 - 2 : Wielkość przesunięcia cyklicznego w prawo:
000b-Brak przesunięcia,
001b-Przesuniecie cykliczne w prawo o 1,
111b-Pzesunięcie cykliczne w prawo o 7,
3 - 4 : Wybór funkcji:
00b-Zapis bajtu bez modyfikacji,
01b-AND bajtu i zawartości rejestru zatrzaskowego,
10b-OR bajtu i zawartości rejestru zatrzaskowego,
11b-XOR bajtu i zawartości rejestru zatrzaskowego,
5 - 7 : Nie używane.
UWAGI:
Gdy ma być wykonane jednocześnie przesunięcie cykliczne i funkcja logiczna, to przesunięcie cykliczne bajtu jest wykonywane jako pierwsze.
Przesuniecie cykliczne jest wykonywane tylko w 0 i 3 trybie zapisu (patrz rejestr trybu zapisu/odczytu - indeks 05h) i tylko na bajtach przesyłanych przez procesor.
Zawartość rejestru przesunięcia cyklicznego i wyboru funkcji nie jest uwzględniana w 1 trybie zapisu.
REJESTR WYBORU PŁATU PAMIĘCI - indeks 04h.
Rejestr wyboru płatu pamięci (Read Map Select Register) służy do wybrania płatu pamięci, z którego będzie odczytywany bajt.
BIT : ZNACZENIE
0-1 : Numer płatu pamięci do odczytu,
2-7 : Nie używane.
UWAGI:
Zawartość rejestru wyboru płatu pamięci jest uwzględniana tylko w 0 trybie odczytu (patrz rejestr trybu zapisu/odczytu - indeks 05h).
Ponieważ 0 tryb odczytu jest standardowym trybem odczytu dla funkcji BIOS-u, wybieranie go zwykle nie jest konieczne.
REJESTR TRYBU ZAPISU/ODCZYTU - indeks 05h.
Rejestr trybu zapisu/odczytu (Mode Register) pozwala wybrać sposób zapisywania i odczytywania informacji z pamięci obrazu oraz wraz z rejestrem dodatkowym układu graficznego (indeks 06h) określa bieżący tryb adresowania pamięci stosowany przez układ graficzny.
BIT : ZNACZENIE
0 - 1 : Numer trybu zapisu:
00b - tryb zapisu nr 0,
01b - tryb zapisu nr 1,
10b - tryb zapisu nr 2,
11b - tryb zapisu nr 3,
2 : Nie używany,
3 : Numer trybu odczytu:
0 - tryb odczytu nr 0,
1 - tryb odczytu nr 1,
4 : Adresowanie przemienne:
0 - Standardowy sposób adresowania,
1 - Parzyste komórki pamięci na parzystych płatach mają (dla procesora) adresy parzyste, a nieparzyste komórki pamięci na nieparzystych płatach - adresy nieparzyste; taki sposób przypisywania adresów komórkom pamięci umożliwia podwojenie liniowej przestrzeni adresowej,
5 : Sposób ładowania rejestrów przesuwnych:
0 - Bity z pamięci obrazu są umieszczane w rejestrach przesuwnych zgodnie z umieszczeniem na płatach pamięci,
1 - Nieparzyste bity każdego bajtu z pamięci obrazu są umieszczane w rejestrach przesuwnych odpowiadającym płatom pamięci, a parzyste - w rejestrach przesuwnych odpowiadających parzystym płatom pamięci; w ten sposób dwa kolejne bity pamięci są umieszczone w dwóch odrębnych rejestrach przesuwnych, co pozwala na emulację czterokolorowych trybów graficznych sterownika CGA (dwa sąsiednie bity określają kolor jednego punktu),
6 : Tryb z 256 kolorami:
0 - Bity z pamięci obrazu są umieszczane w rejestrach przesuwnych zgodnie z umieszczeniem na płatach pamięci,
1 - Podczas sekwencyjnego przesyłania bitów każdy bajt jest przekształcany na 42-bitowe wartości przesyłane poprzez rejestry przesuwne do układu określania atrybutu; niektóre funkcje układu określania atrybutu nie są dostępne w trybie z 256 kolorami,
7 : Nie używany.
UWAGI:
Operacja zapisu bajtu bezpośrednio do pamięci obrazu powinna być poprzedzona odczytaniem zawartości pamięci obrazu (załadowaniem odpowiednich rejestrów zatrzaskowych).
Standardowymi trybami dla funkcji BIOS-u są 0 tryb zapisu i 0 tryb odczytu, a zatem wybranie tych trybów zwykle nie jest konieczne. Wybranie odpowiedniego trybu zapisu lub odczytu pozwala niekiedy na zwiększenie szybkości działania programu.
Wartość bitu 4 rejestru (adresowanie przemienne) jest uwzględniana tylko przy operacji odczytu z pamięci obrazu i powoduje (przy wartości 1), że dla procesora nieparzyste płaty pamięci wyglądają tak samo jak parzyste. Bieżący tryb adresowania pamięci stosowany przez układ graficzny jest zwykle zgodny z trybem adresowania pamięci stosowanym przez układ sekwencyjny (patrz rejestr trybu adresowania pamięci - indeks 04h) oraz układ sterowania wyświetlaczem (patrz rejestr trybu adresowania - indeks 17h).
Adresowanie przemienne (z przesunięciem) jest stosowane w tekstowych trybach pracy oraz podczas emulacji graficznych trybów pracy sterownika CGA (patrz rejestr dodatkowy - indeks 06h).
REJESTR DODATKOWY UKŁADU GRAFICZNEGO - indeks 06h.
Rejestr dodatkowy układu graficznego (Miscellaneous Register) określa tryb pracy sterownika, umieszczenie pamięci obrazu w przestrzeni adresowej procesora oraz, wraz z rejestrem trybu zapisu/odczytu (indeks 05h), bieżący tryb adresowania pamięci stosowany przez układ graficzny.
BIT : ZNACZENIE
0 : Tryb pracy sterownika:
0 - Tekstowy tryb pracy,
1 - Graficzny tryb pracy,
1 : Przesunięcie adresu:
0 - Standardowy sposób adresowania,
1 - Podczas zapisu lub odczytu z pamięci obrazu od nieparzystego adresu zawartego w instrukcji jest odejmowane 1 i procesorowi jest udostępniana komórka o tak zmodyfikowanym adresie; parzyste adresy nie są modyfikowane,
2-3 : Adres początku i rozmiar pamięci obrazu adresowanej bezpośrednio
przez procesor:
|
Adres początku |
Rozmiar pamięci obrazu |
|
00b- 01b- 10b- 11b- |
A000h A000h B000h B800h |
128KB 64KB 32KB 32KB |
4-7 : Nie używane.
UWAGI:
Żaden dodatkowy sterownik graficzny nie może być zainstalowany bez konfliktu adresów, gdy 128KB pamięci obrazu obsługiwanej przez sterownik VGA zaczyna się od adresu A000h.
Zwykle przesuniecie adresu jest stosowane łącznie z adresowaniem przemiennym (patrz rejestr trybu adresowania pamięci - indeks 04h) w tekstowych trybach pracy i podczas emulacji graficznych trybów pracy sterownika CGA. Efektem przesunięcia jest wówczas przypisanie parzystym komórkom parzystych płatów pamięci kolejnych adresów parzystych, a parzystym komórkom nieparzystych płatów pamięci - adresów nieparzystych. Bieżący tryb adresowania pamięci stosowany przez układ graficzny jest zwykle zgodny z trybem adresowania pamięci stosowanym przez układ sekwencyjny (patrz rejestr trybu adresowania pamięci - indeks 04h) oraz układ sterowania wyświetlaczem (patrz rejestr trybu adresowania - indeks 17h).
REJESTR POMINIĘCIA KOLORU - indeks 07h.
Rejestr pominięcia koloru (Color Don`t Care Register) pozwala procesorowi pomijać wybrane płaty pamięci podczas odczytu pamięci obrazu, w celu porównania z numerem koloru zawartym w rejestrze porównania numerów koloru (indeks 02h) w 1 trybie odczytu (patrz rejestr trybu zapisu/odczytu - indeks 05h).
BIT : ZNACZENIE
0 : Pominięcie płatu pamięci nr 0:
0 - Wartość bitu z płatu pamięci nr 0 jest zawsze zgodna z wartością odpowiedniego bitu rejestru porównywania numerów koloru,
1 - Wartość bitu z płatu pamięci nr 0 jest tylko wtedy zgodna z wartością odpowiedniego bitu rejestru porównywania numerów koloru, gdy obie wartości są takie same,
1 : Analogicznie dla płatu pamięci nr 1,
2 : Analogicznie dla paktu pamięci nr 2,
3 : Analogicznie dla paktu pamięci nr 3,
4 -7 : Nie używane.
UWAGA:
Wpisanie do rejestru pominięcia koloru 0Fh spowoduje, że zgodny z numerem koloru zawartym w rejestrze porównywania numerów kolorów (indeks 02h) będzie tylko numer koloru o dokładnie takiej samej wartości, wpisanie zaś 00h spowoduje, że zgodny z numerem koloru zawartym w rejestrze porównywania numerów koloru będzie każdy numer koloru.
REJESTR WYBORU BITÓW - indeks 08h.
Rejestr wyboru bitów (Bit Mask Register) określa, które bity w komórce pamięci o wskazanym adresie będą modyfikowane podczas zapisu do pamięci obrazu. Zawartość rejestru wyboru bitów jest uwzględniana we wszystkich trybach zapisu poza 1 trybem zapisu (patrz rejestr zapisu/odczytu - indeks 05h).
BIT : ZNACZENIE
0 : Bit 0 komórki pamięci obrazu:
0 - Ochrona bitu przed zmianą,
1 - Zezwolenie na zmianę bitu,
1-7 : Analogicznie dla bitów 1-7 komórki pamięci obrazu.
UWAGI:
Operacja zapisu bajtu bezpośrednio do pamięci obrazu powinna być poprzedzona odczytaniem zawartości pamięci obrazu (załadowaniem odpowiednich rejestrów zatrzaskowych).
Wartość 00h chroni przed zmianą wszystkie bity komórki pamięci obrazu, zaś wartość FFh umożliwia zmianę wszystkich bitów komórki jedną operacją zapisu.
2.13. REJESTRY UKŁADU OKREŚLANIA ATRYBUTU .
REJESTR PALETY - indeks 00h-0Fh.
Rejestry palety (Palette Registers) przyporządkowują numerom koloru kolory (numery wzorców koloru), których wzorce są przechowywane w rejestrach wzorców koloru (układ przetwornika cyfrowo-analogowego).
BIT : ZNACZENIE
0-5 : Zawartość rejestru palety - kolor (numer wzorca koloru czyli numer rejestru wzorca koloru zawierającego 18-bitowy wzorzec koloru),
6-7 : Nie używane.
UWAGI:
Zmiana zawartości rejestrów palety wymaga odłączenia sterownika od rejestrów palety (wyzerowany bit 5 rejestru indeksowego układu określania atrybutu - adres we/wy 3C0h). Po dokonaniu zmiany należy ponownie udostępnić sterownikowi rejestry palety (poprzez ustawienie bitu 5 rejestru indeksowego).
Znaczenie zawartości rejestrów palety zależy od stanu rejestru trybu (indeks 10h) i rejestru wyboru koloru (indeks 14h).
Rejestry palety powinny być modyfikowane jedynie podczas powrotu pionowego (patrz pierwszy rejestr stanu - adres we/wy 3DAh(3BAh)). W trybie pracy z 256 kolorami rejestry palety nie są uwzględniane - nie mają wpływu na określanie koloru (8-bitowa wartość koloru pobierana z pamięci obrazu jest interpretowana jako numer rejestru wzorca koloru).
REJESTR TRYBU PRACY - indeks 10h.
Rejestr trybu pracy (Mode Control Register) służy do wybrania trybu działania układu określania atrybutu.
BIT : ZNACZENIE
0 : Wybór trybu pracy sterownika VGA:
0 - Tekstowy tryb pracy,
1 - Graficzny tryb pracy,
1 : Wybór rodzaju wyświetlacza:
0 - Wyświetlacz kolorowy,
1 - Wyświetlacz monochromatyczny,
2 : Sposób wyświetlania znaków o szerokości 9 punktów:
0 - Znaki o szerokości 8 punktów, między znakami jednopunktowy odstęp w kolorze tła poprzedniego znaku,
1 - Znaki o szerokości 9 punktów, brak odstępu między znakami (dla znaków o kodach ASCII C0h-DFh dziewiąty punkt jest taki sam jak ósmy, dla pozostałych znaków dziewiąty punkt jest wyświetlany w kolorze tła),
3 : Zmiana interpretacji bajtu atrybutu (migotanie/tło):
0 - Bity 4-7 bajtu atrybutu określaj† numer koloru tła znaku,
1 - Bity 4-6 bajtu atrybutu określaj† numer koloru tła znaku, bit 7 - migotanie znaku (gdy bit ma wartość 1),
4 : Nie używany,
5 : Ograniczenie przesunięcia poziomego (patrz rejestr przesunięcia poziomego - indeks 13h, (gdy ekran jest podzielony na dwa niezależne obszary zgodnie z zawartością rejestru podzielenia obrazu (patrz układ sterowania wyświetlaczem - indeks 18h):
0 - Przesunięcie jednoczesne obu obszarów,
1 - Przesunięcie tylko górnego obszaru,
6 : Liczba bitów przeznaczonych na numer koloru punktu:
0 - czterobitowy numer koloru punktu (umożliwia uzyskanie 16 różnych barw jednoczenie),
1 - ośmiobitowy numer koloru punktu (umożliwia uzyskanie 256 różnych barw jednocześnie),
7 : Podział rejestrów wzorców koloru (patrz układ przetwornika cyfr./analog.) na bloki:
0 - Podział na 4 bloki po 64 wzorce koloru (zawartość rejestrów palety wraz z bitami 2-3 rejestru wyboru koloru (indeks 14h) rozszerzającymi rejestry palety służy do wybierania rejestrów wzorów koloru),
1 - Podział na 16 bloków po 16 wzorców koloru (bity 0-3 rejestrów palety wraz z bitami 0-3 rejestru wyboru koloru (indeks 14h) służą do wybierania rejestrów wzorców koloru).
UWAGA:
Ograniczenie przesunięcia poziomego tylko do górnego obszaru ekranu (ustawiony bit 5 rejestru trybu pracy) powoduje zerowanie rejestru przesunięcia poziomego (indeks 13h), gdy licznik linii osiągnie linię dzielącą obraz na dwa niezależne obszary oraz odtwarzanie jego zawartości podczas powrotu pionowego.
REJESTR KOLORU BRZEGU EKRANU - indeks 11h.
Rejestr koloru brzegu ekranu (Overscan Register) zawiera kolor brzegu ekranu (numer rejestru wzorca koloru).
BIT : ZNACZENIE
0-7 : Kolor brzegu ekranu.
UWAGI:
Zawartość rejestru koloru brzegu ekranu jest traktowana jako numer rejestru wzorca koloru (patrz układ przetwornika cyfrowo-analogowego).
Standardowa wartość rejestru koloru brzegu ekranu wynosi 0 (kolor czarny) dla wszystkich trybów pracy.
Dla niektórych sterowników VGA w trybach o wysokiej rozdzielczości jest niemożliwe uzyskanie koloru brzegu ekranu innego niż czarny.
REJESTR POMINIĘCIA PŁATÓW PAMIĘCI - indeks 12h.
Rejestr pominięcia płatów pamięci (Color Plane Enable Register) określa, które płaty pamięci będą uwzględniane przy wyświetlaniu punktów. Płaty nie uwzględniane (pomijane) będą traktowane tak jakby były wypełnione zerami.
BIT : ZNACZENIE
0 : Pomijanie płatu pamięci nr 0:
0 - Płat pamięci nr 0 jest pomijany przy wyświetlaniu,
1 - Płat pamięci nr 0 jest uwzględniany przy wyświetlaniu,
1 : Analogicznie dla płatu pamięci nr 1,
2 : Analogicznie dla płatu pamięci nr 2,
3 : Analogicznie dla płatu pamięci nr 3,
4-5 : Wybór bitów diagnostycznych układu określania atrybutu, które pojawią się jako bity 4 i 5 pierwszego rejestru stanu (rejestry zewnętrzne - adres we/wy 3BAh(3DAh)):
00b-Bity 2 i 0,
01b-Bity 5 i 4,
10b-Bity 3 i 1,
11b-Bity 7 i 6,
6-7 : Nie używane.
UWAGI:
Rejestr wyboru płatów pamięci jest stosowany przy ograniczeniu liczby płatów pamięci określających kolory punktów na ekranie w trybach pracy zgodnych z trybami pracy sterownika MDA, CGA, EGA.
Pominięcie płatu pamięci (nieuwzględnienie przy wyświetlaniu obrazu na ekranie) nie jest równoznaczne z zablokowaniem płatu (brak zezwolenia na modyfikacji płatu), które określa rejestr zablokowania płatów pamięci (układ sekwencyjny - indeks 02h).
W tekstowych trybach pracy rejestr pominięcia płatów pamięci ogranicza liczbę dostępnych numerów kolorów; numer wybieranego rejestru palety stanowi wynik operacji AND na numerze koloru i bitach 0-3 rejestru pominięcia płatów.
Rejestr pominięcia płatów pamięci może być używany do zapisywania różnych obrazów do poszczególnych płatów, a nastanie wyświetlania każdego z nich przez odpowiednie określanie pomijania i uwzględniania płatów pamięci.
REJESTR PRZESUNIĘCIA POZIOMEGO - indeks 13h.
Rejestr przesunięcia poziomego (Horizontal Pel Panning Register) służy do przesunięcia obrazu na ekranie w lewo o podaną liczbę punktów.
Rejestr może być używany zarówno w tekstowych jak i graficznych trybach pracy.
BIT : ZNACZENIE
0-3 : Kod wielkości przesunięcia poziomego:
Kod |
Liczba punktów (wielkość przesunięcia)
|
||
|
Tryby tekstowe |
Tryby gr. z 256 kol. |
Tryby gr. z 16 kol. |
0000b 0001b 0010b 0011b 0100b 0101b 0110b 0111b 1000b |
1 2 3 4 5 6 7 8 0 |
0 - 1 - 2 - 3 - - |
0 1 2 3 4 5 6 7 - |
4-7 : Nie używane.
UWAGI:
W tekstowych trybach pracy brak przesunięcia wymaga wpisania do rejestru przesunięcia poziomego wartości 8 (1000b), a nie 0.
Za pomocą rejestru przesunięcia poziomego można przesunąć obraz o co najwyżej 7 punktów w graficznych trybach pracy i o co najwyżej 8 punktów w tekstowych trybach pracy. Przesuniecie poziome obrazu o więcej niż 7 (8) punktów wymaga wpisania wartości określającej adres pierwszego wyświetlanego punktu (znaku) do rejestru adresowego (układ sterowania wyświetlaczem - indeksy 0Ch, 0Dh).
Gdy rejestry przesuwne są ładowane co drugi (lub co czwarty) takt licznika znaków (patrz rejestr trybu taktowania układu sekwencyjnego - indeks 01h) rejestr adresowy (układu sterowania wyświetlaczem - indeksy 0Ch, 0Dh) może wskazywać tylko na komórkę o adresie podzielnym przez 2 (lub przez 4) i przesuniecie obrazu o zadaną liczbę punktów wymaga używania dodatkowo dwóch bitów z rejestru pierwszej linii (układ sterowania wyświetlaczem - indeks 08h).
REJESTR WYBORU KOLORU - indeks 14h.
Rejestr wyboru koloru (Color Select Register) umożliwia wybranie bloku wzorców koloru czyli grupy rejestrów przetwornika cyfrowo-analogowego. Rejestry przetw. cyfrowo-analogowego mogą być podzielone na 4 bloki po 64 rejestry (dwa bity identyfikują blok) lub na 16 bloków po 16 rejestrów (cztery bity identyfikuj† blok). Znaczenie zawartości rejestru wyboru koloru zależy od wartości bitu 7 rejestru wyboru trybu (indeks 10h).
BIT : ZNACZENIE, GDY BIT 7 REJESTRU WYBORU TRYBU MA WARTOŚĆ 1
0-3 : Numer jednego z 16 bloków wzorców koloru (bity 0 i 1 są brane zamiast bitów 4 i 5 rejestrów palety, zaś bity 2 i 3 odgrywają rolę najbardziej znaczących bitów rozszerzających rejestry palety),
BIT : ZNACZENIE, GDY BIT 7 REJESTRU WYBORU TRYBU MA WARTOŚĆ 0
2-3 : Numer jednego z 4 bloków wzorców koloru (rozszerzenie rejestrów palety o dwa najbardziej znaczące bity),
4-7 : Nie używane.
UWAGI:
Zmiana zawartości rejestru wyboru koloru umożliwia szybką zmianę całego zestawu kolorów widocznych na ekranie.
Zawartość rejestru wyboru koloru nie jest uwzględniana w 256-kolorowych trybach pracy sterownika (tryb 13h).
2.14. REJESTRY PRZETWORNIKA CYFROWO / ANALOGOWEGO .
REJESTR OGRANICZAJĄCY - adres we/wy 3C6h.
Rejestr ograniczający (PEL Mask Register) służy do ograniczania liczby rejestrów wzorców koloru używanych podczas określania kolorów punktów wyświetlanych na ekranie. Wartość przekazywana przez układ określania atrybutu jest poddawana operacji AND z zawartością rejestru ograniczającego - wynik stanowi indeks wskazujący rejestr wzorca koloru.
UWAGA:
Przy każdej zmianie trybu pracy BIOS zapisuje wartość FFh do rejestru ograniczającego. Zawartość tego rejestru nie powinna być zmieniana.
REJESTR STANU PRZETWORNIKA CYFROWO-ANALOGOWEGO - adres we/wy 3C7h.
Rejestr stanu przetwornika cyfrowo-analogowego (DAC State Register) jest używany do odczytywania stanu rejestrów wzorców koloru.
BIT : ZNACZENIE
0-1 : 00b-Rejestry wzorców koloru są odczytywane
01b - 10b - Nie używane,
11b - Rejestry wzorców koloru są zapisywane,
2-7 : Zarezerwowane.
UWAGA:
Rejestr przeznaczony tylko do odczytu.
REJESTR INDEKSOWY ODCZYTU PRZETWORNIKA - adres we/wy 3C7h.
Rejestr indeksowy odczytu przetwornika (PEL Adress Read Mode Register) służy do rozpoczęcia cyklu odczytu i określenia numeru pierwszego wzorca koloru, który będzie odczytywany.
Po zapisaniu do tego rejestru wartości powinien rozpocząć się cykl odczytu polegający na odczytaniu z rejestru informacyjnego przetwornika (adres we/wy 3C9h) trzech wartości określających intensywności trzech podstawowych barw - kolejno czerwonej, niebieskiej i zielonej.
Po każdym cyklu odczytu (tj. po każdych trzech operacjach odczytu z rejestru informacyjnego) zawartość rejestru indeksowego odczytu przetwornika jest automatycznie zwiększana o 1, co pozwala na odczytanie następnego rejestru wzorca koloru. Cykle czytania nie mogą być przerywane operacjami zapisu do rejestru informacyjnego przetwornika ponieważ może to spowodować utratę zawartości rejestrów wzorców kolorów.
Jest natomiast możliwe przerwanie bieżącego cyklu odczytu wpisaniem nowej wartości do rejestru indeksowego zapisu przetwornika (adres we/wy 3C8h) powoduje to rozpoczęcie cyklu zapisu. Między dwiema kolejnymi operacjami odczytu rejestru inf. przetwornika (adres we/wy 3C9h) powinno upłynąć co najmniej 240 ns. W czasie odczytywania rejestrów układu przetwornika cyfr.-analog. powinno być zablokowane (rozkaz CLI).
BIT : ZNACZENIE
0-7 : Numer rejestru wzorca koloru przeznaczonego do odczytu.
UWAGA:
Rejestr przeznaczony tylko do zapisu.
REJESTR INDEKSOWY ZAPISU PRZETWORNIKA - adres we/wy 3C8h.
Rejestr indeksowy zapisu przetwornika (PEL Address Write Mode Register) służy do rozpoczęcia cyklu zapisu i określenia numeru pierwszego wzorca koloru, który będzie zapisywany.
Po zapisaniu do tego rej. wartości powinien rozpocząć się cykl zapisu polegający na zapisaniu do rejestru informacyjnego przetwornika (adres we/wy 3C9h) trzech wartości określających intensywności trzech podstawowych barw - kolejno czerwonej, niebieskiej i zielonej. Po każdym cyklu zapisu (tj. po każdych trzech operacjach zapisu do rejestru informacyjnego) zawartość rejestru indeksowego zapisu przetwornika jest automatycznie zwiększana o 1, co pozwala na zapisanie do następnego rejestru wzorca koloru. Cykle zapisu nie mogą być przerywane operacjami odczytu z rej. informacyjnego, ponieważ może to prowadzić do utraty zawartości rejestrów wzorców kolorów. Jest natomiast możliwe przerwanie bieżącego cyklu zapisu wpisaniem nowej
wartości do rej. indeksowego odczytu przetwornika (adres we/wy 3C7h). Powoduje to rozpoczęcie cyklu odczytu.
Między 2 kolejnymi operacjami zapisu wartości do rej. informacyjnego przetwornika (adres we/wy 3C9h) powinno upłynąć co najmniej 240 ns. W czasie zmiany zawartości rejestrów układu przetwornika cyfr.-analog. powinno być zablokowane przyjmowanie przerwa¤ (rozkaz CLI).
BIT : ZNACZENIE
0-7 : Numer rejestru wzorca koloru przeznaczonego do zapisu.
REJESTR INFORMACYJNY PRZETWORNIKA - adres we/wy 3C9h.
Rejestr informacyjny przetwornika (PEL Data Register) służy do zapisywania i odczytywania informacji o zawartości rejestrów wzorców koloru.
Każdy cykl zapisu (odczytu) składa się z trzech operacji zapisu (odczytu) wartości określających intensywności trzech podstawowych barw: czerwonej, zielonej i niebieskiej.
Pierwszy cykl odczytu jest rozpoczynany zapisaniem do rejestru indeksowego odczytu przetwornika (adres we/wy 3C7h) numeru pierwszego rejestru wzorca koloru przeznaczonego do odczytania. Pierwszy cykl zapisu jest rozpoczynany zapisaniem do rejestru indeksowego przetwornika (adres we/wy 3C8h) numeru pierwszego rejestru wzorca koloru przeznaczonego do zapisania.
Wartości wzorców koloru nie powinny być modyfikowane i odczytywane podczas wyświetlania obrazu. Należy w tym celu wykorzystać czas pionowego powrotu lub wygasić ekran, oraz zablokować przyjmowanie przerwa¤ przez procesor (rozkaz CLI). Między 2 kolejnymi operacjami zapisu lub odczytu rejestru informacyjnego przetwornika powinno upłynąć co najmniej 240 ns.
BIT : ZNACZENIE
0-5 : Intensywność jednej z trzech barw podstawowych,
6-7 : Zarezerwowane.
3. PRZEBIEG ĆWICZENIA.
Przykładowe programy:
3.1. Wypełnienie ekranu w trybie tekstowym, za pomocą bezpośredniego odwołania się do pamięci ekranu.
uses crt, dos;
type
znak = record
kod: char;
atr:byte;
end;
var
ekran: array [0..25, 0..80] of znak absolute $b088 : 0000;
x,y: intrger;
begin
for y:=0 to 25 do
for x:=0 to 80 do
begin
ekran [y][x]. kod ='A';
ekran [y][x]. atr ='x';
end;
3.2. Program zmieniający tryb graficzny w którym karta aktualnie pracuje.
uses crt,dos;
var r:registers;
a,b,c,d:integer;
x:byte;
procedure aktualny;
begin
r.ah:=$f;
intr($10,r);
writeln (`Tryb pracy: `,r.al.);
writeln(`Liczba kolumn: `,r.ah);
writeln(`Numer aktywnej strony:',r.bh)
end;
procedure zmien;
begin
r.ah:=0;
r.al.:=x;
intr($10,r);
end;
begin
clrscr;
aktualny;
readkey;
write(`Podaj numer trybu: `);
read(x);
zmien;
aktualny;
readkey;
x;=3;
zmien;
aktualny;
readkey;
end.
3.3. Program ma za zadanie rysowanie linii na ekranie. Na końcu programu następuje powrót do trybu tekstowego.
uses crt,dos;
var r:registers;
a,b,c,d:integer;
x:byte;
z,y:word;
procedure zmiana;
begin
r.ah:=y;
r.al.:=x;
intr ($10,r);
end;
begin
y:=0;
x:=4;
zmiana;
y:=0;
x:=0;
for z:=0 to 8000 do mem [$B800:z]:=255;
for z:=0 to 8000 do mem [$B800:z+ 8192]:=170;
for z:=0 to 8000 do mem [$BC00:z]:=255;
for z:=0 to 8000 do mem [$BC00:z+ 8192]:=170;
delay(500);
y:=5;
x:=1;
intr($10,r);
readkey;
end.
KONTROLER ATRYBUTÓW
SERIALZER
PAMIĘĆ EKRANU
KONTROLER
GRAFICZNY
PRZETWORNIK CYFR.-ANALOG.
ROM
BIOS
KONTROLER
CRT
SEQUENCER
MONITOR
Sterownik CRT
Licznik linii
Pamięć obrazu
Generator znaków
Rejestr przesuwny
Rejestr atrybutu
HS
VS
numer linii
ASCII
bajt atrybutu
tło
znak
ADR
WEB
WEA
sygnały synchronizujące
I
R
G
B
Pixel Clock
sygnał szeregowy