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.