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