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.