MODULE TypeWriter;
IMPORT Out;
VAR sOn- : BOOLEAN;
TYPE Register* = RECORD
ch* : CHAR;
str* : ARRAY 128 OF CHAR;
END;
VAR r* : Register;
(* —- основные процедуры *)
PROCEDURE Char*;
BEGIN Out.Char(r.ch);
END Char;
PROCEDURE NewLine*;
BEGIN Out.Ln;
END NewLine;
PROCEDURE String*;
BEGIN Out.String(r.str);
END String;
(* —- процедуры изменения состояний и регистров *)
PROCEDURE StateOn;
BEGIN sOn := TRUE;
END StateOn;
PROCEDURE StateOff;
BEGIN sOn := FALSE;
END StateOff;
PROCEDURE ResetRegister;
BEGIN r.ch := 0X; r.str[0] := 0X;
END ResetRegister;
(* —- процедуры включения и выключения машины *)
PROCEDURE On*;
BEGIN StateOn; ResetRegister;
END On;
PROCEDURE Off*;
BEGIN StateOff; ResetRegister;
END Off;
BEGIN
On;
END TypeWriter.