Wednesday June 14,1978 FQ+1D.8H.19M.18S. LISP 1633 -HIC- Changes that affect ITS NEWIO: [A] SUSPEND's second arg is now meaningful on ITS [B] CURSORPOS' returned value is now meaningful [C] SACONS added to XTRSYMS for graphics hackers [D] Fixnum has meaning as first arg to VALRET/SUSPEND [E] (STATUS CLI) and (SSTATUS CLI) added to enable/disable CLI interrupts Changes that affect all LISPs: [1] PUSH, POP, and DISPLACE FEXPR's in interpreter [2] SETPLIST returns its second arg [3] (STATUS FASLOAD) returns the file-object of the file currently being loaded [4] One final word on hairy defun [5] New meaningful value of *PURE: SYMBOL (doesn't cons pure SY2) Changes of interest to LISP internals hackers: [!] Internals hackers take note: XPURIFY ------------------------------------------------------------------------------ Changes that affect ITS NEWIO: [A] SUSPEND's second arg is now meaningful on ITS. If the second argument to SUSPEND is given, it is interpreted as a filename in which to pdump the LISP. An indirect symbol-table pointer is dumped (thus saving disk space) and the setting of (SSTATUS FLUSH x) is obeyed. [B] CURSORPOS' returned value is now meaningful. If the value is T, then the operation was sent to the terminal and had some affect (the appropriate ^P code is sent, though ^PC on a printing terminal does not actually clear the 'screen'.). If the value is NIL, then the ^P code was not sent and therefore nothing was done. The current setting of the TTY is looked at and a table internal to LISP is used to determine applicability. [C] The symbol SACONShas been added to XTRSYMS for use by graphics hackers. This change, along with the previous change in GETDDTSYM, obviates the need for graphics users to load symbols. [D] A fixnum as the first argument to VALRET/SUSPEND is interpreted as the value to put in the right half of a .BREAK 16,. [E] (STATUS CLI) and (SSTATUS CLI) have been added to enable/disable CLI interrupts. Unlike before, CLI interrupts are defaultly OFF [(SSTATUS CLI NIL)]. Therefore, people setting CLI-MESSAGE must do an (SSTATUS CLI T) in order to actually recieve the interrupts. Changes that affect all LISPs: [1] PUSH, POP, and DISPLACE in interpreter: FSUBR: (PUSH X L) ==> (SETQ L (CONS X L)) FSUBR: (POP L) ==> (PROG2 () (CAR L) (SETQ L (CDR L))) FSUBR: (POP L X) ==> (PROG2 () (SETQ X (CAR L)) (SETQ L (CDR L))) SUBR: (DISPLACE X Y) ==> (PROGN (RPLACA X (CAR Y)) (RPLACD X (CDR Y)) X) [2] SETPLIST returns its second argument. [3] (STATUS FASLOAD) returns the file-object of the file currently being loaded. [4] The one final word on hairy defun is that the first atom in a DEFUN is ALWAYS interpreted as the function name. Therefore: (DEFUN MACRO FEXPR ...) defines a FEXPR called MACRO, and not vice-versa. [5] New meaningful value of *PURE: SYMBOL. If *PURE contains SYMBOL then everything EXCEPT symbols will be pure-consed. THis was added for use in a new Macsyma loader, and may not be of general use. Changes of interest to LISP internals hackers: [!] Internals hackers take note: XPURIFY has been added as an alternaate entry to the PURIFY routine. If you XPURIFY$G, then the LISP will expect itself to be :PDUMP'ed to LISP;PURQIX nnnn instead of SYS;PURQIO nnnn. This is usefull for creating experimental LISP versions.