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>