
;                  copper list example
;

bwobflag:	dc.w	0
execbase:	equ	4
dmacon:		equ	$dff096
oldopenlibary:	equ	-408


main:	move.l	execbase,a6
	lea	gfxname,a1
	move.l	#0,d0
	jsr	oldopenlibary(a6)
	tst	d0
	beq	error_no_libary
	move.l	d0,gfxbase
	move.l	d0,a0
	add.l	#$32,a0
	move.w	#$0080,dmacon
	move.l	(a0),oldcopper
	move.l	#newcopper,(a0)
	move.w	#$8080,dmacon
	bsr	scrapsetup
	;jsr	mt_init
	move.w	#$0020,$dff096

	move.w	#$4000,$dff09a
	move.l	$6c,store
	move.l	#inter,$6c
	move.w	#$c000,$dff09a
	
wait:	andi.b	#$40,$bfe001
	bne	wait
	
	move.w	#$000f,$dff096
	move.w	#$4000,$dff09a
	move.l	store,$6c
	move.w	#$c000,$dff09a
	clr.l	d0
	;jsr 	start	
	move.l	gfxbase,a0
	add.l	#$32,a0
	move.w	#$8020,$dff096
	move.w	#$0080,dmacon
	move.l	oldcopper,(a0)
	move.w	#$8080,dmacon

error_no_libary:
	rts	
gfxname:
	dc.b	"graphics.library",0
	even

inter:	movem.l	a0-a6/d0-d7,-(a7)
;	jsr	mt_music
	bsr	scraper
;	move.w	#$0fff,$dff180
	movem.l	(a7)+,a0-a6/d0-d7
	dc.w	$4ef9
store:	dc.l	0



textup:	move.l	#$71000,a5
	move.w	#20,d7
nextch:	addq.l	#2,a5
	move.l	a5,a0
	move.l	#$70000,a1
	bsr	getcharval
	move.l	chart,d3
	add.l	d3,a1
	move.w	#16,d0
pbit:	move.w	(a1)+,(a0)
	add.l	#$5c,a0
	dbr	d0,pbit
	dbr	d7,nextch
	rts

textpoint:	dc.l	0,0

ss:	dc.b 	0
sstore:	dc.b	0,0,0

chart:	dc.w	0
char:	dc.w	0,0,0

getcharval:
	lea	text,a6
	move.l	textpoint,d0
	add.l	d0,a6
	move.b	(a6),d0
	cmp.b	#$ff,d0
	beq	resetall

	cmp.w	#$d0,d0
	blt	skip
	cmp.w	#$e0,d0
	beq	sine1
	cmp.w	#$e1,d0
	beq	sine2
	cmp.w	#$e2,d0
	beq	sine3
	cmp.w	#$e3,d0
	beq	scroll1
	cmp.w	#$e4,d0
	beq	scroll2
	cmp.w	#$e5,d0
	beq	scroll3
	cmp.w	#$e6,d0
	beq	zigzag1
	cmp.w	#$e7,d0
	beq	zigzag2
	cmp.w	#$e8,d0
	beq	zigzag3
	cmp.w	#$e9,d0
	beq	quick
	cmp.w	#$ea,d0
	beq	greets
	cmp.w	#$eb,d0
	beq	quickgreets

skip:	move.b	d0,sstore
	move.w	ss,d0
	sub.w	#$31,d0
	mulu	#$20,d0
	move.w	d0,char
	addq.l	#1,textpoint
	rts
	

RESETALL:
	move.l	#0,textpoint
	bra	getcharval

sine1:	move.l	#sine1table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

sine2:	move.l	#sine2table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

sine3:	move.l	#sine3table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

scroll1:move.l	#scroll1table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

scroll2:move.l	#scroll2table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

scroll3:move.l	#scroll3table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

zigzag1:move.l	#zigzag1table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

zigzag2:move.l	#zigzag2table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

zigzag3:move.l	#zigzag3table,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

quick:	move.l	#quicktable,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

greets:move.l	#greetstable,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval
quickgreets:
	move.l	#quickgreetstable,nextwobtab
	addq.l	#1,textpoint
	bra	getcharval

text:	DC.B	$e0,`        SPARK        `
	dc.b	$e1,`OF XXX INTERNATIONAL `
	DC.B	$e2,`      PRESENTS       `
	DC.B	$e3,`    THE XXX INTRO    `
	DC.B	$e4,` ALL CODING BY SPARK `
	DC.B	$e5,`   GRAFIX BY TURBO   `
	DC.B	$e6,`    MUSIC BY SPARK   `
	DC.B	$e7,`  THIS MESSAGE IS A  `
	DC.B	$e8,`    LOAD OF SHIT     `
	DC.B	$e9,` SO I THINK I WILL GO`
	DC.B	$ea,`   BYE BYE  SUCKERS  `
	DC.B	$eb,` GREETS TO TURBO HEHE`,$FF
	EVEN
scrapsetup:
	lea	xbps,a1
	lea	xbpf,a2
	move.w	#$FD2,d0
suloop:	move.w	d0,(a1)
	add.w	#$5c,d0
	add.l	#16,a1
	cmp.l	a1,a2
	bgt	suloop
	move.l	#sine1table,currentwobtab
	move.l	#sine1table,nextwobtab
	rts

tablepo:	dc.b	0,0
tablepos:	dc.b	0,0,0,0
nextwobtab:	dc.l	0,0
currentwobtab:	dc.l	0,0
scraper:
	lea	xbps,a1
	lea	xscs,a4
	lea	xscf-16,a5
repbit:	move.w	16(a1),d0
	sub.w	#$5c,d0
	move.w	d0,(a1)
	move.w	16(a4),(a4)
	add.l	#16,a4
	add.l	#16,a1
	cmp.l	a4,a5
	bgt	repbit
				;newvalue
	move.l	tablepo,d0
	move.l	currentwobtab,a4
	add.l	d0,a4
	lea	xbpf-16,a1
	lea	xscf-16,a3
	
wobloop:
	bsr	nextwob	
	add.l	#2,d0
	move.l	currentwobtab,a4	
	add.l	d0,a4
	move.l	d0,tablepo
	cmp.w	#$abcd,(a4)
	beq	ressit
	rts


ressit:
	move.l	nextwobtab,currentwobtab
	move.l	currentwobtab,a4
	move.l	#0,tablepo
	bsr	textup	
nextwob:
	cmp.w	#$abcd,(a4)
	beq	ressit	
	move.w	(a4),d1
	cmp.w	#$e000,d1
	bhi	suber

adder:	move.w	(a3),d2
	add.w	d1,d2
	cmp.w	#$ff,d2
	bhi	addone
	move.w	d2,(a3)
	rts

addone:	sub.w	#$10,d2
	move.w	d2,d1s
	move.b	#0,d1s
	move.w	d1s,d2
	move.w	d2,(a3)
	sub.w	#2,(a1)
	rts			

suber:	move.w	(a3),d2
	add.w	d1,d2
	cmp.w	#$f000,d2
	bhi	subone
	move.w	d2,(a3)
	rts

subone:	add.w	#$10,d2
	move.w	d2,d1s
	move.b	#0,d1s
	move.w	d1s,d2
	move.w	d2,(a3)
	add.w	#2,(a1)
	rts			
	

d1s:	dc.b	0
d1store:dc.b	0

	
sine1table:
	blk.w	38,-$aa
	blk.w	100,-$00
	BLK.W	2,-$55
	BLK.W	2,-$44
	BLK.W	2,-$33
	BLK.W	2,-$22
	BLK.W	2,-$11
	BLK.W	2,00
	BLK.W	2,$11
	BLK.W	2,$22
	BLK.W	2,$33
	BLK.W	2,$44
	BLK.W	2,$55
	BLK.W	2,$55
	BLK.W	2,$44
	BLK.W	2,$33
	BLK.W	2,$22
	BLK.W	2,$11
	BLK.W	2,00
	BLK.W	2,-$11
	BLK.W	2,-$22
	BLK.W	2,-$33
	BLK.W	2,-$44
	BLK.W	2,-$55
	BLK.W	2,-$55
	BLK.W	2,-$44
	BLK.W	2,-$33
	BLK.W	2,-$22
	BLK.W	2,-$11
	BLK.W	2,00
	BLK.W	2,$11
	BLK.W	2,$22
	BLK.W	2,$33
	BLK.W	2,$44
	BLK.W	2,$55
	BLK.W	2,$55
	BLK.W	2,$44
	BLK.W	2,$33
	BLK.W	2,$22
	BLK.W	2,$11
	BLK.W	2,00
	BLK.W	2,-$11
	BLK.W	2,-$22
	BLK.W	2,-$33
	BLK.W	2,-$44
	BLK.W	2,-$55
	BLK.W	50,0
	blk.w	38,$aa
	Blk.w	50,0
	dc.w	$abcd

sine2table:
	blk.w	38,-$aa
	blk.w	100,-$00
	BLK.W	1,-$55
	BLK.W	1,-$44
	BLK.W	1,-$33
	BLK.W	1,-$22
	BLK.W	1,-$11
	BLK.W	1,00
	BLK.W	1,$11
	BLK.W	1,$22
	BLK.W	1,$33
	BLK.W	1,$44
	BLK.W	1,$55
	BLK.W	1,$55
	BLK.W	1,$44
	BLK.W	1,$33
	BLK.W	1,$22
	BLK.W	1,$11
	BLK.W	1,00
	BLK.W	1,-$11
	BLK.W	1,-$22
	BLK.W	1,-$33
	BLK.W	1,-$44
	BLK.W	1,-$55
	BLK.W	1,-$55
	BLK.W	1,-$44
	BLK.W	1,-$33
	BLK.W	1,-$22
	BLK.W	1,-$11
	BLK.W	1,00
	BLK.W	1,$11
	BLK.W	1,$22
	BLK.W	1,$33
	BLK.W	1,$44
	BLK.W	1,$55
	BLK.W	1,$55
	BLK.W	1,$44
	BLK.W	1,$33
	BLK.W	1,$22
	BLK.W	1,$11
	BLK.W	1,00
	BLK.W	1,-$11
	BLK.W	1,-$22
	BLK.W	1,-$33
	BLK.W	1,-$44
	BLK.W	1,-$55
	BLK.W	50,0
	blk.w	38,$aa
	Blk.w	50,0
	dc.w	$abcd

sine3table:
	blk.w	38,-$aa
	blk.w	100,-$00
	BLK.W	4,-$55
	BLK.W	4,-$44
	BLK.W	4,-$33
	BLK.W	4,-$22
	BLK.W	4,-$11
	BLK.W	4,00
	BLK.W	4,$11
	BLK.W	4,$22
	BLK.W	4,$33
	BLK.W	4,$44
	BLK.W	4,$55
	BLK.W	4,$55
	BLK.W	4,$44
	BLK.W	4,$33
	BLK.W	4,$22
	BLK.W	4,$11
	BLK.W	4,00
	BLK.W	4,-$11
	BLK.W	4,-$22
	BLK.W	4,-$33
	BLK.W	4,-$44
	BLK.W	4,-$55
	BLK.W	4,-$55
	BLK.W	4,-$44
	BLK.W	4,-$33
	BLK.W	4,-$22
	BLK.W	4,-$11
	BLK.W	4,00
	BLK.W	4,$11
	BLK.W	4,$22
	BLK.W	4,$33
	BLK.W	4,$44
	BLK.W	4,$55
	BLK.W	4,$55
	BLK.W	4,$44
	BLK.W	4,$33
	BLK.W	4,$22
	BLK.W	4,$11
	BLK.W	4,00
	BLK.W	4,-$11
	BLK.W	4,-$22
	BLK.W	4,-$33
	BLK.W	4,-$44
	BLK.W	4,-$55
	BLK.W	50,0
	blk.w	38,$aa
	Blk.w	50,0
	dc.w	$abcd

scroll1table:
	blk.w	380,-$11
	blk.w	50,0 
	blk.w	380,$11
	blk.w	50,0
	dc.w	$abcd
scroll2table:
	blk.w	190,-$22
	blk.w	50,0 
	blk.w	190,$22
	blk.w	50,0
	dc.w	$abcd
scroll3table:
	blk.w	126,-$33
	blk.w	50,0 
	blk.w	126,$33
	blk.w	50,0
	dc.w	$abcd

zigzag1table:
	blk.w	38,-$aa
	blk.w	50,0
	blk.w	20,-$11
	blk.w	20,$11
	blk.w	20,$11
	blk.w	20,-$11
	blk.w	50,0
	blk.w	38,$aa
	blk.w	50,0
	dc.w	$abcd
zigzag2table:
	blk.w	38,-$aa
	blk.w	50,0
	blk.w	20,-$22
	blk.w	20,$22
	blk.w	20,$22
	blk.w	20,-$22
	blk.w	50,0
	blk.w	38,$aa
	blk.w	50,0
	dc.w	$abcd
zigzag3table:
	blk.w	38,-$aa
	blk.w	50,0
	blk.w	20,-$44
	blk.w	20,$44
	blk.w	20,$44
	blk.w	20,-$44
	blk.w	50,0
	blk.w	38,$aa
	blk.w	50,0
	dc.w	$abcd
quicktable:
	blk.w	38,-$aa
	blk.w	50,0
	blk.w	38,$aa
	blk.w	50,0
	dc.w	$abcd
greetstable:
	blk.w	38,-$aa
	blk.w	30,0
	blk.w	38,$aa
	blk.w	30,0
	dc.w	$abcd

quickgreetstable:
	blk.w	38,-$aa
	blk.w	10,0
	blk.w	38,$aa
	blk.w	10,0
	dc.w	$abcd

 



gfxbase:

	dc.l	0

oldcopper:

	dc.l	0


newcopper:	
	dc.w	$0100,$0000,$0180,0
	dc.w	$0108,$000,$010a,$000	

	dc.w	$2c01,$fffe
	DC.W 	$0100,$5200
	DC.W 	$00E0,$0006,$00E4,$0006
	dc.w	$00e8,$0006,$00ec,$0006
	dc.w	$00f0,$0006

	dc.w	$00e2,$0000,$00e6,$2260
	dc.w	$00ea,$44c0,$00ee,$6720
	dc.w	$00f2,$8980
		
	dc.w	$0092,$0030,$0094,$00d8
	dc.w	$008e,$1e01,$0090,$3eff

	dc.w	$0180,$0000,$0182,$0002,$0184,$0300,$0186,$0400
	dc.w	$0188,$0004,$018a,$0500,$018c,$0005,$018e,$0006
	dc.w	$0190,$0700,$0192,$0007,$0194,$0008,$0196,$0810
	dc.w	$0198,$0009,$019a,$000a,$019c,$0920,$019e,$000b
	dc.w	$01a0,$000c,$01a2,$000d,$01a4,$0b30,$01a6,$000e
	dc.w	$01a8,$000f,$01aa,$0c40,$01ac,$0d50,$01ae,$0e60
	dc.w	$01b0,$0f90,$01b2,$0fa0,$01b4,$0fb0,$01b6,$0fc0
	dc.w	$01b8,$0fd0,$01ba,$0fe0,$01bc,$0ff0,$01be,$0fff



	dc.w	$d501,$fffe,$0100,$1200,$00e0,$0007
	dc.w	$0108,$0030,$010a,$0030	
	dc.w	$0092,$0030,$0094,$00d8
	dc.w	$0182
xcols:	dc.w	$0FF0,$00e2
xbps:	dc.w	$a000,$0102
xscs:	dc.w	$0000
	dc.w	$d601,$fffe,$0182,$0FE0,$00e2,$a088,$0102,$0000
	dc.w	$d701,$fffe,$0182,$0FD0,$00e2,$a088,$0102,$0000
	dc.w	$d801,$fffe,$0182,$0FC0,$00e2,$a088,$0102,$0000
	dc.w	$d901,$fffe,$0182,$0FB0,$00e2,$a088,$0102,$0000
	dc.w	$da01,$fffe,$0182,$0FA0,$00e2,$a088,$0102,$0000
	dc.w	$db01,$fffe,$0182,$0F90,$00e2,$a088,$0102,$0000
	dc.w	$dc01,$fffe,$0182,$0F80,$00e2,$a088,$0102,$0000
	dc.w	$dd01,$fffe,$0182,$0F70,$00e2,$a088,$0102,$0000
	dc.w	$de01,$fffe,$0182,$0F60,$00e2,$a088,$0102,$0000
	dc.w	$df01,$fffe,$0182,$0F50,$00e2,$a088,$0102,$0000
	dc.w	$e001,$fffe,$0182,$0F30,$00e2,$a088,$0102,$0000
	dc.w	$e101,$fffe,$0182,$0F20,$00e2,$a088,$0102,$0000
	dc.w	$e201,$fffe,$0182,$0F10,$00e2,$a088,$0102,$0000
	dc.w	$e301,$fffe,$0182,$0F00,$00e2,$a088,$0102,$0000
	dc.w	$e401,$fffe,$0182
xcolf:	dc.w	$0F00,$00e2
xbpf:	dc.w	$0088,$0102
xscf:	dc.w	$0000
	dc.w	$7601,$fffe,$0182,$0202,$00e2,$8000,$0102,$0000
	dc.w	$0100,$0000

	dc.w	$f201,$fffe
	dc.w	$0100,$0000
pal:	dc.w	$ffdf,$fffe,$0021,$fffe

end:	dc.w	$ffff,$fffe
	
