Advanced Search
Apple Developer Connection
Member Login Log In | Not a Member? Contact ADC

ADC Home > Reference Library > Technical Notes > Legacy Documents > Mac OS 9 & Earlier >

Legacy Documentclose button

Important: This document is part of the Legacy section of the ADC Reference Library. This information should not be used for new development.

Current information on this Reference Library topic can be found here:

Mac OS 8.5




CONTENTS

menubot600

Being a compendium of revised and new features of interest to software developers in release 8.5 of the Mac OS.

This Technote discusses changes and corrections in the next generation of Mac OS: Mac OS 8.5. This system follows Mac OS 8.1 and contains several new and revised features including:

  • more PowerPC code
  • consolidated control panels
  • faster system startup time
  • improved AppleScript performance
  • new Unicode text drawing facilities
  • new HTML-based help facilities

 Updated: [Oct 26 1998]








Hardware Requirements

Mac OS 8.5 can be installed on any Macintosh that originally shipped with a PowerPC processor that has at least 16 megabytes of physical RAM and a minimum of 24 megabytes of logical RAM. Also, Mac OS 8.5 can be installed in the Mac OS X Server DR2 Blue Box by way of standard install.

Mac OS 8.5 is tested and qualified by Apple to run on Apple PowerPC-based Mac OS computers. (Mac OS 8.5 is not tested or qualified by Apple for use on clone Mac OS-based systems.)

Back to top




Installation

Install

Install Mac OS 8.5


This is an improved version of the "Install Mac OS" application provided with Mac OS 8.0 and 8.1. This new "Install Mac OS" application offers an improved user experience by allowing the user to customize components before any installation begins and not requiring further user intervention until the installation is complete.

The "Install Mac OS" application program requires System 7.0 or later to run. Typically, users will boot from the installation CD.

The "Install Mac OS" application will update a System Folder whose version is 7.1 or later. The installer will perform a "clean" installation onto volumes that contain earlier versions of the system software (or no system software at all).

New and improved features include:

  • File & Target Lists -- a more compact way of storing file copy commands to get around Resource Manager limitations.

  • Alias Atom -- an atom for creating aliases during installations.

  • Enhancements to the Installer Engine AE suite.

Related Materials:

Back to top




Finder

Finder 8.5


Finder 8.5 offers improved window redraw performance, faster file copies, and several other new, improved, or extended user interface elements. Specific additions include:

  • A new dialog allows users to repair broken aliases.

  • Using contextual menus, an alias of any Finder object can be added to the "Favorites" folder.

  • Using contextual menus, AppleScript scripts triggered by various Finder actions can be attached to any folder.

  • Sounds now play in response to many user actions.

  • Finder's resource fork is now read-only. In many cases, this will prevent accidental corruption of Finder.

  • The system stability warning dialog box is now displayed when Finder is re-launched after a system error.

  • It is now once again possible for an application to specify 'alis' as a file type in its bundle resources to indicate that unresolved alias files should be sent to its "open documents" Apple event handler.

  • Developers can designate certain files as "busy" files. Busy files are files that are in the process of being created or copied, regardless of whether File Manager has them open. The Finder will treat any file whose type is set to zero or to a type within the range 'bzy ', 'bzy!', ..., 'bzy?' as a busy file and will not attempt to change its type or creator. The range 'bzy ', 'bzy!', ..., 'bzy?' is provided for developers wishing to animate a file's icon during its creation.


Compatibility Note:
Archive developers should store the entire contents of both the FInfo and FXinfo records and the DInfo and DXInfo records when archiving files and directories. All fields in these records should be preserved, including flags and fields marked as reserved (with the exception of the "inited" bit for files containing desktop database information).



Compatibility Note:
Although frFlags and fdFlags are located at the same offset in catalog records, some of the flags now have different meanings when the catalog record refers to a file versus when the catalog record refers to a directory. Developers should not assume flags that are only defined for files are unused when the catalog record refers to a directory. See the flag descriptions in <Finder.h> for more information about individual flags.



Back to top

Autorouting and Extended Routing

  • Finder now exclusively uses Folder Manager for auto-routing items dropped into the System Folder (see the Finder Interface Reference chapter of Inside Macintosh: Mac OS 8 Toolbox Reference for more information).

  • Finder attempts to utilize extended routing information stored in the resource fork of a file if the file's extended routing info bit is set in its Finder flags. When such files are dropped into the System Folder, Finder will attempt to read a 'rout' (ID=0) resource, which should contain a list of routing information entries. Typically, there will be only one entry in the list. When the list contains more than one entry, Finder walks through each entry and uses the last one that matches.

    The 'rout' resource entries are defined as follows:



typedef struct
{
  OSType creator;           // set to zero
  OSType fileType;          // set to zero
  OSType targetFolder;      // set to 'macs'
  OSType destinationFolder; // the folder to route into
  OSType reserved;          // set to zero
}
RoutingResourceEntry;


The creator, fileType, and reserved fields should be set to zero.

When the file is dropped into a folder of the type specified in targetFolder, it will be routed to the folder specified in destinationFolder. Currently, only the System Folder is supported for the targetFolder field, so this field should be set to the System Folder's FindFolder ID ('macs'). Example: if the file should be routed to the "Preferences" folder, the destinationFolder field should contain 'pref'.

Before the Finder will look for the 'rout' resource in a file, the routing information flag in the ioFlXFndrInfo.fdXFlags must be turned on. Developers can access this flag using the kExtendedFlagHasRoutingInfo mask defined in <Finder.h>.



Compatibility Note:
Some of the fields documented in FInfo, DInfo, FXInfo, and DXInfo no longer accurately reflect how these fields are actually used by the system. Now, the accurate definition is provided by the FileInfo, FolderInfo, ExtendedFileInfo, and ExtendedFolderInfo data structures, respectively. In particular, they contain the definition of where to find the routing bit.



Back to top

New Finder display facilities

  • The Get Info window can now display multiple panels of information.

  • Finder preferences are now consolidated into a single multiple panel window.

  • A new control has been added to the View Options window, allowing users to revert the current view to a standard view.

  • List view columns are now resizable.

  • The new Finder can display badged icons.

  • Support for proportional scroll bars has been added.

  • Proxy icons are displayed in window title bars.

  • View font and size is now set in the Appearance control panel.

  • To override the default message displayed by the Finder when a file cannot be opened, developers may include a 'STR ' ID = -16397 resource in any file's resource fork. This message text will be displayed when the user attempts to open a file that cannot be opened, overriding the Finder's default message.

  • In previous versions of the Finder, files with their custom icon bit set that did not contain a suite of custom icons were not handled correctly. The Finder now resets the custom icon bit and uses the default icon for these files.



Compatibility Note:
Starting with Finder 8.5, the invisible "Icon<cr>" file placed in directories may contain resource-based information used by the Finder other than an icon suite. It should only be deleted if it contains no resources at all.



  • The Finder now uses the new gestaltVMInfoType Gestalt selector to determine how information about virtual memory will be displayed in the "About This Computer" window. Developers wishing to control how the Finder displays virtual memory information may redefine this selector to return any of the values shown in Table 1. Table 1 describes the various virtual memory information display modes available in this version of the Finder.




Table 1. Finder virtual memory display modes determined by the value of the gestaltVMInfoType ('vmin') selector.




Selector Name

Value
VM Information Displayed

gestaltVMInfoSizeStorageType

0

Display either the string "virtual memory on" or the string "virtual memory off", the size of the backing store, and the name of the volume where the store is located (the default).

gestaltVMInfoSizeType

1

Display either the string "virtual memory on" and the size of the backing store or the string "virtual memory off".

gestaltVMSimpleType

2

Display either the string "virtual memory on" or the string "virtual memory off".

gestaltVMNoneType

3

No virtual memory information will be displayed, even when virtual memory is turned on.




Back to top

Internet Location Files and Clipping Files

  • Finder supports enhanced text clipping naming. Text clipping file names are now generated using the first few characters in the text supplied as the text clipping (truncated using the ellipse character as appropriate). Previous Finders would name text clippings as 'text clipping', 'text clipping 1', and so on. For example, the new Finder may name a text clipping generated using this sentence as "For example, the...". This new facility supplements the clipping file naming facilities introduced with MacOS 8.0 (see the "Controlling Clipping File Names" section of Technote TN1102, "Mac OS 8" for more information).

  • Both Internet location files and clipping files are created by the Finder when it receives a Drag-and-Drop command. The type of file created depends on the contents of the drag as described below.

  • Clipping files created by the Finder will have one of the types listed in Table 2. All clipping files have a creator type of kClippingCreator ('drag').




Table 2. Clipping file types created by Finder.




Constant Name

OSType

Description

kClippingPictureType

'clpp'

a QuickDraw picture ('PICT')

kClippingTextType

'clpt'

contains ASCII text ('TEXT')

kClippingSoundType

'clps'

contains a sound resource of type 'snd '

kClippingUnknownType

'clpu'

unknown data





Finder will create an Internet location document when it receives a drag containing an Universal Resource Locator (URL). A drag containing an URL will be noticed by the Finder in one of two ways:

  • If the drag contains data of flavor type 'url ', then the data will be treated as an URL.

  • If the drag contains data of flavor type 'TEXT', then Finder will examine the text data attached to the flavor and determine if it is an URL.

When it finds URL information, Finder will create an Internet location file assigning the file type according to the URL type. Table 3 lists the file types the Finder will assign to Internet location files. Internet location files created by the Finder will have a creator type of kInternetLocationCreator ('drag').




Table 3. Internet location file types assigned by the Finder.




Constant Name

OSType

Description

kInternetLocationHTTP

'ilht'

an http address

kInternetLocationFTP

'ilft'

a ftp server address

kInternetLocationFile

'ilfi'

a file on disk

kInternetLocationMail

'ilma'

an email address

kInternetLocationNNTP

'ilnw'

news group or article

kInternetLocationAFP

'ilaf'

Apple Filing Protocol address

kInternetLocationAppleTalk

'ilat'

an AppleTalk address

kInternetLocationGeneric

'ilge'

some other resource






Compatibility Note:
Specific file formats and contents of both clipping files and Internet location files are undocumented and subject to change without notice.



Back to top

AppleScript Support

Back to top




Help View

Apple Help


Apple Help provides system-wide instructional help services for virtually all aspects of Mac OS. The Apple Help technology has two main components: Help Viewer and Apple Guide.

Apple Guide 2.3

In Mac OS 8.5, Apple Guide is used to coach users through sequences of commands required to perform a task. Apple Guide 2.3 provides the following features:

  • supports calling a specific Apple Guide sequence by name from AppleScript

  • backwards compatibility with older guide files

  • integrated with Help Viewer

Help Viewer 1.0

Help Viewer is a lightweight HTML-rendering application that allows users to conveniently browse online help materials. Help Viewer provides the following facilities:

  • Uses the Apple Information Access Toolkit (AIAT) with the installed help files. The results are displayed in a dynamically generated HTML page.

  • AppleScript support allows callers to search for any topic or string and display the results.

  • URL links can be used to run AppleScript scripts.

  • URL links can be used to open Apple Guide sequences.

Apple recognizes many developers are interested in more information, but no further developer-level information is available at this time.

Related Materials:

Back to top




System

Inside the System File


The System file contains code and resources for running the computer. This section describes new features, changes, and bug fixes in the System file. The functionality provided by the System file is always present under Mac OS 8.5, even when the shift key is held down at system startup.

General

  • In Mac OS 8.5, the emulated 68K processor runs in user mode even when VM is off. All 68K interrupt code runs in supervisor mode. As a result, all 68K interrupt code utilizes the interrupt stack pointer instead of the user stack pointer (the stack used by non-interrupt code). This change reduces the chance of the stack overrunning the application's heap zone during interrupt processing.


WARNING:
Developers should not assume the emulated 68K processor is running in supervisor mode when Virtual Memory is OFF.



Developers who require access to supervisor mode 68K instructions can use the _EnterSupervisorMode trap to switch the processor mode. The assembler code shown in Listing 1 illustrates the correct way to call the _EnterSupervisorMode trap and enter supervisor mode. Here, the result returned by DebuggerGetMax is examined to determine if _EnterSupervisorMode (selector 8) is available. If it is available, _EnterSupervisorMode is called.

Listing 1. The correct way to ensure the 68K processor is in supervisor mode.

; Is _DebugUtil available?
; Code running on a IIci or later can skip this step.
    move.w  #_Unimplemented,d0
    _GetToolTrapAddress
    move.l  a0,-(sp)
    move.l  #$A08D,d0         ; get _DebugUtil
    _GetToolTrapAddress
    cmpa.l  (sp)+,a0          ; was this previously
                              ; unimplemented?
    beq.s   @noEnterSupervisorMode

; Is the _EnterSupervisorMode selector available?
    _DebuggerGetMax           ; check how many _DebugUtil
                              ; selectors are implemented
    cmpi.l  #8,d0             ; is selector 8 available?
    blt.s   @noEnterSupervisorMode  ; EnterSupervisorMode isn't
                             ; available

    _EnterSupervisorMode     ; switch to supervisor mode
                             ; (switches stacks)
    move.w  d0,-(sp)         ; and save the previous SR contents
                             ; on the stack
    bra.s   @inSupervisorMode

; If _EnterSupervisorMode wasn't available, then put
; sr on the stack
@noEnterSupervisorMode
    move    sr,-(sp)         ; save the current SR

@inSupervisorMode

; ...
; do stuff in supervisor mode
; remember that the stack has been swapped if we switched
; from user mode to supervisor mode.
; ...

    move    (sp)+,sr         ; restore the SR


Compatibility Note:
DebuggerGetMax is available on all machines supported by Mac OS 8.5. On other systems, developers must test for the _DebugUtil trap before calling DebuggerGetMax.Testing for VM to determine if the _EnterSupervisorMode trap should be used is considered a programming error: developers should use the above method instead.



  • Various managers, in particular Font Manager, are considerably less memory-hungry, both on a per-process and system-wide basis.

  • Several of the managers are now entirely implemented in PowerPC code.

  • The dialog informing the user that an improper shutdown occurred has been redesigned. It now includes an option to run Disk First Aid before continuing the startup process and will time out after two minutes.

    Related Materials:

Alias Manager

The Alias Manager is the part of the operating system that communicates with the File Manager to maintain alias records used to store references to file and folder locations. The Alias Manager does not create Finder alias files: the Finder creates these files and stores alias records created by the Alias Manager in them.

  • The Alias Manager's search methods have been broadened to include cases where the simple search for an existing file on a mounted volume fails, yet the absolute path stored in the alias record resolves to an existing file. In these cases, the Alias Manager will return a reference to the file found using the absolute path.

  • The Alias Manager API now provides the following new routines: IsAliasFile

    OSErr IsAliasFile(const FSSpec *fileFSSpec,
                      Boolean *aliasFileFlag,
                      Boolean *folderFlag);


    fileFSSpec is a pointer to a file specification record referring to a file.

    aliasFileFlag is a pointer to a Boolean variable set to true if the file is an alias file created by the Finder.

    folderFlag is a pointer to a Boolean variable set to true if the alias refers to folder.

    The function IsAliasFile sets *aliasFileFlag to true if the file referred to by the fileFSSpec parameter is an alias file created by the Finder.

    ResolveAliasWithMountFlags

    OSErr ResolveAliasWithMountFlags(const FSSpec *fromFile,
                      AliasHandle alias,
                      FSSpec *target,
                      Boolean *wasChanged,
                      unsigned long mountFlags);


    fromFile, if not NULL, is used to resolve relative aliases.

    alias is the AliasHandle to resolve.

    target contains a pointer to an FSSpec record that will refer to the file or directory referred to by the alias when the function completes successfully.

    wasChanged refers to a Boolean variable that will be set to true if the alias record has been modified by ResolveAliasWithMountFlags.

    mountFlags can be set to kResolveAliasFileNoUI to prevent any user interaction, including disk switch alerts, while the alias is being resolved.

    The routine ResolveAliasWithMountFlags is identical to ResolveAlias with the exception that it provides the mountFlags parameter, allowing callers to suppress disk switch alerts.

    ResolveAliasFileWithMountFlags

    OSErr ResolveAliasFileWithMountFlags(FSSpec *theSpec,
                      Boolean resolveAliasChains,
                      Boolean *targetIsFolder,
                      Boolean *wasAliased,
                      unsigned long mountFlags);


    theSpec on input refers to a FSSpec record that refers to an alias file. If the function completes successfully, it will refer to the file or the directory that was referred to by the alias file.

    resolveAliasChains turns on or off resolution of chains of alias files (for example, an alias file that refers to an alias file that finally refers to the target file).

    targetIsFolder points to a Boolean variable that will be set to true if the target referenced by the alias file was found to be a folder.

    wasAliased returns true if theSpec referred to an alias file.

    mountFlags can be set to kResolveAliasFileNoUI to prevent any user interaction, including disk switch alerts, while the alias is being resolved.

    The routine ResolveAliasFileWithMountFlags is identical to ResolveAliasFile with the exception that it provides the mountFlags parameter, allowing callers to suppress disk switch alerts.



Compatibility Note:
Before calling IsAliasFile, ResolveAliasWithMountFlags, or ResolveAliasFileWithMountFlags, developers must determine if these routines are available by testing the Alias Manager gestalt value's gestaltAliasMgrResolveAliasFileWithMountOptions bit. Also, see the InterfaceLib section for important information about linking with the new InterfaceLib.



  • The routines NewAliasMinimal or NewAlias could cause heap corruption if an invalid FSSpec record with the length of the name field greater than 63 bytes was provided as a parameter. These routines now return a paramErr error when they receive an invalid FSSpec record.

    Related Materials:

Back to top

Appearance Manager 1.1

The Appearance Manager provides facilities for providing a consistent appearance for graphical user interface elements. The Appearance Manager is not to be confused with the Appearance extension, which is compatible only with previous versions of Mac OS, and provides updates to Control Manager, Dialog Manager, Menu Manager, and Window Manager, as well as providing the 1.0.X versions of Appearance Manager. Appearance Manager 1.1 is delivered as part of the Mac OS 8.5 System File and includes the following new features:

  • Switchable visual appearances.

  • Support for data-driven appearances (though no appearance files are included with Mac OS 8.5).

  • Many new theme brushes and text colors.

  • Drawing primitives for most interface elements.

  • Support for saving and restoring the GrafPort state regardless of whether the current appearance draws using a color or pattern.

  • Several different styles of scroll bars and check boxes.

  • Appearance and font change notifications are provided by way of Apple Events. Each event uses kAppearanceEventClass as its class and one of the constants listed in Table 4 as its ID. There are no parameters to any of the events, and these events are sent only to those processes that have called RegisterAppearanceClient to register as an Appearance Manager client. Table 4 lists the new Apple Events sent to Appearance Manager clients.



Table 4. Appearance and font change Apple Events. These events use the Apple Event class kAppearanceEventClass ('appr').




Constant Name

OSType
Description

kAEAppearanceChanged

'thme'

appearance changed

kAESystemFontChanged

'sysf'

system font changed

kAESmallSystemFontChanged

'ssfn'

small system font changed

kAEViewsFontChanged

'vfnt'

views font changed




  • Animated cursor support.

  • Support for sound during various user interactions.

  • An Appearance folder has been added to the System Folder. The Appearance folder is used as a common location to store Appearance-related data files, and it is also the location of the Theme Files, Sound Sets, and Desktop Pictures folders. Appearance files are autorouted to their appropriate folders when dropped into the System Folder. Table 5 lists the new Appearance folders present in Mac OS 8.5.




Table 5. New folders for Appearance and their FindFolder selectors.




Folder Name

OSType
Description

Appearance

'appr'

Appearance-related materials

Theme Files

'thme'

location for theme files

Sound Sets

'snds'

location for appearance-related sound sets

Desktop Pictures

'dtpDesktop Pictures'

location for desktop picture files. Files of type 'JPEG' are auto-routed into this folder when dropped into the System Folder.




Back to top

ATSUI (Apple Type Services for Unicode Imaging)

Unicode is a character set which encodes the characters of many languages in a flat 16-bit number space. ATSUI extends the QuickDraw API and makes it possible for Mac OS applications to draw Unicode text. ATSUI provides both low-level services for drawing Unicode text as well as much of the high-end typographical control previously provided by QuickDraw GX.

  • Provides text imaging services for 16-bit Unicode (UTF-16).

  • ATSUI fully conforms to The Unicode Standard, Version 2.1.

  • ATSUI fully supports the Unicode bidirectional algorithm, including the bidirectional ordering codes.

  • ATSUI text-drawing can be integrated within a QuickDraw-only application (unlike QuickDraw GX, ATSUI does not require developers to adopt a non-QuickDraw API for all text drawing).

  • For fonts which lack a Unicode 'cmap' table, ATSUI will automatically generate one "on the fly". The font file is not modified, but the conversion makes certain assumptions about character encodings. For best results, it is recommend that Japanese fonts include a Unicode 'cmap'.

    Related Materials:

Back to top

Code Fragment Manager

The Code Fragment Manager (CFM) is responsible for loading and preparing PowerPC executables. Almost all of the PowerPC Mac OS and all PowerPC applications depend on the services of the CFM in some way.

  • Code Fragment Manager calls to ResolveAliasFile at system startup would attempt to put up the "Please Insert The Disk" alert before any drawing environment was established. CFM now calls ResolveAliasWithMountFlags to disable the disk switch alerts.

  • The Virtual Memory Manager's file mapping code in Mac OS 8.1 makes large chunks of file-mapped memory resident that are certain or very likely to be used in the near future. In Mac OS 8.5, that functionality has been moved into the Code Fragment Manager. Application launch performance should be approximately the same in most cases. However, files that have multiple code fragments (for example, fat CFM 68K/PowerPC applications) may benefit from this refinement.

  • CFM provides an optional facility where an application can specify a special folder to be searched for shared libraries. A field in the 'cfrg' resource provides the resource ID of an 'alis' resource. If this field is non-zero, CFM attempts to read the resource from the application's resource file and resolve it. (The assumption is that this is a relative alias to a subfolder of the application folder -- for example, a repository for plug-ins.) The Code Fragment Manager now calls the new Alias Manager routine ResolveAliasWithMountFlags to resolve aliases referenced by the 'cfrg' resource to prevent any user interaction while libraries are being loaded.

  • The Application Support folder is now part of the CFM search path.

  • CFM defines a new bit in the 'cfrg' resource which forces the fragment's code into the application heap. See the constant kCFragLibUsageMapPrivatelyMask in <CodeFragments.h> for more info. [Radar 2205428]

    Related Materials:

Back to top

Control Manager

The Control Manager provides facilities for drawing and processing user interaction with controls. New features for the Control Manager include:

  • The Control Manager is now implemented in PowerPC code.

  • There is a new edit text control variant supporting inline input.

  • The edit text control now supports locking (disabling of user input).

  • The static text control now supports text truncation.

  • The icon control's icon can now be changed dynamically.

  • Check boxes and radio buttons now support automatic toggling.

  • Proportional scrolling is now available.

  • Support for 32-bit control values has been added.

  • Facilities for associating tagged data with controls (properties) have been added.

  • A scrolling text box control (read-only text) has been added.

  • A control region API has been added.

  • A control validation API has been added.

  • Control Manager now validates ControlHandle parameters and returns an error if they are invalid.

  • Fonts used by controls can now be specified as a standard system font plus modifications.

  • The clock control now returns more part codes.

  • The edit text control now supports a validation callback procedure.

    Related Materials:

Back to top

Device Manager

The Device Manager provides a programming interface for communications between applications and device drivers (typically code that communicates with particular hardware devices, although some device drivers do not actually drive devices).

  • There are three new Driver Gestalt selectors allowing developers to return, among other things, color icons for their disk drives. Table 6 describes the new selectors.



Table 6. Driver Gestalt selectors introduced in Mac OS 8.5.




Selector Name

Value

Information Returned

kdgPhysDriveIconSuite

'dics'

A pointer to a IconFamily ('icns') data structure that can be used to represent the disk driver's physical drive (formerly in csCode 22) in driverGestaltResponse.

kdgMediaIconSuite

'mics'

A pointer to a IconFamily ('icns') data structure for representing the disk driver's media (formerly in csCode 21) in driverGestaltResponse.

kdgMediaName

'mnam'

A pointer to a Pascal string describing the disk driver (formerly in csCode 21) in driverGestaltResponse.




Related Materials:

Back to top

Dialog Manager

The Dialog Manager manages user interactions with dialogs. New features in the Dialog Manager include:

Back to top

Display Manager

The Display Manager manages changes in both the display settings and the arrangement of monitors attached to the computer.

  • With some display cards, resolutions that were marked as non-preset resolutions by the display card were not showing up in the recommended list of resolutions in the Monitors & Sound control panel. The Monitors & Sound control panel was checking the non-preset bit, while the Display Manager was not. The Display Manager would strip the lower timing and Monitors & Sound would strip the higher (not preset) timing so neither would appear in the timing list used to build the recommended list. The Display Manager now correctly observes the non-preset bit and the recommended list is built correctly.

  • In some cases, an unreadable character was appended to the end of some names returned by the Display Manager. This has been corrected.

  • A problem in the Display Manager and Monitors & Sound control panel that could cause a crash when a multiscan monitor was attached to a PowerBook has been corrected. This problem would occur upon waking a PowerBook when the monitor was disconnected during sleep if the PowerBook was put to sleep with the Monitors & Sound control panel open.

  • A problem on some machines where the display enabler would not load at startup if a smart display was plugged into the built-in monitor connector has been corrected.

    Related Materials:

Back to top

Disk Initialization Package

The Disk Initialization Package supports the formatting of disks.

  • DILoad was loading foreign file system resources into the current heap zone (usually, the current application's heap) that could cause a crash if the application quit before the resources were unloaded. These resources are now loaded into the system heap.

  • File System Manager-based file systems that support bad block sparing are now called to spare blocks when a disk driver verify request fails. This feature was unavailable in Mac OS 8.0 and Mac OS 8.1.

  • The initial value of the Format popup menu in the disk initialization dialog now indicates the current format of the disk.

    Related Materials:

Back to top

Drag Manager

The Drag Manager supports Drag-and-Drop operations between windows and applications. New features for the Drag Manager include:

  • ShowDragHilite now uses the highlight color chosen by the user in the Appearance control panel.

  • A potential crashing problem that could occur with translucent drags has been corrected in this version of the Drag Manager. In previous versions of the Drag Manager, a pointer to an unlocked relocatable block (a handle's master pointer) was being used in SetDragImage.

    Related Materials:

    • Technote TN1043, "On Drag Manager Additions (Release 1.1)"
    • Technote TN1085, "Using the Drag Manager to Interact with and Manipulate File System Entitles"
    • Q&A TB28, "Drag Manager and windowKind 20"
    • The Drag Manager SDK

Back to top

Driver Services Library

DriverServicesLib provides utility routines for native drivers ('ndrv's). The following improvements in virtual memory support have been added to the DriverServicesLib:

  • PrepareMemoryForIO now uses LockMemoryForOutput instead of LockMemory when the IOPreparationOptions are kIOIsOutput, but not kIOIsInput.

  • With Mac OS 8.5, GetPageInformation returns the kPageIsLockedResident (kPageIsLocked) PageStateInformation bit correctly. When Virtual Memory is on, kPageIsLockedResident indicates that a page has been locked with LockMemory, or LockMemoryForOutput. Before Mac OS 8.5, resident pages with the kPageIsInMemory (kPageIsResident) PageStateInformation bit set always had the kPageIsLockedResident bit set even when they were not locked.

  • With Mac OS 8.5, GetPageInformation returns a new PageStateInformation bit, kPageIsHeldResident. When Virtual Memory is on, kPageIsHeldResident indicates that a page is held in physical memory (but not necessarily locked) with HoldMemory, LockMemory or LockMemoryForOutput.

    Related Materials:

Back to top

Event Manager

The Event Manager manages the delivery of events to applications. Changes in the Event Manager include:

Back to top

File Manager

The File Manager provides services for storing and retrieving disk-based information. New features for the File Manager include:

  • PBXGetVolInfo was returning an incorrect value in ioVNmFls when ioVRefNum contained either a working directory id or volume number zero (the default directory) when the call referred to a FSM-based file system volume. As described in the File System Manager section, this has been corrected so the File Manager now passes the working directory id or zero through to FSM-based file systems, rather than converting the value to a real volume reference number first.

  • Under some circumstances, the hard disk on some PowerBook models would not spin down when it was instructed to do so by the Control Strip module. This has been corrected.

  • UnmountVol would sometimes return fBsyErr (File busy) errors when called for some server-mounted volumes because the File Manager was leaving some working directories open. This has been corrected.

  • The pleaseCacheBit (bit 4) in the ioPosMode field is now supported by the disk cache. Read/Write requests to HFS/HFS Plus volumes can now set the pleaseCacheBit in ioPosMode to request caching for larger blocks of data. File System Manager clients can also set this bit in the cacheOptions parameter to UTCacheReadIP, UTCacheWriteIP, UTVolCacheReadIP, and UTVolCacheWriteIP requests. Setting this bit does not guarantee a request will be cached; however, it does increase the probability of a request being cached.

  • PBGetFPos now clears all 16 bits of ioPosMode.

  • The routines PBAllocate and PBAllocContig have been modified so they set the value of ioActCount before they return even if an error occurs during their execution.

  • The minimum size for the disk cache is now 128K.

  • Previously, the colons occurring in file names were returned as-is, making such files unreachable using the Pascal string-based APIs. Colons are now converted to question marks (as are other non-representable characters) and the File ID is inserted in the name.

  • Calls to PBCatMove on HFS Plus-formatted volumes were creating oversized catalog file thread records, leaking space in the catalog file. This has been corrected.

  • A problem where PBGetCatSearchSync could return inconsistent results when searching HFS Plus volumes has been corrected.

  • When the HFS Plus code was saving the Volume Header information, it was sign-extending the attributes field, causing the upper bits to be set when the software lock bit (bit 15) was set. This sign extension no longer occurs.

  • PBCatSearch has been modified so it does not return catChangedErr as often as it did in previous system releases.

  • Placing a file ID in the directory ID field of a CInfoPBRec and calling PBGetCatInfo now correctly returns dirNFErr. Under Mac OS 8.1, this would incorrectly produce information about a file as if it were a directory. Before 8.1, it would return fnfErr.

  • Added a new call, PBHTrashVolumeCaches, that flushes a volume and invalidates that volume's caches in the File Manager and disk cache. Bit 2 of the vMAttrib field returned by GetVolParams is set if a volume supports this call.

  • HFS Plus volumes store all dates in UTC. In Mac OS 8.1, those dates were converted to/from local time using the current time zone and daylight savings time settings, which would cause the dates to appear to change by one hour when switching to/from daylight savings time. In Mac OS 8.5, the dates are converted using the daylight savings time setting that would have been in effect as of the date being converted.

  • In Mac OS 8.1, when a HFS or HFS Plus volume was extremely fragmented and an operation required the extents B-tree to grow beyond its maximum number of extents, the File Manager would return error -127 and leave extra bits set in the volume bitmap. (Disk First Aid would report this as a minor problem in the volume's allocation bitmap.) The File Manager has been corrected so that under these circumstances it will return a dskFulErr and it will not leave extra bits set in the volume bitmap.

  • A problem where a crash could occur when saving a log in MacsBug has been corrected. The File Manager was attempting to jump to location zero.

  • The File Manager was not properly invalidating some caches when a volume was unmounted. The most common symptoms were missing items in Finder windows when mounting/unmounting a series of floppies or disk images (such as installing software from floppies), or a disk switch dialog appearing asking for a disk with a garbage or blank name. The File Manager now correctly invalidates a volume's caches when it is unmounted.

  • A problem that could occur when mounting a CD-ROM has been corrected. In these cases, mounting a CD-ROM would sometimes lead to a dialog stating the volume needed to be repaired. Under certain conditions after a crash this could cause corruption of writable volumes when they were mounted.

  • A PBAllocContig call requesting more space than was available contiguously would return the correct error but still allocate a smaller amount of space. PBAllocContig has been changed so that under these conditions it no longer allocates any space.

  • The File Manager no longer writes to the first sector of a resource fork every time it is closed. Formerly, the first sector of a resource fork contained a copy of the 112-byte MFS directory entry intended for use by the Finder and disk repair utilities in older versions of Mac OS. No current disk repair utilities rely on this information, nor does the Finder. Removal of this extra read/write cycle speeds up Finder copies for files containing resource forks.

  • A problem that could occur when booting from a HFS volume has been corrected. If aliases to shared library files located on a Mac OS Extended volume were present in the Extensions folder, then these aliases would be modified in such a way that they would fail to resolve every time the system was rebooted. In Mac OS 8.5, such aliases resolve correctly.

  • A problem where PBDelete could return -127 and corrupt the volume bitmap when trying to delete a file on a HFS Plus volume has been corrected. This problem would occur when a filename was originally converted to Unicode using the wrong text encoding (e.g., an application creating a file using a Japanese filename without the language kit installed, but later attempting to delete the file with the language kit installed).

  • Fixed a problem where foreign (external) file systems could sometimes be called with asynchronous requests while interrupts were partially disabled. While this rarely occurred, when it did, it caused problems for some foreign file systems (such as AppleShare) that use Open Transport to communicate with file servers. All asynchronous requests to foreign file systems now start at deferred task time or at system task time, with interrupts fully enabled.


WARNING:
Copying files near the 2 GB HFS file size limit to an HFS volume will fail when the destination file's physical size goes beyond the 2 GB size limit due to larger allocation block sizes being used on the destination volume.



Related Materials:

Back to top

File System Manager

The File System Manager provides a general means by which foreign file systems can be installed, identified, and interfaced to the operating system.

  • XGetVolInfo requests (like GetVolInfo requests) to a FSM-based file system are now passed a working directory number or the default volume number (the value zero) in ioVRefNum if the File Manager caller used a working directory number or the default volume number. Under Mac OS 8.1, ioVRefNum would always contain the real volume reference number when passed to a FSM-based file system. This change lets the FSM-based file system determine what to return in ioVNmFls correctly.

  • UTTrashBlocks now correctly returns an OSErr result (either noErr, rfNumErr, or fnOpnErr). Before Mac OS 8.5, UTTrashBlocks returned the file reference number passed in as the fileRefNum parameter.

  • The File Manager's disk cache now range-checks the buffer parameter passed to UTReleaseBlock and UTMarkDirty. If the buffer parameter is bad, those calls will no longer crash the system.

    Related Materials:

Back to top

Folder Manager

The Folder Manager provides facilities for locating "special" folders (for example, the Extensions folder) without relying on the names of those folders. This aids developers in application localization.

  • Folder Manager defines new auto-routings for preferences files of type 'pref' (the Preferences folder), shared libraries (the Extensions folder), data fork fonts (the Fonts folder), Open Font Architecture plug-ins (the Extensions folder), and AppleTalk extensions (the Extensions folder).

  • FindFolder now returns the actual location of the Printer Descriptions folder.

  • Auto-routing has been added for files of type 'issp' (to Internet Search Sites).

  • Files of type 'JPEG' are now auto-routed to the Desktop Pictures folder.

  • As in pre-Mac OS 8.0 versions of the system software, the FindFolder folder cache now detects volume changes and keeps the cache up to date. In Mac OS 8.0 and Mac OS 8.1, it was possible for FindFolder to return stale data.

  • Several new folders have been defined for Mac OS 8.5. Table 7 lists these new folders and their types.




Table 7. New folders for Mac OS 8.5.




Folder Name

OSType

Description

Launcher Items

'laun'

Items appearing in the Launcher control panel. Items included in folders with names beginning with a bullet (option-8) character will appear as a separate panel in the Launcher window.

Internet Search Sites

'issf'

Internet search site specification files used by the Find application when it accesses Internet search sites. Files of type 'issp' are auto-routed to this folder.

TheFindByContent Folder

'fbcf'

An invisible folder located in a volume's root directory. This folder is used to store files created by 'Find by Content'.

Find

'fnds'

Contains files used by the Find facilities in Mac OS 8.5. This folder is located in the Extensions folder.

Installer Logs

'ilgf'

A location for saving installer log files.

ColorSync Profiles

'prof'

A location for storing ColorSync profiles.

Appearance

'appr'

Appearance-related materials

Theme Files

'thme'

The location for storing theme files

Sound Sets

'snds'

The location for storing appearance-related sound sets

Desktop Pictures

'dtp'Desktop Pictures

The location for storing desktop picture files. Files of type 'JPEG' are auto-routed into this folder when dropped into the System Folder.

Favorites

'favs'

The location for storing Internet location files, aliases, and aliases to other frequently used items. Facilities for adding items into this folder are found in Contextual Menus, the Finder, and Navigation Services, et al.

Scripts

'