The actual register assignments are below. Most of the registers are the same as for the Zorro II bus, and are included here for completeness. The Amiga OS software names for these registers in the ExpansionRom or ExpansionControl structures are included. Reg ZII ZIII Bit --- --- ---- --- 00 02 100 7,6 These bits encode the PIC type: -- (er_Type) 00 Reserved 01 Reserved 10 Zorro III 11 Zorro II 5 If this bit is set, the PIC's memory will be linked into the system free pool. The Zorro III register 08 may modify the size of the linked memory. 4 Setting this bit tells the OS to read an autoboot ROM. 3 This bit is set to indicate that the next board is related to this one; often logically separate PICs are physically located on the same card. 2-0 These bits indicate the configuration size of the PIC. This size can be modified for the Zorro III cards by the size extension bit, which is the new meaning of bit 5 in register 08. Bits Unextended Extended ---- ---------- -------- 000 8 megabytes 16 megabytes 001 64 kilobytes 32 megabytes 010 128 kilobytes 64 megabytes 011 256 kilobytes 128 megabytes 100 512 kilobytes 256 megabytes 101 1 megabyte 512 megabytes 110 2 megabytes 1 gigabyte 111 4 megabytes RESERVED 04 06 104 7-0 The device's product number, which is -- (er_Product) completely up to the manufacturer. This is generally unique between different products, to help in identification of system cards, and it must be unique between devices using the automatic driver binding features. 08 0A 108 7 This was originally an indicator to place -- (er_Flags) the card in the 8 megabyte Zorro II space, when set, or anywhere it'll fit, if cleared. Under the Zorro III spec, this is set to indicate that the board is basically a memory device, cleared to indicate that the board is basically an I/O device. 6 This bit is set to indicate that the board can't be shut up by software, cleared to indicate that the board can be shut up. 5 This is the size extension bit. If cleared, the size bits in register 00 mean the same as under Zorro II, if set, the size bits indicate a new size. The most common new Zorro III sizes are the smaller ones; all new sized cards get aligned on their natural boundaries. 4 Reserved, must be 1 for all Zorro III cards. 3-0 These bits indicate a board's sub-size; the amount of memory actually required by a PIC. For memory boards that auto-link, this is the actual amount of memory that will be linked into the system free memory pool. A memory card, with memory starting at the base address, can be automatically sized by the Operating System. This sub-size option is intended to support cards with variable setups without requiring variable physical configuration capability on such cards. It also may greatly simplify a Zorro III design, since 16-megabyte cards and up can be designed with a single latch and comparator for base address matching, while 8 megabyte and smaller PICs require large latch/comparator circuits not available in standard TTL packages. Bits Encoding ---- -------- 0000 Logical size matches physical size 0001 Automatically sized by the Operating System 0010 64 kilobytes 0011 128 kilobytes 0100 256 kilobytes 0101 512 kilobytes 0110 1 megabyte 0111 2 megabytes 1000 4 megabytes 1001 6 megabytes 1010 8 megabytes 1011 10 megabytes 1100 12 megabytes 1101 14 megabytes 1110 Reserved 1111 Reserved For boards that wish to be automatically sized by the operating system, a few rules apply. The memory is sized in 512K increments, and grows from the base address upward. Memory wraps are detected, but the design must insure that its data bus doesn't float when the sizing routine addresses memory locations that aren't physically present on the board; data bus pullups or pulldowns are recommended. This feature is designed to allow boards to be easily upgraded with additional or increased density memoried without the need for memory configuration jumpers. 0C 0E 10C 7-0 Reserved, must be 0. -- (er_Reserved03) 10 12 110 7-0 Manufacturer's number, high byte. -- 14 16 114 7-0 Manufacturer's number, low bytes. These -- (er_Manufacturer) are unique, and can only be assigned by Commodore (CATS). 18 1A 118 7-0 Optional serial number, byte 0 (msb) -- 1C 1E 11C 7-0 Optional serial number, byte 1 -- 20 22 120 7-0 Optional serial number, byte 2 -- 24 26 124 7-0 Optional serial number, byte 3 (lsb) -- (er_SerialNumber) This is for the manufacturer's use and can contain anything at all. The main intent is to allow a manufacturer to uniquely identify individual cards, but it can certainly be used for revision information or other data. 28 2A 128 7-0 Optional ROM vector, high byte. -- 2C 2E 12C 7-0 Optional ROM vector, low byte. -- (er_InitDiagVec) If the ROM address valid bit (bit 4 of register (00|02)) is set, these two registers provide the sixteen bit offset from the board's base at which the start of the ROM code is located. If the ROM address valid bit is cleared, these registers are ignored. 30 32 130 7-0 Reserved, must be 0. Unsupported base -- (er_Reserved0c) register reset register under Zorro II*. 34 36 134 7-0 Reserved, must be 0. -- (er_Reserved0d) 38 3A 138 7-0 Reserved, must be 0. -- (er_Reserved0e) 3C 3E 13C 7-0 Reserved, must be 0. -- (er_Reserved0f) 40 42 140 7-0 Reserved, must be 0. Unsupported control -- (ec_Interrupt) state register under Zorro II**. 44 46 144 7-0 High order base address register, write only. -- 48 4A 148 7-0 Low order base address register, write only. -- (ec_Z3_HighByte) The high order register takes bits 31-24 of (ec_BaseAddress) the board's configured address, the low order register takes bits 23-16. For Zorro III boards configured in the Zorro II space, the configuration address is written both nybble and byte wide, with the ordering: Reg Nybble Byte --- ------ ---- 46 A27-A24 N/A 44 A31-A28 A31-A24 4A A19-A16 N/A 48 A23-A20 A23-A16 Note that writing to register 48 actually configures the board for both Zorro II and Zorro III boards in the Zorro II configuration block. For Zorro III PICs in the Zorro III configuration block, the action is slightly different. The software will actually write the configuration as byte and word wide accesses: Reg Byte Word --- ---- ---- 48 A23-A16 N/A 44 A31-A24 A31-A16 The actual configuration takes place when register 44 is written, thus supporting any physical size of configuration register. 4C 4E 14C 7-0 Shut up register, write only. Anything -- (ec_Shutup) written to 4C will cause a board that supports shut-up to completely disappear until the next reset. 50 52 150 7-0 Reserved, must be 0. -- 54 56 154 7-0 Reserved, must be 0. -- 58 5A 158 7-0 Reserved, must be 0. -- 5C 5E 15C 7-0 Reserved, must be 0. -- 60 62 160 7-0 Reserved, must be 0. -- 64 66 164 7-0 Reserved, must be 0. -- 68 6A 168 7-0 Reserved, must be 0. -- 6C 6E 16C 7-0 Reserved, must be 0. -- 70 72 170 7-0 Reserved, must be 0. -- 74 76 174 7-0 Reserved, must be 0. -- 78 7A 178 7-0 Reserved, must be 0. -- 7C 7E 17C 7-0 Reserved, must be 0. -- * The original Zorro specifications called for a few registers, like these, that remained active after configuration. Support for this is impossible, since the configuration registers generally disappear when a board is configured, and absolutely must move out of the $00E8xxxx space. So since these couldn't really be implemented in hardware, system software has never supported them. They're included here for historical purposes. ** IBID