-- PDTTYImpl.mesa
-- Copyright (C) 1984, Xerox Corporation. All rights reserved.
-- Michael Plass, September 20, 1984 10:02:29 am PDT
DIRECTORY PDQueue, PDUser, Process, Stream, TTY;
PDTTYImpl: PROGRAM IMPORTS PDQueue, PDUser, Process, Stream, TTY =
BEGIN
ttyStream: Stream.Handle ← NIL;
WriteLine: PROC [line: LONG STRING] = {
ttyStream.PutString[line];
ttyStream.PutChar['\n];
};
KeyWatcher: PROC = {
DO
[] ← ttyStream.GetChar[];
[] ← PDQueue.SetLogState[FALSE];
PDUser.TalkWithUser[ttyStream];
[] ← PDQueue.SetLogState[TRUE];
ENDLOOP;
};
Init: PROCEDURE =
BEGIN
name: STRING = "Peach.log"L;
ttyImpl, backing: Stream.Handle;
[ttyImpl, backing] ← TTY.CreateTTYInstance[name, NIL, TTY.nullHandle];
ttyStream ← ttyImpl;
PDQueue.RegisterTTY[WriteLine];
[] ← PDQueue.SetLogState[TRUE];
Process.Detach[FORK KeyWatcher[]];
END;
Init[];
END.