; Start DMA
;
MOVE.W #(DMAF_SETCLR!DMAF_RASTER!DMAF_MASTER),DMACON(a0)
; Enable bit-plane DMA only, no Copper
; Because this example has no Copper list, it sits in a
; loop waiting for the vertical blanking interval. When it
; comes, you check the LOF ( long frame bit in VPOSR. If
; LOF = 0, this is a short frame and the bit-plane pointers
; are set to point to S20050. If LOF = 1, then this is a
; long frame and the bit-plane pointers are set to point to
; $20000. This keeps the long and short frames in the
; right relationship to each other.
VLOOP:
MOVE.W INTREQR(a0),d0 ; Read interrupt requests
AND.W #$0020,d0 ; Mask off all but vertical blank
BEQ VLOOP ; Loop until vertical blank comes
MOVE.W #$0020,INTREQ(a0) ; Reset vertical interrupt
MOVE.W VPOSR(a0),d0 ; Read LOF bit into d0 bit 15
BPL VL1 ; If LOF = 0, jump
MOVE.L #$20000,BPL1PTH(a0) ; LOF = 1, point to $20000
BRA VLOOP ; Back to top
VL1:
MOVE.L #$20050,BPL1PTH(a0) ; LOF = 0, point to $20050
BRA VLOOP ; Back to top
;
; Character list
;
CHARLIST:
DC.L $18FC3DF0,$3C6666D8,$3C66C0CC,$667CC0CC
DC.L $7E66C0CC,$C36666D8,$C3FC3DF0,$00000000
DC.L $FFFFFFFF
- 61 Playfield Hardware -