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.