6/2/71 - JONL - THERE IS A NEW NLISP WHICH SHOULD BECOME THE SYSTEM LISP WITHIN A FEW SHORT WEEKS. NOTE WELL: ITEMS 1-4 BELOW DESCRIBE CHANGES THAT ARE AT VARIANCE WITH THE DOCUMENTATION OF THE PREVIOUS NLISP NOTE. 1) *** DELETED *** 2) SIGNP IS NOW A FSUBR. THE FIRST ITEM IN THE ARGLIST IS AN INDICATOR FOR COMPARISON TO ZERO, E.G., (SIGNP LE N) IS NON-NIL IF AND ONLY IF THE VALUE OF N IS A NUMBER LESS THAN OR EQUAL TO ZERO [SIGNP DOES NOT REQUIRE N TO BE OF NUMBER TYPE]. THE INDICATORS FOLLOW THE PDP-10 ARITHMETIC COMPARISON INSTURCTIONS, AND SHOULD BE SELF EXPLANATORY: - L E LE A GE N G 3) INTERRUPTING CONDITIONS WHICH THE USER MAY TRAP AND SERVICE WITH EXPR CODE HAVE BEEN EXPANDED, AND MODIFIED SLIGHTLY. IN ADDITION TO THOSE MENTIONED IN THE LAST NOTE, ON CAN NOW TRAP OUT ON UNDEFINED FUNCTION ERROR, UNBOUND VARIABLE ERROR, WRONG TYPE OF ARGUMENT ERROR, AND MISSING PROG TAG ERROR. IF THE USER'S SERVICE FUNCTION FOR THESE FOUR TRAPS RETURNS A NON-NIL VALUE, IT IS ASSUMED TO BE A LIST OF THE CORRECTED ITEM. THUS ONE MIGHT HAVE A FUNCTION OF THIS NATURE RETURN '(0) WHENEVER NIL SHOWS UP AS AN ARGUMENT TO PLUS [ETC]. ORDINARILY, ONE WOULD HAVE SUCH FUNCTIONS REQUEST SOME CONSOLE INTERACTION WITH THE USER, PERHAPS WITH THE FUNCTION BREAK, BUT ONE ANTICIPATED USE OF THE UNDEFINED FUNCTION TRAP IS TO SEARCH A FILE FOR A DEFINITION FOR THE FUNCTION AND LOAD IT IN IF FOUND. NOTE WELL: THE WAY IN WHICH INTERRUPT FUNCTIONS ARE SPECIFIED HAS CHANGED. DISREGARD THE DESCRIPTION IN THE PREVIOUS NOTE. TO SET A FUNCTION F [WHICH MUST BE A FUNCTION OF ONE ARGUMENT] TO SERVICE INTERRUPT NUMBER N, DO (SSTATUS INTERRUPT N 'F) . THE INTERRUPT CONDITIONS WHICH THE USER MAY TRAP ARE: NUMBER MEANING 1 <CONTROL>-H TYPED ON JOB CONSOLE - CURRENTLY PRESET TO A SIMPLE BREAK BY THE SYSTEM. 2 <CONTROL>-A TYPED ON JOB CONSOLE. NOT ALSO THAT THE VALUE OF THE ATOM ^A IS CHANGED BY THE TYPING OF <CONTROL>-A REGARDLESS OF THE USER'S TRAP. 3 ALARMCLOCK EXPIRATION. 4 AN ERROR HAS OCCURRED WITHIN THE SCOPE ON AN ERRSET, AND THE ERRSET IS ABOUT TO RETURN A NIL. OTHERWISE, AN ERROR OCCURING UNDER AN ERRSET COMPUTATION WILL NOT ACTIVATE THE USER'S TRAP, BUT SIMPLY CAUSE THE ERRSET TO RETURN NIL. 5 UNDEFINED FUNCTION. 6 UNBOUND VARIABLE. 7 ARGUMENT NOT OF CORRECT TYPE. 8 ATTEMPTED GO TO A NON-EXISTANT PROG TAG. THE SERVICE FUNCTIONS FOR INTERRUPTS 1-4 CURRENTLY HAVE NIL GIVEN TO THEM AS ARGUMENT; BUT FOR INTERRUPTS 5-8 THE OFFENDING OBJECT IS PASSED ALONG AS ARGUMENT. SUGGESTIONS FOR FURTHER REFINEMENTS OF THIS SCHEME ARE INVITED FROM THE USING COMMUNITY. 4) THE FUNCTION BAKGAG IS NO LONGER WITH US, AND THERE IS NO MORE AUTOMATIC PRINT OUT OF A BACKTRACE WHEN AN ERROR OCCURS. HOWEVER, THE FUNCTIOPCKTRACE WILL STILL PRINT OUT A BACKTRACING, AND THE FUNCTIION OF *RSET HAS BEEN EXPANDED TO INCLUDE THAT OF THE PREVIOUS BAKGAG: WHENEVER A PROGRAM IS RUNNING IN *RSET MODE [SEE PREVIOUS NLISP NOTE], ADDITIONAL CRUFT IS STORED ON THE SYSTEM PDL SO THAT A (BAKTRACE) WILL BE WONDERFULLY CLEAR. 5) THERE IS A NEW FUNCTION: (EXPT X N) COMPUTES X TO THE NTH POWER, WHERE N IS A FIXED-POINT NUMBER AND X IS ANY NUMBER. IT RUNS FASTLY. 6) SOME IMPORTANT REMINDERS!! THE FOLLOWING ITEMS HAVE BEEN DOCUMENTED ELSEWHERE, BUT BECAUSE OF THE PREVALENCE OF MISUNDERSTANDING ABOUT THEM, THEY ARE REPRODUCED HERE. A) (MAKOBLIST NIL) RETURNS A LIST OF LISTS, LIKE THE OLD STYLE OBLIST. AN OBLIST IS NOT NORMALLY KEPT AROUND IN THE SYSTEM, BUT RATHER AN OBARRAY. (MAKOBLIST 'NEWOB) WILL COPY THE CURRENT OBARRAY AND ATTACH IT AS THE ARRAY PROPERTY OF THE ATOM NEWOB. ONE CAN LAMBDA-BIND AND SETQ THE ATOM OBARRAY IN ORDER TO CHANGE OBARRAYS. B) MAKNAM HAS NONE OF THE IDIOSYNCRATIC SYNTAX FEATURES OF THE FUNCTION READ. IT ALWAYS COMPRESSES A LIST OF CHARACTERS INTO A NEW ATOM WHICH IS NOT INTERNED ON THE OBARRAY. C) EXPLODE AND EXPLODEC ALWAYS BUT ALWAYS PRODUCE SINGLE CHARACERT PNAME-TYPE ATOMS. THUS (EXPLODEC 1.2) WOULD PRINT OUT AS (/1 /. /2) D) IF ONE USES > WITH UREAD, AS IN (UREAD FOO >), THEN (STATUS UREAD) WILL RETURN A LIST OF THE ACTUAL FILE NAMES AND DEVICE WHICH WOULD PRINT OUT AS, SAY, (FOO /12 DSK JONL) BUT A SUBSEQUENT CALL TO UFILE WITH NO ARGUMENTS (UFILE) WOULD CAUSE AN OPEN OUTPUT FILE TO BE FILED AWAY AS FOO 13 E) A MINOR GLITCH CONDITION HAS BEEN CORRECTED FOR SPLICING-TYPE READ MACROS; IF ONE IS ENCOUNTERED AT THE TOP-LEVEL READ [RATHER THAN WHILE READING THE ELEMENTS OF A LIST] THEN ITS VALUE IS IGNORED AND READ TRIES AGAIN. HENCE SUSSMAN'S SEMI-COLON MACRO WILL WORK AS DESIRED.