DIRECTORY Rope USING [ROPE]; TerminalIO: CEDAR DEFINITIONS = BEGIN UserAbort: SIGNAL; WriteRope: PROC [text: Rope.ROPE]; WriteLn: PROC []; WriteChar: PROC [ch: CHAR]; WriteInt: PROC [i: INT]; RequestRope: PROC [text, text2: Rope.ROPE _ NIL] RETURNS [Rope.ROPE]; RequestChar: PROC [text, text2: Rope.ROPE _ NIL] RETURNS [CHAR]; RequestInt: PROC [text, text2: Rope.ROPE _ NIL] RETURNS [INT]; UserSaysYes: PROC [label, text: Rope.ROPE _ NIL, default: BOOL_FALSE] RETURNS [BOOL]; RequestSelection: PROC [label: Rope.ROPE _ NIL, choice: LIST OF Rope.ROPE, text: Rope.ROPE _ NIL, default: NAT_0] RETURNS [NAT]; AddLock: 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, May 18, 1985 4:30:25 pm PDT Sequential IO for "terminal and keyboard" --default returned if discarded. --returns 1 for first choice, 2 for second... --returns 0 if discarded --default means: the cursor is initially moved to this line. --Procedures to prevent other processes of accepting userinput --while the user is expected to answer a request. --The lock, unLock procedures are called within the monitorlock --locks cannot (yet?) be removed, use only one lock per module Restrictions: Current implementation may deadlock if routines are called from inside a viewers repaint-procedure. Κ˜šœ™Icodešœ Οmœ7™BJšœ&™&Jšœ7™7Jšœ)™)—J˜šΟk œ˜ Jšœžœžœ˜J˜—JšΟb œžœž œ˜ Jšž˜J˜Jšœ žœ˜J˜JšΟn œžœ žœ˜"Jš œžœ˜Jš  œžœžœ˜Jš œžœžœ˜J˜Jš   œžœžœžœžœžœ˜EJš   œžœžœžœžœžœ˜@Jš   œžœžœžœžœžœ˜>J˜š  œžœžœžœ žœžœžœžœ˜UJšœ ™ J˜—š œžœžœžœ žœžœžœ žœžœ žœ˜qJšžœžœ˜Jšœ-™-Jšœ™J™™>Jšœ1™1Jšœ?™?Jšœ>™>—J™Jšžœ˜J˜šœ ™ JšœF™FJšœ™——…—˜ƒ