FRIDAY  JAN 13,1978   NM+4D.23H.1M.55S.   LISP 383   -GLS, HIC-

[@] SOME CHANGES IN NOMENCLATURE FOR VARIOUS VERSIONS

[1] LAST MOST FINAL DOCUMENTATION OF THE HAIRY DEFUN FEATURE
[2] (STATUS JNUMBER) RETURNS A JOB NUMBER
[3] NEW EDIT COMMAND:  YV FOO  YANKS VALUE OF FOO

[A] FILEPOS CAN TAKE T AND NIL AS POSITION SPECIFIERS
[B] MEANINGS OF T AND NIL WHERE A FILE OBJECT IS REQUIRED
[C] NEW IO-LOSSAGE ERROR FOR AN INVALID VALUE OF MSGFILES
[D] SLIGHT INCOMPATIBILITY: UREAD AND UFILE NOW RETURN A FULL NAMELIST
[E] UAPPEND NO LONGER RENAMES THE FILE ON OPENING IT
[F] FOR THE RECORD, COMPLETE DEFINITIONS OF OLDIO IN TERMS OF NEWIO
[G] RENAMEF AND DELETEF OF A FILE OBJECT NOW CLOSE THE FILE OBJECT
[H] ALL ITS NEWIO I/O IS NOW DONE WITH SIOT

SOME FEATURES PRESENTLY IMPLEMENTED ONLY FOR THE SAIL VERSION:
[!] SAIL VERSION NOW USES TWO SEPARATE DISK FILES FOR SAVED LISPS
["] INITIALIZATION AUTOMATICALLY SAVES A HIGH SEGMENT
[#] FASLOAD CAN LOAD INTO THE HIGH SEGMENT
[$] HIGH-SEGMENT PURE FREE STORAGE
[%] SUSPEND NOW TAKES ONE OR TWO ARGUMENTS

SOME THINGS PROBABLY OF INTEREST ONLY TO LISP SYSTEM HACKERS:
[{] NEW INTERNAL ROUTINES %CONS, %HUNK, ETC. SOLVE A PDLNMK PROBLEM
[|] INITG IS NOW INITIALIZEG, TO PREVENT CONFLICT WITH DEC-10 INIT UUO
[}] NEW MACROS PUSHN AND POPI ARE USED IN THE SOURCE
[~] THE FORMAT OF FILE OBJECTS HAS CHANGED SOME - REASSEMBLE CODE IF NECESSARY
----------------------------------------------------------------
[@] THERE ARE MANY, MANY VERSIONS OF MACLISP FLOATING AROUND.
    EVEN JUST ON THE PDP-10, THERE ARE MANY BECAUSE OF THE
    POSSIBILITIES OF CONDITIONAL ASSEMBLY.  WORK IS PROCEEDING
    APACE ON VERSIONS FOR THE TENEX AND TOPS-20 OPERATING SYSTEMS,
    AND ON NEWIO VERSIONS FOR SAIL AND TOPS-10.  HERE WE LAY OUT
    SOME STANDARD NOMENCLATURE FOR THE VARIOUS VERSIONS.
    THE VARIOUS NAMES FALL INTO SETS WHICH REPRESENT ORTHOGONAL
    CHOICES.
	OPERATING SYSTEM:
			/	ITS
			|		/	TOPS-10
			|	DEC-10	|	SAIL
		PDP-10	|		\	CMU
			|		/
			|	DEC-20	|	TENEX
			\		\	TOPS-20 (AKA "TWENEX")
		MULTICS
    THE PDP-10 VERSION WILL EVENTUALLY RUN ON SIX DIFFERENT
    OPERATING SYSTEMS.  TOPS-10, SAIL, AND CMU ARE SUFFICIENTLY
    SIMILAR TO WARRANT LUMPING THEM TOGETHER AS "DEC-10"; SIMILARLY
    TENEX AND TOPS-20 ARE LUMPED TOGETHER AS "DEC-20".
    MULTICS, OF COURSE, IS NOT A PDP-10 VERSION.
	PROCESSOR:
		KA10
		KI10
		KL10
    THE KA10 VERSION WILL RUN ON ALL PROCESSORS; THE KI10 VERSION WILL
    RUN ONLY ON KI10 AND KL10 PROCESSORS; AND THE KL10 ONLY ON KL10'S.
    SO FAR WE HAVE BEEN GENERATING ONLY KA10 VERSIONS; WHEN THE NEW
    NUMBER STUFF IS IMPLEMENTED, THIS CHOICE WILL BECOME MORE IMPORTANT.
	I/O IMPLEMENTATION:
		OLDIO	(UREAD, UWRITE, ETC. *ONLY*)
		NEWIO	(MULTIPLE I/O CHANNELS; ALSO SUPPORTS UREAD)
	MINIMALITY:
		MINIMAL	(FANCY FRILLS NOT INCLUDED)
		USELESS	(FANCY "USELESS" FRILLS ARE INCLUDED)
    THE FRILLS INCLUDE THE GCD FUNCTION, PURIFY AND FRIENDS, AND LOTS
    OF LITTLE I/O HACKS LIKE ROMAN NUMERALS AND PRINLEVEL/PRINLENGTH.
    THE MINIMAL VERSION IS USUALLY USED ONLY FOR DEC-10 VERSIONS
    WHICH MUST RUN ON MACHINES WITH LITTLE PHYSICAL MEMORY; HOWEVER,
    IT IS AN OPTION INDEPENDENT OF OPERATING SYSTEM.
	ARITHMETIC:
		BIGNUMS
		DOUBLE-PRECISION FLONUMS
		COMPLEX NUMBERS
    THESE THREE ARE INDEPENDENT CHOICES WHICH MAY BE PRESENT OR ABSENT.

    THUS, TO IDENTIFY THE VERSION PRESENTLY RUNNING AT MIT-AI, WE
    MIGHT SAY "THE ITS KA10 NEWIO USELESS BIGNUM VERSION".


[1] THE FOLLOWING ARE THE OFFICIAL SPECS FOR THE "HAIRY DEFUN"
    FEATURE, WHEREIN THE NAME OF THE FUNCTION IS ACTUALLY
    A LIST OF GOODIES.  IF THE INTERPRETER OR COMPILER DOESN'T
    ACTUALLY DO WHAT FOLLOWS, IT'S A BUG.  (UP TO NOW WE HAVEN'T
    BEEN ABLE TO DISTINGUISH BUGS AND MISFEATURES BECAUSE WE
    WEREN'T SURE PRECISELY WHAT THE FEATURE SHOULD DO IN ALL CASES.)

    THE GENERAL FORM OF A CALL TO DEFUN IS:
	(DEFUN <SPEC> <FLAG> <ARGS> . <BODY>)
    <SPEC> AND <FLAG> MAY BE INTERCHANGED.
    <FLAG> MAY BE OMITTED, OR MAY BE "EXPR", "FEXPR", OR "MACRO".
    <SPEC> MAY BE A SYMBOL (THE NAME OF THE FUNCTION), OR
    A LIST OF TWO TO FOUR SYMBOLS (IN WHICH CASE THE FLAG "MACRO"
    IS ILLEGAL).  <ARGS> IS A NON-NIL SYMBOL OR A LIST OF SYMBOLS;
    THE FORMER INDICATES AN LEXPR (INCOMPATIBLE WITH THE "MACRO"
    AND "FEXPR" FLAGS).
    IF THE VALUE OF THE SWITCH DEFUN IS T, THEN THE EXPR-HASH HACK
    IS ENABLED.  IN THIS CASE, DEFUN AVOIDS MAKING THE INTERPRETIVE
    DEFINITION IF HASHING THE DEFINITION INDICATES THAT IT IS
    THE SAME AS THE CURRENT, PRESUMABLY COMPILED, DEFINITION.
    THE VARIOUS CASES ARE:
    FORM OF <SPEC>:
   	FOO		(FOO BAR)	(FOO BAR BAZ)	(FOO BAR BAZ QUUX)
    EXPR-HASH PROPERTY IS ON THE ATOM:
   	FOO		THE RESULT OF	  - NONE -	FOO
			(GET 'FOO 'BAR)
   			IF THIS IS A SYMBOL
    EXPR-HASH PROPERTY INDICATOR IS:
   	EXPR-HASH	EXPR-HASH	  - NONE -	QUUX
    DEFUN PUTS THE FUNCTION DEFINITION ON FOO UNDER THE PROPERTY:
   	EXPR/FEXPR/MACRO   BAR		BAR		BAR
    COMPILER PUTS THE FUNCTION DEFINITION ON FOO UNDER THE PROPERTY:
   	SUBR/FSUBR/LSUBR   BAR *	BAZ		BAZ
    * THE PROPERTY WILL BE A SYMBOL |FOO BAR| WHICH IN TURN
    WILL HAVE THE APPROPRIATE SUBR/FSUBR/LSUBR PROPERTY.

[2] (STATUS JNUMBER) RETURNS THE NUMBER OF THE LISP JOB (AS DEFINED
    BY THE HOST OPERATING SYSTEM).

[3] THE EDITOR COMMAND  YV FOO  IS THE SAME AS  YP FOO VALUE .
    IT IS USEFUL FOR EDITING THE VALUE OF A SYMBOL.

[A] T AND NIL AS THE SECOND ARGUMENT TO FILEPOS HAVE SPECIAL
    MEANINGS.  T MEANS THE END OF THE FILE, AND NIL MEANS
    THE ACTUAL BEGINNING OF THE FILE.  THE DIFFERENCE BETWEEN
    NIL AND 0 IS THAT 0 MEANS THE LOGICAL BEGINNING OF THE FILE,
    WHILE NIL MEANS THE PHYSICAL BEGINNING.  THIS MAKES NO
    DIFFERENCE IN ANY CURRENT IMPLEMENTATION, BUT WILL MAKE
    A DIFFERENCE WHEN SAIL NEWIO EXISTS.  FILEPOS WILL KNOW
    ABOUT THE SAIL RECORD OFFSET FEATURE, AND NIL WILL MEAN
    THE APPROPRIATE NEGATIVE RECORD NUMBER.

[B] THERE ARE THREE KINDS OF CONTEXTS IN WHICH A FILE OBJECT
    CAN BE USED:
    (1) AN INPUT FILE IS NEEDED, E.G. FOR READ AND TYI.
    (2) AN OUTPUT FILE IS NEEDED, E.G. FOR PRINT AND TYO.
    (3) EITHER DIRECTION IS ACCEPTABLE, E.G. FOR LINEL AND (STATUS TTYCONS).
    IN THE PAST T HAS MEANT THE TTY (THE TERMINAL).  UNFORTUNATELY,
    THERE IS AN AMBIGUITY IN CONTEXT (3).  TO ALLEVIATE THIS, WE
    ARRANGED FOR THE VARIABLES TYI AND TYO TO CONTAIN THE FILES
    USED FOR THE TTY (AS ALREADY DOCUMENTED), SO THAT THE USER
    CAN REFER TO THESE VARIABLES IN CONTEXT (3).  MOREOVER,
    IN CONTEXTS (1) AND (2) T IS TAKEN TO MEAN "THE FILE IN
    THE VARIABLE TYI OR TYO (RESPECTIVELY)".
    A PREVIOUSLY UNDOCUMENTED FEATURE OF THIS IS THAT MSGFILES,
    FOR EXAMPLE, CAN BE '(T) (WHICH IS IN FACT THE DEFAULT VALUE),
    WHICH CAUSES MESSAGES TO GO TO WHATEVER FILE IS IN TYO.
    IN THIS WAY ONE NEED NOT CHANGE MSGFILES JUST BECAUSE THE VALUE
    OF TYO IS CHANGED.
    WE NOW ALSO MAKE THE FURTHER EXTENSION THAT IN CONTEXT (2),
    WHERE ^W WOULD BE HEEDED IF A FILE ARGUMENT WERE OMITTED,
    THAT SPECIFYING THE FILE EXPLICITLY (BY REFERRING TO THE VALUE
    OF TYO) WILL NOT HEED ^W, BUT SPECIFYING T WILL ALLOW ^W TO
    FORCE THE FILE IN TYO TO BE IGNORED.  THIS, FOR EXAMPLE,
    ALLOWS ^W TO SUPPRESS MSGFILES ACTIVITY TO THE TTY AND WELL AS
    ORDINARY ACTIVITY.
    NIL AS A FILE MEANS DIFFERENT THINGS IN DIFFERENT CONTEXTS.
    IN CONTEXTS (1) AND (2) IT MEANS THE SAME AS SPECIFYING
    NO FILE ARGUMENT AT ALL, AND SO USES THE DEFAULT (INFILE FOR
    CONTEXT (1), OUTFILES AND TYO AS CONTROLLED BY ^R AND ^W FOR
    CONTEXT (2)).  FOR CONTEXT (3) IT MEANS "SET A DEFAULT VALUE"
    IF THAT IS APPROPRIATE (E.G. FOR LINEL), AND IS ILLEGAL IF NOT
    APPROPRIATE.

[C] IF MSGFILES IS EVER FOUND TO HAVE A BAD VALUE, AND IO-LOSSAGE
    ERROR OCCURS, SIMILAR TO THE FAIL-ACT ERRORS FOR BAD VALUES
    OF BASE, IBASE, ETC.  BEFORE THE ERROR OCCURS, MSGFILES IS
    SET TO '(T).

[D] UREAD AND UFILE NOW HAVE AS THEIR VALUE A FULL NAMELIST, NOT
    JUST THE SIMPLE FILE NAMES.  THUS UREAD MIGHT RETURN
    ((DSK LOSER) FOO BAR) WHERE FORMERLY IT WOULD HAVE RETURNED
    (FOO BAR).

[E] UAPPEND NO LONGER RENAMES THE OPENED FILE TO ".LISP. APPEND";
    THE FILE RETAINS ITS OWN NAME.  (THIS IS PRIMARILY BECAUSE
    IT IS SO DIFFICULT TO RENAME AN OPEN FILE ON TOPS-10 - GRR!).

[F] HERE ARE THE OFFICIAL DEFINITIONS OF THE OLDIO FUNCTIONS
    IN TERMS OF NEWIO FUNCTIONS:

	(DEFUN UREAD FEXPR (FILENAME)
	       (UCLOSE)
	       ((LAMBDA (FILE)
			(EOFFN UREAD
			       (FUNCTION
				  (LAMBDA (EOFFILE EOFVAL)
					  (UCLOSE)
					  EOFVAL)))
			(INPUSH (SETQ UREAD FILE))
			(DEFAULTF FILE))
		(OPEN (*UGREAT FILENAME) 'IN)))

	(DEFUN UCLOSE FEXPR (X)
	       (COND (UREAD
		      ((LAMBDA (OUREAD)
				(AND (EQ OUREAD INFILE) (INPUSH -1))
				(SETQ UREAD NIL)
				(CLOSE OUREAD))
			   UREAD))
		     (T NIL)))

	(DEFUN UWRITE FEXPR (DEVDIR)
	       (OR DEVDIR (SETQ DEVDIR (CAR (DEFAULTF NIL))))
	       (*UWRITE (CONS DEVDIR
			      (COND ((STATUS FEATURE DEC10)
				     (CONS (STATUS JNAME) '(OUT)))
				    ((STATUS FEATURE DEC20)
				     '(MACLISP OUTPUT))
				    ((STATUS FEATURE ITS)
				     '(.LISP. OUTPUT))))
			'OUT
			(LIST DEVDIR)))

	(DEFUN UAPPEND FEXPR (FILENAME)
	       (SETQ FILENAME (*UGREAT FILENAME))
	       (*UWRITE FILENAME 'APPEND FILENAME))

	(DEFUN *UWRITE (NAME MODE NEWDEFAULT)	;INTERNAL ROUTINE
	       (COND (UWRITE
		      (SETQ OUTFILES (DELQ UWRITE OUTFILES))
		      (CLOSE UWRITE)
		      (SETQ UWRITE NIL)))
	       ((LAMBDA (FILE)
			(SETQ OUTFILES
			      (CONS (SETQ UWRITE FILE)
				    OUTFILES))
			(CAR (DEFAULTF NEWDEFAULT)))
		(OPEN NAME MODE)))

	(DEFUN UFILE FEXPR (SHORTNAME)
	       (COND ((NULL UWRITE)
		         (ERROR 'NO/ UWRITE/ FILE
				(CONS 'UFILE SHORTNAME)
				'IO-LOSSAGE))
		     (T (PROG2 NIL
			       (DEFAULTF (RENAMEF UWRITE (*UGREAT SHORTNAME)))
			       (SETQ OUTFILES (DELQ UWRITE OUTFILES))
			       (SETQ UWRITE NIL)
			       (OR OUTFILES (SETQ ^R NIL))))))

	(DEFUN *UGREAT (NAME)		;INTERNAL ROUTINE
	       (MERGEF NAME
		       (COND ((STATUS FEATURE DEC10) '(* . LSP))
			     ((STATUS FEATURE DEC20) '(* MACLISP *))
			     ((STATUS FEATURE ITS) '(* . >)))))

	(DEFUN UPROBE FEXPR (FILENAME)
	       (SETQ FILENAME (MERGEF (*UGREAT FILENAME) NIL))
	       (PROBEF FILENAME))

	(DEFUN UKILL FEXPR (FILENAME)
		    (DEFAULTF (DELETEF FILENAME))))


[G] FOR CONSISTENCY WITH TOPS-10 (SIGH), THE NEWIO FUNCTIONS
    DELETEF AND RENAMEF WHEN APPLIED TO A FILE OBJECT WILL
    ALSO CLOSE THE FILE OBJECT.

[H] IN CASE ANYONE CARES, ALL ITS NEWIO I/O TRANSACTIONS ARE
    NOW DONE WITH SIOT, NOT WITH BLOCK IOT.  THIS MAY AFFECT
    INTERACTIONS WITH FILES WRITTEN BY PROGRAMS WHICH STILL
    USE BLOCK IOT (E.G. ^C PADDING AT ENDS OF FILES).

THE FOLLOWING FEATURES EXIST ONLY IN THE SAIL VERSION.
EVENTUALLY THEY WILL BE IMPLEMENTED IN ALL DEC-10 VERSIONS.
SOME OF THESE PROVIDE ABILITIES ANALOGOUS TO, BUT NOT
IDENTICAL WITH, FEATURES ALREADY PROVIDED ON ITS FOR HACKING
SHARABLE CODE AND DATA.  SYSTEMS PROGRAMMERS SHOULD EXAMINE
THE FOLLOWING DESCRIPTIONS TO SEE HOW TO HANDLE THESE
FEATURES IN A MANNER COMPATIBLE WITH ALL VERSIONS.
AT THE END IS AN EXAMPLE OF HOW TO CREATE A SHARED SYSTEM
IN A WAY THAT WILL WORK IN ALL EXISTING PDP-10 VERSIONS.

[!] THE SAIL (SU-AI) TIME-SHARING SYSTEM ORDINARY SAVES
    TWO-SEGMENT PROGRAMS AS A SINGLE FILE, UNLIKE TOPS-10,
    WHICH USES TWO DISTINCT DISK FILES (ONE FOR EACH
    SEGMENT).  MACLISP NOW GOES TO SOME TROUBLE TO USE TWO
    DISTINCT FILES ON SAIL ALSO.  THE HIGH-SEGMENT FILE
    NORMALLY HAS THE EXTENSION ".SHR".  THIS IS USED TO
    SUPPORT THE OTHER FEATURES BELOW.

["] WHEN A NEW MACLISP HAS BEEN ASSEMBLED, LOADED, AND
    STARTED BY THE SU-AI MAINTAINER, IT WILL AUTOMATICALLY
    TRY TO DUMP OUT THE HIGH SEGMENT AS A DISK FILE,
    AND WILL PRINT A MESSAGE REGARDING SUCCESS OR FAILURE.
    IT THEN LOADS THE LINE EDITOR WITH AN APPROPRIATE
    SAVE COMMAND (NOT SSAVE, BECAUSE ONLY THE LOW SEGMENT
    SHOULD BE SAVED) FOR THE USER TO APPROVE WITH "RETURN"
    IF DESIRED.  (IF THE MAINTAINER WANTS TO USE NON-STANDARD
    FILE NAMES, HE CAN DEPOSIT THE NAMES IN LOCATIONS
    SGADEV, SGANAM, SGAEXT, AND SGAPPN.)

[#] FASLOAD CAN NOW LOAD CODE INTO THE HIGH SEGMENT.
    RECALL THAT IN THE ITS VERSION, THE VARIABLE "PURE"
    CONTROLS THE LOADING OF PURIFIABLE (SHARABLE) CODE.
    THE MEANING OF THIS VARIABLE HAS BEEN EXTENDED.
    IF PURE IS A FIXNUM, THEN FASLOAD WILL SET UP FOR
    THE UUOLINKS HACK.  THE EXTENSION IS TWOFOLD:
    (1) IF THE ABSOLUTE VALUE OF PURE IS LESS THAN 10,
    IT IS MULTIPLIED BY 1024. (1K).  (2) THE ABSOLUTE
    VALUE OF THE RESULT IS AN ESTIMATE OF THE NUMBER
    OF *WORDS* DESIRED FOR THE UUOLINKS HACK.  THIS SHOULD
    BE ABOUT 15% MORE THAN THE TOTAL NUMBER OF DIFFERENT
    COMPILED FUNCTIONS TO BE LOADED.  (STEP 1 IS FOR
    COMPATIBILITY WITH THE OLD MEANING OF PURE, AS THE
    NUMBER OF 1K BLOCKS TO RESERVE.)
    IN THE ITS (AND DEC-20) VERSIONS, THE SIGN OF THE
    FIXNUM IS IRRELEVANT.  FOR SAIL (AND EVENTUALLY TOPS-10
    AND CMU), THE SIGN CONTROLS WHICH SEGMENT TO LOAD INTO.
    A POSITIVE VALUE LOADS INTO THE LOW SEGMENT, AS BEFORE.
    A NEGATIVE VALUE CAUSES THE HIGH SEGMENT TO BE
    DEPURIFIED (A WRITABLE COPY MADE) IF NECESSARY;
    THE CODE IS THEN LOADED INTO THE HIGH SEGMENT.
    ALSO, ONLY ONE OF THE UUOLINKS AREAS IS MADE IN THE
    LOW SEGMENT; THE OTHER IS PUT IN THE HIGH SEGMENT.
    (THUS THE HIGH-SEGMENT LOADING FEATURE IS TIED TO THE
    UUOLINKS FEATURE - SORRY ABOUT THAT.)

[$] RECALL THAT *PURE CONTROLS WHETHER CERTAIN KINDS OF
    S-EXPRESSIONS ARE TO BE AUTOMATICALLY PURCOPY'D.
    FOR ITS (AND DEC-20) ALL THAT MATTERS IS WHETHER IT IS
    NIL OR NON-NIL.  FOR SAIL (AND EVENTUALLY TOPS-10 AND CMU),
    IT MUST BE A FIXNUM TO CAUSE PURCOPY TO USE THE HIGH
    SEGMENT.  THIS IN TURN WORKS ONLY IF PURE IS A NEGATIVE
    FIXNUM.
    THE VALUE OF *PURE SHOULD BE AN ESTIMATE OF THE TOTAL
    NUMBER OF WORDS OF PURE FREE STORAGE NEEDED, INCLUDING ALL
    THAT LOADED BY PREVIOUS FILES AND ALL THAT INCLUDED IN
    THE INITIAL LISP SYSTEM (PRESENTLY ABOUT 6000. WORDS).
    THIS CAUSES FASLOAD TO PREALLOCATE ENOUGH ADDITIONAL ROOM
    IN THE HIGH SEGMENT TO ACCOMODATE THE ESTIMATED TOTAL AMOUNT
    OF PURE STORAGE.  (THE PREALLOCATION IS NECESSARY BECAUSE
    IT ISN'T POSSIBLE TO ALLOCATE LIST STORAGE IN THE HIGH
    SEGMENT ONCE THE LOADING OF CODE HAS BEGUN.)  MAKING THE
    ESTIMATE IN *PURE TOO BIG MERELY WASTES SPACE IN THE
    HIGH SEGMENT; MAKING IT TOO SMALL CAUSES PURCOPY TO MAKE
    ITS COPIES IN THE LOW SEGMENT.

[%] ONCE CODE AND DATA HAS BEEN LOADED INTO THE HIGH SEGMENT,
    ONE CAN USE SUSPEND TO REPURIFY AND DUMP IT.  IF SUSPEND
    IS GIVEN TWO ARGUMENTS, IT WILL TAKE THE SECOND AS A FILE
    NAME, DUMP THE HIGH SEGMENT TO THAT FILE, AND EXPUNGE THE
    HIGH SEGMENT.  IT THEN RETURNS TO MONITOR LEVEL.  (THE SAIL
    VERSION ALSO LOADS THE FIRST ARGUMENT INTO THE LINE
    EDITOR; THIS WILL NORMALLY BE A SAVE (NOT SSAVE) COMMAND.)
    WHEN THE LOW SEGMENT IS SUBSEQUENTLY CONTINUED OR RUN
    FROM THE SAVE FILE, IT WILL ATTACH TO A HIGH SEGMENT
    MADE FROM THE SAVED HIGH-SEGMENT FILE.  IN SO DOING IT
    WILL ARRANGE TO SHARE THAT HIGH SEGMENT WITH OTHER LISPS
    USING THAT SAME HIGH SEGMENT.

CHANGES OF INTEREST TO LISP SYSTEM HACKERS:
[{] THERE WAS A BUG WHICH OCCURRED BECAUSE CONS (AND HUNK) DID NOT
    PDLNMK ITS ARGUMENTS.  THIS WAS CONSIDERED OKAY BECAUSE NCOMPLR
    KNOWS ABOUT THESE SPECIALLY, AND KNOWS THAT THEY MUST NOT BE
    GIVEN UNSAFE ARGUMENTS.  HOWEVER, IT WAS POSSIBLE TO USE FUNCALL
    (OR SUBRCALL!) TO GIVE THEM UNSAFE ARGUMENTS.  THE SOLUTION
    WAS TO MAKE CONS AND HUNK ALWAYS PDLNMK, AND TO HAVE SPECIAL
    ROUTINES %CONS, %NCONS, %XCONS, %HUNK3, AND %HUNK4, WHICH ARE
    CALLED BY JSP T, AND WHICH NCOMPLR KNOWS ABOUT.  THESE EXPECT
    SAFE ARGUMENTS AND DO NOT PDLNMK.

[|] INITG IS NOW INITIALIZEG, TO PREVENT CONFLICT WITH DEC-10 INIT UUO.

[}] THE MACRO  PUSHN PDL,N  PUSHES N WORDS OF ZEROS ONTO PDL.  THIS WORKS
    FOR ANY N; THE MACRO KNOWS ABOUT THE ROUTINES NPUSH, 0PUSH, AND
    0.0PUSH AND GENERATES THE APPROPRIATE CALLS.  THE MACRO IMPLICITLY
    DESTROYS T.
    THE MACRO  POPI PDL,N  POPS N WORDS FROM PDL BY SUBTRACTING AN
    APPROPRIATE LITERAL.  THE MACRO KNOWS ABOUT LOCATION R70.

[~] THE FORMAT OF FILE OBJECTS HAS BEEN CHANGED TO ACCOMODATE NEW INFORMATION.
    SOME EXTRA RESERVED SLOTS HAVE BEEN CREATED FOR FUTURE EXPANSION.
    IN PARTICULAR, NOTICE J.UIND (USER INDEX) FOR JOB ARRAYS, AND
    FB.BVC (VALID CHARACTER COUNT) FOR FILE OBJECTS.