-
Notifications
You must be signed in to change notification settings - Fork 0
Reference Address and interrupt map
This page owns: the physical map and interrupt routing a HAL has to know.
For the Apple Network Server 500/700. Derived from Apple's Network Server Hardware Developer Notes and the TNT developer notes — cited, never reproduced — and confirmed against the machine.
The authoritative copy in code is
include/ans.h.
| Range | What |
|---|---|
0xF0000000 + 256 MB |
the HAL's single device window — one BAT covers both Bandits, Grand Central, Hammerhead and ROM |
0xF2000000 |
Bandit 1 — slots 1–2, both 53C825As, Grand Central, the Cirrus |
0xF4000000 |
Bandit 2 — slots 3–6 |
0xF3000000 |
Grand Central |
0xF8000000 |
Hammerhead (memory controller) |
Why one 256 MB block: the 604 has only four data BATs, and the devices span that much address
space. One block mapped at 0xB0000000 covers everything, which is what
KePhase0MapIo also uses.
| Offset from a Bandit's base | |
|---|---|
+0x00800000 |
configuration address port |
+0x00C00000 |
configuration data port |
The address port is IDSEL-encoded — a bit position, not a device number. Devices below number 11 do not exist on a Bandit bus.
Both ports reverse with the data lanes when the bridge's endian bit is set, which is a separate correctness question from the data itself.
| Address | Register |
|---|---|
0xF3000020 |
events |
0xF3000024 |
mask |
0xF3000028 |
clear |
0xF300002C |
levels |
The HAL's entire interrupt implementation is built on those four.
| Address | |
|---|---|
0xF3013020 / 0xF3013030
|
channel A control / data — ttya, the console |
0xF3013000 / 0xF3013010
|
channel B control / data |
Grand Central's internal sources are unchanged from a Power Macintosh 9500. The eleven external lines are re-purposed by the Network Server, and this is the most machine-specific table in the HAL:
| Number | Line | Device |
|---|---|---|
| 15 | — | ESCC channel A |
| 16 | — | ESCC channel B |
| 18 | — | VIA1 / Cuda cascade — ADB, the 60 Hz tick, VIA timers |
| 21 | EXT1 | both Bandits' error interrupt |
| 22 | EXT2 | 53C825A #0 |
| 26 | EXT6 | 53C825A #1 |
| — | EXT3–9 | PCI slots 1–6 |
Getting this wrong produces devices that are found and configured and never interrupt — a machine that hangs waiting for I/O, with no error.
| Bus | Device | What |
|---|---|---|
| 0 | 15 | Cirrus 54M30 — vendor 0x1013, device 0x00A0
|
| 0 | 16 | Grand Central |
| 0 | 17 | 53C825A #0 |
| 0 | 18 | 53C825A #1 |
The legacy VGA ports are reached at Bandit 1's base plus the port number.
11 MHz. Used for the decrementer, stalls and the performance counter.
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
- Making an OEM CD
- Preparing disks
- Running text-mode Setup
- Capturing the installed image
- Booting the installed system
- Iterating on the HAL
- Checkpoints and deltas
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