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