THURSDAY MARCH 03,1977 FQ+6D.12H.27M.23S. LISP 1258 - GLS -
WELL, WE ARE WORKING AWAY ON THE NEW LISP MANUAL!
ELLEN IS DOING MOST OF THE WORK, WITH OTHERS PITCHING
IN WRITING NEW TEXT (THE CONFLICTS BETWEEN WHICH ELLEN
GETS TO RESOLVE). CURRENTLY CHAPTERS 3 AND 4 ARE IN
PROGRESS.
THE FILES ".INFO.;OLDIO ORDER" AND ".INFO.;NEWIO ORDER"
CONTAIN A SUMMARY OF THE FUNCTIONS AND VARIABLES AVAILABLE
IN LISP. I WILL TRY TO KEEP THESE UP-TO-DATE (THEY ARE
MECHANICALLY GENERATED).
THE FOLLOWING NAMING SCHEME TAKES EFFECT ON ITS AS OF THIS VERSION.
-> MEANS "IS LINKED TO" (DISK-TYPE FILE NAME LINKS).
L -> LISP -> NEWIO
Q -> NEWIO -> SYS:PURQIO >
O -> OLDIO -> SYS:PURBIB >
OL -> OLISP -> ONEWIO
OQ -> ONEWIO -> SYS:PURQIO NNN (FOR SOME NNN)
OO -> OOLDIO -> SYS:PURBIB NNN (FOR SOME NNN)
OOL -> OOLISP -> OONEWIO
OOQ -> OONEWIO -> SYS:PURQIO <
OOO -> OOOLDIO -> SYS:PURBIB <
THAT IS, L^K AND LISP^K NOW ALWAYS GET YOU A NEWIO.
SO DO Q^K AND NEWIO^K. TO GET AN OLDIO, USE O^K OR OLDIO^K.
THE "O" AND "OO" VERSIONS GET OLD AND VERY OLD VERSIONS.
THIS WAS ALREADY IN EFFECT ON AI, BUT IS NOW ON ALL ITS
MACHINES.
MANY BUGS HAVE BEEN FIXED IN THIS VERSION, INCLUDING
THE ONE ABOUT GC-OVERFLOW (I HOPE!). MANY NEW FEATURES
AS FOLLOWS. AS ALWAYS, NUMBERED ITEMS ARE FOR ALL LISPS,
AND LETTERED ITEMS FOR NEWIO ONLY.
[1] NEW FUNCTION: QUIT (COMPATIBLE WITH MULTICS VERSION)
[2] CHANGES TO GC-RELATED USER INTERRUPTS:
[2A] GC-OVERFLOW WORKS BETTER - CAN GET SEVERAL PER GC
[2B] GC-DAEMON GETS MORE INFORMATION NOWADAYS
[3] CHANGES TO STATUS FUNCTIONS:
[3A] (STATUS PURSPCNAMES) YIELDS NAMES OF ALL PURE SPACES
[3B] (STATUS HACTRN) YIELDS T FOR UNKNOWN SUPERIOR
[3C] (STATUS XJNAME) HAS BEEN RENAMED (STATUS SUBSYSTEM)
[3D] (STATUS XUNAME) HAS BEEN RENAMED (STATUS USERID)
[3E] (STATUS FEATURE TOPS-10) IS BEST WAY TO CHECK FOR TOPS-10
[3F] WE ARE PHASING OUT (STATUS TERPRI) - USE TERPRI VARIABLE
[A] FILEPOS WORKS ON OUTPUT FILES - ALL ITS I/O USES SIOT NOW
[B] INCLUDE PROVIDES AN EOFFN TO MAKE EOF TRANSPARENT
[C] AUTOLOAD NOW USES LOAD INSTEAD OF FASLOAD (LIKE MULTICS)
[D] DELETEF OF AN OPEN FILE NOW USES DELEWO (IT USED TO JUST LOSE)
[E] THE RENAME FUNCTION HAS BEEN RENAMED TO RENAMEF
[F] (STATUS TTYREAD) IS NOW IN THE READTABLE AGAIN IN NEWIO
[G] NUMERIC (STATUS TTYINT) VALUES CAN NOW FILTER ALL SUPRA-ASCII BITS
----------------------------------------------------------------
[1] (QUIT), AS ON MULTICS, CAUSES THE LISP JOB TO COMMIT SUICIDE.
(IT DOES NOT PRODUCE A ^G OR ^X QUIT - FOR THOSE, USE THE
^G FUNCTION OR (ERROR 'QUIT)!)
QUIT IS ACTUALLY AN LSUBR OF 0 TO 1 ARGUMENTS. POSSIBLE
VALUES FOR THE ARGUMENT:
NIL SAME AS NO ARGUMENT - DO A NORMAL QUIT
T QUIT AS NOISELESSLY AS POSSIBLE (DON'T PRINT :KILL, ETC.)
ERROR ERROR QUIT. FLUSH TYPEAHEAD, AND GENERALLY CLEAN UP.
<N> A FIXNUM ARGUMENT IS MACHINE-DEPENDENT. ON ITS, IT IS
FED AS THE EFFECTIVE ADDRESS FOR .BREAK 16,.
[2] CHANGES TO GC-RELATED USER INTERRUPTS:
[2A] IT USED TO BE THAT IF SEVERAL SPACES GOT A GC-OVERFLOW
CONDITION DURING A SINGLE GC, ONLY ONE INTERRUPT WOULD
BE SIGNALED. NOW ALL OF THEM SHOULD BE SIGNALLED, AS
SEPARATE INTERRUPTS.
[2B] THE ARGUMENT RECEIVED BY GC-DAEMON HAS BEEN CHANGED
IN AN INCOMPATIBLE MANNER. THE OLD FORMAT WAS:
( (<SPACE> <FREE-BEFORE> . <FREE-AFTER>) ...)
THE NEW FORMAT IS:
( (<SPACE-NAME> <FREE-BEFORE> <FREE-AFTER>
<SIZE-BEFORE> <SIZE-AFTER>)
...)
THE TWO NEW QUANTITIES ARE THE SIZE OF THE SPACE AT
THE BEGINNING AND END OF THE GC. THE DIFFERENCE OF
THESE TWO QUANTITIES GIVES THE AMOUNT OF SPACE
ADDED DURING THE GC, WHILE THE DIFFERENCE BETWEEN
<SIZE-BEFORE> AND THE <SIZE-AFTER> FROM THE PREVIOUS
GC GIVES THE AMOUNT ADDED BETWEEN GC'S. NOTE ALSO
THAT THE NEW FORMAT DOESN'T HAVE THAT CRETINOUS
DOTTED PAIR, SO LATER MORE INFORMATION CAN BE ADDED
COMPATIBLY.
[3] CHANGES TO STATUS FUNCTIONS:
[3A] (STATUS PURSPCNAMES) YIELDS NAMES OF ALL PURE SPACES.
PRESENTLY THIS IS (LIST FIXNUM FLONUM BIGNUM),
BUT IN CASE THIS EVER CHANGES, THIS STATUS CALL IS
THE RIGHT WAY TO FIND THEM ALL. RECALL THAT
(STATUS SPCNAMES) GIVES THE NAMES OF NON-PURE SPACES.
[3B] (STATUS HACTRN) YIELDS T FOR UNKNOWN SUPERIOR.
AS BEFORE, IT CAN ALSO YIELD "DDT" FOR A DDT SUPERIOR,
"LISP" FOR A LISP SUPERIOR (THIS IS DETERMINED BY
BITS IN THE .OPTION USER VARIABLE), OR NIL FOR NO
SUPERIOR.
[3C] (STATUS XJNAME) HAS BEEN RENAMED (STATUS SUBSYSTEM).
EVENTUALLY THIS WILL BE MADE MEANINGFUL ON TOPS-10
AND MULTICS IMPLEMENTATIONS. THE INTENDED INTERPRETATION
IS "THE GENERIC NAME OF THIS PROGRAM".
(STATUS JNAME) IS TO BE INTERPRETED AS "THE UNIQUE
IDENTIFIER OF THIS JOB WITHIN THE TIME-SHARING SYSTEM".
[3D] (STATUS XUNAME) HAS BEEN RENAMED (STATUS USERID).
EVENTUALLY THIS WILL BE MADE MEANINGFUL ON TOPS-10
AND MULTICS IMPLEMENTATIONS. THE INTENDED INTERPRETATION
IS "THE GENERIC NAME OF THIS USER (E.G. "FRED").
(STATUS UNAME) IS TO BE INTERPRETED AS "THE UNIQUE
IDENTIFIER OF THIS LOGGED-IN INSTANCE OF THE USER
WITHIN THE TIME-SHARING SYSTEM".
[3E] (STATUS FEATURE TOPS-10) IS BEST WAY TO CHECK FOR
RUNNING UNDER A REAL TOPS-10 SYSTEM. WE MAY PHASE OUT
(STATUS FEATURE DEC10), OR LET IT MEAN ANY TOPS-10-LIKE
SYSTEM, SUCH AS SAIL. WE ALSO ANTICIPATE HAVING TO
INTRODUCE (STATUS FEATURE TOPS-20) SOMEDAY.
[3F] WE ARE PHASING OUT (STATUS TERPRI). PLEASE ELIMINATE
FROM YOUR PROGRAMS IF POSSIBLE. IN NEWIO YOU CAN SET
THE LINEL OF A FILE TO 0 INSTEAD, OR YOU CAN BIND
THE TERPRI VARIABLE.
[A] FILEPOS NOW WORKS ON OUTPUT FILES, THANKS TO IMPROVEMENTS
TO ITS. THIS ONLY WORKS IN ITS VERSION 1048 OR GREATER,
AND SO WILL NOT APPEAR ON A GIVEN MACHINE UNTIL A VERSION
OF ITS APPEARS WHICH CAN SUPPORT THE FEATURE.
AS A COROLLARY, ALL LISP BUFFERED I/O IS DONE WITH SIOT.
IN THIS WAY EXACT CHARACTER COUNTS ARE USED, ELIMINATING
THE TRAILING CONTROL-C PROBLEM.
[B] INCLUDE PROVIDES AN EOFFN TO MAKE EOF TRANSPARENT.
WHEN READING OFF THE END OF AN INCLUDED FILE, NO EOF
SHOULD BE DETECTED (UNLESS READ WAS IN THE MIDDLE OF AN
OBJECT, WHICH CAUSES A FAIL-ACT); READING SHOULD JUST
CONTINUE IN THE FILE POPPED OFF THE INSTACK. THIS MEANS
THAT AN INCLUDED FILE IS JUST LIKE STICKING THE INCLUDED
FILE IN THE MIDDLE OF THE INCLUDING I/O STREAM.
[C] AUTOLOAD NOW USES LOAD INSTEAD OF FASLOAD (LIKE MULTICS).
[D] DELETEF OF AN OPEN FILE NOW USES DELEWO (IT USED TO JUST LOSE).
THIS TOO DEPENDS ON ITS VERSION 1048 OR GREATER.
[E] THE RENAME FUNCTION HAS BEEN RENAMED TO RENAMEF.
THIS IS FOR COMPATIBILITY WITH DELETEF, MERGEF, PROBEF, ETC.,
AND TO AVOID USING UP A GOOD WORD.
[F] (STATUS TTYREAD) IS NOW IN THE READTABLE AGAIN IN NEWIO.
THIS IS COMPATIBLE WITH OLDIO, AND ALSO MAKES MORE SENSE
SINCE IT IS RELATED TO THE FORCE-FEED BITS WHICH ARE ALSO
IN THE READTABLE. SINCE IT NEVER WORKED BEFORE IN NEWIO
ANYWAY, THIS SHOULD NOT BREAK ANY PROGRAMS!
[G] RECALL THE FORMER OBSCURE FEATURE THAT IF AN "INTERRUPT
FUNCTION" FOR THE KEYBOARD SET VIA (SSTATUS TTYINT) IS A
FIXNUM, THEN IT SPECIFIES THE DEFAULT LISP ACTION FOR
AN INTERRUPT CHARACTER OF THAT ASCII VALUE; AND THAT FURTHERMORE
SUPRA-ASCII BITS COULD BE USED TO FILTER THE CONTROL AND
META BITS, NAMELY 400 REQUIRED THE META BIT TO BE PRESENT
FOR THE ACTION TO OCCUR, AND 400_22 FORBADE THE PRESENCE
OF THE META BIT, AND SIMILARLY FOR 200 AND THE CONTROL BIT.
THIS HAS BEEN EXTENDED TO THE TOP BIT (4000), THE SHIFT-LOCK
BIT (2000), AND THE SHIFT BIT (1000). IF YOU REALLY WANT
TO HACK AROUND WITH 12-BIT KEYBOARD INPUT, THIS IS YOUR
CUP OF T.