Appendix 3 Control Characters Several teletype control characters are available to the user for communicating directly to INTERLISP, i.e., not through the read program. These characters are enabled by INTERLISP as interrupt characters, so that INTERLISP immediately 'sees' the characters, and takes the corresponding action as soon as possible. For example, control characters are available for aborting or interrupting a computation, changing the printlevel, etc. This section summarizes the action of these characters, and references the appropriate section of the manual where a more complete description may be obtained. Section 16 describes how these interrupt characters can be disabled and/or redefined, as well as how the user can define his own new interrupt characters. Control Characters Affecting the Flow of Computation 1. control-H (interrupt) at next function call, INTERLISP goes into a break. Section 16. 2. control-B (break) computation is stopped, stack backed up to the last function call, and a break occurs. Section 16. 3. control-E (error) computation is stopped, stack backed up to the last errorset, and NIL returned as its value. Section 16. 4. control-D (reset) computation is stopped, control returns to evalqt. 5. control-C In INTERLISP-10, computation is stopped, control returns to TENEX. Program can always be continued without any ill effect with TENEX CONTINUE command. If typed during a garbage collection the action of control-B, control-E, and control-D is postponed until the garbage collection is completed. Typing control-E and control-D causes INTERLISP to clear and save the input buffers. Their contents can usually be recovered via the $BUFS (alt-modeBUFS) command, as described in Section 22. I/O Control Characters 1. rubout clears teletype input buffer. For example, rubout would be used if the user typed ahead while in a garbage collection and then changed his mind. Section 2. A bell is rung when the buffer has been cleared, so that the user will know when he may begin typing again. A3.1 Note: a sudden burst of noise on a telephone line frequently causes INTERLISP to receive a rubout, since the code for rubout is 177Q, i.e. all 1's. This causes INTERLISP to (mistakenly) clear the input buffer and ring a bell. If INTERLISP seems to be typing many spurious bells, it is a good indication that you have a bad connection. 2. control-O clears teletype output buffer, Sections 2 and 14. 3. control-P changes printlevel. Section 14. 1 4. control-A, Q line editing characters, Sections 2 and 14. 5. control-R causes INTERLISP to retype the input line, useful after several control-A's, e.g., user types: _DEFINEQ((LAMDA\A\DBA\Acontrol-R INTERLISP types: DEFINEQ((LAMB 6. control-V on input from the terminal, control-V followed by A, B, ... Z inputs the corresponding control character, otherwise is a nop. The control-V is not passed to the line buffer; the transformation takes place before that. Thus ABC^VD followed by two control-A's erases the control-D and the C. ^V takes precedence over , i.e. ^V inputs a control-C, ^VC inputs a C. Miscellaneous 1. control-T (time) prints total execution time for program, as well as its status, e.g., _RECLAIM() GC: 8 RUNNING AT 15272 USED 0:00:04.4 IN 0:00:39 1933, 10109 FREE WORDS 10109 _ IO WAIT AT 11623 USED 0:00:05.1 IN 0:00:49 2. control-S (storage) change minfs. Section 10. 3. control-U if typed in the middle of an expression that is being typed to evalqt, break1 or the editor, will cause the editor to be called on the expression when it is finished being read. See Section 22. **FOOTNOTES** 1 Control-A, Q, R, and V are not interrupt characters, since their effect does not take place when they are typed, but when they are read. Section 14 describes how these pseudo-interrupt characters can also be disabled and/or redefined. Note that control-A, Q, R, and V have their special effect only on input from the terminal. On input from files, they are treated the same as any other character. A3.2