This appendix contains the definitive summary, in alphabetical order, of
the Amiga's custom chip register set and the usages of the individual bits.
The addresses shown here are used by the special custom chips (named
"Paula", "Agnus", and "Denise") 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 680x0, calculate the 680x0
address using this formula:
680x0 address = (chip address) + $DFF000
For example, for the 680x0 to write to ADKCON (address = $09E), the
address would be $DFF09E. No other access address is valid. Do not
attempt to access any documented or unused registers.
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.
Warning:
--------
Registers are either read-only or write-only. In the following
descriptions, if a register is marked as a read-only register, only
read its contents. Do not attempt to write to a read-only register,
as this will cause unpredictable results. If a register is marked as
a write-only register, do not attempt to read from it, as this may
trash the register and crash the system.
If a bit is described as unused in a write-only register, be sure to keep
that bit clear when writing values to that register. Similarly, do not
rely on the values of unused bits when reading from a read only register.
Further, do not write to an address or register that is not documented or
defined in this appendix. Setting unused bits in a write-only register,
reading unused bits from a read only register and writing to undocumented
registers or addresses may cause serious future software incompatibility
if those bits or addresses are implemented in the future by Amiga, Inc.
About the ECS registers.
------------------------
Registers denoted with an "(E)" in the chip column means that those
registers have been changed the Enhanced Chip Set(ECS). The ECS is
found in the A3000, and is installable in the A500 and A2000.
Certain ECS registers are completely new, others have been extended
in their functionality. See the register map in appendix c for
information on which ECS registers are new and which have been
modified.
adkcon bltsizh cop1lch dskdat joy1dat strhor
adkconr bltxdat cop1lcl dskdatr joytest strlong
audxdat bltxmod cop2lch dsklen pot0dat strvbl
audxlch bltxpth cop2lcl dskpth pot1dat vbstop
audxlcl bltxptl copcon dskptl potgo vbstrt
audxlen bpl1mod copins dsksync potgor vhposr
audxper bpl2mod copjmp1 hbstop refptr vhposw
audxvol bplcon0 copjmp2 hbstrt serdat vposr
beamcon0 bplcon1 ddfstop hcenter serdatr vposw
bltafwm bplcon2 ddfstrt hsstop serper vsstop
bltalwm bplcon3 deniseid hsstrt sprxctl vsstrt
bltcon0 bplxdat diwhigh htotal sprxdata vtotal
bltcon1 bplxpth diwstop intena sprxdatb
bltcon0l bplxptl diwstrt intenar sprxpos
bltddat clxcon dmacon intreq sprxpth
bltsize clxdat dmaconr intreqr sprxptl
bltsizv colorxx dskbytr joy0dat strequ