05/03/72 JONL 1) BECAUSE OF THE NATURE OF ITEM 2 BELOW, SOME FILES COMPILED PRIOR TO TODAY MAY NOT WORK IN THE CURRENT LISP [LISP 229AF]. READ THIS NOTE CAREFULLY. 2) THERE IS A NEW PAIR OF BREAK-AWAY FUNCTIONS: CATCH, A FSUBR WHICH MERELY EVALS THE FIRST ITEM IN ITS ARGLIST, AND THROW, A SUBR OF ONE ARGUMENT WHICH BREAKS AWAY BACK TO THE MOST RECENT CATCH, CAUSING CATCH TO RETURN AS ITS VALUE THE ARGUMENT TO THROW. IF NO THROWS TAKE PLACE, THE CATCH MERELY RETURNS THE EVALUATION WHICH IT COMMENCED. THIS MECHANISM IS INDEPENDENT OF ERRSET, AND SHOULD ALLEVIATE PROBLEMS FOR THOSE WHO HAVE BEEN USING ERRSET AND ERR TO DO THE JOB THAT CATCH AND THROW NOW DO. HOWEVER, MORE STUFF MUST BE SAVED UP WHEN A CATCH OR ERRSET IS EVAL'D AND THUS CODE COMPILED BY COMPILERS PRIOR TO NUMBER 240 WILL NOT HAVE COMPILED ERRSET EVALUATIONS CORRECTLY. 3) MOST SYSTEM SUBRS AND LSUBRS HAVE AN ARGS PROPERTY SUPPLIED BY THE SYSTEM. IN *RSET MODE, THE INTERPRETOR WILL CHECK, INASMUCH AS IS POSSIBLE, TO SEE THAT ANY FUNCTION CALL IS MADE WITH THE CORRECT NUMBER OF ARGUMENTS, AND IF NOT WILL CREATE A CORRECTABLE ERROR ON USER INTERRUPT 9. [CURRENTLY THE SYSTEM SUPPLIES A BREAK LOOP FOR THIS INTERRUPT.] FOR SUBRS THE ARGS PROPERTY IS (NIL . N) WHERE N IS THE REQUIRED NUMBER OF ARGUMENTS, AND FOR LSUBRS THE PROPERTY IS (N . M) WHERE AT LEAST N ARGUMENTS ARE REQUIRED, AND AT MOST M ARE ALLOWED. 4) FOR EFFICIENCY REASONS, THE INTERPRETOR WILL LOOK FOR AN ARGS PROPERTY ONLY ON THE PORTION OF THE PROPERTY LIST FOLLOWING THE FUNCTION PROPTERTY. THUS THE FUNCTION ARGS, A SUBR OF TWO ARGUMENTS, HAS BEEN IMPLEMENTED TO FACILITATE PLACING THE ARGS PROPERTY AT THE END OF THE PROPERTY LIST: THE FIRST ARGUMENT IS THE NAME OF THE FUNCTION IN QUESTION, AND THE SECOND ARGUMENT IS A DOTTED PAIR AS DESCRIBED IN ITEM 3 ABOVE. THIS CHECKING FEATURE HAS BEEN OBSERVED TO REQUIRE AN ADDITIONAL AMOUNT OF RUNNING TIME OF BETWEEN 2% AND 10.% DEPE j ON THE PROGRAM. FOR THIS REASON, IT MAY BE DISENABLED AS DESCRIBED IN ITEM 5 BELOW. 5) *RSET HAS TAKEN OVER THE FUNCTION OF NOCHK - THAT IS, (*RSET T) WILL [AMONGST OTHER EFFECTS] CAUSE ARRAY REFERENCES TO BE CHECKED FOR INDEX WITHIN PROPER RANGE, AND (*RSET NIL) WILL [AMONGST OTHER THINGS] INHIBIT THIS TIME CONSUMING CHECKING. ALSO, *RSET = NIL WILL DISENALBE THE ARGUMENT NUMBER CHECKING, AND *RSET = T WILL ENABLE IT. 6) THERE IS A NEW FUNCTION BAKLIST, A SUBR OF NO ARGUMENTS, WHICH OBTAINS A LIST VERY SIMILAR TO THE STUFF PRINTED OUT BY BAKTRACE. AS USUAL, UNLESS *RSET = T, THE AMOUNT OF INFORMATION CONTAINED THEREIN MAY BE MINIMAL. 7) THERE IS A NEW DEBUGGING AID, A FUNCTION CALLED EVALFRAME, WHICH IS A SUBR OF ONE ARGUMENT. WHEN IN *RSET = T MODE, THE EVALUATOR WILL PUSH ONTO THE PDL THE FORM WHICH IT IS TRYING TO EVAL [ALONG WITH A SPECIAL MARKER INDICATING JUST THAT]. (EVALFRAME NIL) WILL RETRIEVE A 3-LIST (P FORM ALIST), WHERE P, A LISP NUMBER, IS THE PDL POINTER OF THE MOST RECENT MARKING BY EVAL, FORM IS THE ARGUMENT TO EVAL AT THAT POINT, AND ALIST, A LISP NUMBER ALSO, IS A SPECIAL PDL POINTER SUCH AS CAN BE USED AS A SECOND ARGUMENT TO EVAL IN PLACE OF AN A-LIST. (EVALFRAME P) WHERE P IS A PDL POINTER, WILL GET THE FRAME [AS A 3-LIST] OF THE CALL TO EVAL JUST PRIOR THE THE ONE MARKED ON THE PDL AT P. [SEE NOTE OF 8/9/72 SECTION 2 FOR POSSIBLE VARIATIONS ON THE RANGE OF P]. THE MAIN PURPOSE OF THIS FUNCTION IS TO AID IN FINDNG THE CONTEXT IN WHICH AN ERROR HAS OCCURRED; FOR EXAMPLE, SUPPOSE A CORRECTABLE ERROR OCCURS, THE CORRESPONDING BREAK INTERUPT IS ENTERED, AND BY APPROPRIATE CALLS TO FRAME THE USER HAS FOUND A PLACE REVEALING THE ERROR; SUPPOSE FURTHER THAT HE WANTS TO LOOK AT SOME VARIABLES AND SEE WHAT VALUE THEY HAD JUST BEFORE EVAL BEGAN WORK ON THE FORM. THEN THE ALIST OF THAT FRAME IS RELEVANT IN THAT HE MIGHT TRY (EVAL '(BREAK PEEKBACK T) ALIST) 8) ** DELETED ** 9) GENSYM IS NOW AN LSUBR, AND IF GIVEN AN ARGUMENT WILL RESET THE GENSYM COUNTER AS DESCRIBED BELOW: ARGUMENT IS OF TYPE PNAME - RESETS THE LETTER PREFIX ARGUMENT IS OF TYPE FIXNUM - RESETS THE 4 DIGIT NUMBER [BY PRINTING OUT THE ARGUMENT IN BASE 10. AND USING THE LAST FOUR DIGITS.] 10) (DISFRAME N) CAUSES THE DISPLAY SLAVE TO GIVE N ZAPS OF THE DISPLAY TO AN ATTACHED MOTION PICTURE CAMERA. 11) EXPT WILL NOW DO VERY WELL WHEN THE MAGNITUDE OF ITS FIRST ARGUMENT IS EITHER 0 OR 1. IN SHORT, IT VERY QUICKLY UTILIZES THE MATHMEMATICAL FACTS THAT 1^X=1, -1^X=(COND((ODDP X)-1)(1)), AND 0^X=0; FOR CONVENIENCE, IT GIVES 0^0=1. EXPT DOES NOT ALLOW EXPONENTS OTHER THAN NON-NEGATIVE INTEGERS, BUT HAS LONG CAPITALIZED FOR SPEED UPON THE FACT THAT X^0=1