DEFINITION MODULE Terminal; (* Terminal Input/Output Derived from the Lilith Modula-2 system developed by the group of Prof. N. Wirth at ETH Zurich, Switzerland. *) EXPORT QUALIFIED Read, KeyPressed, ReadAgain, ReadString, Write, WriteString, WriteLn; PROCEDURE Read (VAR ch: CHAR); (*- Read a character from the terminal. out: ch character that was read. The character is not echoed. Code ASCII.cr from keyboard is transformed into System.EOL. *) PROCEDURE KeyPressed (): BOOLEAN; (*- Test if a character is available to Read from terminal. *) PROCEDURE ReadAgain; (*- Undo the last read: Make the last character be re-read. *) PROCEDURE ReadString(VAR string: ARRAY OF CHAR); (*- Read a line from the terminal. out: string receives the text of the line Characters are accepted (and echoed) from the keyboard until is entered. The is not returned or echoed. and can be used for editing. Tabs may be entered, but are expanded into blanks immediately. No other control characters may be entered. *) PROCEDURE Write (ch: CHAR); (*- Write a character to the terminal. in: ch character to be written. If terminal output has not been redirected, the following interpretations are made: System.EOL (36C) = go to beginning of next line ASCII.ff (14C) = clear screen and set cursor home ASCII.del (177C) = erase the last character on the left ASCII.bs (10C) = move 1 character to the left ASCII.cr (15C) = go to beginning of current line ASCII.lf (12C) = move 1 line down, same column *) PROCEDURE WriteString (string: ARRAY OF CHAR); (*- Write a string to the terminal. in: string string to be written. The string can be terminated by a NUL (0C). *) PROCEDURE WriteLn; (*- Write a new-line to the terminal. [Equivalent to Write(EOL)] *) END Terminal.