06/09/72 JONL
1) THERE ARE SOME NEW FUNCTIONS DESCRIBED IN ITEMS 3-7 BELOW, AND A
FEW MINOR INCOMPATIBILITIES DESCRIBED IN 8-14. ITEM 2 IS REPRODUCED
FROM THE LAST NOTE TO EMPHASIZE THE CONTINUING DIFFICULTY WITH THE
COMPILATION OF ERRSET'S:
BECAUSE OF THE NATURE OF ITEM 2 BELOW, SOME FILES COMPILED PRIOR
TO TODAY MAY NOT WORK IN THE CURRENT LISP [LISP 229AS]. 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 246 WILL NOT HAVE COMPILED ERRSET EVALUATIONS CORRECTLY.
3) THE FAKE TV [PSEUDO-VIDISSECTOR] WILL USE AS MANY BLOCKS OF CORE
TO HOLD THE SIMULATED DATA AS THE USER REQUESTS; DEFAULT IS 4.
THE REQUEST IS MADE AS (SSTATUS FTVSIZE N) FOR SUITABLE N, AND
(STATUS FTVSIZE) WILL READ OUT THIS PARAMETER. DEPENDING ON ONE'S
SCAN PATTERN, HE MAY CAUSE FREQUENT, TIME-CONSUMING DISK REFERENCES;
THE HOPE IS TO MINIMIZE THIS BY ALLOWING MANY BLOCKS OF DATA TO
BE IN CORE AT ONCE.
4) ALL USER INTERRUPT SERVICE FUNCTIONS HAVE BEEN ASSIGNED TO THE
VALUE OF A SUTIABLE-SOUNDING ATOM. ONE CAN STILL ACCESS THEM USING
THE STATUS CALLS, BUT THE USE OF LISP VARIABLES ALLOWS MNEMONIC
REFERENCE AS WELL AS LAMBDA-BINDING POSSIBILITIES.
NAME INTERRUPT # DESCRIPTION
^H 1 CONTROL-H TYPED ON CONSOLE
ALARMCLOCK 3 ALARMCLOCK EXPIRED
ERRSET 4 ERROR BEING CAUGHT BY ERRSET
UNDF-FNCTN 5 UNDEFINED FUNCTION OBJECT ENCOUNTERED
UNBND-VRBL 6 UNBOUND VARIABLE
WRNG-TYPE-ARG 7 WRONG OR UNSUITABLE ARG FOR FUNCTION
UNSEEN-GO-TAG 8. GO TO A TAG NOT WITHIN PROG
WRNG-NO-ARGS 9. WRONG NUMBER OF ARGS TO FUNCTION
GC-LOSSAGE 10. NOT ENOUGHT SPACE RECLAIMED
FAIL-ACT 11. SOME REQUESTED ACTION FAILED
*RSET-TRAP 19. AN ERROR CAUSING RETURN TO TOPLEVEL
GC-DAEMON 20. A MONITOR ON THE GARBAGE COLLECTOR
INTERUPTS 5 THROUGH 11. COME PRESET IN THE LISP TO A SYSTEM SUBR
WHICH MERELY BINDS THE ATOM ARGS AS NOTED PREVIOUSLY, AND ENTERS A
BREAK LOOP [WITH IDENTIFICATION THE SAME AS THE NAME OF THE INTERRUPT]
ONE CAN THUS INSPECT THE CAUSE OF HIS LOSSAGE, TAKE CORRECTIVE ACTION,
AND RETURN A LIST CONTAINING SOME NEW FORM [OR PERHAPS THE SAME OLD
ONE, IF IT HAS BEEN CORRECTED] TO TRY INSTEAD.
FAIL-ACT IS A NEW CORRECTABLE ERROR USER INTERRUPT, WHICH IS
INVOKED ONLY A FEW PLACES CURRENTLY. USUALLY THE SERVICE FUNCTION
WILL BE HANDED SOME DESCRIPTIVE LIST AS ARGUMENT. TO PRECEED FROM A
FAIL-ACT ERROR, ONE RETURNS A LIST OF SOME FORM TO BE EVAL'ED IN PLACE
OF THE ONE THAT FAILED IN ACTION.
THE GC-DAEMON FUNCTION, AS NOTED PREVIOUSLY, IS HANDED A LIST
SHOWING THE BEFORE-AND-AFTER AMOUNTS THAT ARE FREE IN THE VARIOUS
STORAGE SPACES. IN THIS WAY, ONE CAN ASCERTAIN WHICH SPACES NEED MORE
ALLOCATION. E.G., TRY (SETQ GC-DAEMON '(LAMBDA (GCL) (PRINT GCL)))
ALSO, THE GCMIN FEATURE, THAT ALLOWS THE USER TO SPECIFY THE LOWER
LIMIT OF FREE STORAGE FOR EACH SPACE, IS NOW THE VALUE OF THE ATOM
GCMIN. THUS ONE WOULD SAY (SETQ GCMIN '(1000 200 10)) TO SAY TO THE
GARBAGE COLLECTOR THAT IT SHOULD CONSIDER IT AN ERROR IF THE AMOUNT OF
SPACE FREE FOR STORING LIST STRUCTURE FALLS BELOW 1000, OR FOR FIXNUMS
FALLS BELOW 200, OR FLONUMS BELOW 10.
5) THE READER'S SYNTAX TABLE IS NOW AN ARRAY, WHOSE SPECIAL ARRAY CELL
IS POINTED TO BY THE VALUE OF THE ATOM READTABLE. THUS ONE CAN
QUICKLY SWITCH BACK AND FORTH BETWEEN SEVERAL SYNTAX OPTIONS BY
MEANS OF LAMBDA BINDNG AND SETQ. AS WITH THE OBARRAY FEATURE, THERE
IS A NEW FUNCTION TO CREATE A COPY OF THE CURRENT READ SYNTAX TABLE
AS AN ORDINARY LISP ARRAY. E.G.,
(MAKREADTABLE 'LISP1/.5) ;(MAKREADTABLE NIL) WOULD
;GENSYM UP AN ARRAY
((LAMBDA (READTABLE) ;WE WANT THE LISP1/.5
(SSTATUS MACRO /; NIL) ;TABLE TO HAVE NONE OF THE
(SSTATUS MACRO /' NIL));MACLISP SYNTAX OPTIONS
(GET 'LISP1/.5 'ARRAY))
6) ERRPRINT, A NEW SUBR OF ONE ARGUMENT, WAS IMPLEMENTED TO AID
IN DEBUGGING. WHEN AN ERROR OCCURS, THE LISP SYSTEM PUSHES SOME ERROR
INFORMATION ON THE PDL AND RUNS THE CORRESPONDING INTERRUPT FUNCTION
IF THERE IS ONE, AND MAY ALSO RUN THE *RSET-TRAP FUNCTION JUST BEFORE
RESTORING BACK TO TOP LEVEL. THESE SERVICE FUNCTIONS ARE OFTEN BREAK
LOOPS, AND ONE MISSES THE ERROR MESSAGES THAT ARE ULTIMATELY
PRINTED OUT. THE ARGUMENT TO ERRPRINT IS EITHER NIL OR A PDL POINTER,
JUST LIKE THE ARGUMENT TO FRAME [SEE PREVIOUS LISP NOTE].
(ERRPRINT NIL) PRINTS OUT THE MOST RECENTLY STACKED-UP ERROR MESSAGE,
AND (ERRPRINT FOO) BEGINS SEARCHING THE PUSH-DOWN STACK FOR AN ERROR
MESSAGE PRIOR TO THE POINT NOTED BY THE PDL POINTER FOO.
AS SOME USERS HAVE ALREADY NOTICED, IF AN ERROR IS CAUGHT BY AN
ERRSET, AND THE USER INTERUPT NUMBER 4 IS NOT ENABLED, THERE IS NO
ACTION BY THE CORRESPONDING ERROR SERVICE FUNCTION, THE IDEA BEING
THE CATCH BY THE ERRSET WAS SUFFICIENT ACTION. SINCE THE
SYSTEM-SUPPLIED SERVICE FUNCTIONS ARE PRIMARILY A CALL TO THE FSUBR
BREAK, AND SINCE THE EVALUATIONS BEGUN AT THE TELETYPE ARE CUSHIONED
BY A SURROUNDING ERRSET, THEN THE ERROR SYSTEM DOES NOT AT FIRST
GLANCE APPEAR TO BE RECURSIVE. IT IS, HOWEVER, AS THE USER MAY VERIFY
BY WRITING HIS OWN INTERRUPT SERVICE FUNCTIONS, OR BY SETQ'ING ERRSET
TO AN APPROPRIATE FUNCTION.
7A) A NEW FUNCTION BLTARRAY, A SUBR TO TWO ARGUMENTS, ASSUMES THAT
BOTH ARE ARRAYS, AND ZAPS AS MUCH AS POSSIBLE OF THE FIRST INTO THE
SECOND USING THE BLT INSTRUCTION OF THE PDP10. BLTARRAY DOES NOT
*REARRAY EITHER ARRAY; THAT IS TO SAY THAT NEITHER ARRAY IS MOVED
AROUND, NOR IS EITHER ARRAY EXTENDED IN SIZE.
7B) A NEW FUNCTION ARRAYDIMS, A SUBR OF ONE ARGUMENT, ASSUMES THAT
ITS ARGUMENT IS AN ARRAY, AND RETURNS A LIST OF THE TYPE AND SIZES OF
EACH DIMENSION OF THE ARRAY. THUS IF AN ARRAY BAZ WERE CREATED BY
(ARRAY BAZ T 2 30), (ARRAYDIMS 'BAZ) WOULD RETURN (T 2 30).
8) ** DELETED **
9) THERE ARE TWO NEW FUNCTIONS LOADARRAYS AND DUMPARRAYS; THE PLANNED
USAGE IS FOR QUICKLY SWAPPING DATA ARRAYS IN AND OUT OF AUXILLIARY
STORAGE. [A DATA ARRAY, AS OPPOSED TO AN S-EXPRESSION ARRAY, IS
ONE THAT WAS MADE WITH THE GC BIT OFF - AS IN (ARRAY FOO NIL 40).
DISGORGE RETURNS SUCH AN ARRAY, AND MUCH USAGE OF LOADARRAYS AND
DUMPARRAYS CENTERS AREOUND THE DISPLAY SLAVE.
DUMPARRAYS TAKES TWO ARGUMENTS, THE FIRST OF WHICH IS A LIST
OF THE NAMES OF THE ARRAYS TO BE DUMPED ONTO AN OUTPUT FILE, AND
THE SECOND OF WHICH IS A FILE SPECIFICATION [WITH DEFAULTING LIKE
UREAD]. LOADARRAYS HAS ONE ARGUMENT, A FILE SPECIFICATION FOR
SOME FILE CREATED BY DUMPARRAYS, WHICH IT PROCEEDS TO SNARF DOWN,
LOADING AS MANY ARRAYS [WITH GENSYM'ED NAMES] AS ARE INDICATED IN
THE INPUT FILE, AND RETURNING A LIST OF 3-LISTS FOR EACH
NEWLY LOADED-IN ARRAY:
A) GENSYM NAME OF NEWLY-CREATED ARRAY
B) ORIGINAL PNAME OF ARRAY WHEN DUMPARRAYED
C) SIZE OF ARRAY [IN TERMS OF NUMBER OF ENTRIES]
EXAMPLE USAGE:
(ARRAY FOO NIL 40) ;FOO CREATED HERE -
(NSTORE (A 37) 105105) ;ASSUME BAR ALREADY EXISTS
(DUMPARRAY '(FOO BAR) '(FOOD DATA DSK VIS))
(SETQ COPIES (LOADARRAYS '())) ;NOTE DEFAULTING AS IN UREAD
;CAUSES SAME FILE TO BE OPENED
(MAPC '(LAMBDA (X) (DISGOBBLE (CAR X))) COPIES)
;LOOK AT COPIES FROM DSK
10.) THE ARGUMENT GIVEN TO THE INTERRUPT FUNCTIONS FOR UNDF-FNCTN,
UNBND-VRBL, WRNG-TYPE-ARG, AND UNSEEN-GO-TAG IS NOW A LIST OF THE
LOSING ITEM, RATHER THAN SIMPLY THE LOSING ITEM. THUS IF FOO WERE THE
UNBOUND VARIABLE, ARGS WOULD BE BOUND TO (FOO)
11.) ARRAY ACCESS ERRORS NOW CAUSE A CORRECTABLE ERROR OF TYPE
"FAIL-ACT", [USER INTERUPT NUMBER 7], WHICH MAY BE PROCEEDED WITH ANY
FORM TO BE EVALUATED IN PLACE OF THE FAULTY REFERENCE. THE INTERRUPT
FUNCTION, INTITIALLY SET TO A BREAK LOOP WITH ARGUMENT "ARGS", IS
HANDED A 2-LIST WHOSE FIRST ELEMENT IS THE ATOM "ARRAYINDEX" AND THE
SECOND IS A LIST OF THE ARRAY NAME AND THE VALUES OF THE INDICES
THAT CAUSED THE ERROR, E.G. (ARRAYINDEX (BAR 3 5)). THE
USER COULD RESTART THE EVALUATION BY RETURNING SAY ((BAR 2 4)), [OR
FOR EXAMPLE, ((RANDOMNESS PHOOEY)) IF SOME OTHER VALUE IS DESIRED].
IF THE ARRAY IS NOT ON THE OBLIST, [SUCH WOULD BE THE CASE WITH A
NON-INTERN'ED GENSYM'ED ARRAY] THE ARGUMENT TO THE INTERRUPT WILL BE
(ARRAYINDEX (? 3 5)), THE ? INDICATING THAT A PNAME FOR THE ARRAY
COULD NOT BE READILY OBTAINED.
12.) ** DELETED **
13.) THE COMPLR WILL NOW OUTPUT ARGS INFORMATION [IN THE FORM
OF PSEUDO-OPS TO LAP] ABOUT EXPRS WHICH IT COMPILES, AND LAP WILL TRY
TO USE THIS INFORMATION TO PLACE ARGS PROPERTIES OF THE FUNCTIONS
ASSEMBLED. THERE IS A COMPILER SWITCH TO CONTROL THE OUTPUTTING OF
THIS INFORMATION - NORMALLY THE SWITCH IS ON - BUT A DECLARATION OF
(NOARGS T) WILL TURN IT OFF SO THAT THE COMPLR WILL NOT OUTPUT THIS
STUFF; OF COURSE (NOARGS NIL) TURNS IT BACK ON AGAIN.
14.) THE DELAYED-READ-MACRO FEATURE HAS BEEN FLUSHED. ALSO, THE CLI
INTERRUPT HAS BEEN FLUSHED.