Egy régóta nem frissített oldalon találtam rá egy őskori Turbo Pascal nyelvű programomra, ami a billentyűzeten található ledeket kapcsolgatta. Közzéteszem ezt az írást is, hogy mindenki bölcs legyen tőle 🙂
Az alábbiakban – rövid magyarázattal együtt – közlök egy Pascal nyelvű programot, mellyel a billentyűzeten található ledek kapcsolgatása válik lehetővé. (Megj.: a program már a Windows XP alatt sem nagyon akart működni…)
A program a billentyűzet státuszbytejait állítgatja át, ezzel éri el a ledek ki-be kapcsolását. Ezek a státuszbyteok a hexa 417 és 418 memóriacímeken találhatók. A két memóriacím egyes bitjei használatosak a billentyűzet különböző állapotainak jelzésére. A program szempontjából a hexa 417 cím alábbi bitjei érdekesek (a legelső bit a 0. sorszámú, az utolsó a 7.):
- 4. bit: a Scroll Lock állapota
- 5. bit: a Num Lock állapota
- 6. bit: a Caps Lock állapota
Ha az adott bit 1, akkor a led aktív, ha 0, akkor pedig nem aktív.
A billentyűzet – és egyéb hardverelemek – programozásáról az alábbi könyvekben lehet bővebb infót találni:
Peter Norton: Az IBM PC programozása, Műszaki Könyvkiadó, Budapest, 1990
Abonyi Zsolt: PC hardver kézikönyv, ComputerBooks, Budapest, 1995
program Ledek_vezerlese;
uses Crt;
const CapsLock = 64;
NumLock = 32;
ScrollLock = 16;
Esc = #27;
var b : char;
ki : boolean;
bl : byte absolute $0:$417;
begin
ClrScr;
ki:=false;
while (not ki) do
begin
b:=ReadKey;
case b of
(* Caps Lock bekapcsolasa *)
'c','C': bl:=bl or CapsLock;
(* Caps Lock kikapcsolasa *)
'v','V': bl:=bl and (255-CapsLock);
(* Num Lock bekapcsolasa *)
'n','N': bl:=bl or NumLock;
(* Num Lock kikapcsolasa *)
'm','M': bl:=bl and (255-NumLock);
(* Scroll Lock bekapcsolasa *)
's','S': bl:=bl or ScrollLock;
(* Scroll Lock kikapcsolasa *)
'd','D': bl:=bl and (255-ScrollLock);
(* Kilepes *)
Esc: ki:=true;
end;
end;
end.