4/5/72 - JONL- THERE ARE THREE NEW FEATURES WITH US NOW: 1) TYIPEEK, A SUBR OF NO ARGUMENTS, WILL INSPECT THE NEXT CHARACTER IN THE INPUT STREAM AND RETURN ITS ASCII VALUE LIKE TYI, EXCEPT THAT IT WILL NOT GOBBLE UP THE CHARACTER. THE NEXT READCH OR READ WILL FIND IT STILL IN THE READ STREAM. FOR THE TTY, THIS MEANS THAT SOME BUFFERING IS DONE BY THE SYSTEM. FOR OTHER INPUT DEVICES, SUCH AS HAVE END-OF-FILE CONDITIONS, WHEN THE EOF IS REACHED, TYIPEEK RETURNS 3 [CORRESPONDING TO CONTROL-C] INSTEAD OF SWITCHING TO THE NEXT DEFAULT DEVICE. 2) USER INTERRUPT NUMBER 20. IS A GARBAGE-COLLECTOR DAEMON, OF SORTS. JUST AFTER EACH COLLECTION, THIS INTERRUPT FUNCTION IS CALLED WITH A LIST OF THREE PAIRS OF NUMBERS ((LIST0 . LIST1) (FX0 . FX1) (FL0 . FL1)) LIST0 IS THE NUMBER OF CELLS FREE IN LIST STORAGE SPACE WHEN THE GC WAS INITIATED, AND LIST1 IS THE NUMBER FREE AFTER THE GC FINISHED; SIMILARLY FOR FIXNUM SPACE AND FLONUM SPACE. IN THE ROSY FUTURE, A USER WILL BE ABLE TO ADD BLOCKS OF STORAGE TO ANY SUCH SPACE [INCLUDING PDLS], AND HE WILL PROBABLY HAVE A HEURISTIC GC-DAEMON FUNCTION TO DECIDE WHEN TO DO SO. 3) IF YOU DEBUG FROM DDT, YOU WILL BE INTERESTED TO KNOW THAT HHX SIMULATES A CONTROL-H INTERRUPT IN LISP. P.X STILL PRINTS OUT THE RIGHT-HALF OF THE CURRENTLY OPEN CELL AS LIST STRUCTURE; PL.X WILL PRINT OUT THE LEFT-HALF. THERE ARE A FEW CORRECTIONS TO THE DESCRIPTION OF THE DISPLAY SLAVE, AND IT MIGHT BE WISE TO TAKE ANOTHER COPY IF YOU ARE INTERESTED. IT IS AT THE BOTTOM OF THE PAGE IN THIS FILE HEADED 3/17/72 THE SERVICE FUNCTION FOR INTERRUPT NUMBER 10. [CALLED WHEN SOME STORAGE AREA IS ABOUT TO RUN OUT OF SPACE] WILL BE GIVEN AS ARGUMENT ONE OF THE THREE ATOMS LIST, FIXNUM, OR FLONUM DEPENDING ON WHICH SPACE IS ABOUT TO LOSE. THE NEW ARITHMETIC FUNCTIONS ANNOUNCED LAST SUMMER FOR NLISP HAVE BEEN IN LISP FOR SOME TIME ALSO. TO RECAPITULATE, THEY ARE: + - * / 1+ 1- ;WHICH REQUIRE FIXNUM ARGUMENTS +$ -$ *$ /$ 1+$ 1-$ ;WHICH REQUIRE FLONUMS < > = ;REQUIRES ARGS OF SAME TYPE IN GENERAL THESE ARE LSUBRS THAT WORK EXACTLY LIKE PLUS, DIFFERENCE, TIMES, QUOTIENT, ADD1, SUB1, LESSP, GREATERP, AND EQUAL [<, >, AND = ARE SUBRS OF TWO ARGUMENTS]; HOWEVER, THE ARGUMENTS MUST OBEY THE NOTED RESTRICTIONS. THIS IS SO THAT THE COMPLR MAY SOMEDAY OPEN CODE THESE ARITHMETIC FUNCTIONS, BUT SOME OF THE USER COMMUNITY HAVE FOUND THEIR STYLE AND SPELLING PREFERABLE TO THE EARLIER. FOR THE SUPER-HACKER, THERE IS A SERIES OF FUNCTIONS TO DO ARITHMETIC ON THE ACTUAL DATUM PASSED AS ARGUMENT RATHER THAN THE LISP INTERPRETATION OF THAT DATUM [E.G., THE NUMBER 69.0E23 IS REPRESENTED AS AN 18.-BIT ADDRESS IN THE FLONUM STORAGE AREA, CONTENTS OF WHICH ADDRESS IS THE PDP10 36.-BIT FLOATING-POINT REPRESENTATION OF 69.0E23]. THEY ARE: +# -# *# /# 1+# 1-# <# ># OF COURSE, "EQ" IS THE EQUAL TEST FOR POINTERS. NOTE ALSO THAT /, /$, AND /# MUST BE TYPED IN AS //, //$, AND //#. THE VARIABLE OBLIST FEATURE IS WORKING WELL, AND IS PARTICULARLY USEFUL WHEN ONE WANTS TO READ IN A RATHER SELF-CONTAINED FILE OF FUNCTIONS BUT DOESN'T WANT FUNCTION DEFINITIONS ON THAT FILE TO CONFLICT WITH ALREADY EXISTING USER-DEFINED FUNCTIONS. FOR EXAMPLE, (COMMENT RUNNER BLOCK) ;SINCE THE TOP LEVEL READER WILL READ ;THIS, THESE ATOMS WILL BE INTERNED ;ON THE CURRENT [I.E. THE STANDARD] ;OBARRAY. (MAKOBLIST 'RUNOB) ;HERE WE MAKE UP AN OBARRAY FOR USE WHILE ;LOADING IN THE FILE. AT THIS POINT, IT IS ;JUST A COPY OF THE STANDARD, INCLUDING ;"RUNNER" AND "BLOCK", WHICH WILL BE THE ;SAME IN BOTH OBARRAYS. ************* REMOB IS NOW A SUBR - 10/15/73 ******************* ((LAMBDA (OBARRAY) ;SO HERE WE BIND OBARRAY TO THE ARRAY ;PROPERTY OF RUNOB (REMOB NVFIX NVSET) ;REMOBS TWO ATOMS [COMMON TO BOTH ;OBARRAYS] FROM THE RUNOB OBARRAY, ;BUT NOT FROM THE STANDARD ONE. (LOADINFILE RUNNER > DSK FOO) ;SUPPOSE WE HAVE A FILE LOADING FUNCTION 'LOADED) (GET 'RUNOB 'ARRAY)) ;SO NEW WE ARE BACK IN THE GOOD OLD STANDARD OBARRAY, BUT ;CAN SWITCH TO THE OTHER ONE TO LOOK AROUND IF NECESSARY. ;FURTHERMORE, WE CAN CALL THE FUNCTION RUNNER FROM EITHER, ;BUT THE LOCAL FUNCTION "DRAGGER", DEFINED ON THE FILE ;RUNNER >, CAN BE ACCESSED BY THE READER ONLY WHEN THE ;RUNOB OBARRAY IS IN USE. IN THE NEXT NOTE ON LISP, I HOPE TO HAVE A REVIEW, IN SOME COHERENT FORM, OF ALL THE STATUS OPTIONS, ALL THE USER INTERRUPTS AVAILABLE, ALL THE READER'S SYNTAX CATEGORIES, AND SOME USEFUL EXAMPLES WHICH PLAY UPON THESE GOODIES. QUITE POSSIBLY, WE NEED A LIBRARY OF USEFUL READ-CHARACTER MACROS AND CORRECTABLE-ERROR INTERRUPT SERVICE FUNCTIONS.