;;; -*- Mode:LISP; Package:USER; Base:10; Readtable:Common-Lisp; Patch-File:T -*-
;;; Patch directory for System version 124
;;; Written 7-Jul-88 02:58:00 by keith (Keith Corbett) at site Gigamos Cambridge
;;; while running on Breaking Glass from band 1
;;; with Experimental System 124.128, Experimental Local-File 74.3, Experimental File-Server 23.1, Unix-Interface 12.0, Experimental ZMail 72.1, Experimental Tape 23.6, Experimental Lambda-Diag 16.2, Tiger 28.0, microcode 1761, SDU Boot Tape 3.14, SDU ROM 103, Beta 3 plus patches.

(:EXPERIMENTAL
 ((0 "System Loaded" "pld" NIL)
  (1 "tv:*system-keys* was initialized to a set of windows that supposedly would
always be in the system.  Well, we removed FED, and now System-F gives you
an error.  Several fixes:
  - System-Help won't list known-to-be-absent flavors
  - System-<x> beeps, not bombs, on absent flavors
  - (tv:add-system-key) won't add an entry that is (equal) to
    an existing entry.
  - the various system-keys are now created when the file
    defining the window is loaded." "pld" NIL)
  (2 "Attempt to make band transfers reliable.  Clean up old code.
Remove calls to obsolete machine-dependent functions." "pld" NIL)
  (3 "Change (si:service-disk-partition) to have the keyword arguments
:subset-start and :subset-n-blocks.  Update (si:copy-disk-partition)
(si:compare-disk-partition) and (si:copy-disk-partition-background)
to pass these parameters.  These protocol-independent functions now
have all the features of (si:receive-band), (si:transmit-band) and
(si:compare-band)." "pld" NIL)
  (4 "Do not force user to login to use TCP versions of band transfer,
finger, host time." "pld" NIL)
  (5 "If you do (hostat 'foo) where foo is an unknown host, hostat hangs
forever.  This is because (chaos:poll-hosts) doesn't trouble to
remove hosts with no known Chaos address from its connection list." "pld" NIL)
  (6 "Additional support within ZMacs for Mode:CommonLISP or Mode:Common-LISP.

Now, a file can be read into a buffer with the CommonLISP mode translation, and
the :readtable and :syntax attributes will be preset to CommonLISP values.  This
means that (again, within ZMacs only), these files -- which probably came from a
LISP machine distributed by other companies who shall go nameless -- will get read
in properly.

At this point, the user should still do 'Update Attribute List' manually, 
otherwise s/he will never see the values of the attributes that get set
for CommonLISP mode." "keith" NIL)
  (7 "Performance improvements for TCP Band Transfer:
  - TCP-STREAM provides a :build-more-buffers method for increasing read or
    write buffers after stream is opened.
  - Disk Server calls this
  - Disk User asks for lots of buffers for the direction of I/O
  - No :force-output until the end of a long series of writes
  - TCP-STREAM gives CONNECTION-CLOSED error if :send-output-buffer
    fails, rather than just ignoring it." "pld" NIL)
  (8 "The TCP background process depends on variable *background-wakeup-time*
to tell it that timeouts are armed.  Setting of this is not interlocked.
I noticed a TCP socket that was hung because it had a timeout armed but
the variable was NIL.  Hence, the background process did nothing.
Don't let this happen..." "pld" NIL)
  (9 "FTP User and Server now use lots of buffers for their data connections
for the appropriate direction of I/O." "pld" NIL)
  (10 "When TCP Disk Server was asked to WRITE a partition, it didn't increment
the disk address between disk-writes." "pld" NIL)
  (11 "Create variables tcp:*tcp-stream-whostate* and udp:*udp-stream-whostate*
that you can bind to something more meaningful than \"TCP socket I/O\" or
\"UDP socket I/O\"" "pld" NIL)
  (12 "Make use of new TCP whostate feature in User FTP and FTP-ACCESS." "pld" NIL)
  (13 "Forgot a whostate in FTP-ACCESS.  Also add some protection to ensure
host units get freed if you abort while TCP connections are closing." "pld" NIL)
  (14 "User FTP shouldn't bomb trying to send a QUIT command on a connection
that is already closed." "pld" NIL)
  (15 "If you abort while closing a file, it may be really closed but
remain on the who line." "pld" NIL)
  (16 "Jim O'Dell's suggested change to logical pathname parsing - \".\" parses
like \";\", so logical pathnames support LISPM directory delimiter style
in addition to the standard style.  I.e., \"sys:hardcopy.tiger;\" can be
used instead of \"sys:hardcopy;tiger;\" - whichever is preferred.  This
might make some programs work more easily." "keith" NIL)
  (17 "Certain redisplay degrees caused an error when using variable width
fonts; the reason was a call (in zwei:window-redisplay-dis-line) to an
extinct function in the FED package, fed:font-char-min-raster-width.
Replaced with GLOBAL:FONT-RASTER-WIDTH." "saz" NIL)
  (18 "Certain pieces of FED are used by ZWEI.  Separate those out from FED into
a new sub-system of System: Font-Utilities." "pld" NIL)
  (19 "The Peek File System display now successfully notices when the access
method has changed for a host." "pld" NIL)
  (20 "Changes to File Host access:
  - You can now (send host :set-access flavor) to change the
    file access for that particular host.  If the access method
    is inappropriate, NIL is returned, else the new file access.
  - (fs:reset-file-access) has been extended.  The new calling
    sequence is (fs:reset-file-access &optional hosts flavor)
    Hosts can be a string, symbol, or host object, or a list of
    such items.  If NIL, all hosts are used.  If flavor is
    specified, that access flavor will be used, if appropriate,
    for all the hosts.  If flavor is NIL, the current access
    is reset but no new one is chosen." "pld" NIL)
  (21 "I deleted resource fs:simple-art-16b-buffer from ftp-access because
it was no longer needed in that file -- but server FTP still needs
it.  Restored...." "pld" NIL)
  (22 "Reset Chaosnet before disk-save." "keith" NIL)
  (23 "Give user warning and prescriptive notification when booting as AMNESIA.

To do this well, defined CHAOS:AMNESIA-ADDRESS, the system constant specifying
the Chaos address for an amnesiac system.  Also defined (CHAOS:AMNESIA-P) to return
whether the system is AMNESIA.

Now, when the system determines its own address and host information (e.g., cold-boot),
the user will get a warning notification with suggestions on how to get site information.

  -Keith and PLD" "keith" NIL)
  (24 "FQUERY enhancements:
  - If timeout, say \"<choice> -- timeout\" rather than just \"timeout\"
  - If reading with :tyi (e.g. y-or-n-p), Clear-Screen will clear the
    screen and reprompt." "pld" NIL)
  (25 "In prompting mechanism for FQUERY, modified printing of timeout values
to use TIME:PRINT-INTERVAL-OR-NEVER.  This gives much more intelligible 
intervals; for example, 
  (Automatic default after 1 week 3 days, Y)
instead of
  (Automatic default after 864000 seconds, Y)

This new behavior shows up, of course, in Y-OR-N-P-WITH-TIMEOUT
and friends." "keith" NIL)
  (26 "(fed:font-char-min-raster-width) does, in fact, exist...." "pld" NIL)
  (27 "If you forcibly take the 3com controller with (si:set-processor-owning-ethernet),
you are now warned that unless the former 3com owner is dead, it must do a
(net:configure)." "pld" NIL)
  (28 "The code that was added to (zwei:last-resort-possibility) to deal with
package roots was totally broken...." "wkf" NIL)
  (29 "Peek File System now successfully notices when access type has changed, but didn't
notice when an access with no host-units acquired some host units." "pld" NIL)
  (30 "When you Abort out of Opening a file with FTP-ACCESS, you have to reset the
host unit -- control/data connection can be in weird states." "pld" NIL)
  (31 "In ZMacs, if you find a file which is/was associated with a buffer, it
may have been deleted behind your back.  ZMacs probes to see if the file still exists.

Now ZWEI:FIND-FILE probes properly and gives the user a message;  before,
you could get an error [sending messages to a supposed stream which is
actually NIL returned from OPEN for PROBE]." "keith" NIL)
  (32 "Put (ZWEI:CLEAR-ALL-HISTORIES) onto :gc-system-release initialization list." "pld" NIL)
  (33 "The buffers used by a TCP buffered stream are now a resource." "pld" NIL)
  (34 "Further support for CommonLISP mode file attribute for reader, loader, etc.
Given 'Mode:CommonLISP' or 'Mode:Common-LISP', FS:FILE-EXTRACT-ATTRIBUTE-LIST
now infers 'Readtable:CL'.  Same for 'SYNTAX:CL'.  Note that we don't override
any attribute that is actually listed on the mode line.

If any system code depends on 'Mode:LISP', a file with 'Mode:CommonLISP' will 
be a problem, but I haven't found any such cases.  The readtable really matters
for successful compilation, loading, etc." "keith" NIL)
  (35 "The resource matcher for a TCP:SIMPLE-ART-8B-BUFFER now looks for
array-length = to the specified length, not >=.  TCP really works
best if the buffers are exactly the length of specified MSS..." "pld" NIL)
  (36 "Add a few Imports/Exports to NETWORK package." "pld" NIL)
  (37 "Create parameter fs:*ftp-access-record-history* to control whether
FTP commands are recorded" "pld" NIL)
  (38 "Funny interaction between the process opening a file via FTP-ACCESS and the wholine:
If one is in the process of doing a probe to get the property list when the other
asks for the property list, the second gets a NIL.  Not a problem if the wholine is
second, but can cause an error if the wholine was first.  Add an interlock." "pld" NIL)
  (39 "(cli:read-from-string) didn't handle eof-error-p correctly." "pld" NIL)
  (40 "If you run with fs:*ftp-access-record-history* set to NIL, you can no longer
tell exactly what the Server FTP didn't like about your access request." "pld" NIL)
  (41 "When a :write-data request failed, a tcp-buffered-stream was losing its buffer." "pld" NIL)
  (42 "SUPDUP command <Network> Control-Y to send most recently killed string
through connection used to require you to type <Network Control-Shift-Y" "pld" NIL)
  (43 "Fixes found while examining Server FTP error messages:
  - When connection is refused for a tcp-stream, print the host
    name rather than just a raw address.
  - (open \"tcp-host:167344452.123\") should open host \"167344452\"
    and remote port \"123\".  Didn't parse right for that...
  - (tcp-socket :open) with local-port already in use said
    \"local-port T already in use\" -- backwards arguments to format." "pld" NIL)
  (44 "FTP-ACCESS no longer requires fs:*ftp-access-record-history* to be T
to correctly get the last Server FTP reply." "pld" NIL)
  (45 "(zwei:set-lisp-attributes-from-mode-with-translations) requires its
argument to be a zwei:node, not a zwei:zmacs-buffer." "pld" NIL)
  (46 "Don't force user to login to access imagen for screen dump, etc." "pld" NIL)
  (47 "Certain User FTP commands (pwd, mkdir, rmdir) have official protocol
commands (which are tried first) and older commands that are tried if
the official ones failed.  If the Official ones worked, FTP-ACCESS
thought the command failed." "pld" NIL)
  (48 "Passing an invalid :TEST keyword value to MAKE-HASH-TABLE, as in
(make-hash-table :test \"foo\"), threw you into the error handler, then
again into the error handler with a buggy call to FORMAT." "keith" NIL)
  (49 "Opening a file via FTP-ACCESS with :characters NIL and :byte-size
unspecified set byte-size to 8 instead of 16." "pld" NIL)
  (50 "In the :plist method for fs:ftp-file-stream-mixin, inside the with-lock
check to  see if the wholine got the plist for us." "pld" NIL)
  (51 "When printing buffers or regions from ZWEI, don't print \"-- Done\" in the typeout
window -- put it in the typein window." "pld" NIL)
  (52 "More TCP Whostate changes." "pld" NIL)
  (53 "When you Finish Patch with ZMACS, dpn't tell user not to forget to save
files unless there really are unsaved buffers in ZMACS." "pld" NIL)
  (54 "ZWEI's Tags Search was incorrectly setting (point) -- you could end up with
(point) being a temporary BP, which causes much user agony." "pld" NIL)
  (55 "I don't want the microcode assembler to time out after 60 seconds while I am
typing in a comment.  It is not clear to me why it needs a timeout -- you
should always type in a comment, but I can live with other people's lazy
habits -- just let it wait a lot longer so my comments don't get interrupted." "pld" NIL)
  (56 "It is an error to write to a TCP-BUFFERED-STREAM that is closed." "pld" NIL)
  (57 "si:print-character and format's ~C control option blew up when given
character objects with weird mouse buttons." "pld" NIL)
  (58 "ZWEI command M-X List Tag Tables now also tells you which is currently selected.
The new command M-X Current Tag Table simply prints the name in the typein area." "pld" NIL)
  (59 "Whostates for Time and Finger..." "pld" NIL)
  (60 "Control-C no longer means \"End this message\" to (QSEND) -- it now has its
usual rubout handler interpretation of Yank Input." "pld" NIL)
  (61 "GLOBAL:MAKE-ARRAY now handles :FILL-POINTER T as specified for
CommonLISP, that is, \"if the value T is specified, the length of the
array is used.\"  This should be consistent with the ZetaLISP
documentation, which says that :FILL-POINTER should specify a fixnum.
  [ - Keith, PLD ]" "keith" NIL)
  (62 "QSEND now prompts user more legibly.  PARSE-SINGLE-DEST now parses
unspecified and unfound hosts (i.e., from menu when user moves off
without clicking) into the host \"<undetermined-host>\"." "saz" NIL)
  (63 "(copy-seq <array-with-fill-pointer>) now preserves the fill pointer." "keith" NIL)
  (64 "(array-initialize), which is called by (make-array) did the wrong thing for zero
dimensional arrays." "pld" NIL)
  (65 "(array-in-bounds-p) is supposed to return T IFF the subscripts it is
given are all legal for the array it is given.  It didn't require them
to be integers, and, in fact, blew up if the were non-numeric." "pld" NIL)
  (66 "The SETF methods for the common lisp functions \"bit\" and \"sbit\" assumed that
the arrays were one-dimensional." "pld" NIL)
  (67 "Problems with (adjust-array):
  - NEW-DIMENSIONS was required to be a list
  - It didn't type check that the dimensions were fixnums
  - couldn't handle 0-dimensional arrays (big deal...)" "pld" NIL)
  (68 "Fix up (make-string-input-stream):
  - properly handles the EOF argument to :tyi, :any-tyi, :tyipeek
  - calls stream-default handler to deal with operations it does
    not implement itself." "pld" NIL)
  (69 "FORMAT bugs:
  - ~:@P didn't back up an argument
  - ~0& did a fresh-line" "pld" NIL)
  (70 "Make FORMAT-STRING-STREAM ignore a :beep operation.
Make FQUERY's readline function only call the stream with a :rubout-handler
operation if the stream can handle it." "pld" NIL)
  (71 "Patch 124.63 caused bit arrays created by the reader via #*10101... to have
fill pointers." "pld" NIL)
  (72 "Provide alternate-macro-definitions for PROG1 and PROG2 -- Steele
claims these are macros, although we implement them as functions." "pld" NIL)
  (73 "UDP, UDP-STREAM, UDP-RWHO-SERVER fixes:
  - When a UDP socket is already in use, properly print the port number in the error
  - UDP-STREAM's :read-packet function will optionally return the exact packet it
    received rather than always copying the data
  - UDP Rwho Server uses this feature and no longer throws away a UDP buffer every
    time it receives a packet" "pld" NIL)
  (74 "First: (setq x '(a b c))
Then, `(a ,@x b) --> (a a b c b)
but   `#(a ,@x b) -- error" "pld" NIL)
  (75 "(setf (macro-function <x>) <y>) returned T, not <y>" "pld" NIL)
  (76 "(make-hash-table) with an integer :rehash-threshold and unspecified
:actual-size caused an error." "pld" NIL)
  (77 "You could try to :untyi past the beginning of a string-input-stream" "pld" NIL)
  (78 "(open \"file\" :direction :probe) to a non-Lisp machine using QFILE constructed
a bogus open message.  (open \"file\" :direction nil) worked fine." "pld" NIL)
  (79 "(setf (caaar x) y) was expanding like (setf (caar x) y)" "keith" NIL)
  (80 "Both the Gray Manual and Steele claim that (evenp) and (oddp) gave errors
if their argument was a complex number.  As coded, they instead always
returned NIL, since the software canonicalizes complex numbers with zero
imaginary parts into real numbers." "pld" NIL)
  (81 "Define new setf method for (fill-pointer).  If you wish to reference
the fill-pointer as (array-leader 0), you can store what you want in
it, but if you reference it via (fill-pointer ...) there is now
stricter checking of the new value." "pld" NIL)
  (82 "Yet another implementation of `#(...)" "pld" NIL)
  (83 "Common Lisp defines (unread-char) as returning NIL.  Zetalisp does not define
a return value.  Return NIL..." "pld" NIL)
  (84 "Common Lisp defines the return value of PSETQ to be NIL;  Zetalisp
says it is undefined.  Conform...." "pld" NIL)
  (85 "setf method for (fill-pointer) really wants to check (array-has-leader-p),
not (array-has-fill-pointer-p), otherwise (make array ... :fill-pointer x)
gets an error -- fill pointer initialized to NIL counts as no fill pointer." "pld" NIL)
  (86 "Try to find alternative packages if ZWEI's Meta-X Install Command fails
to find a function definition for the target command in the current package." "saz" NIL)
  (87 "For people who like to modify their readtables...
SET-MACRO-CHARACTER now signals a legible error when passed 
certain kinds of invalid CHAR arguments.  For example, don't
let the caller set syntax for a character with special bits
(font, control, meta, etc.)." "keith" NIL)
  (88 "If you call FORMAT with a synonym-stream for *standard-output*, your Lambda
loops in the microcode, as FORMAT binds *standard-output* to the stream.
Similarly for a synonym-stream to a synonym-stream to *standard-output*, etc.
Cure: create (si:follow-all-syn-streams), which is like (si:follow-syn-stream)
but follows to the end of indirection.  FORMAT now uses this..." "pld" NIL)
  (89 "CHAOS:FINGER-LISPMS (<Terminal>-F) formatting fixes -- the control
string now allots more space for each NAME and TIME argument.  All the
columns now line up nicely, even if a machine has been idle for 10:00 or
more." "saz" NIL)
  (90 "Fixes to (make-array):
  - In error messages, print number of dimensions, array-rank-limit,
    and dimension lists in decimal.
  - Code that purported to restrict arrays with named-structure-symbol
    to being one-dimensional could never work." "pld" NIL)
  (91 "SIgh.  Create ARRAY: package so that QCOPT, with its K-only modifications,
loads successfully.  Completely meaningless to the Lambda..." "pld" NIL)
  (92 "When used on wildcard arguments, Zwei's Meta-X Copy File and Meta-X
Rename File now display the intended from- and to- pathnames during the
request for confirmation." "saz" NIL)
  (93 "For Zwei's Meta-X Finish Patch: \"Release this patch?\" minibuffer query
now parenthetically tells you to:
\"answer N if you are not completely sure that it works\", rather than
\"answer N if you have not completely sure that it works\"." "saz" NIL)
  (94 "ZWEI fixes:
  - correct user visible spelling errors in documentation of a few
    commands.
  - com-install-command nicely dwimifies the package, but wasn't
    remembering the dwimification." "pld" NIL)
  (95 "Fix error compiling a simple variable binding case:

(defun foo1 (x)
  (let ((x x))
    x))" "keith" NIL)
  (96 "Common Lisp compatible error checks in ADJUST-ARRAY:
  - you can't displace an array to itself
  - you can't displace an array to an array which is indirected (to any level)
    to the first array.
  - you can't displace an array to another array of different type.  Note
    that you can still (make-array) displaced across array types, and, in
    fact, this works for various kinds of number arrays.  Fails badly,
    however, if you try to displace an art-q to an art-string." "pld" NIL)
  (97 "When you select a new tag table in ZWEI, retain the old search string
if no tags search had been in progress for that table.  Compatible
with behavior before parallel tags search feature added..." "pld" NIL)
  (98 "Yet more system crash prevention in ADJUST-ARRAY:
  - You can't displace an array that would extend beyond the end of
    the other array.
  - Nicer printing of the array types in type-mismatch message." "pld" NIL)
  (99 "(bit-xxx) functions operate only on arrays of same rank and dimensions" "pld" NIL)
  (100 "Is this the last change to (adjust-array)?  No more bugs from test suite...
Argument checking:
   - If you specify :displaced-index-offset without :displaced-to,
     default the latter to the current indirect array.  Error if none.
   - Generate error if more than one of (:initial-element, :initial-contents,
     :displaced-to) is given." "pld" NIL)
  (101 "Fix problems with behaviour of ZWEI command SET PACKAGE.  
Mostly, improve chances of finding a default package (take from global *PACKAGE*
if Zwei's *DEFAULT-PACKAGE* is NIL, or USER as a last resort which should
never occur).  This solves problem when user hit Return and Zwei offered to
create the NIL package.  (That is strangeness, indeed.) Also rationalize
prompts, error exits, and documentation string, which now says:

  Change the package associated with buffer or file.
  Specify a new package to be used when interning symbols read from this buffer;
  for example, evaluating or compiling parts of the buffer.
  This much does not affect operations on the file itself, only this ZMACS buffer.
  
  To specify a package that doesn't already exist, you must exit the first
  prompt with Control-Return, or type Return twice.  Then you must confirm
  with /\"Yes/\".
  
  If you answer the first prompt with just Return, you will be asked
  whether to use a package chosen by default based on the current
  environment.  Then you must confirm whether to use the default.
  
  You will also be asked whether to change the attribute list in the text.
  If you answer yes, the buffer's first line is modified to say that
  it belongs in the new package.  This will affect all operations on the
  file, once you save the buffer.
  
  Then you will be asked whether to resectionize the buffer.
  If you say yes, all the functions definitions in the buffer
  will be recorded under symbols in the new package.\"" "keith" NIL)
  (102 "Print quantities grammatically in all cases for the following Zwei
commands: Count Occurrences, Count Words, Count Lines, and Count
Characters." "saz" NIL)
  (103 "ZWEI incremental search understands Control-W to append word at cursor
to the search string." "smh" NIL)
  (104 "Fix (TREE-EQUAL x y :test-not 'eql).  Also give error if you
give both :test and :test-not keywords to TREE-EQUAL.

Make same argument check in:
	ASSOC COUNT DELETE DELETE-DUPLICATES FIND
	MISMATCH NINTERSECTION NSET-DIFFERENCE
	NSET-EXCLUSIVE-OR NSUBLIS NSUBST NSUBSTITUTE
	POSITION RASSOC REMOVE REMOVE-DUPLICATES SEARCH
	SUBLIS SUBST SUBSTITUTE 
As it turns out, the only Common Lisp functions that already DID
do this check were:
	ADJOIN INTERSECTION MEMBER SET-DIFFERENCE
	SET-EXCLUSIVE-OR SUBSETP UNION" "pld" NIL)
  (105 "\"(PROCLAIM ...)\" forms now get placed into .QFASL files

MORE GLOBALLY: Top-level PROCLAIM forms now get passed to any compiler
processing function.  So we had to teach ZWEI to deal with PROCLAIM as
it does with SPECIAL, DECLARE, and RANDOM -- by simply EVAL'ing the
top-level form.    -Keith and PLD" "keith" NIL)
  (106 "If (si:maybe-reload-system-declaration) chooses to load the file
with the DEFSYSTEM in it, the message will go to *query-io*
rather than to *standard-output*.  This is consistent with
(load) and (readfile)." "pld" NIL)
  (107 "Fix PUSHNEW, which was mis-optimized under certain (slightly bizarre)
circumstances.  The optimized code was applying the :TEST function to
its arguments in the wrong order; now we call TEST on the ITEM, compared
to the ELEMENT in the PLACE being compared.

This was obviously a problem only for TEST functions which care
about argument order.  For example,


   (let((x '(1 2 3))) (pushnew 4 x :test '<))

returned (1 2 3), not (4 1 2 3).  Check it with ADJOIN or MEMBER.

[ASIDE: In fact, let's implement PUSHNEW purely in terms of ADJOIN, and
so forth. This kind of bug used to exist in other CL sequence functions,
which were also over-hairified.  A comment in the code notes that ADJOIN
should be optimized, not PUSHNEW.  That is, PUSHNEW should be
implemented in terms of ADJOIN.  I agree with all my heart.  The
optimizer is just a potential source of lossage, since 1) ADJOIN is
already highly optimized, and 2) the MEM--- functions being optimized
for are mostly microcoded.  If nobody objects, I will flush
OPTIMIZE-PUSHNEW for release 5.]" "keith" NIL)
  (108 "Miscellaneous improvements - interface, logic, etc. - for ZMacs tag tables.

1. List Tag Tables has spaces between table displays, and doesn't use
typeout window unless there's more than 'Done.'.

2. In some places avoid bad logic if current tag table is not set, but
there's at least one in the table. This was being done variously; define
(ZMACS-CURRENT-TAG-TABLE) to straighten this out.  Use it a few places. 

3. When reading system names from mini-buffer, make C-Sh-Y work (insert
default so user can edit it).  Similar for SELECT-TAG-TABLE.

4. In SELECT-TAG-TABLE, prompt for confirmation if there are no tag
tables read in.  Apparently either most, or all, hosts don't actively
support the tag table file format; so make sure this is what user
wanted, and avoid time-consuming chunking leading to useless messages.
Also, when prompting for tag table, print default." "keith" NIL)
  (109 "Added ZMacs command List-Tag-Buffers.  Displays the associated buffers
for a tag table that have been read in.  Display is mouse-sensitive like
List-All-Buffers.  Also displays the buffer that is the :CURRENT-PATHNAME
in the search path.

To do this, I added a parameter to the utility function TAG-TABLE-BUFFERS, so
that it can pass a DEFAULT-P argument to SELECT-TAG-TABLE.  I used this
so that by default LIST-TAG-BUFFERS asks the user to select a tag table
for the command.  Control-U (or any numeric arg) is an escape hatch;
the currently selected tag table, if there is one, will be displayed." "keith" NIL)
  (110 "Malformed PSETQs generally get caught during expansion of the generated
SETQ form.  One exception: an odd number of arguments turned into things
like (SETQ ... NIL <value> ...) which generated a misleading error.
Now this error is caught during PSETQ expansion." "keith" NIL)
  (111 "More tag table housekeeping and fixes.

Make ZWEI:TAGS-SEARCH-SYSTEM-POSSIBILITY a good citizen with other
tag table launchers. Tag table names in *ZMACS-TAG-TABLE-ALIST*
really, truly have to be strings.  I taught various functions to respect
this.  Now, agreeing to search through the microcode for a function source
won't kill off other tag table utilities." "keith" NIL)
  (112 "3 MISC instructions, INTERNAL-=, INTERNAL-<, and INTERNAL-> ended up in
the si: package, not the system: package.  Thus, compiler:internal-xxx
were entirely different symbols.  They still ended up being optimized
into the appropriate MISC instructions EXCEPT when a multiple-value
call was required, which actually generated a function call to
compiler:internal-xxx -- which was not fdefined.

Cure: perform package hackery to make sure the right symbols are in
the right packages.  Next cold load, they WILL be in the system:
package to start with." "pld" NIL)
  (113 "Problems with calls to DEFF in the cold load file QFCTNS.  Many, but
not all, DEFF calls referred to the load-time function binding of the
true function argument.

Example: (DEFF SAMEPNAMEP #'STRING=)

Some of them were severe bugs, in that the actual functions were not
defined at the time of the cold load of QFCTNS.  (That is, the
troublesome calls were forward references.) This means you get a bogus
error FUNCALLing them. Even the \"working\" references were buggy,
because redefining the actual function would not affect the synonym.

Solution: change all DEFF calls in QFCTNS to use (QUOTE symbol), not
(FUNCTION symbol).  We will have to investigate other system files for
this problem.

Also, updated DEFF's documentation to warn against using a function as
the argument rather than a symbol." "keith" NIL)
  (114 "Fix up ZWEI mini-buffer default strings.  C-Sh-Y gives a
user-meaningful message if there is no default.  Tags Search and Set
Package have meaningful defaults.  The generalized interface
READ-FUNCTION-NAME-OR-STRING respects the externally bound default." "keith" NIL)
  (115 "DISK-SAVE now turns off GC after completing before-cold-initializations.
Also print more meaningful messages, e.g. to let user know \"shut-down\"
procedure is running." "keith" NIL)
  (116 "(si:system-source-files) returns the list of source files in a system and
its component subsystems.  Currently, it goes through the subsystems in
REVERSE order.  Looking at current callers of this function, there is no
reason why it should do this.  A human, calling ZWEI's \"Find System Files\",
for example, would prefer the subsystems in normal order.  Fix it." "pld" NIL)
  (117 "Bug in (make-broadcast-stream):  If you send a broadcast stream a
:send-if-handles <xx> operation, each stream receives a
:send-if-handles :send-if-handles <xx> message." "pld" NIL)
  (118 "FQUERY fixes.  Aside from various logic improvements:

1. <Help> now works with :TYPE :READLINE option.

2. :ANY choice is handled better in prompt and help string. FQUERY will
display \"anything, Y, or N\" when :ANY is the first or intermediate
choice. You see \"F, Z, or anything else\" when :ANY is last.


3. You can specify :ANY for the entire choice-list, which is just like
(:ANY) -- only one choice, \"type anything\".

  --Keith + PLD" "keith" NIL)
  (119 "The handling of numeric arguments in Zwei's COM-SET-POP-MARK (ZMacs'
Control-Space) was incorrectly coded.  Now it works as advertised." "keith" NIL)
  (120 "Zwei's List-Tag-Table-Buffers now prints the search string context, if
any, for the tag table.  Carefully calculate buffer name string length
and search string length to display! Misc. other logical and cosmetic
improvements." "keith" NIL)
  (121 "ZWEI commands that make a tag table \"current\" (the one to do subsequent
searches in) call a function MAKE-TAG-TABLE-CURRENT to do so.  When
there is a current search context for the new current tag table, this
function will select the buffer and move to the point of the search
context (where the search left off before).

Now, before selecting a buffer and moving there, push the previous point
on the point-pdl so the user can go back, e.g. with Control-Meta-Space." "keith" NIL)
  (122 "For CL defstructs of (:type vector) that generate the so-called type
PHONY-VECTOR structure, the type predicate was expanding into something
that blew up calling ZEROP with two arguments.  Simple fix to the
DEFSUBST.  -Keith" "keith" NIL)
  (123 "In MAKE-ARRAY and ARRAY-SIZE-IF-MADE: Fix logic dealing with
NAMED-STRUCTURE-SYMBOL in combination with LEADER-LENGTH and
N-DIMENSIONS.  The restriction should be stated (and coded!) as:

 \"Named-structure arrays without leaders must be one-dimensional.\"

You now get that error if and only for something like:

  (make-array '(2 2) :named-structure-symbol 'FOO)

...whereas the following is acceptable (and failed before):

  (make-array '(2 2) :named-structure-symbol T)" "keith" NIL)
  (124 "Fix ZWEI:DOCUMENT-KEY so command function names print on normal output streams." "keith" NIL)
  (125 "Prefixing ZMacs' Tags Search with an augmented numeric argument (e.g.
Control-U) now causes the \"new\" search to resume at the \"old\" search
point.  This is handy, for example, if Control-. has been redefined by a
different command, and you want to pick up a tags search where you left
off.

This is not a random enhancement I just stuck in after the code freeze -- this
is a crucial facility I need to edit callers and Tags Search at the same time while
I fix problems in system 125." "keith" NIL)
  (126 "TV:WRITE-USER-OPTIONS now writes out :host-or-nil variables as
\"(si:parse-host <value>)\" rather than as #<FS:LISPM-HOST \"MY-HOST\">." "saz" NIL)
  (127 "SI:MAKE-DMA-BUFFER was working by accident.  Discovered as a problem
running TAPE software.

This is the only occurrence in the SYSTEM system I can find that was
making the mistaken assumption that an array's named-structure-symbol
was by default stored in the array leader.  (See the recent patch to
MAKE-ARRAY.)

Solution: wherever you want the NAMED-STRUCTURE-SYMBOL stored in the
array leader, specify a postive :LEADER-LENGTH also." "keith" NIL)
  (128 "By popular demand, Jim's fix to ZMacs' COM-R-DIRED.

The key sequence Control-1 Control-X D should \"show only files with the
same first name as the current file\".  Now that works as advertised. " "keith" NIL)
  (129 NIL "keith" NIL)
  ))