COPPERLIST:
;
; Set up pointers to two bit planes
;
DC.W BPL1PTH,$0002 ;Move S0002 into register $0E0 (BPL1PTH)
DC.W BPL1PTL,$1000 ;Move $1000 into register $0E2 (BPL1PTL)
DC.W BPL2PTH,$0002 ;Move $0002 into register $0E4 (BPL2PTH)
DC.W BPL2PTL,$5000 ;Move $5000 into register $0E6 (BPL2PTL)
;
; Load color registers
;
DC.W COLOR00,$0FFF ;Move white into register $180 (COLOR00
DC.W COLOR01,$0F00 ;Move red into register $182 (COLOR01)
DC.W COLOR02,$00F0 ;Move green into register $189 (COLOR02)
DC.W COLOR03,$000F ;Move blue into register $186 (COLOR03)
;
; Specify 2 lo-res bitplanes
;
DC.W BPLCON0,$2200 ;2 lores planes, color on
;
; Wait for line 150
;
DC.W $9601,$FF00 ;Wait for line 150, ignore horiz. position
;
; Change color registers mid-display
;
DC.W COLOR00,$0000 ;Move black into register $0180 (COLOR00)
DC.W COLOR01,$0FF0 ;Move yellow into register $0182 (COLOR01)
DC.W COLOR02,$00FF ;Move cyan into register $0184 (COLOR02)
DC.W COLOR03,$0F0F :Move magenta into register $0186 (COLOR03)
;
; End Copper list by waiting for the impossible
;
DC.W $FFFF,$FFFE ;Wait for line 255, H = 254 (never happens)
For more information about color registers, see Chapter 3, "Playfield
Hardware."
LOOPS AND BRANCHES
Loops and branches in Copper lists are covered in the "Advanced Topics" section below.
STARTING AND STOPPING THE COPPER
STARTING THE COPPER AFTER RESET
At power-on or reset time, you must initialize one of the Copper location registers
(COP1LC or COP2LC) and write to its strobe address before Copper DMA is tuned on. This
ensures a known start address and known state. Usually, COP1LC is used because this
particular register is reused during each vertical blanking time. The following sequence of
instructions shows how to
- Coprocessor Hardware 25 -