WEDNESDAY  FEB 13,1974   FM+7D.3H.28M.38S.   LISP 746   - GLS -

AS OF VERSION 746, LISP SYSTEMS OF THE SAME VERSION WILL SHARE
PAGES AMONG THEMSELVES; I.E. A LISP, MACSYMA, AND CONNIVER CAN
ALL SHARE PAGES COMMON TO THE LISP SYSTEM.
BIBOP LISP HAS BEEN GREATLY RESTRUCTURED; I WILL RE-EDIT THE BIBOP
DOCUMENT AS SOON AS I CAN (SAY WITHIN THE NEXT WEEK). -- GLS

BRIEF SYNOPSIS:

[1] LOSSES DUE TO FAILURE TO GET CORE NOW LEAVE YOU IN DDT
[2] NEW FUNCTION: IMPLODE
[3] FASLOAD, UREAD, UFILE OF ONE ARG
[4] USE :PDUMP FOR BIBOP LISP SYSTEMS, NEVER $Y
[5] ALTMODE LETS INIT FILE LOOK AT JCL
[6] (STATUS STATUS ...), (STATUS SSTATUS ...), (STATUS FEATURE ...)
[7] NEW *PURE HACK USING VALUE OF THE SYMBOL "PUTPROP"
[8] *PURE CAUSES ALL SYMBOL BLOCKS CREATED TO BE PURE
[9] ARGS OF NIL DOES NOTHING, RETURNS NIL
[10] (PRINC '/^P) DOES NOT OUTPUT CTRL/P, BUT UPARROW-P
----------------------------------------------------------------
[1] THE LOAD ON THE PDP-10'S HAS INCREASED GREATLY OF LATE.
    BECAUSE OF THIS, LISP MORE OFTEN FAILS TO GET MORE CORE
    WHEN IT NEEDS TO.  FORMERLY THIS USED TO PRODUCE VARIOUS
    KINDS OF UNCORRECTABLE LISP ERRORS, SUCH AS "NO CORE - FASLOAD".
    (THIS WAS REASONABLE BECAUSE IT HAPPENED SO SELDOM.)
    NOW, UNDER SUCH HEAVY LOADS, IT IS NOT REASONABLE TO LOSE
    PERMANENTLY JUST BECAUSE THE SYSTEM IS LOADED. THEREFORE
    WHEN LISP FAILS TO GET CORE, IT SHOULD NOW PRINT THE MESSAGE

	:$ CAN'T GET CORE! YOU ARE IN DDT - TYPE $P TO TRY AGAIN $

    OR WORDS TO THAT EFFECT. WHEN THIS HAPPENS, YOU ARE INDEED IN
    DDT; YOU MAY FLUSH THE LISP AND LOG OUT, THEREBY BECOMING A HERO
    FOR LIGHTENING THE SYSTEM LOAD, OR YOU CAN PROCEED THE LISP,
    WHICH WILL TRY AGAIN TO GET THE NECESSARY CORE.

[2] NEW FUNCTION: IMPLODE, A SUBR OF ONE ARGUMENT, IS EQUIVALENT
    TO INTERN OF MAKNAM, I.E. (IMPLODE X) <==> (INTERN (MAKNAM X)).
    THE DIFFERENCE IS THAT IMPLODE IS MUCH MORE EFFICIENT
    (AVOIDS MUCH UNNECESSARY CONSING).

[3] UREAD, UFILE, AND FASLOAD NOW ACCEPT A SINGLE ARGUMENT;
    UREAD AND UFILE ASSUME THAT THE MISSING SECOND FILE NAME IS ">",
    WHILE FASLOAD ASSUMES THAT THE SECOND FILE NAME IS "FASL".
    IN THE INTERESTS OF SAFETY, UKILL STILL REQUIRES BOTH NAMES.

[4] BECAUSE OF LOSSAGE ON ITS' PART, COMBINED WITH THE MEMORY
    MANAGEMENT STRATEGIES OF BIBOP LISP, ONE SHOULD NEVER,
    NEVER, NEVER USE $Y TO DUMP OUT A BIBOP LISP ONCE
    SOMETHING HAS BEEN LOADED INTO IT, SUCH AS A CONNIVER OR
    ACTOR SYSTEM. ALWAYS BUT ALWAYS, USE :PDUMP
    INSTEAD, EVEN IF YOU HAVEN'T PURIFIED THE BIBOP LISP.

[5] IF THE JOB COMMAND LINE TO A FRESH LISP CONTAINS AN ALTMODE,
    THEN THE PART BEFORE THE ALTMODE IS USED AS THE INIT FILE
    NAME, AND THE PART AFTER IS IGNORED. FURTHERMORE THE JCL
    IS NOT FLUSHED; THUS THE INIT FILE CAN USE (STATUS JCL)
    TO LOOK AT THE PART AFTER THE ALTMODE. IF THERE IS
    NOTHING BEFORE THE ALTMODE, THEN LISP JUST SAYS "ALLOC?";
    BUT THE JCL HAS NOT BEEN FLUSHED AND CAN BE EXAMINED
    AS BEFORE. THUS IF YOU SAY TO DDT

	:LISP FOO;BAR QUUX$HACK

    THEN THE INIT FILE NAMED "FOO;BAR QUUX" IS USED, AND (STATUS JCL)
    WOULD RETURN THE LIST

	(F O O /; B A R /  Q U U X $ H A C K)

[6] THREE NEW STATUS FEATURES:
	[A] (STATUS STATUS FOO) RETURNS T IFF "FOO" IS A VALID
	    STATUS OPTION. THUS (STATUS STATUS UNAME)
	    WOULD RETURN T, WHILE (STATUS STATUS ZORCH) WOULD
	    RETURN NIL. IF "FOO" IS NOT PRESENT (I.E., YOU SAY
	    (STATUS STATUS)), THEN A LIST OF VALID STATUS OPTIONS
	    IS RETURNED (THE NAMES WILL BE TRUNCATED TO 5 CHARACTERS,
	    HOWEVER, AND TO SOME OTHER NUMBER OF CHARACTERS ON
	    OTHER IMPLEMENTATION).
	[B] (STATUS SSTATUS FOO) IS SIMILAR TO THE ABOVE,
	    BUT RETURNS T IFF "FOO" IS A VALID SSTATUS OPTION.
	    NOTE THAT ALL VALID SSTATUS OPTIONS ARE VALID STATUS
	    OPTIONS, BUT NOT ALL VALID STATUS OPTIONS ARE VALID
	    SSTATUS OPTIONS. (STATUS SSTATUS) RETURNS A LIST
	    OF (TRUNCATED) NAMES OF VALID SSTATUS OPTIONS.
	[C] (STATUS FEATURE FOO) IS ESSENTIALLY THE SAME AS
	    (NOT (NULL (MEMQ 'FOO (STATUS FEATURES))))
	    AND IS FOR CONVENIENCE' SAKE.

[7] *PURE, WHICH IS THE MAGIC VARIABLE CONTROLLING VARIOUS PURIFICATION
    HACKS IN BIBOP LISP, HAS AN EFFECT ON THE PUTPROP FUNCTION.
    THE VALUE OF THE VARIABLE PUTPROP SHOULD BE A LIST OF PROPERTY
    NAMES (IT IS INITIALLY (SUBR FSUBR LSUBR); PUTTING "ARRAY" ON THIS
    LIST IS A MAJOR DISASTER, SO DON'T DO IT!).  IF *PURE IS
    NON-NIL, THEN IF PUTPROP IS PUTTING ON A PROPERTY WHICH DIDN'T
    EXIST BEFORE, THEN INSTEAD OF PUTTING THE PROPERTY AT THE FRONT
    OF THE PROPERTY LIST, IT PUTS IT IN THE MIDDLE SOMEWHERE,
    AND PURIFIES BOTH THE PROPERTY VALUE AND THE TWO WORDS OF
    PROPERTY LIST IT CREATES. RECALL THAT *PURE IS FOR USE ONLY
    WHEN LOADING UP LARGE SYSTEMS TO BE DUMPED, LIKE MACSYMA. IF YOU
    AREN'T SURE OF ALL THIS, EITHER IGNORE IT OR ASK GLS OR JONL.

[8] ANOTHER *PURE HACK IS THAT IF ANY ATOMIC SYMBOLS ARE CREATED,
    AS MUCH AS POSSIBLE OF THE ATOMIC SYMBOL IS MADE PURE.
    THIS CAUSES SOME FUNNINESSES TO HAPPEN, SUCH THAT SOMETIMES
    IT MUST BE DEPURIFIED (I.E. COPIED). ANY QUESTIONS? SEE GLS.

[9] IF THE FIRST ARGUMENT TO ARGS IS NIL, IT DOES NOTHING AT ALL
    EXCEPT RETURN NIL. (RECALL THAT NIL IS NOT A VALID
    FUNCTION ANYWAY).

[10] TO PREVENT THOSE NASTY I/O SCREWS, TYO AND RELATED FUNCTIONS
     LIKE PRINT WILL NOT OUTPUT CTRL/P'S - RATHER IT OUTPUTS THEM
     AS AN UPARROW AND A P (THIS AFFECTS ONLY THE TTY - CTRL/P'S
     CAN STILL BE SENT TO FILES). TO DO CURSOR CONTROL, FOR
     ANY CHARACTER X, DO (CURSORPOS 'X) INSTEAD OF (PRINC '/^PX).
     EXAMPLE: TO CLEAR THE SCREEN, USE (CURSORPOS 'C).