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).