Apple IIGS System Software Release Notes Version 5.0.4 December 10th, 1990 Part 1 of 2 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 key in "Put" dialogs when the default button is inactive could cause problems because the key is then passed onto the active edit line item. The 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 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.