*****************************************************************************
*                                                                           *
*  				   Dot Routine                              * 
*                                                                           *
*  Start Date : 3/3/91                                                      *
* Last Update : 3/3/91                                                      *
*   							   Code : Melt Down *
*                                                                           *
*****************************************************************************

; Include the macros

	Incdir	Df1:
	Include	Source/Macro

*****************************************************************************

; Dont forget to use chip ram

	Chip
	
*****************************************************************************

; Kill the operating system for good mesure

	Kill		
	
*****************************************************************************

; Load custom and set up copper list

	Lea	Custom,A5
	Move.l	#Copper,Cop1lch(a5)
	
*****************************************************************************

; Clear Some Memory

	Blitwait
	Move.l	#$70000,Bltdpth(a5)
	Move.l	#-1,Bltafwm(a5)
	Move.w	#0,Bltdmod(a5)
	Move.l	#$01000000,Bltcon0(a5)
	Move.w	#258*64+20,Bltsize(a5)

*****************************************************************************

; Main routine here

Mouse
	Move.l	$dff004,d2
	And.l	#$1ff00,d2	
	Cmp.l	#$100,d2
	Bne.s	Mouse
	Eor.l	#$4000,ScreenPtr
	Eor.l	#$4000,B1l
	Bsr	Clear
	Bsr	DoAllDots
	Bsr	UpDate
	Tstmice	Mouse				; Pressed the mouse
	
*****************************************************************************

; Return operating system and go back to user

	Heal
	Clr.l	D0				; No error
	Rts
	
*****************************************************************************

Clear
	Blitwait				; Blitter Nasty But Why Do
	Move.l	#$01000000,Bltcon0(a5)		; Clear
	Move.w	#$0000,Bltdmod(a5)		; Skip No Bytes
	Move.l	ScreenPtr,Bltdpth(A5)		; Set Dest
	Move.l	#-1,Bltafwm(a5)			; Use All Bits
	Move.w	#128*64+20,Bltsize(a5)		; Fill Half Screen
	Movem.l	a0-a6/d0-d7,-(a7)		; Save The Regs
	Movem.l	RegFiller(pc),a1-a6/d0-d7	; Clear The Regs
	Move.l	ScreenPtr,A0
	Add.l	#10240,A0

; 5120/56 = 91.42 Rnd Up = 92
	Rept	92				; Rept it 58 times
	Movem.l	a1-a6/d0-d7,-(a0)		; Clear 56 Butes
	Endr					; End repeat
	Movem.l	(a7)+,a0-a6/d0-d7		; Restor Regs
	Rts
RegFiller
	Dcb.l	16,0
	Rts

*****************************************************************************

UpDate
	Lea	Form1,A6
	Movem.w	(a6)+,d0-d4
	Move.w	#$1fe,d5
LoopUp
	Add.w	d1,(a6)
	And.w	d5,(a6)+
	Add.w	d2,(a6)
	And.w	d5,(a6)+
	Add.w	d3,(a6)
	And.w	d5,(a6)+
	Add.w	d4,(a6)
	And.w	d5,(a6)+
	Dbf	D0,LoopUp
	Rts

*****************************************************************************

DoAllDots
	Lea	Form1,A6
	Lea	Shifts,A0
	Move.w	(a6)+,D7
	Add.w	#8,a6
	Lea	XSin,A4				;xsin
	Lea	YSin,A3				;ysin
	Move.l	ScreenPtr,A1
Loop
	Movem.w	(a6)+,d0-d3
	Move.w	(a4,d0),d0			
	Add.w	(a4,d2),d0			
	Move.w	(A3,d1),d1			
	Add.w	(A3,d3),d1	
	Add.w	(a0,d0),D1
	Move.w	2(a0,d0),D0
	Or.b	d0,(a1,d1)
	Dbf	D7,Loop
	Rts

*****************************************************************************

ScreenPtr
	Dc.l	$70000
	
*****************************************************************************

ShfSet	Macro
	Dc.w	\1,%0000000010000000
	Dc.w	\1,%0000000001000000
	Dc.w	\1,%0000000000100000
	Dc.w	\1,%0000000000010000
	Dc.w	\1,%0000000000001000
	Dc.w	\1,%0000000000000100
	Dc.w	\1,%0000000000000010
	Dc.w	\1,%0000000000000001
	Endm
Shifts
A	set	0
	Rept	40
	ShfSet	a
A	Set	a+1
	Endr

*****************************************************************************

; All copper list after here

Copper

	Spr_Off					; Switch sprites off
	Cmove	$2c81,Diwstrt
	Cmove	$2cc1,Diwstop
	Cmove	$0038,Ddfstrt
	Cmove	$00d0,Ddfstop
	Cmove	$0000,Bpl1mod			
	Cmove	$0000,Bpl2mod
	Cmove	$0000,Color00
	Cmove	$0fff,Color01
	Cmove	$0007,Bpl1pth
B1l
	Cmove	$0000,Bpl1ptl
	Cmove	$1200,Bplcon0
	Endcop

*****************************************************************************

XSin
	Rept	2
	dc.w	159*4,159*4,159*4,159*4,159*4,158*4,158*4,158*4
	dc.w	157*4,157*4,157*4,156*4,156*4,155*4,154*4,154*4
	dc.w	153*4,152*4,151*4,151*4,150*4,149*4,148*4,147*4
	dc.w	146*4,144*4,143*4,142*4,141*4,140*4,138*4,137*4
	dc.w	136*4,134*4,133*4,131*4,130*4,128*4,127*4,125*4
	dc.w	124*4,122*4,120*4,119*4,117*4,115*4,113*4,112*4
	dc.w	110*4,108*4,106*4,104*4,103*4,101*4,99*4,97*4
	dc.w	95*4,93*4,91*4,89*4,87*4,85*4,83*4,81*4
	dc.w	80*4,78*4,76*4,74*4,72*4,70*4,68*4,66*4
	dc.w	64*4,62*4,60*4,58*4,56*4,55*4,53*4,51*4
	dc.w	49*4,47*4,46*4,44*4,42*4,40*4,39*4,37*4
	dc.w	35*4,34*4,32*4,31*4,29*4,28*4,26*4,25*4
	dc.w	23*4,22*4,21*4,19*4,18*4,17*4,16*4,15*4
	dc.w	13*4,12*4,11*4,10*4,9*4,8*4,8*4,7*4
	dc.w	6*4,5*4,5*4,4*4,3*4,3*4,2*4,2*4
	dc.w	2*4,1*4,1*4,1*4,0*4,0*4,0*4,0*4
	dc.w	0*4,0*4,0*4,0*4,0*4,1*4,1*4,1*4
	dc.w	2*4,2*4,2*4,3*4,3*4,4*4,5*4,5*4
	dc.w	6*4,7*4,8*4,8*4,9*4,10*4,11*4,12*4
	dc.w	13*4,15*4,16*4,17*4,18*4,19*4,21*4,22*4
	dc.w	23*4,25*4,26*4,28*4,29*4,31*4,32*4,34*4
	dc.w	35*4,37*4,39*4,40*4,42*4,44*4,46*4,47*4
	dc.w	49*4,51*4,53*4,55*4,56*4,58*4,60*4,62*4
	dc.w	64*4,66*4,68*4,70*4,72*4,74*4,76*4,78*4
	dc.w	80*4,81*4,83*4,85*4,87*4,89*4,91*4,93*4
	dc.w	95*4,97*4,99*4,101*4,103*4,104*4,106*4,108*4
	dc.w	110*4,112*4,113*4,115*4,117*4,119*4,120*4,122*4
	dc.w	124*4,125*4,127*4,128*4,130*4,131*4,133*4,134*4
	dc.w	136*4,137*4,138*4,140*4,141*4,142*4,143*4,144*4
	dc.w	146*4,147*4,148*4,149*4,150*4,151*4,151*4,152*4
	dc.w	153*4,154*4,154*4,155*4,156*4,156*4,157*4,157*4
	dc.w	157*4,158*4,158*4,158*4,159*4,159*4,159*4,159*4
	Endr
	
*****************************************************************************

YSin
	Rept	2
	dc.w	127*40,127*40,127*40,127*40,127*40,127*40,126*40,126*40
	dc.w	126*40,125*40,125*40,125*40,124*40,124*40,123*40,123*40
	dc.w	122*40,122*40,121*40,120*40,120*40,119*40,118*40,117*40
	dc.w	116*40,115*40,115*40,114*40,113*40,112*40,111*40,109*40
	dc.w	108*40,107*40,106*40,105*40,104*40,103*40,101*40,100*40
	dc.w	99*40,97*40,96*40,95*40,93*40,92*40,91*40,89*40
	dc.w	88*40,86*40,85*40,83*40,82*40,80*40,79*40,77*40
	dc.w	76*40,74*40,73*40,71*40,70*40,68*40,67*40,65*40
	dc.w	64*40,62*40,60*40,59*40,57*40,56*40,54*40,53*40
	dc.w	51*40,50*40,48*40,47*40,45*40,44*40,42*40,41*40
	dc.w	39*40,38*40,36*40,35*40,34*40,32*40,31*40,30*40
	dc.w	28*40,27*40,26*40,24*40,23*40,22*40,21*40,20*40
	dc.w	19*40,18*40,16*40,15*40,14*40,13*40,12*40,12*40
	dc.w	11*40,10*40,9*40,8*40,7*40,7*40,6*40,5*40
	dc.w	5*40,4*40,4*40,3*40,3*40,2*40,2*40,2*40
	dc.w	1*40,1*40,1*40,0*40,0*40,0*40,0*40,0*40
	dc.w	0*40,0*40,0*40,0*40,0*40,0*40,1*40,1*40
	dc.w	1*40,2*40,2*40,2*40,3*40,3*40,4*40,4*40
	dc.w	5*40,5*40,6*40,7*40,7*40,8*40,9*40,10*40
	dc.w	11*40,12*40,12*40,13*40,14*40,15*40,16*40,18*40
	dc.w	19*40,20*40,21*40,22*40,23*40,24*40,26*40,27*40
	dc.w	28*40,30*40,31*40,32*40,34*40,35*40,36*40,38*40
	dc.w	39*40,41*40,42*40,44*40,45*40,47*40,48*40,50*40
	dc.w	51*40,53*40,54*40,56*40,57*40,59*40,60*40,62*40
	dc.w	64*40,65*40,67*40,68*40,70*40,71*40,73*40,74*40
	dc.w	76*40,77*40,79*40,80*40,82*40,83*40,85*40,86*40
	dc.w	88*40,89*40,91*40,92*40,93*40,95*40,96*40,97*40
	dc.w	99*40,100*40,101*40,103*40,104*40,105*40,106*40,107*40
	dc.w	108*40,109*40,111*40,112*40,113*40,114*40,115*40,115*40
	dc.w	116*40,117*40,118*40,119*40,120*40,120*40,121*40,122*40
	dc.w	122*40,123*40,123*40,124*40,124*40,125*40,125*40,125*40
	dc.w	126*40,126*40,126*40,127*40,127*40,127*40,127*40,127*40
	Endr

*****************************************************************************

XY	Macro
	Dc.w	(\1*2)&$1fe,(\2*2)&$1fe,(\3*2)&$1fe,(\4*2)&$1fe
	Endm
Form1	
	Dc.w	256-1
	Dc.w	4,2,2,-2
A	Set	0
B	Set	256
	
	Rept	256
;	XY	A,B,b-a,A-B
;	XY	b,A,a-B,b+a

	XY	A,B,B,A
A	Set	a+1
B	Set	b-4
	Endr
	
*****************************************************************************



