NOTE The offset values of the registers are the addresses that the Copper must use to talk to the registers. For example, in assembler: INCLUDE "exec/types.i" INCLUDE "hardware/custom.i" XREF custom ; External reference Start: lea _custom,a0 ; Use a0 as base register move.w #$7FFF,intena(a0) ; Disable all interrupts In C, you would use the structure definitions in hardware/custom.h For example: #include "exec/types.h" #include "hardware/custom.h" extern struct Custom custom; /* You may need to define the above external as ** extern struct Custom far custom; ** Check you compiler manual.
*/ main() { custom.intena = 0x7FFF; /* Disable all interrupts */ } The Amiga hardware include files are generally supplied with your compiler or assembler. Listings of the hardware include files may also be found in the Addison-Wesley Amiga ROM Kernel Manual "Includes and Autodocs". Generally, the include file label names are very similar to the equivalent hardware register list names with the following typical differences. o Address registers which have low word and high word components are generally listed as two word sized registers in the hardware register list, with each register name containing either a suffix or embedded "L" or "H" for low and high.
The include file label for the same register will generally treat the whole register as a longword (32 bit) register, and therefore will not contain the "L" or "H" distinction. o Related sequential registers which are given individual names with number suffixes in the hardware register list, are generally referenced from a single base register definition in the include files. For example, the color registers in the hardware list (COLOR00, COLOR01, etc.) would be referenced from the "color" label defined in "hardware/custom.i" (color+0, color+2, etc.). o Examples of how to define the correct register offset can be found in the hw_examples.i file listed in Appendix J. - 8 Introduction -