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.