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 9.0.4


This Technote describes bug fixes and enhancements present in Mac OS 9.0.4.

Mac OS 9.0.4 provides support for new Apple hardware platforms released since Mac OS 9. As such, during development some interim versions of the software were released on some hardware platforms. Where relevant, the particular release where a feature was introduced is mentioned. Version numbers for these releases include Mac OS 9.0.2, Mac OS 9.0.3, and Mac OS 9.0.4. Mac OS 9.0.4 includes all of the features and enhancements that were present in Mac OS 9.0.2 and Mac OS 9.0.3. There was no public release of Mac OS 9.0.1.

All developers interested in creating products compatible with Mac OS and being aware of issues relevant to creating products for use with the Mac OS will want to review this document.

 Updated: [Mar 31 2000]

Hardware Requirements

Mac OS 9.0.4 can be installed on any Macintosh that originally shipped with a PowerPC processor that has at least 32 megabytes of physical RAM and a minimum of 40 megabytes of logical RAM (virtual memory is set to 64 by default if there is less than 64 megabytes of physical RAM installed).

Mac OS 9.0.4 has been tested and qualified by Apple to run on Apple PowerPC-based Mac OS computers (Mac OS 9.0.4 has not been tested or qualified by Apple for use on Mac OS-compatible computers).

Mac OS 9 must be installed before the Mac OS 9.0.4 update can be installed.

Back to top

System File

Inside the System File

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

  • The German keyboard layout shipped inside of the US release of Mac OS 8.6 and Mac OS 9.0 was incorrect. It has been corrected so that Shift-# (key code $2A) in the German keyboard layout maps to a single quote character instead of a dead key.

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.

  • Creating and resolving aliases to volumes using path names was not working correctly in Mac OS 9. If an alias was created to a volume using the NewAliasMinimalFromFullPath routine and the original volume could not be found when the alias record was being resolved, then the Alias Manager would return a reference to the default volume rather than return an error. This problem was corrected in Mac OS 9.0.2 and later.

Related Materials:

The Alias Manager online documentation.

Back to top

ATSUI (Apple Type Services for Unicode Imaging)

Unicode is a character set that 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.

  • A problem where ATSUI's Unicode synthesizer would fail to convert some characters correctly when converting from Chinese text in naked-CID format has been corrected. This correction is present in Mac OS 9.0.3 and later.

  • A problem affecting the printing performance of certain applications running in the Japanese version of Mac OS 9 has been corrected. This correction is present in Mac OS 9.0.2 and later.

Related Materials:

The Apple Type Services for Unicode Imaging (ATSUI) online documentation. The ATSUI SDK.

Back to top

Date & Time Utilities

The date and time utilities provide facilities for date and time conversion.

  • A problem was found in Mac OS 9 where the StringToDate routine would add the current millennium read from the system clock to the year when translating strings containing four-digit year fields between and including the years 1000 through 1903. Here, the current millennium was being read from the system clock and added to the year in the date being translated. For example, if the time on the system clock was "March 1, 2000" and StringToDate was asked to translate the string "March 24, 1901" into a date, then the millennium from the system clock (2000) would be added to the year resulting in the date March 24th, 3901. This behavior was correct in the 1900's, but now that the century is 2000 as the date should have been translated as March 24th, 1901. The implementation of StringToDate has been corrected so that such dates are converted correctly. This problem was only present in the new PowerPC native version of the Date & Time Utilities introduced in Mac OS 9 and has been corrected in Mac OS 9.0.4.


    Inside Macintosh:Text p. 5-32 contains the statement regarding the behavior of StringToDate:

    "If the value of the input year is between 100 and 1000, then 1000 is added to it. Thus the dates 1/9/87, 1/9/987, and 1/9/1987 are equivalent."

    The actual behavior of StringToDate at the time when this statement was made was to add the century from the system clock to two-digit year values and to add the millennium from the system clock to three-digit year values when they were being converted. Hence, back in 1993, this sentence was true (1000, taken from the system clock, would have been added to three-digit dates and 1900 would have been added to two-digit dates when they were being converted).

    But now that the century has changed to 2000, this sentence is no longer true for two- and three-digit dates as StringToDate always adds the century from the system clock to two digit year values and the millennium from the system clock to three digit year values when they are being converted. The statement should be changed to read as follows:

    "If the value of the input year is between 100 and 1000, then the current millennium from the system clock is added to it. Hence, the dates returned by StringToDate for the strings 1/9/87, 1/9/987, and 1/9/1987 will vary according to the date retrieved from the system clock when StringToDate is called."

Related Materials:

The Date, Time, and Measurement Utilities online documentation.
The Converting Formatted Date and Time Strings Into Internal Numeric Representations section of Inside Macintosh:Text.

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.

  • The following new File System Manager routines that were introduced in Mac OS 9 are now exported from InterfaceLib:


Related Materials:

The File System Manager SDK.

Back to top

Mac OS USB 1.4.2

Mac OS USB is built into the Mac OS ROM file, and enables USB support for those Macintosh systems that have USB built-in.

  • The OHCI UIM has been modified so that the root hub simulation is interrupt based instead of polled. Other changes were made to the drivers for the USB keyboard and pointing devices that allow them to be used in MacsBug.

  • Added API call USBSetPipePolicy that allows for changing pipe characteristics as follows:

    • The maximum number of bytes per frame can be adjusted. This allows Isoc devices to use less bandwidth than specified in the endpoint.

    • The maximum data per. IRP. This allows the clients to set the maximum value allowed for usbReqCount (currently unimplemented).

    • The maximum service interval can be adjusted. For interrupt endpoints, this sets the polling interval.

  • USB Audio support is now provided for 16-bit mono USB Audio input devices.

  • A feature was added that allows a USBShim to be registered as a shared library. To take advantage of this feature, a USBShim must export the symbol ShimDescription that references a structure of type USBShimDescription. In the USBShimDescription structure, the USBShimLoadingOptions field must have both the kUSBRegisterShimAsSharedLibrary bit set and the libraryName field set to the CFM shared library name.

  • A new Expert Options Control Panel has been added to allow control over (a) the default Expert Status level, (b) the size of the Expert Status message buffer, and (c) and the assignment of fixed addresses to USB devices. This latter option means that if the USB topology remains unchanged across reboots, then each device will be assigned the same USB address.

  • The Power Class driver has been added to the USB Device Support driver file.

  • A buffer overrun condition was corrected in the USB Audio class driver that could result in heap corruption. A common symptom of this problem was sound input stopping after using a USB microphone for some time.

Related Materials:

Mac OS USB web page.
The Latest USB DDK.

Back to top

Memory Manager

The Memory Manager is the part of the operating system responsible for managing memory allocation requests.

  • The Memory Manager routines BlockMove and BlockMoveData have been enhanced to use the Velocity Engine for faster memory copies on machines where it is available. This enhancement appears in Mac OS 9.0.2 and later.

Related Materials:

The Memory Manager online documentation.

Multiprocessing Services

The Multitasking/Multiprocessing Library allows applications to perform pre-emptive multiprocessing operations on PowerPC computers equipped with more than one processor. The library also allows for preemptive multitasking on machines equipped with only one processor.

  • A system crash could occur in the MPEnterCriticalRegion routine when it was called with a timeout value other than kDurationImmediate or kDurationForever. This problem was corrected in Mac OS 9.0.3.

  • A memory leak that could occur when an application that used Multiprocessing Services quit has been corrected. This problem was corrected in Mac OS 9.0.3.

Related Materials:

The Multiprocessing Services online documentation.
The Multiprocessing Services SDK.

Back to top

Power Manager 2.0.1

The Power Manager provides facilities for controlling power to the internal hardware devices in capable Apple computer models.

  • Support for UPS power supply notification has been added. There is a new Power Manager feature bit that is turned on in machines that support UPS notification. The new feature bit supportsUPSIntegration defined in Power.h is used to indicate the availability of this feature.

  • The Server Mode APIs discussed in Technote 1190, "Power Manager 2.0" have been implemented on newer models where server mode is supported. The new feature bit supportsServerModeAPIs defined in Power.h is used to indicate the availability of this facility.

  • A problem where a machine would not reboot automatically when "server mode" was enabled by way of the check box in the Energy Saver control panel has been corrected. This problem would occur when the machine was using a UPS as a power source and the UPS ran out of power.

  • The Battery Monitor Control Strip Module has been corrected so that it shows a more accurate Battery Time Remaining when a second battery is installed.

  • A problem where sound output would be unavailable after waking from sleep on some G3 models has been corrected.

Related Materials:

Technote 1190, "Power Manager 2.0"
The Universal Interfaces 3.3.1.

Back to top

PPC ToolBox

The Program-to-Program Communications Toolbox provides process-to-process communications facilities both for processes running on the same machine and for processes running on different computers connected by either an AppleTalk network or a TCP/IP network.

  • Although IPCKillListPorts was introduced in Mac OS 9, there is no entry point exported from InterfaceLib with that name. However, this routine is available through the trap dispatching mechanism. For information about calling routines from PowerPC code using their trap dispatch table entry see Technote 1127, "In Search of......Missing Links*".

  • IPCKillListPorts has been changed so that it has no effect for AppleTalk connections. AppleTalk connections are now aborted based on the older time out mechanism rather than calls to IPCKillListPorts.

Related Materials:

The PPC Toolbox online documentation.
Technote 1127, "In Search of......Missing Links*"

Back to top

Resource Manager

The Resource Manager provides a data file format for storing and retrieving information used during application and operating system run time.

  • Performance of the Resource Manager's CreateResFile routine has been improved by reducing the number of calls it makes to the File Manager while a resource file is being created. This improvement should be most noticeable when calling CreateResFile to create resource files on AppleShare or NFS-mounted volumes.

Related Materials:

The Resource Manager online documentation.

Back to top

Script Manager

The Script Manager provides functions for controlling, modifying, and accessing the features of both Roman and non-Roman script systems.

  • In Mac OS 8.6 and Mac OS 9, IntlTokenize was interpreting the string "<>" incorrectly and returning the constants tokenLess and tokenGreat instead of the constant tokenLessGreat as it should have. This problem was corrected in Mac OS 9.0.3.

  • IntlTokenize was not interpreting eight-bit characters (characters with values greater than 127) correctly in Mac OS 9. This problem has been corrected.

Related Materials:

The Script Manager online documentation.

Back to top

SCSI Manager

The SCSI Manager is the part of the operating system responsible for communications with connected SCSI devices.

  • In Mac OS 9, the native SCSI Manager was not being installed at system startup. As a result, whatever version of the SCSI Manager that was stored in ROM was being used instead. This problem has been corrected.

Related Materials:

The SCSI Manager online documentation.

Back to top

Time Manager

The Time Manager provides millisecond and microsecond timing facilities for Mac OS computers.

  • New Time Manager routines have been introduced to InterfaceLib that return result codes of type OSErr. These routines do not replace the older routines; however, going forward, their use is recommended over the use of the older Time Manager routines. The new routines and their older equivalents are listed in Table 1. The older routines have always returned an error in register DO; however, in the past the high- level APIs provided no way to access this error. These new calls allow callers to determine the result code.

    Table 1. New Timer Manager tasks that return result codes and their older equivalents.

    New Routine Name

    Old Routine Name









    Compatibility Note:
    Developers should be aware that under some circumstances the Time Manager tasks may fail and return a result code describing the failure. For example, when Virtual Memory is turned on, circumstances may arise where it is not possible for the Time Manager to successfully complete a call to InstallTimeTask. Because of this possibility, developers should begin using the new routines and checking the result codes returned by the Time Manager.

  • In the PowerPC version of the Time Manager present in Mac OS 9 a problem was found where, under certain conditions, the high bit in the qType field of a Time Manager TMTask record was not being cleared immediately after a timer elapsed. Normally, this bit is cleared immediately when a timer elapses. This problem was corrected in Mac OS 9.0.2.

    One case where this problem occurred was in the delay timer used by the PowerPC version of HyperCard when drawing its transitional visual effects. Here, visual effects such as "visual effect dissolve fast" would take much longer than expected to execute.

Related Materials:

The Time Manager online documentation.

Back to top


System Extensions

System extensions are located in the Extensions folder inside the System Folder.
For a system extension to be active, it must be located in the Extensions folder
when the system starts up. Extensions are not loaded if the Shift key is held down while the system is starting up.

World Script 1

AppleScript 1.4

AppleScript is a component of the operating system that provides a scripting interface for users to automate actions that would normally require use of the menus and keyboard. Even more importantly, it allows users to access functionality of applications which would be difficult or impossible to access by hand.

  • In AppleScript 1.4 in Mac OS 9.0, compiling AppleScripts simultaneously in two separate component connections could cause a crash. This is fixed in AppleScript extension version 1.4 and later.

  • In Standard Additions 1.4 in Mac OS 9, the mount volume scripting addition was not updated to accommodate the change in AFP client behavior in Mac OS 9 regarding NAM negotiation. The result is that the mount volume command would not work with secure logins to certain servers, such as Mac OS X Server and Windows NT. This has been fixed in Standard Additions 1.4.2 and later.

    Compatibility Note:
    CarbonLib 1.0.2, which is not part of Mac OS 9.0.4 but is installed with AppleWorks 6, introduces a change to the way the Event Manager handles Apple event idleProcs. The result is that using Script Editor 1.4.1 with CarbonLib 1.0.2 will result in substantial delays in Apple event processing. Script Editor 1.4.3 and later fixes this problem.

Related Materials:

The AppleScript Web Site online documentation.
The AppleScript SDK.

Back to top


Open Transport 2.6.1

Open Transport is the networking technology for Mac OS 9.0.4. Open Transport 2.6.1 is similar to the Open Transport that was included in Mac OS 9 (version 2.5.2) with minor changes to improve performance and reliability. Specific changes include:

  • Open Transport TCP/IP now uses the same path MTU discovery algorithm as versions prior to OT 2.5, which closes a loophole that could be used by certain denial of services attacks.

  • Corrected a situation that could cause excessive network traffic (an "ARP storm") if two machines on the same network are assigned the same IP address.

  • Fixed a crashing bug when receiving empty packets on UDP port 49152. The DNR module was incorrectly handling empty packets.

  • The DHCP client now runs asynchronously, so the system continues to respond to user events while Open Transport DHCP is negotiating or renewing a DHCP lease.

  • DHCP leases with a renewal interval greater that one hour are now correctly renewed.

  • Fixed OT's interpretation of the DHCP static route option.

  • The TCP/IP preferences now correctly reflects the state of a DHCP lease.

  • Improved DHCP compatibility with certain third-party ISDN routers.

  • Improved memory usage when DHCP lease is renewed.

  • The maximum options size (TEndpointInfo.options) for "rawip" endpoints is now 256. Open Transport 2.5.x incorrectly reported this value as 233.

  • The kernel-logging routine "strlog" now correctly handles its formatting string arguments. This was broken in Open Transport 2.5.x.

  • TCP/IP networking now supports the router self-assignment configuration method implemented by some router manufacturers (for example, Nortel and Cabletron).

  • "Tuned" the TCP algorithms for better performance in common Internet environments.

  • Changes to support the AirPort base station.

Related Materials:

The Open Transport online documentation.

Back to top

World Script 1

WorldScript I

Worldscript provides language specific text services for the Mac OS.

  • With MacsBug's ebbe (even better bus error) command turned on during system startup, WorldScript I will break into MacsBug twice. This is a known problem in WorldScript I. Developers can safely pass over this error using the "g" (go) command without any problems.

Related Materials:

The WorldScript I online documentation.

Back to top



Acrobat version of this Note (76K).


Back to top

Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.