home *** CD-ROM | disk | FTP | other *** search
- OPENLIB: EQU -408
- ALLOCMEM: EQU -198
- FREEMEM: EQU -210
- MEMF_CHIP: EQU $10002
-
- BEGIN: MOVEM.L D0-D7/A0-A6,-(SP)
- MOVE.L $4.W,A6
- MOVE.L #COPSIZE+PICSIZE,D0
- MOVE.L #MEMF_CHIP,D1
- JSR ALLOCMEM(A6) ; Allokera copper &
- MOVE.L D0,NEWCOPPER ; bitplan i ChipMem
- BEQ.L ALLOCERROR ; Error?
- ADD.L #COPSIZE,D0
- MOVE.L D0,BPPTR ; Pekare till BPL1
-
- INITBP: MOVE.L D0,D7 ; Ställ in alla
- SWAP D7 ; bitplanspekare
- MOVE.W D7,BP1H
- SWAP D7
- MOVE.W D7,BP1L
-
- ADD.L #BPSIZE,D7
- SWAP D7
- MOVE.W D7,BP2H
- SWAP D7
- MOVE.W D7,BP2L
-
- ADD.L #BPSIZE,D7
- SWAP D7
- MOVE.W D7,BP3H
- SWAP D7
- MOVE.W D7,BP3L
-
- ADD.L #BPSIZE,D7
- SWAP D7
- MOVE.W D7,BP4H
- SWAP D7
- MOVE.W D7,BP4L
-
- ADD.L #BPSIZE,D7
- SWAP D7
- MOVE.W D7,BP5H
- SWAP D7
- MOVE.W D7,BP5L
-
- LEA.L PIC+[5*BPSIZE],A0
- LEA.L COLORS+2(PC),A1
- MOVEQ #31,D7
- INITCOLORS: MOVE.W (A0)+,(A1) ; Ställ in 32 färger
- ADDQ.L #4,A1
- DBF D7,INITCOLORS
-
- LEA.L SCROLL(PC),A0
- MOVE.L #$2C07FFFE,D0
- MOVE.W #199,D7
- INITSCROLL: MOVE.L D0,(A0)+ ; Initiera WAIT- och
- MOVE.L #$01020000,(A0)+ ; MOVE-instruktioner
- ADD.L #$01000000,D0 ; Nästa rad
- DBF D7,INITSCROLL
-
- MOVE.L NEWCOPPER(PC),A0
- LEA.L COPPERLIST(PC),A1
- MOVE.W #COPSIZE+PICSIZE-1,D7
- MOVETOCHIP: MOVE.B (A1)+,(A0)+ ; Flytta copper och
- DBF D7,MOVETOCHIP ; bitplan till ChipMem
-
- LEA.L GFXNAME(PC),A1
- JSR OPENLIB(A6) ; Öppna gfx
- TST.L D0
- BEQ.L GFXERROR ; Error?
- MOVE.L D0,A0
- MOVE.L $26(A0),OLDCOPPER ; Spar gammal copper
- MOVE.W #$4000,$DFF09A ; Stäng av irq
- DISABLE: TST.B $DFF006 ; Vänta på rad 0
- BNE.S DISABLE
- MOVE.W $DFF002,DMABITS ; Spar gammal DMA
- BSET #7,DMABITS
- MOVE.W #$7FFF,$DFF096 ; Stäng av all DMA
- MOVE.W #$8380,$DFF096 ; Sätt på bitplan+cop
-
- MOVE.L NEWCOPPER(PC),A5
- MOVE.L A5,$DFF080 ; Vår copperlista
-
- MAIN: BTST #6,$BFE001
- BEQ.S EXIT
-
- BSR.S SYNC
-
- LEA.L SCROLLTAB(PC),A0
- LEA.L SCROLLOFFS(A5),A1
- MOVE.W SCROLLVALUE(PC),D0
- ADDQ.W #2,SCROLLVALUE ; Öka scroll-index
- MOVE.W #199,D7
- MOVESCROLL: AND.W #63,D0
- MOVE.W (A0,D0.W),6(A1) ; Läs in scroll-värden
- ADDQ.L #8,A1
- ADDQ.W #2,D0
- DBF D7,MOVESCROLL
-
- BRA.S MAIN
-
- SYNC: CMP.B #$FF,$DFF006 ; Vänta på rad $FF
- BNE.S SYNC
- NEXTLINE: CMP.B #$FF,$DFF006 ; Vänta på nästa rad
- BEQ.S NEXTLINE
- RTS
-
- EXIT: BSR.S SYNC
- SUBQ.B #1,HMARG(A5) ; Minska Hmarg
- ADDQ.B #1,VMARG(A5) ; Öka Vmarg
- BNE.S EXIT
- SUBQ.B #1,VMARG(A5)
-
- SQUEEZE: BSR.S SYNC
- ADDQ.B #1,TMARG(A5) ; Minska vertikalt
- CMP.B #$F4,TMARG(A5)
- BNE.S SQUEEZE
-
- MOVE.L OLDCOPPER(PC),$DFF080 ; Återställ copper
- MOVE.W DMABITS(PC),$DFF096 ; Återställ DMA
- MOVE.W #$C000,$DFF09A ; Sätt på irq
- GFXERROR: MOVE.L NEWCOPPER(PC),A1
- MOVE.L #COPSIZE+PICSIZE,D0
- JSR FREEMEM(A6) ; Deallokera
- ALLOCERROR: MOVEM.L (SP)+,D0-D7/A0-A6
- RTS
-
-
- SCROLLVALUE: DC.W 0
- SCROLLTAB: DC.W $88,$99,$BB,$CC,$DD,$EE,$EE,$FF
- DC.W $FF,$FF,$EE,$EE,$DD,$CC,$BB,$99
- DC.W $88,$77,$55,$44,$33,$22,$22,$11
- DC.W $11,$11,$22,$22,$33,$44,$55,$77
- OLDCOPPER: DC.L 0
- NEWCOPPER: DC.L 0
- BPPTR: DC.L 0
- DMABITS: DC.W 0
- GFXNAME: DC.B 'graphics.library',0
- EVEN
-
- COPPERLIST: DC.W $008E,$2CB1 ; Rad $2C, kol. $B1
- DC.W $0090,$F491 ; Rad $F4, kol. $91
- DC.W $0092,$0048 ; Vmarg = $48
- DC.W $0094,$00C0 ; Hmarg = $C0
- DC.W $0100,$5000 ; 5 bitplan, LORES
- DC.W $0104,$0000 ; Normal prioritet
- DC.W $0108,$0008 ; Udda modulo = 8
- DC.W $010A,$0008 ; Jämn modulo = 8
-
- DC.W $00E0 ; Bitplanspekare
- BP1H: DC.W $0000 ; för bitplan 1
- DC.W $00E2
- BP1L: DC.W $0000
-
- DC.W $00E4 ; Bitplanspekare
- BP2H: DC.W $0000 ; för bitplan 2
- DC.W $00E6
- BP2L: DC.W $0000
-
- DC.W $00E8 ; osv
- BP3H: DC.W $0000
- DC.W $00EA
- BP3L: DC.W $0000
-
- DC.W $00EC
- BP4H: DC.W $0000
- DC.W $00EE
- BP4L: DC.W $0000
-
- DC.W $00F0
- BP5H: DC.W $0000
- DC.W $00F2
- BP5L: DC.W $0000
-
- COLORS: DC.W $0180,$0000 ; Färgtabell
- DC.W $0182,$0000 ; för alla 32 färger
- DC.W $0184,$0000
- DC.W $0186,$0000
- DC.W $0188,$0000
- DC.W $018A,$0000
- DC.W $018C,$0000
- DC.W $018E,$0000
- DC.W $0190,$0000
- DC.W $0192,$0000
- DC.W $0194,$0000
- DC.W $0196,$0000
- DC.W $0198,$0000
- DC.W $019A,$0000
- DC.W $019C,$0000
- DC.W $019E,$0000
- DC.W $01A0,$0000
- DC.W $01A2,$0000
- DC.W $01A4,$0000
- DC.W $01A6,$0000
- DC.W $01A8,$0000
- DC.W $01AA,$0000
- DC.W $01AC,$0000
- DC.W $01AE,$0000
- DC.W $01B0,$0000
- DC.W $01B2,$0000
- DC.W $01B4,$0000
- DC.W $01B6,$0000
- DC.W $01B8,$0000
- DC.W $01BA,$0000
- DC.W $01BC,$0000
- DC.W $01BE,$0000
-
- SCROLL: BLK.W 200*4 ; Reservera minne för
- ; scroll-lista
- DC.W $FFFF,$FFFE ; Slut på copperlistan
- COPEND:
- COPSIZE: EQU COPEND-COPPERLIST
- SCROLLOFFS: EQU SCROLL-COPPERLIST
- HMARG: EQU 7
- VMARG: EQU 3
- TMARG: EQU 2
- BPSIZE: EQU 320/8*200
- PICSIZE: EQU 5*BPSIZE+64
-
- PIC: BLK.B PICSIZE,0 ; Reservera minne för
- ; 5 bitplans bild
-