![]() |
PATH![]() |
The Boot ROM contains the code needed to start up the computer, initialize and examine the hardware, provide a device tree to describe the hardware, provide hardware access services (RTAS), and control to the OS. The Boot ROM can be grouped into the following major pieces.
This is the code executed when the computer first boots. This encompasses many of the traditional Mac ROM operations and is based on the hardware initialization code used in the past: setup and initialization of the processor and ASICs, a boot beep, an error beep, diagnostics, and transfer to Open Firmware.
A small debugging Mini-Nub is part of this section. It allows prodding and poking with some MacsBug-like commands. Getting into the Debugger Nub is not possible using standard user interface input, however.
Failure to boot in POST causes the error beep, optionally entering the Mini-Nub.
The Open Firmware component of NewWorld is based on the CHRP version of Open Firmware, also known as Open Firmware 3.0. This is the most robust and full-featured Open Firmware used by Apple to date. This version of Open Firmware contains several notable changes from the Open Firmware found in the first and second generation PCI Macintosh computers:
If a boot failure occurs in Open Firmware, Open Firmware attempts to provide a Macintosh-like experience.
The Boot ROM may also contain Mac OS drivers that are hardware-specific and needed at boot time; they are organized as 'ndrv' drivers. Drivers needed at boot time (video drivers, network drivers, or disk drivers) need to be loaded from the Device Tree.
RTAS (Run-Time Abstraction Services) can be thought of as a BIOS. RTAS code handles hardware accesses needed by an OS, making it possible for multiple operating systems to get hardware services without having to know the specifics. RTAS handles hardware-specific services such as NV-RAM (containing parameter RAM), time services (the real time clock), PCI configuration cycles, power management, and the code needed to restart and shutdown.
RTAS is relocateable code; its location in RAM is determined by the OS, and it remains functional after the OS boots.
RTAS is part of the system software. It is not needed by applications, which use operating system APIs.