Mac OS 9 SCSI and IDE Storage Driver Initialization
Mac OS 9 managed storage device initialization through a coordinated process involving Open Firmware, low-level hardware managers, and partition-level drivers. Unlike modern operating systems that rely exclusively on monolithic kernel driver bundles, Mac OS 9 utilized a hybrid approach where storage drivers were often read directly from reserved partitions on the storage media itself. This article details the initialization path for both SCSI and IDE/ATA devices under Mac OS 9, from early hardware detection by the ATA and SCSI Managers to driver execution within the system heap and registration with the Device Manager.
During the boot phase on PowerPC systems, Open Firmware first detects the hardware controllers on the PCI or internal buses. Once control shifts to the Mac OS 9 system environment, device initialization splits between two primary subsystems: SCSI Manager 4.3 (or later) for SCSI buses and the ATA Manager for internal IDE/ATA buses. These managers interface with hardware-specific plugins known as SCSI Interface Modules (SIMs) and ATA Interface Modules to query the physical buses for connected targets.
The identification of media relies on the Apple Partition Map (APM).
When the SCSI or ATA Manager detects a physical drive, it issues
low-level read commands (using primitive firmware routines) to block 0
of the drive, the Driver Descriptor Record (DDR). The DDR contains
pointers to the disk drivers stored on dedicated partitions. For SCSI
devices, this typically points to an Apple_Driver43
partition containing an asynchronous, PowerPC-native or 68k driver. For
IDE devices, it references an Apple_Driver_ATA
partition.
Once located, the operating system reads the driver code directly from the media and loads it into the system heap. This mechanism allowed third-party drive manufacturers (such as FWB or LaCie) to install customized drivers onto the drive itself, ensuring compatibility without requiring pre-installed system extensions. However, for internal IDE drives shipped with Apple hardware, Mac OS 9 could also fall back on generic ROM-based or System-embedded ATA drivers managed by the Driver Services Library (DSL) if no valid driver was found on the partition map.
After loading the driver into memory, Mac OS 9 initializes it using the Device Manager architecture. The driver registers itself in the system's Unit Table, receiving a unique unit number and driver reference number (refNum). For native PowerPC drivers, the system integrates the device into the Name Registry, establishing properties for device capabilities, block size, and transfer modes (such as DMA or PIO for IDE devices).
With the driver active in the Unit Table, the Device Manager issues
an open call (DrvrOpen), causing the driver to verify the
drive's geometry and readiness. Once the driver confirms the device is
operational, the File Manager parses the drive's remaining partition map
entries, identifies mountable HFS or HFS+ file systems, and proceeds to
mount the corresponding volumes to the desktop.