Amiga Zorro III
Released as the expansion bus of the Commodore 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. Of course, 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 3rd 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.
|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 |
|0xFF00 0000||64 KB||Zorro III Configuration unit|
|0xFF01 0000||16.0||Reserved |
The physical connector is a standard 2,54 mm spaced (100 mil) card edge connector with 2 × 50 rows of pins.
- Dave Haynie, designer of the Zorro III bus, claims in this posting that the theoretical max of the Zorro III bus can be derived by the timing information given in ‘’chapter 5’’ of the Zorro III technical specification.
- Dave Haynie, designer of the Zorro III bus, claims in this posting that Zorro III is an asynchronous bus and with that does not have a classical MHz rating. A maximum theoretical MHz value may be derived by examining timing constraints detailed in the Zorro III technical specification, which should yield about 37.5 MHz. No existing implementation performs to this level.
- Dave Haynie, designer of the Zorro III bus, claims in this posting that Zorro III has a max burst rate of 150 MB/s.
- amiga.org post by Michael Boehmer on real-life Zorro III speed
- assemblergames.com - A collection without restrictions...
- czex.com - Prometheus FAQ
- Haynie, Dave (20 March 1991). "The Zorro III Bus Specification" (PDF). Commodore-Amiga, Inc.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles> 090430 thule.no p16 fig1-1
- "The Amiga 3000+ System Specification An enhanced Amiga 3000 family computer Document Revision 0.6 1991 DevCon Release by Dave Haynie July 17, 1991 Copyright 1991 Commodore-Amiga, Inc" (PDF).<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles> 090501 thule.no p14
- "Replacement zorro slots? - English Amiga Board".<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles> 090501 eab.abime.net