; program manipuluje diodami klawiatury ; ; autor: bogdan d. ; kontakt: bogdandr (at) op (dot) pl ; ; nasm -o999 -o klaw.com -f bin klaw.asm ; ; Copyright (C) 2005-2007 Bogdan 'bogdro' Drozdowski, bogdandr @ op . pl ; ; Ten program jest wolnym oprogramowaniem; mozesz go rozpowszechniac ; i/lub modyfikowac zgodnie z licencja GNU Lesser General Public License ; (GNU LGPL) w wersji wydanej przez Fundacje Wolnego Oprogramowania; ; wedlug wersji 3 Licencji lub (jesli wolisz) jednej z pozniejszych wersji. ; ; Ten program jest udostepniany z nadzieja, ze bedzie uzyteczny, lecz ; BEZ JAKIEJKOLWIEK GWARANCJI; nawet domyslnej gwarancji PRZYDATNOSCI ; HANDLOWEJ albo PRZYDATNOSCI DO OKRESLONYCH ZASTOSOWAN. W celu uzyskania ; blizszych informacji - Licencja GNU Lesser General Public License. ; ; Z pewnoscia wraz z niniejszym programem otrzymales tez egzemplarz ; Licencji GNU Lesser General Public License; jesli nie - napisz do ; Fundacji Wolnego Oprogramowania: ; Free Software Foundation ; 51 Franklin Street, Fifth Floor ; Boston, MA 02110-1301 ; USA org 100h ;bit 2 = capslk, bit 1 = numlk, bit 0 = scrllk, reszta bitow musi byc rowna 0 start: mov ah, 2 int 16h mov bh, al ; zachowaj aktualny stan flag mov ah, 86h mov cx, 7 mov dx, 0a120h ; przygotuj sie do pauzy (pol sekundy) mov al, 0edh ; wysylamy komende: zmien stan diod ; na klawiaturze out 60h, al xor al, al ; zadna dioda sie nie swieci out 60h, al int 15h ; zrob pauze mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 2 ; num lock out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 4 ; caps lock out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 1 ; scroll lock out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 6 ; caps+num out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 5 ; caps+scroll out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 3 ; num+scroll out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 7 ; wszystkie diody sie swieca out 60h, al int 15h ; pauza mov ah, 86h int 15h mov al, 0edh out 60h, al mov al, 2 ; num lock out 60h, al ; teraz sprawdzajac odpowiednie bity ; w BH dowiemy sie, ; ktore diody tak naprawde maja ; byc zapalone xor al, al test bh, 01000000b jz nie_caps or al, 4 nie_caps: test bh, 00100000b jz nie_num or al, 2 nie_num: test bh, 00010000b jz koniec or al, 1 koniec: mov bl, al mov al, 0edh out 60h, al mov al, bl ; wysylamy prawidlowy stan diod out 60h, al mov ax, 4c00h int 21h ; wyjscie z programu