
	lea.l	main(pc),a0
	move.l	a0,$80.w
	trap	#$0
	rts

main:	movem.l	d0-d7/a0-a6,-(a7)
	move.l	$4.w,a6
	lea	libname(pc),a1
	jsr	-408(a6)
	move.l	d0,a5

	bsr	fillcopper
	bsr	filldata
	
	move.w	$dff01c,d0		;intenar
	move.w	$dff01e,d1		;intreqr
	move.w	$dff002,d2		;dmaconr
	move.w	#$7fff,$dff096		
	move.w	#$82c0,$dff096		
	move.w	#$7fff,$dff09a		;clear intena
	move.w	#$c020,$dff09a		;init intena
	move.l	#copperlist1,$dff080
	clr.w	$dff088
	move.w	#$8000,d3
	or.w	d3,d0
	or.w	d3,d1
	or.w	d3,d2

	move.l	$6c.w,oldint
	move.l	#int,$6c

	movem.l d0-d7/a0-a6,-(a7)

loop:	btst	#6,$bfe001
	bne.s	loop

exit:	movem.l	(a7)+,d0-d7/a0-a6

	move.l	oldint,$6c.w

	move.w	d2,$dff096
	move.w	d1,$dff09c
	move.w	d0,$dff09a
	move.l	$26(a5),$dff080
	move.l	a5,a1
	jsr	-414(a6)		
	movem.l	(a7)+,d0-d7/a0-a6
	rte

oldint:	dc.l	0
*****************************************************************
*								*
*	PLASMA ROUTINE by Cool-G				*
*								*
*****************************************************************
copperpointers:	dc.l	copperdata1,copperdata2
copperdata1:	dc.l	copperlist1,plasmafield2+4,$dff080,$dff088
copperdata2:	dc.l	copperlist2,plasmafield1+4,$dff084,$dff08a

lamedata:	dc.l	$01800000,plasmapattern,plasmapointers,sinuslist
		dc.w	2*sinuslistlength
plasmapointers:
globalDY:	dc.w	0
indivDY:	dc.w	0
globalDX:	dc.w	100
indivDX:	dc.w	0
		
int:	btst	#10,$dff016			; check on RMB
	beq.w	exitint

	lea.l	copperpointers(pc),a6		; switch double buffered
	move.l	(a6)+,a0			; copperlist
	move.l	(a6),a1
	move.l	a0,(a6)
	move.l	a1,-(a6)
	
	movem.l	(a0)+,d0/a1/a2/a3		; activate new copperlist
	move.l	d0,(a2)
	clr.w	(a3)

	lea.l	lamedata(pc),a5
	movem.l	(a5)+,d7/a0/a2/a6
	movem.w	(a5)+,d1/d2/d3/d4/d5
						; advance counters :
						
	addq.w	#8,d2				; global DY offset
	cmp.w	d1,d2
	blt.s	.ok1
	moveq	#0,d2
.ok1:	move.w	d2,(a2)+

	addq.w	#4,d3				; indiv DY global offset
	cmp.w	d1,d3
	blt.s	.ok2
	moveq	#0,d3
.ok2:	move.w	d3,(a2)+

	addq.w	#6,d4				; global DX offset
	cmp.w	d1,d4
	blt.s	.ok3
	moveq	#0,d4
.ok3:	move.w	d4,(a2)+

	addq.w	#8,d5				; indiv DX global offset
	cmp.w	d1,d5
	blt.s	.ok4
	moveq	#0,d5
.ok4:	move.w	d5,(a2)

	add.w	(a6,d2.w),a0			; glb DY ptr
	lea.l	(a6,d3.w),a3			; ind DY ptr
	add.w	(a6,d4.w),a3			; glb DX ptr
	lea.l	(a6,d5.w),a5			; ind DX ptr

	moveq	#8,d2
	moveq	#26,d3				; indiv DY individual step
	moveq	#20,d4				; indiv DX individual step

	moveq	#Ysize-1,d6			; # rows
.yloop:	moveq	#Xsize-1,d5			; # cols

	move.l	a3,a6
	add.w	(a5),a6				; add indiv DX value (/row)
	add.w	d4,a5

.xloop:	move.w	(a6),d1  			; get indiv DY value (/column)
	add.w	d3,a6				; add indiv step DY
	move.w	(a0,d1.w),d7			; add indiv DY value
	move.l	d7,(a1)+			; put in copper with $0180
	dbf	d5,.xloop

	add.w	d2,a1				; adjust copperpos - next row
	tst.w	(a0)+				; linecounter up dummy
	dbf	d6,.yloop

	move.w	#$fff,$dff180
	moveq	#40,d0
.loopje:dbf	d0,.loopje
	move.w	#$000,$dff180

exitint:move.w	#$0020,$dff09c			; disable interrupt
	rte

	
*****************************************************************
*								*
*	Allerlei routines...					*
*								*
*****************************************************************

fillcopper:
	move.l	#credits,d0
	lea.l	creditsplpt1,a0
	lea.l	creditsplpt2,a1
	move.w	d0,6(a0)
	move.w	d0,6(a1)
	swap	d0
	move.w	d0,2(a0)
	move.w	d0,2(a1)
	rts

filldata:
	lea.l	sinuslist(pc),a0
	move.l	#realsinuslistlength-1,d0
.loop:	move.w	(a0),d1
	sub.w	#100,d1
	and.b	#$fe,d1			; make even!
	move.w	d1,(a0)+
	dbf	d0,.loop

	lea.l	plasmapattern(pc),a0
	lea.l	sinuslist+30(pc),a1
	move.l	#sinuslistlength-1,d0
.loop1:	move.w	(a1)+,d1
	add.w	#20,d1
	muls	#16,d1
	divs	#155,d1
	moveq	#$f,d2
	sub.w	d1,d2
;	asl	#4,d2
	and.w	#$f,d2
	asl	#8,d1
	and.w	#$f00,d1
	or.w	d2,d1	
	move.w	d1,(a0)+
	dbf	d0,.loop1
	rts

*****************************************************************
*								*
*	data							*
*								*
*****************************************************************

credits:	dc.l	%00111001110011101100000000111000
		dc.l	%01100011010110101100000001100000
		dc.l	%01100011010110101100011101101000
		dc.l	%01111011110111101111000001111000

libname:
	dc.b	"graphics.library",0
	even

;-------------------------------------------	
sinuslist:         ; generated with sinusgen by Cool-G   100 - 255
	dc.w         100,100,100,100,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,101,101
	dc.w 101,101,101,101,101,102,102,102,102,102
	dc.w 103,103,103,103,104,104,104,104,105,105
	dc.w 105,106,106,106,106,107,107,107,108,108
	dc.w 109,109,109,110,110,110,111,111,112,112
	dc.w 113,113,113,114,114,115,115,116,116,117
	dc.w 117,118,118,119,119,120,120,121,121,122
	dc.w 122,123,123,124,125,125,126,126,127,127
	dc.w 128,129,129,130,131,131,132,132,133,134
	dc.w 134,135,136,136,137,138,138,139,140,140
	dc.w 141,142,142,143,144,144,145,146,147,147
	dc.w 148,149,149,150,151,152,152,153,154,155
	dc.w 155,156,157,158,158,159,160,161,161,162
	dc.w 163,164,164,165,166,167,167,168,169,170
	dc.w 171,171,172,173,174,174,175,176,177,178
	dc.w 177,178,179,179,180,181,182,182,183,184
	dc.w 185,186,186,187,188,189,189,190,191,192
	dc.w 192,193,194,195,195,196,197,198,198,199
	dc.w 200,201,201,202,203,204,204,205,206,206
	dc.w 207,208,209,209,210,211,211,212,213,213
	dc.w 214,215,216,216,217,218,218,219,219,220
	dc.w 221,221,222,223,223,224,225,225,226,226
	dc.w 227,228,228,229,229,230,230,231,232,232
	dc.w 233,233,234,234,235,235,236,236,237,237
	dc.w 238,238,239,239,240,240,240,241,241,242
	dc.w 242,243,243,243,244,244,245,245,245,246
	dc.w 246,246,247,247,247,248,248,248,249,249
	dc.w 249,250,250,250,250,251,251,251,251,251
	dc.w 252,252,252,252,252,253,253,253,253,253
	dc.w 253,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,253,253,253,253,253,253
	dc.w 252,252,252,252,252,251,251,251,251,251
	dc.w 250,250,250,250,249,249,249,248,248,248
	dc.w 247,247,247,246,246,246,245,245,245,244
	dc.w 244,244,243,243,242,242,241,241,241,240
	dc.w 240,239,239,238,238,237,237,236,236,235
	dc.w 235,234,234,233,233,232,232,231,230,230
	dc.w 229,229,228,228,227,226,226,225,225,224
	dc.w 223,223,222,221,221,220,220,219,218,218
	dc.w 217,216,216,215,214,214,213,212,212,211
	dc.w 210,209,209,208,207,207,206,205,204,204
	dc.w 203,202,201,201,200,199,199,198,197,196
	dc.w 196,195,194,193,193,192,191,190,189,189
	dc.w 188,187,186,186,185,184,183,183,182,181
	dc.w 180,179,179,178,177,176,176,175,174,173
	dc.w 172,172,171,170,169,169,168,167,166,166
	dc.w 165,164,163,162,162,161,160,159,159,158
	dc.w 157,156,156,155,154,153,153,152,151,151
	dc.w 150,149,148,148,147,146,146,145,144,143
	dc.w 143,142,141,141,140,139,139,138,137,137
	dc.w 136,135,135,134,133,133,132,131,131,130
	dc.w 130,129,128,128,127,127,126,125,125,124
	dc.w 124,123,123,122,121,121,120,120,119,119
	dc.w 118,118,117,117,116,116,115,115,114,114
	dc.w 114,113,113,112,112,111,111,111,110,110
	dc.w 109,109,109,108,108,108,107,107,107,106
	dc.w 106,106,105,105,105,105,104,104,104,103
	dc.w 103,103,103,103,102,102,102,102,102,101
	dc.w 101,101,101,101,101,101,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,100,100,100,100
endsinuslist:
	dc.w         100,100,100,100,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,101,101
	dc.w 101,101,101,101,101,102,102,102,102,102
	dc.w 103,103,103,103,104,104,104,104,105,105
	dc.w 105,106,106,106,106,107,107,107,108,108
	dc.w 109,109,109,110,110,110,111,111,112,112
	dc.w 113,113,113,114,114,115,115,116,116,117
	dc.w 117,118,118,119,119,120,120,121,121,122
	dc.w 122,123,123,124,125,125,126,126,127,127
	dc.w 128,129,129,130,131,131,132,132,133,134
	dc.w 134,135,136,136,137,138,138,139,140,140
	dc.w 141,142,142,143,144,144,145,146,147,147
	dc.w 148,149,149,150,151,152,152,153,154,155
	dc.w 155,156,157,158,158,159,160,161,161,162
	dc.w 163,164,164,165,166,167,167,168,169,170
	dc.w 171,171,172,173,174,174,175,176,177,178
	dc.w 177,178,179,179,180,181,182,182,183,184
	dc.w 185,186,186,187,188,189,189,190,191,192
	dc.w 192,193,194,195,195,196,197,198,198,199
	dc.w 200,201,201,202,203,204,204,205,206,206
	dc.w 207,208,209,209,210,211,211,212,213,213
	dc.w 214,215,216,216,217,218,218,219,219,220
	dc.w 221,221,222,223,223,224,225,225,226,226
	dc.w 227,228,228,229,229,230,230,231,232,232
	dc.w 233,233,234,234,235,235,236,236,237,237
	dc.w 238,238,239,239,240,240,240,241,241,242
	dc.w 242,243,243,243,244,244,245,245,245,246
	dc.w 246,246,247,247,247,248,248,248,249,249
	dc.w 249,250,250,250,250,251,251,251,251,251
	dc.w 252,252,252,252,252,253,253,253,253,253
	dc.w 253,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,253,253,253,253,253,253
	dc.w 252,252,252,252,252,251,251,251,251,251
	dc.w 250,250,250,250,249,249,249,248,248,248
	dc.w 247,247,247,246,246,246,245,245,245,244
	dc.w 244,244,243,243,242,242,241,241,241,240
	dc.w 240,239,239,238,238,237,237,236,236,235
	dc.w 235,234,234,233,233,232,232,231,230,230
	dc.w 229,229,228,228,227,226,226,225,225,224
	dc.w 223,223,222,221,221,220,220,219,218,218
	dc.w 217,216,216,215,214,214,213,212,212,211
	dc.w 210,209,209,208,207,207,206,205,204,204
	dc.w 203,202,201,201,200,199,199,198,197,196
	dc.w 196,195,194,193,193,192,191,190,189,189
	dc.w 188,187,186,186,185,184,183,183,182,181
	dc.w 180,179,179,178,177,176,176,175,174,173
	dc.w 172,172,171,170,169,169,168,167,166,166
	dc.w 165,164,163,162,162,161,160,159,159,158
	dc.w 157,156,156,155,154,153,153,152,151,151
	dc.w 150,149,148,148,147,146,146,145,144,143
	dc.w 143,142,141,141,140,139,139,138,137,137
	dc.w 136,135,135,134,133,133,132,131,131,130
	dc.w 130,129,128,128,127,127,126,125,125,124
	dc.w 124,123,123,122,121,121,120,120,119,119
	dc.w 118,118,117,117,116,116,115,115,114,114
	dc.w 114,113,113,112,112,111,111,111,110,110
	dc.w 109,109,109,108,108,108,107,107,107,106
	dc.w 106,106,105,105,105,105,104,104,104,103
	dc.w 103,103,103,103,102,102,102,102,102,101
	dc.w 101,101,101,101,101,101,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,100,100,100,100
	dc.w         100,100,100,100,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,101,101
	dc.w 101,101,101,101,101,102,102,102,102,102
	dc.w 103,103,103,103,104,104,104,104,105,105
	dc.w 105,106,106,106,106,107,107,107,108,108
	dc.w 109,109,109,110,110,110,111,111,112,112
	dc.w 113,113,113,114,114,115,115,116,116,117
	dc.w 117,118,118,119,119,120,120,121,121,122
	dc.w 122,123,123,124,125,125,126,126,127,127
	dc.w 128,129,129,130,131,131,132,132,133,134
	dc.w 134,135,136,136,137,138,138,139,140,140
	dc.w 141,142,142,143,144,144,145,146,147,147
	dc.w 148,149,149,150,151,152,152,153,154,155
	dc.w 155,156,157,158,158,159,160,161,161,162
	dc.w 163,164,164,165,166,167,167,168,169,170
	dc.w 171,171,172,173,174,174,175,176,177,178
	dc.w 177,178,179,179,180,181,182,182,183,184
	dc.w 185,186,186,187,188,189,189,190,191,192
	dc.w 192,193,194,195,195,196,197,198,198,199
	dc.w 200,201,201,202,203,204,204,205,206,206
	dc.w 207,208,209,209,210,211,211,212,213,213
	dc.w 214,215,216,216,217,218,218,219,219,220
	dc.w 221,221,222,223,223,224,225,225,226,226
	dc.w 227,228,228,229,229,230,230,231,232,232
	dc.w 233,233,234,234,235,235,236,236,237,237
	dc.w 238,238,239,239,240,240,240,241,241,242
	dc.w 242,243,243,243,244,244,245,245,245,246
	dc.w 246,246,247,247,247,248,248,248,249,249
	dc.w 249,250,250,250,250,251,251,251,251,251
	dc.w 252,252,252,252,252,253,253,253,253,253
	dc.w 253,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,254,254,254,254,254,254
	dc.w 254,254,254,254,253,253,253,253,253,253
	dc.w 252,252,252,252,252,251,251,251,251,251
	dc.w 250,250,250,250,249,249,249,248,248,248
	dc.w 247,247,247,246,246,246,245,245,245,244
	dc.w 244,244,243,243,242,242,241,241,241,240
	dc.w 240,239,239,238,238,237,237,236,236,235
	dc.w 235,234,234,233,233,232,232,231,230,230
	dc.w 229,229,228,228,227,226,226,225,225,224
	dc.w 223,223,222,221,221,220,220,219,218,218
	dc.w 217,216,216,215,214,214,213,212,212,211
	dc.w 210,209,209,208,207,207,206,205,204,204
	dc.w 203,202,201,201,200,199,199,198,197,196
	dc.w 196,195,194,193,193,192,191,190,189,189
	dc.w 188,187,186,186,185,184,183,183,182,181
	dc.w 180,179,179,178,177,176,176,175,174,173
	dc.w 172,172,171,170,169,169,168,167,166,166
	dc.w 165,164,163,162,162,161,160,159,159,158
	dc.w 157,156,156,155,154,153,153,152,151,151
	dc.w 150,149,148,148,147,146,146,145,144,143
	dc.w 143,142,141,141,140,139,139,138,137,137
	dc.w 136,135,135,134,133,133,132,131,131,130
	dc.w 130,129,128,128,127,127,126,125,125,124
	dc.w 124,123,123,122,121,121,120,120,119,119
	dc.w 118,118,117,117,116,116,115,115,114,114
	dc.w 114,113,113,112,112,111,111,111,110,110
	dc.w 109,109,109,108,108,108,107,107,107,106
	dc.w 106,106,105,105,105,105,104,104,104,103
	dc.w 103,103,103,103,102,102,102,102,102,101
	dc.w 101,101,101,101,101,101,100,100,100,100
	dc.w 100,100,100,100,100,100,100,100,100,100,100,100
realendsinuslist:

sinuslistlength=	[endsinuslist-sinuslist]/2
realsinuslistlength=	[realendsinuslist-sinuslist]/2

;-----------------------------------------
copperlist1:
		dc.l	$00960100,$01800000
		dc.l	$008e2931,$009036c1

plasmafield1:

top = $40
Xsize =	29
Ysize = 70
leftborder = $51

linesize = 4+Xsize*4+4
fieldsize = linesize*Ysize

Y SET 0
		REPT Ysize
T SET Y
X SET leftborder
			dc.w	top*$100+Y+X,$fffe
			blk.l	Xsize,$01800000
			dc.w	$0180,$0000
Y SET Y+$100
		ENDR

endplasmafield1:

lowerzone1:	dc.l	$ffdffffe,$280ffffe
		
creditsplpt1:	dc.l	$00e00000,$00e20000
		dc.l	$01800000,$01820ccc
		dc.l	$01001000,$00968100
		dc.l	$009200c0,$009400c8
		dc.l	$2c0ffffe,$00960100

		dc.l	$36dffffe
		dc.l	$00968100
		dc.l	$fffffffe		;end of copperlist1

;-----------------------------------------
copperlist2:
		dc.l	$00960100,$01800000
		dc.l	$008e2931,$009036c1

plasmafield2:

Y SET 0
		REPT Ysize
T SET Y
X SET leftborder
			dc.w	top*$100+Y+X,$fffe
			blk.l	Xsize,$01800000
			dc.w	$0180,$0000
Y SET Y+$100
		ENDR

endplasmafield2:

lowerzone2:	dc.l	$ffdffffe,$280ffffe
		
creditsplpt2:	dc.l	$00e00000,$00e20000
		dc.l	$01800000,$01820ccc
		dc.l	$01001000,$00968100
		dc.l	$009200c0,$009400c8
		dc.l	$2c0ffffe,$00960100

		dc.l	$36dffffe
		dc.l	$00968100
		dc.l	$fffffffe		;end of copperlist1

;-----------------------------------------
patsize = 300

plasmapattern:
	blk.w	sinuslistlength,0
endplasmapattern:



 rept 2
x set 4
   rept 3
	dc.w	$1<<x+$1,$1<<x+$1,$1<<x+$1,$2<<x+$2,$2<<x+$2,$2<<x+$2,$3<<x+$3
	dc.w	$4<<x+$4,$6<<x+$6,$8<<x+$8
	dc.w	$a<<x+$a,$c<<x+$c,$d<<x+$d,$d<<x+$d,$e<<x+$e,$e<<x+$e,$e<<x+$e
	dc.w	$f<<x+$f,$f<<x+$f,$f<<x+$f
	dc.w	$f<<x+$f,$f<<x+$f,$e<<x+$e,$e<<x+$e,$e<<x+$e,$d<<x+$d,$d<<x+$d
	dc.w	$c<<x+$c,$a<<x+$a,$8<<x+$8
	dc.w	$6<<x+$6,$4<<x+$4,$3<<x+$3,$2<<x+$2,$2<<x+$2,$2<<x+$2,$1<<x+$1
	dc.w	$1<<x+$1
x set x+4
   endr
 endr
	
