[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

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