Jump to content

Macintosh Old World ROM: Difference between revisions

From RetroTechCollection
No edit summary
No edit summary
Line 1: Line 1:
[[File:Oldworldromsym.png|thumb|Showing all three icons of the OldWorld ROM (from left to right: Missing OS, Happy Mac (Found OS), and Sad Mac (Macintosh 128k/Plus) logos)]]
[[File:Oldworldromsym.png|thumb|350px|Showing all three diagnostic icons of Old World ROM: Missing OS (flashing question mark), Happy Mac (successful POST), and Sad Mac (hardware failure detected during POST)]]
'''Old World ROM''' refers to Macintosh systems that rely on a physical ROM chip containing the [[Macintosh Toolbox]] firmware—either socketed or soldered to the motherboard. This includes early Motorola 68k-based Macs, NuBus Power Macs, and PCI-based "Beige" and Platinum Power Mac G3 machines. All such models utilize a unified boot sequence grounded in Toolbox logic. Later ''New World ROM'' systems (iMac, iBook, Blue & White Power Mac G3, PowerBook G3 Lombard, and onward) replaced this approach with disk-loaded Toolbox via flash and enhanced [[Open Firmware]] 3.x.
'''Old World ROM''' refers to Apple Macintosh computer systems that store the [[Macintosh Toolbox]] firmware and boot code in physical ROM chips—either socketed or soldered to the motherboard.{{cite web |url=https://en.wikipedia.org/wiki/Old_World_ROM |title=Old World ROM |publisher=Wikipedia |access-date=2025-01-30}} This architecture encompasses all Motorola 68000-based Macintosh computers, NuBus-based Power Macintosh models, and first-generation PCI Power Macintosh systems including the "Beige" Power Macintosh G3. These machines utilize a unified, ROM-based boot sequence controlled entirely by Toolbox logic, in contrast to later [[New World ROM]] systems (beginning with the iMac and Blue & White Power Mac G3) which load the Toolbox from disk via [[Open Firmware]] 3.0.


== Architecture and Boot Process ==
== Architecture Overview ==


=== Physical Toolbox ROM ===
=== ROM Organization and Contents ===
* Stores the '''Macintosh Toolbox''' routines: QuickDraw, Menu Manager, Event Manager, Window Manager, and other low-level system functions.
The Old World ROM contains several critical components that define the Macintosh computing experience:{{cite web |url=https://en.wikipedia.org/wiki/Macintosh_Toolbox |title=Macintosh Toolbox |publisher=Wikipedia |access-date=2025-01-30}}
* Includes boot code and hardware initialization logic.
* On PowerPC systems, incorporates a '''68k nanokernel emulator''' that allows 68k Toolbox code and legacy applications to run transparently.


=== PowerPC and 68k Emulation ===
'''Core Components:'''
* PowerPC-based Old World systems begin execution in the nanokernel.
* '''[[Macintosh Toolbox]]''' routines: QuickDraw graphics engine, Window Manager, Menu Manager, Event Manager, Resource Manager, and other GUI managers
* The nanokernel emulates a Motorola 68LC040 CPU, running Toolbox firmware until Mac OS initializes native PowerPC services.
* '''Hardware initialization code''': CPU configuration, memory controller setup, bus initialization
* This dual-architecture environment allows seamless use of both 68k and PPC applications.
* '''POST diagnostics''': Power-On Self-Test routines for memory, ROM checksum, and basic hardware verification
* '''Boot loader code''': Device enumeration and System Folder location routines
* '''68LC040 emulator''' (PowerPC models): Nanokernel providing transparent 68k compatibility{{cite web |url=https://en.wikipedia.org/wiki/Old_World_ROM |title=Old World ROM |publisher=Wikipedia |access-date=2025-01-30}}


=== Role of Open Firmware ===
The ROM size evolved significantly across generations:
* Present in PCI-based Old World Macs (e.g. Power Macintosh 7200, 7500, 9500).
* '''64 KB''' - Macintosh 128K/512K (1984)
* Early Open Firmware revisions were limited: primarily enumerating PCI devices and invoking Toolbox.
* '''128 KB''' - Macintosh Plus (1986)
* Lacked robust filesystem support (e.g. HFS boot), requiring bootloaders or '''nvramrc''' patches for alternative OS installs.
* '''256 KB''' - Macintosh SE, II series (1987)
* Invoked by holding {{keypress|Cmd|Option|O|F}} at startup, although functionality is more restricted compared to New World systems.
* '''512 KB''' - Macintosh IIci, IIfx (1989)
* '''1 MB''' - Quadra series (1991)
* '''4 MB''' - Power Macintosh (1994)
 
=== PowerPC Architecture and 68k Emulation ===
PowerPC-based Old World ROM systems implement a sophisticated dual-architecture environment:{{cite web |url=http://www.hardwarebook.info/Old_World_ROM |title=Old World ROM |publisher=HardwareBook |access-date=2025-01-30}}
 
# '''Nanokernel initialization''': The PowerPC processor begins execution in the Mac OS nanokernel stored in ROM
# '''68LC040 emulation layer''': The nanokernel implements a complete Motorola 68LC040 processor emulator
# '''Toolbox execution''': The predominantly 68k-based Toolbox ROM code runs within the emulator
# '''Mixed-mode operation''': Once Mac OS loads, both native PowerPC and emulated 68k applications execute transparently
# '''Performance optimization''': Critical OS routines are progressively replaced with native PowerPC code via the Mixed-Mode Manager
 
This emulation approach allowed Apple to maintain complete backward compatibility while transitioning to the PowerPC architecture, ensuring all existing Macintosh software continued to function.
 
=== Open Firmware Implementation ===
PCI-based Old World ROM systems include a limited Open Firmware implementation:{{cite web |url=https://www.martinnobel.com/techresearch/the-open-firmware-wiki |title=The Open Firmware Wiki |author=Martin Nobel |date=2021-03-28 |access-date=2025-01-30}}
 
'''Characteristics:'''
* '''Version 1.0.5 - 2.4''': Early, minimal implementations designed primarily to enumerate PCI devices
* '''Limited functionality''': Cannot directly boot from HFS volumes or load Mac OS
* '''Toolbox as OF device''': The Macintosh Toolbox appears as an Open Firmware device that is selected by default
* '''Bug-prone''': Particularly on early machines (Power Macintosh 7200, 7500, 8500, 9500), requiring nvramrc patches or bootloader workarounds
* '''Access method''': Hold {{keypress|Cmd|Option|O|F}} at startup to enter OF prompt
 
The Open Firmware environment can be modified to boot alternative operating systems, but this requires either:
* Custom nvramrc scripts to load non-Mac OS bootloaders
* Specially-prepared boot floppies that trick the Toolbox into loading alternative kernels
* Bootloaders like BootX that run from within Mac OS


== Detailed Boot Sequence ==
== Detailed Boot Sequence ==
The boot process of an Old World ROM Macintosh is rigid and heavily defined by the Toolbox. It consists of a predictable sequence of diagnostic and initialization steps:


=== Stage 1: Power-On and Low-Level Tests ===
The Old World ROM boot process follows a deterministic sequence of hardware initialization, diagnostics, and system loading phases:{{cite web |url=http://educ.jmu.edu/~jarvislb/utils/macintosh/boot2.htm |title=Macintosh Boot Sequence |access-date=2025-01-30}}
* Upon power application or reset, the system begins execution at a fixed ROM vector.
 
* A minimal '''POST (Power-On Self-Test)''' is executed:
=== Phase 1: Power-On and Initial Hardware State ===
** '''CPU self-test:''' The CPU runs a checksum of its microcode and performs instruction validation loops.
When power is applied or the reset button is pressed:{{cite web |url=https://en.wikipedia.org/wiki/Power-on_self-test |title=Power-on self-test |publisher=Wikipedia |access-date=2025-01-30}}
** '''ROM checksum:''' The system verifies the integrity of the ROM contents.
 
** '''Memory controller test:''' Ensures DRAM controller and refresh logic are functional.
# '''Reset vector execution''': The CPU begins execution at the reset vector stored in ROM (address $000000 for 68k, specific to model for PPC)
** '''SMU/PMU init (later Macs):''' Initializes power management circuitry.
# '''Hardware initialization''': Basic hardware registers are configured to known states
# '''ROM overlay''': On 68k systems, ROM is temporarily mapped to low memory ($000000-$3FFFFF) to provide exception vectors
# '''Clock stabilization''': System waits for oscillators and PLLs to stabilize (typically 10-50ms)
 
=== Phase 2: Power-On Self-Test (POST) ===
The POST performs comprehensive hardware validation before attempting to boot:{{cite web |url=https://docs.oracle.com/cd/E19464-01/820-6850-11/POST.html |title=BIOS Power-On Self-Test (POST) Codes |publisher=Oracle |access-date=2025-01-30}}
 
==== ROM Checksum Test ====
The first diagnostic verifies ROM integrity:{{cite web |url=http://www.synack.net/~bbraun/macromboot.html |title=68k Mac ROM Boot Disk |access-date=2025-01-30}}
* '''Algorithm''': 32-bit checksum stored in first 4 bytes of ROM
* '''Calculation''': XOR or CRC of entire ROM contents
* '''Failure response''': System halt with no display (dead Mac)
* '''Bypass''': Some modified ROMs disable this check for development purposes
 
==== CPU Diagnostics ====
Basic CPU functionality verification:
* '''Instruction test''': Execute sample instructions from each class (arithmetic, logical, branch)
* '''Register test''': Write/read patterns to all general-purpose and special registers
* '''Exception test''': Verify proper exception handling for divide-by-zero, illegal instruction
* '''Cache test''' (68030/040): Validate instruction and data cache operation
 
==== Memory Test Sequence ====
The ROM performs extensive RAM testing using multiple algorithms:{{cite web |url=https://eventhelix.com/fault-handling/hardware-diagnostics/ |title=Hardware Diagnostics and Power on Self Tests |publisher=EventHelix |access-date=2025-01-30}}
 
'''Test Patterns:'''
# '''Walking ones/zeros''': Single bit moves through each memory location to detect stuck bits
# '''Address line test''': Verifies each address line functions independently
# '''Data bus test''': Alternating patterns (0x5555AAAA, 0xAAAA5555) verify all data lines
# '''March patterns''': Sequential write/read with complementary patterns
# '''Refresh test''': Verifies DRAM refresh circuitry maintains data integrity
 
'''68k Memory Test Specifics:'''
* Tests performed in ascending order from $00000000
* Each bank tested independently
* Failed addresses logged for Sad Mac error codes
* Test time increases linearly with RAM size (can be several minutes for 128MB+)
 
'''PowerPC Optimizations:'''
* Burst mode testing for faster validation
* Parallel testing of multiple banks
* Quick test option (samples rather than exhaustive)
 
==== Video Initialization ====
The ROM attempts to initialize video output:{{cite web |url=https://en.wikipedia.org/wiki/Macintosh_startup |title=Macintosh startup |publisher=Wikipedia |access-date=2025-01-30}}
 
# '''Onboard video check''': If present, initialize built-in video controller
# '''Slot scan''': Check NuBus slots 9-E or PCI slots for video cards
# '''Option ROM execution''': Run initialization code from video card ROM
# '''Frame buffer setup''': Allocate and clear video memory
# '''Gray screen''': Display uniform gray pattern to indicate video functioning
 
Failure at this stage results in no video output but the system may continue booting "blind."
 
=== Phase 3: Device Enumeration and Boot Device Selection ===
After successful POST, the ROM searches for bootable devices:{{cite web |url=http://www.hardwarebook.info/Old_World_ROM |title=Old World ROM |publisher=HardwareBook |access-date=2025-01-30}}
 
'''Search Order:'''
# '''Default startup device''': Check PRAM for user-selected boot device
# '''Floppy drive''': Check for inserted disk with System Folder
# '''Internal SCSI bus''': Scan IDs 0-6 in ascending order
# '''External SCSI bus''': Scan IDs 0-6 if no internal boot device found
# '''NuBus/PCI expansion ROMs''': Check for bootable option ROMs
 
'''Boot Device Validation:'''
For each potential boot device, the ROM verifies:
* '''Valid partition map''': Apple Partition Map or MFS/HFS volume header
* '''Blessed System Folder''': Directory entry with special attributes indicating bootability
* '''System and Finder files''': Required files present in System Folder
 
=== Phase 4: Icon Display and Feedback ===
Based on the boot device search results:
 
'''Happy Mac Icon:'''{{cite web |url=https://en.wikipedia.org/wiki/Macintosh_startup#Happy_Mac |title=Macintosh startup - Happy Mac |publisher=Wikipedia |access-date=2025-01-30}}
* Displayed when valid System Folder found
* Indicates successful hardware initialization
* Control transfers to System file
 
'''Sad Mac Icon:'''
{{Main|Sad Mac}}
* Displayed when hardware failure detected
* Accompanied by error code (one or two lines of hexadecimal)
* System halts requiring power cycle
* Later models play distinctive death chimes


* Failure at this stage results in no video output or a ''dead'' system.
'''Question Mark Disk:'''
* Flashing disk icon with question mark
* No bootable device found
* System continues searching for boot device
* User can insert bootable floppy or CD


=== Stage 2: Memory Tests ===
=== Phase 5: System Loading ===
* ROM-based memory tests probe system RAM line by line:
Once a valid boot device is found:{{cite web |url=http://educ.jmu.edu/~jarvislb/utils/macintosh/boot2.htm |title=Macintosh Boot Sequence |access-date=2025-01-30}}
** '''Data bus test:''' Writes alternating patterns (0x55, 0xAA) to detect stuck bits.
** '''Address line test:''' Walking-ones and walking-zeros patterns to check address decoding.
** '''Block pattern tests:''' Large sequential fills verify stability across DRAM banks.
* On early 68k Macs, failing DRAM produces Sad Mac codes and a hex error on-screen.
* On PCI-based Power Macs, DRAM failures trigger the [[Sad Mac Error Codes|Chimes of Death]].


=== Stage 3: Video and Display Init ===
# '''Boot blocks execution''': First 1024 bytes of boot device contain boot code
* If onboard video is present, the ROM initializes the video frame buffer, sets a default resolution, and clears the screen to gray.
# '''System heap initialization''': Allocate memory for system data structures
* If no onboard video exists, the Toolbox scans NuBus or PCI slots for a card containing a valid Option ROM with Apple video driver code.
# '''System file loading''': Load System suitcase into RAM
* Successful video init allows icons (Happy Mac, Sad Mac, question mark) to be displayed.
# '''ROM patches''': Apply bug fixes and updates to ROM routines
# '''Manager initialization''': Start Memory Manager, File Manager, Device Manager
# '''Extension loading''': Load INITs and CDEVs from System Folder
# '''Finder launch''': Start Finder application for user interface


=== Stage 4: Device Enumeration ===
== Diagnostic Indicators and Error Conditions ==
* Toolbox scans for bootable devices in a fixed order:
** Internal floppy drive (if present).
** Internal SCSI devices, lowest ID first (typically ID 0).
** External SCSI devices.
** Expansion ROMs (NuBus/PCI option cards with boot code).
* Startup disk preference is read from parameter RAM (PRAM); if not set, the default hierarchy applies.


=== Stage 5: System Folder Verification ===
=== POST Failure Symptoms ===
* If a floppy or SCSI disk is found, the ROM checks the disk for:
Different failure modes produce distinct symptoms that aid in diagnosis:{{cite web |url=https://en.wikipedia.org/wiki/Macintosh_startup |title=Macintosh startup |publisher=Wikipedia |access-date=2025-01-30}}
** A valid HFS or MFS filesystem.
** A blessed ''System Folder'' (a folder marked as bootable by Mac OS).
* If valid, the '''Happy Mac''' icon is displayed, and control is handed to the System file.
* If no valid boot disk is found, the blinking disk/question mark icon is shown.


=== Stage 6: Error Handling ===
{| class="wikitable" style="width:100%"
* '''Sad Mac''' displayed for hardware-level or early boot failures, accompanied by a hex error code.
! Symptom !! Likely Cause !! Diagnostic Approach
* '''Chimes of Death''' sound emitted on later Power Macs for fatal errors that prevent Toolbox from running.
|-
* Certain codes indicate ROM checksum failure, CPU test failure, or RAM controller issues.
| No power LED, no fan || Power supply failure || Check fuses, test PSU voltages
|-
| Power on but black screen || ROM failure, CPU failure || Reseat ROM if socketed, test with known-good chips
|-
| Gray screen, no icons || ROM checksum failure, severe RAM failure || Check first bank of RAM, verify ROM chips
|-
| Simasimac pattern || Address line failure, memory controller || Test RAM chips individually, check for corrosion
|-
| Chimes of Death || RAM failure detected by POST || Identify failed bank by chime pattern
|-
| Sad Mac with code || Specific hardware failure || Decode error code for component identification
|-
| Question mark disk || No boot device || Check SCSI chain, verify disk has System Folder
|-
| Gray screen with cursor || System software corruption || Boot from known-good disk, reinstall system
|}


== Developer Tools and ROM Manipulation ==
=== Chimes of Death ===
* Some development models used rewritable ROM SIMMs with VPP and write-enable lines for Apple-internal debugging.
Old World ROM Power Macintosh models use distinctive error sounds:{{cite web |url=https://en.wikipedia.org/wiki/Chimes_of_Death |title=Chimes of Death |publisher=Wikipedia |access-date=2025-01-30}}
* Engineers could flash new Toolbox builds directly into system ROMs.
* Public Macs were not designed for user-level ROM modification, though third-party ROM SIMMs later enabled custom firmware.


== Alternative Boot Methods ==
'''Sound Patterns:'''
* Because Toolbox is always executed first, alternative OS installs required workarounds:
* '''Car crash sound''': General hardware failure (most common)
** '''BootX''' – Loads Linux kernels from within Mac OS.
* '''Breaking glass''': Specific to certain PowerBook models
** '''Quik / iQuik''' – Forth-based bootloaders that run under Open Firmware, bypassing Toolbox.
* '''Brass instruments''': PowerPC upgrade card systems
** Special floppy images – Used to deceive Toolbox into launching non-Mac OS kernels (common in Linux PPC distributions).
* '''Simple beeps''': Late Old World ROM models
* 68k-based Macs and NuBus Power Macs require Mac OS to be present to boot any secondary operating system, including Apple’s own [[A/UX]].


== Transition and Identification ==
'''Diagnostic Value:'''
* Old World ROM machines can be identified by the absence of built-in USB ports. Only New World models introduced USB as factory standard.
* Number of tones can indicate which memory bank failed
* '''Mac OS X Support:''' Officially supported only on the Beige Power Mac G3 and PowerBook G3 Series (Wallstreet). Later systems required New World ROM.
* Timing between tones may indicate failure severity
* Transition to New World ROM marked a fundamental architectural shift: Toolbox code was loaded from disk by Open Firmware rather than residing in physical ROM.
* Absence of any sound suggests ROM or CPU failure


== See also ==
=== Memory Test Optimizations ===
Due to the lengthy memory test times with large RAM configurations:{{cite web |url=http://www.synack.net/~bbraun/macromboot.html |title=68k Mac ROM Boot Disk |access-date=2025-01-30}}
 
'''Bypass Methods:'''
* '''Command-Option-P-R''': Reset PRAM and skip extended tests
* '''Modified ROMs''': Some third-party ROMs disable memory test
* '''Warm boot''': Restart preserves memory contents, skips full test
 
== Alternative Operating Systems ==
 
=== Boot Method Limitations ===
The ROM-centric boot process creates challenges for alternative operating systems:{{cite web |url=https://happymacs.wordpress.com/2014/05/17/booting-a-linux-cd-on-your-old-world-powerpc-mac/ |title=Booting a Linux CD on Your Old World PowerPC Mac |date=2014-05-17 |access-date=2025-01-30}}
 
'''68k and NuBus Power Macs:'''
* Must boot Mac OS first
* No direct boot from alternative OS
* Requires Mac OS-based boot loader
* Examples: BootX for Linux, Basilisk II for Mac OS on Mac OS
 
'''PCI Power Macs:'''
* Can modify Open Firmware settings
* Possible to boot directly with proper OF configuration
* Requires compatible boot loader (quik, yaboot)
* Still defaults to Toolbox boot without intervention
 
=== BootX Boot Loader ===
The most common solution for running Linux on Old World ROM systems:
* '''Mac OS application''': Runs from within System 7/8/9
* '''Kernel loading''': Loads Linux kernel and initrd into memory
* '''Hardware takeover''': Disables Mac OS and transfers control to Linux
* '''System extension option''': Can intercept boot process automatically
 
=== A/UX Compatibility ===
Apple's Unix implementation required special consideration:
* '''Mac OS dependency''': A/UX required Mac OS ROM Toolbox
* '''Modified boot sequence''': Special boot blocks load A/UX kernel
* '''Toolbox emulation''': A/UX provided Mac OS compatibility layer
* '''Hardware requirements''': Only specific 68030/040 models supported
 
== Hardware Identification ==
 
=== Distinguishing Features ===
Key characteristics that identify Old World ROM systems:{{cite web |url=https://en.wikipedia.org/wiki/Old_World_ROM |title=Old World ROM |publisher=Wikipedia |access-date=2025-01-30}}
 
'''Physical Indicators:'''
* '''No built-in USB ports''': The definitive identifier (except PowerBook G3 Lombard)
* '''ADB ports''': Apple Desktop Bus for keyboard/mouse
* '''Serial ports''': RS-232/422 for printers and modems
* '''SCSI ports''': Either DB-25 or HDI-30 connectors
* '''Beige or platinum cases''': Pre-translucent design era
 
'''Technical Indicators:'''
* '''Boot chime timing''': Immediate on power-on (New World has delay)
* '''Maximum Mac OS version''': Generally limited to Mac OS 9.1 or earlier
* '''Mac OS X support''': Only Beige G3 and PowerBook G3 Wallstreet officially supported
 
=== Model Categories ===
 
'''68000 Family (1984-1994):'''
* Compact Macs: 128K through Classic II
* Modular Macs: Mac II family, Quadra series
* PowerBooks: 100 series through 500 series
* All boot directly to Toolbox
 
'''NuBus Power Macintosh (1994-1995):'''
* Power Macintosh 6100, 7100, 8100
* No Open Firmware present
* Direct Toolbox boot only
 
'''PCI Power Macintosh (1995-1998):'''
* Power Macintosh 7200, 7500, 7600, 8500, 9500, 9600
* Beige Power Macintosh G3
* PowerBook G3 Series (Wallstreet/PDQ)
* Limited Open Firmware 1.0.5-2.4
 
== ROM Modifications and Development ==
 
=== ROM SIMM Modules ===
Many Old World ROM systems use socketed ROM modules:
* '''72-pin SIMMs''': Similar to RAM but containing ROM/EPROM chips
* '''Capacity options''': 1MB, 2MB, 4MB depending on system
* '''Update capability''': Apple could ship ROM updates as replacement modules
* '''Third-party modifications''': Enthusiasts created custom ROMs with patches
 
=== Development and Debug Features ===
Apple engineering samples included special capabilities:
* '''ROM SIMM sockets with VPP''': Voltage for programming EPROMs in-system
* '''Debug ROM versions''': Additional diagnostic output and breakpoints
* '''Dual ROM sockets''': Switch between production and development ROMs
* '''Serial console output''': Diagnostic messages during boot
 
=== Common ROM Patches ===
The enthusiast community developed various ROM modifications:
* '''Memory test bypass''': Significantly faster boot times
* '''Checksum disable''': Allow further ROM modifications
* '''Boot device patches''': Support for non-standard boot devices
* '''Gestalt ID changes''': Enable features on lower-end models
 
== Transition to New World ROM ==
 
=== Architectural Changes ===
The New World ROM architecture introduced fundamental changes:
* '''ROM in RAM''': Toolbox loaded from disk into RAM
* '''Open Firmware 3.0''': Full-featured IEEE-1275 implementation
* '''Reduced ROM size''': Only 1MB boot ROM vs 4MB Old World
* '''Flexible updates''': Toolbox updates via software instead of hardware
 
=== Timeline ===
* '''August 1998''': iMac introduces New World ROM
* '''October 1998''': iBook continues New World adoption
* '''January 1999''': Blue & White Power Mac G3 brings New World to towers
* '''May 1999''': PowerBook G3 (Bronze/Lombard) - last PowerBook transition
* '''1999-2001''': All new Macs use New World ROM architecture
 
=== Compatibility Bridge ===
The Mac OS ROM file provided compatibility:
* '''Location''': System Folder on startup disk
* '''Contents''': Toolbox code previously in physical ROM
* '''Loading''': Open Firmware loads file into RAM at boot
* '''Updates''': New versions distributed with Mac OS updates
 
== Technical Specifications ==
 
=== ROM Addressing ===
Old World ROM systems map ROM at specific addresses:
 
'''68k Systems:'''
* '''Physical location''': Typically $400000-$4FFFFF (varies by size)
* '''Boot overlay''': ROM temporarily mapped to $000000 during POST
* '''Vector table''': Exception vectors copied from ROM to RAM
 
'''PowerPC Systems:'''
* '''Physical location''': $FFC00000-$FFFFFFFF (4MB window)
* '''Exception vectors''': PowerPC vectors at $FFF00000
* '''68k emulation space''': Virtual 68k addresses mapped by emulator
 
=== Performance Characteristics ===
ROM access speeds varied by generation:
* '''68000-68020''': 150-250ns ROM chips, no wait states
* '''68030-68040''': 120-150ns ROM, possible cache hits
* '''PowerPC 601-604''': 70-120ns ROM, instruction cache crucial
* '''PowerPC G3''': 60-70ns ROM, large L2 cache mitigates slow ROM
 
== See Also ==
* [[Macintosh Toolbox]]
* [[Macintosh Toolbox]]
* [[New World ROM]]
* [[Sad Mac]]
* [[Open Firmware]]
* [[Mac OS nanokernel]]
* [[Macintosh startup]]
* [[Power-On Self-Test]]
* [[Chimes of Death]]
== References ==
<references />
== External Links ==
* [https://www.folklore.org/ProjectView.py?project=Macintosh Folklore.org - Original Macintosh development stories]
* [https://68kmla.org/bb/ 68k Macintosh Liberation Army - Community forum]
* [http://www.synack.net/~bbraun/macromboot.html Mac ROM Boot - ROM modification information]
* [https://www.gryphel.com/c/minivmac/ Mini vMac - Emulator for testing Old World ROM systems]
* [https://wiki.mamedev.org/index.php/Driver:Mac_68K MAME Mac 68K Driver - Technical documentation]


== External links ==
*{{webarchive |url=https://web.archive.org/web/20020621112135/http://docs.info.apple.com/article.html?artnum=11609 |date=June 21, 2002 |title=Macintosh: ROM Size for Various Models}}
[[Category:Apple Vintage Computers]]
[[Category:Apple Vintage Computers]]

Revision as of 01:23, 31 August 2025

Showing all three diagnostic icons of Old World ROM: Missing OS (flashing question mark), Happy Mac (successful POST), and Sad Mac (hardware failure detected during POST)

Old World ROM refers to Apple Macintosh computer systems that store the Macintosh Toolbox firmware and boot code in physical ROM chips—either socketed or soldered to the motherboard. Old World ROM, Wikipedia—link(accessed 2025-01-30)

This architecture encompasses all Motorola 68000-based Macintosh computers, NuBus-based Power Macintosh models, and first-generation PCI Power Macintosh systems including the "Beige" Power Macintosh G3. These machines utilize a unified, ROM-based boot sequence controlled entirely by Toolbox logic, in contrast to later New World ROM systems (beginning with the iMac and Blue & White Power Mac G3) which load the Toolbox from disk via Open Firmware 3.0.

Architecture Overview

ROM Organization and Contents

The Old World ROM contains several critical components that define the Macintosh computing experience: Macintosh Toolbox, Wikipedia—link(accessed 2025-01-30)


Core Components:

  • Macintosh Toolbox routines: QuickDraw graphics engine, Window Manager, Menu Manager, Event Manager, Resource Manager, and other GUI managers
  • Hardware initialization code: CPU configuration, memory controller setup, bus initialization
  • POST diagnostics: Power-On Self-Test routines for memory, ROM checksum, and basic hardware verification
  • Boot loader code: Device enumeration and System Folder location routines
  • 68LC040 emulator (PowerPC models): Nanokernel providing transparent 68k compatibility

Old World ROM, Wikipedia—link(accessed 2025-01-30)


The ROM size evolved significantly across generations:

  • 64 KB - Macintosh 128K/512K (1984)
  • 128 KB - Macintosh Plus (1986)
  • 256 KB - Macintosh SE, II series (1987)
  • 512 KB - Macintosh IIci, IIfx (1989)
  • 1 MB - Quadra series (1991)
  • 4 MB - Power Macintosh (1994)

PowerPC Architecture and 68k Emulation

PowerPC-based Old World ROM systems implement a sophisticated dual-architecture environment: Old World ROM, HardwareBook—link(accessed 2025-01-30)


  1. Nanokernel initialization: The PowerPC processor begins execution in the Mac OS nanokernel stored in ROM
  2. 68LC040 emulation layer: The nanokernel implements a complete Motorola 68LC040 processor emulator
  3. Toolbox execution: The predominantly 68k-based Toolbox ROM code runs within the emulator
  4. Mixed-mode operation: Once Mac OS loads, both native PowerPC and emulated 68k applications execute transparently
  5. Performance optimization: Critical OS routines are progressively replaced with native PowerPC code via the Mixed-Mode Manager

This emulation approach allowed Apple to maintain complete backward compatibility while transitioning to the PowerPC architecture, ensuring all existing Macintosh software continued to function.

Open Firmware Implementation

PCI-based Old World ROM systems include a limited Open Firmware implementation: The Open Firmware Wiki– Martin Nobel, 2021-03-28—link(accessed 2025-01-30)


Characteristics:

  • Version 1.0.5 - 2.4: Early, minimal implementations designed primarily to enumerate PCI devices
  • Limited functionality: Cannot directly boot from HFS volumes or load Mac OS
  • Toolbox as OF device: The Macintosh Toolbox appears as an Open Firmware device that is selected by default
  • Bug-prone: Particularly on early machines (Power Macintosh 7200, 7500, 8500, 9500), requiring nvramrc patches or bootloader workarounds
  • Access method: Hold ⌘ Cmd+⌥ Option+O+F at startup to enter OF prompt

The Open Firmware environment can be modified to boot alternative operating systems, but this requires either:

  • Custom nvramrc scripts to load non-Mac OS bootloaders
  • Specially-prepared boot floppies that trick the Toolbox into loading alternative kernels
  • Bootloaders like BootX that run from within Mac OS

Detailed Boot Sequence

The Old World ROM boot process follows a deterministic sequence of hardware initialization, diagnostics, and system loading phases: Macintosh Boot Sequencelink(accessed 2025-01-30)


Phase 1: Power-On and Initial Hardware State

When power is applied or the reset button is pressed: Power-on self-test, Wikipedia—link(accessed 2025-01-30)


  1. Reset vector execution: The CPU begins execution at the reset vector stored in ROM (address $000000 for 68k, specific to model for PPC)
  2. Hardware initialization: Basic hardware registers are configured to known states
  3. ROM overlay: On 68k systems, ROM is temporarily mapped to low memory ($000000-$3FFFFF) to provide exception vectors
  4. Clock stabilization: System waits for oscillators and PLLs to stabilize (typically 10-50ms)

Phase 2: Power-On Self-Test (POST)

The POST performs comprehensive hardware validation before attempting to boot: BIOS Power-On Self-Test (POST) Codes, Oracle—link(accessed 2025-01-30)


ROM Checksum Test

The first diagnostic verifies ROM integrity: 68k Mac ROM Boot Disklink(accessed 2025-01-30)


  • Algorithm: 32-bit checksum stored in first 4 bytes of ROM
  • Calculation: XOR or CRC of entire ROM contents
  • Failure response: System halt with no display (dead Mac)
  • Bypass: Some modified ROMs disable this check for development purposes

CPU Diagnostics

Basic CPU functionality verification:

  • Instruction test: Execute sample instructions from each class (arithmetic, logical, branch)
  • Register test: Write/read patterns to all general-purpose and special registers
  • Exception test: Verify proper exception handling for divide-by-zero, illegal instruction
  • Cache test (68030/040): Validate instruction and data cache operation

Memory Test Sequence

The ROM performs extensive RAM testing using multiple algorithms: Hardware Diagnostics and Power on Self Tests, EventHelix—link(accessed 2025-01-30)


Test Patterns:

  1. Walking ones/zeros: Single bit moves through each memory location to detect stuck bits
  2. Address line test: Verifies each address line functions independently
  3. Data bus test: Alternating patterns (0x5555AAAA, 0xAAAA5555) verify all data lines
  4. March patterns: Sequential write/read with complementary patterns
  5. Refresh test: Verifies DRAM refresh circuitry maintains data integrity

68k Memory Test Specifics:

  • Tests performed in ascending order from $00000000
  • Each bank tested independently
  • Failed addresses logged for Sad Mac error codes
  • Test time increases linearly with RAM size (can be several minutes for 128MB+)

PowerPC Optimizations:

  • Burst mode testing for faster validation
  • Parallel testing of multiple banks
  • Quick test option (samples rather than exhaustive)

Video Initialization

The ROM attempts to initialize video output: Macintosh startup, Wikipedia—link(accessed 2025-01-30)


  1. Onboard video check: If present, initialize built-in video controller
  2. Slot scan: Check NuBus slots 9-E or PCI slots for video cards
  3. Option ROM execution: Run initialization code from video card ROM
  4. Frame buffer setup: Allocate and clear video memory
  5. Gray screen: Display uniform gray pattern to indicate video functioning

Failure at this stage results in no video output but the system may continue booting "blind."

Phase 3: Device Enumeration and Boot Device Selection

After successful POST, the ROM searches for bootable devices: Old World ROM, HardwareBook—link(accessed 2025-01-30)


Search Order:

  1. Default startup device: Check PRAM for user-selected boot device
  2. Floppy drive: Check for inserted disk with System Folder
  3. Internal SCSI bus: Scan IDs 0-6 in ascending order
  4. External SCSI bus: Scan IDs 0-6 if no internal boot device found
  5. NuBus/PCI expansion ROMs: Check for bootable option ROMs

Boot Device Validation: For each potential boot device, the ROM verifies:

  • Valid partition map: Apple Partition Map or MFS/HFS volume header
  • Blessed System Folder: Directory entry with special attributes indicating bootability
  • System and Finder files: Required files present in System Folder

Phase 4: Icon Display and Feedback

Based on the boot device search results:

Happy Mac Icon: Macintosh startup - Happy Mac, Wikipedia—link(accessed 2025-01-30)


  • Displayed when valid System Folder found
  • Indicates successful hardware initialization
  • Control transfers to System file

Sad Mac Icon:

  • Displayed when hardware failure detected
  • Accompanied by error code (one or two lines of hexadecimal)
  • System halts requiring power cycle
  • Later models play distinctive death chimes

Question Mark Disk:

  • Flashing disk icon with question mark
  • No bootable device found
  • System continues searching for boot device
  • User can insert bootable floppy or CD

Phase 5: System Loading

Once a valid boot device is found: Macintosh Boot Sequencelink(accessed 2025-01-30)


  1. Boot blocks execution: First 1024 bytes of boot device contain boot code
  2. System heap initialization: Allocate memory for system data structures
  3. System file loading: Load System suitcase into RAM
  4. ROM patches: Apply bug fixes and updates to ROM routines
  5. Manager initialization: Start Memory Manager, File Manager, Device Manager
  6. Extension loading: Load INITs and CDEVs from System Folder
  7. Finder launch: Start Finder application for user interface

Diagnostic Indicators and Error Conditions

POST Failure Symptoms

Different failure modes produce distinct symptoms that aid in diagnosis: Macintosh startup, Wikipedia—link(accessed 2025-01-30)


Symptom Likely Cause Diagnostic Approach
No power LED, no fan Power supply failure Check fuses, test PSU voltages
Power on but black screen ROM failure, CPU failure Reseat ROM if socketed, test with known-good chips
Gray screen, no icons ROM checksum failure, severe RAM failure Check first bank of RAM, verify ROM chips
Simasimac pattern Address line failure, memory controller Test RAM chips individually, check for corrosion
Chimes of Death RAM failure detected by POST Identify failed bank by chime pattern
Sad Mac with code Specific hardware failure Decode error code for component identification
Question mark disk No boot device Check SCSI chain, verify disk has System Folder
Gray screen with cursor System software corruption Boot from known-good disk, reinstall system

Chimes of Death

Old World ROM Power Macintosh models use distinctive error sounds: Chimes of Death, Wikipedia—link(accessed 2025-01-30)


Sound Patterns:

  • Car crash sound: General hardware failure (most common)
  • Breaking glass: Specific to certain PowerBook models
  • Brass instruments: PowerPC upgrade card systems
  • Simple beeps: Late Old World ROM models

Diagnostic Value:

  • Number of tones can indicate which memory bank failed
  • Timing between tones may indicate failure severity
  • Absence of any sound suggests ROM or CPU failure

Memory Test Optimizations

Due to the lengthy memory test times with large RAM configurations: 68k Mac ROM Boot Disklink(accessed 2025-01-30)


Bypass Methods:

  • Command-Option-P-R: Reset PRAM and skip extended tests
  • Modified ROMs: Some third-party ROMs disable memory test
  • Warm boot: Restart preserves memory contents, skips full test

Alternative Operating Systems

Boot Method Limitations

The ROM-centric boot process creates challenges for alternative operating systems: Booting a Linux CD on Your Old World PowerPC Mac, 2014-05-17—link(accessed 2025-01-30)


68k and NuBus Power Macs:

  • Must boot Mac OS first
  • No direct boot from alternative OS
  • Requires Mac OS-based boot loader
  • Examples: BootX for Linux, Basilisk II for Mac OS on Mac OS

PCI Power Macs:

  • Can modify Open Firmware settings
  • Possible to boot directly with proper OF configuration
  • Requires compatible boot loader (quik, yaboot)
  • Still defaults to Toolbox boot without intervention

BootX Boot Loader

The most common solution for running Linux on Old World ROM systems:

  • Mac OS application: Runs from within System 7/8/9
  • Kernel loading: Loads Linux kernel and initrd into memory
  • Hardware takeover: Disables Mac OS and transfers control to Linux
  • System extension option: Can intercept boot process automatically

A/UX Compatibility

Apple's Unix implementation required special consideration:

  • Mac OS dependency: A/UX required Mac OS ROM Toolbox
  • Modified boot sequence: Special boot blocks load A/UX kernel
  • Toolbox emulation: A/UX provided Mac OS compatibility layer
  • Hardware requirements: Only specific 68030/040 models supported

Hardware Identification

Distinguishing Features

Key characteristics that identify Old World ROM systems: Old World ROM, Wikipedia—link(accessed 2025-01-30)


Physical Indicators:

  • No built-in USB ports: The definitive identifier (except PowerBook G3 Lombard)
  • ADB ports: Apple Desktop Bus for keyboard/mouse
  • Serial ports: RS-232/422 for printers and modems
  • SCSI ports: Either DB-25 or HDI-30 connectors
  • Beige or platinum cases: Pre-translucent design era

Technical Indicators:

  • Boot chime timing: Immediate on power-on (New World has delay)
  • Maximum Mac OS version: Generally limited to Mac OS 9.1 or earlier
  • Mac OS X support: Only Beige G3 and PowerBook G3 Wallstreet officially supported

Model Categories

68000 Family (1984-1994):

  • Compact Macs: 128K through Classic II
  • Modular Macs: Mac II family, Quadra series
  • PowerBooks: 100 series through 500 series
  • All boot directly to Toolbox

NuBus Power Macintosh (1994-1995):

  • Power Macintosh 6100, 7100, 8100
  • No Open Firmware present
  • Direct Toolbox boot only

PCI Power Macintosh (1995-1998):

  • Power Macintosh 7200, 7500, 7600, 8500, 9500, 9600
  • Beige Power Macintosh G3
  • PowerBook G3 Series (Wallstreet/PDQ)
  • Limited Open Firmware 1.0.5-2.4

ROM Modifications and Development

ROM SIMM Modules

Many Old World ROM systems use socketed ROM modules:

  • 72-pin SIMMs: Similar to RAM but containing ROM/EPROM chips
  • Capacity options: 1MB, 2MB, 4MB depending on system
  • Update capability: Apple could ship ROM updates as replacement modules
  • Third-party modifications: Enthusiasts created custom ROMs with patches

Development and Debug Features

Apple engineering samples included special capabilities:

  • ROM SIMM sockets with VPP: Voltage for programming EPROMs in-system
  • Debug ROM versions: Additional diagnostic output and breakpoints
  • Dual ROM sockets: Switch between production and development ROMs
  • Serial console output: Diagnostic messages during boot

Common ROM Patches

The enthusiast community developed various ROM modifications:

  • Memory test bypass: Significantly faster boot times
  • Checksum disable: Allow further ROM modifications
  • Boot device patches: Support for non-standard boot devices
  • Gestalt ID changes: Enable features on lower-end models

Transition to New World ROM

Architectural Changes

The New World ROM architecture introduced fundamental changes:

  • ROM in RAM: Toolbox loaded from disk into RAM
  • Open Firmware 3.0: Full-featured IEEE-1275 implementation
  • Reduced ROM size: Only 1MB boot ROM vs 4MB Old World
  • Flexible updates: Toolbox updates via software instead of hardware

Timeline

  • August 1998: iMac introduces New World ROM
  • October 1998: iBook continues New World adoption
  • January 1999: Blue & White Power Mac G3 brings New World to towers
  • May 1999: PowerBook G3 (Bronze/Lombard) - last PowerBook transition
  • 1999-2001: All new Macs use New World ROM architecture

Compatibility Bridge

The Mac OS ROM file provided compatibility:

  • Location: System Folder on startup disk
  • Contents: Toolbox code previously in physical ROM
  • Loading: Open Firmware loads file into RAM at boot
  • Updates: New versions distributed with Mac OS updates

Technical Specifications

ROM Addressing

Old World ROM systems map ROM at specific addresses:

68k Systems:

  • Physical location: Typically $400000-$4FFFFF (varies by size)
  • Boot overlay: ROM temporarily mapped to $000000 during POST
  • Vector table: Exception vectors copied from ROM to RAM

PowerPC Systems:

  • Physical location: $FFC00000-$FFFFFFFF (4MB window)
  • Exception vectors: PowerPC vectors at $FFF00000
  • 68k emulation space: Virtual 68k addresses mapped by emulator

Performance Characteristics

ROM access speeds varied by generation:

  • 68000-68020: 150-250ns ROM chips, no wait states
  • 68030-68040: 120-150ns ROM, possible cache hits
  • PowerPC 601-604: 70-120ns ROM, instruction cache crucial
  • PowerPC G3: 60-70ns ROM, large L2 cache mitigates slow ROM

See Also

References