-
Notifications
You must be signed in to change notification settings - Fork 0
Machines PReP reference systems
This page owns: the machines NT PowerPC actually shipped for — useful because their HALs are the only working examples in existence.
Windows NT 4.0's PowerPC edition was not written for Apple hardware. It was written for PReP machines, and understanding what those were explains most of the assumptions NT brings with it.
The PowerPC Reference Platform, from IBM and Motorola: a specification for what a PowerPC computer should look like to an operating system.
From NT's point of view a PReP machine is, deliberately, quite PC-like — an ISA bus alongside PCI, an interrupt controller in a familiar arrangement, a real-time clock where one is expected, and ARC firmware.
That last is the important one. ARC gave NT a configuration tree, a callable firmware interface and boot settings in NVRAM. NT's non-x86 ports were written against it and have no fallback. → ARC
Apple's machines are not PReP. CHRP, the later standard that used Open Firmware, arrived too late for NT 4.0. That gap is the whole subject of this wiki.
From TXTSETUP.SIF's [Computer] section on the installation CD — which is also the menu Setup
offers when it cannot identify a machine:
| Entry | Machine |
|---|---|
sandal_up |
IBM Power Series 6015 |
wood_up |
IBM Power Series 6020, 6040, 6042 |
carolina_up |
IBM Power Series 6050/6070, RS/6000 Model 7248 |
victory_up / victory_mp
|
IBM RS/6000 Model E20/E30/F30, 7042/7043 |
powerstack_up |
MOTOROLA PowerStack |
powerstack2_up |
MOTOROLA PowerStack2 |
bigbend_up |
MOTOROLA Big Bend |
powerized_up / _mp
|
Powerized ES, MX, LX, TX |
Eight families, a handful of HALs between them — HALEAGLE.DLL serves both Big Bend and
PowerStack, which is why this project originally impersonated it.
→ How Setup chooses a HAL
They are on your CD, and they are the only working examples of an NT PowerPC HAL that ship as binaries. When the DDK is silent — which is most of the time — a shipped HAL is evidence.
python3 tools/pe-exports.py HALEAGLE.DLLThat gives you the exact set of 69 names an NT 4.0 PowerPC HAL must export, which is how this
project's hal.exports was established. Disassembly gives more.
None of them can be used here: a PReP HAL programs an interrupt controller this machine does not have, at addresses it does not decode. But as documentation they are excellent. → Reading NT binaries
The other reference is entii-for-workcubes,
which has something the CD's HALs do not: source.
→ Provenance and credits
Worth knowing, because each is a place where something has to be worked around on a Power Mac:
| Assumption | What it costs here |
|---|---|
| ARC firmware with NVRAM | boot settings have nowhere to live; they are injected from outside |
| A firmware tool that prepares the disk |
ARCINST does not exist here; disks are partitioned by a host tool |
| The machine identifies itself recognisably |
device-tree matches nothing, so Setup must be told |
Legacy VGA at 0xA0000 is a device, not RAM |
the video resource conflict — still worked around, ledger row 6 |
| An ISA bus exists | drivers probe ports that do not exist, and the HAL must refuse safely |
The last row is not theoretical: a PCMCIA driver probing an ISA port at 0x3E0 killed the machine
outright until the HAL learned to decline addresses the bridge does not decode.
Corrections welcome — this wiki is edited directly, so nothing here has had a review. Repository · STORY.md · GPL-2.0-only
Start here
Theory
- Why NT on a Power Mac is hard
- Open Firmware
- ARC
- The veneer
- The NT boot chain
- The HAL contract
- The NT PowerPC ABI
- Little-endian PowerPC
- How Setup chooses a HAL
- The NT video stack
Machines
Emulator
- Getting Granny Smith
- Media you must supply
- Building the HAL
- The boot floppy
- Preparing disks
- Running text-mode Setup
- Capturing the installed image
- Booting the installed system
- Iterating on the HAL
- Checkpoints and deltas
- Making an OEM CD (retired)
Real hardware
Debugging
- The emulator shell
- Reading NT binaries
- Decoding a bugcheck
- When your instrumentation lies
- Debugging recipes
Reference
- HAL exports
- ARC environment variables
- The veneer's VrDebug bitmask
- Veneer patch catalogue
- Address and interrupt map
- Error codes seen
Project