6/29/72 JONL
1) A POINT TO NOTE WELL: CERTAIN LOSING SITUATIONS WILL FIRST BE
TRAPPED OUT BY SOME OF THE NEW ERROR INTERRUPT FUNCTIONS, AND SOME
USERS HAVE NOT RECOGNIZED THE BREAK-POINT IDENTIFICATIONS AS
MEANINGFUL. AMONG THE MOST COMMON CAUSES OF AMAZEMENT ARE:
BKPT GC-LOSSAGE MESSAGE FROM THE GC-LOSSAGE FUNCTION,
MEANING THAT YOU HAVE EXAUSTED SOME
STORAGE SPACE.
BKPT FAIL-ACT ANY OF A NUMBER OF SYSTEMIC PROBLEMS
HAS ARISEN. SEE POINT 5 BELOW.
AFTER ANY SUCH BREAK-POINT, IT IS USUALLY GOOD STRATEGY TO TYPE
ARGS<SPACE> TO SEE WHAT THE TROUBLE-MAKER IS.
2) CATCH AND THROW ARE BOTH FSUBRS AND HAVE OPTIONAL SECOND
ARGS WHICH ARE CONSIDERED TAGS. (THROW FOO T1) WILL THROW BACK
TO THE MOST RECENT SETTING OF (CATCH (BAR) T1). (THROW FOO) WILL
BE CAUGHT BY THE MOST RECENT CATCH, REGARDLESS OF ANY TAG SETTING,
AND (CATCH (BAR)) WILL CATCH ANY THROW. HOWEVER, (CATCH (BAR) T2)
WILL NEVER CAPTURE A (THROW FOO T1) - IF THERE IS NO CATCH TO
MATCH A GIVEN THROW (EITHER ONE WITH THE SAME TAG NAME, OR ELSE A
TAG-LESS CATCH), THEN AN UNSEEN-GO-TAG CORRECTABLE ERROR IS DONE.
3) A REMINDER THAT THE SECOND ARG, IF SUPPLIED, TO THROW, TO CATCH,
TO ERRSET, AND TO ERR IS NOT EVAL'D, BUT USED DIRECTLY AS A TAG
OR INDICATOR. [A NON-NILL SECOND ARG TO ERR SAYS EVALUATE THE
FIRST ARG ONLY AFTER UNDOING THE ERRSET THAT IS ABOUT TO CATCH
THE ERR. THE ORDINARY CASE IS TO EVALUATE THE FIRST ARG
IMMEDIATELY, THEN UNDO THE ERRSET - THUS ERRORS DURING THE
EVALUATION OF THE FIRST ARG WILL BE CAUGHT BY THE ERRSET THAT
WAS ABOUT TO RECEIVE THE OUTPUT OF ERR. (ERR FOO) IS
EQUIVALENT TO (ERR FOO NIL)].
4) UPON STARTING UP A LISP, THE ATOM TTY IS SET TO A NUMBER
DESCRIBING THE TYPE OF TERMINAL THE JOB IS ATTACHED TO:
0 PRINTING, LIKE TELETYPE, MEMOREX, DATEL, ETC.
1 NEW STYLE DATAPOINT
2 OLD STYLE DATAPOINT
3 IMLAC
THIS LIST MAY BE EXPANDED IN THE FUTURE.
5) NVSET AND NVFIX INTERACT VERY SMOOTHLY WITH THE FAKE TV PACKAGE OF
JERRY LERMAN. A FORTH COMING DOCUMENT BY JERRY WILL DESCRIBE ITS
USAGE COMPLETELY, INCLUDING SSTATUS CALLS IN LISP TO SWITCH FROM
FAKE TO REAL TV.
6) A FEW MORE ERROR CONDITIONS HAVE BEEN ADDED TO THE CORRECTABLE
CATEGORY, UNDER THE FAIL-ACT BRAND. [THE FAIL-ACT FUNCTION IS
HANDED A LIST THAT IS GENERALLY VERY DESCRIPTIVE OF SOME REQUESTED
ACTION THAT CANNOT BE DONE]. A COMPLETE LIST FOLLOWS:
A) AN ARRAY ACCESS ERROR HAS BEEN DETECTED, INDEX IS TOO
LARGE OR TOO SMALL
B) A REQUEST IS MADE OF NVFIX FOR A POINT OUTSIDE THE SCREEN
AREA [OR IN ADDITION, FOR THE FAKETV, A POINT NOT STORED].
C) *REARRAY IS DONE ON SOMETHING THAT ISN'T CURRENTLY AN ARRAY
D) (UREAD FN1 FN2), (UKILL FN1 FN2), OR (SSTATUS FTV FN1 FN2)
IS DONE ON A NON-EXISTENT FILE.
E) REMPROP IS TRYING TO REMOVE A VALUE CELL FROM AN IMPORTANT
SYSTEM ATOM.
F) GO OR RETURN IS CALLED, BUT THERE IS NO PROG IN USE.
G) ARG OR SETARG IS CALLED, BUT THERE IS NO LEXPR IN USE.
IN EACH CASE ABOVE, THE FAIL-ACT INTERRUPT FUNCTION MAY RETURN A
LIST CONTAINING ONE FORM TO BE EVAL'D IN PLACE OF THE LOSING
ACTION; THE INITIAL SETTING OF FAIL-ACT IS MERELY A BREAK LOOP,
SO THAT ONE CAN RETURN FROM IT BY TYPING (RETURN RETVAL).
THE FAIL-ACT ERRORS LISTED BELOW HAPPEN ONLY TO INFORM THE USER
THAT SOME REQUESTED ACTION DIDN'T ACTUALLY HAPPEN, OR TO TELL HIM
THAT SOME SYSTEM PARAMETER HAD TO BE RESTORED TO AN INITIAL VALUE.
AGAIN, IF THE INTERRUPT FUNCTION RETURNS NIL, AN ORDINARY LISP
ERROR WILL BE INITIATED, BUT IF SOME NON-NULL LIST IS RETURNED,
THEN THE SYSTEM WILL TRY TO RECUPERATE AS BEST AS IS POSSIBLE.
H) BAD GCMIN LIST - WAS RESTORED TO INITIAL VALUE
I) BAD IBASE - WAS RESTORED TO EIGHT.
J) ATTEMPT TO SETQ NIL - VALUE OF NIL REMAINS UNCHANGED
K) ATTEMPT TO WRITE ON A UWRITE OUTPUT CHANNEL, BUT NO UWRITE
HAS BEEN DONE. ^R HAS BEEN SHUT OFF, AND WILL BE TURNED
ON AGAIN UPON EXIT IF THE INTERRUPT FUNCTION DOES A UWRITE.
L) ATTEMPT TO READ FROM A UREAD FILE, BUT NONE HAS BEEN
SELECTED [ARGS IS BOUND TO (UREAD)]. ^Q IS RESET TO NIL,
AND WILL BE TURNED ON AGAIN UPON EXIT IF THE INTERRUPT
FUNCTION DOES A UREAD.
THERE MAY BE, IN THE FUTURE, ADDITIONS TO THIS LIST.
7) CERTAIN SUB-PACKAGES OF THE LISP SYSTEM ARE NOW GROUPED TOGETHER ON
A SINGLE PAGE [EVEN THOUGH THIS MEANS WASTING A FEW CELLS THAT ARE
UNUSED] SO THAT THE USER WHO DOESN'T USE THAT SUB-PACKAGE WONT
NEED ANY PART OF IT IN CORE. THESE ARE ARE ALL PURE PAGES, AND
SOME OF THE IDENTIFIABLE SUB-PACKAGES ARE:
ERROR PROCESSING
UNIQUE I/O DEVICE CODE [LIKE VIDISSECTOR, 340 SLAVE, ETC.]
EVAL-APPLY AND CERTAIN OPEN-CODED FUNCTIONS
[COMPILED CODE WONT BE USING THIS PAGE MUCH]
INFINITE-PRECISION ARITHMETIC ROUTINES
READ, AND ASSOCIATED FUNCTIONS [LIKE TYI, READLIST]
GARBAGE COLLECTOR, AND LISP INITIALIZATION
STATUS ,SSTATUS AND EDIT
ARRAY-DEPENDENT FUNCTIONS [LIKE ARRAY, MAKREADTABLE, ETC.]
GETSP, SUBLIS, AND FUNARG STUFF
CERTAIN CONSTANT INITIAL LIST STRUCTURE [3 PAGES]
BINARY PROGRAM SPACE [NOT INITIALLY PURE]
IN ADDITION, THERE IS A PAGE OF WELL-KNOWN AND OFTEN-USED SUBRS;
AND A PAGE CONTAINING THE PRINT-RELATED OUTPUT FUNCTIONS ALONG
WITH SOME LESSER-KNOWN SUBRS; AND A PAGE CONTAINING THE TOP-LEVEL
CODE, THE INTERRUPT HANDLER AND UUO HANDLER CODE, AND SOME COMMON
SYSTEM SUBROUTINES.