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

The MOVE instruction transfers data from RAM to a register destination.
The transferred data is contained in the second word of the MOVE
instruction; the first word contains the address of the destination
register. This procedure is shown in detail in the section called
 Summary of Copper Instructions .


     FIRST MOVE INSTRUCTION WORD (IR1)
     ---------------------------------
     Bit 0           Always set to 0.

     Bits 8 - 1      Register destination address (DA8-1).

     Bits 15 - 9     Not used, but should be set to 0.


     SECOND MOVE INSTRUCTION WORD (IR2)
     ----------------------------------
     Bits 15 - 0     16 bits of data to be transferred (moved)
                     to the register destination.


The Copper can store data into the following registers:

   *  Any register whose address is $20 or above.  (Hexadecimal numbers
      are distinguished from decimal numbers by the $ prefix.)

   *  Any register whose address is between $10 and $20 if the Copper
      danger bit is a 1. The Copper danger bit is in the Copper's control
      register,  COPCON , which is described in the "Control Register"
      section.

   *  The Copper cannot write into any register whose address is lower
      than $10.

 Appendix B  contains all of the machine register addresses.

The following example MOVE instructions set bitplane pointer 1 to $21000
and bitplane pointer 2 to $25000.  (All sample code segments are in
assembly language.)

        DC.W    $00E0,$0002     ;Move $0002 to register $0E0 (BPL1PTH)
        DC.W    $00E2,$1000     ;Move $1000 to register $0E2 (BPL1PTL)
        DC.W    $00E4,$0002     ;Move $0002 to register $0E4 (BPL2PTH)
        DC.W    $00E6,$5000     ;Move $5000 to register $0E6 (BPL2PTL)

Normally, the appropriate assembler ".i" files are included so that names,
rather than addresses, may be used for referencing hardware registers.  It
is strongly recommended that you reference all hardware addresses via their
defined names in the system include files.  This will allow you to more
easily adapt your software to take advantage of future hardware or
enhancements.  For example:

        INCLUDE "hardware/custom.i"

        DC.W    bplpt+$00,$0002 ;Move $0002 into register $0E0 (BPL1PTH)
        DC.W    bplpt+$02,$1000 ;Move $1000 into register $0E2 (BPL1PTL)
        DC.W    bplpt+$04,$0002 ;Move $0002 into register $0E4 (BPL2PTH)
        DC.W    bplpt+$06,$5000 ;Move $5000 into register $0E6 (BPL2PTL)

For use in the hardware manual examples, we have made a special include
file (see  Appendix I ) that defines all of the hardware register names
based off of the "hardware/custom.i" file.  This was done to make the
examples easier to read from a hardware point of view.  Most of the
examples in this manual are here to help explain the hardware and are, in
most cases, not useful without modification and a good deal of additional
code.