;plasma by the flash
	jmp	$70000
	org	$70000
	load	$70000
execbase =	4
graphics =	156
intenar  =	$dff01c
intreqr  =	$dff01e
intena   =	$dff09a
intreq   =	$dff09c
bltcon0	 =	$040
bltcon1  =	$042
bltafwm  =	$044
bltaflm  =	$046
bltcpth  =	$048
bltbpth  =	$04c
bltapth	 =	$050
bltdpth	 =	$054
bltsize  =	$058
bltcmod	 =	$060
bltbmod	 =	$062
bltamod	 =	$064
bltdmod	 =	$066
bltcdat  =	$070
bltbdat  =	$072
bltadat	 =	$074

;	original:	154
;	blttest:	162		-8	-8
;	bltspar:	168		-6	-14
;	bltnasty:	190		-22	-36
;	cleaning:	194		-4	-40

cop_bytes:	equ	54		;number of bytes on each copper-line
cop_lines:	equ	196		;number of copper lines


;		org	$30000
;		load	$30000

start:		movem.l	d0-d7/a0-a6,-(a7)	;First, save regs.
		move.l	execbase,a6
		move.l	graphics(a6),gfxbase	;Get graphics base!

		bsr.w	init_copper

		move.w	#$0020,$dff096		;Kill sprites
		move.l	gfxbase,a0
		move.l	38(a0),old_copper
		move.l	#copper,$dff080
		roxl.w	$dff088
		move.w	#$8180,$dff096		;Start the copper, using DMA

		move.w	intreqr,o_intreq	;save old
		move.w	intenar,o_intena	;IRQ-registers
		move.w	#$7fff,intreq		;kill all requests
		move.w	#$7fff,intena		;and interrupts
		move.l	$6c,o_level3		;save old IRQ
		move.l	#level_3,$6c		;store new IRQ
		move.w	#$c020,intena		;start IRQ
		move.w	#$8400,$dff096

		lea	$dff000,a6

;----------
main_loop:	cmp.b	#60,$dff006
		bne.s	main_loop

		bsr.w	set_screen

		btst	#6,$bfe001
		bne.s	main_loop

;----------		End program and return to trackloader etc.
end_prog:	move.l	gfxbase,a0
		move.w	#$0480,$dff096		;Kill copper-DMA
		move.l	old_copper,$dff080
		roxl.w	$dff088
		move.w	#$80a0,$dff096		;Enable DMA and sprites

		move.w	#$7fff,intreq		;kill all requests
		move.w	#$7fff,intena		;and interrupts
		move.l	o_level3,$6c		;move old IRQ
		or.w	#$8000,o_intena		;enable requests
		or.w	#$8000,o_intreq		;enable interrupts
		move.w	o_intreq,intreq
		move.w	o_intena,intena

		movem.l	(a7)+,d0-d7/a0-a6	;Restore regs.
		rts

*******************************************************************************
level_3:	;	Entry for the interrupt

irq_exit:	move.w	#$0020,intreq
		rte
		
*******************************************************************************
set_screen:	lea	copper_scr+6(pc),a0
		lea	colour1(pc),a1
		lea	colour2(pc),a2
		lea	colour3(pc),a3
		lea	sinus(pc),a4

		move.w	sine1_pos,d1
		add.w	sine1_spd,d1
		and.w	#2047,d1
		move.w	d1,sine1_pos

		move.w	sine2_pos,d2
		add.w	sine2_spd,d2
		and.w	#2047,d2
		move.w	d2,sine2_pos

		move.w	sine3_pos,d3
		add.w	sine3_spd,d3
		and.w	#2047,d3
		move.w	d3,sine3_pos

		move.w	#cop_bytes-1,d0		;Number of loops!

wait01:		btst	#14,$002(a6)
		bne.s	wait01
		move.w	#0,bltamod(a6)
		move.w	#0,bltbmod(a6)
		move.w	#0,bltcmod(a6)
		move.w	#[cop_bytes*4]+2,bltdmod(a6)
		move.l	#-1,bltafwm(a6)
		move.l	#$0f760000,bltcon0(a6)

set_scr_loop:	move.l	a1,d5
		move.l	a2,d6
		move.l	a3,d7
		add.w	(a4,d1.w),d5		;B Get sine-value
		add.w	(a4,d2.w),d6		;G
		add.w	(a4,d3.w),d7		;R

		add.w	sine1_add,d1
		and.w	#2047,d1
		add.w	sine2_add,d2
		and.w	#2047,d2
		add.w	sine3_add,d3
		and.w	#2047,d3
		move.w	#[64*cop_lines]+1,d4
		
;	Use the blitter NOW!!!

wait00:		btst	#14,$002(a6)
		bne.s	wait00
		
		move.l	d5,bltapth(a6)		;b
		move.l	d6,bltbpth(a6)		;g
		move.l	d7,bltcpth(a6)		;r
		move.l	a0,bltdpth(a6)
		move.w	d4,bltsize(a6)
		addq.w	#4,a0			;Add 4 to a0!
		dbra	d0,set_scr_loop
		rts

*******************************************************************************
init_copper:	move.w	#$300f,d1	;or line $30 in copper-language (!)
		lea	copper_scr(pc),a0
		move.w	#cop_lines-1,d2	;number of lines

init_line:	move.w	#cop_bytes-1,d3	;number of bytes on each line
		move.w	d1,(a0)+
		move.w	#-2,(a0)+	;set wait-marker
		add.w	#$100,d1	;Point to next line

init_byte:	move.w	#$0180,(a0)+
		move.w	d3,(a0)+	;The colour
		dbra	d3,init_byte
		dbra	d2,init_line

		move.l	#$01800000,(a0)+
		add.w	#$100,d1
		move.w	d1,(a0)+
		move.w	#-2,(a0)+
		move.l	#$01800fff,(a0)+
		add.w	#$100,d1
		move.w	d1,(a0)+
		move.w	#-2,(a0)+
		move.l	#$01800000,(a0)+

		move.l	#$fffffffe,(a0)+	;Rest of copperlist!
		rts

*******************************************************************************
gfxbase:	dc.l	0
o_intreq:	dc.w	0
o_intena:	dc.w	0
o_level3:	dc.l	0
old_copper:	dc.l	0

sine1_pos:	dc.w	0
sine2_pos:	dc.w	500
sine3_pos:	dc.w	1000

sine1_spd:	dc.w	12
sine2_spd:	dc.w	16
sine3_spd:	dc.w	18

sine1_add:	dc.w	16
sine2_add:	dc.w	6
sine3_add:	dc.w	20

colour1:	blk.w	64,0
		dc.w	$001,$001,$001,$001,$002,$002,$002,$002
		dc.w	$003,$003,$003,$003,$004,$004,$004,$004
		dc.w	$005,$005,$005,$005,$006,$006,$006,$006
		dc.w	$007,$007,$007,$007,$008,$008,$008,$008
		dc.w	$009,$009,$009,$009,$00a,$00a,$00a,$00a
		dc.w	$00b,$00b,$00b,$00b,$00c,$00c,$00c,$00c
		dc.w	$00d,$00d,$00d,$00d,$00e,$00e,$00e,$00e
		dc.w	$00f,$00f,$00f,$00f,$00e,$00e,$00e,$00e
		dc.w	$00d,$00d,$00d,$00d,$00c,$00c,$00c,$00c
		dc.w	$00b,$00b,$00b,$00b,$00a,$00a,$00a,$00a
		dc.w	$009,$009,$009,$009,$008,$008,$008,$008
		dc.w	$007,$007,$007,$007,$006,$006,$006,$006
		dc.w	$005,$005,$005,$005,$004,$004,$004,$004
		dc.w	$003,$003,$003,$003,$002,$002,$002,$002
		dc.w	$001,$001,$001,$001,$000,$000,$000,$000
		blk.w	10,0
		dc.w	$001,$001,$001,$001,$002,$002,$002,$002
		dc.w	$003,$003,$003,$003,$004,$004,$004,$004
		dc.w	$005,$005,$005,$005,$006,$006,$006,$006
		dc.w	$007,$007,$007,$007,$008,$008,$008,$008
		dc.w	$009,$009,$009,$009,$00a,$00a,$00a,$00a
		dc.w	$00b,$00b,$00b,$00b,$00c,$00c,$00c,$00c
		dc.w	$00d,$00d,$00d,$00d,$00e,$00e,$00e,$00e
		dc.w	$00f,$00f,$00f,$00f,$00e,$00e,$00e,$00e
		dc.w	$00d,$00d,$00d,$00d,$00c,$00c,$00c,$00c
		dc.w	$00b,$00b,$00b,$00b,$00a,$00a,$00a,$00a
		dc.w	$009,$009,$009,$009,$008,$008,$008,$008
		dc.w	$007,$007,$007,$007,$006,$006,$006,$006
		dc.w	$005,$005,$005,$005,$004,$004,$004,$004
		dc.w	$003,$003,$003,$003,$002,$002,$002,$002
		dc.w	$001,$001,$001,$001,$000,$000,$000,$000
		
colour2:	blk.w	64,0
		dc.w	$010,$010,$010,$010,$020,$020,$020,$020
		dc.w	$030,$030,$030,$030,$040,$040,$040,$040
		dc.w	$050,$050,$050,$050,$060,$060,$060,$060
		dc.w	$070,$070,$070,$070,$080,$080,$080,$080
		dc.w	$090,$090,$090,$090,$0a0,$0a0,$0a0,$0a0
		dc.w	$0b0,$0b0,$0b0,$0b0,$0c0,$0c0,$0c0,$0c0
		dc.w	$0d0,$0d0,$0d0,$0d0,$0e0,$0e0,$0e0,$0e0
		dc.w	$0f0,$0f0,$0f0,$0f0,$0e0,$0e0,$0e0,$0e0
		dc.w	$0d0,$0d0,$0d0,$0d0,$0c0,$0c0,$0c0,$0c0
		dc.w	$0b0,$0b0,$0b0,$0b0,$0a0,$0a0,$0a0,$0a0
		dc.w	$090,$090,$090,$090,$080,$080,$080,$080
		dc.w	$070,$070,$070,$070,$060,$060,$060,$060
		dc.w	$050,$050,$050,$050,$040,$040,$040,$040
		dc.w	$030,$030,$030,$030,$020,$020,$020,$020
		dc.w	$010,$010,$010,$010,$000,$000,$000,$000
		blk.w	10,0
		dc.w	$010,$010,$010,$010,$020,$020,$020,$020
		dc.w	$030,$030,$030,$030,$040,$040,$040,$040
		dc.w	$050,$050,$050,$050,$060,$060,$060,$060
		dc.w	$070,$070,$070,$070,$080,$080,$080,$080
		dc.w	$090,$090,$090,$090,$0a0,$0a0,$0a0,$0a0
		dc.w	$0b0,$0b0,$0b0,$0b0,$0c0,$0c0,$0c0,$0c0
		dc.w	$0d0,$0d0,$0d0,$0d0,$0e0,$0e0,$0e0,$0e0
		dc.w	$0f0,$0f0,$0f0,$0f0,$0e0,$0e0,$0e0,$0e0
		dc.w	$0d0,$0d0,$0d0,$0d0,$0c0,$0c0,$0c0,$0c0
		dc.w	$0b0,$0b0,$0b0,$0b0,$0a0,$0a0,$0a0,$0a0
		dc.w	$090,$090,$090,$090,$080,$080,$080,$080
		dc.w	$070,$070,$070,$070,$060,$060,$060,$060
		dc.w	$050,$050,$050,$050,$040,$040,$040,$040
		dc.w	$030,$030,$030,$030,$020,$020,$020,$020
		dc.w	$010,$010,$010,$010,$000,$000,$000,$000

colour3:	blk.w	64,0
		dc.w	$100,$100,$100,$100,$200,$200,$200,$200
		dc.w	$300,$300,$300,$300,$400,$400,$400,$400
		dc.w	$500,$500,$500,$500,$600,$600,$600,$600
		dc.w	$700,$700,$700,$700,$800,$800,$800,$800
		dc.w	$900,$900,$900,$900,$a00,$a00,$a00,$a00
		dc.w	$b00,$b00,$b00,$b00,$c00,$c00,$c00,$c00
		dc.w	$d00,$d00,$d00,$d00,$e00,$e00,$e00,$e00
		dc.w	$f00,$f00,$f00,$f00,$e00,$e00,$e00,$e00
		dc.w	$d00,$d00,$d00,$d00,$c00,$c00,$c00,$c00
		dc.w	$b00,$b00,$b00,$b00,$a00,$a00,$a00,$a00
		dc.w	$900,$900,$900,$900,$800,$800,$800,$800
		dc.w	$700,$700,$700,$700,$600,$600,$600,$600
		dc.w	$500,$500,$500,$500,$400,$400,$400,$400
		dc.w	$300,$300,$300,$300,$200,$200,$200,$200
		dc.w	$100,$100,$100,$100,$000,$000,$000,$000
		blk.w	10,0
		dc.w	$100,$100,$100,$100,$200,$200,$200,$200
		dc.w	$300,$300,$300,$300,$400,$400,$400,$400
		dc.w	$500,$500,$500,$500,$600,$600,$600,$600
		dc.w	$700,$700,$700,$700,$800,$800,$800,$800
		dc.w	$900,$900,$900,$900,$a00,$a00,$a00,$a00
		dc.w	$b00,$b00,$b00,$b00,$c00,$c00,$c00,$c00
		dc.w	$d00,$d00,$d00,$d00,$e00,$e00,$e00,$e00
		dc.w	$f00,$f00,$f00,$f00,$e00,$e00,$e00,$e00
		dc.w	$d00,$d00,$d00,$d00,$c00,$c00,$c00,$c00
		dc.w	$b00,$b00,$b00,$b00,$a00,$a00,$a00,$a00
		dc.w	$900,$900,$900,$900,$800,$800,$800,$800
		dc.w	$700,$700,$700,$700,$600,$600,$600,$600
		dc.w	$500,$500,$500,$500,$400,$400,$400,$400
		dc.w	$300,$300,$300,$300,$200,$200,$200,$200
		dc.w	$100,$100,$100,$100,$000,$000,$000,$000
		blk.w	10,0

sinus:	dc.w	127,128,129,129,130,131,132,132,133,134,135,136,136,137,138,139
	dc.w	139,140,141,142,143,143,144,145,146,146,147,148,149,150,150,151
	dc.w	152,153,153,154,155,156,156,157,158,159,159,160,161,162,163,163
	dc.w	164,165,166,166,167,168,168,169,170,171,171,172,173,174,174,175
	dc.w	176,177,177,178,179,179,180,181,182,182,183,184,184,185,186,186
	dc.w	187,188,188,189,190,191,191,192,193,193,194,195,195,196,197,197
	dc.w	198,198,199,200,200,201,202,202,203,204,204,205,205,206,207,207
	dc.w	208,208,209,210,210,211,211,212,213,213,214,214,215,215,216,217
	dc.w	217,218,218,219,219,220,220,221,221,222,223,223,224,224,225,225
	dc.w	226,226,227,227,228,228,228,229,229,230,230,231,231,232,232,233
	dc.w	233,233,234,234,235,235,236,236,236,237,237,238,238,238,239,239
	dc.w	239,240,240,241,241,241,242,242,242,243,243,243,244,244,244,244
	dc.w	245,245,245,246,246,246,247,247,247,247,248,248,248,248,249,249
	dc.w	249,249,249,250,250,250,250,250,251,251,251,251,251,252,252,252
	dc.w	252,252,252,252,253,253,253,253,253,253,253,253,254,254,254,254
	dc.w	254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254
	dc.w	255,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254
	dc.w	254,254,254,254,254,253,253,253,253,253,253,253,253,252,252,252
	dc.w	252,252,252,252,251,251,251,251,251,250,250,250,250,250,249,249
	dc.w	249,249,249,248,248,248,248,247,247,247,247,246,246,246,245,245
	dc.w	245,244,244,244,244,243,243,243,242,242,242,241,241,241,240,240
	dc.w	239,239,239,238,238,238,237,237,236,236,236,235,235,234,234,233
	dc.w	233,233,232,232,231,231,230,230,229,229,228,228,228,227,227,226
	dc.w	226,225,225,224,224,223,223,222,221,221,220,220,219,219,218,218
	dc.w	217,217,216,215,215,214,214,213,213,212,211,211,210,210,209,208
	dc.w	208,207,207,206,205,205,204,204,203,202,202,201,200,200,199,198
	dc.w	198,197,197,196,195,195,194,193,193,192,191,191,190,189,188,188
	dc.w	187,186,186,185,184,184,183,182,182,181,180,179,179,178,177,177
	dc.w	176,175,174,174,173,172,171,171,170,169,168,168,167,166,166,165
	dc.w	164,163,163,162,161,160,159,159,158,157,156,156,155,154,153,153
	dc.w	152,151,150,150,149,148,147,146,146,145,144,143,143,142,141,140
	dc.w	139,139,138,137,136,136,135,134,133,132,132,131,130,129,129,128
	dc.w	127,126,125,125,124,123,122,122,121,120,119,118,118,117,116,115
	dc.w	115,114,113,112,111,111,110,109,108,108,107,106,105,104,104,103
	dc.w	102,101,101,100,99,98,98,97,96,95,95,94,93,92,91,91,90,89,88,88
	dc.w	87,86,86,85,84,83,83,82,81,80,80,79,78,77,77,76,75,75,74,73,72
	dc.w	72,71,70,70,69,68,68,67,66,66,65,64,63,63,62,61,61,60,59,59,58
	dc.w	57,57,56,56,55,54,54,53,52,52,51,50,50,49,49,48,47,47,46,46,45
	dc.w	44,44,43,43,42,41,41,40,40,39,39,38,37,37,36,36,35,35,34,34,33
	dc.w	33,32,31,31,30,30,29,29,28,28,27,27,26,26,26,25,25,24,24,23,23
	dc.w	22,22,21,21,21,20,20,19,19,18,18,18,17,17,16,16,16,15,15,15,14
	dc.w	14,13,13,13,12,12,12,11,11,11,10,10,10,10,9,9,9,8,8,8,7,7,7,7,6
	dc.w	6,6,6,5,5,5,5,5,4,4,4,4,4,3,3,3,3,3,2,2,2,2,2,2,2,1,1,1,1,1,1,1
	dc.w	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4
	dc.w	4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,9,9,10,10,10,10,11,11
	dc.w	11,12,12,12,13,13,13,14,14,15,15,15,16,16,16,17,17,18,18,18,19
	dc.w	19,20,20,21,21,21,22,22,23,23,24,24,25,25,26,26,26,27,27,28,28
	dc.w	29,29,30,30,31,31,32,33,33,34,34,35,35,36,36,37,37,38,39,39,40
	dc.w	40,41,41,42,43,43,44,44,45,46,46,47,47,48,49,49,50,50,51,52,52
	dc.w	53,54,54,55,56,56,57,57,58,59,59,60,61,61,62,63,63,64,65,66,66
	dc.w	67,68,68,69,70,70,71,72,72,73,74,75,75,76,77,77,78,79,80,80,81
	dc.w	82,83,83,84,85,86,86,87,88,88,89,90,91,91,92,93,94,95,95,96,97
	dc.w	98,98,99,100,101,101,102,103,104,104,105,106,107,108,108,109
	dc.w	110,111,111,112,113,114,115,115,116,117,118,118,119,120,121,122
	dc.w	122,123,124,125,125,126

*******************************************************************************
copper:		dc.w	$08e,$2f81	;DISPLAY WINDOW START
		dc.w	$090,$2fc1	;   -      -      -
		dc.w	$092,$038	;   -    BITPLANE START
		dc.w	$094,$0d0	;   -        -    STOP
		dc.w	$102,$40		;No bitplane-shift
		dc.w	$108,0		;Modulo=0
		dc.w	$180,$000	;Background colour
		dc.w	$096,$020
		dc.w	$100,$200

		dc.w	$2e0f,-2,$180,$fff
		dc.w	$2f0f,-2,$180,0

copper_scr:



end:
