Commodore Amiga 1200 — Commodore Amiga 1200 (PAL) Hardware Reference Manual PDF (EN)

SOME CAVEATS TO HARDWARE LEVEL PROGRAMMERS The Amiga is available in a variety of models and configurations, and is further diversified by a wealth of add-on expansion peripherals and processor replacements. In addition, even standard Amiga hardware such as the keyboard and floppy disks, are supplied by a number of different manufacturers and may vary subtly in both their timing and in their ability to perform outside of their specified capabilities.

The Amiga operating system is designed to operate the Amiga hardware within spec, adapt to different hardware and RAM configurations, and generally provide upward compatibility with any future hardware upgrades or "add ons" envisioned by the designers. For maximum upward compatibility, it is strongly suggested that programmers deal with the hardware through the commands and functions provided by the Amiga operating system. If you find it necessary to program the hardware directly, then it is your responsibility to write code which will work properly on various models and configurations.

Be sure to properly request and gain control of the hardware you are manipulating, and be especially careful in the following areas: Do not jump into ROM. Beware of any example code that calls routines in the $F80000 to $FFFFFF range. These are ROM addresses and the ROM routines WILL move with every OS revision. The only supported interface to system ROM code is through the provided library, device, and resource calls. Do not modify or depend on the format of any private system structures. This includes the poking of copper lists, memory lists, and library bases. Do not depend on any address containing any particular system structure or type of memory.

The system modules dynamically allocate their memory space when they are initialized. The addresses of system structures and buffers differ with every OS, every model, and every configuration, as does the amount of free memory and system stack usage. Remember that all data for direct custom chip access must be in CHIP RAM. This includes bit images (bitplanes, sprites, etc), sound samples, trackdisk buffers, and copper lists. Do not write spurious data to, or interpret undefined data from currently unused bits or addresses in the custom chip space. All undefined bits must be set to zero for writes, and ignored on reads. Do not write data past the current end of custom chip space.

Custom chips may be extended or enhanced to provide additional registers, or to use currently undefined bits in existing registers. All custom chip registers are read only OR write only. Do not read write only registers, and do not write to read only registers. - Introduction 9 -