1. ZADÁNÍ

Pro VGA kartu v grafickém módu 640 na 480 pixelů v 16 barvách, přímým programováním vnitřních registrů grafického kontroleru:

  1. vytvořte na obrazovce pole 4*4 stejně velkých barevných políček v 16 základních barvách,
  2. v souřadnicích x=100, y=100 zapište osový kříž černé barvy.
Programováním D-A převodníku:
  1. transformujte obrazec do 16 odstínů téhož zbarvení - 2 stupně sytosti (sytá–pastelová), 2 stupně jasu (světlá–tmavá), 4 barevné tóny (např. červená, cihlová, višňová, třešňová).
Vytvořte:
  1. proceduru pro zápis osmice sousedních pixelů na libovolnou x souřadnici. Souřadnice y se mění v celém rozsahu 0-479, x směřuje na první pixel. Proceduru ověřte zobrazením sloupců na pozicích x=31, 62, 93, 124, 155.
Naprogramujte také:
  1. procedury pro zápis obrazovky na disk a zpětné čtení.

2. ŘEŠENÍ

V této části jsou popsány funkce a chování jednotlivých částí programu, celý program je uveden v příloze 1. Řešení jednotlivých úkolů jsou oddělena v procedurách se jmény Task1Task4, poslední úkol v částech Save a Load. K realizaci jsme použili programovací jazyk Pascal.

2.1 Obecné procedury, funkce a konstanty

Vytvořený program obsahuje několik procedur, funkcí a konstant, které jsou obecného rázu nebo jsou používány ostatními. Jedná se o tyto:

2.2 Úkol 1. - Čtverec se 16 základními barvami

První úlohu řeší Task1, která pomocí procedury PutPixel zobrazí do čtverce 400 na 400 bodů 16 menších čtverců 100 na 100 bodů v 16 barvách. Hodnota barvy je počítána z aktuální kreslící pozice.

2.3 Úkol 2. - Osový kříž černé barvy

Procedura Task2 opět využívá služeb PutPixel, nakreslí dvě černé čáry, jednu svislou a druhou vodorovnou, obě na souřadnicích 100.

2.4 Úkol 3. - Změna palety

Procedura Task3 používá procedur ChoosePalette (pomocí adresového a datového portu kontroléru atributů na portu 3C0h změníme registr palety konkrétní barvy s dočasným potlačením zobrazení) a SetPalette (změna barvy) pro změnu 16 základních barev na odstíny červené.

2.5 Úkol 4. - Zápis osmice sousedních pixelů

Procedura Task4 vykreslí na obrazovku pětici 8 pixelů silných proužků pomocí procedury PutByte. Ta vloží na zadanou pozici x, y osm pixelů v řadě ve směru pomyslné osy x.

2.6 Úkol 5. - Ukládání a čtení

Problém řeší procedury Save a Load. Zápis se provádí do určeného souboru po jednotlivých pixelech ze čtverce 400 na 400 bodů, hodnota barvy je vyjádřena jednou hexadecimální číslicí (počítá se s ukládáním maximálně 16 barev). Pro zjištění barvy se používá procedury GetPixel. Procedura Load čte údaje z disku, hexadecimální vyjádření barvy převede do dekadické podoby a použije proceduru PutPixel.

3. ZÁVĚR

Podařilo se nám vyřešit všechny zadané úkoly s použitím přímého přístupu k portům adaptéru a s využitím videopaměti. Bližší popis řešení uvádí kapitola 2.

4. LITERATURA

[1] Šnorek, Miroslav: Periferní zařízení. Vydavatelství ČVUT, 2000.
[2] SystemSoft: Systémový manuál 3.1 (Sysman). System Soft, 1995.