Lisp Machine System Release 94 Notes

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 94 comes with microcode 239.  An earlier microcode version contained bugs.
All System 94 bands should be updated to use microcode 239.

There are no major changes that affect user programs.  The most important
change is a rearrangement of the macroinstruction destination codes which will
allow several new macroinstructions to be created.  As a result of this change,
QFASL files made by Meta-X Fasl Update in system 94 cannot be loaded into
system 93, nor can any QFASL file made by fasdumping data that includes
compiled functions.

QFASL files produced by QC-FILE in system 94 can be loaded into system 93,
but a few things will work only if all system 93 patches are loaded.

Programming Changes:

    A] ERRORP of a String Is Now NIL.
    B] WITH-TIMEOUT.
    C] Inhibiting SETF and LOCF.
    D] "A or An" String Functions.
    E] FS:BALANCE-DIRECTORIES Improved.
    F] Pathname Creation Changes.
    G] Dangerous Conditions Not Caught.
    H] End-of-File Errors Handled Differently.
    I] Flavor Aliases.
    J] :INVERSE-AROUND Methods.
    K] TV:DESELECT-AND-MAYBE-BURY-WINDOW Takes New Argument.
    L] TAB-WIDTH Argument to :COMPUTE-MOTION and :STRING-LENGTH Operations.


A] ERRORP of a String Is Now NIL.

It used to be T for compatibility with the times before the new error system.

B] WITH-TIMEOUT.

The new special form WITH-TIMEOUT allows you to execute any piece of code
with a timeout.  Do

(WITH-TIMEOUT (timeout timeout-forms...)
  body...)

body is executed with a timeout in effect for timeout 60'ths of a second.  If
body finishes before then, values of the last form in body are returned.
Otherwise, at the end of the timeout, the timeout-forms are evaluated and the
values of the last one of them are returned.  For example,

(WITH-TIMEOUT ((* 60. 60.) (FORMAT QUERY-IO " ... Yes.") T)
  (Y-OR-N-P "Really do it? (Yes automatically after one minute) "))

C] Inhibiting SETF and LOCF.

If you have a macro or subst function that should never be used in a SETF,
you can prevent SETF from working on it by giving the function name
a SETF property of SI:UNSETFABLE, as in

   (DEFUN FOO (A) (AREF A 3))
   (DEFDECL FOO SETF SI:UNSETFABLE)

Normally the system would automatically handle (SETF (FOO X) Y)
by expanding the definition of FOO and using AREF's SETF definition.
The DEFDECL shown prevents that.

SI:UNLOCFABLE is used similarly to forbid LOCF.

D] "A or An" String Functions.

(STRING-SELECT-A-OR-AN word) returns "a" or "an" according to the string
word; whichever one appears to be correct to use before word in English.

(STRING-APPEND-A-OR-AN word) returns the result of prepending "a" or "an" to
word with a space in between.

E] FS:BALANCE-DIRECTORIES Improved.

FS:BALANCE-DIRECTORIES now takes a new keyword argument :DIRECTION
which specifies to transfer files only in one direction between the directories.
The value may be :1->2 meaning transfer only from the first directory to the
second, or :2->1 meaning transfer only from the second to the first.  The
default, NIL, means transfer either way.

F] Pathname Creation Changes.

The :NEW-PATHNAME operation, and all other operations for creating a new
pathname, now replace any invalid component specified with something valid.

The :NEW-DEFAULT-PATHNAME operation is now identical to :NEW-PATHNAME.
The :VALID-NAME, etc, operations no longer exist.  To tell whether the value of
FOO is a valid name (say) component for a pathname on host BAR, you can do

(EQUAL FOO (SEND (SEND BAR-PATHNAME ':NEW-NAME FOO) ':NAME))

G] Dangerous Conditions Not Caught.

ERRSET, CATCH-ERRORS and IGNORE-ERRORS no longer catch "dangerous"
conditions (those for which :DANGEROUS-CONDITION-P returns non-NIL).  These
include errors such as running out of virtual memory.  You can still catch
them with a CONDITION-CASE if you are willing to suffer the dire consequences.

H] End-of-File Errors Handled Differently.

Errors for end of file from operations such as :TYI now signal a condition with
SYS:END-OF-FILE as a condition name, and a standard error message which
includes the stream.  The argument to these operations, which used to be used
as the error messages if it was non-NIL, is now just a boolean flag saying
whether to get an error on end of file.

I] Flavor Aliases.

You can now define one flavor name to be an alias for another.
Do (DEFFLAVOR FOO () (BAR) :ALIAS-FLAVOR) to make FOO an alias for BAR.
Attempting to create an instance of FOO will actually make an instance of BAR.

The main use of this is for changing a flavor's name gracefully.  It has been
used to eliminate various flavors such as TV:COMMAND-MENU-PANE which are now
identical to other existing flavors without requiring user programs to be
changed.

J] :INVERSE-AROUND Methods.

:INVERSE-AROUND methods are a new feature of flavors.  They work like :AROUND
methods but they are nested in the inverse order: those on earlier flavor
components are done inside those on later flavor components.  Thus, you can use
them to bind a special variable to a particular value, and then be able to
override a base flavor's binding with a new :INVERSE-AROUND on a mixin or
combination flavor.

K] TV:DESELECT-AND-MAYBE-BURY-WINDOW Takes New Argument.

TV:DESELECT-AND-MAYBE-BURY-WINDOW now takes two arguments, a window and
an optional deselect-mode.  The latter is passed as an argument to the :DESELECT
operation on the window.  It can specify where to put the window in the list of
previously selected windows used by Terminal and System commands, including
Terminal S.

L] TAB-WIDTH Argument to :COMPUTE-MOTION and :STRING-LENGTH Operations.

These two operations on windows now take the spacing to assume between tab stops
as an additional argument.  The default is to use the spacing that the window
actually uses on output.

Miscellaneous User Interface Changes:

    A] New Way of Presenting Notifications.
    B] No More "Illegal Simultaneous Access".
    C] Password Guessing Improved.
    D] Converse: End Now Stays in Converse, and Control-End exits.
    E] SI:EDIT-DISK-LABEL Improved.
    F] QC-FILE and Microcompilation.
    G] Dumping Microassemblies.
    H] Shifted Mouse Characters.
    I] TV:FULL-SCREEN-HACK-MIXIN Is Back.
    J] Network Break in SUPDUP.
    K] Host Objects Print Readably.
    L] System Menu Layouts Command Records Partially Visible Windows.
    M] DEBUG-IO May Be NIL.
    N] Debugger Command Meta-R.
    O] BREAKON With No Argument.


A] New Way of Presenting Notifications.

When a notification is to be printed (such as, for an incoming QSEND, a window
or background process wanting to do input or output, or garbage collection
activity), what happens depends on the selected window.  Certain flavors of
window will, when selected, allow the notification to be printed on them.  These
include Lisp listeners and the typeout windows of editors.  Other windows, such
as SUPDUP, PEEK, and editors except for short notifications, cannot allow the
notification to be simply printed.

In the past, the latter class of windows handled a notification by presenting a
small pop-up window and printing the notification there.  But this is slow.  In
the hope of making notifications less of a nuisance, a new behavior is installed
for these windows.  The keyboard will beep, and the who-line mouse
documentation line will announces that notifications are waiting.
Blinking asterisks will appear at both ends of the line to attract your attention.
The notifications will keep on waiting until you switch to a window that can print
them directly -- such as a lisp listener -- or until you type  Terminal N.

The new command  Terminal N  is defined to quickly show you your new notifications.
Terminal 1 N will display all the notifications you have received
(like (PRINT-NOTIFICATIONS)) in addition to any pending notifications.

If you would rather not see the notifications now and would like your mouse
documentation line to go back to its usual function, type  Terminal 2 N.
You can still see the notifications when you are ready to see them by typing
Terminal N  at that time.

If the notification is going to urge you to select some window,
the notification will go away if you select the window without printing the notification.
You can do this with Terminal 0 S as you used to.

The variable TV:WAIT-FOR-NOTIFICATIONS-FLAG controls whether the old or new behavior
will occur.  Set this variable to NIL to get the old behavior back.

Please express your opinions on this change.

B] No More "Illegal Simultaneous Access".

The tendency of the Twenex file server to complain "illegal simultaneous
access" if you abort out of opening a file has been circumvented.  It ought not
to happen any more.

C] Password Guessing Improved.

Once a password is recorded for one host, if you connect to a file server on
another host the system will guess that your password on the second host is the
same as on the first.

As before, the first time you connect to a host your user-id (or the part of it
after the last period) will be used as the guess for the password.

D] Converse: End Now Stays in Converse, and Control-End exits.

The meanings of End and Control-End in Converse have been interchanged.
End now sends the message and stays in Converse, while Control-End sends
it and exits.

The idea is that if you want to exit and you type End and it fails to exit,
you can exit painlessly by typing Abort, whereas the old way if you typed
End by habit and you wanted to stay in Converse it was a hassle to switch
back there.

E] SI:EDIT-DISK-LABEL Improved.

This function now prompts for commands so you can tell whether
you are inside it or not.

The new Control-D command describes a partition.

If you try to exit without saving your changes, you will be asked
whether to save them.

F] QC-FILE and Microcompilation.

The way to say in a source file that function FOO should be microcompiled is
now

    (DEFDECL FOO COMPILER:MICROCOMPILE T)

G] Dumping Microassemblies.

Once you have used UA:ADD-ASSEMBLY to assemble an incremental microcode
module, you can now save it in a file with UA:DUMP-MODULE.  Normally you
need only give it one argument, the output file name.  The result is a QFASL
file which saves the result of the microassembly.  Just loading the file is
equivalent to calling UA:ADD-ASSEMBLY again, but is much faster.

Remember that the microcode module is not available for use unless you call
UA:LOAD-MODULE.  This is true whether the module was created by
UA:ADD-ASSEMBLY or by loading a file made by UA:DUMP-MODULE.

H] Shifted Mouse Characters.

"Mouse" characters inserted in input buffers by TV:KBD-MOUSE-BUTTONS-MIXIN
and appearing in the lists inserted by TV:LIST-MOUSE-BUTTONS-MIXIN now contain
information on the state of the four main shift keys on the keyboard.  The
%%KBD-HYPER, %%KBD-SUPER, %%KBD-META and %%KBD-CONTROL fields of the
character code are now 1 if either one of the corresponding shift keys is pressed
down.  The new function TV:MERGE-SHIFT-KEYS is used to create the character
code with correct values for those bits.

This is completely independent of the TV:*MOUSE-INCREMENTING-KEYSTATES*
feature whereby some of the same shift keys (or other keys) can act like
an extra click.

I] TV:FULL-SCREEN-HACK-MIXIN Is Back.

In earlier systems, some commonly-used windows did not have borders when they
filled the whole screen.  This was changed in system 93 because most people
prefer the borders.  But some people prefer no borders.  Now you can turn
them on and off at run time.

The function TV:FLUSH-FULL-SCREEN-BORDERS turns borders on or off.
It takes one argument, NIL to turn borders on and T to turn them off (flush them).
The function applies to existing windows as well as those yet to be created,
but only windows that fill the whole screen.

To be affected, a window must have TV:FULL-SCREEN-HACK-MIXIN in its flavor.
Various system flavors, such as Lisp listeners, peek frames, inspectors, and SUPDUP,
use the mixin.

J] Network Break in SUPDUP.

You can now use Network Break instead of Network B to get a break loop
inside SUPDUP.

K] Host Objects Print Readably.

They look like #FS:TOPS20-CHAOS-HOST "MIT-OZ", etc.

L] System Menu Layouts Command Records Partially Visible Windows.

The Layouts command in the system menu now records the ordering of
all the active windows when you save a layout, and puts them back into
that order when you restore the layout.  As a result, this command is
now useful for recording a setup of overlapping windows which you
wish to switch between.

M] DEBUG-IO May Be NIL.

It is now legitimate for DEBUG-IO to be NIL.  This tells the debugger to use the
value of TERMINAL-IO.  If you give DEBUG-IO a nonstandard value and then wish
to change it back to normal, setting it to NIL is an easier way.

N] Debugger Command Meta-R.

The debugger has a new command, Meta-R.  It reinvokes the current frame's
function, like C-M-R, but allows you to replace the arguments or change the
number of arguments.

Meta-R asks you what to do for each argument, one by one.  You can use the
previous value of that argument by typing a Space, or type a new value for the
argument.  To terminate the argument list (once all the required arguments
have been supplied), type End rather than an argument.

O] BREAKON With No Argument.

(BREAKON) returns a list of all functions broken on.

Editor and ZMail Changes:

    A] {TEX} Mode is now TEX Mode.
    B] Control-X Control-F Allows Wildcards.
    C] New Editor Case-Conversion Commands.
    D] ZWEI:*DEFAULT-BASE* Initialized from BASE.
    E] Blinkers in Incremental Search.
    F] DIRED Improvements and Related Things.
    G] ZMail Header Editing Commands in Control-X M.
    H] Preloading ZMAIL.
    I] ZMAIL Commands for Window Configuration While Sending Mail.
    J] Mail Templates.
    K] ZMail Can Reformat Headers.
    L] Moving Messages by Individual Filters.


A] {TEX} Mode is now TEX Mode.

The editor command Meta-X {TEX} Mode has been renamed to
Meta-X TEX MODE, for Emacs compatibility.  Apologies to those of you who try to
enter Text mode by typing m-x tex !

B] Control-X Control-F Allows Wildcards.

You can now use a pathname with wildcards as the argument to the ZMACS
command Control-X Control-F.  This causes each file matching what you specify
to be loaded into an editor buffer.

C] New Editor Case-Conversion Commands.

Meta-X Lisp Uppercase Region and Meta-X Lisp Lowercase Region convert
the Lisp code in the region to the specified case, while not touching comments,
strings and slashified characters.  This is just the thing for taking a file
written in primarily upper case and converting it to primarily lower case,
or vice versa.

D] ZWEI:*DEFAULT-BASE* Initialized from BASE.

The first tie a ZMACS window is exposed in each session, the option
ZWEI:*DEFAULT-BASE* is initialized from the current value of BASE.
So if you set BASE in your init file, ZWEI:*DEFAULT-BASE* will be set also.
If you set ZWEI:*DEFAULT-BASE* to something non-NIL after you log in,
however, that value will not be overridden.

E] Blinkers in Incremental Search.

During an incremental search, the blinkers blink both in the typein window
where the search string is displayed and in the editor window where the buffer
is displayed.

F] DIRED Improvements and Related Things.

DIRED now names its buffers after the directory being edited.  Once you
observe the pattern of naming from the mode line, you will be able to reselect
a particular DIRED buffer without having to do C-X B to figure out its number.

L is now a DIRED command which says to load the file you are pointing at;
the function LOAD is used.

< is now a DIRED command which says to edit the superior directory of
the directory you are editing.  This creates a new DIRED buffer for that directory.

C-Shift-E is now a DIRED command which visits the file you are pointing at,
in the other window.  This is like C-X 4 F but operating on a filename from
the DIRED buffer rather than reading one.

When you use the A command in DIRED to mark files to have a function applied
to them, you can now specify a lambda-expression as the function to be applied.
Previously, a symbol or function spec had to be used.

Meta-X Undelete File undeletes a deleted file.  It works like Meta-X Delete
File.

Meta-X Reap File and Meta-X Clean Directory now offer to expunge at the
end if you have deleted anything.

Meta-X Reap File, Meta-X Clean Directory and the H command in DIRED
now only delete versions that are connected to the most recent version
by consecutive versions.

For example, if there are versions 8, 14, 22, 23, 24 and 25, the versions deleted
or marked for deletion would be 22 and 23.  8 and 14 would be exempted because
of the gap between them and the most recent sequence of versions.

G] ZMail Header Editing Commands in Control-X M.

The ZMail commands for editing headers of outgoing mail are now available
in ZMACS in the Control-X M command for sending mail.

H] Preloading ZMAIL.

"Preloading" ZMAIL means requesting that various files be loaded into ZMAIL
while you work on other things.  You would be able to enter ZMAIL later, after
preloading was finished, and access all the files with no delay.  (If you enter
ZMAIL sooner and try to access one of them, you must wait while it is read, as
usual.)

To do this, simply call ZWEI:PRELOAD-ZMAIL with a list of pathnames or strings
as arguments.  This might be done in your LISPM init file, for example.  The
more hairy calling sequence used by Symbolics systems is also supported, but
the hair is not needed.

I] ZMAIL Commands for Window Configuration While Sending Mail.

The ZMAIL commands you use to switch window configurations while
composing outgoing mail have been changed.

It used to be that C-X 2 went into "two window mode", which had three
windows.  The other commands were similarly misnamed.

Now C-X 3 enters "three window mode", which shows the same three windows
(selected incoming message, headers, and text).  C-X 2 enters "two window
mode", which shows two windows (headers and text).  C-X 1 enters "one
window" mode, which shows the headers and text together in one window
(plus the summary window, if that is normally displayed).

The ZMAIL profile options for window configurations for the Reply
command have new values: :LIKE-MAIL means to use the same configuration
that the Mail comand would use, and :SHOW-ORIGINAL means to display the
original message as well as the headers and text of the reply (three windows).
The default is now :LIKE-MAIL.  The old values of these keywords are still
understood, if they are present in existing ZMAIL init files.

J] Mail Templates.

ZMAIL templates are a means of specifying header fields automatically in
messages you are sending.  Each template you define has a name and
its definition specifies various header fields to initialize.  You can invoke
a template explicitly, and you can also have various default templates
that are invoked automatically in certain circumstances.

A template is defined with ZWEI:DEFINE-MAIL-TEMPLATE, as follows:

(ZWEI:DEFINE-MAIL-TEMPLATE name documentation
  body...)

body is Lisp code which uses convenient functions described below
to modify header fields as you desire.  documentation is a string whose
first line is brief documentation (a complete sentence) and whose entire
text is the full documentation.  The purpose of the documentation is to say
what this template is to be used for.  name is the template's name, a symbol.

An editor command is automatically constructed from the template.
Its name is created by appending "COM-" and name.  The resulting command
is made available through Meta-X when you are composing mail in ZMACS
or ZMAIL, and when you are editing a received message in ZMAIL.
Thus, a template named MORE-INFO would produce a command COM-MORE-INFO
which would be accessed using Meta-X More Info.

These are the functions recommended for use in the body of a template:

ZWEI:ADD-FIELD type contents

   Adds a type field to the header, putting in contents contents.  Existing
type fields are left alone.  type should be a keyword identifying a header field,
such as :CC or :REPLY-TO.  contents should be a string.

ZWEI:DEFAULT-FIELD type contents

   Similar to ADD-FIELD but does nothing if a field of type type already exists
with nonempty contents.

ZWEI:DELETE-FIELD type

   Deletes any field(s) of type type.

ZWEI:FIND-FIELD type

   Returns a buffer pointer to the first type field, or NIL if there are none.
This is for sophisticated alteration of header fields.

ZWEI:ADD-TEXT-START string

   Adds string to the text of the message, at the beginning of the text.

ZWEI:ADD-TEXT-END string

   Adds string to the text of the message, after any existing text.

The arguments to these functions can be calculated in an arbitrary fashion.
Actually, templates are not limited to calling these functions.  They can run
arbitrary Lisp code.  In particular, they can use any of the primitives that
editor commands use.  ZWEI:*INTERVAL* will be bound to an interval
containing the message being operated on.  In addition, if you are replying
to messages or forwarding messages in ZMAIL, the variable ZWEI:*MSGS* will
be bound to a list of those messages (otherwise, it is NIL).  You can therefore
easily examine those messages, such as by using ZWEI:MSG-FITS-FILTER-P on
them to see if they match one of your ZMAIL filters, and make your header
alterations conditional on the answer.

In addition to invoking templates expicitly with Meta-X, you can have
templates that are run automatically when you begin to send a message.  The
ZMAIL options ZWEI:*DEFAULT-FORWARDING-TEMPLATE*,
ZWEI:*DEFAULT-BUG-TEMPLATE*, ZWEI:*DEFAULT-REPLY-TEMPLATE*, and
ZWEI:*DEFAULT-MAIL-TEMPLATE* may have as their values the names of
templates (as specified in the template definitions) to be run automatically
when you start to compose, respectively, a forwarding of other messages, a
bug report, a reply, or anything else.  The variables may also be NIL to
specify that no template is to be invoked; this is the default.  Sending with
ZMACS uses, instead, the variables ZWEI:*DEFAULT-ZMACS-MAIL-TEMPLATE* and
ZWEI:*DEFAULT-ZMACS-BUG-TEMPLATE*.  They too should have as values either
template names or NIL.

Here is an example of a template:

(ZWEI:DEFINE-MAIL-TEMPLATE MORE-INFO 
	"Compose request for more info on a bug."
  (ZWEI:ADD-FIELD ':CC "BUG-LISPM")
  (ZWEI:DEFAULT-FIELD ':SUBJECT "Your bug report.")
  (ZWEI:ADD-TEXT-START "I need more information in order to track
down the bug that you reported."))

K] ZMail Can Reformat Headers.

You can now tell ZMail to reformat headers of messages in Babyl files for
display.  For example, you can easily cause certain boring header fields not to be
shown.

To do this, create a mail template as described above to do the editing you want.
Set the ZMail option *DEFAULT-REFORMATTING-TEMPLATE* to the name of that
template.  The template will be called only once on any given message; from
then on, the Babyl file remembers both the original header and the reformatted
one.

For example, this template would cause Return-path fields not to appear:

(ZWEI:DEFINE-MAIL-TEMPLATE DISCARD-BORING-FIELDS
      "Delete fields I don't like to see displayed."
  (ZWEI:DELETE-FIELD ':RETURN-PATH))

L] Moving Messages by Individual Filters.

In ZMail, Map Over of Move to File now allows you to move each message to a
different mail file, determined from the message itself using the filter--mail-file
associations.  Each message is individually matched against the filters to find the
mail file to move it to; if a message does not match any of the filters that are
associated with mail files, that message is not moved.

To do this, click middle on Move to File after Map Over, or choose
By Individual Filters from the menu from clicking right on Move to File.

Changes in Patches:

    A] Explicit Release of Patches.
    B] LOAD-PATCHES Reloads Site Files When Needed.
    C] MAKE-SYSTEM of a Patchable System Loads Patches.
    D] SI:LOAD-AND-SAVE-PATCHES Queries At The Beginning.


A] Explicit Release of Patches.

It is now possible to finish a patch so that it can be loaded experimentally without
releasing the patch for users in general to load.

To do this, use the command Meta-X Finish Patch Unreleased instead of the
usual Meta-X Finish Patch.

This will finish the patch, compiling it, but mark it in the patch directory as
unreleased.  By default, LOAD-PATCHES requires confirmation before loading an
unreleased patch, and warns the user that doing so is risky.  LOAD-PATCHES in
nonselective mode will not load them at all.  You can load the patch, see that
it works reasonably, fix it if necessary by editing and recompiling the patch
file source, and finally release or cancel the patch.  You release the patch with
Meta-X Release Patch or cancel it with Meta-X Cancel Patch.

Loading an unreleased patch warns the user not to try to save the band, and
sets the status of the patchable system to :INCONSISTENT.  This tells DISK-SAVE
to require extra confirmation after a stern warning.  If you do save such a
band, the disk label will say it is "Bad".  These precautions are because
unreleased patches are still subject to change, and a band dumped with them
might possibly contain invalid patches that differ from the patches ultimately
released.

If :UNRELEASED is passed as an argument to LOAD-PATCHES, it will load
unreleased patches with no special confirmation.  DISK-SAVE will still warn,
however.

B] LOAD-PATCHES Reloads Site Files When Needed.

LOAD-PATCHES now checks whether the site files have changed since they were
last loaded, and loads them if that is appropriate.  This is done by default if you
do not specify which systems to load patches for.  Additionally, you can say to
do this with the argument :SITE and say not to do this with the argument
:NOSITE.

C] MAKE-SYSTEM of a Patchable System Loads Patches.

If you load a patchable system with MAKE-SYSTEM, it automatically loads
patches.  It queries for loading patches if it was querying for loading the
system's files.

D] SI:LOAD-AND-SAVE-PATCHES Queries At The Beginning.

SI:LOAD-AND-SAVE-PATCHES now will ask all the questions it needs to ask before
loading the patches.  Its first argument is now the partition to save into; only
the following arguments are passed to LOAD-PATCHES.  Once it has begin loading
patches, no questions will be asked unless something goes wrong (such as, the
specified partition is not big enough).

This should make it convenient to use this function to update a band when you
are ready to go home, and leave it running when you go.


Last modified: 2021/08/24 14:29:11 (UTC) by ams