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 turned 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 initialize a location register . It is assumed that the user has already created the correct Copper instruction list at location "mycoplist." ; ; Install the copper list ; LEA CUSTOM,a1 ; a1 = address of custom chips LEA MYCOPLIST(pc),a0 ; Address of our copper list MOVE.L a0,COP1LC(a1) ; Write whole longword address MOVE.W COPJMP1(a1),d0 ; Causes copper to load PC from COP1LC ; ; Then enable copper and raster dma ; MOVE.W #(DMAF_SETCLR!DMAF_COPPER!DMAF_RASTER!DMAF_MASTER),DMACON(a1) ; Now, if the contents of COP1LC are not changed, every time vertical blanking occurs the Copper will restart at the same location for each subsequent video screen. This forms a repeatable loop which, if the list is correctly formulated, will cause the displayed screen to be stable.
[Back to Amiga Developer Docs]