home *** CD-ROM | disk | FTP | other *** search
- dmacon= $96
- vposr= $4
- cop1lc= $80
- cop2lc= $84
- copjmp1= $88
- bplcon0= $100
- bplcon1= $102
- bplcon2= $104
- bpl1pth= $0e0
- bpl1ptl= $0e2
- bpl1mod= $108
- bpl2mod= $10a
- diwstrt= $08e
- diwstop= $090
- ddfstrt= $092
- ddfstop= $094
- openlibrary= -30-522
- forbid= -30-102
- permit= -30-108
- allocmem= -30-168
- freemem= -30-180
- startlist= 38
- execbase= 4
- numplanes= 1
- planewith= 40
- planehigh= 224
- planesize= planewith*planehigh
- allocsize= planesize*numplanes
- CLsize= 3000 ;(numplns*8)+4
- chip= 2
- clear= chip+$10000
-
- cbadr: dc.l 0
- cbc: dc.l 0
-
- sinetable:
- dc.b 128,131,134,137,140,144,147,150,153
- dc.b 156,159,162,165,168,171,174,177,179
- dc.b 182,185,188,191,193,196,199,201,204
- dc.b 206,209,211,213,216,218,220,222,224
- dc.b 226,228,230,232,234,235,237,239,240
- dc.b 241,243,244,245,246,248,249,250,250
- dc.b 251,252,253,253,254,254,254,255,255
- dc.b 255,255
- cb: dc.b 0,10,20,30,40,128,138,148,158,168
- even
-
-
- start:
- jsr initialize
- s1: btst #6,$bfe001
- beq stop
- jsr waitvblank
- jsr makenewCL
- jmp s1
- stop: jsr shut_down
- rts
-
- makenewcl:
- move.l cbadr,a0
- move.b #30,d0
- mncl1: move #$0,(a0)
- add.l #8,a0
- add.b #1,d0
- cmp.b #0,d0
- bne mncl1
- move.l #0,cbc
- mncl2: lea cb,a0
- add.l cbc,a0
- add.b #2,(a0)
- move.b (a0),d0
- jsr sine
- divs #2,d0
- add.b #00,d0
- jsr makebar
- add.l #1,cbc
- cmp.l #10,cbc
- bne mncl2
- rts
-
- makebar:
- move.l cbadr,a0
- muls #8,d0
- add.l d0,a0
- move #$0000,d1
- mb1: move d1,(a0)
- add.l #8,a0
- add #$0120,d1
- cmp #$05a0,d1
- bne mb1
- mb2: move d1,(a0)
- add.l #8,a0
- sub #$0120,d1
- cmp #$0000,d1
- bne mb2
- rts
-
- sine:
- cmp.l #$ff,d0
- ble ntbig
- sub.l #$100,d0
- jmp sine
- ntbig: move.l #0,d1
- cmp.l #$80,d0
- ble nneg
- move.l #-1,d1
- sub.l #$80,d0
- nneg: lea sinetable,a0
- cmp.l #$40,d0
- ble nomv
- move.l #$40,d2
- sub.l d2,d0
- sub.l d0,d2
- move.l d2,d0
- nomv: add.l d0,a0
- move.b (a0),d0
- cmp.l #-1,d1
- bne nneged
- move.l #$80,d2
- sub.l d2,d0
- sub.l d0,d2
- move.l d2,d0
- nneged: rts
-
-
- waitvblank: ;wait for vblank
- move.l $dff004,d0
- and.l #$0001ff00,d0
- cmp.l #$0000e000,d0
- bne.s waitvblank
- rts
-
- initialize:
- move.l execbase,a6
- move.l #allocsize,d0
- move.l #clear,d1
- jsr allocmem(a6) ;alloc mem for bplane
- move.l d0,planeadr
- move.l #clsize,d0
- moveq #chip,d1
- jsr allocmem(a6) ;alloc mem for CL
- move.l d0,CLadr
- ;Make the CopperList
- move.l #numplanes,d4 ;no of bitplanes -1
- sub.l #1,d4
- move.l d0,a0
- move.l planeadr,d1
- move.w #bpl1pth,d3
- mCL: move.w d3,(a0)+
- addq.w #2,d3
- swap d1
- move.w d1,(a0)+
- move.w d3,(a0)+
- addq.w #2,d3
- swap d1
- move.w d1,(a0)+
- add.l #planesize,d1
- dbf d4,mCL
-
- move.l a0,cbadr
- add.l #6,cbadr
- move.b #30,d0
- mcbs: move.b d0,(a0)+
- move.b #$0f,(a0)+
- move #$fffe,(a0)+
- move.l #$01800000,(a0)+
- add.b #1,d0
- cmp.b #0,d0
- bne mcbs
-
- move.l #$fffffffe,(a0)
-
- jsr forbid(a6) ;DMA&tasksw off
- lea $dff000,a5
- move.w #$01e0,dmacon(a5)
- move.l CLadr,cop1lc(a5) ;init CL
- clr.w copjmp1(a5)
- move.w #$3081,diwstrt(a5) ;init PlayField
- move.w #$10c1,diwstop(a5)
- move.w #$0038,ddfstrt(a5)
- move.w #$00d0,ddfstop(a5)
- move.w #%0001000000000000,bplcon0(a5) ;12-14=bplanes
- clr.w bplcon1(a5)
- clr.w bplcon2(a5)
- move.w #0,bpl1mod(a5)
- move.w #0,bpl2mod(a5)
- move.w #$8180,dmacon(a5)
- rts
-
- shut_down:
- move.l #grname,a1
- clr.l d0
- jsr openlibrary(a6)
- move.l d0,a4
- move.l startlist(a4),cop1lc(a5)
- clr copjmp1(a5)
- move.w #$83e0,dmacon(a5)
- jsr permit(a6)
- move.l CLadr,a1
- move.l #CLsize,d0
- jsr freemem(a6)
- move.l planeadr,a1
- move.l #allocsize,d0
- jsr freemem(a6)
- rts
-
- CLadr: dc.l 0
- planeadr: dc.l 0
- test: dc.l 0
- GRname: dc.b 'graphics.library',0