8/11/71 - JONL - FOR SOME TIME THERE HAS BEEN A WINNING, BUT AS YET UNADVERTISED, FEATURE IN THE TRACE PACKAGE. ONE MAY SPECIFY A TRACE OF THE FUNCTION FOO ONLY FOR THOSE CALLS TO FOO WHICH ARE DIRECTLY CALLED FROM THE FUNCTION BAR BY SAYING: (TRACE (FOO WHEREIN BAR . . .)) THE . . . TAKES THE PLACE OF THE REMAINDER OF THE TRACING SPECIFICATION, E.G. (TRACE (FOO WHEREIN BAR COND (NULL X) BOTH)) SUCH A TRACE IS REMOVED BY SAYING (UNTRACE (FOO WHEREIN BAR)) OR BY THE GENERAL UNTRACING OF SAYING (UNTRACE). SETQ NOW TAKES MULTIPLE PAIRS OF ARGUMENTS, AS IN (SETQ A 1 B 25 C A) THE ORDER OF EVALUATION IS SEQUENTIAL AS IF SEVERAL SETQ STATEMENTS HAD BEEN WRITTEN, SO THAT IN THE ABOVE EXAMPLE C WOULD ALSO BE GIVEN THE VALUE 1. INTERRUPT NUMBER 9 IN THE USER'S INTERUPT TABLE IS THE FUNCTION CALLED WHEN AN ERROR CAUSES RESTORE TO TOP LEVEL [AND *RSET = T] CURRENTLY IT IS (LAMBDA (*RSET) (IOG NIL (BREAK *RSET T))) THUS THE USER CAN CHANGE THIS FUNCTION AT WILL, AS WELL AS THE ^H BREAK INTERRUPT FUNCTION [INTERRUPT NUMBER 1]. THREE MORE STATUS GOODIES ARE AVAILABLE: (STATUS GCTIM) RETURNS THE TOTAL AMOUNT OF TIME (IN MICROSECONDS) SPEND IN GARBAGE COLLECTION. (SSTATUS GCTIM V) WILL RESET THIS COUNTER TO THE VALUE OF V. (STATUS TTY) IS THE SAME AS THE VALUE OF THE TOP LEVEL VARIABLE TTY - NAMELY NIL IF THE CURRENTLY ATTACHED CONSOLE IS A PRINTING TELETYPE, AND NON-NIL IF A DISPLAY-TYPE TERMINAL. (SSTATUS TTY N1 N2) HOWEVER, SETS THE TELETYPE WAKE-UP AND CONTROL CHARACTERISTICS FOR CHARACTERS TYPED ON THE JOB CONSOLE. SEE JONL OR A SYSTEM HACKER FOR MORE INFORMATION AS TO WHAT THIS MEANS. THERE IS A SIMULATED VIDISSECTOR AVAILABLE, WHOSE FEATURES HAVE YET TO BE SOLIDIFIED, BUT WHICH WILL BE SELECTED BY SOME SORT OF SSTATUS CALL SUCH AS (SSTATUS FTV T). JUST A REMINDER OF A FEW LITTLE UNDERSTOOD POINTS OF THE CURRENT LISP: (BREAK IDENTIFIER PREDICATE) AND (BREAK IDENTIFIER PREDICATE RETURNVALUE) BOTH WILL "BREAK" IF PREDICATE EVALUATES TO NON-NIL [OFTEN ONE SIMPLY MAKES PREDICATE = T]. A "BREAK" CAUSES IDENTIFIER TO BE PRINTED OUT, TELETYPE INPUT AND OUTPUT TO BE SELECTED, AND AN ERRSET-PROTECTED READ-EVAL-PRINT LOOP TO BE ENTERED. THE NORMAL EXIT IS OBTAINED BY TYPING THE ATOM P [NEEDS THREE STROKES OF THE KEYBOARD - <ALTMODE><P><SPACE>]. TYPING ^G WILL RESTORE TO THE TOP LEVEL OF LISP, BUT BECAUSE OF THE ERRSET PROTECTION, A ^X WILL SIMPLY RESTART THE BREAKLOOP OVER AGAIN. THE VALUE OF A BREAK IS EITHER THE VALUE OF RETURNVALUE AS IN THE SECOND EXAMPLE ABOVE, OR ELSE NIL. IF ONE TYPES ^G ANYTIME DURING THE ALLOCATION PHASE, THEN IT WILL BE RESTARTED; IF HE TYPES <ALTMODE>, THEN IT WILL BE FORCED TO FINISH WITH THE REMAINING OPTIONS TAKEN FROM THE DEFAULT CASES. NUMBERS TYPED DURING THE ALLOCATION PHASE ARE TAKEN BASE EIGHT UNLESS SUFFIXED BY A DECIMAL POINT, IN WHICH CASE THEY ARE BASE TEN. IF ONE RESPONDS BY TYPING ^Q OR ^W AT THE REQUEST "ALLOC?", THEN HIS USER DISK FILE DIRECTORY IS SEARCHED FOR A FILE NAMED .LISP. (INIT) IF ONE EXISTS, IT IS OPENED AND THE ALLOCATION REQUESTS ARE TAKEN FROM THE FIRST S-EXPRESSION ON THE FILE, WHICH MUST BE OF THE FOLLOWIN FORMAT: (COMMENT CORE 34 FXS 1000 FLS 100 REGPDL 1400 SPECPDL 1000 FXPDL 400 FLPDL 10 BPS 600) NOT ALL OF THE QUANTITIES NEED BE TYPED, THE MISSING ONES BEING FILLED IN WITH THE DEFAULT VALUES. AFTER ALLOCATION, THIS FILE STILL REMAINS OPEN FOR READING AND BECOMES THE SOURCE OF INPUT FOR THE TOP LEVEL READ-EVAL-PRINT LOOP. THERE IS FINALLY A SUPER WINNING LISP COMPILER AVAILABLE AS SYS:TS COMPLR [OBTAINABLE BY TYPING COMPLR<CONTROL-K> OR :COMPLR<CR> AT DDT] ITS VERSION NUMBER IS 200, AND WITH A FEW MINOR EXCEPTIONS IS USED JUST LIKE THE PREVIOUS COMPLR [WHICH WAS UNFORTUNATELY LOST IN A DISK CRASH MANY MOONS AGO.] LAP CODE COMPILED BY THE PREVIOUS COMPLR'S WILL PROBABLY NOT WORK CORRECTLY IN LISP 226, AND THE OUTPUT OF THE CURRENT TS COMPLR WILL NOT WORK CORRECTLY IN OLDER LISPS. THE EXCEPTIONS TO BE NOTED FOR USING COMPLR 200 ARE: 1) IF THE FUNCTION MAKLAP IS GIVEN ARGUMENTS, IT OPERATES JUST LIKE THE FUNCTION COMFILE OF LISCOM [SEE LISCOM NOTE]. OTHERWISE (MAKLAP) ENTERS A MODE AS DESCRIBED IN THE LISP ARCHIV DOCUMENTATION, TAKING A COMMAND STRING FROM THE TTY JUST AS MIDAS DOES. 2) THE FOLLOWING FUNCTIONS ARE AVAILABLE TO MAKE DECLARATIONS TO THE COMPILER: SPECIAL UNSPECIAL *EXPR *LEXPR *FEXPR GENPREFIX MACROS SYMBOLS A TYPICAL DECLARATION MIGHT LOOK LIKE (DECLARE (GENPREFIX PLNR) (SYMBOLS T) (MACROS T) (SPECIAL LDLST) (UNSPECIAL X) (PRINT '(QUOTE (STUFF TO GO INTO LAP FILE))) (READ) (COMMENT SWIPES THE NEXT S-EXPRESSION SO THE COMPILER CANT GET IT)) REMINDER: WHEN A FILE IS BEING COMPILED, NOTHING ON THE FILE IS EVAL'D EXCEPT THE ITEMS IN A DECLARE LIST. FUNCTION DEFINITIONS ARE COMPILED INTO LAP CODE, AND ALL OTHER S-EXPRESSIONS ARE MERELY READ IN AND PRINTED OUT ON THE OUTPUT FILE. SYS:TS INDEX IS NOW A COMPILED VERSION OF THE PHAMOUS WINSTON INDEXER [HOPEFULLY REPLETE WITH A COMPILED GRINDEFER TOO] ALSO OBTAINABLE BY TYPING AT DDT INDEX<CONTROL-K> OR :INDEX<CR>