11/14/72  - JONL - 

THE FASLAP-FASLOAD SCHEME SEEMS TO BE WORKING QUITE WELL NOW, AND
IS DOCUMENTED BELOW ALONG WITH NEW INSTRUCTIONS FOR USING COMPLR.
SEE SECTION 9 BELOW.

0) CERTAIN OPTIONS WITH THE FUNCTIONS STATUS ARE SELDOM USED, BECAUSE 
   THEY EXIST AS INDEPENDENT FUNCTIONS.  HENCE THESE OPTIONS HAVE BEEN
   FLUSHED FROM THE STATUS-SSTATUS SERIES:
	CRUNIT
	GCTWA
	NORET
	NOUUO
	*RSET
	*NOPOINT
	TIME
	RUNTIME
	LISTEN
	GCMIN

1) SOME NEW FUNCTIONS, THAT MIGHT PROVE USEFUL - 
	A) FASLOAD, A FSUBR, EXPECTS AN ARGUMENT LIKE UREAD, AND 
	   RATHER SNAPPILY LOADS IN THE FILE, PROVIDED THAT IT IS 
	   AN FASL FILE [THE OUTPUT OF THE FASLAP ASSEMBLER, NOW 
	   A STANDARD PART OF COMPLR]
	B) BOUNDP PRESUMES A PNAME-TYPE ATOM AS ARGUMENT AND RETURNS
	   A POINTER TO ATOM'S VALUE CELL, IF IT HAS A VALUE CELL,
	   AND IF ITS VALUE CONTAINED THEREIN IS NOT THE SPECIAL
	   SYSTEM "UNBOUND" MARKER.  OTHERWISE, NIL IS RETURNED.
	C) MAKUNBOUND INSURES THAT AN ATOM HAS A VALUE CELL, AND THEN 
	   SETS THE ATOMS VALUE TO THE INTERNAL UNBOUND MARKER.
	D) FRETURN ALLOWS YOU TO RETURN FROM AN ARBITRARY EVALFRAME 
	   [OBTAINED, OF COURSE, BY THE FUNCTION EVALFRAME]. THUS, 
	   WHEN AN ERROR OCCURS, AND THE USER TRACES BACK UP THE PDL 
	   EVENTUALLY FINDING SOME EVALUATION THAT HAS A BUG IN IT, 
	   HE CAN CALL FRETURN WITH FIRST ARGUMENT THE PDL POINTER 
	   FOR THAT FRAME [SEE PRIOR NOTES ON THE USAGE OF FRAMES 
	   IN THE LISP ENVIRONMENT] AND WITH SECOND ARG THE DESIRED 
	   RETURN VALUE FOR THAT EVALUATION.  
	E) THE NUMERICAL SUBROUTINES FORMERLY FOUND ON JONL;NUMSBR > 
	   ARE NOW PART OF THE STANDARD LISP.  THE PURE PART OF THE 
	   SYSTEM CODE NOW HAS ONE WHOLE PAGE DEVOTED TO NUMERICAL 
	   ROUTINES [E.G., PLUS, EXPT, *, ETC].  THE NEW ADDITIONS 
	   ARE SQRT, ISQRT,  SIN, COS, ATAN, LOG, AND EXP, WHICH ARE 
	   ALL FLOATING-POINT FUNCTIONS EXCEPT FOR ISQRT [INTENDED TO 
	   BE "INTEGER" SQUARE ROOT, BUT FOR THE TIME BEING, SIMPLY 
	   FLOATS ITS ARGUMENT, CALLS SQRT, AND FIXES THE RESULT].
	   SIN AND COS ASSUME THE ARGUMENT IS IN RADIANS, AND WILL 
	   GENERATE AN ERROR IF THE ARGUMENT IS TOO LARGE TO MAINTAIN
	   AT LEAST 7 DECIMAL DIGITS OF ACCURACY IS THE ANSWER.  ATAN 
	   REQUIRES TWO ARGS, THE FIRST A DELTA-Y AND THE SECOND A 
	   DELTA-X, AND RETURNS THE ANGLE BETWEEN 0 AND 2*PI WITH 
	   TANGENT (DELTA-Y/DELTA-X).  LOG IS NATURAL LOGARITHM, AND 
	   EXP IS NATURAL ANTI-LOGARITHM [EXPONENTIATION BASE E].
	F) A FEW FUNCTIONS NOW RESIDENT IS THE STANDARD LISP PRIMARILY
	   FOR THE BENEFIT OF LAP, MIGHT CONCEIVABLY BE OF SOME USE TO
	   SOMEONE.  GETMIDASOP EXPECTS A PNAME-TYPE ATOM AND RETURNS 
	   EITHER NIL IF ITS ARG ISN'T A PDP10 INSTRUCTION, OR THE 
	   NUMERICAL VALUE OF THE INSTRUCTION AS A FIXNUM.  IN 
	   ADDITION TO THE STANDARD PDP10 INSTRUCTION SET, THE CALL 
	   UUOS FROM LISP AND THE STRT, ERINT, AND LERR UUOS ARE 
	   DEFINED.  ALSO DEFINED ARE MANY, BUT NOT ALL, OF THE ITS 
	   TIME-SHARING SYSTEM CALLS.  GETDDTSYM ALSO EXPECTS A 
	   PNAME-TYPE ARGUMENT AND INTERROGATES THE JOB SYMBOL TABLE,
	   IF THE JOB'S SUPERIOR IS A DDT WITH A SYMBOL TABLE LOADED
	   IN; NIL IS RETURNED IN THE CONTRARY CASE, AS WELL AS IN 
	   THE CASE THAT THE SYMBOL ISN'T IN THE TABLE. PUTDDTSYM
	   MAKES AN ENTRY INTO THE SYMBOL TABLE - SYMBOL IS FIRST 
	   ARGUMENT, VALUE IS SECOND; RETURNS T IF REQUEST SUCCEDED,
	   AND NIL IF FAILED.


2) IN VIEW OF THE WINNITUDE OF FASLOAD ON FASL FILES, THERE APPEARS 
   TO BE NO REASON TO CONTINUE USING E LAP OR C LAP; RATHER THE USER
   SHOULD SIMPLY DO (FASLOAD F LAP COM) WHICH WILL LOAD IN THE FASL 
   VERSION OF THE LAP ASSEMBLER IN TWO JIFFYS.  IF IN FACT THE USER'S 
   LAP FILE IS SOMETHING THAT GETS ASSEMBLED IN ALMOST EVERY TIME HE 
   LOADS UP A LISP, THEN HE SHOULD CONSIDER ASEMBLING THE FILE WITH 
   FASLAP [SEE ITEM 8 BELOW] AND SIMPLY FASLOADING IN THE FASL 
   VERSION OF THE FILE, RATHER THAN LAPPING IN THE LAP VERSION.


3)  USER INTERRUPT NUMBER ZERO IS NOW AVAILABLE TO THE USER AS AN 
    ORDINARY INTERRUPT FACILITY WHICH IS RUN WHENEVER CONTROL-@ IS 
    STRUCK [OR (IOC @) EVAL'D].  THIS AUGMENTS THE FACILITY FOR 
    INTERRUPTING ON CONTROL-H AND CONTROL-A, CURRENTLY USER INTERRUPTS
    NUMBERS 1 AND 2.  AS NOTED PREVIOUSLY, (STATUS INTERR 1) SIMPLY 
    ACCESSES THE VALUE CELL OF THE ATOM ^H, WHICH INITIALLY COMES 
    SET THE THE INTERNAL-^H-BREAK FUNCTION.  THERE IS, HOWEVER, NO 
    ATOM FOR THE OTHER TWO INTERRUPTS.


4) THE SINGLE-CHARACTER-OBJECT HASH TABLE HAS BEEN MERGED INTO A PART 
   OF THE OBARRAY, SO THAT IT WINS COMPLETELY FOR MULTIPLE OBARRAY 
   HACKS.  IF THIS DOESN'T MAKE SENSE TO YOU, DONT WORRY ABOUT IT.  
   ALL YOU NEED TO KNOW IS THAT READCH IS NO MORE COSTLY OR 
   TIME-CONSUMING THAN TYI.

5) DO AND IOG HAVE SLIGHTLY MORE GENERAL FORMATS NOW.
    (IOG C E1 E2 . . . EN) WORKS AS BEFORE, BUT ALL OF E1 TO EN 
   ARE EVALUATED, WITH THE VALUE OF EN BEING RETURNED.
    (DO ((Z INITIALVALUE STEPPERFUN) . . .)
	(ENDTEST E1 E2 . . .EN))
   WORKS LIKE THE USUAL EXTENDED DO FORMAT, EXCEPT THAT THE ENDTEST-
   RETURNVALUE PAIR NOW LOOKS LIKE THE GENERALIZED COND CLAUSE.
*************** YET ANOTHER EXTENSION ON 10/15/73 *********

6) PRINT OUTPUT FOR FIXNUMS HAS BEEN SLIGHTLY HACKED TO GIVE OUT 
   STRINGS SUCH AS 244_33, OR -3_41 WHERE APPLICABLE.  OF COURSE, 
   THESE NUMBERS READ IN PROPERLY, AND SHOULD PROVE TO BE LESS OF A 
   STRAIN ON THE EYES THAN SUCH STRINGS AS 344000000000 [OR IN 
   BASE 10., 228._27. RATHER THAN 30601641984.]  

7) GRABBING A DISPLAY SLAVE, WITH DISINI, NOW CAUSES A MESSAGE TO BE
   PRINTED ON THE JOB CONSOLE REGARDING WHICH COMPUTER S ACTUALLY 
   RUNNING THE SLAVE.  ORDINARILY, THE PDP6 IS PREFERRED, BUT IF IT 
   IS UNAVAILABLE, OR IF IT IS NOT RUNNING, THE USER IS INFORMED.

8) THERE IS NO LONGER ANY DIFFICULTY WITH COMPILING AN EXPR OF MORE 
   THAN 5 ARGUMENTS.  COMPLR CURRENTLY WILL CONVERT SUCH AN EXPR 
   INTO AN LSUBR WITH NO LOSS OF EFFICIENCY.  SIMILARLY, THERE IS NO
   LIMITATION ON THE NUMBER OF VARIABLES IN A LAMBDA APPLICATION.

9) WHEN COMPLR IS LOADED, MAKLAP HAS BEEN ENTERED.
   TYPING CONTROL-G WILL GET ONE BACK TO LISP TOP LEVEL.  
   A COMMAND TO MAKLAP IS OF THE FORM
   <TARGET-FILE-DESIGNATOR>_<SOURCE-FILE-DESIGNATOR><CARRIAGE-RETURN>
   OR OF THE FORM
   <SOURCE-FILE-DESIGNATOR><CARRIAGE-RETURN>
   IN THIS CASE THE TARGET FILE WILL BE DEFAULTED TO BE JUST LIKE 
   THE SOURCE FILE, EXCEPT THAT THE SECOND FILE NAME WILL BE "LAP" 
   FOR COMPLR OUTPUT, AND "FASL" FOR FASLAP OUTPUT [IF THERE IS ANY]
      THERE IS ALSO A NEW WAY TO SET CERTAIN COMPILE-TIME SWITCHES:
   IN THE COMMAND LINE TO MAKLAP, ONE CAN ENCLOSE CERTAIN SWITCH
   DESIGNATORS IN PARENTHESES AS FOLLOWS
   FOO LAP1_JONL;FOO BAR(N -M S)
   EACH LETTER WITHIN  PARENTHESES SETS A SWITCH FROM ITS NORMAL NIL
   STATE TO NON-NIL;  USING A "-" BEFORE THE LETTER SETS IT
   BACK TO NIL.  FOLLOWING IS A LIST OF THE CURRENT SWITCHES AND
   THEIR MEANINGS:
     N	NOARGS	DONT OUTPUT THE ARGS INFORMATION
     X	MAPEX	EXPAND ALL MAPS INTO CORRESPONDING DOS
     M	MACROS	PRINT INTO THE OUTPUT FILE ANY MACRO DEFINITIONS
     S	SYMBOLS	OUTPUT SYMBOLS REQUESTS TO LAP [SO THAT THE LAP
   		SYMBOLS ARE ENTERED IN THE DDT SYMBOL TABLE]
     F	FASL	AFTER COMPILATION, ASSEMBLE THE LAP FILE INTO A FASL 
		FILE [AND INCIDENTALLY PRODUCING AN UNFASL FILE]
     K	NOLAP	KILL THE IMTERMEDIATE LAP FILE AFTER PRODUCTION OF 
   		THE FASL FILE
     A	ASSEMBLE	DO THE ASSEMBLE PHASE ONLY - MEANS THAT INPUT
   		FILE IS A LAP SOURCE,, AND OUTPUT IS A FASL FILE.
     U	UNFASLCOMMENTS	PRINT FASLAP COMMENTS, WARNING MESSAGES, 
		AND SOURCE FILE COMMENTS  LIKE (COMMENT FOO BAR) 
		AND (QUOTE (FOO BAR)) ON THE UNFASL FILE.
     T  TTYNOTES	HAVE COMPLER PRINT ON THE JOB CONSOLE AN 
		ANNOTATION AFTER SUCCESSFUL COMPILATION OF EACH 
		FUNCTION.  LIKEWISE FOR FASLAP ASSEMBLIES.

   SPACES,TABS, CARRIAGE RETURNS, AND LINE FEEDS BETWEEN THE SWITCH 
   DESIGNATORS ARE IGNORED;  THE REQUEST MAY APPEAR ANYWHERE IN THE 
   COMMAND LINE.
	AT TIMES, COMPLR AND FASLAP WILL WISH TO INFORM THE USER OF 
   ERRONEOUS, OR POSSIBLY ERRONEOUS CODE IN HIS FILE [OR, HORRORS, A 
   BUG IN COMPLR OR IN FASLAP].  THESE WARNINGS, OR ERROR MESSAGES 
   ARE PRINTED OUT UNDER AN IOG MODIFIED BY THE REQUESTS FROM A 
   TOP-LEVEL LIST "MESSIOC".  NORMALLY MESSIOC IS NIL, SO THAT WARNING
   MESSAGES GO ONLY TO THE JOB CONSOLE, BUT IF THE USER DOES 
   (MESSIOC FOO), IT WILL HAVE THE EFFECT OF CAUSING AN (IOC FOO) 
   JUST BEFORE THE PRINTING OF THE MESSAGE.  MESSIOC CAN BE CALLED 
   EITHER FROM A ^H BREAK IN THE COMPLR, OR FROM COMPLR TOP LEVEL 
   BEFORE ENTERING MAKLAP, OR IN A DECLARATION ON THE FILE TO BE 
   COMPILED.
	LAP SOURCE CODE MAY STILL BE ASSEMBLED AND LOADED IN BY 
   LAP, BUT IT THE ASSEMBLY IS DONE ONTO DISK [INTO A FASL FILE], 
   THEN THE FASLOAD WILL BE MUCH QUICKER THAN A FULL ASSEMBLY AND 
   LOAD.  FOR ONE SHOT ASSEMBLY-AND-LOAD TASKS, IT IS STILL MUCH 
   FASTER, HOWEVER, SIMPLY FASLOAD IN COM:F LAP AND ASSEMBLE THE 
   FILE IN CORE [OR LOAD IN COM:E LAP IF FOR SOME REASON AN EXPR 
   VERSION OF LAP IS DESIRED]  -  ONE GAINS IF HE INTENDS TO 
   ASSEMBLE ONCE AND LOAD-IN MANY TIMES.
	ONE MAIN ADVANTAGE OF FASLOADING OVER SIMPLY UREADING THE 
   ORIGINAL FILE AND LOADING IS THAT THE READER IS BYPASSED.  THE 
   READ PHASE OF LOADING IN AN AUXILLIARY FILE IS QUITE SLOW, AND 
   THE FASL FILE HAS LIST STRUCTURE STORED IN IT IN A PRE-PARSED 
   FORM THAT ALLOWS QUICK RECONSTRUCTION.  SOME USERS MAY HAVE TO 
   GIVE THIS A LITTLE THOUGHT, HOWEVER, FOR IT MEANS THAT RANDOM 
   EVALUATIONS INITIATED DURING FASLOADING CANNOT EXPECT TO CALL 
   THE FUNCTION READ AND GOBBLE UP THE NEXT FEW CHARACTERS FROM 
   THE "INPUT FILE"; ALSO, THERE WILL BE NO READ-MACRO CHARACTER 
   HAPPENINGS DURING THE FASLOADING PHASE.