[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
Unit LED;
{The author: Salvatore Meschini
E-MAIL : smeschini@ermes.it
WWW : http://www.ermes.it/pws/mesk
Version 1.1 }
Interface
Procedure Caps(ONorOFF:boolean);
Procedure NumLock(ONorOFF:boolean);
Procedure ScrLock(ONorOFF:boolean);
Implementation
Procedure Caps(ONorOFF:boolean);Assembler;
asm
cmp ONorOFF,1 {Do you want CAPS ON?}
je @BeLight {If yes ...}
jmp @BeDarkness {Else...}
@BeLight:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
OR AL,40h
MOV ES,SI
MOV ES:[0017h],AL
jmp @FINISH
@BeDarkness:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
AND AL,0BFh
MOV ES,SI
MOV ES:[0017h],AL
@FINISH:
MOV AH,1
INT 16h
end;
Procedure NumLock(ONorOFF:Boolean);Assembler;
asm
cmp ONorOFF,1
je @BeLight
jmp @BeDarkness
@BeLight:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
OR AL,20h
MOV ES,SI
MOV ES:[0017h],AL
jmp @FINISH
@BeDarkness:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
AND AL,0DFh
MOV ES,SI
MOV ES:[0017h],AL
@FINISH:
MOV AH,1
INT 16h
end;
Procedure ScrLock(ONorOFF:Boolean);Assembler;
asm
cmp ONorOFF,1
je @BeLight
jmp @BeDarkness
@BeLight:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
OR AL,10h
MOV ES,SI
MOV ES:[0017h],AL
jmp @FINISH
@BeDarkness:
MOV SI,40h
MOV ES,SI
MOV AL,ES:[0017h]
AND AL,0EFh
MOV ES,SI
MOV ES:[0017h],AL
@FINISH:
MOV AH,1
INT 16h
end;
END.
(* -------------------------- DEMO ---------------------------- *)
USES LED;
{Make your own light effects!!!}
var i:byte;
(* The following procedure isn't affected by hardware! *)
procedure Wait(Ticks: Word); assembler; (* 18 Ticks = 1 second *)
ASM
mov CX,Ticks
@Attendi:
push AX
push ES
mov AX,0000
mov ES,AX
mov AX,ES:[046Ch]
@Lab1:
cmp AX,ES:[046Ch]
je @Lab1
pop ES
pop AX
loop @Attendi
END;
function KeyPressed: Boolean;
var
Premuto: Byte;
begin
Inline(
$B4/$0B/ { MOV AH,+$0B }
$CD/$21/ { INT $21 }
$88/$86/>Premuto); { MOV >Premuto[BP],AL }
KeyPressed := (Premuto = $FF);
end;
begin
repeat
NumLock(TRUE);
wait(1);
NumLock(FALSE);
Caps(TRUE);
wait(1);
Caps(FALSE);
ScrLock(True);
wait(1);
Scrlock(false);
Caps(TRUE);
wait(1);
Caps(FALSE);
until keypressed;
end.
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]