MTS 8: LISP and SLIP in MTS
Page Revised February 1979 June 1976
(3) A call to CHECKPOINT with a specific structure S will not do an
automatic restore operation after the checkpoint is completed,
but rather will always terminate execution. This is necessary
because there may be references to the checkpointed structure
which no longer exists.
(4) Two attention interrupts occurring during a checkpoint or
restore will cause an immediate return to MTS. A restart from
MTS will return to CHECKPOINT or RESTORE and continue execution.
(5) The user of CHECKPOINT and RESTORE should be aware that if the
LISP I/O units have been modified before a checkpoint was
performed, then the same modifications will be in effect
immediately after a restore is performed.
Automatic Restoration of LISP Functions _______________________________________
Since the VALUE of an atom which has no function indicator on its
PLIST will be EVALed when the atom is used as a function specification,
setting the VALUE of an atom to a RESTORE form can have the effect of
making that atom a "load-on-call" function.
For example, if the atom FN is set to the form (RESTORE FN), and FN
is a proper checkpoint file (but not a total system checkpoint file),
then the structures in FN will be automatically restored the first time
FN is called. The newly restored function property of the atom FN will
be found and used, making the restore process transparent to the user.
The following functions have values initially set to RESTORE forms
which will cause large packages of functions and structures to be loaded
from the public file *LISPLIB:
COMPILE SET2
EDIT SETA2
DEBUG GRAFT2
NEWWORLD DELETE2
GETWORLD PUT2
REALWORLD REM2
RPLACA2 ADDPROP2
RPLACD2 UNCONS2
SETQ2
Creating a LISP Library _______________________
A special feature of LISP allows the user to create a library of
checkpointed structures in a single MTS file. The operations to
accomplish this take the following form:
78 LISP

MTS 8: LISP and SLIP in MTS
June 1976 Page Revised February 1979
(CHECKPOINT (FILENAME . ENTRYNAME) S)
(RESTORE (FILENAME . ENTRYNAME))
Whenever a simple (CHECKPOINT FILE) or (RESTORE FILE) is executed,
| ENTRYNAME is given a default value of LISPSTD. Thus, (RESTORE A) =
| (RESTORE (A . LISPSTD)).
Note: An attempt to recheckpoint an ENTRYNAME into a file where that
ENTRYNAME was already checkpointed will cause the original version of
| ENTRYNAME to be replaced; however, if the file is a sequential file, any
other checkpoint entries which occur after ENTRYNAME in the file will be
| destroyed. The use of line files is recommended.
Direct Memory Modification: (STATUS (0 N A)) _____________________________________________
This special status code permits the user to alter up to seven
consecutive bytes of memory to any value. Obviously, this is done at
the user’s own risk.
N must be an atom whose VALUE is a numeric atom representing the
first address which will be modified. A is an I/O destination atom
whose associated buffer contains the data to be inserted in memory,
starting at address N. The first character in the buffer must be the
character X. This must be followed by an even number of hexadecimal
digits, up to a maximum of 14, representing half the number of bytes to
be modified. Alternately, A may be a literal atom whose PNAME has the
same form as the buffer contents described above.
Example:
(SETQ MODA (ADDRESS ’ZAP))
(STATUS (0 MODA TBUF))
If the buffer TBUF contains the characters "X00000000", then the VALUE
of the atom ZAP will be set to 0. An attempt to evaluate (CAR ZAP) will
generate a program interrupt.
(LTR S SW) __________
The LTR function may occasionally be useful for altering the normal
process of evaluating lists, e.g., argument lists. Its effects may be
confusing, and its use is recommended only for advanced users. It may
be invoked any time the LISP system is doing an iterated EVAL through a
list of S-expressions, in particular, during a LAMBDA, PROG, or the
"S1...SN" portion of a COND. It may also be invoked during evaluation
| of a sequence of arguments to be passed to a function. Its purpose is
to allow conditional evaluation of arguments.
LISP 79
Previous Page Next Page