home *** CD-ROM | disk | FTP | other *** search
- jmp start
-
- 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
- planesize= 40*225
- planewith= 40
- CLsize= 15*4
- chip= 2
- clear= chip+$10000
-
- CLadr: dc.l 0
- planeadr: dc.l 0
- test: dc.l 0
- counter: dc.b 1,1,15
- ccount: dc.b 1,1,1,15
- GRname: dc.b 'graphics.library',0
- piccy: blk.b 268
- hscount: dc.b 5
- vscount: dc.b 1
- even
-
- start:
- jsr initialize
- move.l planeadr,a0
- lea piccy,a1
- add.l #2013,a0 ;positioning
- move.l #263,d0 ;# of data in pic
- move.l #11,d1 ;# bytes/line
- s1: move.b (a1)+,(a0)+
- dbf d1,s2
- move.l #11,d1 ; ----||----
- add.l #28,a0 ; with-(b./l.)
- s2: dbf d0,s1
- loop: btst #6,$bfe001
- beq stop
- jsr waitvblank
- sub.b #1,hscount
- cmp.b #0,hscount
- bne hsend
- move.b #3,hscount
- t: lea counter,a0
- move.b (a0),d0
- add.b d0,1(a0)
- move.b 1(a0),d0
- cmp.b 2(a0),d0
- bne nomax
- move.b #-1,(a0)
- nomax: cmp.b #0,d0
- bne nomin
- move.b #1,(a0)
- nomin: clr.l d0
- move.b 1(a0),d0
- move d0,$dff102
-
- hsend: sub.b #1,vscount ;vscroll starts here
- cmp.b #0,vscount
- bne loop
- lea ccount,a0
- move.b 1(a0),d0
- add.b d0,(a0)
- move.b (a0),d0
- cmp.b 3(a0),d0
- bne nmaxpc
- move.b #-1,1(a0)
- nmaxpc: cmp.b #1,d0 ;minpc ?
- bne nminpc
- move.b #1,1(a0)
- move.b 2(a0),d0
- cmp.b #1,d0
- bne npdp
- move.b #-1,2(a0)
- jmp nminpc
- npdp: cmp.b #-1,d0
- bne nminpc
- move.b #1,2(a0)
- nminpc: move.b (a0),d0
- cmp.b #7,d0
- ble nb
- move.b #7,d0
- nb: move.b #8,d1
- sub.b d0,d1
- move.b d1,vscount
- move.l CLadr,a1
- move.b 2(a0),d0
- sub.b d0,08(a1)
- sub.b d0,16(a1)
- add.b d0,24(a1)
- add.b d0,32(a1)
- vsend:
-
- jmp loop
- stop: jsr shut_down
- rts
-
- waitvblank: ;wait for vblank
- move.l $dff004,d0
- and.l #$0001ff00,d0
- cmp.l #$00001000,d0
- bne.s waitvblank
- rts
-
- initialize:
- move.l execbase,a6
- move.l #planesize,d0
- move.l #clear,d1
- jsr allocmem(a6) ;alloc mem for bplane
- move.l d0,planeadr
- moveq #clsize,d0
- moveq #chip,d1
- jsr allocmem(a6) ;alloc mem for CL
- move.l d0,CLadr
-
- move.l d0,a0 ;Make the CopperList
- move.l planeadr,d1
- move #$00e2,(a0)+
- move d1,(a0)+
- swap d1
- move #$00e0,(a0)+
- move d1,(a0)+
- move.l #$600ffffe,(a0)+
- move.l #$01800803,(a0)+
- move.l #$610ffffe,(a0)+
- move.l #$01800f06,(a0)+
- move.l #$790ffffe,(a0)+
- move.l #$01800803,(a0)+
- move.l #$7a0ffffe,(a0)+
- move.l #$01800000,(a0)+
- 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)
- 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
- moveq #CLsize,d0
- jsr freemem(a6)
- move.l planeadr,a1
- move.l #planesize,d0
- jsr freemem(a6)
- rts