Często trzeba urozmaicić wizualnie swój program. Niestety trudno jest wpaść na dobry pomysł. Rysowanie w Pascalu kółeczek, kwadracików i linii w grafice BGI lub układanie muzyczek z wykorzystaniem instrukcji Sound stało się już nieciekawe.
Większość użytkowników PC-ta zapomina, że na ich klawiaturze (chodzi tu o klawiaturę 101- lub 102-klawiszową) znajdują się diody opisane jako Num Lock, Caps Lock i Scroll Lock; czasami występuje też dioda nazwana On Line, ale ona - z punktu widzenia programisty - nie jest interesująca. Za zapalenie lub zgaszenie diody odpowiada rozkaz EDh.Bajt, który definiuje stan diod i jest przesyłany przez port (adres) 60h. Gdy zna się ten adres, pozostaje tylko wysyłanie do niego bajtów o odpowiednich wartościach :
- 00h - zgaszenie wszystkich diod
- 01h - zapalenie diody Scroll Lock
- 02h - zapalenie diody Num Lock
- 03h - zapalenie diod Num Lock i Scroll Lock
- 04h - zapalenie diody Caps Lock
- 05h - zapalenie diod Caps Lock i Scroll Lock
- 06h - zapalenie diod Num Lock i Caps Lock
- 07h - zapalenie wszystkich diod
Uwaga, w tym programie wartości podawane są dziesiętnie (bez litery h).
Wydaje mi się, że wykorzystanie tej ciekawej możliwości obsługi klawiatury PC będzie już proste. Przy okazji informuję zainteresowanych, że podobnie można obsłużyc diody dysku twardego i stacji dysków. Zapewniam przy okazji, że pokazanie takiego "efektu" znajomym wywoła u nich zachwyt.
Zainteresowanych "grzebaniem" w Assemblerze i nie tylko proszę o kontakt i zachęcam do współpracy.
{**************************************}
{********Autor:Paweł Zakrzewski********}
{**************Wałbrzych***************}
program diody;
uses crt;
var x,ilosc,wartosc : byte;
procedure LED;
begin
asm
mov al,0edh
out 60h,al
in al,64h
mov al,x
end;
end;
procedure wpisz;
begin
asm
mov al,wartosc
out 60h,al
end;
delay(200);
end;
begin
ilosc := 0;
repeat
ilosc := ilosc + 1;
led;
wartosc := 02;
wpisz;
wartosc := 04;
led;
wpisz;
led;
wartosc := 01;
wpisz;
wartosc := 00;
led;
wpisz;
until ilosc = 200;
end.
Paweł Zakrzewski
PC Kurier, Styczeń 1995