
 	Section Copperlist,code_C

	opt	c-,o-

	move.w	#0,divequal

	move.l  4.w,a6		; exec lib
	jsr	-132(a6)	; forbid

	move.l	4.w,a6
	move.l	#200*1000,d0
	move.l	#$10001,d1		; public
	jsr	-198(a6)
	move.l	d0,unpackspc
	
	lea	dlib,a1
	moveq	#0,d0
	move.l	4.w,a6
	jsr	-$228(a6)
	tst	d0
	beq	error
	move.l	D0,dos		; store address of dos lib

	lea	glib,a1
	moveq	#0,d0
	move.l	4.w,a6
	jsr	-$228(a6)	; open lib
	tst	d0
	beq	error
	move.l	D0,graphics	; store address of graphics lib
	
	move.l	#40*55,d1
	move.l	#logo+64,d0	; store address of bitplane0
	move.w	d0,bitplane0_lo	; into the copper list
	swap	d0
	move.w	d0,bitplane0_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,bitplane1_lo
	swap	d0
	move.w	d0,bitplane1_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,bitplane2_lo
	swap	d0
	move.w	d0,bitplane2_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,bitplane3_lo
	swap	d0
	move.w	d0,bitplane3_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,bitplane4_lo
	swap	d0
	move.w	d0,bitplane4_hi
	
	move.l	#99*80,d1
	move.l	#Scrollpic+32,d0	; store address of bitplane0
	move.w	d0,mplane0_lo	; into the copper list
	swap	d0
	move.w	d0,mplane0_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,mplane1_lo
	swap	d0
	move.w	d0,mplane1_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,mplane2_lo
	swap	d0
	move.w	d0,mplane2_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,mplane3_lo
	swap	d0
	move.w	d0,mplane3_hi
	swap	d0
	add.l	d1,d0
	move.w	d0,mplane4_lo
	swap	d0
	move.w	d0,mplane4_hi

	lea	cmap1+2,a0
	lea	cmap2+2,a2
	lea	logo,a1
	lea	frame,a3
	move.w	#31,d0
setup_cmap1:	
	move.w	(a1)+,(a0)
	move.w	(a3)+,(a2)
	add.l	#4,a0
	add.l	#4,a2
	dbf	d0,setup_cmap1	

	lea	cmap3+2,a4
	lea	scrollpic,a5
	move.w	#15,d0
setup_cmap2:	
	move.w	(a5)+,(a4)
	add.l	#4,a4
	dbf	d0,setup_cmap2
	
	move.l  4.w,a6
	move.l	#scrsize,d0
	move.l	#$10002,d1
	jsr	-198(a6)	; alloc mem
	
	move.l	d0,screen2
	move.l	d0,scr2
	add.l	#scrsize/2,d0
	move.l	d0,scr1

	move.l	graphics,a6
	add.l	#$32,a6
	move.w	#$80,$dff096		; dma control write
	move.l	(a6),old_copper		; store the address of the
	move.l	#my_copper,(a6)		; old copperlist
	move.w	#$8080,$dff096		; dma control write
	move.w	#$8010,$dff09a		; interupt enable bits
	move.l	$6c.w,old_interupt	; store old level 3 int
	move.l	#new_interupt,$6c.w	; store my routine
					; into level 3 int


	bsr	show_equals

	bsr	waitmouse	

exit:	

	bsr	mt_end

	move.l	old_interupt,$6c.w	; resore old level 3 int
	move.l	#$10,$dff09a 		; Disable Level 3 Interupt
	move.l	graphics,a6
	add.l	#$32,a6
	move.w	#$0080,$dff096
	move.l	old_copper,(a6)		; restore old copper list
	move.w	#$8080,$dff096
	move.l	graphics,a1
	
	move.l  4.w,a6
	move.l	screen2,a1
	move.l	#scrsize,d0
	jsr	-210(a6)

	move.l	4.w,a6
	jsr	-138(a6)		; permit
	
	move.l	4.w,a6
	move.l	unpackspc,a1
	move.l	#200*1000,d0
	jsr	-210(a6)

error:	moveq	#0,d0			; return code=0 (ie mellow)
	rts

waitmouse:

	cmp.b	#95,$bfec01
	beq	do_f1

	cmp.b	#93,$bfec01
	beq	do_f2

	cmp.b	#91,$bfec01
	beq	do_f3

	cmp.b	#89,$bfec01
	beq	do_f4

	cmp.b	#87,$bfec01
	beq	do_f5

	cmp.b	#85,$bfec01
	beq	do_f6

	cmp.b	#83,$bfec01
	beq	do_f7

	cmp.b	#81,$bfec01
	beq	do_f8

	cmp.b	#79,$bfec01
	beq	do_f9

	cmp.b	#77,$bfec01
	beq	do_f10

	cmp.b	#117,$bfec01
	bne	waitmouse

	rts		
	
do_f1:	move.l	#lf1,loadme
	bsr	do_loader
	move.l	cheat+0,d0
	bra	do_cheat
	
do_f2:	move.l	#lf2,loadme
	bsr	do_loader
	move.l	cheat+4,d0
	bra	do_cheat
	
do_f3:	move.l	#lf3,loadme
	bsr	do_loader
	move.l	cheat+8,d0
	bra	do_cheat
	
do_f4:	move.l	#lf4,loadme
	bsr	do_loader
	move.l	cheat+12,d0
	bra	do_cheat
	
do_f5:	move.l	#lf5,loadme
	bsr	do_loader
	move.l	cheat+16,d0
	bra	do_cheat
	
do_f6:	move.l	#lf6,loadme
	bsr	do_loader
	move.l	cheat+20,d0
	bra	do_cheat
	
do_f7:	move.l	#lf7,loadme
	bsr	do_loader
	move.l	cheat+24,d0
	bra	do_cheat
		
do_f8:	move.l	#lf8,loadme
	bsr	do_loader
	move.l	cheat+28,d0
	bra	do_cheat
		
do_f9:	move.l	#lf9,loadme
	bsr	do_loader
	move.l	cheat+32,d0
	bra	do_cheat
		
do_f10:	move.l	#lf10,loadme
	bsr	do_loader
	move.l	cheat+36,d0
	bra	do_cheat
	
		even
lf1:		dc.b	"df0:mod.adamski",0
		even
lf2:		dc.b	"df0:mod.from",0
		even
lf3:		dc.b	"df0:mod.hb",0
		even
lf4:		dc.b	"df0:mod.is",0
		even
lf5:		dc.b	"df0:mod.itchy",0
		even
lf6:		dc.b	"df0:mod.midnight-dreams",0
		even
lf7:		dc.b	"df0:mod.phantom",0
		even
lf8:		dc.b	"df0:mod.speed-dreamer",0
		even
lf9:		dc.b	"df0:mod.switch625",0
		even
lf10:		dc.b	"df0:mod.walking-in-space",0
		even

loadme:		dc.l	0
file:		dc.l	0
counter:	dc.l	0
unpackspc:	dc.l	0

maxmin:
	
	move.l	#-1,calc
	move.l	#0,finished
	move.w	#$f0f,finding
	move.l	#0,maxequal
	move.l	#99999,minequal

	move.l	#waste,dff000
	move.l	#waste,dff0a0
	move.l	#waste,dff0b0
	move.l	#waste,dff0c0
	move.l	#waste,dff0d0
	
	bsr	mt_init
	bsr	mt_end
		
find_maxmin:
	bsr	mt_music
	cmp.l	#-1,finished
	bne.s	find_maxmin	

	move.l	#0,calc

	move.l	#$dff000,dff000
	move.l	#$dff0a0,dff0a0
	move.l	#$dff0b0,dff0b0
	move.l	#$dff0c0,dff0c0
	move.l	#$dff0d0,dff0d0
	
	rts
	
	
do_loader:
	
	move.l	#$19cce7a2,mt_data
	bsr	mt_end
	
fin_equals:
	clr.l	d0
	or.b	equals+00,d0
	or.b	equals+01,d0
	or.b	equals+02,d0
	or.b	equals+03,d0
	or.b	equals+04,d0
	or.b	equals+05,d0
	or.b	equals+06,d0
	or.b	equals+07,d0
	or.b	equals+08,d0
	or.b	equals+09,d0
	or.b	equals+10,d0
	or.b	equals+11,d0
	or.b	equals+12,d0
	or.b	equals+13,d0
	cmp.b	#0,d0
	bgt.s	fin_equals

	move.l	#1,use_equals

	bsr	show_equals
	
	bsr	blitting
	
	move.l	4.w,a6
	jsr	-138(a6)				; permit

	move.l	dos,a6
	move.l	loadme,d1
	move.l	#1005,d2
	jsr	-30(a6)
	move.l	d0,file
	cmp.l	#0,d0
	bne.s	file_ok
	
	move.l	#0,counter
error1:	move.w	$dff006,$dff180
	cmp.l	#100,counter
	bne.s	error1
	bra	error2
	
	
file_ok:
	move.l	file,d1
	move.l	unpackspc,d2
	move.l	#200*1000,d3
	jsr	-42(a6)
	move.l	d0,length
	
	move.l	file,d1
	jsr	-36(a6)

	move.l	unpackspc,a0		
	add.l	length,a0	; longword at end of packed buffer
	move.l	#mt_data,a1	; address to unpack to (start)
	move.l	#0,a2		; ??? dunno
	move.l	#mt_data,a3	; address to unpack to (start)

	bsr	unpack
	
	move.l	4.w,a6
	jsr	-132(a6)				; forbid

	bsr	maxmin
error2:
	bsr	mt_init
	
	move.l	#frame+64,blank

	move.l	#0,use_equals

	rts	

do_cheat:
	cmp.l	#0,d0
	beq.s	divequ_ok
	
	move.w	d0,divequal

divequ_ok:	
	bra	waitmouse

unpack:
	move.l	#0,len
	move.w	#$f0f,colour

	LEA	ppBD8(PC),A5
	MOVEQ	#3,D6
	MOVEQ	#1,D4
	MOVEQ	#7,D7
	MOVEQ	#1,D5
	MOVEA.L	A3,A2
	MOVE.L	-(A0),D1
	TST.B	D1
	BEQ.S	ppB52
	BSR.S	ppB76
	SUB.L	D4,D1
	LSR.L	D1,D5
ppB52	LSR.L	#8,D1
	ADDA.L	D1,A3
ppB56	BSR.S	ppB76
	BCS.S	ppB98
	MOVEQ	#0,D2
ppB5C	MOVE.W	D4,D0
	BSR.S	ppB84
	ADD.W	D1,D2
	CMP.W	D6,D1
	BEQ.S	ppB5C
ppB66	MOVEQ	#7,D0
	BSR.S	ppB84
	MOVE.B	D1,-(A3)
	add.l	#1,len
	DBF	D2,ppB66
	CMPA.L	A3,A2
	BCS.S	ppB98
	RTS
	
	
ppB76	LSR.L	D4,D5
	BEQ.S	ppB7C
	RTS
ppB7C	MOVE.L	-(A0),D5
	ROXR.L	D4,D5
	RTS
ppB82	SUB.W	D4,D0
ppB84	MOVEQ	#0,D1
ppB86	LSR.L	D4,D5
	BEQ.S	ppB92
ppB8A	ROXL.L	D4,D1
	DBF	D0,ppB86
	RTS
ppB92	MOVE.L	-(A0),D5
	ROXR.L	D4,D5
	BRA.S	ppB8A
ppB98	MOVE.W	D4,D0
	BSR.S	ppB84
	MOVEQ	#0,D0
	MOVE.B	0(A5,D1.W),D0
	MOVE.W	D1,D2
	CMP.W	D6,D2
	BNE.S	ppBBE
	BSR.S	ppB76
	BCS.S	ppBAE
	MOVEQ	#7,D0
ppBAE	BSR.S	ppB82
	MOVE.W	D1,D3
ppBB2	MOVEQ	#2,D0
	BSR.S	ppB84
	ADD.W	D1,D2
	CMP.W	D7,D1
	BEQ.S	ppBB2
	BRA.S	ppBC2
ppBBE	BSR.S	ppB82
	MOVE.W	D1,D3
ppBC2	ADD.W	D4,D2
ppBC4	MOVE.B	0(A3,D3.W),-(A3)
	add.l	#1,len
	DBF	D2,ppBC4	
	eor.w	#$f0f,colour
	move.w	colour,unpackcolour		; background colour
	CMPA.L	A3,A2
	BCS	ppB56
	RTS

ppBD8	DC.L	$90A0C0D,$4E468082	; needs this one

colour:	dc.l	0
len:	dc.l	0
length:	dc.l	0

pause:	move.l	#0,delay3	
pause2:	move.l	delay3,d0
	cmp.l	#1,d0
	blt.s	pause2
	rts

new_interupt:
	movem.l	d0-d7/a0-a6,-(sp) 


wait_irq:
	and.w	#$10,$dff01e		; check for vblank
	beq 	no_music
	move.w	#$10,$dff09c

	add.l	#1,counter

	bsr	scroller_up

	sub.l	#1,delay
	bpl.s	not_now
	
	move.l	#1,delay

	cmp.l	#0,use_equals
	bne.s	not_playing

	bsr	show_equals

not_now:
	cmp.l	#$19cce7a2,mt_data
	beq.s	not_playing
	bsr	mt_music
not_playing:

no_music:
	movem.l	(sp)+,d0-d7/a0-a6	

	dc.w	$4ef9			; jmp
old_interupt:	dc.l	0		; the old int lev 3

scroller_up:

	sub.l	#2,delay2
	bpl	no_scrup
	
	move.l	#6,delay2
	
	lea	scrollpic+32,a0
	add.l	#(80*4)+68,a0
	lea	man1,a1
	move.l	mannum,d0
	mulu	#32*8*4,d0
	add.l	d0,a1
	
	bsr	blitting
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ffff,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	move.w	#(%1001*256)+$f0,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#72,$dff066		; modulo for dest
	Move.w	#(32*64)+4,$dff058	; blit height,width
	bsr	blitting


	add.l	#99*80,a0
	add.l	#32*8,a1
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ffff,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	move.w	#(%1001*256)+$f0,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#72,$dff066		; modulo for dest
	Move.w	#(32*64)+4,$dff058	; blit height,width
	bsr	blitting

	add.l	#99*80,a0
	add.l	#32*8,a1
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ffff,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	move.w	#(%1001*256)+$f0,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#72,$dff066		; modulo for dest
	Move.w	#(32*64)+4,$dff058	; blit height,width
	bsr	blitting

	add.l	#99*80,a0
	add.l	#32*8,a1
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ffff,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	move.w	#(%1001*256)+$f0,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#72,$dff066		; modulo for dest
	Move.w	#(32*64)+4,$dff058	; blit height,width
	bsr	blitting

	add.l	#1,mannum
	cmp.l	#6,mannum
	blt	man_ok
	
	move.l	#56,delay2
	move.l	#0,mannum
	
man_ok:			

	sub.l	#1,scrup
	bpl.s	scrup_ok
	
	move.l	#5,scrup
	
	move.l	scrolltext_ptr,a1
	cmp.b	#0,(a1)
	bne.s	scroller_mellow
	
	move.l	#scrolltext,a1
	move.l	a1,scrolltext_ptr
	
	
scroller_mellow:	
	lea	scrollpic+32,a2
	add.l	#(99*80*3),a2
	add.l	#(99*80),a2
	bsr	blit_message

no_scrup:	
			
	rts

scrup_ok:

	clr.l	d7
	
	lea	scrollpic+32,a2
	add.l	#(99*80*3)+34+(14*80),a2
	move.l	a2,a1
	add.l	#160,a1
	
	Move.l	a2,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit 1st word mask source a
	move.w	#$ffff,$dff046		; blit last word mask source a
	move.w	#50,$dff064		; blit modulo for source a
	or.w	#(%1001*256)+$f0,d7
	move.w	d7,$dff040		; blit cont reg 0
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#50,$dff066		; modulo for dest
	Move.w	#(93*64)+15,$dff058	; blit height,width

	jsr	blitting
	
	rts
	
blit_message:

	movem.l	d0-d7/a2-a6,-(sp)

	move.l	a1,a6
	clr.b	d0
	moveq.l	#-1,d1
	
blit_message_loop1:

	addq.l	#1,d1
	move.b	(a6),d0
	addq	#1,a6
	cmp.b	#0,d0
	bne.s	blit_message_loop1

	move.l	a6,scrolltext_ptr

	move.l	a2,midadd
	move.w	d1,d5

	;addq.l	#1,d1
	;divu	#2,d1
	;and.l	#$ff,d1
	;moveq.l	#18,d6		; centre
	;sub.l	d1,d6
	;add.l	d6,a2
	
	add.l	#34,a2		; lh edge of scrolled
	
	move.l	a2,d2
	and.l	#$fffffffe,d2
	move.l	a2,d3
	and.l	#1,d3
	move.l	d2,a2
	
	move.w	#12,d6
	cmp.l	#1,d3
	beq.s	cont_blit_message
	
	add.w	#12,mid
	subq.l	#2,midadd
	
cont_blit_message:
	
	move.w	d6,d7
	mulu	#8192,d7
	
	subq.w	#4,d6
	cmp.w	#4,d6
	bne.s	other_half
	
	move.w	#12,d6
	add.l	#160,a2
	
other_half:

	sub.l	#80,a2
	clr.w	d0
	lea	font,a0
	move.b	(a1),d0
	addq.l	#1,a1
	cmp.b	#0,d0
	bne.s	mess_is_ok

	movem.l	(sp)+,d0-d7/a2-a6	
	
dont_centre:
	rts
	
	
mess_is_ok:
	sub	#32,d0
	mulu	#16,d0
	add	d0,a0
	
	Move.l	a2,$dff054		; dest mem d
	Move.l	a0,$dff050		; source mem a
	move.l	a2,$dff048		; source mem c
	Move.w	#$ffff,$dff044		; blit 1st word mask source a
	move.w	#$ffff,$dff046		; blit last word mask source a
	move.w	#0,$dff064		; blit modulo for source a
	move.w	#78,$dff060		; blit modulo for source c	
	or.w	#(%1011*256)+$fa,d7
	move.w	d7,$dff040		; blit cont reg 0
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#78,$dff066		; modulo for dest
	Move.w	#(8*64)+1,$dff058	; blit height,width

	jsr	blitting

	addq.l	#1,a2
	bra	cont_blit_message



show_equals:

	move.l	scr1,a0
	add.l	#40,a0
	move.l	blank,a1
	
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ffff,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	move.w	#(%1001*256)+$f0,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#0,$dff066		; modulo for dest
	Move.w	#(98*64)+20,$dff058	; blit height,width
	bsr	blitting

	add.l	#40*100,a0
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#(98*64)+20,$dff058	; blit height,width
	bsr	blitting

	add.l	#40*100,a0
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#(98*64)+20,$dff058	; blit height,width
	bsr	blitting
	
	add.l	#40*100,a0
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#(98*64)+20,$dff058	; blit height,width
	bsr	blitting
	
	add.l	#40*100,a0
	Move.l	a0,$dff054		; dest mem d
	Move.l	a1,$dff050		; source mem a
	Move.w	#(98*64)+20,$dff058	; blit height,width
	bsr	blitting	


	lea	equals,a1
	lea	fades,a4
	move.l	#1,d2
show_equal_loop1:

	clr.l	d1
	move.b	(a1,d2),d1
	move.b	(a4,d2),d7
	add.b	d7,(a1,d2)
	bpl.s	equal_zero
	move.b	#0,(a1,d2)
equal_zero:

	add.l	#1,d2
	cmp.l	#14,d2
	blt	show_equal_loop1

	move.l	scr1,a0
	add.l	#64*40,a0
	add.l	#1,a0 
	lea	mc1a,a1
	lea	equals+1,a2
	lea	fades+1,a3
	bsr	all_blit

	move.w	#11,d0
	
all_mchars:

	add.l	#33*4*5*2,a1
	add.l	#3,a0
	add.l	#1,a2
	bsr	all_blit

	dbf	d0,all_mchars

	move.l	scr1,a0
	move.l	scr2,a1
	move.l	a1,scr1
	move.l	a0,scr2
	
	move.l	scr2,d0
	move.w	d0,bplane0_lo
	swap	d0
	move.w	d0,bplane0_hi
	swap	d0
	add.l	#40*100,d0
	move.w	d0,bplane1_lo
	swap	d0
	move.w	d0,bplane1_hi
	swap	d0
	add.l	#40*100,d0
	move.w	d0,bplane2_lo
	swap	d0
	move.w	d0,bplane2_hi
	swap	d0
	add.l	#40*100,d0
	move.w	d0,bplane3_lo
	swap	d0
	move.w	d0,bplane3_hi
	swap	d0
	add.l	#40*100,d0
	move.w	d0,bplane4_lo
	swap	d0
	move.w	d0,bplane4_hi

	rts
	
all_blit:
	movem.l	d0-d7/a0-a6,-(sp) 
	
	clr.l	d0
	move.b	(a2),d0
	muls	#40,d0
	sub.l	d0,a0

	cmp.l	#0,d0
	bne.s	normal_chr
	add.l	#4*33*5,a1
normal_chr:
	
	move.l	a0,d4
	and.l	#$fffffffe,d4
	move.l	d4,a4
	move.l	a0,d5
	and.l	#1,d5
	
	mulu	#32768,d5
	or.w	#(%1011*256)+$fa,d5
	
	Move.l	a4,$dff054		; dest mem d
	Move.l	a4,$dff048		; source mem c
	Move.l	a1,$dff050		; source mem a
	Move.w	#$ffff,$dff044		; blit first word mask source a
	move.w	#$ff00,$dff046		; blit last  word mask source a
	move.w	#0,$dff064		; modulo for source a
	Move.w	#36,$dff060		; modulo for source c
	move.w	d5,$dff040
	move.w	#0,$dff042		; blit cont reg 1
	Move.w	#36,$dff066		; modulo for dest d
	Move.w	#(33*64)+2,$dff058	; blit height,width

	bsr	blitting

	add.l	#40*100,a4
	add.l	#4*33,a1	
	Move.l	a4,$dff054		; dest mem d
	Move.l	a4,$dff048		; source mem c
	Move.l	a1,$dff050		; source mem a
	Move.w	#(33*64)+2,$dff058	; blit height,width
	bsr	blitting

	add.l	#40*100,a4
	add.l	#4*33,a1	
	Move.l	a4,$dff054		; dest mem d
	Move.l	a4,$dff048		; source mem c
	Move.l	a1,$dff050		; source mem a
	Move.w	#(33*64)+2,$dff058	; blit height,width
	bsr	blitting

	add.l	#40*100,a4
	add.l	#4*33,a1	
	Move.l	a4,$dff054		; dest mem d
	Move.l	a4,$dff048		; source mem c
	Move.l	a1,$dff050		; source mem a
	Move.w	#(33*64)+2,$dff058	; blit height,width
	bsr	blitting

	add.l	#40*100,a4
	add.l	#4*33,a1	
	Move.l	a4,$dff054		; dest mem d
	Move.l	a4,$dff048		; source mem c
	Move.l	a1,$dff050		; source mem a
	Move.w	#(33*64)+2,$dff058	; blit height,width
	bsr	blitting

	movem.l	(sp)+,d0-d7/a0-a6	
	rts
	
print_num:
	movem.l	d0-d7/a0-a6,-(sp) 

	cmp.l	#-1,calc
	bne.s	normal_num
	
	clr.l	d0
	move.w	(a6),d0

	cmp.w	#0,d0
	beq.s	skip_num

	cmp.l	maxequal,d0
	blt.s	not_max
	move.l	d0,maxequal
not_max:
	cmp.l	minequal,d0
	bgt.s	not_min

	move.l	d0,minequal
not_min:

	move.l	maxequal,d0
	move.l	minequal,d1
	
	sub.l	d1,d0
	divu	#16,d0				; should by 13 - expands range!
	
	move.w	d0,divequal
skip_num
	movem.l	(sp)+,d0-d7/a0-a6	
	rts

normal_num:
	clr.l	d0
	move.w	(a6),d0

	sub.l	minequal,d0			; no notes less than 100!
	move.w	divequal,d1	
	divu	divequal,d0			; smooth note - ie 13 equalisers
	cmp.w	#13,d0
	blt.s	equ_too_big

	move.w	#13,d0

equ_too_big:
	cmp.w	#1,d0
	bgt.s	equ_too_small

	move.w	#1,d0

equ_too_small:

	lea	equals,a0
	cmp.b	#33,(a0,d0)
	blt.s	equ_skip1
	move.b	#33,(a0,d0)
equ_skip1:
	add.b	#30,(a0,d0)
	
	lea	fades,a0
	move.b	#-2,(a0,d0)

	clr.l	d0

	movem.l	(sp)+,d0-d7/a0-a6	
	rts

blitting:
	btst	#6,$dff002
	bne.s	blitting

	rts
	

	
Mt_Init:Lea	Mt_Data,a0
	Move.l	a0,a1
	Add.l	#$3b8,a1
	Moveq	#$7f,d0
	Moveq	#0,d1
Mt_Loop	Move.l	d1,d2
	Subq.w	#1,d0
Mt_Lop2	Move.b	(a1)+,d1
	Cmp.b	d2,d1
	Bgt.s	Mt_Loop
	Dbf	d0,Mt_Lop2
	Addq.b	#1,d2

	Lea	Mt_SampleStarts,a1
	Asl.l	#8,d2
	Asl.l	#2,d2
	Add.l	#$43c,d2
	Add.l	a0,d2
	Move.l	d2,a2
	Moveq	#$1e,d0
Mt_Lop3	Move.l	#0,(a2)
	Move.l	a2,(a1)+
	Moveq	#0,d1
	Move.w	42(a0),d1
	Asl.l	#1,d1
	Add.l	d1,a2
	Add.l	#$1e,a0
	Dbf	d0,Mt_Lop3

	Or.b	#$2,$bfe001
	Move.b	#$6,Mt_Speed
	Move.b	#$3f,Mt_Voice1+$12
	Move.b	#$3f,Mt_Voice2+$12
	Move.b	#$3f,Mt_Voice3+$12
	Move.b	#$3f,Mt_Voice4+$12

	Move.w	#0,$dff0a8
	Move.w	#0,$dff0b8
	Move.w	#0,$dff0c8
	Move.w	#0,$dff0d8
	Clr.b	Mt_SongPos
	Clr.b	Mt_Counter
	Clr.w	Mt_PattPos
	Rts

Mt_End	Move.w	#0,$dff0a8
	Move.w	#0,$dff0b8
	Move.w	#0,$dff0c8
	Move.w	#0,$dff0d8
	Move.w	#$f,$dff096
	Moveq.l	#0,d0
	Rts

Mt_Music
	Movem.l	d0-d4/a0-a3/a5-a6,-(a7)
	Lea	Mt_Data,a0
	Addq.b	#$1,Mt_Counter
	Move.b	Mt_Counter,d0
	
	cmp.l	#-1,calc
	beq.s	mt_playit
	
	
	cmp.b	Mt_speed,d0
	Blt.s	Mt_NoNew
mt_playit
	Clr.b	Mt_Counter
	Bra	Mt_GetNew
Mt_NoNew

	Lea	Mt_Voice1,a6
	move.l	dff0a0,a5
	Bsr	Mt_CheckCom
	Lea	Mt_Voice2,a6
	move.l	dff0b0,a5
	Bsr	Mt_CheckCom
	Lea	Mt_Voice3,a6
	move.l	dff0c0,a5
	Bsr	Mt_CheckCom
	Lea	Mt_Voice4,a6
	move.l	dff0d0,a5
	Bsr	Mt_CheckCom
	Bra	Mt_Endr

Mt_Arpeggio
	Moveq.l	#0,d0
	Move.b	Mt_Counter,d0
	Divs	#$3,d0
	Swap	d0
	Cmp.w	#$0,d0
	Beq.s	Mt_Arp2
	Cmp.w	#$2,d0
	Beq.s	Mt_Arp1
	Moveq.l	#0,d0
	Move.b	$3(a6),d0
	Lsr.b	#4,d0
	Bra.s	Mt_Arp3
	
Mt_Arp1	Moveq.l	#0,d0
	Move.b	$3(a6),d0
	And.b	#$f,d0
	Bra.s	Mt_Arp3
Mt_Arp2	Move.w	$10(a6),d2
	Bra.s	Mt_Arp4
Mt_Arp3	Asl.w	#1,d0
	Moveq.l	#0,d1
	Move.w	$10(a6),d1
	Lea	Mt_Periods,a0
	Moveq	#$24,d7
Mt_ArpLoop
	Move.w	(a0,d0.w),d2
	Cmp.w	(a0),d1
	Bge.s	Mt_Arp4
	Addq.l	#2,a0
	Dbf	d7,Mt_ArpLoop
	Rts
Mt_Arp4	Move.w	d2,$6(a5)
	Rts

Mt_GetNew
	Lea	Mt_Data,a0
	Move.l	a0,a3
	Move.l	a0,a2
	Add.l	#$c,a3
	Add.l	#$3b8,a2
	Add.l	#$43c,a0

	Moveq.l	#0,d0
	Move.l	d0,d1
	Move.b	Mt_SongPos,d0


	Move.b	(a2,d0.w),d1
	Asl.l	#8,d1
	Asl.l	#2,d1
	Add.w	Mt_PattPos,d1
	Clr.w	Mt_DmaCon
	move.l	dff0a0,a5
	Lea	Mt_Voice1,a6
	Move.l	#Mt_Instrument+0,a4
	Bsr.s	Mt_PlayVoice
	move.l	dff0b0,a5
	Lea	Mt_voice2,a6
	Move.l	#Mt_Instrument+4,a4
	Bsr.s	Mt_PlayVoice
	move.l	dff0c0,a5
	Lea	Mt_Voice3,a6
	Move.l	#Mt_Instrument+8,a4
	Bsr.s	Mt_PlayVoice
	move.l	dff0d0,a5
	Lea	Mt_Voice4,a6
	Move.l	#Mt_Instrument+12,a4
	Bsr.s	Mt_PlayVoice
	Bra	Mt_SetDma

Mt_PlayVoice
	Move.l	(a0,d1.l),(a6)
	Addq.l	#4,d1
	Moveq.l	#0,d2
	Move.b	$2(a6),d2
	And.b	#$f0,d2
	Lsr.b	#4,d2
	Move.b	(a6),d0
	And.b	#$f0,d0
	Or.b	d0,d2
	
	cmp.l	#-1,calc
	beq.s	mt_playnote
	
	Tst.b	d2
	Beq	Mt_SetRegs

mt_playnote
	Moveq	#0,d3

	bsr	print_num		; (a6) = note played

	Lea	Mt_SampleStarts,a1
	Move.l	d2,d4
	Subq.l	#$1,d2
	Asl.l	#2,d2

	Move.l	d2,(a4)		

	Mulu	#$1e,d4
	Move.l	(a1,d2.l),$4(a6)
	Move.w	(a3,d4.l),$8(a6)
	Move.w	$2(a3,d4.l),$12(a6)
	Move.w	$4(a3,d4.l),d3
	Tst.w	d3
	Beq.s	Mt_NoLoop
	
	cmp.l	#-1,calc
	beq.s	mt_setregs

	Move.l	$4(a6),d2
	Asl.w	#1,d3
	Add.l	d3,d2
	Move.l	d2,$a(a6)
	Move.w	$4(a3,d4.l),d0
	Add.w	$6(a3,d4.l),d0
	Move.w	d0,8(a6)
	Move.w	$6(a3,d4.l),$e(a6)
	Move.w	$12(a6),$8(a5)
	Bra.w	Mt_SetRegs
Mt_NoLoop
	
	cmp.l	#-1,calc
	beq.s	mt_setregs

	Move.l	$4(a6),d2
	Add.l	d3,d2
	Move.l	d2,$a(a6)
	Move.w	$6(a3,d4.l),$e(a6)
	Move.w	$12(a6),$8(a5)
		
Mt_SetRegs
	Move.w	(a6),d0
	And.w	#$fff,d0
	Beq	Mt_CheckCom2
	Move.b	$2(a6),d0
	And.b	#$F,d0
	Cmp.b	#$3,d0
	Bne.s	Mt_SetPeriod
	Bsr	Mt_SetMyPort
	Bra	Mt_checkcom2
Mt_SetPeriod
	Move.w	(a6),$10(a6)
	And.w	#$fff,$10(a6)
	Move.w	$14(a6),d0
	Move.w	d0,$dff096
	Move.b	#0,$1b(a6)

	cmp.l	#-1,calc
	beq	mt_checkcom
	
	Move.l	$4(a6),(a5)
	Move.w	$8(a6),$4(a5)
	Move.w	$10(a6),d0
	And.w	#$fff,d0
	Move.w	d0,$6(a5)
	Move.w	$14(a6),d0
	Or.w	d0,Mt_DmaCon
	Bra	Mt_CheckCom2

Mt_SetDma
	
	cmp.l	#-1,calc
	beq	mt_wai3
	
	Move.w	#$12c,d0
Mt_Wait	Dbf	d0,Mt_Wait
	Move.w	Mt_DmaCon,d0
	Or.w	#$8000,d0
	Move.w	d0,$dff096
	Move.w	#$12c,d0
	
	cmp.l	#-1,calc
	beq	mt_wai3
	
Mt_Wai2	Dbf	d0,Mt_Wai2
	move.l	dff000,a5
	Lea	Mt_Voice4,a6
	Move.l	$a(a6),$d0(a5)
	Move.w	$e(a6),$d4(a5)
	Lea	Mt_Voice3,a6
	Move.l	$a(a6),$c0(a5)
	Move.w	$e(a6),$c4(a5)
	Lea	Mt_voice2,a6
	Move.l	$a(a6),$b0(a5)
	Move.w	$e(a6),$b4(a5)
	Lea	Mt_voice1,a6
	Move.l	$a(a6),$a0(a5)
	Move.w	$e(a6),$a4(a5)

mt_wai3:

	Add.w	#$10,Mt_PattPos
	Cmp.w	#$400,Mt_PattPos
	Bne.s	Mt_Endr
Mt_Nex	Clr.w	Mt_PattPos
	Clr.b	Mt_Break
	Addq.b	#1,Mt_SongPos
	And.b	#$7f,Mt_SongPos
	Move.b	Mt_SongPos,d1
	Cmp.b	Mt_Data+$3b6,d1
	Bne.s	Mt_Endr
	
	move.l	#-1,finished
	Clr.b	Mt_SongPos			; module end!

Mt_Endr	Tst.b	Mt_Break
	Bne.s	Mt_Nex
	Movem.l	(a7)+,d0-d4/a0-a3/a5-a6
	Rts

Mt_SetMyPort
	Move.w	(a6),d2
	And.w	#$fff,d2
	Move.w	d2,$18(a6)
	Move.w	$10(a6),d0
	Move.b	#0,$16(a6)
	Cmp.w	d0,d2
	Beq.s	Mt_ClrPort
	Bge.s	Mt_Rt
	Move.b	#$1,$16(a6)
	Rts
Mt_ClrPort
	Move.w	#0,$18(a6)
Mt_Rt	Rts

Mt_MyPort
	Move.b	$3(a6),d0
	Beq.s	Mt_MySlide
	Move.b	d0,$17(a6)
	Move.b	#0,$3(a6)
Mt_MySlide
	Tst.w	$18(a6)
	Beq.s	Mt_Rt
	Moveq.l	#0,d0
	Move.b	$17(a6),d0
	Tst.b	$16(a6)
	Bne.s	Mt_MySub
	Add.w	d0,$10(a6)
	Move.w	$18(a6),d0
	Cmp.w	$10(a6),d0
	Bgt.s	Mt_MyOK
	Move.w	$18(a6),$10(a6)
	Move.w	#0,$18(a6)
Mt_MyOK	Move.w	$10(a6),$6(a5)
	Rts
Mt_MySub
	Sub.w	d0,$10(a6)
	Move.w	$18(a6),d0
	Cmp.w	$10(a6),d0
	Blt.s	Mt_MyOK
	Move.w	$18(a6),$10(a6)
	Move.w	#0,$18(a6)
	Move.w	$10(a6),$6(a5)
	Rts

Mt_Vib	
	Move.b	$3(a6),d0
	Beq.s	Mt_Vi
	Move.b	d0,$1a(a6)

Mt_Vi	Move.b	$1b(a6),d0
	Lea	Mt_Sin,a4
	Lsr.w	#$2,d0
	And.w	#$1f,d0
	Moveq.l	#0,d2
	Move.b	(a4,d0.w),d2
	Move.b	$1a(a6),d0
	And.w	#$f,d0
	Mulu	d0,d2
	Lsr.w	#$6,d2
	Move.w	$10(a6),d0
	Tst.b	$1b(a6)
	Bmi.s	Mt_VibMin
	Add.w	d2,d0
	Bra.s	Mt_Vib2
Mt_VibMin
	Sub.w	d2,d0
Mt_Vib2	Move.w	d0,$6(a5)
	Move.b	$1a(a6),d0
	Lsr.w	#$2,d0
	And.w	#$3c,d0
	Add.b	d0,$1b(a6)
	Rts

Mt_Nop	Move.w	$10(a6),$6(a5)
	Rts

Mt_CheckCom
	cmp.l	#-1,calc
	bne.s	mt_checkedcom
	move.w	finding,unpackcolour
	eor.w	#$f0f,finding
mt_checkedcom:
	Move.w	$2(a6),d0
	And.w	#$fff,d0
	Beq.s	Mt_Nop
	Move.b	$2(a6),d0
	And.b	#$f,d0
	Tst.b	d0
	Beq	Mt_Arpeggio
	Cmp.b	#$1,d0
	Beq.s	Mt_PortUp
	Cmp.b	#$2,d0
	Beq	Mt_PortDown
	Cmp.b	#$3,d0
	Beq	Mt_MyPort
	Cmp.b	#$4,d0
	Beq	Mt_Vib
	Move.w	$10(a6),$6(a5)
	Cmp.b	#$a,d0
	Beq.s	Mt_VolSlide
	Rts

Mt_VolSlide
	Moveq	#0,d0
	Move.b	$3(a6),d0
	Lsr.b	#4,d0
	Tst.b	d0
	Beq.s	Mt_VolDown
	Add.b	d0,$13(a6)
	Cmp.b	#$3f,$13(a6)
	Ble.s	Mt_Vol2		
	Move.b	#$3f,$13(a6)
Mt_Vol2	Move.w	$12(a6),$8(a5)
	Rts

Mt_VolDown
	Moveq	#0,d0
	Move.b	$3(a6),d0
	And.b	#$f,d0
	Sub.b	d0,$13(a6)
	Bpl.s	Mt_Vol3
	Move.b	#0,$13(a6)
Mt_Vol3	Move.w	$12(a6),$8(a5)
	Rts

Mt_PortUp
	Moveq	#0,d0
	Move.b	$3(a6),d0
	Sub.w	d0,$10(a6)
	Move.w	$10(a6),d0
	And.w	#$fff,d0
	Cmp.w	#$71,d0
	Bpl.s	Mt_Por2
	And.w	#$f000,$10(a6)
	Or.w	#$71,$10(a6)
Mt_Por2	Move.w	$10(a6),d0
	And.w	#$fff,d0
	Move.w	d0,$6(a5)
	Rts

Mt_PortDown
	Moveq.w	#0,d0
	Move.b	$3(a6),d0
	Add.w	d0,$10(a6)
	Move.w	$10(a6),d0
	And.w	#$fff,d0
	Cmp.w	#$358,d0
	Bmi.s	Mt_Por3
	And.w	#$f000,$10(a6)
	Or.w	#$358,$10(a6)
Mt_Por3	Move.w	$10(a6),d0
	And.w	#$fff,d0
	Move.w	d0,$6(a5)
	Rts

Mt_CheckCom2
	Move.b	$2(a6),d0
	And.b	#$f,d0
	Cmp.b	#$e,d0
	Beq.s	Mt_SetFilt
	Cmp.b	#$d,d0
	Beq.s	Mt_PattBreak
	Cmp.b	#$b,d0
	Beq.s	Mt_PosJmp
	Cmp.b	#$c,d0
	Beq.s	Mt_SetVol
	Cmp.b	#$f,d0
	Beq.s	Mt_SetSpeed
	Rts

Mt_SetFilt
	Move.b	$3(a6),d0
	And.b	#$1,d0
	Asl.b	#$1,d0
	And.b	#$fd,$bfe001
	Or.b	d0,$bfe001
	Rts
Mt_PattBreak			;  ** HERE`S THE FIX - IT WAS
	Move.b	#1,Mt_Break	;  Not.b Mt_Break.
	Rts			;  **************************
Mt_PosJmp
	Move.b	$3(a6),d0
	Subq.b	#$1,d0
	Move.b	d0,Mt_SongPos
	Not.b	Mt_Break
	Rts
Mt_SetVol
	Cmp.b	#$3f,$3(a6)
	Ble.s	Mt_Vol4
	Move.b	#$3f,$3(a6)
Mt_Vol4	Move.b	$3(a6),$8(a5)
	Move.b	$3(a6),$13(a6)	
	Rts
Mt_SetSpeed
	Move.b	$3(a6),d0
	And.w	#$1f,d0
	Beq.s	Mt_Rts2
	Clr.b	Mt_Counter
	Move.b	d0,Mt_Speed
Mt_Rts2	Rts

Mt_Sin
	Dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
	Dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18

Mt_Periods
	Dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
	Dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
	Dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
	Dc.w $007f,$0078,$0071,$0000,$0000

Mt_Speed	Dc.b	$6
Mt_SongPos	Dc.b	$0
Mt_PattPos	Dc.w	$0
Mt_Counter	Dc.b	$0

Mt_Break	Dc.b	$0
Mt_DmaCon	Dc.w	$0
Mt_SampleStarts	Dcb.l	$1f,0

Mt_Voice1	Dcb.w	10,0
		Dc.w	$1
		Dcb.w	3,0
		Dc.w	0	;new note last time
Mt_Voice2	Dcb.w	10,0
		Dc.w	$2
		Dcb.w	3,0
		Dc.w	0	;new note last time
Mt_Voice3	Dcb.w	10,0
		Dc.w	$4
		Dcb.w	3,0
		Dc.w	0	;new note last time
Mt_Voice4	Dcb.w	10,0
		Dc.w	$8
		Dcb.w	3,0
		Dc.w	0	;new note last time
Mt_InstCount:	dc.b	0
Mt_Instrument:	dcb.l	4,0

	
	
	Section	copdat,Data_c

my_copper:	
		dc.w	$100,0
		dc.w	$104,0		; bp control reg
		dc.w	$108,0		; bp modulo - odd
		dc.w	$10a,0		; bp modulo - even
		dc.w	$180,0		; colour 0 to black
		dc.w	$102,0
		
		dc.w	  $120
spr_1h:		dc.w	0,$122
spr_1l:		dc.w	0,$124
spr_2h:		dc.w	0,$126
spr_2l:		dc.w	0,$128
spr_3h:		dc.w	0,$12a
spr_3l:		dc.w	0,$12c
spr_4h:		dc.w	0,$12e
spr_4l:		dc.w	0
		
		dc.w	$092,$38	; bp start horz
		dc.w	$094,$d0	; bp stop horz
		dc.w	$08e,$2c50	; bp window start left
		dc.w	$090,$2ce4	; bp window bot right

		dc.w	$100,$5200	; 1 bp - lores
		
cmap1:		dc.w	$180,0
		dc.w	$182,0	
		dc.w	$184,0	
		dc.w	$186,0	
		dc.w	$188,0	
		dc.w	$18a,0	
		dc.w	$18c,0	
		dc.w	$18e,0	
		dc.w	$190,0
		dc.w	$192,0	
		dc.w	$194,0	
		dc.w	$196,0	
		dc.w	$198,0	
		dc.w	$19a,0	
		dc.w	$19c,0	
		dc.w	$19e,0	
		dc.w	$1a0,0
		dc.w	$1a2,0	
		dc.w	$1a4,0	
		dc.w	$1a6,0	
		dc.w	$1a8,0	
		dc.w	$1aa,0	
		dc.w	$1ac,0	
		dc.w	$1ae,0	
		dc.w	$1b0,0
		dc.w	$1b2,0	
		dc.w	$1b4,0	
		dc.w	$1b6,0	
		dc.w	$1b8,0	
		dc.w	$1ba,0	
		dc.w	$1bc,0	
		dc.w	$1be,0	

		dc.w	$0e0
bitplane0_hi:	dc.w	0
		dc.w	$e2
bitplane0_lo:	dc.w	0,$e4
bitplane1_hi:	dc.w	0
		dc.w	$e6
bitplane1_lo:	dc.w	0,$e8
bitplane2_hi:	dc.w	0
		dc.w	$ea
bitplane2_lo:	dc.w	0,$ec	
bitplane3_hi:	dc.w	0
		dc.w	$ee
bitplane3_lo:	dc.w	0,$f0		
bitplane4_hi:	dc.w	0
		dc.w	$f2
bitplane4_lo:	dc.w	0

		dc.w	$6001,$ff00,$100,$000
		dc.w	$6401,$ff00

		dc.w	$0e0
bplane0_hi:	dc.w	0
		dc.w	$e2
bplane0_lo:	dc.w	0,$e4
bplane1_hi:	dc.w	0
		dc.w	$e6
bplane1_lo:	dc.w	0,$e8
bplane2_hi:	dc.w	0
		dc.w	$ea
bplane2_lo:	dc.w	0,$ec	
bplane3_hi:	dc.w	0
		dc.w	$ee
bplane3_lo:	dc.w	0,$f0		
bplane4_hi:	dc.w	0
		dc.w	$f2
bplane4_lo:	dc.w	0
	
		dc.w	$100,$5200
	
cmap2:		dc.w	$180,0
		dc.w	$182,0	
		dc.w	$184,0	
		dc.w	$186,0	
		dc.w	$188,0	
		dc.w	$18a,0	
		dc.w	$18c,0	
		dc.w	$18e,0	
		dc.w	$190,0
		dc.w	$192,0	
		dc.w	$194,0	
		dc.w	$196,0	
		dc.w	$198,0	
		dc.w	$19a,0	
		dc.w	$19c,0	
		dc.w	$19e,0	
		dc.w	$1a0,0
		dc.w	$1a2,0	
		dc.w	$1a4,0	
		dc.w	$1a6,0	
		dc.w	$1a8,0	
		dc.w	$1aa,0	
		dc.w	$1ac,0	
		dc.w	$1ae,0	
		dc.w	$1b0,0
		dc.w	$1b2,0	
		dc.w	$1b4,0	
		dc.w	$1b6,0	
		dc.w	$1b8,0	
		dc.w	$1ba,0	
		dc.w	$1bc,0	
		dc.w	$1be,0	

		dc.w	$c901,$ff00,$180,$000
		
		dc.w	$100,$c200	; 5 bp - lores

		dc.w	$102,14*16+14	; hsr
		
		dc.w	$108,0		; bp modulo - odd
		dc.w	$10a,0		; bp modulo - even

		dc.w	$0e0
mplane0_hi:	dc.w	0
		dc.w	$e2
mplane0_lo:	dc.w	0,$e4
mplane1_hi:	dc.w	0
		dc.w	$e6
mplane1_lo:	dc.w	0,$e8
mplane2_hi:	dc.w	0
		dc.w	$ea
mplane2_lo:	dc.w	0,$ec	
mplane3_hi:	dc.w	0
		dc.w	$ee
mplane3_lo:	dc.w	0,$f0		
mplane4_hi:	dc.w	0
		dc.w	$f2
mplane4_lo:	dc.w	0
	
		dc.w	$19a,0
	
cmap3:		dc.w	$180,0
		dc.w	$182,0	
		dc.w	$184,0	
		dc.w	$186,0	
		dc.w	$188,0	
		dc.w	$18a,0	
		dc.w	$18c,0	
		dc.w	$18e,0	
		dc.w	$190,0
		dc.w	$192,0	
		dc.w	$194,0	
		dc.w	$196,0	
		dc.w	$198,0	
		dc.w	$1fe,0	
		dc.w	$19c,0	
		dc.w	$19e,0	
		dc.w	$1a0,0
		dc.w	$1a2,0	
		dc.w	$1a4,0	
		dc.w	$1a6,0	
		dc.w	$1a8,0	
		dc.w	$1aa,0	
		dc.w	$1ac,0	
		dc.w	$1ae,0	
		dc.w	$1b0,$fff
		dc.w	$1b2,$fff	
		dc.w	$1b4,$fff	
		dc.w	$1b6,$fff	
		dc.w	$1b8,$fff	
		dc.w	$1ba,$fff	
		dc.w	$1bc,$fff	
		dc.w	$1be,$fff	

		dc.w	$196,$fff

		dc.w	$d701,$ff00,$186,$666,$196,$999
		dc.w	$d901,$ff00,$186,$777,$196,$bbb
		dc.w	$db01,$ff00,$186,$888,$196,$fff
		

		dc.w	$ffe1,$fffe	; wait for end of ntsc screen		
		
		dc.w	$2201,$ff00,$186,$888,$196,$fff
		dc.w	$2401,$ff00,$186,$777,$196,$bbb
		dc.w	$2601,$ff00,$186,$666,$196,$999
		dc.w	$2701,$ff00,$190,0
		
		dc.w	$3001,$ff00	; wait for end of pal screen
		dc.w	$9c,$8010	; irq set bits - restart vblank
		dc.w	$ffff,$fffe	; end of copper list
	
glib:		dc.b	"graphics.library",0
		even
dlib:		dc.b	"dos.library",0

tall		equ	10
wide:		equ	44
wide2:		equ	94

scrsize:	equ	40*100*5*2

pagenum:	dc.l	0

mid:		dc.w	0
midadd:		dc.l	0
old_copper:	dc.l	0
graphics:	dc.l	0
dos:		dc.l	0

newscr:		dc.l	0
flag:		dc.l	0
line:		dc.l	0
scroll:		dc.l	0
delay:		dc.l	0
delay2:		dc.l	0
delay3:		dc.l	0
x1:		dc.l	wide-4
x2:		dc.l	0
page:		dc.l	0
waiting:	dc.l	0
height:		dc.l	0

equ1_ptr:	dc.l	0
equ2_ptr:	dc.l	0
equ3_ptr:	dc.l	0
equ4_ptr:	dc.l	0

scr1:		dc.l	0
scr2:		dc.l	0

blank:		dc.l	frame+64

logo:		incbin	"music3.logo"
frame:		incbin	"music3.frame"
scrollpic:	incbin	"music3.scroll"
		dcb.b	80*10,0
				
man1:		incbin	"music3.man1"
		incbin	"music3.man2"
		incbin	"music3.man3"
		incbin	"music3.man4"
		incbin	"music3.man3"
		incbin	"music3.man2"

mannum:		dc.l	0
scrup:		dc.l	0

calc:		dc.l	-1
finished:	dc.l	0
finding:	dc.l	0

screen2:	dc.l	0

equals:		dcb.b	13,0
fades:		dcb.b	13,0

maxequal:	dc.l	0
minequal:	dc.l	0
divequal:	equ	$100

dff0a0:		dc.l	0
dff0b0:		dc.l	0
dff0c0:		dc.l	0
dff0d0:		dc.l	0
dff000:		dc.l	0

waste:		dcb.b	100,0

unpackcolour	EQU	$dff184


scrolltext_ptr:	dc.l	scrolltext

scrolltext:	
		dc.b	"WELCOME TO LSD SUPREME MUSIC 2",0
		dc.b	" ",0
		dc.b	" TEN UNRELEASED TRACKS BY LSD ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"      CODING BY SHAGRATT.     ",0
		dc.b	"     GRAPHICS BY PARASITE     ",0
		dc.b	" AND VARIOUS SOFTWARE HOUSES. ",0
		dc.b	" THIS FONT BY SHARE AND ENJOY ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" THIS WAS ORIGINALLY GOING TO ",0
		dc.b	"  BE RELEASED AT THE ANARCHY  ",0
		dc.b	"  WINTER CONFERANCE 23/02/91  ",0
		dc.b	" HOWEVER DUE TO OVER 10 POWER ",0
		dc.b	" FAILURES, CAUSED BY RUNNING  ",0
		dc.b	"    MORE THAN 35 MACHINES,    ",0
		dc.b	"   MONITORS ETC. FROM ONLY    ",0
		dc.b	"  THREE SOCKETS IT`S RELEASE  ",0
		dc.b	"  WAS DELAYED UNTIL 27/02/91. ",0
		dc.b	" ",0
		dc.b	" LSD SUPREME MUSIC 3 IS ALSO  ",0 
		dc.b	"  OUT NOW (RELEASED AT THE    ",0
		dc.b	"         CONFERANCE).         ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"   NOW FOR SOME SONG INFO...  ",0
		dc.b	" ",0
		dc.b	"   F1 - ADAMSKI MIX BY MUB.   ",0
		dc.b	"   A REMIX OF THE TRACK THAT  ",0
		dc.b	" APPEARED ON LSD SUPREME MUSIC",0
		dc.b	"          DISK ONE.           ",0
		dc.b	" ",0
		dc.b	"   F2 - FROM OUT OF NOWHERE   ",0
		dc.b	"            BY DIGGER.        ",0
		dc.b	" A CONVERSION OF THE CLASSIC  ",0
		dc.b	"    SONG BY FAITH NO MORE.    ",0
		dc.b	" ",0 
		dc.b	"  F3 - HEARTBREAK BY DIGGER.  ",0
		dc.b	" A CONVERSION, ORIGINALLY BY  ",0
		dc.b	"         DEF LEPPARD.         ",0
		dc.b	" ",0
		dc.b	"    F4 - ISRAEL BY DIGGER.    ",0
		dc.b	"A CONVERSION ORIGANALLY A HIT ",0
		dc.b	"FOR SIOUXSIE AND THE BANSHEES ",0
		dc.b	"            IN 1980.          ",0
		dc.b	" ",0
		dc.b	"  F5 - ITCHY SCRATCH BY MUB.  ",0 
		dc.b	" AN ORIGINAL MIX SAMPLED FROM ",0
		dc.b	"        VARIOUS CD`s.         ",0
		dc.b	" ",0
		dc.b	"F6 - MIDNIGHT DREAMS BY SPIRIT",0
		dc.b	"   AN ORIGINAL COMPOSITION.   ",0
		dc.b	" ",0
		dc.b	"   F7 - PHANTOM OF THE OPERA  ",0
		dc.b	"           BY DIGGER.         ",0
		dc.b	"  A CONVERSION OF A CLASSIC   ",0
		dc.b	"   TRACK FROM IRON MAIDEN,    ",0
		dc.b	"  THIS IS OVER EIGHT MINUETS  ",0
		dc.b	"    LONG WITH 105 PATTERNS.   ",0
		dc.b	" ",0
		dc.b	"F8 - SPEED DREAMER BY SPIRIT. ",0
		dc.b	"   AN ORIGINAL COMPOSITION.   ",0
		dc.b	" ",0
		dc.b	"  F9 - SWITCH 625 BY DIGGER.  ",0
		dc.b	" A CONVERSION, ORIGINALLY BY  ",0
		dc.b	"DEF LEPPARD, THIS SONG FOLLOWS",0
 		dc.b	"   HEARTBREAK ON THE ALBUM.   ",0
 		dc.b	" ",0
		dc.b	"    F10 - WALKING IN SPACE    ",0 
		dc.b	"           BY SPIRIT.         ",0
		dc.b	"    A ORIGINAL COMPOSITION    ",0
		dc.b	" USING SAMPLES FROM THE GAME  ",0
		dc.b	"          `THE KULT'.         ",0
		dc.b	" ",0
		dc.b	" THE LSD MEMBERS AT THE PARTY ",0
		dc.b	"            WHERE:            ",0
		dc.b	" ",0
		dc.b	"        SHAGRATT - CODER      ",0
		dc.b	"      VOODOO CHILD - CODER    ",0
		dc.b	"      MONTY PYTHON - CODER    ",0
		dc.b	"        MAXIMAN - CODER       ",0
		dc.b	"        MUB - MUSICIAN        ",0
		dc.b	"PARASITE - SWAPPER/MANAGEMENT ",0
		dc.b	"  SIDEWINDER - SWAPPER/DOCS   ",0
		dc.b	" ",0
		dc.b	"  AND WE ALSO HAD TWO GUESTS: ",0
		dc.b	" ",0
		dc.b	"        SPIRIT AND GARY       ",0
		dc.b	" ",0
		dc.b	"  AND THE GUYS WHO COULDN'T   ",0
		dc.b	"       MAKE IT WHERE:         ",0
		dc.b	" ",0
		dc.b	"     REBEL - MANAGEMENT       ",0
		dc.b	"    PAW - SWAPPER/VIDEOS      ",0
		dc.b	"      DIGGER - MUSICIAN       ",0
		dc.b	"        MARL - CODER          ",0 
		dc.b	"      OSSWALD - CODER         ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"  PARASITE AND SHAGRATT SEND  ",0
		dc.b	" GREETINGS TO THE FOLLING COOL",0
		dc.b	"       GUYS AND GROUPS:       ",0
		dc.b	" ",0
		dc.b	" POD & KID VIDEO OF SLIPSTREAM",0
		dc.b	"   TRIPWIRE & OPUS OF EQUINOX ",0
		dc.b	"     COSY & MAGNETIC FIELDS   ",0
		dc.b	"         MOLE & ANARCHY       ",0
		dc.b	"LIGHTFOOT & THE MIGHTY DRUIDS ",0
		dc.b	"     TURMOIL & SCOOPEX UK     ",0
		dc.b	"         TAURUS & XTC         ",0
		dc.b	"        INDEX & RELAY         ",0
		dc.b	"    AWOL & PENDLE EUROPA      ",0
		dc.b	"    POLTERGEIST & CYRUS",0
		dc.b	"      NASTY BOY, GARY",0
		dc.b	"       SPIRIT, CYLON",0
		dc.b	" ",0
		dc.b	"  ...AND ALL OUR FRIENDS AND  ",0
		dc.b	"      CONTACTS EVERYWHERE.    ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"LOOK OUT FOR THE FOLLOWING LSD",0
		dc.b	"     RELEASES, OUT NOW:",0
		dc.b	" ",0
		dc.b	"      FUNKY PIZZA INTRO",0
		dc.b	"  TERRY FUCKWITT/FAST INTRO",0
		dc.b	"        JOKE INTRO 2",0
		dc.b	"     LSD SUPREME MUSIC 3",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"   EVERYONE HERE IS FEELING   ",0
		dc.b	"SORRY FOR COLIN IN BIRMINGHAM ",0
		dc.b	"   FOR CATCHING MAD LAMERS    ",0
		dc.b	" DISEASE AND NOT SENDING GARY ",0
		dc.b	"THE DISKS. DON`T WORK TO HARD!",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"THE CHARACTERS YOU CAN SEE",0
		dc.b	"ABOVE ARE (FROM LEFT TO RIGHT)",0
		dc.b	" ",0
		dc.b	"     RUFF - RUFF & REDDY      ",0
		dc.b	" TERRY - TERRYS BIG ADVENTURE ",0
		dc.b	"   DIZZY - CODEMASTER GAMES   ",0
		dc.b	"  WONDERBOY - SUPER WONDERBOY ",0
		dc.b	"      BOMBJACK - BOMBJACK     ",0
		dc.b	"  FLIPPIT - FLIPPIT & MAGNOSE ",0
		dc.b	"  EDD THE DUCK - EDD THE DUCK ",0
		dc.b	"      BUB - BUBBLE BOBBLE     ",0
		dc.b	"    KID GLOVES - KID GLOVES   ",0
		dc.b	"     BOY - RAINBOW ISLANDS    ",0
		dc.b	"A GIANA SISTER - GIANA SISTERS",0
		dc.b	"     HERBIE STONE - DUGGER    ",0
		dc.b	"   SWICHBLADE - SWITCHBLADE   ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	"IF YOU WANT TO CONTACT LSD FOR",0
		dc.b	"    SWAPPING ETC. WRITE TO:   ",0
		dc.b	" ",0
		dc.b	"PARASITE, 18 BROCKLESBY CLOSE,",0
		dc.b	"GAINSBOROUGH LINCS. DN21 1TT. ",0
		dc.b	"     FOR A 100% REPLY!        ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ON NO, ITS ALL GOING TO WRAP!",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	" ",0
		dc.b	0,0
		even
		
use_equals:	dc.l	0		
equalsource:	dc.l	$ffffffff

font:		incbin	"sae.wrd"

cheat:
		dc.l	0
		dc.l	0
		dc.l	$40
		dc.l	$15
		dc.l	0
		dc.l	0
		dc.l	$10
		dc.l	0
		dc.l	0
		dc.l	0
		


mc1a:		incbin	"mchar1a.bin"
		incbin	"mchar1b.bin"
		incbin	"mchar2a.bin"
		incbin	"mchar2b.bin"
		incbin	"mchar3a.bin"
		incbin	"mchar3b.bin"
		incbin	"mchar4a.bin"
		incbin	"mchar4b.bin"
		incbin	"mchar5a.bin"
		incbin	"mchar5b.bin"
		incbin	"mchar6a.bin"
		incbin	"mchar6b.bin"
		incbin	"mchar7a.bin"
		incbin	"mchar7b.bin"
		incbin	"mchar8a.bin"
		incbin	"mchar8b.bin"
		incbin	"mchar9a.bin"
		incbin	"mchar9b.bin"
		incbin	"mchar10a.bin"
		incbin	"mchar10b.bin"
		incbin	"mchar11a.bin"
		incbin	"mchar11b.bin"
		incbin	"mchar12a.bin"
		incbin	"mchar12b.bin"
		incbin	"mchar13a.bin"
		incbin	"mchar13b.bin"
mt_data:
		dc.l	$19cce7a2
		dcb.b	250*1000,0
	End
