MTS 8: LISP and SLIP in MTS
June 1976
IOARG identifies the current buffer for the tab operation. If
IOARG is not given, or is NIL, the system output buffer is used.
The file portion of IOARG is ignored.
FILL, if given, must be an atom or a buffer pointer (IOARG). The
PNAME of FILL will be used as a filler for any positions skipped
during a tab operation to the right.
(SKIP N IOARG FILL)
SKIP causes a skip operation to be performed N spaces to the right.
If N is negative, the skip will be to the left. An attempt to SKIP
outside the buffer will generate an error.
IOARG identifies the current buffer for the skip operation. If
IOARG is not given, or is NIL, then the system output buffer is
used. The file portion of IOARG is ignored.
FILL, if given, must be an atom or an buffer pointer (IOARG). The
PNAME of FILL will be used as a filler for any positions skipped
during a skip operation to the right.
Note: TAB and SKIP affect the value of the buffer length for
output only. These routines cannot be used for the purpose of
skipping around in a buffer to READ various positions.
ERROR RECOVERY AND DEBUGGING PROCEDURES _______________________________________
Error Atoms, Error Forms, and Error Expressions _______________________________________________
There are a number of different errors that are recognized by the
LISP system. When an error of type N occurs, the error message for that
type becomes the "current" error message. The expression which generat-
ed the error (e.g., the illegal argument) becomes the "current" error
expression, and the error form associated with that type is evaluated.
After the error form is evaluated, LISP is restarted at the top level.
The error form for an error number is accessed through an atom,
called the error atom. A call to the STATUS function will associate an
error number with a given atom. After this, whenever that error type
occurs, the VALUE of that atom will be used as the error form.
At present, there are three predefined error atoms within the LISP
system. The atom *ATTN* is the error atom for error number 1, which
occurs whenever an attention interrupt is generated. The atom *PGNT* is
the error atom for error number 0, which occurs whenever a nonnumeric
program interrupt occurs. The atom *ERR* is the error atom for all
other errors.
56 LISP

MTS 8: LISP and SLIP in MTS
June 1976 Page Revised January 1983
*ATTN*, *PGNT*, and *ERR* are initially set to the form (DUMP 7).
See the description of the dump program later in this subsection.
Note: When certain errors occur from which the system cannot
recover, the message "ABORT N" is printed and the MTS subroutine ERROR
is called. The abort codes which may be printed have the following
significance:
1 - bad parameter on $RUN command (batch only)
2 - registers demolished
3 - stack expand failure
4 - freespace expand failure
5 - input line longer than 255 characters
6 - end-of-file from *MSOURCE* (batch only)
7 - BREAK called (batch only)
| 8 - program interrupt when a lock is set
| 9 - garbage collection disabled (see STATUS - code 49)
System Error IOARGs ___________________
It has been stated that there are initially two buffers maintained by
the LISP system, the system input and output buffers. The two IOARGs
LISPIN and LISPOUT initially point to these buffers (in their paired
form with the system I/O files). There are also two system error
buffers maintained by the LISP system; the two IOARGs ERRIN and ERROUT
initially point to these buffers (in their paired form with the system
error I/O files).
The system default error input file is GUSER, and the default error
output file is SERCOM.
Whenever a BREAK loop is entered, the system error IOARGs are used
instead of the normal IOARGs for the READ-EVAL-PRINT loop and for all
user-generated I/O operations which do not specify their own IOARGs.
(BREAK S) ___________
Calling BREAK causes the system to enter a break loop. A break loop
is a READ-EVAL-PRINT loop identical to the top-level loop of LISP,
except that the ERRIN and ERROUT buffers and files are used for reading
and printing, respectively. After exiting from the break loop, execu-
tion continues normally.
S is an optional argument which, if given, will be evaluated before
the break loop is entered.
LISP 57
Previous Page Next Page