home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1986-07-22 | 1.0 KB | 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.
-