 	
 	section ax,code_c
	opt c-,d+,w-,o+	
	
	include 'df1:insert/custom registers'
	
badd=(320*256)/8
akey=$bfec01

	move.w picdata+badd*5,c1
	move.w picdata+badd*5+2,c2
	move.w picdata+badd*5+4,c3
	move.w picdata+badd*5+6,c4
	move.w picdata+badd*5+8,c5
	move.w picdata+badd*5+10,c6
	move.w picdata+badd*5+12,c7
	move.w picdata+badd*5+14,c8
	move.w picdata+badd*5+16,c9
	move.w picdata+badd*5+18,c10
	move.w picdata+badd*5+20,c11
	move.w picdata+badd*5+22,c12
	move.w picdata+badd*5+24,c13
	move.w picdata+badd*5+26,c14
	move.w picdata+badd*5+28,c15
	move.w picdata+badd*5+30,c16
	move.w picdata+badd*5+32,c17
	move.w picdata+badd*5+34,c18
	move.w picdata+badd*5+36,c19
	move.w picdata+badd*5+38,c20
	move.w picdata+badd*5+40,c21
	move.w picdata+badd*5+42,c22
	move.w picdata+badd*5+44,c23
	move.w picdata+badd*5+46,c24
	move.w picdata+badd*5+48,c25
	move.w picdata+badd*5+50,c26
	move.w picdata+badd*5+52,c27
	move.w picdata+badd*5+54,c28
	move.w picdata+badd*5+56,c29
	move.w picdata+badd*5+58,c30
	move.w picdata+badd*5+60,c31
	move.w picdata+badd*5+62,c32
	
	lea $dff000,a6
	move.w #$87e0,$dff096
	move.l #-1,bltafwm(a6)
	jsr cop_init
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup5
 	move.l $6c,oldirq
 	move.l #newirq,$6c
mse:
 	cmp.b #$ff,$dff006
 	bne mse
 	
zog:
 	btst #6,$bfe001
	bne mse
 	move.l oldirq,$6c
 	move.l copaddr,a0
 	move.l oldcop,(a0)
nolib:	
	 rts	
newirq:  
	movem.l d0-d7/a0-a6,$75000
	cmp.b #5,count
	bne huge
	jsr keyboard
	move.b #0,count
huge:
	addi.b #1,count
	movem.l $75000,d0-d7/a0-a6
	dc.w $4ef9
	
oldirq: dc.l 0

	even

cop_init:
 	lea screen,a0
 	move.l a0,d0
 	move.w d0,lo1
 	swap d0
 	move.w d0,hi1
 	lea screen+badd,a0
 	move.l a0,d0
 	move.w d0,lo2
 	swap d0
 	move.w d0,hi2
 	lea screen+badd*2,a0
 	move.l a0,d0
 	move.w d0,lo3
 	swap d0
 	move.w d0,hi3
 	lea screen+badd*3,a0
 	move.l a0,d0
 	move.w d0,lo4
 	swap d0
 	move.w d0,hi4
 	lea screen+badd*4,a0
 	move.l a0,d0
 	move.w d0,lo5
 	swap d0
 	move.w d0,hi5
 	moveq #$00,d0
 	lea grafname,a1
 	move.l $4,a6
 	jsr -132(A6)
 	move.l $4,A6
 	jsr -408(a6)
 	tst d0
 	beq nolib
 	move.l d0,grafbase
 	move.l d0,a6
 	add.l #$32,d0
 	move.l d0,a0
 	move.l a0,copaddr
 	move.l (a0),oldcop
 	move.l #newcop,(a0)
 	rts
 
	even
	  
grafname: dc.b "graphics.library",0
grafbase: dc.l 0
oldcop:   dc.l 0
copaddr:  dc.l 0
count:	  dc.b 0
xpos:	  dc.b 0
ypos:	  dc.b 0
bval:	  dc.b 0
counter1: dc.b 0
xcount:	  dc.b 0
yac:	  dc.b 0


	even
 
newcop:	 dc.w $0100,$5200
 	 dc.w $0102
boh: 	 dc.w $0000
	 dc.w $0180,$0000
	 dc.w $0120
sp1l:	 dc.w $0000,$0122
sp1h: 	 dc.w $0000 
	 dc.w $0124
sp2l:	 dc.w $0000,$0126
sp2h: 	 dc.w $0000 
	 dc.w $0128
sp3l:	 dc.w $0000,$012a
sp3h: 	 dc.w $0000 
	 dc.w $012c
sp4l:	 dc.w $0000,$012e
sp4h: 	 dc.w $0000
	 dc.w $0130
sp5l:	 dc.w $0000,$132
sp5h: 	 dc.w $0000
 scr:  	 dc.w $2001,$fffe
 	 dc.w $00e0
 hi1:	 dc.w $0000
	 dc.w $00e2
 lo1:	 dc.w $0000 	
	 dc.w $00e4
 hi2:	 dc.w $0000
	 dc.w $00e6
 lo2:	 dc.w $0000 
	 dc.w $00e8
 hi3:	 dc.w $0000
	 dc.w $00ea
 lo3:	 dc.w $0000 
	 dc.w $00ec
 hi4:	 dc.w $0000
	 dc.w $00ee
 lo4:	 dc.w $0000 
	 dc.w $00f0
 hi5:	 dc.w $0000
	 dc.w $00f2
 lo5:	 dc.w $0000
	 dc.w $008e,$3021 
	 dc.w $0090,$30f1
	 dc.w $180
c1:	 dc.w $000,$182
c2:	 dc.w $fff,$184
c3:	 dc.w $fdb,$186
c4:	 dc.w $db9
	 dc.w $188
c5:	 dc.w $c97,$18a
c6:	 dc.w $a75,$18c
c7:	 dc.w $853,$18e
c8:	 dc.w $033,$190
c9:	 dc.w $c60
	 dc.w $192
c10:	 dc.w $ba5,$194
c11:	 dc.w $962,$196
c12:	 dc.w $530,$198
c13:	 dc.w $db4,$19a
c14:	 dc.w $558
	 dc.w $19c
c15:	 dc.w $447,$19e
c16:	 dc.w $336,$1a0
c17:	 dc.w $a40,$1a2
c18:	 dc.w $f44,$1a4
c19:	 dc.w $b00
	 dc.w $1a6
c20:	 dc.w $222,$1a8
c21:	 dc.w $333,$1aa
c22:	 dc.w $444,$1ac
c23:	 dc.w $555,$1ae
c24:	 dc.w $666
	 dc.w $1b0
c25:	 dc.w $777,$1b2
c26:	 dc.w $888,$1b4
c27:	 dc.w $999,$1b6
c28:	 dc.w $aaa,$1b8
c29:	 dc.w $ccc
	 dc.w $1ba
c30:	 dc.w $ddd,$1bc
c31:	 dc.w $eee,$1be
c32:	 dc.w $fff

	 dc.w $f201,$fffe
	 dc.w $0180,$0fff
	 dc.w $f301,$fffe
	 dc.w $0180,$000a
	 dc.w $ffff,$fffe
	 
	 even

screen:
	 ds.b 5*badd
	 
tempbob:
	 ds.b 5*256
	 
picdata:
	 incbin 'df1:graphics/game.blocks.raw'
	 
bobsetup:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-2,bltdmod(a6)             
	 move.w #40-2,bltamod(a6)             
af1:	 move.l #screen,bltdpt(a6)       
bf1: 	 move.l #picdata,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
af2:	 move.l #screen+badd,bltdpt(a6)       
bf2: 	 move.l #picdata+badd,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)		 
af3:	 move.l #screen+badd*2,bltdpt(a6)       
bf3: 	 move.l #picdata+badd*2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
af4:	 move.l #screen+badd*3,bltdpt(a6)       
bf4: 	 move.l #picdata+badd*3,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
af5:	 move.l #screen+badd*4,bltdpt(a6)       
bf5: 	 move.l #picdata+badd*4,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
 	 rts
 	 
bobsetup1:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-2,bltdmod(a6)             
	 move.w #40-2,bltamod(a6)             
	 move.l #tempbob,bltdpt(a6)       
cf1: 	 move.l #screen,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
	 move.l #tempbob+256,bltdpt(a6)       
cf2: 	 move.l #screen+badd,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)		 
	 move.l #tempbob+256*2,bltdpt(a6)       
cf3: 	 move.l #screen+badd*2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #tempbob+256*3,bltdpt(a6)       
cf4: 	 move.l #screen+badd*3,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #tempbob+256*4,bltdpt(a6)       
cf5: 	 move.l #screen+badd*4,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
 	 rts
 	 
 	 
bobsetup2:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-2,bltdmod(a6)             
	 move.w #40-2,bltamod(a6)             
df1:	 move.l #screen,bltdpt(a6)       
 	 move.l #tempbob,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
df2:	 move.l #screen+badd,bltdpt(a6)       
 	 move.l #tempbob+256,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)		 
df3:	 move.l #screen+badd*2,bltdpt(a6)       
 	 move.l #tempbob+256*2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
df4:	 move.l #screen+badd*3,bltdpt(a6)       
 	 move.l #tempbob+256*3,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
df5:	 move.l #screen+badd*4,bltdpt(a6)       
 	 move.l #tempbob+256*4,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
 	 rts
 	 
 	 
 	 
bobsetup3:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-38,bltdmod(a6)             
	 move.w #40-38,bltamod(a6)             
	 move.l #screen,bltdpt(a6)       
 	 move.l #screen+2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	
	 move.l #screen+badd,bltdpt(a6)       
 	 move.l #screen+badd+2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)		 
	 move.l #screen+badd*2,bltdpt(a6)       
 	 move.l #screen+badd*2+2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
	 move.l #screen+badd*3,bltdpt(a6)       
 	 move.l #screen+badd*3+2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
	 move.l #screen+badd*4,bltdpt(a6)       
 	 move.l #screen+badd*4+2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
 	 rts
 	 
 	 
bobsetup4:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-38,bltdmod(a6)             
	 move.w #40-38,bltamod(a6)             
	 move.l #screen+2,bltdpt(a6)       
 	 move.l #screen,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	
	 move.l #screen+badd+2,bltdpt(a6)       
 	 move.l #screen+badd,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)		 
	 move.l #screen+badd*2+2,bltdpt(a6)       
 	 move.l #screen+badd*2,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
	 move.l #screen+badd*3+2,bltdpt(a6)       
 	 move.l #screen+badd*3,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
	 move.l #screen+badd*4+2,bltdpt(a6)       
 	 move.l #screen+badd*4,bltapt(a6)           
	 move.w #%0011000000010011,bltsize(a6)	 	
 	 rts
 	 
bobsetup5:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-2,bltdmod(a6)             
	 move.w #40-2,bltamod(a6)             
	 move.l #screen+8000,bltdpt(a6)       
 	 move.l bf1+2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
	 move.l #screen+badd+8000,bltdpt(a6)       
 	 move.l bf2+2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)		 
	 move.l #screen+badd*2+8000,bltdpt(a6)       
 	 move.l bf3+2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #screen+badd*3+8000,bltdpt(a6)       
 	 move.l bf4+2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #screen+badd*4+8000,bltdpt(a6)       
 	 move.l bf5+2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
 	 rts
 	 	 
bobsetup6:
 	 lea $dff000,a6
 	 move.l #-1,bltafwm(a6)
	 move.w #$09f0,bltcon0(a6)
	 clr.w bltcon1(a6)
 	 clr.w bltamod(a6)
	 move.w #40-2,bltdmod(a6)             
	 move.w #40-2,bltamod(a6)             
	 move.l #screen+9000,bltdpt(a6)       
 	 move.l #tempbob,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	
	 move.l #screen+badd+9000,bltdpt(a6)       
 	 move.l #tempbob+256,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)		 
	 move.l #screen+badd*2+9000,bltdpt(a6)       
 	 move.l #tempbob+256*2,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #screen+badd*3+9000,bltdpt(a6)       
 	 move.l #tempbob+256*3,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
	 move.l #screen+badd*4+9000,bltdpt(a6)       
 	 move.l #tempbob+256*4,bltapt(a6)           
	 move.w #%0000010000000001,bltsize(a6)	 	
 	 rts
 	 	 
 
 	 
keyboard:
	move.b akey,d0
	not d0
	ror.b d0

	cmpi.b #$4e,d0
	bne gru
	cmpi.b #18,xpos
	bne stah
	cmpi.b #199,xcount
	beq gru6
	jsr bobsetup2
	jsr bobsetup3
	jsr bobsetup1
	jsr bobsetup
	jmp gri1
stah:
	addi.b #1,xpos
	jsr bobsetup2
	move.l af1+2,a5
	adda.l #2,a5
	move.l a5,af1+2
	move.l a5,df1+2
	move.l a5,cf1+2
	move.l af2+2,a5
	adda.l #2,a5
	move.l a5,af2+2
	move.l a5,df2+2
	move.l a5,cf2+2
	move.l af3+2,a5
	adda.l #2,a5
	move.l a5,af3+2
	move.l a5,df3+2
	move.l a5,cf3+2
	move.l af4+2,a5
	adda.l #2,a5
	move.l a5,af4+2
	move.l a5,df4+2
	move.l a5,cf4+2
	move.l af5+2,a5
	adda.l #2,a5
	move.l a5,af5+2
	move.l a5,df5+2
	move.l a5,cf5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup6
gri1:	move.l neo+6,a2
	adda.l #1,a2
	move.l a2,neo+6
	addi.b #1,xcount
	
gru:
	cmpi.b #$4f,d0
	bne gru1
	cmpi.b #0,xpos
	bne stah1
	cmpi.b #0,xcount
	beq gru6
	jsr bobsetup2
	jsr bobsetup4
	jsr bobsetup1
	jsr bobsetup
	jmp gri2
stah1:	
	subi.b #1,xpos
	jsr bobsetup2
	move.l af1+2,a5
	suba.l #2,a5
	move.l a5,af1+2
	move.l a5,df1+2
	move.l a5,cf1+2
	move.l af2+2,a5
	suba.l #2,a5
	move.l a5,af2+2
	move.l a5,df2+2
	move.l a5,cf2+2
	move.l af3+2,a5
	suba.l #2,a5
	move.l a5,af3+2
	move.l a5,df3+2
	move.l a5,cf3+2
	move.l af4+2,a5
	suba.l #2,a5
	move.l a5,af4+2
	move.l a5,cf4+2
	move.l a5,df4+2
	move.l af5+2,a5
	suba.l #2,a5
	move.l a5,af5+2
	move.l a5,cf5+2
	move.l a5,df5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup6
gri2:	move.l neo+6,a2
	suba.l #1,a2
	subi.b #1,xcount
	move.l a2,neo+6
	
gru1:	
	cmpi.b #$4c,d0
	bne gru2
	cmpi.b #0,ypos
	beq gru6
	subi.b #1,ypos
	jsr bobsetup2
	move.l af1+2,a5
	suba.l #40*16,a5
	move.l a5,af1+2
	move.l a5,df1+2
	move.l a5,cf1+2
	move.l af2+2,a5
	suba.l #40*16,a5
	move.l a5,af2+2
	move.l a5,df2+2
	move.l a5,cf2+2
	move.l af3+2,a5
	suba.l #40*16,a5
	move.l a5,af3+2
	move.l a5,df3+2
	move.l a5,cf3+2
	move.l af4+2,a5
	suba.l #40*16,a5
	move.l a5,af4+2
	move.l a5,df4+2
	move.l a5,cf4+2
	move.l af5+2,a5
	suba.l #40*16,a5
	move.l a5,af5+2
	move.l a5,df5+2
	move.l a5,cf5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup6
	move.l neo+6,a2
	suba.l #200,a2
	move.l a2,neo+6
	
gru2:
	cmpi.b #$4d,d0
	bne gru3
	cmpi.b #11,ypos
	bne yepo
	jmp gru6
yepo:
	addi.b #1,ypos
	jsr bobsetup2
	move.l af1+2,a5
	adda.l #16*40,a5
	move.l a5,af1+2
	move.l a5,df1+2
	move.l a5,cf1+2
	move.l af2+2,a5
	adda.l #16*40,a5
	move.l a5,af2+2
	move.l a5,df2+2
	move.l a5,cf2+2
	move.l af3+2,a5
	adda.l #16*40,a5
	move.l a5,af3+2
	move.l a5,df3+2
	move.l a5,cf3+2
	move.l af4+2,a5
	adda.l #16*40,a5
	move.l a5,af4+2
	move.l a5,df4+2
	move.l a5,cf4+2
	move.l af5+2,a5
	adda.l #16*40,a5
	move.l a5,af5+2
	move.l a5,df5+2
	move.l a5,cf5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup6
	move.l neo+6,a2
	adda.l #200,a2
	move.l a2,neo+6
gru3:
	cmpi.b #$0c,d0
	bne gru4
	addi.b #1,bval
	cmpi.b #19,counter1
	bne steg
	move.b #0,counter1
	jsr bobsetup2
	move.l bf1+2,a5
	adda.l #16*40,a5
	suba.l #38,a5
	move.l a5,bf1+2
	move.l bf2+2,a5
	adda.l #16*40,a5
	suba.l #38,a5
	move.l a5,bf2+2
	move.l bf3+2,a5
	adda.l #16*40,a5
	suba.l #38,a5
	move.l a5,bf3+2
	move.l bf4+2,a5
	adda.l #16*40,a5
	suba.l #38,a5
	move.l a5,bf4+2
	move.l bf5+2,a5
	adda.l #16*40,a5
	suba.l #38,a5
	move.l a5,bf5+2
	jsr bobsetup1
	jsr bobsetup
	jmp gru6
	
steg:
	addi.b #1,counter1
	jsr bobsetup2
	move.l bf1+2,a5
	adda.l #2,a5
	move.l a5,bf1+2
	move.l bf2+2,a5
	adda.l #2,a5
	move.l a5,bf2+2
	move.l bf3+2,a5
	adda.l #2,a5
	move.l a5,bf3+2
	move.l bf4+2,a5
	adda.l #2,a5
	move.l a5,bf4+2
	move.l bf5+2,a5
	adda.l #2,a5
	move.l a5,bf5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup5
	
gru4:
	cmpi.b #$0b,d0
	bne gru5
	subi.b #1,bval
	cmpi.b #0,counter1
	bne sreg
	move.b #19,counter1
	jsr bobsetup2
	move.l bf1+2,a5
	suba.l #16*40,a5
	adda.l #38,a5
	move.l a5,bf1+2
	move.l bf2+2,a5
	suba.l #16*40,a5
	adda.l #38,a5
	move.l a5,bf2+2
	move.l bf3+2,a5
	suba.l #16*40,a5
	adda.l #38,a5
	move.l a5,bf3+2
	move.l bf4+2,a5
	suba.l #16*40,a5
	adda.l #38,a5
	move.l a5,bf4+2
	move.l bf5+2,a5
	suba.l #16*40,a5
	adda.l #38,a5
	move.l a5,bf5+2
	jsr bobsetup1
	jsr bobsetup
	jmp gru6
sreg:
	subi.b #1,counter1
	jsr bobsetup2
	move.l bf1+2,a5
	suba.l #2,a5
	move.l a5,bf1+2
	move.l bf2+2,a5
	suba.l #2,a5
	move.l a5,bf2+2
	move.l bf3+2,a5
	suba.l #2,a5
	move.l a5,bf3+2
	move.l bf4+2,a5
	suba.l #2,a5
	move.l a5,bf4+2
	move.l bf5+2,a5
	suba.l #2,a5
	move.l a5,bf5+2
	jsr bobsetup1
	jsr bobsetup
	jsr bobsetup5
gru5:	
	cmpi.b #$40,d0
	bne gru6
	jsr bobsetup1
neo:	move.b bval,mapdata
gru6:

	rts	
	
mapdata:	
	ds.b 200*160
