Tuesday April 28,1981 LQ+2D.2H.11M.23S. LISP 2100 / COMPLR 1111 -- JonL -- 1) It now works to place a SFA into the variables TYI and TYO. [more exposition below] 2) YES-OR-NO-P and Y-OR-N-P are two LISPM-compatible LSUBRs, which have been [more exposition below] 3) BUT-TAIL, a new SUBR of 2 arguments, is autoloadable from the file MACAID. [more exposition below] 4) +TYI is a new SUBR of 1 argument, for a super-fast version of TYI. [more exposition below] 5) The feature "BIBOP" has gone away. It is an archaic distinction. 6) (STATUS TTYIFA) and (STATUS TTYOFA) return pointers to the initial, built-in, TTY input file array, and respectively TTY output file array. 7) (INCLUDEF) and (INCLUDE () ) are now no-ops, rather than errors. 8) HERALD, from the MLMAC file, uses the FILE-EXIT-FUNCTIONS facility 9) DEFVST admits two more "options", :CONSTRUCTOR and :NO-SELECTOR-MACROS, and the option-list is parsed the same way as on the LISPM -- [more exposition below] Items affecting only COMPLR C1) A method for individually controlling TTYNOTES information. [more exposition below] C2) New command line switch -- "R" which controls the variable RUNTIME-LIMITP, [more exposition below] C3) Interaction between the switches MACROS and DEFMACRO-FOR-COMPILING: [more exposition below] _______________________________________________________________________ 1) It now works to place a SFA into the variables TYI and TYO. The file QUERIO, when loaded, sets up the variable QUERY-IO to be a "Bi-directional" SFA which can be used as a TTY -- it is normally used by YES-OR-NO-P etc (see note 2 below). Users may use the source code of QUERIO as a guide in writing other SFA's which want to act as filters for the TTY (source on ITS machines is MC:LSPSRC;QUERIO >). 2) YES-OR-NO-P and Y-OR-N-P are two LISPM-compatible LSUBRs, which have been autoloadable for some time now, but which never got documented. See page 163 of the LISPMachine manual. Briefly, they take two optional arguments which are a "stream" onto which to print a "message", and return either T or () depending on whether the user typed the appropriate affirmative response ("Y" in the case of Y-OR-N-P, and "YES<cr>" in the case of YES-OR-NO-P); they insist on either the required affirmative or negative response, and will try again if you type something else. The MacLISP version of these functions permit the "stream" and "message" arguments to be in either order, and YES-OR-NO-P ignores any <space>'s typed. 3) BUT-TAIL, a new SUBR of 2 arguments, is autoloadable from the file MACAID. (BUT-TAIL <list> <tail>) assumes that <tail> is some nthcdr of <list>, and copys the top level of <list> up to the point of <tail>. It is like the LISPM "LDIFF"; 4) +TYI is a new SUBR of 1 argument, for a super-fast version of TYI. Like its counterpart, +TYO, the single argument must be a file-array, a SFA, or the symbol T (which is converted to the value of TYI). Upon reaching End-of-File, +TYI will return -1, but will not close the file, nor run any EOFFN function; if complete EOF action is desired, then one could just use +TYI until it returns -1, and then make one final call with TYI. 8) HERALD, from the MLMAC file, uses the FILE-EXIT-FUNCTIONS facility (see LISP NEWS note of Feb 7,1981) in order to cause the putprop of the VERSION property only when everything is completely and successfully loaded. 9) DEFVST admits two more "options", :CONSTRUCTOR and :NO-SELECTOR-MACROS, and the option-list is parsed the same way as on the LISPM -- Thus, (DEFVST (FOO (:CONSTRUCTOR FLOAT-A-FOO)) ... ) causes FLOAT-A-FOO to be the name of the constructor macro, rather than CONS-A-FOO (or MAKE-FOO). The :NO-SELECTOR-MACROS option causes no macro properties to be output for the selector names; this is preparatory for an interface between DEFSTRUCT and DEFVST. Items affecting only COMPLR C1) A method for individually controlling TTYNOTES information. When compiling using COMPLR, if a symbol has a TTYNOTES-FUNCTION property, then the compiler will call that function, with that symbol as its one argument, instead of printing out on the TTY its usual message "FOO compiled, and assembler" C2) New command line switch -- "R" which controls the variable RUNTIME-LIMITP, initially set to (). If RUNTIME-LIMITP is non-(), then a compilation which "gives up its TTY" (such as by the "D" switch meaning "DISOWN", or such as by having been started from a JCL with no request for TTYNOTEDS) will use the ALARMCLOCK feature to cause a break-loop to occur after RUNTIME-LIMIT microseconds of runtime have elapsed (default initial value of RUNTIME-LIMIT is 6.0e+8, or 10. minutes). As of March 1981, the ALARMCLOCK feature does not work on the TOPS-10/20 versions of MacLISP, but it may soon be implmented for the TOPS-20 one. C3) Interaction between the switches MACROS and DEFMACRO-FOR-COMPILING: Carl Hoffman wants to get the functionaliy of the MacLISP/NIL DEFMACRO into Multics, without having to add any new switches (such as DEFMACRO-FOR-COMPILING etc) to the Multics MacLISP compiler -- as an accommodation to a style of compiler usage whereby the user "pretends" that the switch MACROS is to take over the functionality of DEFMACRO-FOR-COMPILING, I've changed the two occurrences of this latter switch in the DEFMACRO source file into (cond ((boundp 'DEFMACRO-FOR-COMPILING) DEFMACRO-FOR-COMPILING) ((status FEATURE COMPLR) MACROS) ('T)) The normal state in the PDP10 MacLISP world is that DEFMACRO-FOR-COMPILING is set to 'T (even in non-COMPLR lisps), and MACROS is defaultly (); just the opposite case would apparently obtain under Multics, that is DEFMACRO-FOR-COMPILING would be unbound, and MACROS would be T. So, this way, in the PDP10 MacLISP world, if a user has a files of code which don't actually SETQ the switch DEFMACRO-FOR-COMPILING, then he do (MAKUNBOUND 'DEFMACRO-FOR-COMPILING) [possibly in a COMPLR INIT file] and let this switch meaning operate the way CWH will have it do under Multics.