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.