home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
modula2
/
library
/
tasking
/
bioskeyb.mod
< prev
next >
Wrap
Text File
|
1986-07-22
|
1KB
|
46 lines
IMPLEMENTATION MODULE BIOSKeyboard;
FROM SYSTEM IMPORT SWI, SETREG, GETREG, AX, BX, CODE;
PROCEDURE Read(VAR ch, scan: CHAR);
VAR
tmp: CARDINAL;
BEGIN
SETREG(AX, 0);
SWI(16H);
GETREG(AX, tmp);
ch := CHR(tmp MOD 100H);
scan := CHR(tmp DIV 100H);
END Read;
PROCEDURE Check(VAR ch, scan: CHAR; VAR avail: BOOLEAN);
VAR
tmp: CARDINAL;
flags: BITSET;
BEGIN
SETREG(AX, 100H);
SWI(16H);
CODE(
9CH, (* push flags *)
5BH); (* pop bx *)
GETREG(AX, tmp);
GETREG(BX, flags);
avail := NOT(6 IN flags); (* test zero flag *)
IF avail THEN
ch := CHR(tmp MOD 100H);
scan := CHR(tmp DIV 100H);
END;
END Check;
PROCEDURE GetStatus(VAR stat: Status);
VAR
tmp: CARDINAL;
BEGIN
SETREG(AX, 200H);
SWI(16H);
GETREG(AX, tmp);
tmp := tmp MOD 100H;
stat := Status(tmp);
END GetStatus;
END BIOSKeyboard.