EXECBASE:	EQU 		4
DMACON:		EQU 		$DFF096
OLDO:		EQU 		-408



start: 		MOVE.L 		EXECBASE,A6
		LEA 		GFXNAME,A1
		MOVE.L 		#0,D0
		JSR		OLDO(A6)
		TST.W		D0
		BEQ		ERRL
		MOVE.L		D0,GFXBASE
		MOVE.L		D0,A0
		ADD.L		#$32,A0
		MOVE.W		#$80,DMACON
		MOVE.L		(A0),OLDC
		MOVE.L		#SPRITE,D0
		MOVE.W		D0,SLO
		SWAP 		D0
		MOVE.W		D0,SHI
		MOVE.L		#NEWC,(A0)		
		LEA		SPRITE,A1
		LEA		XPOS,A2
		MOVE.L		#$2B,D0
		MOVE.L		#99,D1
SLOOP:		MOVE.B		D0,(A1)+
		ADDQ.W		#1,D0
		MOVE.B		(A2)+,(A1)+
		MOVE.B		D0,(A1)+
		ADDQ.W		#1,D0
		MOVE.B		#0,(A1)+
		MOVE.W		#1,(A1)+
		MOVE.W		#1,(A1)+
		DBRA		D1,SLOOP
		MOVE.L		#0,A1
		
;		MOVE.L		$6C,STORE
;		LEA		INTER,A1
;		MOVE.L		A1,$6C
;		MOVE.W		#$8020,$DFF09A
		MOVE.W		#$8080,$DFF096
WAIT:		BSR		INTER
		MOVE.L		#$2E00,D0
STOP:		DBRA		D0,STOP
		ANDI.B		#$40,$BFE001  ;MOUSE ADDR
		BNE		WAIT
		MOVE.L		GFXBASE,A0
		ADD.L		#$32,A0
		MOVE.W		#$80,DMACON
		MOVE.L		OLDC,(A0)
		MOVE.W		#$8080,DMACON
		RTS
;		INTERRUPT ROUTINE

INTER:		bsr		siner
		LEA		SPRITE,A0
		LEA		SPEED,A1
		MOVE.L		#99,D0
ILOOP:		MOVE.B		(A1)+,D1
		ADD.B		D1,1(A0)
		CMPI.B		#99,(A1)
		BNE		FOR
		LEA		SPEED,A1
FOR:		ADDQ.L		#8,A0
		DBRA		D0,ILOOP	
		RTS	
								
ERRL:		RTS

GFXNAME:	DC.B 'graphics.library',0
		EVEN

GFXBASE:	DC.L 0

OLDC:		DC.L 0

STORE:		DC.L 0,0

SPEED:		DC.B 1,2,3,99
		EVEN

sinecount:	dc.l	0

siner:		lea	sinetable,a0
		lea	speed,a1
		move.l	sinecount,d0
		add.l	d0,a0
		add.l	#1,d0
		cmp.l	#120,d0
		blt	cont
		move.l	#0,d0
		move.l	d0,sinecount
		bra	siner
cont:		move.l	d0,sinecount				
		move.b	(a0),(a1)
		move.b	120(a0),1(a1)
		move.b	240(a0),2(a1)
		rts

sinetable:	dc.b	0,0,1,0,1,0,1,1,1,1,2,1,2,1,2
		blk.b	30,2
		dc.b	2,1,2,1,2,1,1,1,1,0,1,0,1,0,0
		dc.b	-0,-0,-1,-0,-1,-0,-1,-1,-1,-1,-2,-1,-2,-1,-2
		blk.b	30,-2
		dc.b	-2,-1,-2,-1,-2,-1,-1,-1,-1,-0,-1,-0,-1,-0,-0

		dc.b	0,1,0,1,1,2,1,2,2,3,2,3,3,4,4
		blk.b	30,4
		dc.b	4,4,3,3,2,3,2,2,1,2,1,1,0,1,0
		dc.b	-0,-1,-0,-1,-1,-2,-1,-2,-2,-3,-2,-3,-3,-4,-4
		blk.b	30,-4
		dc.b	-4,-4,-3,-3,-2,-3,-2,-2,-1,-2,-1,-1,-0,-1,-0

		dc.b	0,1,1,2,2,3,3,4,4,5,5,6,6,7,7
		blk.b	30,7
		dc.b	7,7,6,6,5,5,4,4,3,3,2,2,1,1,0
		dc.b	-0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,-6,-6,-7,-7
		blk.b	30,-7
		dc.b	-7,-7,-6,-6,-5,-5,-4,-4,-3,-3,-2,-2,-1,-1,-0


		blk.l	5,0

NEWC:		DC.W $0100,$1200
		DC.W $00E0,$0005,$00E2,$0000
		DC.W $0180,$0000,$01A6,$0FFF
		DC.W $0120
SHI:		DC.W $0000
		DC.W $0122
SLO:		DC.W $0000		
		DC.W $FFFF,$FFFE


XPOS:		DC.B 65,128,205,195,84,130,176,201,75,99,197,154,109
		DC.B 126,73,192,171,105,104,202,83,61,69,77,159,162
		DC.B 120,111,210,60,97,143,192,171,207,92,83,77,98
		DC.B 101,115,121,141,133,75,149,162,192,117,105,73
		
		DC.B 47,158,99,127,121,137,36,95,107,209,178,210,117
		DC.B 37,61,111,196,156,35,37,91,121,36,66,88,59,113
		DC.B 11,9,23,100,140,39,44,166,188,192,36,49,202,39
		DC.B 94,141,144,143,211,230,99,100	
		EVEN
SPRITE: 	BLK.W	4*50,0


