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