                            Apple IIGS
                          System Software
                           Release Notes
                           Version 5.0.4
                       December 10th, 1990


These release notes list the changes made from version 5.0.2 to 5.0.4 of the
Apple IIGS System Software.  Most of these changes were made for version
5.0.3; changes made from version 5.0.3 to version 5.0.4 are noted with 5.0.4
in the margin. 

Miscellaneous Changes:

The font Times.12 is now also deleted when you run the SCSI Hard Disk
script.  Times.12 is now on System.Tools disk as well as the System.Disk.  Any
script that copies the file Times.12 has been modified to copy it from
/System.Tools/System/Fonts/ instead of /System.Disk/System/Fonts/.

The ACE (Tool029) toolset has been moved from System.Disk to System.Tools. A
new script has been added to install ACE.  Several other scripts have also
been changed to reflect this change in organization.

The installer script SCSI Hard Disk has been modified slightly.  This script
now deletes the font Shaston.16 in additon to the Tutorials folder. 
Shaston.16 is now on the System.Tools disk as well as the System.Disk.  Any
script that copies the file Shaston.16 has been modified to copy it from
/System.Tools/System/Fonts/ instead of /System.Disk/System/Fonts/.

ToolBox Changes:

ToolSets

Window Manager v3.2          Tool014

Defined new bit in TaskMaster (tmNoGetNextEvent, bit 21).  When this bit is 
set, TaskMaster does not call GetNextEvent.  Instead, it uses the data in the 
Event Record portion of the Task Record you pass. 

Menu Manager v3.2            Tool015

Fixed a bug in DeleteMenu.  The handle to the menu that was being removed
was not getting unlocked.

Fixed bug in NewMenuBar2.  When the call was made using resources, the
rMenuBar resource was not getting released properly when done.  If the high
word of the resource ID passed was zero, then the resource was just not
released.  Having a nonzero high word used to cause a fatal error.

Control Manager v3.2         Tool016

Fixed bug in Static Text controls.  The justification field now works. 

Fixed a bug in NewControl2 where the owner port was not being set before the 
definition procedure was being called.  This caused a problem in size
calculation.  With this fix, it is now safe to use NewWindow2 with attached
controls. 

QuickDraw Auxiliary v3.3     Tool018   (5.0.4)

Fixed bug in ClosePicture.  If an error occurred in picture accumulation, 
ClosePicture could trash the first word of a random region (usually the clip
region of the last window drawn to).

5.0.4:  CopyPixels segment is now static instead of dynamic.

5.0.4:  The top scan line on CalcMask is now handled properly.  Two variables
had been initialized improperly.

5.0.4:  Rounding the pixel map buffer size to an even number of bytes in
SeedFill and CalcMask now works if the low word of the size was $FFFF.

5.0.4:  SeedFill and CalcMask no longer return a bogus error code in 640 pure
mode.

5.0.4:  Fixed a stack imbalance deep inside picture pixel map routines under
low memory conditions.

LineEdit v3.2                Tool020

Fix bug in LEFromScrap.  Two bytes of memory were getting trashed when 
LEFromScrap was made and there was an empty text scrap.  The word that got
trashed was $FFFE from where the Line Edit scrap is located. 

Dialog Manager v3.3          Tool021

Fix bug in ModalDialog.  ModalDialog was stealing all events from the event 
queue-instead it should have been leaving application events alone. This was
only fixed for ROM 01 machines.  For ROM 3 ModalDialog can still steal
application events.

Standard File v3.2           Tool023

When in the Volumes list for "Get" dialogs you can now select a member in the
list by using keystrokes.

Fixed some spacing problems with "Get" dialogs in 320 mode.

The wrong dialog item was being zeroed in the previous fix.  Symptoms were
if you called SFPMultiGet2 the second time you brought up this dialog, button
item 5 would be blank.  This has been fixed.

Fixed a problem with using custom Standard File dialogs.  Standard File
physically patches certain items in the application's dialog template.  For
the Path item (item 6 in GET, item 7 in PUT) Standard File patches in an
address to a routine that draws the path.  Since this address points to a
routine within Standard File, if someone unloaded the toolset and loaded it
again, it is very probable that the toolset could load at a different memory
location which would make this patched address invalid.  Standard File only
patches this item if the refdescriptor field is zero.  The next time this
dialog template is used, this field is now non-zero and therefore not patched
again by Standard File.  The bug is fixed by making sure that before the
dialog is closed this field is zeroed out (if it was zero to begin with).

If an unformatted disk is inserted while a standard file dialog is up, it is
no longer just ignored.  An error message is now displayed and the disk is
ejected after the user selects OK.

If prefix 8 or 0 (depending on old or new call) was set to a valid filename
and not a directory name, all standard file calls would fail.  This has been
fixed. 

Whenever you initially brought up a standard file dialog the cursor would
flicker back and forth from a watch cursor to an arrow cursor.  This has been
fixed. 

Hitting the <return> key in "Put" dialogs when the default button is inactive
could cause problems because the <return> key is then passed onto the active
edit line item.  The <return> would erase any selected text in the edit line. 
This has been fixed.

Fixed bug where multiple volumes could be selected in "Multi" dialogs.  You
can now only select one volume at a time when in the "volumes" list.  

If a volume was larger than 16MB the string that shows how much room was left
on the volume currently being displayed was wrong.  This has been fixed.

When the promptRef passed is a resource and the resource cannot be found,
Standard File would crash.  This has been fixed.  Standard File now returns
with carry set and returns the error received from LoadResource call.  

Fixed bug in SFMultiGet2.  No matter how many files were selected, the call
would always return 1 as the number of files selected.  

Folders on AppleShare volumes that you do not have enough access privileges
to are now displayed grayed out. 

When a disk is inserted that GS/OS cannot recognize an alert is put up and the
disk is ejected when the user selects OK.  

In the "Put" dialogs, selecting New Folder now drops you into the folder
that was just created. 

Hitting the <TAB> key no longer hilites the "Volumes" button. 

For the new "Put" calls (SFPutFile2, SFPPutFile2), fixed bug where trying to 
reference the origNameRef as a resource with the middle word of the resource
ID equal to zero would not work. 

Disk switch events are now being monitored.  A disk insert event now causes
that disk's list of files to be displayed in the file list.  A disk eject, if
it is the currently displayed volume will cause the next volume's list of
files to be displayed in the file list.

The "Disk" button no longer advances to the next volume, instead selecting
this button now displays the list of all volumes currently on-line (this is
now titled the "Volumes" button).

Selecting the pathname field or the "Close" button when the volume currently
being displayed is at the root level also has the same response as selecting
the "Volumes" button.

You would encounter several problems if you tried to bring up a standard file
dialog and there were no volumes on-line or if you ejected all the volumes
while a dialog was already open.

The default edit line name in "Put" dialogs is now highlighted.

Fixed bug where system crashed after entering too many characters. The maximum
number of characters that can be entered in any edit line field is limited to
32. 

Fixed bug where in 320 mode when a disk was locked the lock icon would not
appear in the pathname field of the dialog.

Fixed bug in SFRescan. The call would not work in 320 mode.

Fixed bug in all the "Put" calls.  When an illegal filename was entered by
the user they were never notified that it was bad.  Instead Standard File
would just skip to the next volume.

Font Manager v3.2            Tool027

If one of the buffers the Font Manager gets during FMStartup crosses a bank
boundary in the right way FMStartup could return a bogus error.  This has been
fixed.

Fixed bug in FMStartUp where a partially created FONT.LISTS file would be left
around if it could not be created successfully.  This could cause the system
to crash.  Now if anything goes wrong when creating the FONT.LISTS file it
will be deleted.  

Fix bug in ChooseFont and InstallWithStats.  Occasionally when a font had to 
be created ChooseFont and InstallWithStats would not be able to create the 
font because it encountered a memory error even though there was enough
memory to create the font.  This fix just makes this whole process of having
to create a font more robust.  

The watch cursor is now put up when ChooseFont has to call InstallFont.   

List Manager v3.2            Tool028

Fixed bug in NewList2.  Problems would arise when NewList2 was called and the
list grew. 

ACE v1.2                     Tool029

Re-written to improve performance.

Resource Manager v1.1        Tool030

Fixed bug where the resource map was getting corrupted (this would cause the
file's resources to get trashed).  Whenever the resource manager had to join
two free blocks (in its own free block list) the resulting block was not
correctly sized.

Fix a bug relating to restarting the OS.  While the resource manager was
working fine, it no longer had Sys.Resources in its search path (that is,
running a P8 application from the Finder and then returning to GS/OS would
cause problems such as Standard File being unable to display a Replace/Cancel
dialog).

TextEdit v1.2                Tool034

Fixed a bug where, in certain instances, super blocks were not ending in a
carriage return.

Fixed a problem in TEGetSelectionStyle where the common style flags did not 
properly reflect the common styles that were in use.

Fixed super block trashing bug where a deletion would cause a super block to
end without a carrige return.

Fixed LETextBox2 output.  Note: This output is still not a supported option
in TextEdit.  However, it should work for small blocks of text with
reasonable numbers of styles.

Fixed a bug in the Idle routine that would corrupt the superblock list if
the fixblocklist routine was called to join 2 small blocks.

Fixed a bug in TESetText which corrupted the text edit record if the length
of the incoming text was 0.

Fixed a bug in the TEGetText routine that would trash the contents of memory
if you tried to retrieve too much text into a Pascal string.

When an invisible TextEdit control is created the scroll bar is still
visible.  This has been fixed.

Fixed control so that the selection is not outlined when a control is made
invisible. 

Fixed deletion bug which trashed the block list if large blocks were deleted
from a record.

Fixed the Text Edit control definition procedure so that initial style is
properly set up when you use less than 13 as your pcount.  This was causing
some hangs and out of memory indications at NewControl2 time.  This could also
cause bad style lists and improper handling of style changes.

TS2      (patch for ROM 01)

This patch file has been segmented so that the initialization code can be
disposed of when the patch has been loaded.  This will mean that QDBootInit
cannot be called again (but that was the case anyway).

Memory Manager v3.1

Fix bug in DisposeHandle. Put in check to make sure that the handle being
disposed was a valid handle. 

QuickDraw II v3.5

SetGrafProcs no longer increments the BUSY flag too many times.

Added bit to QDStartup MasterSCB flags that says to not load/use FastFont.
The noFastFont bit has value $1000 in the MasterSCB word.

Fixed bug in all region op calls that would leave region handles locked
after certain operations.

Fix bug in QDShutDown.  Shadowed memory was not being released properly when 
shadowing was turned on. 

Fix bug in RectInRgn.  The high word of a variable being used was not being
zeroed out correctly.

Desk Manager v3.3

Fixed bug in RemoveNDA.  The call was not properly removing the NDA from the
NDA list. If you tried removing NDAs in the same order you installed them and
then tried quitting the application, you would die a horrible death.

Sound v3.3

Fixed bug in FFStartSound.

Fixed FFStartPlaying to no longer garble sound when SampleSize is less than
or equal to 2*BufferSize.

Fixed FFSoundDoneStatus to operate correctly when SampleSize is less than or 
equal to 2*BufferSize.

Miscellaneous Tools v3.1

Added new call, ConvSeconds ($3703).  See the attached pages at the end of
these release notes for documentation for ConvSeconds.

Added address $00FF to the GetAddr function. This address is the location of
the serial port buffer pointers.  (These data structures are not currently
documented, so don't use them.)

TS3           (patch for ROM 03)

This patch file has been segmented so that the initialization code can be
disposed of when the patch has been loaded.  This will mean that QDBootInit
cannot be called again (but that was the case anyway).

Tool.Setup    (this is the init that loads the patch files)

Fix bug in GetNewID that only occurs on ROM 03 machines.  The first ID
reserved was always lost.  Since GetNewID is called before the patch can be
loaded but not before the init is run, we make the fix here.

Memory Manager v3.1

Fix bug in DisposeHandle.  Put in check to make sure that the handle being
disposed was a valid handle. 

QuickDraw II v3.6  (5.0.4)

Added bit to QDStartup MasterSCB flags that says to not load and use
FastFont. The noFastFont bit has value $1000 in the MasterSCB word.

Fixed bug in all region operation calls that would leave region handles
locked after certain operations.

Fixed bug in seekRgn.  It would crash/hang/generate garbage when seeking a
non- rectangular region up instead of down. This should fix many problems with
ScrollRect and the bit transfer routines.

Fixed backwards slices for all pixel transfer operations (they would usually
crash).

5.0.4:  Fixed QDStartUp to make sure the cursor image handle is safe.  This
patch is identical to one that's been in TS2 or Tool.Setup since May 1987.

Desk Manager v3.3

Fixed a bug in RemoveNDA. The call was not properly removing the NDA from
the NDA list.  If you tried removing NDAs in the same order you installed them
and then tried quitting the application, you would die a horrible death.  

Sound v3.3

See changes in TS2 patch for Sound Tools.

Miscellaneous Tools v3.1

See changes in TS2 patch for Miscellaneous Tools.

Window Manager v3.2

See changes for Window Manager toolset.

Menu Manager v3.2

See changes for Menu Manager toolset.

Control Manager v3.2

See changes for Control Manager toolset.

LineEdit v3.2

See changes for Line Edit toolset.

Font Manager v3.2

Patch to FMStartup.  See changes for Font Manager toolset.

Fixed bug in ChooseFont.  There was a bug fix in the call InstallFont that
was patched for 5.0 that never got incorporated into ChooseFont, which calls 
InstallFont.

List Manager v3.2

See changes for List Manager toolset.

Printer Drivers

Imagewriter LQ     v4.1 (5.0.4)

Version 4.0 is all new for System Disk 5.0.3.  All new features are
described in a separate document not included with these release notes.

5.0.4:  Worked around a strange behavior of PAP by calling PrDevStatus a second
time if any tool errors occur the first time.

5.0.4:  Modified the end of PrCloseDoc to insure that all spooling resources
are released if there is a print loop error.

5.0.4:  Spooling now occurs to the user folder if you booted over AppleShare.

5.0.4:  Changed spacing around the "/" in the top line of the dialog boxes.

5.0.4:  More robust and correct error checking implemented.


Imagewriter   v4.1      (5.0.4)

Version 4.0 is all new for System Disk 5.0.3.  All new features are
described in a separate document not included with these release notes.

5.0.4:  Worked around a strange behavior of PAP by calling PrDevStatus a second
time if any tool errors occur the first time.

5.0.4:  Modified the end of PrCloseDoc to insure that all spooling resources
are released if there is a print loop error.

5.0.4:  Spooling now occurs to the user folder if you booted over AppleShare.

5.0.4:  Changed spacing around the "/" in the top line of the dialog boxes.

5.0.4:  More robust and correct error checking implemented.

5.0.4:  Both the Open and PicFile routines now call the idle procedure at the
beginning and exit if the error status is set.  This makes the driver work
better with those programs that patch out the Event Manager (like HyperCard
IIGS...)

Fixed bug that caused vertical repeating.  Fixed by forcing band buffer to
clear each time.

Hitting command-period right after Job Dialog OK would cause crashing due to
calling PrDevClose w/o PrDevOpen.  Fixed.

Change-color-table PicComment implemented.

LaserWriter   v3.0.1

Fixed bug that sometimes caused font lists from the LaserWriter to appear in
the status dialog.  The driver was skipping some bytes in a PrAsyncDevRead
(PAP read) call.

Changed "pop=flush" to "pop = flush" in the prep file (internal) to prevent
a PostScript error when running out of VM in the printer.

Corrected other small bugs relating to PostScript and typographical errors.

Modem v2.1

Timeout on the PrDevRead call changed.  If the currently-installed printer
driver is less than v4.0, then the timeout delay on the read call is
unaffected; otherwise, it is about 2 seconds (the old delay remains at about
45 seconds).

Added direct-to-SCC-chip write for true 19.2Kbaud.

Added a zap ("Ignore all subsequent ^I commands") command to DevOpen, so
that Ctrl-Is ($09 or $89) in the data stream won't be interpreted and 
filtered out by the firmware.  Removed similar zap code from DevRead.

Modified the stack offset for DevAsyncRead to not include direct page and bank
address since the call never switches direct page. 

Printer v2.1

Timeout on the PrDevRead call changed.  If the currently installed printer
driver is less than v4.0, then the timeout delay on the read call is
unaffected; otherwise, it is about 2 seconds (the old delay remains at about
45 seconds).

Added direct-to-SCC-chip write for true 19.2Kbaud.

Added a zap ("Ignore all subsequent ^I commands") command to DevOpen, so
that Ctrl-Is ($09 or $89) in the data stream won't be interpreted and filtered
out by the firmware.  Removed similar zap code from DevRead.

Modified the stack offset for DevAsyncRead to not include direct page and bank
address since the call never switches direct page.

GS/OS Changes:

GS/OS (composed of the files GS.OS, GS.OS.Dev, and Start.GS.OS):

SCM (System Call Manager)

Removed code that checks for  more than 65535 unclaimed interrupts and calls
the subroutine that displays the dialog box. There seems to be a problem with
the 6551 chip used in several internal modems that cause spurious interrupts
to be generated.  This caused GS/OS to generate the unclaimed interrupt error
dialog which caused problems for those who were doing remote downloads since
the dialog required a response from the user.

Fixed bugs in make_seg, deallocate, and lock/unlock_mem which were using 
16-bit addressing when the data bank register was not set correctly, so SCM
was stomping on memory and not unlocking some handles.

Incorporated a bug fix where SCM was erroneously reporting 65536 unclaimed
interrupts. 

Fixed a bug in the notification queue where the event code was being lost if
a Notify Proc generated another event.

System Error Messages

Changed text of unclaimed interrupt error message to send the user to their
Apple dealer, instead of a fatal message.

ExpressLoad

Unloading a dynamic segment by address was not working reliably.  When the
address of a procedure within a dynamic segment was passed which hadn't been
used yet, ExpressLoad looked at its jump table segment and assumed that, since
the referenced entry hadn't been patched yet, it couldn't have been loaded
yet.   This has been corrected by having ExpressLoad always attempt to mark
the dynamic segment as purgeable, whether it is in memory or not.  Since it
ignores a "Segment Not Found" error returned by at attempt to mark the dynamic
segment as purgeable, this shouldn't cause any problems.

GQuit

GQuit's ProDOS 8 loading routines changed due to the new size and version of
ProDOS 8 v1.9.

Changed allocation of 64K buffer used to read the OS files from disk.
Previously, it was allocated as locked, non-fixed, in no particular place in
memory.  This caused the Memory Manager to allocate the block high in memory.
During the boot process, other handles are allocated as locked and never go
away, effectively creating a very large free area high in memory (when this
buffer is deallocated, that is) that can't be combined with the main portion
of free memory (producing fragmentation). 

Calls to the Memory Manager CompactMem routine have been added prior to:
    a) Initializing SCM
    b) Initializing the Device Dispatcher
    c) Processing Tool.Setup
    d) Loading Desk Accessories
    e) Performing the Quit call to load and execute the "Start" program

This should further reduce memory fragmentation that was occurring during
booting.

GQuit now masks off any irrelevant bits of the quit flags prior to sending
the quit word to the UserShutdown function of the Loader.

Device Manager

D_Info call now respects the size of the supplied result buffer for the
device name.

Console.Driver

The User Input Read routine was not updating the GS/OS direct page 
transfer_count field during the call.  During investigation, it was noticed
that the raw read routine had the same problem.  Both routines have been
fixed. 

SCSI.Manager            (5.0.4)

5.0.4:  Known bug:  The SCSI Manager asks peripherals to return 256 bytes of
status into an 8-byte buffer in the middle of the code.  Most hard disks only
return 8 bytes, but some peripherals return more, overwriting some Manager
code and crashing during boot.  This is not fixed in 5.0.4.

5.0.4:  Changed the startup routines to not reset the SCSI bus, to prevent some
peripherals from entering power-on diagnostics in the middle of the boot
process (and also to keep the Rev. C SCSI Card from changing CD-ROMs back to
2K/block mode).  The Manager version is now 5.4.

Fixed Startup Call.  If no hardware is found on startup, the bound IRQs will
be Unbound now so that they are not left hanging.

Designed to support both the old and the new SCSI cards.  Modified to add
support for the 1 meg transfer rate required by the new card.  Also a number
of format changes have taken place in the Manager that makes this a new
environment.

SCSICD.Driver

Bug fixes.

SCSIHD.Driver

Added support for Extended Read and Write in the default command bitmap.

Bug fixes.

UniDisk 3.5 Driver

While being warm-started (after a switch to GS/OS from P8), the parameter
list used to download the disk-switched code to the drive was not being set up
properly, resulting in the UniDisk failing to recognize disk-switched
occurrences.  This has been corrected.  (Disk switches were still noticed if
the driver was called while there was no disk online, so the problem was not
obvious in applications like the Finder, which continually poll drives.)

ATalk

Changed the device characteristics of .RPM so that it no longer allows read
access.  DRead will no longer hang when issued to .RPM.

Fixed a bug in the .RPM driver where it closed RPM without flushing unwritten
data.  Now calls PMFlushSession before closing .RPM.

ATP2.ATRAM

You no longer lose connections with servers when you change your machine's
clock setting.  The ToWriteTime routine is intercepted to keep AppleTalk aware
of the current real time.  (When you changed your clock, AppleTalk thought
that a lot of real time had elapsed-often many hours-and caused all of its
timers to expire, including the server session timers.)

Fixed a bug in the FIAccess call where it assumed it was passed a complete
pathname and returned an error $0A09 (volume not mounted) when a partial path
was used.

Added a new call (PMFlushSession, $48) to RPM to allow explicit flushing of 
unwritten data.  This call causes the flush timer to complete immediately,
causing buffered data to be written.  The parameters are the same as those to
PMCloseSession.

HS.FST (High Sierra FST)

Fixed the problem where the disk switched was being returned by the Volume 
call when High Sierra comes in before ProDOS in the FST calling loop (for
example, when booting over AppleShare).  It is important that the retry not
happen in general, otherwise the FST will blindly read from the wrong disk if
you swap disks.

ProDOS.FST

Fixed several problems related to the SetEOF fix implemented in earlier
versions of System Disk 5.0.3.  These could cause an error $2C (invalid device
request count) to be returned by the FST if certain pairs of calls were
executed in succession.  Another problem would cause blocks to not get
deallocated when cutting back a file's EOF across 64K boundaries.

Fixed a bug where cutting back the EOF of a file with more than $8000 blocks
allocated to it (counting index blocks) would never change the block count in
the file's directory entry (that is, it would be "stuck" above $8000 for all
time).

Added support for the FLUSH_TYPE parameter for the Flush call.  The Flush call
now supports two types of flush:  a "full" flush, which flushes a file's dirty
data blocks and dirty directory blocks, and a "fast" flush which flushes dirty
data blocks only.  Note that Flush previously performed the "full" flush.  The
type of flush is specified in the parameter block by the caller.  A fast flush
is specified by specifying a FLUSH_TYPE of $8000.

Fixed bug where SetFileInfo was not handling zeroed fields of the mod_date
and create_date parameters correctly.  If the entire parameter is zeroed, it's
supposed to either use the current date (if its the mod_date parm) or leave it
alone (if its the create_date).  If only a portion of the field is zero,
though, it should use the zero as the value to place in the directory entry. 
This is now the case.

Fixed bug where SetEOF would trash a file when a call was made to move the
EOF back or the same on a file which has a sparse area at the end (i.e.,
sparsed-out blocks at the end of the block list) and the new EOF is still
within the sparsed range.  SetEOF now always views a change in the EOF as
being relative to the position of the last physically allocated block in
the file.

Fixed a bug where a system crash was possible if a sequence of FST calls
caused disk blocks to be freed and then re-allocated on the same volume.

Fixed a bug in SetEOF.  Under certain conditions, if the new EOF was not an
even multiple of $200 file data could be corrupted. 

When the FST accesses a volume and then a new volume gets swapped into that
same device, the FST now allows access to the new volume in that device when
the device name is specified in the call.  Previously, the FST would display a
dialog box asking the user to insert the volume that was seen in that device
before the swap.

AppleShare FST          (5.0.4)

5.0.4:  Fixed the routines that shield and unshield the cursor while drawing
the arrows in the menu bar during server access.  These routines now save and
restore the direct page locations documented in the January 1991 revision to
Apple IIGS Technical Note #34, Low-Level QuickDraw II Routines.

Fixed bug when switching between users with diskless booting.  The system
disk not recognize that the boot volume had been renamed. 

ProDOS 8           Version 1.9:

Known Bugs:

ProDOS 8 doesn't handle seedling sparse files correctly.

SET_PREFIX "/" followed by a SET_PREFIX with a volume name without a slash
sets the prefix to the first letter of the volume name.

Changes:

P8 had problems displaying the "program too large" message.  This has been
fixed.

P8 could not load large system programs.  When checking the size of the
.SYSTEM program to be loaded at boot time, the code was comparing the second
byte of the file's EOF to a constant $98.  This limited the size of the
program to 38K, when it could actually be 39.75K without interfering with
ProDOS.  The constant value has been changed to $9F. 

A second version of the Quit call handler has been added to the operating
system.  The new Quit code lets the user select the next application
interactively instead of remebering and typing its pathname.

The new quit code is only used on an 80-column Apple IIe or later when
ProDOS 8 is booted directly (not when you have booted GS/OS).  The original
version of the quit code is automatically used on machines that don't have the
necessary hardware to support the new code.

BASIC.System       v1.4.1

Fixed a problem where the high byte of the ,B parameter was not being zeroed,
causing BSAVE to create files with excessively large EOFs.

CDev Changes:

ATalk ImageWriter Printer CDev

Fixed the bug with network booting as a guest.  The CDev was trying to build
a path to the user's ATINIT file.  But the guest's user name is returned as
the empty string (creating an invalid pathname).  It now uses "<Any User>"
instead of the empty string.

Fixed text justification problems with static text controls (especially the
titles above lists and line edits). 

Fixed problem with CDev not showing more than 3 ImageWriters on the net.  It
was incorrectly calling NewList2 with listStart=0 when no printer had been
selected, and no printer matched the name in the Printer.Setup file.  It now
uses $FFFF for listStart (to keep the first item displayed the same as
before).

Fixed problem with crashing under low memory situations.  It was possible
for the CDev to get loaded in bank 0 which was causing the problem.

ATalk ImageWriter LQ Printer CDev

Fixed the bug with network booting as a guest.  The CDev was trying to build
a path to the user's ATINIT file.  But the guest's user name is returned as
the empty string (creating an invalid pathname).  It now uses "<Any User>"
instead of the empty string.

Fixed text justification problems with static text controls (especially the
titles above lists and line edits). 

Fixed problem with CDev not showing more than 3 ImageWriters on the net.  It
was incorrectly calling NewList2 with listStart=0 when no printer had been
selected, and no printer matched the name in the Printer.Setup file.  It now
uses $FFFF for listStart (to keep the first item displayed the same as
before).

Fixed problem with crashing under low memory situations.  It was possible
for the CDev to get loaded in bank 0 which was causing the problem.

ATalk LaserWriter Printer CDev

Fixed the bug with network booting as a guest.  The CDev was trying to build
a path to the user's ATINIT file.  But the guest's user name is returned as
the empty string (creating an invalid pathname).  It now uses "<Any User>"
instead of the empty string.

Fixed text justification problems with static text controls (especially the
titles above lists and line edits). 

Fixed problem with crashing under low memory situations.  It was possible
for the CDev to get loaded in bank 0 which was causing the problem.


Desk Accessories:

VideoMix.NDA v1.3

Fixed bug where hitting the <ESC> key when VideoMix NDA is up and no card is
installed would crash the system.


A.U.G. Changes:
(Applications and Utilities Group)

Installer v1.2 

If the last FileSpec in a script required no action to be taken the Installer
would get confused and think there were more fields in the script. This has
been fixed.

Fixed bug where the Installer was incorrectly parsing the file spec field
separator character "~" in the scripts.  


Installer Scripts:

SCSI Hard Disk:
This script now also deletes Times.12 to make room for the drivers.

This script now deletes Shaston.16 to make room for the drivers.

ACE Toolset:
This is a new script for 5.0.3 that copies the ACE toolset.

Additional Fonts:
Times.12 is now copied from the System.Tools. disk.

Changed to reflect the moving of Shaston.16 to System.Tools disk.

AppleShare on 3.5 Disk:
Changed to reflect the moving of Shaston.16 and Tool029 to the System.Tools
disk.

Latest Sys. Files (No Finder):
Times.12 is now copied from the System.Tools. disk.

Changed to reflect the moving of Shaston.16 and Tool029 to the System.Tools
disk.

Latest System Files:
Times.12 is now copied from the System.Tools. disk.

Changed to reflect the moving of Shaston.16 and Tool029 to the System.Tools
disk.

Local Network Startup:
Changed to reflect the moving of Shaston.16 and Tool029 to the System.Tools
disk.

Server Network Startup:
Times.12 is now copied from the System.Tools. disk.

Changed to reflect the moving of Shaston.16 and Tool029 to the System.Tools
disk.

------------------------------------------------------------------------------

ConvSeconds   $3703

Allows conversion to and from a long integer containing the number of seconds
Since January 1, 1904-the format used by the Macintosh operating system.
ConvSeconds is provided to allow easier handling of dates in applications
that work with several different date formats.

Parameters

Stack before call

Previous contents

|                 |
|      Space      |   Long-Space for result
|                 |
|-----------------|
|    convVerb     |   Word-Direction and type of conversion
|-----------------|
|                 |
|     seconds     |   Long-Number of seconds since January 1, 1904
|                 |
|-----------------|
|                 |
|     datePtr     |   Long-Pointer to buffer for converted date
|                 |
|-----------------|
                   <-SP

Stack after call

Previous contents

|                 |
|   secondsOut    |   Long-resulting number of seconds
|                 |
|-----------------|
                   <-SP

Errors        $0390     badTimeVerb    Invalid convVerb value
              $0391     badTimeData    Invalid date or time to be converted

C        extern pascal unsigned long convSeconds(convVerb, seconds, datePtr);
         unsigned Word  convVerb;
         unsigned Long  seconds;
         Pointer        datePtr;

convVerb      The type and direction for the conversion.  Valid verbs are:

              0    from seconds to the Miscellaneous Tools ReadTimeHex
                   format
              1    from the Miscellaneous Tools ReadTimeHex format to
                   seconds
              2    from seconds to ASCII text (ReadTimeASCII format)
              3    not implemented
              4    from seconds to ProDOS date/time format
              5    from ProDOS date/time format to seconds
              6    return the current time in seconds
              7    set the current time from seconds
              8    from the Miscellaneous Tools ReadTimeHex format to
                   ProDOS date/time format
              9    from ProDOS date/time format to the Miscellaneous Tools
                   ReadTimeHex format
              10   from seconds to HyperCard IIgs format
              11   from HyperCard IIgs format to seconds

              HyperCard IIgs format is the same as the Miscellaneous Tools
              ReadTimeHex format except that the bytes for the month and the
              day are one-based instead of zero-based.

seconds       The input number of seconds since January 1, 1904 for all
              conversions that convert from a number of seconds to a
              different format, as well as for setting the current time.
              Conversions to a number of seconds since January 1, 1904
              ignore this parameter, although it must be present.

datePtr       Pointer to a buffer for all input and output values that are not
              a number of seconds since January 1, 1904.  Conversions from a
              number of seconds will place the results in the buffer pointed
              to by datePtr; conversions to a number of seconds will get the
              source from a record pointed to by datePtr.  When converting
              between two formats that are not seconds, the input pointed to
              by datePtr will be overwritten by the output.

WARNING:      The buffer pointed to by datePtr must always be at least 8
              bytes long and must be at least 40 bytes long when converting to
              ASCII format.  ConvSeconds will overwrite the first eight bytes
              of the buffer pointed to by datePtr even if the input is less
              than eight bytes long.

secondsOut    The output number of seconds since January 1, 1904 for all
              conversions that convert from any other format to a number of
              seconds.  Conversions from a number of seconds since January 1,
              1904 do not use this result space, although it must be present.

NOTE:         In System Software version 5.0.4, ConvSeconds can return with
              the carry set and zero in the accumulator when no error
              occurred.  Also, an invalid convVerb value of 12 does not return
              an error as it should.
