JONL 2/2/73 FINALLY, THE NEW FASL FORMAT IS IN EFFECT, WITH LISP 229CW. IT IS AN EXTENDED FORMAT THAT REMOVES THE DIFFICULTIES SOME USERS HAVE HAD WITH RANDOM EVALUATIONS IN THE FASL FILE REFERENCEING THE FUNCTIONS DEFINED IN THE FILE. ALSO, IT ALLOWS VIRTUAL SYMBOL DEFINITIONS AT LOAD TIME SO THAT THERE WILL BE NO MORE ANNOYING PHASE DIFFERENCES IN ASSEMBLING AND LOADING HAND CODED LAP THE NEW FUNCTION ODDP EXISTS. IT REQUIRES A FIXNUM OR BIGNUM AS INPUT, AND ITS ACTION SHOULD BE SELF EXPLANATORY. MANY LOSERS HAVE FORGOTTEN THE WONDERFUL LSUBR BOOLE: ITS FIRST ARG IS A FIXNUM BETWEEN 0 AND 17 WHICH SELECTS ONE OF THE 16. BOOLEAN FUNCTIONS OF TWO BINARY VARIABLES. THIS FUNCTION IS THEN APPLIED SUCCESSIVELY TO THE 36.-BIT VALUES OF THE REMAINING ARGS. THE SELECTED FUNCTION MAY BEST BE DESCRIBED BY A GENERALIZED EXAMPLE. SUPPOSE THE CALL IS (BOOLE N X Y) AND THE BINARY REPRESENTATION OF N IS ABCD [A,B,C,D ARE ALL BINARY DIGITS] THEN THE TABLE FOR THE FUNCTION CORRESPONDING TO N IS: ! Y ! 0 1 ---------- X 0 ! A C 1 ! B D FROM THIS IT IS EASY TO SEE THAT THE "AND" FUNCTION IS DESIGNATED BY 1, "XOR" BY 6, "OR" BY 7, AND THE COMPLEMENT OF ANY FUNCTION N BY 17-N; THUS "NAND" IS 17-1=16, "EQUIV" IS 17-6=11, AND "NOR" IS 17-7=10 [ALL NUMBERS IN OCTAL]. BY "APPLIED SUCCESSIVELY" IS MEANT THAT (BOOLE N X Y Z) IS THE SAME AS (BOOLE N (BOOLE N X Y) Z). A FIXNUM CORRESPONDING TO THE 36.-BIT RESULT IS RETURNED. TYIPEEK IS NOW LSUBR. IF GIVEN AN NUMERICAL ARGUMENT, IT IS INTERPRETED AS FOLLOWS: A) IF < 200 (OCTAL), THEN SCAN CHARS UNTIL ONE IS INPUT THAT MATCHES THE VALUE OF ARG. THE NEXT TYI OR READ WILL THUS ENCOUNTER THAT CHAR. B) IF > 777, THEN IS CONSIDRED TO BE A SYNTAX CATEGORY LSH'D NINE PLACES, AND SCANNING IS TO STOP WHEN A CHAR IS ENCOUNTERED THAT BELONGS TO THAT CATEGORY. C) IF ARG IS NOT NUMERIC, THEN T MEANS ASSUME A NUMERICAL ARGUMENT THAT WILL CAUSE SCANNING TO THE NEXT CHAR WHICH WILL START OUT A READ. SPLICING MACRO CHARS WILL NOT START OUT A TOP-LEVEL READ, AND ARE EXECUTED MERELY TO GIVE THEM A CHANCE TO HAVE ANY APPROPRIATE SIDE-EFFECTS. SINCE SPACES, CONTROL-CHARACTERS, ETC. WON'T START OUT A READ, THESE ARE SKIPPED OVER UNTIL SOME CHARACTER SUCH AS PARENTHESIS, LETTER, DIGIT, DECIMAL-POINT, ETC. IS FOUND. EXAMPLES: (TYIPEEK 15) SCANS UNTIL CARRIAGE-RETURN IS MET (TYIPEEK 4000_9.) SCANS UNTIL MACRO CHAR IS MET (TYIPEEK) AS BEFORE, SIMPLY TAKES NEXT CHAR NEW USER INTERRUPT CONTROL CHARS AVAILABLE: ^\ ^] ^^ (ASCII VALUES 34 35 AND 36) CORRESPOND TO USER INTERRUPTS 14. 15. AND 16. THERE ARE NO GLOBAL VARIABLES CORRESPONING, SO ONE MUST USE SSTATUS TO SET AND CHANGE THESE INTERRUPTS. COMPLR HAS YET TWO MORE SWITCHES TO PUT IN COMMAND LINES; D IS FOR DISOWNED AND I IS FOR INITIALIZE. SPECIFYING D WILL CAUSE COMPLR TO AUTOMATICALLY DISOWN ITSELF AND COMMIT SUICIDE WHEN COMPILATION IS DONE. THIS SWITCH SHOULD BE USED RATHER THAN ANY OTHER METHOD OF DISOWNING SINCE THIS WAY COMPLR WILL KNOW IT IS DISOWNED AND CAN AVOID CERTAIN TYPES OF HACKERY INVOLVING DDT. WHEN COMPLR IS FIRST LOADED THE DEFAULT VALUES OF ALL SWITCHES IS NIL, EXCEPT TTYNOTES (T) AND UNFASLCOMMENTS (U), WHICH ARE INITIALIZED TO T. MORE CONTROLS FROM THE STATUS FUNCTIONS. (SSTATUS TERPRI T) WILL SUPPRESS THE GENERATION OF CARRIAGE RETURNS BY THE TYO FUNCTION [WHICH ARE NORMALLY PRODUCED WHENEVER THERE IS A RUN OF LINEL OR MORE CHARACTERS WITH OUT A CARRIAGE RETURN]. WHEN BASE = 10., (SSTATUS _ T) WILL PERMIT THE USE OF THE PRINT FORMAT XXX_YY WHEN BASE = 8. [THIS FORMAT IS AN ESPECIAL WIN FOR LAP OUTPUT IN BASE EIGHT, BUT IS PROBABLY NOT ACCEPTABLE TO THE NUMBER THEORY HACKER]. IN EACH CASE, THE SUPPRESSION-SWITCH MAY BE INTERROGATED WITH STATUS. INITIAL VALUES ARE NIL FOR TERPRI, AND T FOR _. ALARMCLOCK TWO TYPES OF ALARMCLOCKS ARE AVAILABLE NOW - REAL ELAPSED TIME, AND CPU RUNTIME USED BY JOB IN QUESTION. FIRST ARG SPECIFIES WHICH TIMER TO USE, AND SECOND ARG SPECIFIES INTERVAL TO WAIT, EXCEPT THAT A NEGATIVE SECOND ARG MEAN SHUT OFF THAT TIMER. FIRST ARG = "RUNTIME" => WAIT FOR ELAPSED RUNTIME IN UNITS OF MICROSECONDS; FIRST ARG = "TIME" => WAIT FOR ELAPSED REALTIME IN UNITS OF SECONDS. SECOND ARG MAY BE EITHER FIXED OR FLOATING POINT. VALUE RETURNED IS T IF A TIMER WAS JUST SET, AND NIL IF IT WAS TURNED OFF. THE ARGUMENT TO SLEEP IS NOW IN SECONDS, [MAY BE EITHER FIXED OR FLOATING]; THE RETURN VALUE OF TIME IS A FLOATING POINT NUMBER MEASURED IN SECONDS. TO OBTAIN THE VALUE OF THE ITS SYSTEM COUNTER [IN UNITS OF 1/30.TH OF A SECOND] DO (FIX (*$ (TIME) 30.0), WHICH WILL BE ACCURATE TO THE NEAREST FOUR WEEKS.