490 lines
23 KiB
Plaintext
490 lines
23 KiB
Plaintext
|
CHAPTER 1
|
||
|
|
||
|
INTRODUCTION
|
||
|
|
||
|
|
||
|
The Amiga family of computers consists of several models, each of which
|
||
|
has been designed on the same premise to provide the user with a low cost
|
||
|
computer that features high cost performance. The Amiga does this through
|
||
|
the use of custom silicon hardware that yields advanced graphics and
|
||
|
sound features.
|
||
|
|
||
|
There are three distinct models that make up the Amiga computer family:
|
||
|
the A500, A1000, and A2000. Though the models differ in price and
|
||
|
features, they have a common hardware nucleus that makes them software
|
||
|
compatible with one another. This chapter describes the Amiga's hardware
|
||
|
components and gives a brief overview of its graphics and sound features.
|
||
|
|
||
|
- Introduction 1 -
|
||
|
|
||
|
|
||
|
COMPONENTS OF THE AMIGA
|
||
|
|
||
|
These are the hardware components of the Amiga:
|
||
|
|
||
|
o Motorola MC68000 16/32 bit main processor. The Amiga also supports the
|
||
|
68010, 68020, and 68030 processors as an option.
|
||
|
|
||
|
o 512K bytes of intemal RAM, expandable to 1 MB on the A500 and A2000.
|
||
|
|
||
|
o 256K bytes of ROM containing a real time, multitasking operating system
|
||
|
with sound, graphics, and animation support routines.
|
||
|
|
||
|
o Built-in 3.5 inch double sided disk drive.
|
||
|
|
||
|
o Expansion disk port for connecting up to three additional disk drives,
|
||
|
which may be either 3.5 inch or 5.25 inch, double sided.
|
||
|
|
||
|
o Fully programmable RS-232-C serial port.
|
||
|
|
||
|
o Fully prograrnmable parallel porl.
|
||
|
|
||
|
o Two button opto-mechanical mouse.
|
||
|
|
||
|
o Two reconfigurable controller ports (for mice, joysticks, light pens,
|
||
|
paddles, or custom controllers).
|
||
|
|
||
|
o A professional keyboard with numeric keypad, 10 function keys, and cursor
|
||
|
keys. A variety of international keyboards are also supported.
|
||
|
|
||
|
o Ports for simultaneous composite video, and analog or digital RGB output.
|
||
|
|
||
|
o Ports for left and right stereo audio from four special purpose audio
|
||
|
channels.
|
||
|
|
||
|
o Expansion options that allow you to add RAM, additional disk drives
|
||
|
(floppy or hard), peripherals, or co-processors.
|
||
|
|
||
|
THE MC6X000 AND THE AMIGA CUSTOM CHIPS
|
||
|
Thc Motorola 68000 is a 16/32 bit microprocessor. The system clock speed for
|
||
|
NTSC Amigas is 7.15909 megahertz (PAL 7.09379 MHz). These speeds may vary
|
||
|
when using an extemal system clock, such as from a genlock. The 68000 has
|
||
|
an address space of 16 megabytes. In the Amiga, thc 68000 can address over
|
||
|
8 megabytes of continuous random access memory (RAM).
|
||
|
|
||
|
- 2 Introduction -
|
||
|
|
||
|
|
||
|
In addition to the 68000, the Amiga contains special purpose hardware
|
||
|
known as the "custom chips" that greatly enhance system performance. The
|
||
|
term "custom chips" refers to the 3 intergrated circuits which were
|
||
|
designed specifically for the Amiga computer. These three custom chips
|
||
|
(called Agnus, Paula, and Denise) each contain the logic to handle a
|
||
|
specific set of tasks, such as video, sound, direct memory access (DMA),
|
||
|
or graphics.
|
||
|
|
||
|
Among other functions, the custom chips provide the following:
|
||
|
|
||
|
o Bitplane generated, high resolution graphics capable of supporting both PAL
|
||
|
and NTSC video standards.
|
||
|
|
||
|
- On NTSC systems the Amiga typically produces a 320 by 200 non-interlaced
|
||
|
or 320 by 400 interlaced display in 32 colors and a 640 by 200 non-
|
||
|
interlaced or 640 by 400 interlaced display in 16 colors.
|
||
|
|
||
|
- On PAL systems, thc Amiga typically produces a 320 by 256 non-interlaced
|
||
|
or 320 by 512 interlaced display in 32 colors, and a 640 by 256 non-
|
||
|
interlaced or 640 by 512 interlaced display in 16 colors.
|
||
|
|
||
|
Additional video modes allow for the display of up to 4,096 colors on
|
||
|
screen simultaneously (hold-and-modify) or provide for larger, higher
|
||
|
resolution displays (overscan).
|
||
|
|
||
|
o A custom display co-processor that allows changes to most of the special
|
||
|
purpose registers in synchronization with the position of the video beam.
|
||
|
This allows such special effects as mid-screen changes to the color
|
||
|
palette, splitting the screen into multiple horizontal slices each having
|
||
|
different video resolutions and color depths, beam synchronized interrupt
|
||
|
generation for the 68000 and more. The co-processor can trigger many
|
||
|
times per screen, in the middle of lines, and at the beginning or during
|
||
|
the blanking interval. The co-processor itself can directly affect most
|
||
|
of the registers in the other custom chips, freeing the 68000 for general
|
||
|
computing tasks.
|
||
|
|
||
|
o 32 system color registers, each of which contains a twelve bit number as
|
||
|
four bits of RED, four bits of GREEN, and four bits of BLUE intensity
|
||
|
information. This allows a system color palette of 4,096 different
|
||
|
choices of color for each register.
|
||
|
|
||
|
o Eight reusable 16 bit wide sprites with up to 15 color choices per
|
||
|
sprite pixel (when sprites arc paired). A sprite is an easily movable
|
||
|
graphics object whose display is entirely independent of the background
|
||
|
(called a playfield); sprites can be displayed over or under this
|
||
|
background. A sprite is 16 low resolution pixels wide and an arbitrary
|
||
|
number of lines tall. After producing the last line of a sprite on the
|
||
|
screen, a sprite DMA channel may be used to produce yet another sprite
|
||
|
image elsewhere on screen (with at least one horizontal line between each
|
||
|
reuse of a sprite processor). Thus, many small sprites can be produced by
|
||
|
simply reusing the sprite processors appropriately.
|
||
|
|
||
|
o Dynamically controllable inter-object priority, with collision
|
||
|
detection. This means that the system can dynamically control the video
|
||
|
priority between the sprite objects and the bitplane backgrounds
|
||
|
(playfields). You can control which object or objects appear over or
|
||
|
under the background at any time.
|
||
|
|
||
|
- Introduction 3 -
|
||
|
|
||
|
|
||
|
Additionally, you can use system hardware to detect collisions between
|
||
|
objects and have your program react to such collisions.
|
||
|
|
||
|
o Custom bit blitter used for high speed data movement, adaptable to
|
||
|
bitplane animation. The blitter has been designed to efficiently retrieve
|
||
|
data from up to three sources, combine the data in one of 256 different
|
||
|
possible ways, and optionally store the combined data in a destination
|
||
|
area. This is one of the situations where the 68000 gives up memory
|
||
|
cycles to a DMA channel that can do the job more efficiently (see below).
|
||
|
The bit blitter, in a special mode, draws pattemed lines into
|
||
|
rectangularly organized memory regions at a speed of about 1 million dots
|
||
|
per second; and it can efficiently handle area fill.
|
||
|
|
||
|
o Audio consisting of four digital channels with independently
|
||
|
programmable volume and sampling rate. The audio channels retrieve their
|
||
|
control and data via direct memory access. Once started, each channel can
|
||
|
automatically play a specified waveform without further processor
|
||
|
interaction. Two channels are directed into each of the two stereo audio
|
||
|
outputs. The audio channels may be linked together to provide amplitude or
|
||
|
frequency modulation or both forms of modulation simultaneously.
|
||
|
|
||
|
o DMA controlled floppy disk read and write on a full track basis. This
|
||
|
means that the built-in disk can read over 5600 bytes of data in a single
|
||
|
disk revolution (11 sectors of 512 bytes each).
|
||
|
|
||
|
The interal memory shared by the custom chips and the 68000 CPU is also
|
||
|
called "chip memory". The original custom chips in the Amiga were
|
||
|
designed to be able to physically access up to 512K bytes of shared
|
||
|
memory. The new version of the Agnus custom chip was created which allows
|
||
|
the graphics and audio hardware to access up to a full megabyte of
|
||
|
memory.
|
||
|
|
||
|
The Amiga 500 and 2000 models were designed to be able to accept the new
|
||
|
Agnus custom chip, called "Fat Agnus", due to its square shape. Hence,
|
||
|
the A500 and A2000 have allocated a chip memory space of 1 MB. This
|
||
|
entire 1 MB space is subject to thc arbitration logic that controls the
|
||
|
CPU and custom chip accesses. On the A1000, only the first 512K bytes of
|
||
|
memory space is shared, chip memory.
|
||
|
|
||
|
These custom chips and the 68000 share memory on a fully interleaved
|
||
|
basis. Since the 68000 only needs to access the memory bus during each
|
||
|
altemate clock cycle in order to run full speed, the rest of the time the
|
||
|
memory bus is free for other activities. The custom chips use the memory
|
||
|
bus during thcse free cycles, effectivcly allowing thc 68000 to run at
|
||
|
full rated spced most of the time. We say "most of the time" because
|
||
|
there are some occasions when the special purpose hardware steals memory
|
||
|
cycles from the 68000, but with good reason. Specifically, the
|
||
|
coprocessor and the data moving DMA channel called the blitter can each
|
||
|
steal time from the 68000 for jobs they can do bctter than the 68000.
|
||
|
Thus, the system DMA channels are designed with maximum performance in
|
||
|
mind. The job to be done is performcd by the most efficient hardware
|
||
|
element available. Even when such cycle stealing occurs, it only blocks
|
||
|
the 68000's access to the internal, shared memory. When using ROM or
|
||
|
extemal memory, the 68000 always runs at full speed.
|
||
|
|
||
|
- 4 Introduction -
|
||
|
|
||
|
|
||
|
Another primary feature of the Amiga hardware is the ability to
|
||
|
dynamically control which part of the chip memory is used for the
|
||
|
background display. audio, and sprites. The Amiga is not limited to a
|
||
|
small, specific area of RAM for a frame buffer. Instead, the system
|
||
|
allows display bitplanes, spritc processor control lists, coprocessor
|
||
|
instruction lists, or audio channel control lists to be located anywhere
|
||
|
within chip memory.
|
||
|
|
||
|
This same region of memory can be accessed by the bit blitter. This
|
||
|
means, for example, that the user can store partial images at scattered
|
||
|
areas of chip memory and use these images for animation effects by
|
||
|
rapidly replacing on screen material while saving and restoring
|
||
|
background images. In fact, the Amiga includes firmware support for
|
||
|
display definition and control as well as support for animated objects
|
||
|
embedded within playfields.
|
||
|
|
||
|
VCR AND DIRECT CAMERA INTERFACE
|
||
|
In addition to the connectors for monochrome composite, and analog or
|
||
|
digital RGB monitors, the Amiga can be expanded to include a VCR or
|
||
|
camera interface. This system is capable of synchronizing with an external
|
||
|
video source and replacing the system background color with the extemal
|
||
|
image. This allows development of fully integrated video images with
|
||
|
computer generated graphics. Laser disk input is accepted in the same
|
||
|
manner.
|
||
|
|
||
|
PERIPHERALS
|
||
|
Floppy disk storage is provided by a built in, 3.5 inch floppy disk
|
||
|
drive. Disks are 80 track, double sided, and formatted as 11 sectors per
|
||
|
track, 512 bytes per sector (over 900,000 bytes per disk). The disk
|
||
|
controller can read and write 320/360K IBM PCTM (MS-DOSTM) fommatted 3.5
|
||
|
or 5.25 inch disks, and 640/720K IBM PC (MS-DOS) fommatted 3.5 inch
|
||
|
disks. Extemal 3.5 inch or 5.25 inch disk drives can be added to the
|
||
|
system through the expansion connector. Circuitry for some of the
|
||
|
peripherals resides on Paula. Other chips handle various signals not
|
||
|
specifically assigned to any of the custom chips, including modem
|
||
|
controls, disk status sensing, disk motor and stepping controls, ROM
|
||
|
enable, parallel input/output interface, and keyboard interface.
|
||
|
|
||
|
The Amiga includes a standard RS-232-C serial port for extemal serial
|
||
|
input/output devices.
|
||
|
|
||
|
A keyboard with numeric keypad, cursor controls and 10 function keys is
|
||
|
included in the base system. For maximum flexibility, both key-down and
|
||
|
key-up signals are sent. The Amiga also supports a variety of
|
||
|
intemational keyboards. Many other types of controllers can be attached
|
||
|
through thc two controller ports on the base unit. You can use a mouse,
|
||
|
joystick, keypad, track-ball, light pen, or steering wheel controller in
|
||
|
either of the controller ports.
|
||
|
|
||
|
- Introduction 5 -
|
||
|
|
||
|
|
||
|
SYSTEM EXPANDABILITY AND ADAPTABILITY
|
||
|
New peripheral devices may be easily added to all Amiga models. These
|
||
|
devices are automatically recognized and used by system software through
|
||
|
a well defined, well documented linking procedure called AUTOCONFIG.
|
||
|
|
||
|
On the A500 and A1000 models, peripheral devices can be added to the
|
||
|
Amiga's 86 pin expansion connector, including additional extemal RAM.
|
||
|
Extra disk units may be added from a connector at the rear of the unit.
|
||
|
|
||
|
The A2000 model provides the user with the same features as the A500 or
|
||
|
A1000, but with the added convenicnce of simple and extensive
|
||
|
expandability. The 86 pin, external connector of the A1000 and A500 is
|
||
|
not extemally accessible on the A2000. Instead, the A2000 contains 7
|
||
|
internal slots that allow many types of expansion boards to be quickly
|
||
|
and easily added inside the machine. These expansion boards may contain
|
||
|
coprocessors, RAM expansion, hard disk controllers, video or I/O ports.
|
||
|
There is also room to mount both floppy and hard disks intemally. The
|
||
|
A2000 also supports the special Bridgeboard coprocessor card. This
|
||
|
provides a complete IBM PC on a card and allows the Amiga to run MS-DOS
|
||
|
compatible software, while simultaneously running native Amiga software.
|
||
|
|
||
|
- 6 Introduction -
|
||
|
|
||
|
|
||
|
ABOUT THE EXAMPLES
|
||
|
|
||
|
The examples in this book all demonstrate direct manipulation of the
|
||
|
Amiga hardware. However, as a general rule, it is not permissible to
|
||
|
directly access the hardware in the Amiga unless your software either has
|
||
|
full control of the system, or has arbitrated via the OS for exclusive
|
||
|
access to the panicular parts of the hardware you wish to control.
|
||
|
|
||
|
Almost all of the hardware discussed in this manual, most notably the
|
||
|
Blitter, Copper, playfield, sprite, CIA, trackdisk, and system control
|
||
|
hardware, are in either exclusive or arbitrated use by portions of the
|
||
|
Amiga OS in any running Amiga system. Additional hardware, such as the
|
||
|
audio, parallel, and serial hardware, may be in use by applications which
|
||
|
have allocated their use through the system software.
|
||
|
|
||
|
Before attempting to directly manipulate any part of the hardware in the
|
||
|
Amiga's multitasking environment, your application must first be granted
|
||
|
exclusive access to that hardware by the operating system library,
|
||
|
device, or resource which arbitrates its ownership. The operating system
|
||
|
functions for requesting and receiving control of parts of the Amiga
|
||
|
hardware are varied and are not within the scope of this manual. Generally
|
||
|
such functions, when available, will be found in the library, device, or
|
||
|
resource which manages that portion of the Amiga hardware in the
|
||
|
multitasking environment. The following list will help you to find the
|
||
|
appropriate operating system functions or mechanisms which may exist for
|
||
|
arbitrated access to the hardware discussed in this manual.
|
||
|
|
||
|
Copper, Playfield, Sprite, Blitter - graphics.library
|
||
|
Audio - audio.device
|
||
|
Trackdisk - trackdisk.device, disk.resource
|
||
|
Serial - serial.device, misc.resource
|
||
|
Parallel - parallel.device, cia.resource, misc.resource
|
||
|
Gameport - input.device, gameport.device, potgo.resource
|
||
|
Keyboard - input.device, keyboard.device
|
||
|
System Control - graphics.library, exec.library (interrupts)
|
||
|
|
||
|
Most of the examples in this book use the hw examples.i file (see
|
||
|
Appendix J) to define the chip register names. Hw_examples.i uses the
|
||
|
system include file hardware/custom.i to define the chip structures and
|
||
|
relative addresses. The values defined in hardware/custom.i and how
|
||
|
examples.i are offsets from the base chip register address space. In
|
||
|
general, this base value is defined as _custom and is resolved during
|
||
|
linking from amiga.lib. (_ciaa and _ciab are also resolved in this way.)
|
||
|
|
||
|
Normally, the base address is loaded into an address register and the
|
||
|
offsets given by hardware/custom.i and hw_examples.i are then used to
|
||
|
address the correct register.
|
||
|
|
||
|
- Introduction 7 -
|
||
|
|
||
|
|
||
|
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 interupts
|
||
|
|
||
|
In C, you would use the structure definitions in hardware/custom.h For
|
||
|
example:
|
||
|
|
||
|
#lnclude "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 interupts */
|
||
|
}
|
||
|
|
||
|
The Amiga hardware include files are generally supplicd with your
|
||
|
compiler or assembler. Listings of lhc hardware include files may also be
|
||
|
found in the Addison-Wesley Amiga ROM Kemel 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 -
|
||
|
|
||
|
|
||
|
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 enhaneed 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 -
|
||
|
|
||
|
|
||
|
Do not read, write, or use any currently undefined address ranges. The
|
||
|
current and future usage of such areas is reserved by Commodore and is
|
||
|
definitely subject to change.
|
||
|
|
||
|
If you are using the system libraries, devices, and resources, you must
|
||
|
follow the defined interface. Assembler programmers (and compiler
|
||
|
writers) must enter functions through the liberary base jump tables, with
|
||
|
arguments passed as longs and library base address in A6. Results returned
|
||
|
in D0 must be tested, and the contents of D0-D1/A0-A1 must be assumed
|
||
|
gone after a system call.
|
||
|
|
||
|
NOTE
|
||
|
The assembler TAS instruction should not be used in any Amiga program.
|
||
|
The TAS instruction assumes an indivisible read-modify-write but this can
|
||
|
be defeated by system DMA. Instead use BSET and BCLR. These instructions
|
||
|
perform a test and set operation which cannot be interrupted.
|
||
|
|
||
|
TAS is only needed for a multiple CPU system. On a single CPU system,
|
||
|
the BSET and BCLR instructions are identical to TAS, as the 68000 does
|
||
|
not interrupt instructions in the middle. BSET and BCLR first test, then
|
||
|
set bits.
|
||
|
|
||
|
Do not use assembler instructions which are privileged on any 68000
|
||
|
family processor, most notably MOVE SR,<ea> which is privileged on the
|
||
|
68010/20/30. Use the Exec function GetCC() instead of MOVE SR, or use the
|
||
|
appropriate non-privileged instruction as shown below:
|
||
|
|
||
|
CPU User Mode Super Mode
|
||
|
68000 MOVE SR,<ea> MOVE SR,<ea>
|
||
|
68010/20/30 MOVE CCR,<ea> MOVE SR,<ea>
|
||
|
|
||
|
All addresses must be 32 bits. Do not use the upper 8 bits for other
|
||
|
data, and do not use signed variables or signed math for addresses. Do
|
||
|
not execute code on your stack or use self-modifying code since such code
|
||
|
can be defeated by the caching capabilities of some 68xxx processors. And
|
||
|
never use processor or clock speed dependent software loops for timing
|
||
|
delays. See Appendix F for information on using an 8520 timer for delays.
|
||
|
|
||
|
NOTE
|
||
|
When strobing any register which responds to either a read or a write,
|
||
|
(for example copjmp2) be sure to use a MOVE.W #$00, not CLR.W. The CLR
|
||
|
instruction causes a read and a clear (two accesses) on a 68000, but only
|
||
|
a single access on 68020 and above. This will give different results on
|
||
|
different processors.
|
||
|
|
||
|
If you are programming at the hardware level, you must follow hardware
|
||
|
interfacing specifications. All hardware is NOT the same. Do not assume
|
||
|
that low level hacks for speed or copy protection will work on all
|
||
|
drives, or all keyboards, or all systems, or future systems. Test your
|
||
|
software on many different systems, with different processors, OS,
|
||
|
hardware, and RAM configurations.
|
||
|
|
||
|
- 10 Introduction -
|
||
|
|
||
|
|
||
|
See FIGURE 1-1: Block Diagram for the Amiga Computer Family.
|
||
|
|
||
|
|
||
|
- 11 Introduction -
|
||
|
|
||
|
End.
|