Lisp Machine System Release History

This is the release history for the MIT Lisp Machine System software, with annotations of interesting tid-bits. Entries are based on messages sent to BUG-LISPM.

N.B. This is very much incomplete!

DateSystem ReleaseMicrocodeRelease notes
Microcode internal convention changes
06 December 1978 17:29 (EDT)System ?????
08 December 1978 01:11 (EDT)System ?????
EINE soon flushed
EINE flushed
21 April 1979 17:27 (EST)System 5???
25 April 1979 04:41 (EST)System 5.10???
29 May 1979 10:12 (EDT)System 8???
3 June 1979 09:58 (EDT)System 9.1493
12 August 1979 10:48 (EDT)System 17.6???
24 August 1979 01:51 (EDT)System 18555
11 September 1979 23:11 (EDT)System 20579
7 March 1980 23:42 (EDT)System 26.3616
Joystick "mouse"
12 July 1980 02:20 (EDT)System 30.3???
19 July 1980 03:00 (EDT)System 32.1674
29 July 1980 02:23 (EDT)System 32.4???
New Cold-Load Generator
10 August 1980 04:27 (EDT)System 36.2???
18 September 1980 23:30 (EDT)System 43.0???
22 September 1980 03:51 (EDT)System 44.2692
How to use old-style keyboards on Lisp Machines
6 October 1980 00:33 (EDT)System 45.2692
???System 46.??692
???System 72.34774
14 October 1981 15:32 (EDT)System 74793
9 December 1981 13:58 (EST)System 78836
12 February 1982 14:30 (EST)System 79.8849
System 79 and 83 QFASL compatible
???System 79.48841
Microcode numbers have been wrapped around to avoid confusion
???System 83.??104
???System 85.??122
16 June 1982 07:01 (EDT)System 86???SYS86 MSG
9 July 1982 03:03 (EDT)System 86.56???
???System 86.59148
???System 87.??164
???System 88.?????
???System 89.??183
???System 89.??201
???System 91.??204SYS91 MSG
15 March 1983 20:21 (EST)System 93???SYS93 MSG
2 June 1983 06:31 (EDT)System 94239SYS94 MSG
19 September 1983 01:11 (EDT)System 97257SYS97 MSG
???System 98.??306SYS98 MSG
Common Lisp compatible control argument to FORMAT
???System 99.??320

Microcode internal convention changes

MOON@MIT-AI 11/09/78 16:23:12 Re: Microcode internal convention changes
To: (BUG LISPM) at MIT-AI
A-TEM has been replaced with several new specialized A registers.
M-3 has been replaced with M-TEM (which also implies a new A-TEM).
A new M-3 has been introduced, which behaves the same as M-1, M-2, and
M-4.  Nothing uses it yet.

The page-fault/interrupt checking instructions have been changed.
Here are the new ones:
(ILLOP-IF-PAGE-FAULT) - put this where a page fault should not happen
(CHECK-PAGE-READ), (CHECK-PAGE-WRITE) - these are the normal ones to use
(CHECK-PAGE-{READ/WRITE}-NO-INTERRUPT) - used only inside the interrupt handler,
  when PGF-{R/W} retry the cycle, and when you don't want to let the interrupt
  handler bash the map.
(CHECK-PAGE-{READ/WRITE}-SEQUENCE-BREAK) - when you want to allow sequence
  breaks.  This one hasn't been finished yet.

To review, interrupts are hardware signals that are handled entirely
in microcode without swapping in any pages from the disk, without getting
involved with the garbage collector, and without clobbering any registers
except those that page faults clobber.  Sequence breaks are (will be)
macro-code interrupts which result in stack-group switching.
Many comments have been changed to reflect this terminology.

This version of the microcode also has some new stuff for booting.  Type
control-meta-control-meta-rubout to do a "cold boot".
Type control-meta-control-meta-return to do a "warm boot", which is like
a 1@G (doesn't do a disk-restore).

Due to lack of pdp10 time, this microcode has not been debugged yet.  That
hopefully will happen tonight.
    

System ??

DLW@MIT-AI 12/06/78 17:29:01
To: (BUG LISPM) at MIT-AI
A new system has been installed on CADR1.  There are several
important changes everyone should know about.

First, the "WHat package is it in?" message is gone (yay!!).
For normal user files, the system will assume that you want
the USER pacakge.  For files declared in PKGDCL, the system
will remember as before.  For those of you who have your own
packages (if any), you can put the name of the package in which
the file belongs into the file, by using the new "file property
list" scheme, i.e.  -*- Mode: Lisp; Package: Frobboz -*-.
Also, the functions LOAD, FASLOAD, and READFILE will all take
a package or package name as an optional second argument, and
will load the file into that package.  More detailed documentation
is (should be, anyway) forthcoming.

The default EINE environment now has Control-S set up to be
String Search, and Control-R set up to be Reverse String Search.
You use String Search by typing Control-S, the name of the string,
and altmode; there are other winning hairy features which are
in the self-documentation and are the same as those in ITS
^R String Search.

The Meta-. command in EINE will now do command completion on all
names that have been seen in any tags tables read in, and on the
names of any sections of files being edited in section mode.
The "-" character no longer does completion; use Altmode.  Soon
EINE will attempt to automatically find the source file of any
function loaded into the machine; stand by.
    

System ??

MOON@MIT-AI 12/08/78 01:11:37
To: (BUG LISPM) at MIT-AI
I have installed, on CADR1 only, a new microcode and world load with a couple
of new features.  BITBLT exists.  It isn't documented yet, but you can look at the
test routines in MOON;STIPPL >.  Some of these will soon be installed in the system
and the whole thing will be documented.  Facility for the machine to do disk I/O exists;
this is in SYSTEM-INTERNALS and I don't plan to document it.  The routines are LMIO;DISK >,
probably DISK-READ1 and DISK-WRITE1 are all anyone wants to know about at this point.
    

EINE flushed

Date: 30 MAR 1979 0418-EST
From: MOON at MIT-AI (David A. Moon)
Sent-by: MOON0 at MIT-AI
To: INFO-LISPM at MIT-AI

Eine will soon be flushed, being replaced by Zwei.  If you need any help in
switching over, e.g. to convert your init file, contact me or MMcM
    

EINE flushed

Date: 9 APR 1979 1020-EST
From: BEE at MIT-AI (Bruce E. Edwards)
To: INFO-LISPM at MIT-AI

EINE will probably be flushed in the next release of the LM software. Is there anyone
out there using it?
    

System 5

Date: 21 APR 1979 1727-EST
From: RG at MIT-AI (Richard Greenblatt)
To: INFO-LISPM at MIT-AI

  A new cold load (system 5 series) is installed on CADR1 and 2.
It is experimental!  Since a extra Q has been added to the
stack-group representation, please do not recompile any system files
with the earlier systems.
  (some of the) notable changes are:
BASE and IBASE exist file properties.  You can actually assure your
file will be read in with the right radix!!!!  If the properties appear,
a BINDing sort of operation with the scope of the file occurs during
readin, compilation, and operations from ZWEI buffers.
  also an EVALUATOR file property is defined.  If set, it causes
the ZWEI command cntrl-top-e (and similar) to use it instead of EVAL-PRINT.
  If a DEFCLASS is done when the class is already defined, it is a
no-op if the instance variables of the new class would be the same
as the existing class.  This avoids "losing" all the methods on
existing class.  If instance variables have been added or deleted,
the old class becomes "detached" (altho still operational) as before.
    

System 5.10

Date: 25 APR 1979 0441-EST
From: moon at MIT-AI (David A. Moon)
Sent-by: ___040 at MIT-AI
Subject: Screen saving back experimentally
To: INFO-LISPM at MIT-AI

System 5.10 CC, installed on CADR4 only, has screen saving, using the new
multiple-page-at-a-time paging.  Let me know of any problems (I expect
there are some minor ones.)  I wouldn't recommend anyone trying to install
this on other machines as things have to be loaded in the right order (until
a new world load is made.)  si:inhibit-all-screen-blting-flag is the flag
which controls it if you should want to turn it off.
    

System 8

Date: 29 MAY 1979 1012-EDT
From: RG at MIT-AI (Richard Greenblatt)
Subject: series 8 cold load
To: INFO-LISPM at MIT-AI

  the series 8 cold load is making its appearance on
various machines.
--------------------------
[1]  Meters work differently.  **incompatible change**
[2]  LMIO1;XGP is an initial part of the system.  This
     means ESC-Q always available.
[3]  PKG-LOAD, LOAD-FILE-ALIST, and COMPILE-FILE-ALIST
     are available in a form which takes a functional argument.
[4]  The usual accumulation of bug-fixes, etc, installed.
[5]  A tool exists to help track down the source of
     "symbol appears more than once in the cold load" errors.
     Look in LISPM;COLDF if you ever need to use this.
[6]  The initial facility which allows you to augment the microcode
     incrementally is operational.  Brave pioneers (who expect
     to get arrows in the back) should see RG.

[1] Meters  (ie counts of various events maintained by the
microcode) work differently.  They used to be available
as variables, ONE-Q-FORWARDed to A-Memory.
  Problem was, 24 bits wasnt enough.  Carries into the
data-type field happened,  eventually
crashing the system when the GC looked at the corrupted
data.  In the new scheme, the meters are no longer directly
accessible.  Instead there exists (READ-METER <meter-name>)
and (WRITE-METER <meter-name>).  The meter names are the
same as before, but note they are in the SI: package.
Meters are now a full 32 bits, thus, READ-METER can return
a BIGNUM.  MOON;LMETER has been updated to use the new scheme.

[2] YEA.

[3] SI:PKG-LOAD-MAP, SI:LOAD-FILE-ALIST-MAP, and SI:COMPILE-FILE-ALIST-MAP
exist (as of now, they're not in GLOBAL, in the future they will be).
These all take a functional argument in the first argument position,
followed by arguments as in the base form.  Anytime it is decided to "do"
anything (compile or load a file), the functional argument is called,
with arguments indicating what is to be done.  Its arranged so that if
the functional argument is (FUNCTION FUNCALL), the entire effect is exactly
like the base form.
    

System 9.1

Date: 3 June 1979 09:58-EDT
From: David A. Moon <MOON5 at MIT-MC>
Subject: New features
To: info-lispm at MIT-AI

In system 9.1 and microcode 493, which need to be installed together, there are
a few new features:

Peek modes F (file status) and % (microcode meters)

A new choice in the system menu, Split Screen.  You can create any number
of windows of various types, and it will arrange them to fill up the screen
in a reasonable array.  It keeps giving you a menu of window types, and
you click the types you want, Done when you're done, or Quit to flush.

Package prefixes print out better.

It will ask you nicely to log in instead of printing an obnoxious error message.

The keyboard buffer is bigger.  The keyboard buffering mechanism has been
generalized to work for arbitrary input devices, mainly for HIC.
See the file LMIO;UNIBUS.
    

System 17.6

Date: 12 AUG 1979 1048-EDT
From: Moon at MIT-AI (David A. Moon)
Sent-by: ___033 at MIT-AI
Subject: New system installed
To: INFO-LISPM at MIT-AI

System 17.6, which has been installed on all machines except the ones in 902,
should be relatively free of bugs.  Note that there have been some minor
incompatible changes in the window system; if you have window-oriented code
that doesn't work any more, and you can't figure out how to fix it, consult
RMS or me or MMcM.  The main changes involved blinkers.

If you find it necessary to de-install this system on some machine, be certain
to send mail to bug-lispm explaining what was wrong with it.

This system will be installed in 2 or 3 days on the machines in 902 unless
there are complaints.
    

System 18

Date: 23 AUG 1979 0151-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: Incompatible changes coming!
To: INFO-LISPM at MIT-AI

Lisp machine system 18 and microcode 555, which must be used together,
contain some incompatible changes.  Most of these probably only affect
system programs, which have been fixed, but they are being announced in
case any users have programs which would be affected.

This system is installed on CADR1 and CADR6.  It will be installed on
all the other machines in a few days, so if you are going to have trouble
with the new system please find out before then.

The function-calling microcode has been extensively revised.  The ^ and EXPT
functions should now work completely.  However, any user programs (hopefully
there are none) that use the macros in LISPM2;SGDEFS (stack-group and pdl
formats) will need to be at least recompiled and possibly revised.

The way the microcode treats multiple values has been changed as the first
step of making multiple values "work right".  More about this later.   Any
programs that return multiple values should be recompiled; they will still
work in system 18 due to a kludge in the microcode, but they will crash the
system in system 19, because the compiler wasn't really generating the right
code.  Programs that receive multiple values returned by other functions
have no problem.  Use of the MULTIPLE-VALUE-CALL macro, and of crockish code
sequences involving %OPEN-CALL-BLOCK, should no longer be necessary.

The format of the item-list in a menu has been changed.  Consult the
documentation in the front of the file LISPM2;MENU.  If you have a program
that uses menus and uses other than simple a-lists as item lists, you
will need to change.

The :RUBOUT-HANDLER stream operation has been changed.  A new argument has
been added in front of the existing arguments, which is an alist of options.
Normally you want to supply NIL.

The RUBOUT-HANDLER-CONTROL-CHARACTER-HOOK has been flushed.  Presumably
no one is using it.

If you need help converting your programs, and if this message isn't
sufficient help, please consult me.

System 20

MOON5@MIT-MC 11/09/79 23:11:49 Re: New system installation
To: INFO-LISPM at MIT-MC
System 20 is now installed on CADR-3.

If you need to use one of the system 19 bands, you will have to
revert the microcode back from 604 to 579.  When done, please remember
to change it back.  There is a plain system 20 and a Macsyma in system 20;
hopefully someone will make a vision system 20 shortly.

Installing new systems on all of these machines takes a lot of time; I
would like to have users take over some of this burden.  Instructions
on how to do it may be found in the file AI: LMDOC; INSTAL NEWSYS.  The
version numbers of the current microcode and current system may be
found at the front of this file.  There is not yet a newer system wanting
to be installed, but if you are interested you could read the file and
see if it makes sense to you.

However, it is easy to break the machine doing this, so if you want to
be helpful but don't totally understand the instructions, please don't
try to figure it out by experimentation, ask me or another Lisp machine
wizard.  Also, these instructions will not work in system 19; it will
appear to work but the system you get will fail to boot.
    

System 26-3

Date:  7 MAR 1980 2342-EST
From: Moon at MIT-AI (David A. Moon)
Subject: New Lisp machine system release
To: INFO-LISPM at MIT-AI

System 26.3 and microcode 616 are installed on CADR-1 and CADR-6.  This
system has a lot of bugs fixed, and (we may hope) doesn't have more than
its share of new ones.

If you want to help out, follow the instructions in the file AI:LMDOC;INSTAL NEWSYS
and copy this system onto your favorite machine.
    

Joystick "mouse"

Date: 21 MAY 1980 1607-EDT
From: rg at MIT-AI (Richard Greenblatt)
To: INFO-LISPM at MIT-AI

 John Purbrick's force sensitive joystick "mouse" is available
for trial use.   For the time being, it will live in his office,
and anyone who want to try it out can drop by, pick it up, and plug
it in directly in place of the regular mouse.
  This mouse may be particularily suitable for controlling certain
kinds of parameters as opposed to pointing on the screen, altho
it seems to work out fairly well for pointing as well.
  There is some hope that this kind of mouse could eventually
be built directly into the keyboard (as suggested by Carl Hewitt),
and thus be accessible without removing your hands from the keyboard.
    

System 30.3

Date: 12 JUL 1980 0220-EDT
From: MOON at MIT-AI (David A. Moon)
Subject: New system pre-release
To: INFO-LISPM at MIT-AI

System 30.3 has been tentatively installed on CADR-1 for the benefit of those
who want to test their programs.  There are a number of incompatible changes
described later in this message which will necessitate recompilation for
some people and actual program changes for those who are still using functions
of the old window-system.  The 30 series system will be installed on most
machines sometime next week, assuming there aren't too many bugs.

Please do not copy this system to any other machine yet (in fact 30.3 will not
boot on a machine without a color screen, but that will be fixed in 30.4,
hopefully tomorrow.)

Please do not recompile any system programs in worlds older than this,
as that is very likely to cause hidden bugs.

Lisp machine systems 30 and above contain only the "new" window system.
The vestiges of the old window system present in previous systems (with
the "nws" designation) have been removed.  In addition, the GLOBAL
package has been cleaned up.  It is advisable that you recompile your
programs in this system before trying to run them, both because of
symbols having changed packages and because of some other changes
including the value of the #\MOUSE-n-n syntax.  If you need help
in converting please contact HIC, Moon, or MMcM.

There is a new package, TIME.  Some of the date/time functions that were
formerly in the CHAOS package randomly, are now in the TIME package.
They work better and present a more reasonable interface.

The following symbols have been removed from GLOBAL; if you use any of
these in your programs you have a problem and need to convert.  Some of
these symbols are obsolete, a few were misspellings, and some have been
moved into SYSTEM.  A lot of these symbols are used as keywords,
properly requiring a colon prefix, but had been globalized so that old
programs without the colon prefix would work.  Said old programs will
now need to be fixed.

These symbols no longer exist in GLOBAL:

/' /, /; /] /` ACTIVE-WINDOWS CC-LOAD-UCODE-SYMBOLS
COMPLETING-READ-PROMPT-SIMPLE COMPLETING-READ-SIMPLE CONSOLE-IO-PC-PPR
CURRENT-JOB CURRENT-STACK-GROUP DECODE-DEFINITION ED-INITIALIZE
ED-READ-TAG-TABLE ED-REDEFINE-KEYS EDPROP EDT EDVAL EXPOSED-WINDOWS
FILE-COMMAND FILE-COMMAND-BUFFER FILE-COMMAND-CAREFUL FILE-ERROR
FILE-MAPPED-OPEN FILE-PROPERTY-VARIABLES FOR-CADR FORCE-KBD-INPUT
FREEZE-WHO-LINE GET-UNIQUE-ID INHIBIT-AUTOEXPOSE-FLAG
INHIBIT-SCREEN-RESTORATION-FLAG INHIBIT-SCREEN-SAVING-FLAG
INITIAL-STACK-GROUP INTERRUPT KBD-SIMULATED-CLOCK-FCN-LIST
KBD-SUPER-IMAGE-P LOCK-SCREEN-LAYOUT MAKE-TYPEOUT-STREAM MENU-CHOOSE
MENU-CLASS MENU-CREATE MOUSE MULTIPLE-VALUE-PASS-BACK PAINT PC-PPR
PRINT-NAME-CELL-LOCATION PROCESS-FORCED-INPUT
PROCESS-FORCED-INPUT-INDEX PROCESS-INPUT-PROCESS REAL-IO
SCHEDULER-STACK-GROUP SCREEN SELECTED-PROCESS SELECTED-WINDOW
STANDARD-PC-PPR SWITCH-REGISTER TOP-WINDOW TRIVIAL-PROCESS
UNFREEZE-WHO-LINE WHO-LINE-FROZEN WHOSTATE XOR

Also a whole bunch starting with prefixes DRAW-, JOB-, MOUSE-,
PC-PPR-, SCREEN-, and TV-.

These have been moved into the SYSTEM package:

%%HEADER-REST-FIELD %%HEADER-TYPE-FIELD %ARRAY-LEADER-LENGTH
%ERROR-HANDLER-STACK-GROUP %HEADER-TYPE-ARRAY-LEADER
%HEADER-TYPE-BIGNUM %HEADER-TYPE-COMPLEX %HEADER-TYPE-ERROR
%HEADER-TYPE-FEF %HEADER-TYPE-FLONUM %HEADER-TYPE-RATIONAL-BIGNUM
%INITIAL-STACK-GROUP %INITIALLY-DISABLE-TRAPPING ACTIVE-PROCESSES
LENGTH-OF-ATOM-HEAD

Moved into SI:

LOCALLY-KNOWN-DEVICES

These are keywords that were formerly global:

ACTIVATE-P ARG1 ARG2 BINARY BLACK BLINK BLINK-FCN BLINKER-P BLOCK BOTH
BOTTOM BOTTOM-MARGIN CAR-NUM-MODE CAR-SYM-MODE CDR-NUM-MODE
CDR-SYM-MODE CLEAR-INPUT CLEAR-OUTPUT COMPACT-CONS COMPLETE CONFIRM
CONSTRUCTOR DEFAULT-POINTER DEFS DYNAMIC END-LINE-FCN END-SCREEN-FCN
FINISH FOLLOW-P FONT-MAP FONTS FORCE-OUTPUT FORM FRESH-LINE GC
GROUPED-ARRAY HALF-PERIOD HEIGHT IN INCLUDE INTEGRAL-P LEFT LEFT-MARGIN
LINE-IN LINE-OUT LISTEN MORE-FCN MORE-P NAME NOCOMPILE NOCONFIRM NOLOAD
NORELOAD NORMAL OUT PC-PPR PDL PLANE-MASK READ-ONLY READ-POINTER
RECURSIVE REFERENCES REGION-SIZE REGULAR-PDL-AREA REGULAR-PDL-SIZE
RELOAD REPRESENTATION REVERSE-VIDEO-P RIGHT RIGHT-MARGIN ROVING-P SAFE
SELECTIVE SET-PC-PPR SG-AREA SIDEWAYS-P SINGLE SIZE SIZE-MACRO
SPECIAL-PDL-AREA SPECIAL-PDL-SIZE STATIC STRING-OUT STRUCTURE
SWAP-SV-OF-SG-THAT-CALLS-ME SWAP-SV-ON-CALL-OUT TOP TOP-MARGIN UNTYI
UNTYO UNTYO-MARK VISIBILITY VSP WHICH-OPERATIONS WHITE WIDTH WRITE

The following symbols have been added to GLOBAL.  (There may have been
others added since whichever system you are used to using.)
BEEP, INSPECT, %%KBD-HYPER, %%KBD-SUPER,
COND-EVERY, SELECTQ-EVERY, DESTRUCTURING-BIND,
GET-HANDLER-FOR, LOCATE-IN-INSTANCE, SET-IN-INSTANCE, SYMEVAL-IN-INSTANCE,
DEFINE-USER-OPTION-ALIST, DEFINE-USER-OPTION, CHOOSE-USER-OPTIONS,
RESET-USER-OPTIONS, WRITE-USER-OPTIONS,
DEFRESOURCE, WITH-RESOURCE, ALLOCATE-RESOURCE, DEALLOCATE-RESOURCE
    

System 32.1

Date: 19 JUL 1980 0300-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: New system pre-release
To: INFO-LISPM at MIT-AI

System 32.1 and microcode 674 are tentatively released.  Currently
they only exist on CADR-1, but very shortly they will migrate to
CADR's 6 and 2; if no bugs show up I hope that this system can get
installed on all the machines within a week or so.  That will involve
some disruption to users, although you can of course DISK-RESTORE to
an older band if your programs have not yet been converted to the
latest system (but don't expect great amounts of sympathy for bug
reports!)

In addition to the changes in system 30, mainly involving removing the
vestiges of the old window-system, this system includes a relatively
bug-free new window-system and editor.  The garbage collector works
again.  This system includes the micro-compiler (ask RG if you want to
know how to use it.)  There are some new facilities for transferring
bands between machines which are faster and hopefully more reliable.
The microcode primitives for the old window-system have been removed
(TV-DRAW-CHAR, TV-ERASE, etc.); if you call them unfortunately the
machine will crash rather than giving you an error.  There are the usual
large number of small bug fixes.

Any qfasl file compiled in a system before 30 should be recompiled
in this system, because many symbols have been removed from the GLOBAL
package.  The list is at the end of this message; note that this is
the same list as for system 30 except that UNTYI has also been moved
from GLOBAL to USER.  (It was on the list before but it was not actually
moved due to an oversight.)

Please do not recompile any system programs in worlds older than this,
as that is very likely to cause hidden bugs.

There is a new package, TIME.  Some of the date/time functions that were
formerly in the CHAOS package randomly, are now in the TIME package.
They work better and present a more reasonable interface.  Note that
this includes NWATCH-ON and WHAT-DATE which many people call in their
init files.

The roman numeral keys on the new keyboards will only be used as mouse
buttons if the "mode lock" key, located just below them, is latched down.

The following symbols have been removed from GLOBAL; if you use any of
these in your programs you have a problem and need to convert.  Some of
these symbols are obsolete, a few were misspellings, and some have been
moved into SYSTEM.  A lot of these symbols are used as keywords,
properly requiring a colon prefix, but had been globalized so that old
programs without the colon prefix would work.  Said old programs will
now need to be fixed.

These symbols no longer exist in GLOBAL:

/' /, /; /] /` ACTIVE-WINDOWS CC-LOAD-UCODE-SYMBOLS
COMPLETING-READ-PROMPT-SIMPLE COMPLETING-READ-SIMPLE CONSOLE-IO-PC-PPR
CURRENT-JOB CURRENT-STACK-GROUP DECODE-DEFINITION ED-INITIALIZE
ED-READ-TAG-TABLE ED-REDEFINE-KEYS EDPROP EDT EDVAL EXPOSED-WINDOWS
FILE-COMMAND FILE-COMMAND-BUFFER FILE-COMMAND-CAREFUL FILE-ERROR
FILE-MAPPED-OPEN FILE-PROPERTY-VARIABLES FOR-CADR FORCE-KBD-INPUT
FREEZE-WHO-LINE GET-UNIQUE-ID INHIBIT-AUTOEXPOSE-FLAG
INHIBIT-SCREEN-RESTORATION-FLAG INHIBIT-SCREEN-SAVING-FLAG
INITIAL-STACK-GROUP INTERRUPT KBD-SIMULATED-CLOCK-FCN-LIST
KBD-SUPER-IMAGE-P LOCK-SCREEN-LAYOUT MAKE-TYPEOUT-STREAM MENU-CHOOSE
MENU-CLASS MENU-CREATE MOUSE MULTIPLE-VALUE-PASS-BACK PAINT PC-PPR
PRINT-NAME-CELL-LOCATION PROCESS-FORCED-INPUT
PROCESS-FORCED-INPUT-INDEX PROCESS-INPUT-PROCESS REAL-IO
SCHEDULER-STACK-GROUP SCREEN SELECTED-PROCESS SELECTED-WINDOW
STANDARD-PC-PPR SWITCH-REGISTER TOP-WINDOW TRIVIAL-PROCESS
UNFREEZE-WHO-LINE WHO-LINE-FROZEN WHOSTATE XOR

Also a whole bunch starting with prefixes DRAW-, JOB-, MOUSE-,
PC-PPR-, SCREEN-, and TV-.

These have been moved into the SYSTEM package:

%%HEADER-REST-FIELD %%HEADER-TYPE-FIELD %ARRAY-LEADER-LENGTH
%ERROR-HANDLER-STACK-GROUP %HEADER-TYPE-ARRAY-LEADER
%HEADER-TYPE-BIGNUM %HEADER-TYPE-COMPLEX %HEADER-TYPE-ERROR
%HEADER-TYPE-FEF %HEADER-TYPE-FLONUM %HEADER-TYPE-RATIONAL-BIGNUM
%INITIAL-STACK-GROUP %INITIALLY-DISABLE-TRAPPING ACTIVE-PROCESSES
LENGTH-OF-ATOM-HEAD

Moved into SI:

LOCALLY-KNOWN-DEVICES

These are keywords that were formerly global:

ACTIVATE-P ARG1 ARG2 BINARY BLACK BLINK BLINK-FCN BLINKER-P BLOCK BOTH
BOTTOM BOTTOM-MARGIN CAR-NUM-MODE CAR-SYM-MODE CDR-NUM-MODE
CDR-SYM-MODE CLEAR-INPUT CLEAR-OUTPUT COMPACT-CONS COMPLETE CONFIRM
CONSTRUCTOR DEFAULT-POINTER DEFS DYNAMIC END-LINE-FCN END-SCREEN-FCN
FINISH FOLLOW-P FONT-MAP FONTS FORCE-OUTPUT FORM FRESH-LINE GC
GROUPED-ARRAY HALF-PERIOD HEIGHT IN INCLUDE INTEGRAL-P LEFT LEFT-MARGIN
LINE-IN LINE-OUT LISTEN MORE-FCN MORE-P NAME NOCOMPILE NOCONFIRM NOLOAD
NORELOAD NORMAL OUT PC-PPR PDL PLANE-MASK READ-ONLY READ-POINTER
RECURSIVE REFERENCES REGION-SIZE REGULAR-PDL-AREA REGULAR-PDL-SIZE
RELOAD REPRESENTATION REVERSE-VIDEO-P RIGHT RIGHT-MARGIN ROVING-P SAFE
SELECTIVE SET-PC-PPR SG-AREA SIDEWAYS-P SINGLE SIZE SIZE-MACRO
SPECIAL-PDL-AREA SPECIAL-PDL-SIZE STATIC STRING-OUT STRUCTURE
SWAP-SV-OF-SG-THAT-CALLS-ME SWAP-SV-ON-CALL-OUT TOP TOP-MARGIN UNTYI
UNTYO UNTYO-MARK VISIBILITY VSP WHICH-OPERATIONS WHITE WIDTH WRITE

The following symbols have been added to GLOBAL.  (There may have been
others added since whichever system you are used to using.)
BEEP, INSPECT, %%KBD-HYPER, %%KBD-SUPER,
COND-EVERY, SELECTQ-EVERY, DESTRUCTURING-BIND,
GET-HANDLER-FOR, LOCATE-IN-INSTANCE, SET-IN-INSTANCE, SYMEVAL-IN-INSTANCE,
DEFINE-USER-OPTION-ALIST, DEFINE-USER-OPTION, CHOOSE-USER-OPTIONS,
RESET-USER-OPTIONS, WRITE-USER-OPTIONS,
DEFRESOURCE, WITH-RESOURCE, ALLOCATE-RESOURCE, DEALLOCATE-RESOURCE
    

System 32.4

Date: 29 JUL 1980 0223-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: Fixes to latest round of bugs
To: (BUG LISPM) at MIT-AI

System 32.4 fixes most of the bugs in 32.2 and especially 32.3.  It probably
even works on a machine that has been powered off.  Currently this system
is only on CADR-6, I'll spread it around tomorrow probably.

You can make a 32.3 into a 32.4 by loading the file AI:MOON;LOAD 32.4 then
doing (LOAD-32.4).  Do not do this to a 32.2!  Answer N to the first two
redefinition questions (SPECIAL, UNSPECIAL) and Y to the third (BEEP).
    

New Cold-Load Generator

Date:  4 AUG 1980 2104-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: New cold-load generator installed
To: (BUG LISPM) at MIT-AI

I have installed a new cold-load generator which runs on the Lisp machine,
and banished the old one to the LISPM1; directory.

To run it, load the file LISPM;COLDPK, do (PKG-LOAD 'COLD), then do
(COLD:MAKE-COLD "band") where band is the name (e.g. "LOD2") of the
band on your local disk on which to build the cold-load.  You will 
be asked to confirm.  When MAKE-COLD comes back, you can DISK-RESTORE
from that band, or make it and the appropriate microcode current and
cold-boot.  Once the fresh cold-load starts up, the procedure with
QLD is the same from then on.

The same system format definitions files, QCOM, QDEFS, and DEFMIC are used
as before.
    

System 36.2

Date: 10 AUG 1980 0427-EDT
From: MOON at MIT-AI (David A. Moon)
To: (BUG LISPM) at MIT-AI

System 36.2 and microcode 683 are installed on CADR's 4, 6, 9, and 12.
If no important bugs show up they should be installed on the remaining
cadrs.
    

System 43.0

Date: 18 SEP 1980 2330-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: System 43.0
To: (BUG LISPM) at MIT-AI

There is a system 43.0 on CADR-6.  Please do not distribute it to any other
machines as there are a number of things broken in it (some of which are my fault).
There will be a replacement world built soon.
    

System 44.2

Date: 22 SEP 1980 0351-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: New system release
To: INFO-LISPM at MIT-AI

System 44.2 with microcode 692 is now the "installed new" system.  It is
currently installed on CADR's 3, 6, and 8, and should migrate to more shortly.

The main changes from system 40.1 of note (besides bug fixes) are:

The process system has been revised.  Processes are now flavor objects and
there are some new scheduler features (I don't know if the new scheduler
features claim to work yet.)

Use of TOPS-20 for file storage is really supposed to work now.

There are floating-point arrays.  The array type symbol is ART-FLOAT.
These are intended to reduce consing when doing floating-point array
computations.  Accessing a floating-point array is actually somewhat slower
than accessing an ART-Q array with flonums in it, but storing a "temporary"
flonum into an ART-FLOAT array does not create a "permanent" flonum that
would later need to be garbage-collected.  All floating-point arithmetic
operations are now 4.5 microseconds (about 20%) faster, due to removal of
some overhead.
    

How to use old-style keyboards on Lisp Machines

Date: 26 SEP 1980 1403-EDT
From: DLW at MIT-AI (Daniel L. Weinreb)
Subject: How to use old-style keyboards on Lisp Machines.
To: INFO-LISPM at MIT-AI

Since some of the Lisp Machines still have old-style keyboards, here is
an explanation of how to type some of the new keys on the old keyboards.

To get:		Type:		What it is:
ABORT		TOP/CALL	Asynchronously THROWs out of all functions
				  running in the current process, and restarts
				  the process from its initial function.
CLEAR-INPUT	CLEAR		Flush unread characters (in the rubout-handler
				  buffer).
CLEAR-SCREEN	FORM		Erase or refresh the selected window.
END		TOP/RETURN	Marks the end of input to some programs.
HELP		TOP/H		Gets help, sometimes...
MACRO		BACKNEXT	Invokes keyboard macros in the Editor
				  and Zmail.
NETWORK		TOP/BREAK	SUPDUP and TELNET escape.
OVER-STRIKE	BS		Overstrike characters.
SYSTEM		TOP/ESC		Select a window of a specified type.
				   Type SYSTEM HELP for help.
TERMINAL	ESC		Various terminal functions.
				   Type TERMINAL HELP for help.

HOLD-OUTPUT (used with TERMINAL) and QUOTE (used by the Inspector)
are not availible on the old keyboards.

More details can be found in the window system documentation written
by Allan Wechsler; this is not published yet but bootleg copies
are floating around.
    

System 44.2

Date:  6 OCT 1980 0033-EDT
From: Moon at MIT-AI (David A. Moon)
Subject: New system release
To: INFO-LISPM at MIT-AI

System 45.2 with microcode 692 is now available.  Currently it is only on CADR-6
but it will migrate to other machines soon.  This system fixes several serious
bugs in 44.3.  Note that system 45.2 does not have ZMAIL in it; a 45.3 with
ZMAIL should come out in a day or two.

The following changes may be of interest:

A new special form, WITH-OPEN-FILE.  This should be used in most cases
rather than calling OPEN, since it arranges for proper cleanup upon
abnormal exit.
	(WITH-OPEN-FILE (var filename options)
		body1
		body2 ... )
evaluates the forms body1, body2, ... with var bound to a stream
which is the result of (OPEN filename options).  The stream is
closed after evaluating the body.  The stream is also closed if
control is thrown out of the body, and in this case if if the file
is being written the partially-written file is deleted.

New hash-table facility available.  Documentation is in a section
of the file AI:LMMAN;FD.CON >.

If you don't know about the WITH-INPUT-FROM-STRING and WITH-OUTPUT-TO-STRING
special forms, documentation may be found in the file AI:LMMAN;FD.STR >.

Some serious bugs in the process system have been fixed.  The most
noticeable was that the Abort key did not run unwind-protects!

The usual large number of small bug fixes, especially to file names,
processes, and typeahead.

The special characters that represent function keys now display with their
new-keyboard names.  The page-separator now displays as <PAGE> rather than
<FORM>.  Typing TERMINAL/HELP will give a better display with documentation
on all the function keys on the new keyboard (even if you're on an old keyboard!).

A couple things have been renamed; probably few people were using them.
The :DRAW-FILLED-IN-CHORD message is now :DRAW-FILLED-IN-SECTOR.
If you added anything to TV:WINDOW-TYPES-ITEM-LIST you should
add it to TV:DEFAULT-WINDOW-TYPES-ITEM-LIST instead; the reason is
that this list can be per-screen and per-frame now.  The :STATUS
message returns a new value, :EXPOSED-IN-SUPERIOR.
    

System 74

Date: 14 October 1981 15:31-EDT
From: Mike McMahon <MMcM at MIT-AI>
Subject: New system release
To: INFO-LISPM at MIT-AI

System 74 is now released to users.  This system comes with microcode 793.
Except for new features it should work with the previous microcode (786)
for the most part.

Systems earlier than 74.21 will not work with lisp machines as file
computers.

Non-special variables now obey lexical scoping in compiled code, if
you use LEXICAL-CLOSURE instead of FUNCTION around your internal
LAMBDA-expressions.  For example,
	(defun foo (a) (lexical-closure (lambda () a)))
returns a function which returns a.
Lexical closures do no consing if used in a downward direction.
They are automatically consed as soon as you try to pass them upward.
At some time in the future, FUNCTION may be changed to do the same
thing.  Note that this would be upward compatible with the previous
behavior of non-special variables.  Also, the interpreter may be
changed to be compatible with the compiler.  This would be an
incompatible change to the interpreter, but would not affect any code
which currently runs properly compiled.

With &KEY, you can now specify the keyword and variable name for a
keyword argument independently.  To do this, use two levels of list
structure for the variable: starting with the list which contains the
name and possibly the initial value, and then replace the name with
another list, containing the keyword followed by the name.
For example: (defun foo (&key ((:x x-variable))
			 &optional ((si:y y-variable) default)) ...)
It is a good idea to change functions to use &KEY, because then
ARGLIST will give complete information on the keywords they accept.

The first argument to BREAK is now optional;  (BREAK)  <=>  (BREAK NIL).
This means that there are two easy ways to write a breakpoint into your
program: (BREAK) gets a read-eval-print loop, and (ERR) gets the error
handler.  (These are the programmatic equivalents of the Break and Meta-Break
keys on the keyboard.)

The C-M-N and C-M-P commands in the error handler will now show you
the incomplete frames for functions whose arguments are still being
accumulated.  What you will see will include some number of
already-computed arguments, plus some number of temporaries on the
stack for microcoded primitives.  The error handler doesn't know how
to sort which are which, yet, but at least you can see them.

A new function ZWEI:AUTO-FILL-IF-APPROPRIATE, analogous to
ZWEI:ELECTRIC-SHIFT-LOCK-IF-APPROPRIATE.  LOGIN-SETQ ZWEI:TEXT-MODE-HOOK
to this in your init file and text without -*-Nofill:T-*- will be in
auto fill mode.

Support has been added for rational numbers.  It will change relatively
soon, so programs should not be made to depend on it yet.

Hosts now have standard representations as instances.  In particular,
the HOST instance variable of a pathname is one.  This change should not
affect any user code.  The variable CHAOS:HOST-ALIST is now gone, since
the host table can handle multiple networks.  SI:PARSE-HOST is the way
to convert a string into a host object, from which you can get the
standard name or nicknames.  (SI:GET-HOST-FROM-ADDRESS num ':CHAOS) is
the way to get a host object from a number.

Files that have not been recompiled in a very long time will need to be
recompiled for this system.  The symptom is that loading them tries to
send a message to an array.

There is a new process-warm-boot-action, si:process-warm-boot-delayed-restart,
and it is now the default instead of si:process-warm-boot-restart.  The
effect is that random processes do not get restarted any more before the
system has finished initializing itself.  Processes needed to initialize the
system, such as the Keyboard and Chaosnet processes, do not use this
warm-boot action.

Some small bugs associated with floating-point numbers have been fixed;
some numerical programs may get different results.  The principal source
of roundoff error in the reader (inaccurate powers of ten) has been corrected;
many more numbers will be read as the best flonum approximation, although
large and small numbers will still have an error of 1 least significant bit
in some cases.  (There are no longer any cases with an error of more than 1
LSB).  A fencepost error in floating-point subtraction has been corrected;
formerly if the subtrahend was exactly equal to 1.0 times the weight of the
last significant bit in the minuend, the answer would be the minuend, which
is incorrect.  (The fact that pdp-10's have the identical bug does not make
it less of a bug.)  The bug in integer division reported a few weeks ago
is also fixed.
    

System 78

Date: 9 December 1981 13:58-EST
From: Mike McMahon <MMcM at MIT-AI>
Subject: New system release (version 78) (270 line message)
To: INFO-LISPM at MIT-AI

System 78 is now released to users.  It has been a long time since an
official release, so this message is rather long.
From now on, system release messages will be divided into two parts, to
make things more pleasant for those of you who don't like reading long
messages.  First, we will list changes that might potentially cause
problems or confuse you when you start using the new system.  Second, we
will list new features or important bug fixes that might help you out.  If
you're a Lisp Machine user, you should read the first section, but you can
safely ignore the second section if you'd rather not be bothered.

  Table of contents:
  Things you should take note of:
 [1] System 78 requires new microcode.
 [2] If the QFASL and source of a file are in different directories, you
     must recompile the file.
 [3] Function specs have changed; FDEFINE, COMPILE, TRACE, et. al. are affected.
 [4] The :CLOSE message to a chaos stream has changed - probably you are not affected.
 [5] The system menu has changed - it is a more powerful superset.
 [6] You may get spurious warnings about redefining functions - recompile.
  Things you may safely ignore:
 [A] Streams have been changed; there is a system of flavors that you can use if you
     want to, though you don't have to.
 [B] OPEN has a new argument syntax (the old one still works).
 [C] WITH-OPEN-STREAM exists.
 [D] There are new high-level functions for using the Chaosnet.
 [E] New :HANDLER function spec.
 [F] SI:PRINT-READABLY controls unreadable forms.
 [G] TV sync prom is used when machine is booted.
 [H] Source files are remembered for all definitions.
 [I] Files with compile-flavor-methods ought to be recompiled if you care a lot
     about efficiency.
 [J] New features in MAKE-SYSTEM.
 [K] Some changes in low-level disk control.
 [L] The scavenger working set size can be controlled.
 [M] The editor tries to give you more information in its display.
 [N] Preparing now for coming new error system.
 [O] The Greek letter convention for the Control/Meta keys is obsolete.

  Things that you should take note of:

[1] System 78 requires microcode 836.  It will fail to cold-boot with the
previous microcode (793).  The system 74 will fail to work with
the new microcode also.  (Ucode versions < 810, 825, 827 and 828 go with system 74,
811, 826, 832 and up are compatible with systems 76, 77, and 78).

[2] In order to interact properly with M-. in the editor, all files whose
QFASL's live in a different directory than the source will need to be
recompiled in system 78 (or in system 75.14 or later).  The present scheme of
guessing the source file pathname based on the truename of the source has
proved too bug-prone, and the correct information is now recorded by the
compiler.

[3] Function specs have been completely reimplemented.  As a side-effect of
this the function spec (FOO BAR) as an abbreviation for (:PROPERTY FOO BAR)
is now accepted only by defining forms such as DEFUN, DEFMACRO, and
DEFSELECT; the full form must be used with the function-manipulating
functions such as FDEFINE, COMPILE, TRACE, etc.  Formerly the short form
worked partially with these functions.  If you get an error message that
something is not a valid function spec, this is probably the reason.

[4] The :CLOSE message to a chaos stream now behaves like the :EOF message
if not given an abort-p argument.  The connection is also freed, so this
need not be done manually.  Note that the CHAOS:STREAM function still
gives bidirectional streams, but in many cases you may only want the
unidirectional flavor (see below for more details).

[5] The system menu has been made more useful; the "Other" command have been
integrated into the menu, as have some useful screen editor commands and
some commands that are like what you can do with the System key.  If you
just pop one up and look at the mouse documentation for each item, it
should be clear what all of the commands mean.  Lacking any better place
to document it, I'll mention here that the function
TV:ADD-TO-SYSTEM-MENU-PROGRAMS-COLUMN should be called by user programs
that want to add themselves to the system menu.

[6] In some obscure cases, you may get undeserved warnings about
redefining system functions when you load old QFASL files into System
77.  For example, if you had a defstruct with the same name as a
system function, and you last compiled the file in certain system
releases, this may happen.  Just recompile the file in System 77 and
the new QFASL file won't produce the warning.

  Things that you may safely ignore:

[A] A major change in this system is a thorough reimplementation of streams.
All old streams will continue to work; however, a system of flavors has
been set up to make it easier for you to write new streams.  All buffered
streams in the system (e.g. files, network, mag tape) are now built out of
these flavors, eliminating much duplicated code and the consequent
inconsistencies and inefficiencies.  This new basis for streams is not yet
documented, but the source code may be found in the file SYS:IO;STREAM
LISP.  The :FINISH message has been changed incompatibly; it now implies a
:FORCE-OUTPUT (which is what it ought to have done all along).  There is a
new message to streams, :STRING-IN, which reads efficiently into an array;
it and :STRING-OUT are the right primitives from which to build most forms
of binary record I/O.  As mentioned above, the :CLOSE message to a Chaosnet
stream is now consistent with all other streams.  A new message to
buffered streams, :READ-INPUT-BUFFER, behaves exactly like
:GET-INPUT-BUFFER but returns the values ARRAY, INDEX, and LIMIT.  This
should be used in all new code instead of :GET-INPUT-BUFFER, which will
be faded out in 1990.
    There has been some inconsistancy in the meaning of the optional
argument to the :ADVANCE-INPUT-BUFFER message to a stream.  In system
78, everything has been changed to assume it is a buffer index.  This
agrees with the documentation.

[B] The OPEN function now accepts keyword arguments in the standard fashion,
after a required first argument which is the pathname of the file to be
opened.  The keywords will be documented shortly.  For backwards
compatibility, if OPEN is given only two arguments the second argument
is an option or list of options from the old set of Maclisp-compatible
OPEN options.  Naturally WITH-OPEN-FILE takes keywords the new way, just
as OPEN does.

[C] There is a new special form, WITH-OPEN-STREAM, which is completely
analogous to WITH-OPEN-FILE except that you specify a form whose value
is the stream, rather than arguments to OPEN.  This is used with
non-file streams.

[D] The preferred way of interacting with the chaosnet at the highest level
is now via two new functions, CHAOS:OPEN-STREAM and CHAOS:MAKE-STREAM.
CHAOS:OPEN-STREAM takes a host, contact name, and set of keyword options
and returns an open stream to that host.  CHAOS:MAKE-STREAM takes an
open connection and options and returns a stream.  This is useful when
the connection has been gotten via a CHAOS:LISTEN, for example.
Both functions accept the following keywords:
:DIRECTION - :INPUT, :OUTPUT, or :BIDIRECTIONAL.  Default is :BIDIRECTIONAL.
:CHARACTERS - boolean.  Default is T.
  If non-NIL, ascii rather than binary data is to be sent.

CHAOS:OPEN-STREAM also accepts these keywords relating to the connection itself:
:ERROR - boolean.  Default is T.  A string is returned on an error for :ERROR NIL.
:TIMEOUT - number of 60ths of a second.  Default is 10 seconds.
:WINDOW-SIZE - number.  Default is like CHAOS:CONNECT formerly.

[E] A new function spec (:HANDLER <flavor> <message>) refers to the function
which is evoked when an object of flavor <flavor> is sent the message
<message> (i.e., the element of the FLAVOR-SELECT-METHOD).  This is
distinct from the :METHOD function spec, which refers to the function
defined in flavor <flavor>, and possibly inherited by many other
flavors.

[F] A new variable SI:PRINT-READABLY enables you to specify that what you
are printing is intended to be read with READ again, and should not
contain any unreadable forms.  When SI:PRINT-READABLY is bound to
non-NIL and an attempt is made to print an unreadable object, an error
will be signalled on SI:PRINT-NOT-READABLE.  Anyone who defines their
own :PRINT-SELF messages should be aware of a new macro
SI:PRINTING-RANDOM-OBJECT, which must be used to preserve the
functionality of SI:PRINT-READABLY.  It is documented in the source.

[G] When booted, the system will now always use the TV sync prom if there
is one, unless set-tv-speed was done before the disk-save.  If you do
a set-tv-speed and save out the band, please put something in the label
comment so someone transfering the band to another machine will be aware
of what has been done ("60Hz" is the usual thing to reduce hum on VMI monitors).
This should decrease the incidence of seasickness.

[H] The system now remembers source files for all functions, not just those
named by symbols, and does not get confused by multiple definitions of
different types with the same name (for instance, a function, a variable, a
flavor, a defstruct, and a resource with the same name).  Thus the editor
M-. command is more likely to work now.  The whole function spec and source
file system has been reimplemented, and numerous bugs have been fixed.
flavor-method-symbols (e.g. tv:basic-momentary-menu-after-deexpose-method)
no longer exist; the function spec (e.g. (:method tv:basic-momentary-menu
:after :deexpose) is now used for all purposes formerly served by the
symbol).

[I] Any files containing COMPILE-FLAVOR-METHODS should be recompiled in system
77 (or in system 75.22 or later).  Old qfasl files will still work; however,
the system will regard all combined-methods in them as obsolete and will
generate new ones at load time; thus the COMPILE-FLAVOR-METHODS will be
inutile.

[J] MAKE-SYSTEM will now offer to compile and load a new version of the file
containing the DEFSYSTEM for the system if it has changed.  In fact, a new
function SI:SET-SYSTEM-SOURCE-FILE allows you to specify what file a system
is defined in before that system is loaded at all.  It will then be loaded
the first time MAKE-SYSTEM is done on it.  This might be useful in your
init file, for example.  The argument to this function is the name of the
system, i.e. the symbol that you would give to MAKE-SYSTEM.  Note: since
the system system has strong opinions about file types, this only happens
when the file with the DEFSYSTEM form has a file type of LISP, i.e. an FN2
of > on ITS.  Thus, if you have a file FOO PKG, and want to benefit from
this feature, you should rename it to FOOPKG >.
    The :RECOMPILE keyword to MAKE-SYSTEM is the same now as the :COMPILE and
:RELOAD keywords together.  This should be easier to remember.

[K] The A-MEMORY variable SYS:%DISK-READ-COMPARE-ENABLES has been renamed to
SYS:%DISK-SWITCHES.  Bit 2 in this variable now controls the multiple
page swapout feature.  When a page is swapped out and this bit is on,
the system will look to see if the next higher page in virtual memory is
present in physical memory and also needs to be written on disk.  If so,
it will be appended to the transfer.  Currently the maximum size of
transfer which can be built in this way is set to 20 pages.  The pages in
question are not actually removed from core, but just changed to
READ-WRITE-FIRST status.  If they are later selected for swapout
before they are modified again, a disk write will be saved.  A new
meter, %COUNT-DISK-PAGE-WRITE-APPENDS, records the number of pages
added to transfers in this way.

Bit 3 in SYS:%DISK-SWITCHES now controls the multiple page swapin
feature which exists in microcode version 826 and later.  When a swapin
is called for, the system decides how many pages it would like
to transfer with one disk op.  In system 78, this computation depends the area
of the page being brought in.  SYS:AREA-SWAP-RECOMMENDATIONS is a new
area number indexed area which holds the recommended swap size minus one
per area.  (Ie 0 says just swap the needed page, 1 try to append one page
to that, etc).  The user should not store in SYS:AREA-SWAP-RECOMMENDATIONS
directly, but should use (SI:SET-SWAP-RECOMMENDATIONS-OF-AREA <AREA-NUMBER> <N>)
Currently, 17 is the maximum value of N which should be used.
There is not much experience yet as to what are good values to put in here.
(set-all-swap-recommendations 2) is a good way to turn on the feature
and start seeing what happens.  Exactly what the best initial setting
is will be determined thru experience.   Generally speaking, the more main
memory the machine has, the higher the swap sizes should be.
  There frequently seems to be a rather dramatic improvement in context
switch times (such as entering the editor for the first time, etc.)
Another new meter, %COUNT-DISK-PAGE-READ-APPENDS records
the number of pages added to transfers in this way.

[L] The size of the scavenger working set, formerly fixed at the low value
of 12 pages, may now be set at any time by (SI:SET-SCAVENGER-WS
<value>).  The way that this works is that main memory is divided into
two pools; one pool is only used by the user program, while both the
user and the scavenger contend for the other pool.  The <value> is the
number of pages of main memory (256 words each) in the shared pool.
Setting this value higher than 12 seems to improve the performance of
the GC significantly.  Values of 400 seem to work well for 256K
machines, larger values should probably be used for machines with more
memory.  Please report your experiences setting this parameter, since it
is unclear at this time what the default value should be.
  As part of this change, the meaning of the SI:%SCAVENGER-WS-ENABLE
variable has been changed.  It is now the dividing point in physical
memory between the two pools.  (As a semi-compatibility feature,
however, SI:%SCAVENGER-WS-ENABLE of NIL will still turn off the
scavenger working set feature.)
  The former low value of the scavenger working set parameter may have
accounted for unacceptable garbage collector paging performance in some
applications.

[M] When the editor is reading a command argument from the mini-buffer
and some sort of command or filename completion is present, the blinker
will have a small "c" character inside its box.  Likewise, when a search
string is being read that may contain special search characters (such as
<and> and <or>), a small "s" character appears.  This feature is
experimental.  Your comments on it and especially suggestions for
improving it are welcome.
    The version of the file last read or written is now displayed in
parentheses in the mode line.

[N] A new object oriented error handling and condition system will be
installed in one of the next few major system releases.  The major
change for simple programs is that functions like CHAOS:CONNECT and OPEN
which take a no-error argument and now return a string of the error will
instead return an error instance.  Since we imagine that there are a lot
of these simple programs, and to help ease you into this change, there
is a new global function ERRORP in system 78.  It is the same as
STRINGP.  When the new system is installed, it will be different, but
will still correctly recognize the error return case of the above
mentioned functions.

[O] The old convention of using alpha to mean Control, beta to mean
Meta, and so on, has been declared obsolete.  The use of this convention
in some system help messages has been replaced with the new convention,
namely C-, M-, and so on.  The FORMAT ~C directive has been changed to
use the new convention.  The Greek letters will continue to be accepted
by #/ for compatibility only.  If you see the system trying to type Greek
at you using this convention, tell us and we wil put a stop to it.
    

System 79.8

Date: Friday, 12 February 1982, 14:30-EST
From: David L. Andre <DLA at SCRC-TENEX>
Subject: System 79 release.
To: INFO-LISPM at MIT-AI
Cc: DLA at SCRC-TENEX

System 79.8 is now released to users.  It comes with ZMail 40,
LMFILE-Remote 5, Remote-File 2, and microcode 849.  Copies of system 79
bands are kept on the FileComputer (LM27), and you may get a band from
there at any time, regardless of who is logged in there.

A number of patches before 79.8 take a long time to load.  It will
probably be easier for you to get a band from the FileComputer than to
load those patches, if you already have a system 79 band.

  Table of contents:

  Things you should take note of:
 [1] New Converse subsystem for interactive messages.
 [2] Name changes to some editor commands.
 [3] PROCESS-RUN-FUNCTION and related functions have been changed slightly.
 [4] New function SI:LOAD-AND-SAVE-PATCHES.
 [5] File computers.

  Things you may safely ignore:
 [A] New user option FS:*ALWAYS-MERGE-TYPE-AND-VERSION*
 [B] A bug in %P-STORE-CONTENTS has been fixed.
 [C] Only one process at a time may run in the compiler.
 [D] New subst FILL-POINTER.
 [E] New function ERRORP.
 [F] Error handler now uses ERROR-OUTPUT for its IO.
 [G] PROCESS-RUN-FUNCTION changes.
 [H] New features in resources.
 [I] New :SELECT-METHOD function spec.
 [J] Some functions have moved to new files.
 [K] New hosts are supported as file computers.
 [L] Terminal B buries the selected window.
 [M] New PEEK S mode for information on servers.
 [N] MONITOR-VARIABLE and UNMONITOR-VARIABLE now actually work.
 [O] New functions for use in the interactive error handler (debugger).
 [P] Lambda macros are now supported.

Things that you should take note of: [1] This system includes the new Converse subsystem, for interactive messages between users. (qsend) or System-C will select the Converse window, which should be self-documenting (type the Help key at that window for documentation on the window, the Lisp functions, and the user-option variables). The qsend function with arguments works the same as before, except that if you don't specify a host it will search all Lisp machines on the local Chaosnet for the person to send to; in other words, all Lisp machines whose names the qsend function would accept. [2] The editor command List Multiple Callers has been renamed to Multiple List Callers for consistency (there is a whole family of these; everything with Multiple in its name now has Multiple as the first word.) The editor command List Functions has been renamed to List Definitions. [3] PROCESS-RUN-FUNCTION now does what PROCESS-RUN-TEMPORARY-FUNCTION used to do. This means that the writeup in the manual is now obsolete. PROCESS-RUN-TEMPORARY-FUNCTION is still around, but is obsolete and will go away eventually. More about this in the second section. [4] There is a new function SI:LOAD-AND-SAVE-PATCHES, which is the right thing to use if you want to load patches and save out the band. It loads any patches, and if some were made, it prints the disk label and queries you to find out which partition should be used for the dump. This function may (and should, usually) be called without logging in, so as to avoid putting the contents of your login file into the world load. It is smart about many of the common errors people make when saving bands, and therefore should avoid many of those problems. A related change is that LOAD-PATCHES now returns T if any patches were made, and NIL otherwise. [5] Access to the file computer is now loaded by default. This is the reason for the LMFILE-Remote and Remote-File systems in the herald. Interested parties are referred to LMFS;FSDOC for information on the LM file system, and to LMFILE;DOC for information on the LMFILE file system. Things that you may safely ignore: [A] A new user option FS:*ALWAYS-MERGE-TYPE-AND-VERSION* is available for those who prefer TENEX style pathname defaulting. The default algorithm for merging does NOT take the type and version from the default pathname if a name is specified. For example, on TWENEX, typing "FOO" with the default "BAR.LISP" will give "FOO", NOT "FOO.LISP". There have been some complaints from people who dislike this convention, so with FS:*ALWAYS-MERGE-TYPE-AND-VERSION* set to T, they will get the desired behavior. Most people will not want to use this. [B] A bug in %P-STORE-CONTENTS, causing it to follow invisible pointers, has been fixed. This is mentioned here since it is a low-level change that might conceivably break something. (In fact two functions in the system depended on the buggy behavior and have been fixed; other functions in the system did not work because of the buggy behavior.) [C] Only one process at a time may run the compiler. If a second process tries to enter the compiler while it is busy, a notification will be printed and the second process will wait with who-line state "Compiler". If the first process is not ever going to get out of the compiler (perhaps it is stopped with an error), you must abort it in order for the second process to proceed. This was announced in system 78, but now it really works. [D] The function FILL-POINTER, given an array, returns the fill pointer of the array. This is actually a SUBST, and so you can use SETF with it. [E] New function ERRORP. For now equivalent to STRINGP, for the benefit of the :NOERROR keyword to OPEN and corresponding arguments to DELETEF and related functions. In the new error system, these functions will return error objects rather than strings, and ERRORP will be changed to test whether something is an error object. Start converting your code. [F] The error handler now does its i/o on the stream which is the value of ERROR-OUTPUT, or what it is indirected to if it is a syn stream. It used to use TERMINAL-IO. The default value of ERROR-OUTPUT is syn to TERMINAL-IO, hence this change only makes a difference if you change ERROR-OUTPUT. The error handler bugs where QUERY-IO was bound to the wrong thing are also fixed. This may be changed again, by introducing a new stream ERROR-IO which the error handler uses, and making ERROR-OUTPUT be separately bindable. That has not been done yet, and may be a bad idea. [G] The first argument to PROCESS-RUN-FUNCTION (and the two similar functions) may now be a list of alternating keywords and values rather than a string. The keywords are: :name - a string, default "Anonymous" :restart-after-reset - boolean, default nil => :reset kills process :restart-after-boot - boolean, default nil => warm or cold boot kills :warm-boot-action - same as for make-process, except :flush does what :warm-boot-action nil does, and nil (default) means obey the :restart-after-boot keyword :priority - a number, default 0 which is standard priority :quantum - a number of 60ths of a second, default 60. process-run-restartable-function defaults :restart-after-boot and :restart-after-reset to t rather than nil. Note that the names of processes, like the names of everything else, are strings. It used to work, at least to some extent, to use any Lisp object as the name of a process, and some people have been using symbols. This no longer works, as it happens. A related change is that P in PEEK now shows more information about processes. [H] DEFRESOURCE has been changed to provide some new features and to have better paging performance. The :INITIALIZER is a form or function that sees OBJECT and its parameters as arguments, when OBJECT is about to be allocated (whether it is being reused or was just created); it may initialize the object. The :FREE-LIST-SIZE option allows you to set the size of the array of objects. [I] There is a new function spec (:SELECT-METHOD fcn-spec message). If fcn-spec contains a select-method, then this refers to the function to which the select method dispatches upon receiving <message>. It is an error if fcn-spec doesn't contain a select method, or if the select method doesn't support message. This is now used by DEFSELECT rather than making up new symbols for the functions. This also means that if a DEFSELECT is compiled in system 79, it will not load into an older system. [J] Numerous system functions are in different files now, for various reasons. This should not affect anyone. [K] VMS and Unix file systems are now supported as file servers. NOTE WELL: There are known problems with Unix pathnames with regard to alphabetic case and file-types. These reflect a low-level pathname problem, which cannot be fixed until the next system release. Be forewarned. [L] Terminal B buries the selected window. [M] In PEEK, S now displays information on the active servers. [N] MONITOR-VARIABLE and UNMONITOR-VARIABLE actually work now (they have been in the manual for some time). [O] The error handler now provides functions EH-ARG, EH-LOC, EH-VAL and EH-FUN which you can use for looking at the args, locals, values being returned and function of the current frame. Using SETF and LOCF, you can also modify these things or get their locations. EH-ARG and EH-LOC accept either the number of the arg or local (origin 0) or its name (packages do not matter), and return the value of the arg or local. EH-FUN takes no arg and returns the function this frame is calling. EH-VAL examines the values this frame is going to return, or, for a trap on exit, the values it has already returned. It allows only a number to say which value, since values do not have names. EH-VAL with no argument returns a list of all the values this frame is returning. EH-VAL with no argument cannot be SETF'd or LOCF'd, however. [P] Lambda macros are now supported. Associated functions are DEFFUNCTION, DEFLAMBDA-MACRO, DEFLAMBDA-MACRO-DISPLACE, and LAMBDA-MACRO. Interested parties are referred to LMDOC;LMACRO for more information.

System 79 and 83 QFASL compatible

Date: 15 April 1982 05:15-EST
From: Richard M. Stallman <RMS at MIT-AI>
Subject: System 79 and 83 QFASL files now compatible.
To: INFO-LISPM at MIT-AI

Both system 79 and system 83 have been patched so that files compiled
in either one will load into the other and work; but you must use
microcode 862 with system 79 to be sure of success.

If a file compiled in system 79 is loaded into system 83,
some of system 83's speed advantage in flavors with methods in that file
will be forfeit.  Also, in the unlikely case that you load old
compiled DECLARE-FLAVOR-INSTANCE-VARIABLES functions for a flavor
but do not load any old compiled methods for that flavor, it will
not work automatically.  Contact me if you think this is happening to you.

If a file compiled in system 83 is loaded into system 79,
combined methods produced by COMPILE-FLAVOR-METHODS will be ignored.
This may make your program slower to start up than it used to be,
but will have no other effects.

It is therefore best to compile your files in system 83, so that
they will get the full speed advantage when run in that system.

It should be noted that system 83 has the same compatibility definitions
that system 79 has, for the functions DEFUN-METHOD and INSTANCE-VARIABLE-BOUNDP
needed in brand S systems.  So code that has been changed to work in those
systems will also work in system 83.  QFASL files are not compatible
between 79/83 and 204, however.

I would like to apologize for not mentioning the now eliminated
incompatibility of QFASL files in the system message for system 83.
Sometimes when I know something by heart, I forget that other people
don't know it.
    

System 86

Date: 16 June 1982 07:01-EDT
From: Richard M. Stallman <RMS at MIT-AI>
Subject: System 86 announcement
To: INFO-LISPM at MIT-AI

The announcement for system 86 is finished.
System 86 has no known new bugs now,
and several interesting new features,
including tail recursion as a run-time option.

See LMDOC;SYS86 MSG.
    

System 86.56

Date: 9 July 1982 03:03-EDT
From: Richard M. Stallman <RMS at MIT-AI>
Subject: Several new features in 86.56
To: INFO-LISPM at MIT-AI

*) Default filetype is LISP.

If you specify a name but no type in a pathname, the default (when not
specified explicitly by the program) is now LISP rather than
:UNSPECIFIC.  This change is in the functions FS:MERGE-PATHNAME-DEFAULTS
and FS:MERGE-AND-SET-PATHNAME-DEFAULTS.

Actually, the default is the value of the variable
FS:*NAME-SPECIFIED-TYPE-DEFAULT*, whose value is initially "LISP".
The old behavior is obtained by setting this variable to :UNSPECIFIC.

This change is usually not visible if FS:*ALWAYS-MERGE-TYPE-AND-VERSION*
is non-nil, since then the type defaults from the previously used
pathname even if the name is specified.  However, this new default
may eliminate your motivation for setting that variable.

*) Twenex pathname handling is improved.

The device name DSK is now canonicalized to PS in all Twenex pathnames.
This avoids problems of duplicate pathnames that are different but completely
synonymous.

You can now specify a filetype of :UNSPECIFIC (that is, a null type)
by ending the filename with a period.  This is different from omitting the
type entirely: a specified null type overrides all defaults; an omitted
type is defaulted (to "LISP" or something else).

In other words, "FOO" means "FOO.LISP.0" or some other default, but "FOO."
means "FOO..0".

*) Unix pathname handling is improved.

Case is now completely significant in Unix pathnames, as it ought to be.
You can now rename FOO to Foo and it should work.

*) Compiled functions record macros.

The macros found in a function being compiled are recorded in the debugging
info alist of the compiled function, under the key :MACROS-EXPANDED.
Thus, WHO-CALLS will work on macros if the places they were used were
compiled in 86.56 or later.

*) If you get an error in a background process, and a notification cannot be printed,
you can now type Terminal Call to cause the error handler to be run using the
cold load stream (which is what it would have done in any case before system 86).

Terminal Call's normal meaning is to enter a break loop using the cold load stream.
If there are pending background errors, it asks you about each one, one by one,
whether you want to handle that error.  If you say "N" to all of them,
you get the break loop.

Another useful strategy for handling this circumstance is to type
Terminal Control-Clear-Input, which unlocks the window system locks.
After that, the notification may print; or you may be able to select a window
or do Terminal 0 S.

You can tell there is an error in a background process which cannot
print its notification because stars at the ends of the mouse
documentation line flash.  The text of the line will tell you to try
Terminal Call.

*) SXHASH now accepts a second argument which, if T, says that SXHASH should use
the address of an object as its hash code if there is no other way to handle it.
This applies to everything but numbers, symbols, strings and lists.

In addition, flavor instances and named structures can now define the :SXHASH
operation.  This operation takes one argument, the new flag, and should return
the SXHASH value for the object.  This overrides use of the object's address.

If the second argument is NIL, the SXHASH of an array will now be the array's
active length, rather than zero.

Use a second argument of T if you are not going to save the SXHASH
values in files, and you are prepared to deal with the possibility that
GC will move an object (or you don't intend to use GC).  If you want to
be completely safe, omit the second argument.
    

System 93

15-Mar-83 20:30:21-EST,748;000000000000
Return-path: <rms@MIT-OZ>
Date: Tuesday, 15 March 1983, 20:21-EST
From: Richard M. Stallman <rms@MIT-OZ>
Subject: System 93
To: info-lispm-mit@MIT-OZ

System 93 is now released, and documented in SRC:<L.DOC>SYS93.MSG.
I don't know of any serious bugs.

System 93 is now up on the file computer, so the FC file system is now
accessible from 93, using the FILE protocol.  This means you can get at
it from other machines with CFTP.  Connect to CADR27 and use a filename
that begins with "FC:", assuming that CFTP does not screw you by
thinking it knows the pathname syntax for CADR27.  See SRC:<L.FILE2>DOC.TEXT
for documentation on FC.

FC still responds to its old protocol for the sake of systems before 93
and job devices on ITS.
    

System 94

2-Jun-83 06:33:16-EDT,521;000000000000
Return-path: <rms@MIT-OZ>
Date: Thursday, 2 June 1983, 06:31-EDT
From: Richard M. Stallman <rms@MIT-OZ>
Subject: System 94 released.
To: INFO-LISPM-MIT@MIT-OZ

System 94 is now released, with microcode 239.
Documentation is in SRC:<L.DOC>SYS94.MSG.

User programs should be compatible with system 93.
The main change is a new way notifications are presented to the user.

Please try converting to system 94 as soon as possible.
System 93 is not going to be patched any more
unless there is an urgent need.
    

System 97

19-Sep-83 01:15:58-EDT,817;000000000000
Return-path: <RMS@MIT-OZ>
Date: Monday, 19 September 1983, 01:11-EDT
From: Richard M. Stallman <RMS@MIT-OZ>
Subject: System 97 is now released.
To: info-lispm-mit@MIT-OZ

Documentation for System 97 is in OZ:SRC:<L.DOC>SYS97.MSG.
I have been using system 97 for a month, and it is pretty solid.
Make sure you use a band that uses microcode 257!
Good sources of these are CADR1 and CADR18.

The current version is 97.6.

The most interesting improvements are:

 A new Common-Lisp-compatible package system.

 An improved undo facility,
  the best an editor has ever had.

 Incremental band saving:
  save just the differences between your world
  and the system you loaded, in a small partition.

There are some incompatibilities, mostly due to Common Lisp,
 so make sure you read SYS97.MSG.
    

Common Lisp compatible control argument to FORMAT

13-Feb-84 20:42:18-EST,4173;000000000001
Received: from MIT-MC by MIT-OZ via Chaosnet; 13 Feb 84 20:38-EST
Date: Monday, 13 February 1984, 20:32-EST
From: Richard Mlynarik <Mly at MIT-OZ>
Subject: Coming (System 99) changes to FORMAT in the MIT lisp machine system.
To: info-lispm-mit at MIT-OZ


[See SYS:DOC;SYS98 MSG (oz:ps:<l.doc>sys98.msg at MIT) to see this
message in a technicolor multitude of fonts.]

The control argument to FORMAT will change in System 99 to be compatible
with Common Lisp. There will no longer be separate functions FORMAT and
CLI:FORMAT, as there are in System 98.
This change will affect the following FORMAT directives:

~X      ~width,padchar,commacharX
                Prints its argument in hexadecimal. (Analogous to ~O, ~B and ~D)
        This command used to be used to insert spaces into the output.

        Use ~numberofspaces@T to achieve the same result as the old
                ~numberofspacesX directive.

~F      ~width,decimalplaces,scale,overflowchar,padcharF
                Prints a floating-point number in nonexponential notation.
                Multiplies by 10^scale before printing if scale is specified.
                Prints in width positions, with decimalplaces digits after the
                decimal point.  Pads on left with padchar if necessary.  If the
                number doesn't fit in width positions, and overflowchar is
                specified, this command just fills the width positions with
                that character.
        This directive used to just take one optional prefix control arg, which
                specified how many mantissa digits to print. This is the same
                as 2 + decimalplaces for the new FORMAT.

        Use ~,n+2F to achieve the same result as the old ~nF directive.

~E      ~width,decimalplaces,exponentplaces,scale,overflowchar,padchar,exptcharE
                Prints a floating-point number in exponential notation.
                Prints in width positions, with exponentplaces digits of
                exponent.
                If scale (default is 1) is positive, prints scale digits before
                point, decimalplaces - scale + 1 after.
                If scale is zero, prints decimalplaces digits after the point,
                and a zero before if there's room.
                If scale is negative, prints decimalplaces digits after the
                point, of which the first -scale are zeros.
                If exptchar is specified, it is used to delimit the exponent
                (instead of "e" or whatever.)
                If overflowchar is specified, then if the number doesn't fit in
                the specified width, or if the exponent doesn't fit in
                exponentplaces positions, the field is filled with overflowchar
                instead.
        This directive used to just take one optional prefix control arg, which
                specified how many mantissa digits to print. This is the same
                as 2+decimalplaces for the new FORMAT.

        Use ~,n+2E to achieve the same result as the old ~nE directive.

~G      ~width,decimalplaces,exponentplaces,scale,overflowchar,padchar,exptcharG
               Like ~E, but if the number fits without an exponent, it is
               printed without one.
        This command used to be used to go to a particular argument.

        Use ~argumentnumber@T to achieve the same result as the old
               ~argumentnumberG directive.

Note: in System 98 you must use CLI:FORMAT to use the new Common Lisp style format
directives. GLOBAL:FORMAT will continue to use the old directives.
In System 99 these two functions will become identical, so the best thing is to
update your code to use CLI:FORMAT now so that it will work in both System 98
and in future systems.

Since Brand S have also announced their intention to also change the meaning of
FORMAT directives to agree with Common Lisp at some time in the future, this will
also be compatible change in that respect.

All MIT lispms have a new instruction, CLI:FORMAT
(common-lisp-incompatible-format) Please update your code.

Last modified: 2021/08/24 14:12:33 (UTC) by ams