tbxi: the Mac OS Toolbox Imager
tbxi is a command-line Python script to help with the inspection and
modification of Macintosh Toolbox ROM images. These images contain
varying amounts of high-level Mac OS code and low-level boot code.
tbxi has two modes, both with a
tbxi dumpconverts a ROM image to a tree of self-describing text files and small binaries.
tbxi buildrebuilds the image as accurately as possible.
In between running the two commands, the directory tree can be modified.
The text-file formats produced by
tbxi dump are designed to be easily
editable using text editors and scripts.
This repository contains known-good scripts to patch the ROM, for example to add Mac mini G4 support to Mac OS 9:
Patches can be applied to a dumped directory or the the ROM file itself.
"OldWorld" (pre-USB) Macs contain a real physical ROM. "NewWorld" Macs (iMac and later) have an unusual "ROM in RAM" arrangement, which retains compatibility with the ROM-based architecture of the Mac OS while easing software updates. An almost-complete legacy ROM image is loaded from the "Mac OS ROM" file in the System Folder (type code 'tbxi'), leaving only a minimal Open Firmware "Boot ROM" in the hardware.
During the progression from 68k ROMs to NewWorld PowerPC ROMs, multiple
layers of wrapping and abstraction were added. These are reflected in
the multi-level output of
- Open Firmware bootinfo file (
Mac OS ROM=>
Bootscripttextfile + binaries)
- structured binary of "Parcels" (
Parcelfiletextfile + binaries)
- 4 MB PowerPC ROM (
Configfile-1textfile + binaries)
- 3 MB 68k ROM (
Romfiletextfile + binaries)
Some very quirky PowerPC OldWorld ROMs (e.g. PowerBook 1400/2400) cannot be rebuilt correctly. NewWorld ROMs of version 2 or later (Sawtooth G4) will be slightly different due to an uninitialised buffer in the original build process.
ROM images predating before the "SuperMario" ROM (Quadra 660AV/840AV) are not supported, excluding most 68k Mac ROMs.
tbxi dump format is likely to change. If you keep a collection of
dumped ROM images to peruse, re-dump them regularly.
Yes please! Bug reports, suggestions and requests are welcome. Open a GitHub pull request or image, or get in contact via the email on the PyPI page.
All are welcome on our retro Mac-hacking mailing list: