DIRECTORY IO USING [STREAM, Value], Rope USING [ROPE]; TerminalIO: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; WriteRope: PROC [text: ROPE]; WriteRopes: PROC [t1, t2, t3: ROPE _ NIL]; WriteLn: PROC []; WriteChar: PROC [ch: CHAR]; WriteInt: PROC [i: INT]; Write: PROC [v1, v2, v3: IO.Value _ [null[]]]; Write1: PROC [value: IO.Value _ [null[]]]; WriteF: PROC [format: ROPE _ NIL, v1, v2, v3, v4, v5: IO.Value _ [null[]]]; WriteF1: PROC [format: ROPE _ NIL, value: IO.Value _ [null[]]]; TOS: PROC [] RETURNS [stream: IO.STREAM]; UserAbort: SIGNAL; RequestRope: PROC [text: ROPE _ NIL] RETURNS [ROPE]; RequestChar: PROC [text: ROPE _ NIL] RETURNS [CHAR]; RequestInt: PROC [text: ROPE _ NIL] RETURNS [INT]; RequestSelection: PROC [label: ROPE _ NIL, choice: LIST OF ROPE, text: ROPE _ NIL, default: NAT _ 0, timeOut: NAT _ 0] RETURNS [INT]; Confirm: PROC [choice: ROPE, label: ROPE _ NIL, timeOut: NAT _ 0, onTimeOut: BOOL _ FALSE] RETURNS [BOOL]; AddLock: PRIVATE PROC [lock, unLock: PROC]; END. TerminalIO.mesa Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. By Ch. Jacobi, August 3, 1983 9:54 am Last edited by Ch. Jacobi, October 7, 1985 10:18:13 am PDT Sequential IO for "terminal and keyboard" All processes share one terminal viewer. All procedures must not be called from inside a viewers-repaint or a TIP-notify procedure. All output procedure might be delayed while input is pending. --output --creates an output stream which writes its output into the terminal --input --may raise UserAbort --may raise UserAbort --may raise UserAbort --returns: 1 for first choice, 2 for second... -- 0 if selected outside menu or on title-line -- -1 if time out --label: header text; can not be selected. --choice: list of possible selections. --text: written to the terminal. --default: the cursor might be initially moved to this line. --timeOut: in seconds; 0 for no time out. --choice: option to confirm --label: header text; can not be selected --timeOut: in seconds; 0 for no time out. --onTimeOut: returned result if timed out. --special --USE WITH CARE. --Procedures tell client module whether some input is in progress. --The lock, unLock procedures are called within the monitorlock. --Locks cannot be removed, use only one lock per module. Κ0˜codešœ™Kšœ Οmœ7™BKšœ&™&Kšœ;™;K˜—šΟk œ˜ Kšžœžœžœ ˜Kšœžœžœ˜—K˜KšΠbl œžœž œ˜ Kšž˜K˜šœ*™*Kšœ(™(KšœZ™ZKšœ=™=K™Kšžœžœžœ˜—K™KšΟl™K˜KšΟn œžœžœ˜Kš‘ œžœžœžœ˜*Kš‘œžœ˜Kš‘ œžœžœ˜Kš‘œžœžœ˜Kš‘œžœžœ˜.Kš‘œžœ žœ˜*Kš ‘œžœ žœžœžœ˜KKš ‘œžœ žœžœ žœ˜?K˜š Πbkœžœžœ žœžœ˜)KšœE™E—K™Kš ™K˜Kšœ žœ˜K˜š ‘ œžœžœžœžœžœ˜4Kšœ™—š ‘ œžœžœžœžœžœ˜4Kšœ™—š ‘ œžœžœžœžœžœ˜2Kšœ™K˜—š‘œžœ žœžœ žœžœžœžœžœ žœžœžœžœ˜…Kšœ.™.Kšœ.™.Kšœ™K™+Kšœ'™'Kšœ!™!K™=Kšœ*™*K˜—š‘œžœ žœ žœžœ žœžœžœžœžœ˜jKšœ™Kšœ*™*Kšœ*™*Kšœ+™+—K™Kš  ™ K™š‘œžœžœžœ˜+Kšœ™KšœB™BKšœ@™@Kšœ8™8—K™Kšžœ˜K˜—…—ϊ :