{Begin Chapter Interlisp-10 Specifics}
{Title Interlisp-10 Specifics}
{Text

This chapter describes a number of features of Interlisp-10 that are machine or implementation-dependent, and are not expected to be implemented in newer implementations of Interlisp.



{Begin SubSec Interlisp-10 Interrupt Characters}
{Title Interlisp-10 Interrupt Characters}
{Text

{Tag InterruptChars10}

{index interrupt characters}

The table below gives the interrupt characters currently enabled in Interlisp-10.

Note:  It is possible to change the assignments of control characters to interrupts with {fn INTERRUPTCHAR} ({PageRef Fn INTERRUPTCHAR}).


{Begin LabeledList interrupt characters in Interlisp-10}

{Indent 15percent}

{Name control-B{index control-B (Interlisp-10) Term}}
{Text Generates an immediate error, and causes a break, regardless of the depth or time of the computation.  Thus if the function {lisp FOO} is looping internally, typing control-B will cause the computation to be stopped, the stack unwound to the point at which {lisp FOO} was called, and then cause a break.

This is a stronger interruption than control-H.  Note that the internal variables of {lisp FOO} above are not available in this break, and similarly, {lisp FOO} may have already produced some changes in the environment before the control-B was typed.  It may not be possible to simply continue the computation, depending on the nature of the function interrupted and when it was interrupted.  Therefore whenever possible, it is better to use control-H instead of control-B.}

{Name control-C{index control-C (Interlisp-10) Term}}
{Text Computation is stopped, and control returns to the operating system (Tenex, etc.)  The program can be continued with the {lisp CONTINUE} command.}

{Name control-D{index control-D (Interlisp-10) Term}}
{Text Aborts the computation, and unwinds the stack to the top level.  Calls {fn RESET} ({PageRef Fn RESET}).}

{Name control-E{index control-E (Interlisp-10) Term}}
{Text Aborts the computation, and unwinds the stack to the last {fn ERRORSET}.  Calls {fn ERROR!} ({PageRef Fn ERROR!}).}

{Name control-H{index control-H (Interlisp-10) Term}}
{Text At the next point a function is about to be entered, the function {index *PRIMARY* INTERRUPT FN}{fn INTERRUPT} is called instead.  {fn INTERRUPT} types {lisp INTERRUPTED BEFORE {arg FN}},{index INTERRUPTED BEFORE (Printed by System)} constructs an appropriate break expression, and then calls {index BREAK1 FN}{fn BREAK1}.  The user can then examine the state of the computation, and continue by typing {breakcom OK}, {breakcom GO} or {breakcom EVAL}, and/or {fn RETFROM} back to some previous point, exactly as with a user break.  Control-H breaks are thus always "safe".

Control-H breaks {it only} occur when a function is called, since it is only at this time that the system is in a "clean" enough state to allow the user to interact.  Thus, if a compiled program is looping without calling any functions (or if Interlisp-10 is in a I/O wait), control-H will not affect it.  Control-B, however, will.

As soon as control-H is typed, Interlisp clears and saves the input buffer,{index input buffer} and then rings the {index bell (Printed by System)}bell, indicating that it is now safe to type ahead to the upcoming break.  If the break returns a value, i.e., is not aborted via {breakcom ↑} or control-D, the contents of the input buffer before the control-H was typed will be restored.

Note:  Control-H will {it not} interrupt at linked function calls (see {PageRef Tag LinkedFunctionCalls}).
}

{Name control-O{index control-O (Interlisp-10) Term}}
{Text Clears the teletype output buffer.}

{Name control-P{index control-P (Interlisp-10) Term}}
{Text Changes the {fn PRINTLEVEL} setting (see {PageRef Fn PRINTLEVEL}).}

{Name control-S{index control-S (Interlisp-10) Term}}
{Text Changes the {fn MINFS} setting (see {PageRef Fn MINFS}).}

{Name control-T{index control-T (Interlisp-10) Term}}
{Text Prints total execution time for the program, as well as other status information.}

{End LabeledList interrupt characters in Interlisp-10}


}{End SubSec Interlisp-10 Interrupt Characters}




{Include TypeNumberFns}

{Include ValidFnDefs}

{Include Boxing}

{Include OpSysFns}

{Include GC10}

{Include Assembler}

{Include InterForkCom}

{Include Swapper}


}{End Chapter Interlisp-10 Specifics}