language-Modula2-0.1: examples/Modula-2_Libraries/PMOS/sources/tests/keytest.mod
MODULE KeyTest;
(********************************************************)
(* *)
(* Test of keyboard driver. *)
(* *)
(* Programmer: P. Moylan *)
(* Last edited: 24 July 1994 *)
(* Status: OK *)
(* *)
(********************************************************)
FROM GlassTTY IMPORT
(* proc *) WriteString, WriteLn, WriteChar, SetCursor;
FROM KTrace IMPORT
(* proc *) InTrace, OutTrace, TraceOn;
FROM Keyboard IMPORT
(* proc *) InKey;
(*
IMPORT SpuriousInterrupts;
*)
IMPORT Timer;
(************************************************************************)
PROCEDURE RunTheTest;
(* Keeps reading characters, and writing them on the screen, until *)
(* the Esc key has been typed twice in succession. *)
CONST Esc = CHR(27);
VAR code: CHAR; count: CARDINAL; EscDetected: BOOLEAN;
BEGIN
InTrace ("RunTheTest");
SetCursor (0,0); WriteString ("Test of keyboard driver.");
WriteString (" To exit, hit the Esc key TWICE.");
WriteLn;
count := 0;
LOOP
code := InKey();
IF code = Esc THEN
IF EscDetected THEN EXIT(*LOOP*)
ELSE EscDetected := TRUE
END (*IF*);
ELSE EscDetected := FALSE;
END (*IF*);
IF code = CHR(13) THEN
WriteLn; count := 0;
ELSE
WriteChar (code);
INC (count);
IF count = 80 THEN
WriteLn; count := 0;
END (*IF*);
END(*IF*);
END (*LOOP*);
WriteLn;
WriteString ("End of test.");
WriteLn;
OutTrace ("RunTheTest");
END RunTheTest;
(************************************************************************)
(* MAIN PROGRAM *)
(************************************************************************)
BEGIN
(* TraceOn (15, 24, 0, 79);*)
RunTheTest;
END KeyTest.