The addresses shown here are used by the special chips (called "Agnus", "Denise", and
"Paula") for transferring data among themselves. Also, the Copper uses these addresses
for writing to the special chip registers. To write to these registers with the 68000,
calculate the 68000 address using this formula:
68000 address = (chip address) + $DFF000
For example, for the 68000 to write to ADKCON (address = $09E), the address would be
$DFF09E. No other access address is valid. Unused registers must not be accessed
All bits marked as "unused" must be written as zeros. The value of any unused read bit
must not be trusted. Registers are either read-only or write-only. Reading a write-only
register will trash the register. Writing a read-only register will cause unexpected results.
All of the "pointer" type registers are organized as 32 bits on a long word boundary. These
registers may be written with one MOVE.L instruction. The lowest bit of all pointers must
be written as zero. The custom chips can only access CHIP memory; using a non-CHIP
address will fail (See the AllocMem() documentation or your compiler manual for more
information on CHIP memory). Disk data, sprite data, bitplane data, audio data, copper
lists and anything that will be blitted or accessed by custom chip DMA must be located in
chip memory.
When strobing any register which responds to either a read or a write, (for example
copjmp2) be sure to use a MOVE.W, not CLR.W. The CLR instruction causes a read and a
clear (two accesses) on a 68000, but only a single access on 68020 processors. This will
give different results on different processors.
- 258 Appendix A -