# Amiga Zorro III

Released as the expansion bus of the Amiga 3000 in 1990, the Zorro III computer bus was used to attach peripheral devices to an Amiga motherboard. Designed by Commodore International lead engineer Dave Haynie, the 32-bit Zorro III replaced the 16-bit Zorro II bus used in the Amiga 2000. As with the Zorro II bus, Zorro III allowed for true Plug and Play autodetection (similar to, and prior to, the PC's PCI bus) wherein devices were dynamically allocated the resources they needed on boot.
Zorro III continued Zorro II's direct memory-mapped address design (unlike 80x86 processors, the MC68K family used in the Amiga did not have a separate I/O address mechanism). Just as with Zorro II on 24-bit systems, Zorro III reserved a large chunk of 32-bit real memory address space for large memory mapped cards, a smaller chunk with smaller allocation granularity for "I/O" type board. Zorro III was never supported on 24-bit address or 16-bit data devices—it required a full 32-bit CPU. The CPU could directly address any Zorro III device as memory, so Zorro memory expansions could be made (and were made) as well as it being possible to use video memory on a video card to be as system RAM.
As an asynchronous bus, Zorro III specified bus cycles of set lengths during which a transaction conforming to the specifications of the bus could be carried out. The initial implementation of Zorro III was in Commodore's "Fat" Buster (BUS conTrollER) gate array, assisted by a very high speed PAL and numerous TTL buffer chips for bus buffering, isolation, and multiplexing. The Amiga 4000 implementation was fundamentally the same, but integrated a second gate-array to replace the TTL buffers. The Buster chip provided bus arbitration, translation between the MC68030 bus protocols and either Zorro II or Zorro III bus cycles (geographically mapped based on the Zorro bus address), and a vectored interrupt mechanism, generally not used. Zorro II bus masters were legal bus hogs, but Zorro III devices were fairly arbitrated and had controller-limited bus tenure.
Despite being a 32-bit bus, Zorro III used the same 100 way slot and edge connector as Zorro II. The extra address and data lines were provided by multiplexing some of the existing connections with the nature of the lines changing at different stages of the bus access cycle (e.g. address becoming data). However, the bus was not fully multiplexed; the lower 8-bits of address were available during data cycles, which allowed Zorro III to support a fast burst cycle in page-mode. Properly designed Zorro II expansion cards could coexist with Zorro III cards; it was not a requirement of a Zorro III bus master to support DMA access to Zorro II bus targets. Cards could detect a Zorro III vs. Zorro II backplane, allowing certain Zorro III cards to function when connected to the older Zorro II bus, though at Zorro II's reduced data rates.
The Zorro III bus has a theoretical bandwidth of 150 MByte/s, based on an ideal Zorro III master and slave device running with minimum setup and hold times. The real transfer speed between the Amiga 3000/4000 implementation of Zorro III and a Zorro III card is somewhere around 13.5 MByte/s due to the limitations of the Buster chip. This was comparable to Intel's first PCI implementation, which peaked at 25 MByte/s. Zorro III was optimized for future single-chip implementations of the protocol, but the resources available at Commodore in 1990 limited the initial implementation.
This is also the limiting factor with third-party Amiga PCI expansion boards like e.g. Elbox Mediator PCI or the Matay Prometheus PCI (about 12 MByte/s PCI to 68k-system). DMA transfers between two Zorro III cards (or PCI cards on an PCI expansion board) can be much faster.

## Memory map

| Address | Size [MByte] | Description |
| 0x0000 0000 | 2.0 | Chip memory |
| 0x0020 0000 | 8.0 | Zorro II memory expansion space |
| 0x00A0 0000 | 1.5 | Zorro II I/O expansion space |
| 0x00B8 0000 | 3.0 | A2000 motherboard register space |
| 0x00E8 0000 | 0.5 | Zorro II I/O |
| 0x00F0 0000 | 1.0 | Motherboard ROM |
| 0x0100 0000 | 112.0 | A3000 motherboard space |
| 0x0800 0000 | 128.0 | 32-Bit memory expansion space |
| 0x1000 0000 | 1792.0 | Zorro III expansion space |
| 0x8000 0000 | 2032.0 | Reserved |
| 0xFF00 0000 | 64 KB | Zorro III Configuration unit |
| 0xFF01 0000 | 16.0 | Reserved |
| 0xFFFF FFFF | 16.0 | Reserved |

## Physical

The physical connector is a standard 2,54 mm spaced (100 mil) card edge connector with 2 × 50 rows of pins.
Power:
| [Volt] | [Ampere] |
| 0+5 | < 2.0 |
| 0−5 | < 0.3 |
| +12 | < 8.0 |
| −12 | < 0.3 |