5/15/71   -JONL-

LEAVE MAIL FOR JONL REGARDING BUGS.
BE SURE TO USE NEW LAP WITH NLISP!

	THE CASUAL USER MAY RE-ADJUST TO NLISP [LISPS WITH VERSION
NUMBER > 189] BY NOTING THE FOLLOWING QUICKIES:

1) THERE IS NO LONGER AN OBLIST, BUT RATHER AN INITIAL ARRAY
CALLED OBARRAY.  (MAKOBLIST NIL) PRODUCES AN OBLIST, AND
(MAKOBLIST 'NEW) MAKES AN ARRAY OUT OF NEW AND COPIES
THE CURRENT OBLIST INTO IT.

2) THE SUBR IOG HAS BEEN CONVERTED INTO AN  FSUBR WHICH WORKES SIMILAR
TO THE FOLLOWING:
(DEFUN IOG FEXPR (L)
    ((LAMBDA (^W ^Q ^R ^B ^N) 
	(COND ((CAR L) (APPLY 'IOC L)))
	(EVAL (CADR L)))
      NIL NIL NIL NIL NIL))

3) IN CASE YOU HADN'T NOTICED, DO, LIKE PROG, RETURNS NIL AS
ITS DEFAULT VALUE.  PAGE 19 OF AI MEMO 190 [AN INTERIM LISP
USERS GUIDE] SHOWS THAT THE DEFAULT RETURN VALUE IS THE
VALUE OF THE INDEX UPON COMPLETION OF THE DO LOOP.  ALSO,
(STATUS MACRO C), IF NON-NIL, IS A 3-LIST CONTAINING IN ORDER
THE ASSOCIATED FUNCTION, S OR NIL FOR SPLICING OR NOT, D OR
NIL FOR DELAYED ACTION  OR NOT [SEE AI MEMO 190, PAGE C2].

#### THE FOLLOWING HAS BEEN SUPERSEDED BY ENTRY OF 3/22/73

4) THE ATOM * HAS AS TOP LEVEL VALUE THE VALUE OF THE LAST THING 
COMPUTED IN THE TOP LEVEL LOOOOP.  INITIALLY, BEFORE 
EVER ENTERING THE TOP  LEVEL IT HAS VALUE '*, THUS WHEN RESTARTING
BY G ONE WILL SEE A RANDOM * PRINTED OUT.  THE PRESET PORTION
OF THE TOP-LEVEL ROUTINE IS DEFINABLE AS FOLLOWS:
(ERRSET	(PROG NIL
	    (SETQ ^Q NIL ^R NIL ^W NIL ^N NIL ^B NIL)
	    (MAPC 'EVAL ERRLIST)
	  A (PRINT *)
	    (SETQ * (EVAL "TLF"))
	    (GO A))
	T)
"TLF" IS THE PORTION THAT THE  USER MAY CHANGE VIA SSTATUS,
AND IS ORDINARILY DEFINABLE AS: 
	(SSTATUS TOPLEVEL  '(EVAL (READ)))
BY WAY OF EXAMPLE, ONE COULD DEFINE EVALQUOTE THUSLY:
	(SSTATUS TOPLEVEL '(APPLY (READ) (READ))

###THE PRECEEDING HAS BEEN SUPERSEDED BY ENTRY OF 3/22/73


5) CERTAIN REAL-TIME INTERRUPTS MAY BE SERVICED
BY THE LISP USER WITH EXPR CODE.  MORE WILL BE SAID ABOUT THIS BELOW,
BUT FOR THE MOMENT, THE FOLLOWING GOODIE IS AVAILABLE AS A PRE-SET
INTERRUPT SERVICE: WHEN ^H IS TYPED ON THE JOB COOONSOLE, THE STATE
OF THE WORLD IS SAVED, (BREAK ^H T) IS EVAL'D, AND UPON EXIT FROM
THE BREAK THE STATE OF THE WORLD IS RESTORED.  THIS IS USEFUL IN
FIGURING OUT WHY A LONG COMPUTATION IS TAKING SO LOOOOONG, SINCE ONE
MAY INSPECT VALUES OF PROGRAM VARIABLES, CALL FOR A BAKTRACE, ETC.

6) *RSET NOW HAS A NEW FUNCTION IN LIFE!  IF NON-NIL, THEN  WHEN 
AN ERROR OCCURS, THE FORM (BREAK *RSET T) IS EVAL'D.  CURRENTLY, 
PROCEEDING FROM THE BREAK CAUSES THE POP BACK TO TOP LEVEL AS BEFORE,
BUT IN THE NEAR FUTURE, MANY ERRORS WILL REQUEST CORRECTIONS AND
PROCEED ACCORDINGLY.  SIMILARLY, MANY CONDITIONS NOW DEEMED
TO BE ERRORS WILL MERELY BE NOTES TO THE USER.

7) 	RE*ARRAY HAS BEEN FLUSHED - INSTEAD USE *REARRAY.
	*REARRAY IS THE SUBR VERSION OF WHAT  USED TO BE RE*ARRAY.
	*ARRAY IN THE LSUBR VERSION OR ARRAY.
	BAKTRACE HAS NO ARGUMENTS, AND CAUSES A BACKTRACEING 
		TO BE PRINTED OUT. USEFUL WHEN IN A BREAK LOOP.
		TO SEE ANYTHING USEFUL, HOWEVER, ONE SHOULD REMEMBER
		TO SET THE BAKGAG SWITCH TO NON-NIL BEFOREHAND.
		[THE SYSTEM SAVES EXTRA STUFF WHEN IN BAKGAG MODE]
	NREVERSE IS A NO-CONSING VERSION OF REVERSE - IT RPLACD'S
		EACH CELL IN THE LIST IN ORDER TO TURN IT AROUND.
	ROT IS LIKE LSH, (ROT N M) DOES M CYCLES OF A 36-BIT 
		LEFT-MOVING ROTATION ON THE NUMBER N.
	ASCII CREATES A SINGLE-CHARACTER ATOM WHOSE PNAME IS THE 
		CHAR WITH ASCII VALUE OF THE ARGUMENT. FOR EXAMPLE,
		(ASCII 70.)  IS THE ATOM F.
	RECLAIM GARBAGE-COLLECTS ITS FIRST ARGUMENT [EXCEPT FOR THE 
		PNAME-TYPE ATOMS IN IT].  IF ITS SECOND ARGUMENT IS
		NIL, IT RE-COLLECTS ONLY LIST CELLS [AND NOT FIXNUM 
		OR FLONUM CELLS].
********* SECOND ARG TO RECLAIM DIFFERENT - 10/15/73 ********
	(STATUS GCTIM) RETURNS THE TIME SPENT IN GARBAGE COLLECTION 
		IN MICROSECONDS AS A FIXED POINT NUMBER.
	(STATUS MACRO . . .) NOW RETURN A LIST OF ONE OR TWO
		THINGS - THE FIRST IS THE ASSOCIATED FUNCTION OF THE
		MACRO CHARACTER, AND OPTIONALLY THERE WILL BE
		THE ATOMIC SYMBOL SPLICING TO DENOTE A SPLICING MACRO.
  	(PURIFY LO HI T) PURIFYS THE PAGES FROM THAT ONE CONTAINING 
		THE ADDRESS LO UP TO [INCLUDING] THAT ONE CONTAINING 
		HI. SOMEDAY, A NIL 3RD ARG WILL SULLY THE PAGES [IE,
		DE-PURIFY THEM].

8) THE BINFORD EDITOR HAS BEEN IN LISP FOR SOME TIME, BUT WAS 
UNDOCUMENTED [EXCEPT BY WORD OF MOUTH.] FOR THOSE WHO HAVE ALREADY 
USED IT, NOTE THAT IT HAS BEEN CHANGED EVER SO SLIGHTLY IN LISP 190]
EVAL'ING (EDIT) ENTERS EDIT MODE, WHEREIN COMMANDS ARE GIVEN SIMILAR 
TO TECO COMMANDS, ACTION IS TAKEN ON SOME EXPRESSION CURRENTLY IN THE
WORKING SPACE,  AND A WINDOW AROUND THE POINTER IS PRINTED OUT AFTER
EVERY COMMAND EXECUTION.  (EDIT T) ENTERS EDIT MODE BUT DOES NOT 
TYPE OUT THE WINDOW AFTER EVERY COMMAND. [THE P COMMAND WILL CAUSE
PRINTING OF THE WINDOW - USEFUL WHEN AT A TELETYPE]. COMMANDS ARE:
	Q<SPACE> EXIT FROM THE EDITOR BACK TO LISP.
	Y<SPACE>ATOM<SAPCE> CAUSES THE FUNCTION PROPERTY OF ATOM TO 
		BE BROUGHT IN  FOR EDITING.
	YP<SPACE>ATOM<SPACE>PROP<SPACE> YANK IN THE PROP PROPERTY OF 
		THE ATOM ATOM.
	YP<SPACE>ATOM<SPACE> YANKS THE WHOLE PROPERTY LIST OF ATOM.
	J<SPACE> CAUSES THE POINTER [WHICH IS PRINTED OUT AS ] TO 
		JUMP TO THE TOP OF THE WORKING EXPRESSION.
	S<SPACE>E1 . . . EN<SPACE><SPACE> SEARCHES FOR AN OCCURENCE
		OF THE SEQUENCE OF S-EXPRESSIONS E1 . . . EN AND
		MOVES THE POINTER JUST TO THE RIGHT IF SUCCESSFUL.
		NOTE THAT THE LISP READER IS USED FOR READ-IN BY THE 
		EDITOR, SO THAT THE ATOM <ALTMODE><ALTMODE> MUST BE 
		FOLLOWED BY SOME ATOM TERMINATING CHARACTER 
		[SUCH AS <SPACE>].
	I<SPACE>E1 . . . EN<SPACE><SPACE> INSERTS AT THE CURRENT 
		POINTER POSITION THE SEQUENCE E1 . . . EN
	K<SPACE> KILLS THE S-EXPRESSION JUST TO THE RIGHT OF THE 
		POINTER, AND SAVES IT AS THE VALUE OF THE ATOM .
	IV<SPACE>EXP INSERTS THE VALUE OF THE S-EXPRESSION EXP. 
		ESPECIALLY USEFUL WHEN INSERTING STUFF DELETED FROM 
		SOME PRIOR POINT.
	EV<SPACE>EXP MERELY EVALUATES EXP.
HENCEFORWARD, <SPACE> WILL NOT BE EXPLICITLY WRITTEN OUT, BUT WILL BE
UNDERSTOOD TO BE THE COMMAND TERMINATION CHARACTER. THE NEXT GROUP
OF COMMANDS ADMIT AN OPTIONAL NUMERIC ARGUMENT [BASE 10.], PRECEEDING
THE COMMAND, TO BE INTERPRETED AS A REPLICATION NUMBER:
	F MOVE FORWARD [RIGHTWARDS] PAST ONE TOKEN.  A TOKEN IS 
		EITHER A PARENTHESIS OR AN ATOM.
	C SAME AS F
	-B SAME AS F
	B MOVE BACK [LEFTWARDS] OVER ONE TOKEN.
	-C SAME AS B
	-F SAME AS B
	R MOVE RIGHTWARDS PAST THE NEXT S-EXPRESSION.
	L MOVE LEFT OVER ONE S-EXPRESSION.
	D MOVE "DOWN" INTO THE FIRST NON-ATOMIC S-EXPRESSION TO THE
		RIGHT OF THE POINTER.
	U MOVE "UP" OUT OF THE S-EXPRESSION CONTAINING THE POINTER.
	K KILL ALSO ADMITS A REPLICATION  NUMBER.
	PW ARG IS NOT REALLY A REPLICATION NUMBER,
		BUT RATHER THE "WINDOW WIDTH" IN NUMBER OF TOKENS.
THE FOLLOWING LITTLE USED COMMANDS MAY POSSIBLY BE OF SOME INTEREST:
	( INSERT A VIRTUAL OPEN PARENTHESIS.
	) INSERT A VIRTUAL CLOSE PARENTHESIS.
	D( VIRTUALLY DELETE AN OPEN PARENS
	D) VIRTUALLY DELETE A CLOSE PARENS
	() RESTRUCTURE THE WORKING S-EXPRESSION ACCORDING TO THE 
		VIRTUAL PARENTHESES AND DELETIONS.

9) THE PICPAC STUFF HAS BEEN DROPPED [PICARRAY, READPIC, WRITEPIC].  
ANYONE INTERESTED IN ITS REVIVAL SHOULD CONTACT JONL.

10) THAT OLD BUG IN PRINT HAS BEEN CHANGED; IE, IF "/" IS THE LAST
CHARACTER OUTPUTTD BEFORE AN INTERNALLYY GENERATED CARRIAGE RETURN,
THEN THE NEXT CHARACTER TO BE PRINTED IS SQUEEZED IN BEFORE THE CR.
THUS IT IS POSSIBLE TO HAVE LINEL+1 CHARACTERS APPEAR ON SOME LINE.

11) ANYONE HAND-CODING IN LAP WMUST TAKE NOTE THAT
THE FOLLOWING SYSTEM ROUITINES WHICH USED TO BE CALLED BY
A PUSHJ P, ARE NOW CALLED BY A JSP T,
	NUMVAL	FIX1A	FWCONS	FPCONS
FLOAT IS NOW CALLED IFLOAT, AND SIMILARLY THERE IS A LABEL IFIX.
FIX1A, IFLOAT, IFIX, FWCONS, AND FPCONS ALL TAKE THEIR
ARGUMENT IN ACUMULATOR TT INSTEAD OF A AS BEFORE; NUMVAL, IFLOAT,
AND IFIX PRODUCE THEIR RESULT IN ACCUMULATOR TT. THERE ARE LABELS  
FIX1 AND FIX2 IN THE FOLLOWING SEQUENCE:
	FIX2:	JSP T,IFIX
	FIX1:	JSP T,FIX1A
		POPJ P,
SIMILARLY, THERE ARE LABELS FLOAT2 AND FLOAT1.
 
12) MORE ON USER PROGRAMMABLE  INTERRUPTS: BY DOING A
(SSTATUS INTERRUPT N '(PRINT 'NOW/ IS/ THE/ TIME))
IN THE NTH ENTRY OF THE USER INTERUPT TABLE, THE FORM (PRINT . . .)
IS TO BE EVAL'ED. GENERALLY, IF NO SUCH DECLARATION HAS BEEN MADE, 
THEN THE INTERRUPT IS IGNORED.  CURRENTLY THERE ARE ONLY FOUR ENTRYS
IN THE USER INTERRUPT TABLE:
	1 ^H TYPED ON JOB CONSOOOLE
	2 ^A TYPED
	3 ALARMCLOCK TIMER EXPIRED
	4 AN ERROR OCCURED IN AN ERRSET COMPUTATION, AND ERRSET IS 
		ABOUT TO RETURN NIL BECAUSE OF IT.
 (ALARMCLOCK N) SETS THE ALARMCLOCK TIMER TO GO OFF [PROVIDE AN 
INTERRUPT] IN N MICROSECONDS [+- 5%]; (ALARMCLOCK NIL) TURNS OFF THE 
FOOL THING IN CASE IT HAD BEEN PREVIOUSLY SET.