-- SimIOImpl.mesa
-- created by Suzuki, 5-Jan-82 15:35:30
DIRECTORY
Rope: TYPE,
SimIO: TYPE,
TTY: TYPE USING [Create, Destroy, Handle, PutChar],
CWF;
SimIOImpl: MONITOR IMPORTS Rope, TTY, CWF
EXPORTS SimIO = { OPEN TTY;
SimWindow: TTY.Handle;
CR: CHARACTER = 15C;
Start: PUBLIC ENTRY PROC = {
SimWindow ← TTY.Create["SimIO"]};
WF0: PUBLIC ENTRY PROC [s: LONG STRING] = {
CWF.FWF0[Char1,s]};
WF1: PUBLIC ENTRY PROC [s: LONG STRING, f: LONG POINTER] = {
CWF.FWF1[Char1,s,f]};
WF2: PUBLIC ENTRY PROC [s: LONG STRING, f1, f2: LONG POINTER] = {
CWF.FWF2[Char1, s, f1, f2]};
WF3: PUBLIC ENTRY PROC [s: LONG STRING, f1, f2, f3: LONG POINTER] = {
CWF.FWF3[Char1, s, f1, f2, f3]};
WF4: PUBLIC ENTRY PROC [s: LONG STRING, f1, f2, f3, f4: LONG POINTER] = {
CWF.FWF4[Char1, s, f1, f2, f3, f4]};
Stop: PUBLIC ENTRY PROC = {TTY.Destroy[SimWindow]};
CharAction: PROC [c: CHARACTER] RETURNS [BOOLEAN] = {
PutChar[SimWindow, c]; RETURN [FALSE]};
Char1: PROC [c: CHARACTER] = {PutChar[SimWindow, c]};
PutRope: PROC [r: Rope.Ref, newLine: BOOLEAN ← FALSE] = {
[] ← Rope.Map[base: r, action: CharAction];
IF newLine THEN PutChar[SimWindow, CR];
};
}.