* scroll example * hit left mouse button to quit INTREQR equ $01e INTREQ equ $09c INTENAR equ $01c INTENA equ $09a DMACONR equ $002 DMACON equ $096 BPLCON0 equ $100 BPLCON1 equ $102 BPLCON2 equ $104 BPL1MOD equ $108 BPL2MOD equ $10a DDFSTRT equ $092 DDFSTOP equ $094 DIWSTRT equ $08e DIWSTOP equ $090 BPL1PTH equ $0e0 BPL2PTH equ $0e4 CLEAR_CHIP equ $10002 * CSEG (Manx) SECTION CODE DispMem equ -4 Count equ -8 IntSave equ -12 DmaSave equ -14 Color equ -16 XREF _LVOAllocMem XREF _LVOFreeMem link a5,#-18 movea.l $4,a6 move.l #16000,d0 move.l #CLEAR_CHIP,d1 jsr _LVOAllocMem(a6) move.l d0,DispMem(a5) beq Quit lea 14675968,a3 move.w INTENAR(a3),IntSave(a5) ;save DMA and interrupt states move.w DMACONR(a3),DmaSave(a5) * set up display regs move.w #$1200,BPLCON0(a3) ; (LORES) 1BPL COLOR clr.w BPLCON1(a3) clr.w BPLCON2(a3) clr.w BPL1MOD(a3) clr.w BPL2MOD(a3) move.w #$2c81,DIWSTRT(a3) move.w #$f4c1,DIWSTOP(a3) move.w #$0038,DDFSTRT(a3) move.w #$00d0,DDFSTOP(a3) move.w #$7fff,INTENA(a3) move.w #$7fff,DMACON(a3) move.w #$8020,INTENA(a3) ;SET VERTB move.w #$8300,DMACON(a3) ;SET DMAEN BPLEN * Make bands for effect moveq #7,d1 move.l #$ffffffff,d2 movea.l DispMem(a5),a1 1$ move.l #249,d0 2$ move.l d2,(a1)+ dbf d0,2$ lea 1000(a1),a1 ;start of next band dbf d1,1$ move.l DispMem(a5),d2 move.l d2,d3 addi.l #7960,d3 VBloop move.w INTREQR(a3),d1 btst.l #5,d1 beq .laaa move.w #$0020,INTREQ(a3) cmp.l d3,d2 bls .laab move.l DispMem(a5),d2 jmp .laac .laab moveq #50,d7 add.l d7,d2 .laac move.l d2,BPL1PTH(a3) .laaa btst.b #6,$bfe001 bne VBloop Quit tst.l DispMem(a5) beq .laad movea.l $4,a6 movea.l DispMem(a5),a1 move.l #16000,d0 jsr _LVOFreeMem(a6) .laad * restore DMACON & INTENA lea 14675968,a3 move.w #$7fff,INTENA(a3) move.w #$7fff,DMACON(a3) move.w IntSave(a5),d0 bset.l #15,d0 move.w d0,INTENA(a3) move.w DmaSave(a5),d0 bset.l #15,d0 move.w d0,DMACON(a3) unlk a5 moveq #0,d0 rts END