Asembler

VGA "kolor"

Mirosaw Toton

Ostatnio zjawi si u mnie kolega z pewnym pytaniem.
Mianowicie posiada on kart graficzn Cirrus Logic
(2MB VRAM) z monitorem monochromatycznym. Okazuje si,
e niektre gry i programy wymagaj tego, by do komputera
podpity by monitor kolorowy. Gdy takowy nie zostanie
wykryty w systemie zostanie wywietlony na przykad taki
komunikat: "This application needs a vga cards" lub "This
program must be run on a system with a VGA card". Powstaje
pytanie: Czy nie mona jako obej tego problemu? Przecie
dla wikszoci gier i programw nie ma wikszej rnicy, to
jaki monitor jhest podpity do karty.

Przyjrzaem si dokadniej w jaki sposb te programy,
sprawdzaj obecno kolorowego monitora w systemie.
Okazao si, e realizowane jest poprzez funkcj 1ah,
przerwania 10h karty video. Gdy wywoamy to przerwanie
z wartociami: AH=1Ah i AL=0, to funkcja zwraca w BL
liczb okrelajc status aktywnej karty. Dla VGA z
monitorem monochromatycznym jest to liczba 7, a dla
VGA z monitorem VGA kolorowym jest to liczbza 8.
(Wicej informacji o funkcji 1Ah przerwania 10h, mona
znale w [1])

Teraz pozostaje tylko napisa now procedur obsugi
funkcji 1Ah, tak aby kade jej wywoanie zwracao w
rejestrze BL liczb 8. Now procedur "podpinamy"
rezydentnie pod przerwanie 10h i ju mamy VGA "kolor".
Mam nadziej, e mj artyku pomoe niektrym Praktykom
w "nakonieniu" opornych programw do wsppracy.

Na zaczonym wydruku znajduje si przykadowy
program, realizujcy wyej opisany problem. Naley go
skompilowa do postaci *.com. Progam by testowany na
komputerze 386DX 40MHz. Do assemblacji uyto Turbo
Assemblera 4.1, a do linkowania Turbo Linka 7.1.30.1.

Literatura

[1] Krzysztof abanowski, Programowanie kart graficznych
    - wydanie drugie poprawione i uzupenione, Lupus -
    Warszawa 1994