[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
$F+,O+}
Unit KeyServ;
Interface
{$IFNDEF VIRTUALPASCAL}
Function GetKey(Var Key: Word): Boolean;
Function ReadKey: Char;
Function KeyPressed: Boolean;
Procedure ClearKBD;
{$ENDIF}
Implementation
{$IFNDEF VIRTUALPASCAL}
Const
MCh: Byte=0;
Function GetKey; Assembler;
Asm
mov ah,01h
int 16h
mov al,00h
je @@1
xor ah,ah
int 16h
les di,Key
mov word ptr es:[di],ax
mov al,01h
@@1:
End;
Function ReadKey; Assembler;
Asm
mov al,MCh
mov byte ptr MCh,00
or al,al { ??? }
jne @0338
xor ah,ah
int 16h
or al,al
jne @0338
mov MCh,ah
or ah,ah { ??? }
jne @0338
mov al,03h
@0338:
End;
Function KeyPressed; Assembler;
Asm
cmp byte ptr MCh,00
jne @0317
mov ah,01h
int 16h
mov al,00h
je @0319
@0317:
mov al,01h
@0319:
End;
Procedure ClearKBD; Assembler;
Asm
@@Begin:
mov ah,01h
int 16h
je @@Exit
xor ah,ah
int 16h
jmp @@Begin
@@Exit:
End;
{$ENDIF}
End.
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]