Skip to content

Reference Address and interrupt map

pappadf edited this page Sep 14, 2026 · 1 revision

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.


Physical address map

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.

Bandit configuration space

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.

Grand Central interrupt controller

Address Register
0xF3000020 events
0xF3000024 mask
0xF3000028 clear
0xF300002C levels

The HAL's entire interrupt implementation is built on those four.

Serial (ESCC)

Address
0xF3013020 / 0xF3013030 channel A control / data — ttya, the console
0xF3013000 / 0xF3013010 channel B control / data

Interrupt routing

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.


PCI devices

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.


Timebase

11 MHz. Used for the decrementer, stalls and the performance counter.


Next

Clone this wiki locally