DEFINITION MODULE Terminal;
 PROCEDURE Read(VAR ch:CHAR);
 PROCEDURE BusyRead(VAR ch:CHAR);
 PROCEDURE ReadAgain;
 PROCEDURE Write(ch:CHAR);
 PROCEDURE WriteLn;
 PROCEDURE WriteString(s:ARRAY OF CHAR);
END Terminal.
IMPLEMENTATION MODULE Terminal;
FROM STDIO IMPORT WAITKEY,GETKEY,WRCHAR,WRSTR,WRLN;
VAR AGAIN:BOOLEAN;
    ACH:CHAR;
PROCEDURE Read(VAR ch:CHAR);
BEGIN 
IF AGAIN THEN ch:=ACH
 ELSE ch:=WAITKEY();Write(ch);
  ACH:=ch END;
AGAIN:=FALSE
END Read;
 
PROCEDURE BusyRead(VAR ch:CHAR);
BEGIN ch:=GETKEY()
END BusyRead;
 
PROCEDURE ReadAgain;
BEGIN
AGAIN:=TRUE
END ReadAgain;
 
PROCEDURE WriteLn;
HEX 3E 0D END WriteLn;
PROCEDURE Write(ch:CHAR);
HEX
08 3E FE CD 01 16 08 D7 C9 END Write;
 
PROCEDURE WriteString(s:ARRAY OF CHAR);
HEX 
D9 3E FE CD 01 16 D9 7E A7 C8 C5 D7 C1 0B 23 78
B1 20 F4 C9 END WriteString;

BEGIN
ACH:=0I;AGAIN:=FALSE;
END Terminal.
