DIRECTORY Ascii, Diablo USING [PutChar], DiabloStreams, IO USING [CreateStream, CreateStreamProcs, StreamProcs], IOUtils USING [closedStreamProcs] ; DiabloStreamsImpl: CEDAR MONITOR IMPORTS Diablo, IO, IOUtils EXPORTS DiabloStreams = BEGIN OPEN DiabloStreams; StreamProcs: TYPE ~ IO.StreamProcs; Busy: PUBLIC ERROR = CODE; DiabloProcs: REF StreamProcs _ NIL; theStream: STREAM _ NIL; --The STREAM currently writing to Diablo inUse: BOOL _ FALSE; StreamOpen: PUBLIC ENTRY PROC RETURNS [stream: STREAM] ~ { ENABLE UNWIND => NULL; IF inUse THEN ERROR Busy; stream _ IO.CreateStream[DiabloProcs, NIL]; inUse _ TRUE; }; Init: PROC ~ { DiabloProcs _ IO.CreateStreamProcs [ variety: output, class: $Diablo, putChar: PutChar, reset: Reset, flush: Flush, close: Close ]; theStream _ IO.CreateStream[DiabloProcs, NIL]; }; PutChar: PROC [self: STREAM, char: CHAR] ~ { ENABLE UNWIND => NULL; Diablo.PutChar[char]; }; Reset: PROC [self: STREAM] ~ { OPEN Ascii; ENABLE UNWIND => NULL; Diablo.PutChar[ESC]; Diablo.PutChar[CR]; Diablo.PutChar['P]; }; Flush: PROC [self: STREAM] ~ { ENABLE UNWIND => NULL; Diablo.PutChar['\030]; }; Close: ENTRY PROC [self: STREAM, abort: BOOL _ FALSE] ~ { ENABLE UNWIND => NULL; inUse _ FALSE; self.streamProcs _ IOUtils.closedStreamProcs; }; Init[]; END..... ΒDiabloStreamsImpl.mesa Copyright c 1985, Xerox Corporation. All rights reserved. Last edited by Eric Nickell, June 5, 1985 9:37:25 am PDT Tim Diebert: September 25, 1985 6:07:43 pm PDT Κ³˜code™Kšœ Οmœ/™:K™8K™.K™—šΟk ˜ K˜Kšœžœ ˜K˜Kšžœžœ0˜8Kšœžœ˜!K˜K˜—šΠlnœžœž˜ Kšžœ žœ ˜Kšžœ˜Kšœž˜Kšžœ˜K˜Kšœ žœžœ ˜#Kšœžœžœžœ˜K˜K˜Kšœ žœžœ˜#Kšœ žœžœΟcΠcs ˜AKšœžœžœ˜K˜š Οn œžœžœžœžœ žœ˜:Kšžœžœžœ˜Kšžœžœžœ˜Kšœ žœžœ˜+Kšœžœ˜ K˜K˜—š’œžœ˜šœžœ˜$K˜K˜K˜K˜ K˜ K˜ Kšœ˜—Kšœ žœžœ˜.K˜K˜—š’œžœžœžœ˜,Kšžœžœžœ˜K˜K˜K˜—š’œžœžœ˜Kšžœ˜ Kšžœžœžœ˜Kšœžœ˜Kšœžœ˜K˜K˜K˜—š’œžœžœ˜Kšžœžœžœ˜Kšœ˜K˜K˜—š ’œž œžœ žœžœ˜9Kšžœžœžœ˜Kšœžœ˜Kšœ-˜-K˜K˜—K˜K˜Kšžœ˜——…—