
							;BY BLAINE EVANS
							;1 ERITH WAY
							;PONTYBODKIN
							;NR MOLD
							;CLWYD
							;CH7 4TR
							;TEL O352-771673
	opt	c-,d+

	move.l	4.w,a6			;FIND EXEC BASE
	lea	gfxlib(pc),a1		;LOAD GRAPHICS LIBRARY IN A1
	moveq	#$00,d0			;VERSION 0
	jsr	-552(a6)		;OPEN LIBRARY
	move.l	d0,_gfxbase		;STORE D0 (GFX ADDRESS )
	beq	nolib_exit		;ELSE EXIT
	bsr	Foreground_addresses	;BRANCH TO FOREGROUND ADDRESSES
	Bsr	mt_init
	lea	$dff000,a6
	move.l	_gfxbase,a0		;LOAD ADDRESS OF GRAPHICS LIB IN A0
	move.l	50(a0),Oldcop		;STORE CURRENT COPPER,ETC TO RETRIEVE LATER
S
	move.l	#Newcop,50(a0)		;POINT TO OUR COPPERLIST

wait					;WAIT LOOP
	cmp.b	#255,$dff006		;VERTICAL BLANKING GAP 
	bne.s	wait			;
;	move.w	#$fff,$180(a6)		;REMOVE TO MEASURE RASTER TIME
	Bsr	mt_music	
	Bsr 	equalizers
	move.w	#$000,$180(a6)		;REMOVE TO MEASURE RASTER TIME
	cmp.b	#$37,$bfec01		;QUIT LEFT MOUSE PRESSED
	bne.s	wait
ended					;ELSE LOOP TO WAIT
	Bsr	mt_end
	move.l	_gfxbase,a0		;LOAD GRAPHICS LIB ADDRESS IN A0
	move.l	oldcop,50(a0)		;RESTORE OLD COPPER TO RETURN TO EDITTER
nomem_exit	
	move.l	4.w,a6			;FIND EXEC BASE
	move.l	_gfxbase,a1		;LOAD GRAPHICS BASE IN A1
	jsr	-414(a6)		;CLOSE LIBRARY
nolib_exit
	rts				;RETURN TO EDITER
Foreground_addresses				;START OF FOREGROUND DATA
	move.l	#Foreground,d0
	move.w	d0,Bpl0ptl		;LOW WORD IN BIT PLANE 0 LOW
	swap	d0				
	move.w	d0,Bpl0pth		;HIGH WORD IN BIT PLANE 0 HIGH
	swap	d0
	add.l	#256*40,d0
	move.w	d0,Bpl1ptl		;LOW WORD IN BIT PLANE 2 LOW
	swap	d0				
	move.w	d0,Bpl1pth		;HIGH WORD IN BIT PLANE 2 HIGH
	swap	d0
	add.l	#256*40,d0
	move.w	d0,Bpl2ptl		;LOW WORD IN BIT PLANE 4 LOW
	swap	d0				
	move.w	d0,Bpl2pth		;HIGH WORD IN BIT PLANE 4 HIGH
	swap	d0
	rts
equalizers
	cmp.w #$0000,equal1+6		; these routines just make the bar fade slowly
	beq co11			; i.e.2 lines at a time for each voice
	move.w #$0000,equal1+6		
	move.w #$0000,equal1+126
	bra doeq2
co11	cmp.w #$0000,equal1+14
	beq co12
	move.w #$0000,equal1+14
	move.w #$0000,equal1+118
	bra doeq2
co12	cmp.w #$0000,equal1+22
	beq co13
	move.w #$0000,equal1+22
	move.w #$0000,equal1+110
	bra doeq2
co13	cmp.w #$0000,equal1+30
	beq co14
	move.w #$0000,equal1+30
	move.w #$0000,equal1+102
	bra doeq2
co14	cmp.w #$0000,equal1+38
	beq co15
	move.w #$0000,equal1+38
	move.w #$0000,equal1+94
	bra doeq2
co15	cmp.w #$0000,equal1+46
	beq co16	
	move.w #$0000,equal1+46
	move.w #$0000,equal1+86
	bra doeq2
co16	cmp.w #$0000,equal1+54
	beq co17
	move.w #$0000,equal1+54
	move.w #$0000,equal1+78
	bra doeq2
co17	cmp.w #$0000,equal1+62
	beq doeq2
	move.w #$0000,equal1+62
	move.w #$0000,equal1+70

doeq2
	cmp.w #$0000,equal2+6
	beq co21
	move.w #$0000,equal2+6
	move.w #$0000,equal2+126
	bra doeq3
co21	cmp.w #$0000,equal2+14
	beq co22
	move.w #$0000,equal2+14
	move.w #$0000,equal2+118
	bra doeq3
co22	cmp.w #$0000,equal2+22
	beq co23
	move.w #$0000,equal2+22
	move.w #$0000,equal2+110
	bra doeq3
co23	cmp.w #$0000,equal2+30
	beq co24
	move.w #$0000,equal2+30
	move.w #$0000,equal2+102
	bra doeq3
co24	cmp.w #$0000,equal2+38
	beq co25
	move.w #$0000,equal2+38
	move.w #$0000,equal2+94
	bra doeq3
co25	cmp.w #$0000,equal2+46
	beq co26	
	move.w #$0000,equal2+46
	move.w #$0000,equal2+86
	bra doeq3
co26	cmp.w #$0000,equal2+54
	beq co27
	move.w #$0000,equal2+54
	move.w #$0000,equal2+78
	bra doeq3
co27	cmp.w #$0000,equal2+62
	beq doeq3
	move.w #$0000,equal2+62
	move.w #$0000,equal2+70
doeq3
	cmp.w #$0000,equal3+6
	beq co31
	move.w #$0000,equal3+6
	move.w #$0000,equal3+126
	bra doeq4
co31	cmp.w #$0000,equal3+14
	beq co32
	move.w #$0000,equal3+14
	move.w #$0000,equal3+118
	bra doeq4
co32	cmp.w #$0000,equal3+22
	beq co33
	move.w #$0000,equal3+22
	move.w #$0000,equal3+110
	bra doeq4
co33	cmp.w #$0000,equal3+30
	beq co34
	move.w #$0000,equal3+30
	move.w #$0000,equal3+102
	bra doeq4
co34	cmp.w #$0000,equal3+38
	beq co35
	move.w #$0000,equal3+38
	move.w #$0000,equal3+94
	bra doeq4
co35	cmp.w #$0000,equal3+46
	beq co36	
	move.w #$0000,equal3+46
	move.w #$0000,equal3+86
	bra doeq4
co36	cmp.w #$0000,equal3+54
	beq co37
	move.w #$0000,equal3+54
	move.w #$0000,equal3+78
	bra doeq4
co37	cmp.w #$0000,equal3+62
	beq doeq4
	move.w #$0000,equal3+62
	move.w #$0000,equal3+70
doeq4
	cmp.w #$0000,equal4+6
	beq co41
	move.w #$0000,equal4+6
	move.w #$0000,equal4+126
	bra sortie
co41	cmp.w #$0000,equal4+14
	beq co42
	move.w #$0000,equal4+14
	move.w #$0000,equal4+118
	bra sortie
co42	cmp.w #$0000,equal4+22
	beq co43
	move.w #$0000,equal4+22
	move.w #$0000,equal4+110
	bra sortie
co43	cmp.w #$0000,equal4+30
	beq co44
	move.w #$0000,equal4+30
	move.w #$0000,equal4+102
	bra sortie
co44	cmp.w #$0000,equal4+38
	beq co45
	move.w #$0000,equal4+38
	move.w #$0000,equal4+94
	bra sortie
co45	cmp.w #$0000,equal4+46
	beq co46	
	move.w #$0000,equal4+46
	move.w #$0000,equal4+86
	bra sortie
co46	cmp.w #$0000,equal4+54
	beq co47
	move.w #$0000,equal4+54
	move.w #$0000,equal4+78
	bra sortie
co47	cmp.w #$0000,equal4+62
	beq sortie
	move.w #$0000,equal4+62
	move.w #$0000,equal4+70
sortie	rts

;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
;ญ     NoisetrackerV2.0 FASTreplay      ญ
;ญ  Uses lev6irq - takes 8 rasterlines  ญ
;ญ Do not disable Master irq in $dff09a ญ
;ญ Used registers: d0-d3/a0-a7|	=INTENA ญ
;ญ  Mahoney & Kaktus - (C) E.A.S. 1990  ญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ

mt_init:lea	mt_data,a0
	lea	mt_mulu(pc),a1
	move.l	#mt_data+$c,d0
	moveq	#$1f,d1
	moveq	#$1e,d3
mt_lop4:move.l	d0,(a1)+
	add.l	d3,d0
	dbf	d1,mt_lop4

	lea	$3b8(a0),a1
	moveq	#$7f,d0
	moveq	#0,d1
	moveq	#0,d2
mt_lop2:move.b	(a1)+,d1
	cmp.b	d2,d1
	ble.s	mt_lop
	move.l	d1,d2
mt_lop:	dbf	d0,mt_lop2
	addq.w	#1,d2

	asl.l	#8,d2
	asl.l	#2,d2
	lea	4(a1,d2.l),a2
	lea	mt_samplestarts(pc),a1
	add.w	#$2a,a0
	moveq	#$1e,d0
mt_lop3:clr.l	(a2)
	move.l	a2,(a1)+
	moveq	#0,d1
	move.b	d1,2(a0)
	move.w	(a0),d1
	asl.l	#1,d1
	add.l	d1,a2
	add.l	d3,a0
	dbf	d0,mt_lop3

	move.l	$78.w,mt_oldirq-mt_samplestarts-$7c(a1)
	or.b	#2,$bfe001
	move.b	#6,mt_speed-mt_samplestarts-$7c(a1)
	moveq	#0,d0
	lea	$dff000,a0
	move.w	d0,$a8(a0)
	move.w	d0,$b8(a0)
	move.w	d0,$c8(a0)
	move.w	d0,$d8(a0)
	move.b	d0,mt_songpos-mt_samplestarts-$7c(a1)
	move.b	d0,mt_counter-mt_samplestarts-$7c(a1)
	move.w	d0,mt_pattpos-mt_samplestarts-$7c(a1)
	rts


mt_end:	moveq	#0,d0
	lea	$dff000,a0
	move.w	d0,$a8(a0)
	move.w	d0,$b8(a0)
	move.w	d0,$c8(a0)
	move.w	d0,$d8(a0)
	move.w	#$f,$dff096
	rts


mt_music:
	lea	mt_data,a0
	lea	mt_voice1(pc),a4
	addq.b	#1,mt_counter-mt_voice1(a4)
	move.b	mt_counter(pc),d0
	cmp.b	mt_speed(pc),d0
	blt	mt_nonew
	moveq	#0,d0
	move.b	d0,mt_counter-mt_voice1(a4)
	move.w	d0,mt_dmacon-mt_voice1(a4)
	lea	mt_data,a0
	lea	$3b8(a0),a2
	lea	$43c(a0),a0

	moveq	#0,d1
	move.b	mt_songpos(pc),d0
	move.b	(a2,d0.w),d1
	lsl.w	#8,d1
	lsl.w	#2,d1
	add.w	mt_pattpos(pc),d1

	lea	$dff0a0,a5
	lea	mt_samplestarts-4(pc),a1
	lea	mt_playvoice(pc),a6
	jsr	(a6)
	addq.l	#4,d1
	lea	$dff0b0,a5
	lea	mt_voice2(pc),a4
	jsr	(a6)
	addq.l	#4,d1
	lea	$dff0c0,a5
	lea	mt_voice3(pc),a4
	jsr	(a6)
	addq.l	#4,d1
	lea	$dff0d0,a5
	lea	mt_voice4(pc),a4
	jsr	(a6)

	move.w	mt_dmacon(pc),d0
	beq.s	mt_nodma

	lea	$bfd000,a3
	move.b	#$7f,$d00(a3)
	move.w	#$2000,$dff09c
	move.w	#$a000,$dff09a
	move.l	#mt_irq1,$78.w
	moveq	#0,d0
	move.b	d0,$e00(a3)
	move.b	#$a8,$400(a3)
	move.b	d0,$500(a3)
	or.w	#$8000,mt_dmacon-mt_voice4(a4)
	move.b	#$11,$e00(a3)
	move.b	#$81,$d00(a3)

mt_nodma:
	add.w	#$10,mt_pattpos-mt_voice4(a4)
	cmp.w	#$400,mt_pattpos-mt_voice4(a4)
	bne.s	mt_exit
mt_next:clr.w	mt_pattpos-mt_voice4(a4)
	clr.b	mt_break-mt_voice4(a4)
	addq.b	#1,mt_songpos-mt_voice4(a4)
	and.b	#$7f,mt_songpos-mt_voice4(a4)
	move.b	-2(a2),d0
	cmp.b	mt_songpos(pc),d0
	bne.s	mt_exit
	move.b	-1(a2),mt_songpos-mt_voice4(a4)
mt_exit:tst.b	mt_break-mt_voice4(a4)
	bne.s	mt_next
	rts

mt_nonew:
	bsr	newroutine
	lea	$dff0a0,a5
	lea	mt_com(pc),a6
	jsr	(a6)
	lea	mt_voice2(pc),a4
	lea	$dff0b0,a5
	jsr	(a6)
	lea	mt_voice3(pc),a4
	lea	$dff0c0,a5
	jsr	(a6)
	lea	mt_voice4(pc),a4
	lea	$dff0d0,a5
	jsr	(a6)
	tst.b	mt_break-mt_voice4(a4)
	bne.s	mt_next
	rts
newroutine				; new routine in replaer here
	bsr	Voice_1
	bsr	Voice_2
	bsr	Voice_3
	bsr	Voice_4
	rts
Voice_1
	cmp.l	#$0000,mt_voice1	; is voice 1 active
	beq	No_Sound		; no then return
	move.w #$0100,equal1+6		;yes then full equalizer
	move.w #$0300,equal1+14
	move.w #$0500,equal1+22
	move.w #$0700,equal1+30
	move.w #$0900,equal1+38
	move.w #$0b00,equal1+46
	move.w #$0d00,equal1+54
	move.w #$0f00,equal1+62
	move.w #$0f00,equal1+70
	move.w #$0d00,equal1+78
	move.w #$0b00,equal1+86
	move.w #$0900,equal1+94
	move.w #$0700,equal1+102
	move.w #$0500,equal1+110
	move.w #$0300,equal1+118
	move.w #$0100,equal1+126
	rts
Voice_2
	cmp.l	#$0000,mt_voice2
	beq	No_Sound
	move.w #$0110,equal2+6
	move.w #$0330,equal2+14
	move.w #$0550,equal2+22
	move.w #$0770,equal2+30
	move.w #$0990,equal2+38
	move.w #$0bb0,equal2+46
	move.w #$0dd0,equal2+54
	move.w #$0ff0,equal2+62
	move.w #$0ff0,equal2+70
	move.w #$0dd0,equal2+78
	move.w #$0bb0,equal2+86
	move.w #$0990,equal2+94
	move.w #$0770,equal2+102
	move.w #$0550,equal2+110
	move.w #$0330,equal2+118
	move.w #$0110,equal2+126
	rts
Voice_3
	cmp.l	#$0000,mt_voice3
	beq	No_Sound
	move.w #$0010,equal3+6
	move.w #$0030,equal3+14
	move.w #$0050,equal3+22
	move.w #$0070,equal3+30
	move.w #$0090,equal3+38
	move.w #$00b0,equal3+46
	move.w #$00d0,equal3+54
	move.w #$00f0,equal3+62
	move.w #$00f0,equal3+70
	move.w #$00d0,equal3+78
	move.w #$00b0,equal3+86
	move.w #$0090,equal3+94
	move.w #$0070,equal3+102
	move.w #$0050,equal3+110
	move.w #$0030,equal3+118
	move.w #$0010,equal3+126
	rts
Voice_4
	cmp.l	#$0000,mt_voice4
	beq	No_Sound
	move.w #$0001,equal4+6
	move.w #$0003,equal4+14
	move.w #$0005,equal4+22
	move.w #$0007,equal4+30
	move.w #$0009,equal4+38
	move.w #$000b,equal4+46
	move.w #$000d,equal4+54
	move.w #$000f,equal4+62
	move.w #$000f,equal4+70
	move.w #$000d,equal4+78
	move.w #$000b,equal4+86
	move.w #$0009,equal4+94
	move.w #$0007,equal4+102
	move.w #$0005,equal4+110
	move.w #$0003,equal4+118
	move.w #$0001,equal4+126
	rts
No_Sound
	rts

mt_irq1:tst.b	$bfdd00
	move.w	mt_dmacon(pc),$dff096
	move.l	#mt_irq2,$78.w
	move.w	#$2000,$dff09c
	rte

mt_irq2:tst.b	$bfdd00
	movem.l	a3/a4,-(a7)
	lea	mt_voice1(pc),a4
	lea	$dff000,a3
	move.l	$a(a4),$a0(a3)
	move.w	$e(a4),$a4(a3)
	move.l	$a+$1c(a4),$b0(a3)
	move.w	$e+$1c(a4),$b4(a3)
	move.l	$a+$38(a4),$c0(a3)
	move.w	$e+$38(a4),$c4(a3)
	move.l	$a+$54(a4),$d0(a3)
	move.w	$e+$54(a4),$d4(a3)
	movem.l	(a7)+,a3/a4
	move.b	#0,$bfde00
	move.b	#$7f,$bfdd00
	move.l	mt_oldirq(pc),$78.w
	move.w	#$2000,$dff09c
	move.w	#$2000,$dff09a
	rte

mt_playvoice:
	move.l	(a0,d1.l),(a4)
	moveq	#0,d2
	move.b	2(a4),d2
	lsr.b	#4,d2
	move.b	(a4),d0
	and.b	#$f0,d0
	or.b	d0,d2
	beq	mt_oldinstr

	asl.w	#2,d2
	move.l	(a1,d2.l),4(a4)
	move.l	mt_mulu(pc,d2.w),a3
	move.w	(a3)+,8(a4)
	move.w	(a3)+,$12(a4)
	move.l	4(a4),d0
	moveq	#0,d3
	move.w	(a3)+,d3
	beq	mt_noloop
	asl.w	#1,d3
	add.l	d3,d0
	move.l	d0,$a(a4)
	move.w	-2(a3),d0
	add.w	(a3),d0
	move.w	d0,8(a4)
	bra	mt_hejaSverige

mt_mulu:dcb.l	$20,0

mt_noloop:
	add.l	d3,d0
	move.l	d0,$a(a4)
mt_hejaSverige:
	move.w	(a3),$e(a4)
	move.w	$12(a4),8(a5)

mt_oldinstr:
	move.w	(a4),d3
	and.w	#$fff,d3
	beq	mt_com2
	tst.w	8(a4)
	beq.s	mt_stopsound
	move.b	2(a4),d0
	and.b	#$f,d0
	cmp.b	#5,d0
	beq.s	mt_setport
	cmp.b	#3,d0
	beq.s	mt_setport

	move.w	d3,$10(a4)
	move.w	$1a(a4),$dff096
	clr.b	$19(a4)

	move.l	4(a4),(a5)
	move.w	8(a4),4(a5)
	move.w	$10(a4),6(a5)

	move.w	$1a(a4),d0
	or.w	d0,mt_dmacon-mt_playvoice(a6)
	bra	mt_com2

mt_stopsound:
	move.w	$1a(a4),$dff096
	bra	mt_com2

mt_setport:
	move.w	(a4),d2
	and.w	#$fff,d2
	move.w	d2,$16(a4)
	move.w	$10(a4),d0
	clr.b	$14(a4)
	cmp.w	d0,d2
	beq.s	mt_clrport
	bge	mt_com2
	move.b	#1,$14(a4)
	bra	mt_com2
mt_clrport:
	clr.w	$16(a4)
	rts

mt_port:moveq	#0,d0
	move.b	3(a4),d2
	beq.s	mt_port2
	move.b	d2,$15(a4)
	move.b	d0,3(a4)
mt_port2:
	tst.w	$16(a4)
	beq.s	mt_rts
	move.b	$15(a4),d0
	tst.b	$14(a4)
	bne.s	mt_sub
	add.w	d0,$10(a4)
	move.w	$16(a4),d0
	cmp.w	$10(a4),d0
	bgt.s	mt_portok
	move.w	$16(a4),$10(a4)
	clr.w	$16(a4)
mt_portok:
	move.w	$10(a4),6(a5)
mt_rts:	rts

mt_sub:	sub.w	d0,$10(a4)
	move.w	$16(a4),d0
	cmp.w	$10(a4),d0
	blt.s	mt_portok
	move.w	$16(a4),$10(a4)
	clr.w	$16(a4)
	move.w	$10(a4),6(a5)
	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_vib:	move.b	$3(a4),d0
	beq.s	mt_vib2
	move.b	d0,$18(a4)

mt_vib2:move.b	$19(a4),d0
	lsr.w	#2,d0
	and.w	#$1f,d0
	moveq	#0,d2
	move.b	mt_sin(pc,d0.w),d2
	move.b	$18(a4),d0
	and.w	#$f,d0
	mulu	d0,d2
	lsr.w	#7,d2
	move.w	$10(a4),d0
	tst.b	$19(a4)
	bmi.s	mt_vibsub
	add.w	d2,d0
	bra.s	mt_vib3
mt_vibsub:
	sub.w	d2,d0
mt_vib3:move.w	d0,6(a5)
	move.b	$18(a4),d0
	lsr.w	#2,d0
	and.w	#$3c,d0
	add.b	d0,$19(a4)
	rts


mt_arplist:
	dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1

mt_arp:	moveq	#0,d0
	move.b	mt_counter(pc),d0
	move.b	mt_arplist(pc,d0.w),d0
	beq.s	mt_normper
	cmp.b	#2,d0
	beq.s	mt_arp2
mt_arp1:move.b	3(a4),d0
	lsr.w	#4,d0
	bra.s	mt_arpdo
mt_arp2:move.b	3(a4),d0
	and.w	#$f,d0
mt_arpdo:
	asl.w	#1,d0
	move.w	$10(a4),d1
	lea	mt_periods(pc),a0
mt_arp3:cmp.w	(a0)+,d1
	blt.s	mt_arp3
	move.w	-2(a0,d0.w),6(a5)
	rts

mt_normper:
	move.w	$10(a4),6(a5)
	rts

mt_com:	move.w	2(a4),d0
	and.w	#$fff,d0
	beq.s	mt_normper
	move.b	2(a4),d0
	and.b	#$f,d0
	beq.s	mt_arp
	cmp.b	#6,d0
	beq.s	mt_volvib
	cmp.b	#4,d0
	beq	mt_vib
	cmp.b	#5,d0
	beq.s	mt_volport
	cmp.b	#3,d0
	beq	mt_port
	cmp.b	#1,d0
	beq.s	mt_portup
	cmp.b	#2,d0
	beq.s	mt_portdown
	move.w	$10(a4),6(a5)
	cmp.b	#$a,d0
	beq.s	mt_volslide
	rts

mt_portup:
	moveq	#0,d0
	move.b	3(a4),d0
	sub.w	d0,$10(a4)
	move.w	$10(a4),d0
	cmp.w	#$71,d0
	bpl.s	mt_portup2
	move.w	#$71,$10(a4)
mt_portup2:
	move.w	$10(a4),6(a5)
	rts

mt_portdown:
	moveq	#0,d0
	move.b	3(a4),d0
	add.w	d0,$10(a4)
	move.w	$10(a4),d0
	cmp.w	#$358,d0
	bmi.s	mt_portdown2
	move.w	#$358,$10(a4)
mt_portdown2:
	move.w	$10(a4),6(a5)
	rts

mt_volvib:
	 bsr	mt_vib2
	 bra.s	mt_volslide
mt_volport:
	 bsr	mt_port2

mt_volslide:
	moveq	#0,d0
	move.b	3(a4),d0
	lsr.b	#4,d0
	beq.s	mt_vol3
	add.b	d0,$13(a4)
	cmp.b	#$40,$13(a4)
	bmi.s	mt_vol2
	move.b	#$40,$13(a4)
mt_vol2:move.w	$12(a4),8(a5)
	rts

mt_vol3:move.b	3(a4),d0
	and.b	#$f,d0
	sub.b	d0,$13(a4)
	bpl.s	mt_vol4
	clr.b	$13(a4)
mt_vol4:move.w	$12(a4),8(a5)
	rts

mt_com2:move.b	2(a4),d0
	and.b	#$f,d0
	beq	mt_rts
	cmp.b	#$e,d0
	beq.s	mt_filter
	cmp.b	#$d,d0
	beq.s	mt_pattbreak
	cmp.b	#$b,d0
	beq.s	mt_songjmp
	cmp.b	#$c,d0
	beq.s	mt_setvol
	cmp.b	#$f,d0
	beq.s	mt_setspeed
	rts

mt_filter:
	move.b	3(a4),d0
	and.b	#1,d0
	asl.b	#1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts

mt_pattbreak:
	move.b	#1,mt_break-mt_playvoice(a6)
	rts

mt_songjmp:
	move.b	#1,mt_break-mt_playvoice(a6)
	move.b	3(a4),d0
	subq.b	#1,d0
	move.b	d0,mt_songpos-mt_playvoice(a6)
	rts

mt_setvol:
	cmp.b	#$40,3(a4)
	bls.s	mt_sv2
	move.b	#$40,3(a4)
mt_sv2:	moveq	#0,d0
	move.b	3(a4),d0
	move.b	d0,$13(a4)
	move.w	d0,8(a5)
	rts

mt_setspeed:
	moveq	#0,d0
	move.b	3(a4),d0
	cmp.b	#$1f,d0
	bls.s	mt_sp2
	moveq	#$1f,d0
mt_sp2:	tst.w	d0
	bne.s	mt_sp3
	moveq	#1,d0
mt_sp3:	move.b	d0,mt_speed-mt_playvoice(a6)
	rts

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

mt_speed:	dc.b	6
mt_counter:	dc.b	0
mt_pattpos:	dc.w	0
mt_songpos:	dc.b	0
mt_break:	dc.b	0
mt_dmacon:	dc.w	0
mt_samplestarts:dcb.l	$1f,0
mt_voice1:	dcb.w	13,0
		dc.w	1
mt_voice2:	dcb.w	13,0
		dc.w	2
mt_voice3:	dcb.w	13,0
		dc.w	4
mt_voice4:	dcb.w	13,0
		dc.w	8
mt_oldirq:	dc.l	0


gfxlib	dc.b	"graphics.library",0	
	even
_gfxbase	dc.l	0		;LONG WORD TO STORE GFX ADDRESS
oldcop		dc.l	0			;OLD COPPERLIST ADDRESS
	even
	SECTION		chipmemory,data_c	


Newcop
	dc.w	$0100,%0011001000000000		;3 PLANES 
	dc.w	$0102
Scroll	dc.w	$0000			;	SCROLL VALUE
	dc.w	$0104,%0000000000000001		;NO PRIORITIES
	dc.w	$0108,$0000,$010a,$0000		;MODULAS
	dc.w	$0092,$0038,$0094,$00d0		;256*40 SCREEN
	dc.w	$008e,$2c81,$0090,$2cc1		;VISIBLE AREA
						
Planes
	dc.w	$00e0
Bpl0pth	dc.w	$0000,$00e2
Bpl0ptl	dc.w	$0000,$00e4
Bpl1pth	dc.w	$0000,$00e6
Bpl1ptl	dc.w	$0000,$00e8
Bpl2pth	dc.w	$0000,$00ea
Bpl2ptl	dc.w	$0000,$00ec
Bpl3pth	dc.w	$0000,$00ee
Bpl3ptl	dc.w	$0000,$00f0
Bpl4pth	dc.w	$0000,$00f2
Bpl4ptl	dc.w	$0000,$00f4
Bpl5pth	dc.w	$0000,$00f6
Bpl5ptl	dc.w	$0000

Sprites						;SPRITES
	dc.w	$0120
Spl0pth	dc.w	$0000,$0122
Spl0ptl	dc.w	$0000,$0124
Spl1pth	dc.w	$0000,$0126
Spl1ptl	dc.w	$0000
	dc.w	$0128,$0000,$012a,$0000
	dc.w	$012c,$0000,$012e,$0000
	dc.w	$0130,$0000,$0132,$0000
	dc.w	$0134,$0000,$0136,$0000
	dc.w	$0138,$0000,$013a,$0000
	dc.w	$013c,$0000,$013e,$0000

	dc.w	$0180,$0000,$0182,$0fff		;COLORS PLAY 1
	dc.w	$0184,$0d00,$0186,$0f80
	dc.w	$0188,$0ff0,$018a,$00ff
	dc.w	$018c,$008f,$018e,$0095

	dc.w	$0190,$0000,$0192,$0283		;COLORS PLAY 2
	dc.w	$0194,$08f4,$0196,$0095
	dc.w	$0198,$0243,$019a,$00ff
	dc.w	$019c,$0ff0,$019e,$0fa0

	dc.w	$01a0,$0000,$01a2,$0fff		;SPRITE COLORS
	dc.w	$01a4,$0f00,$01a6,$0b00
	dc.w	$01a8,$0600,$01aa,$0F40
	dc.w	$01ac,$0F80,$01ae,$0Fa0
	dc.w	$01b0,$0Ff0,$01b2,$000f
	dc.w	$01b4,$004f,$01b6,$008f
	dc.w	$01b8,$00ff,$01ba,$00f0
	dc.w	$01bc,$0283,$01be,$0f0f

equal1
	dc.w $4011,$ff00,$0180,$0000 ; 1
	dc.w $4111,$ff00,$0180,$0000 ; 2
	dc.w $4211,$ff00,$0180,$0000 ; 3
	dc.w $4311,$ff00,$0180,$0000 ; 4
	dc.w $4411,$ff00,$0180,$0000 ; 5
	dc.w $4511,$ff00,$0180,$0000 ; 6
	dc.w $4611,$ff00,$0180,$0000 ; 7
	dc.w $4711,$ff00,$0180,$0000 ; 8
	dc.w $4811,$ff00,$0180,$0000 ; 8
	dc.w $4911,$ff00,$0180,$0000 ; 7
	dc.w $4a11,$ff00,$0180,$0000 ; 6
	dc.w $4b11,$ff00,$0180,$0000 ; 5
	dc.w $4c11,$ff00,$0180,$0000 ; 4
	dc.w $4d11,$ff00,$0180,$0000 ; 3
	dc.w $4e11,$ff00,$0180,$0000 ; 2
	dc.w $4f11,$ff00,$0180,$0000 ; 1
	dc.w $5011,$ff00,$0180,$0000 ; 0
equal2
	dc.w $5111,$ff00,$0180,$0000 ; 1
	dc.w $5211,$ff00,$0180,$0000 ; 2
	dc.w $5311,$ff00,$0180,$0000 ; 3
	dc.w $5411,$ff00,$0180,$0000 ; 4
	dc.w $5511,$ff00,$0180,$0000 ; 5
	dc.w $5611,$ff00,$0180,$0000 ; 6
	dc.w $5711,$ff00,$0180,$0000 ; 7
	dc.w $5811,$ff00,$0180,$0000 ; 8
	dc.w $5911,$ff00,$0180,$0000 ; 8
	dc.w $5a11,$ff00,$0180,$0000 ; 7
	dc.w $5b11,$ff00,$0180,$0000 ; 6
	dc.w $5c11,$ff00,$0180,$0000 ; 5
	dc.w $5d11,$ff00,$0180,$0000 ; 4
	dc.w $5e11,$ff00,$0180,$0000 ; 3
	dc.w $5f11,$ff00,$0180,$0000 ; 2
	dc.w $6011,$ff00,$0180,$0000 ; 1
	dc.w $6111,$ff00,$0180,$0000 ; 0
equal3
	dc.w $6211,$ff00,$0180,$0000 ; 1
	dc.w $6311,$ff00,$0180,$0000 ; 2
	dc.w $6411,$ff00,$0180,$0000 ; 3
	dc.w $6511,$ff00,$0180,$0000 ; 4
	dc.w $6611,$ff00,$0180,$0000 ; 5
	dc.w $6711,$ff00,$0180,$0000 ; 6
	dc.w $6811,$ff00,$0180,$0000 ; 7
	dc.w $6911,$ff00,$0180,$0000 ; 8
	dc.w $6a11,$ff00,$0180,$0000 ; 8
	dc.w $6b11,$ff00,$0180,$0000 ; 7
	dc.w $6c11,$ff00,$0180,$0000 ; 6
	dc.w $6d11,$ff00,$0180,$0000 ; 5
	dc.w $6e11,$ff00,$0180,$0000 ; 4
	dc.w $6f11,$ff00,$0180,$0000 ; 3
	dc.w $7011,$ff00,$0180,$0000 ; 2
	dc.w $7111,$ff00,$0180,$0000 ; 1
	dc.w $7211,$ff00,$0180,$0000 ; 0
equal4
	dc.w $7311,$ff00,$0180,$0000 ; 1
	dc.w $7411,$ff00,$0180,$0000 ; 2
	dc.w $7511,$ff00,$0180,$0000 ; 3
	dc.w $7611,$ff00,$0180,$0000 ; 4
	dc.w $7711,$ff00,$0180,$0000 ; 5
	dc.w $7811,$ff00,$0180,$0000 ; 6
	dc.w $7911,$ff00,$0180,00000 ; 7
	dc.w $7a11,$ff00,$0180,$0000 ; 8
	dc.w $7b11,$ff00,$0180,$0000 ; 8
	dc.w $7c11,$ff00,$0180,$0000 ; 7
	dc.w $7d11,$ff00,$0180,$0000 ; 6
	dc.w $7e11,$ff00,$0180,$0000 ; 5
	dc.w $7f11,$ff00,$0180,$0000 ; 4
	dc.w $8011,$ff00,$0180,$0000 ; 3
	dc.w $8111,$ff00,$0180,$0000 ; 2
	dc.w $8211,$ff00,$0180,$0000 ; 1
	dc.w $8311,$ff00,$0180,$0000 ; 0


	dc.w	$ffff,$fffe			;END OF COPPERLIST

mt_data	incbin	"source:modules/mod.music"
	dc.l	0,0	
Foreground
		dcb.b	(256*40)*1,$00
		dcb.b	(256*40)*1,$00
		dcb.b	(256*40)*1,$00

