
							;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
	jsr	-132(a6)		;Forbid
	bsr	Foreground_addresses	;BRANCH TO FOREGROUND ADDRESSES
	bsr	Init
	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 	Equalizer_1
	Bsr 	Equalizer_2
	Bsr 	Equalizer_3
	Bsr 	Equalizer_4
;	move.w	#$000,$180(a6)		;REMOVE TO MEASURE RASTER TIME
	btst	#$6,$bfe001		;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
	jsr	-138(a6)		;Permit
	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
Init
	move.l	#Foreground,d0		; Set up addresses of each bar
	add.l	#(100*40),d0		; on the screen
	move.l	d0,Blit_base
	add.w	#10,d0
	move.l	d0,Blit_Base_2
	add.w	#10,d0
	move.l	d0,Blit_Base_3
	add.w	#10,d0
	move.l	d0,Blit_Base_4
	move.w	#0,Inc
	move.w	#0,Inc_2
	move.w	#0,Inc_3
	move.w	#0,Inc_4
	rts
equalizer_1
	cmp.w #$0000,equal1		; these routines just make the bar fade slowly
	beq co11			; i.e.2 lines at a time for each voice
	move.w #$0000,equal1		; just compares if=0,if not makes it so
	move.w #$0000,equal1+2
	MOVE.W	#0,INC			; INC=incremental value to add to the base
	bra sortie			; address when bliting the blocks
co11	cmp.w #$0000,equal1+4
	beq co12
	move.w #$0000,equal1+4
	move.w #$0000,equal1+6
	MOVE.W	#80,INC
	bra sortie
co12	cmp.w #$0000,equal1+8
	beq co13
	move.w #$0000,equal1+8
	move.w #$0000,equal1+10
	MOVE.W	#160,INC
	bra sortie
co13	cmp.w #$0000,equal1+12
	beq co14
	move.w #$0000,equal1+12
	move.w #$0000,equal1+14
	MOVE.W	#240,INC
	bra sortie
co14	cmp.w #$0000,equal1+16
	beq co15
	move.w #$0000,equal1+16
	move.w #$0000,equal1+18
	MOVE.W	#320,INC
	bra sortie
co15	cmp.w #$0000,equal1+20
	beq co16	
	move.w #$0000,equal1+20
	move.w #$0000,equal1+22
	MOVE.W	#400,INC
	bra sortie
co16	cmp.w #$0000,equal1+24
	beq co17
	move.w #$0000,equal1+24
	move.w #$0000,equal1+26
	MOVE.W	#480,INC
	bra sortie
co17	cmp.w #$0000,equal1+28
	beq co18
	move.w #$0000,equal1+28
	move.w #$0000,equal1+30
	MOVE.W	#560,INC
	bra	sortie
co18	cmp.w #$0000,equal1+32
	beq co19
	move.w #$0000,equal1+32
	move.w #$0000,equal1+34
	MOVE.W	#640,INC
	bra sortie
co19	cmp.w #$0000,equal1+36
	beq co20
	move.w #$0000,equal1+36
	move.w #$0000,equal1+38
	MOVE.W	#720,INC
	bra sortie
co20	cmp.w #$0000,equal1+40
	beq co21
	move.w #$0000,equal1+40
	move.w #$0000,equal1+42
	MOVE.W	#800,INC
	bra sortie
co21	cmp.w #$0000,equal1+44
	beq co22
	move.w #$0000,equal1+44
	move.w #$0000,equal1+46
	MOVE.W	#880,INC
	bra sortie
co22	cmp.w #$0000,equal1+48
	beq co23
	move.w #$0000,equal1+48
	move.w #$0000,equal1+50
	MOVE.W	#960,INC
	bra sortie
co23	cmp.w #$0000,equal1+52
	beq co24
	move.w #$0000,equal1+52
	move.w #$0000,equal1+54
	MOVE.W	#1040,INC
	bra sortie
co24	cmp.w #$0000,equal1+56
	beq co25
	move.w #$0000,equal1+56
	move.w #$0000,equal1+58
	MOVE.W	#1120,INC
	bra sortie
co25	cmp.w #$0000,equal1+60
	beq co26
	move.w #$0000,equal1+60
	move.w #$0000,equal1+62
	MOVE.W	#1200,INC
	bra sortie
co26	cmp.w #$0000,equal1+64
	beq co27
	move.w #$0000,equal1+64
	move.w #$0000,equal1+66
	MOVE.W	#1280,INC
	bra sortie
co27	cmp.w #$0000,equal1+68
	beq co28
	move.w #$0000,equal1+68
	move.w #$0000,equal1+70
	MOVE.W	#1360,INC
	bra sortie
co28	cmp.w #$0000,equal1+72
	beq co29
	move.w #$0000,equal1+72
	move.w #$0000,equal1+74
	MOVE.W	#1440,INC
	bra sortie
co29
	cmp.w #$0000,equal1+76
	beq co30
	move.w #$0000,equal1+76
	move.w #$0000,equal1+78
	MOVE.W	#1520,INC
	bra sortie
co30	
	cmp.w #$0000,equal1+80
	beq co31
	move.w #$0000,equal1+80
	move.w #$0000,equal1+82
	MOVE.W	#1600,INC
	bra sortie
co31	cmp.w #$0000,equal1+84
	beq co32
	move.w #$0000,equal1+84
	move.w #$0000,equal1+86
	MOVE.W	#1680,INC
	bra sortie
co32	cmp.w #$0000,equal1+88
	beq co33
	move.w #$0000,equal1+88
	move.w #$0000,equal1+90
	MOVE.W	#1760,INC
	bra sortie
co33	cmp.w #$0000,equal1+92
	beq co34
	move.w #$0000,equal1+92
	move.w #$0000,equal1+94
	MOVE.W	#1840,INC
	bra sortie
co34	cmp.w #$0000,equal1+96
	beq co35
	move.w #$0000,equal1+96
	move.w #$0000,equal1+98
	MOVE.W	#1920,INC
	bra sortie
co35	cmp.w #$0000,equal1+100
	beq co36
	move.w #$0000,equal1+100
	move.w #$0000,equal1+102
	MOVE.W	#2000,INC
	bra sortie
co36	cmp.w #$0000,equal1+104
	beq co37
	move.w #$0000,equal1+104
	move.w #$0000,equal1+106
	MOVE.W	#2080,INC
	bra sortie
co37	cmp.w #$0000,equal1+108
	beq co38
	move.w #$0000,equal1+108
	move.w #$0000,equal1+110
	MOVE.W	#2160,INC
	bra sortie
co38	cmp.w #$0000,equal1+112
	beq co39
	move.w #$0000,equal1+112
	move.w #$0000,equal1+114
	MOVE.W	#2240,INC
	bra sortie
co39	cmp.w #$0000,equal1+116
	beq co40
	move.w #$0000,equal1+116
	move.w #$0000,equal1+118
	MOVE.W	#2320,INC
	bra sortie
co40	cmp.w #$0000,equal1+120
	beq co41
	move.w #$0000,equal1+120
	move.w #$0000,equal1+122
	MOVE.W	#2400,INC
	bra sortie
co41	cmp.w #$0000,equal1+124
	beq sortie
	move.w #$0000,equal1+124
	move.w #$0000,equal1+126
	MOVE.W	#2480,INC
	bra sortie
sortie	
	move.l	Blit_Base,a3		; address of equal 1
	add.w	Inc,a3			; add offset
	LEA	UNFILL,A0		; unfill=0's
	move.l	#(2*64)+4,d3		; blitsize(2 down by 4 words across)
	bsr	Blitter			; branch to blit
	rts

Blitter
	move.l	#00,d0			; graphics modular
	move.l	#32,d1			; designation modular
	move.w	#$ffff,d6		; mask
	move.w	#$ffff,d4		; mask
	move.w	#0,d7			; no of planes -1
	lea	$dff000,a6		; custom base
	move.l	#$09f00000,d2		; minterm (A-D)

bb_loop
	bsr	stuff_blitter
	dbra	d7,bb_loop
	rts
	
stuff_blitter				;LOAD BLITTER WITH VALUES

wfblit
	btst	#14,2(a6)			;dmaconr(a6)
	bne.s	wfblit
	move.l	a0,$50(a6)			;bltapt(a6)
	move.l	a3,$54(a6)			;bltdpt(a6)
	move.w	d0,$64(a6)			;bltamod(a6)
	move.w	d1,$66(a6)			;bltdmod(a6)
	move.l	d2,$40(a6)			;bltcon0(a6)
	move.l	#00,$42(a6)			;bltcon1(a6)
	move.w	d6,$46(a6)			;bltalwm(a6)
	move.w	d4,$44(a6)			;bltafwm(a6)
	move.w	d3,$58(a6)			;bltsize(a6)
	rts
Equalizer_2
	cmp.w #$0000,equal2		; these routines just make the bar fade slowly
	beq co11.2			; i.e.2 lines at a time for each voice
	move.w #$0000,equal2		
	move.w #$0000,equal2+2
	MOVE.W	#0,INC_2		; INC_2=incremnetal value for equal 2
	bra sortie_2
co11.2	cmp.w #$0000,equal2+4
	beq co12.2
	move.w #$0000,equal2+4
	move.w #$0000,equal2+6
	MOVE.W	#80,INC_2
	bra sortie_2
co12.2	cmp.w #$0000,equal2+8
	beq co13.2
	move.w #$0000,equal2+8
	move.w #$0000,equal2+10
	MOVE.W	#160,INC_2
	bra sortie_2
co13.2	cmp.w #$0000,equal2+12
	beq co14.2
	move.w #$0000,equal2+12
	move.w #$0000,equal2+14
	MOVE.W	#240,INC_2
	bra sortie_2
co14.2	cmp.w #$0000,equal2+16
	beq co15.2
	move.w #$0000,equal2+16
	move.w #$0000,equal2+18
	MOVE.W	#320,INC_2
	bra sortie_2
co15.2	cmp.w #$0000,equal2+20
	beq co16.2
	move.w #$0000,equal2+20
	move.w #$0000,equal2+22
	MOVE.W	#400,INC_2
	bra sortie_2
co16.2	cmp.w #$0000,equal2+24
	beq co17.2
	move.w #$0000,equal2+24
	move.w #$0000,equal2+26
	MOVE.W	#480,INC_2
	bra sortie_2
co17.2	cmp.w #$0000,equal2+28
	beq co18.2
	move.w #$0000,equal2+28
	move.w #$0000,equal2+30
	MOVE.W	#560,INC_2
	bra	sortie_2
co18.2	cmp.w #$0000,equal2+32
	beq co19.2
	move.w #$0000,equal2+32
	move.w #$0000,equal2+34
	MOVE.W	#640,INC_2
	bra sortie_2
co19.2	cmp.w #$0000,equal2+36
	beq co20.2
	move.w #$0000,equal2+36
	move.w #$0000,equal2+38
	MOVE.W	#720,INC_2
	bra sortie_2
co20.2	cmp.w #$0000,equal2+40
	beq co21.2
	move.w #$0000,equal2+40
	move.w #$0000,equal2+42
	MOVE.W	#800,INC_2
	bra sortie_2
co21.2	cmp.w #$0000,equal2+44
	beq co22.2
	move.w #$0000,equal2+44
	move.w #$0000,equal2+46
	MOVE.W	#880,INC_2
	bra sortie_2
co22.2	cmp.w #$0000,equal2+48
	beq co23.2
	move.w #$0000,equal2+48
	move.w #$0000,equal2+50
	MOVE.W	#960,INC_2
	bra sortie_2
co23.2	cmp.w #$0000,equal2+52
	beq co24.2
	move.w #$0000,equal2+52
	move.w #$0000,equal2+54
	MOVE.W	#1040,INC_2
	bra sortie_2
co24.2	cmp.w #$0000,equal2+56
	beq co25.2
	move.w #$0000,equal2+56
	move.w #$0000,equal2+58
	MOVE.W	#1120,INC_2
	bra sortie_2
co25.2	cmp.w #$0000,equal2+60
	beq co26.2
	move.w #$0000,equal2+60
	move.w #$0000,equal2+62
	MOVE.W	#1200,INC_2
	bra sortie_2
co26.2	cmp.w #$0000,equal2+64
	beq co27.2
	move.w #$0000,equal2+64
	move.w #$0000,equal2+66
	MOVE.W	#1280,INC_2
	bra sortie_2
co27.2	cmp.w #$0000,equal2+68
	beq co28.2
	move.w #$0000,equal2+68
	move.w #$0000,equal2+70
	MOVE.W	#1360,INC_2
	bra sortie_2
co28.2	cmp.w #$0000,equal2+72
	beq co29.2
	move.w #$0000,equal2+72
	move.w #$0000,equal2+74
	MOVE.W	#1440,INC_2
	bra sortie_2
co29.2
	cmp.w #$0000,equal2+76
	beq co30.2
	move.w #$0000,equal2+76
	move.w #$0000,equal2+78
	MOVE.W	#1520,INC_2
	bra sortie_2
co30.2
	cmp.w #$0000,equal2+80
	beq co31.2
	move.w #$0000,equal2+80
	move.w #$0000,equal2+82
	MOVE.W	#1600,INC_2
	bra sortie_2
co31.2	cmp.w #$0000,equal2+84
	beq co32.2
	move.w #$0000,equal2+84
	move.w #$0000,equal2+86
	MOVE.W	#1680,INC_2
	bra sortie_2
co32.2	cmp.w #$0000,equal2+88
	beq co33.2
	move.w #$0000,equal2+88
	move.w #$0000,equal2+90
	MOVE.W	#1760,INC_2
	bra sortie_2
co33.2	cmp.w #$0000,equal2+92
	beq co34.2
	move.w #$0000,equal2+92
	move.w #$0000,equal2+94
	MOVE.W	#1840,INC_2
	bra sortie_2
co34.2	cmp.w #$0000,equal2+96
	beq co35.2
	move.w #$0000,equal2+96
	move.w #$0000,equal2+98
	MOVE.W	#1920,INC_2
	bra sortie_2
co35.2	cmp.w #$0000,equal2+100
	beq co36.2
	move.w #$0000,equal2+100
	move.w #$0000,equal2+102
	MOVE.W	#2000,INC_2
	bra sortie_2
co36.2	cmp.w #$0000,equal2+104
	beq co37.2
	move.w #$0000,equal2+104
	move.w #$0000,equal2+106
	MOVE.W	#2080,INC_2
	bra sortie_2
co37.2	cmp.w #$0000,equal2+108
	beq co38.2
	move.w #$0000,equal2+108
	move.w #$0000,equal2+110
	MOVE.W	#2160,INC_2
	bra sortie_2
co38.2	cmp.w #$0000,equal2+112
	beq co39.2
	move.w #$0000,equal2+112
	move.w #$0000,equal2+114
	MOVE.W	#2240,INC_2
	bra sortie_2
co39.2	cmp.w #$0000,equal2+116
	beq co40.2
	move.w #$0000,equal2+116
	move.w #$0000,equal2+118
	MOVE.W	#2320,INC_2
	bra sortie_2
co40.2	cmp.w #$0000,equal2+120
	beq co41.2
	move.w #$0000,equal2+120
	move.w #$0000,equal2+122
	MOVE.W	#2400,INC_2
	bra sortie_2
co41.2	cmp.w #$0000,equal2+124
	beq sortie_2
	move.w #$0000,equal2+124
	move.w #$0000,equal2+126
	MOVE.W	#2480,INC_2
	bra sortie_2
sortie_2	
	move.l	Blit_Base_2,a3			; address
	add.w	Inc_2,a3			; add offset
	LEA	UNFILL,A0			; 0's
	move.l	#(2*64)+4,d3			; blitsize
	bsr	Blitter
	rts
Equalizer_3
	cmp.w #$0000,equal3		; these routines just make the bar fade slowly
	beq co11.3			; i.e2 lines at a time for each voice
	move.w #$0000,equal3		
	move.w #$0000,equal3+2
	MOVE.W	#0,INC_3
	bra sortie_3
co11.3	cmp.w #$0000,equal3+4
	beq co12.3
	move.w #$0000,equal3+4
	move.w #$0000,equal3+6
	MOVE.W	#80,INC_3
	bra sortie_3
co12.3	cmp.w #$0000,equal3+8
	beq co13.3
	move.w #$0000,equal3+8
	move.w #$0000,equal3+10
	MOVE.W	#160,INC_3
	bra sortie_3
co13.3	cmp.w #$0000,equal3+12
	beq co14.3
	move.w #$0000,equal3+12
	move.w #$0000,equal3+14
	MOVE.W	#240,INC_3
	bra sortie_3
co14.3	cmp.w #$0000,equal3+16
	beq co15.3
	move.w #$0000,equal3+16
	move.w #$0000,equal3+18
	MOVE.W	#320,INC_3
	bra sortie_3
co15.3	cmp.w #$0000,equal3+20
	beq co16.3
	move.w #$0000,equal3+20
	move.w #$0000,equal3+22
	MOVE.W	#400,INC_3
	bra sortie_3
co16.3	cmp.w #$0000,equal3+24
	beq co17.3
	move.w #$0000,equal3+24
	move.w #$0000,equal3+26
	MOVE.W	#480,INC_3
	bra sortie_3
co17.3	cmp.w #$0000,equal3+28
	beq co18.3
	move.w #$0000,equal3+28
	move.w #$0000,equal3+30
	MOVE.W	#560,INC_3
	bra	sortie_3
co18.3	cmp.w #$0000,equal3+32
	beq co19.3
	move.w #$0000,equal3+32
	move.w #$0000,equal3+34
	MOVE.W	#640,INC_3
	bra sortie_3
co19.3	cmp.w #$0000,equal3+36
	beq co20.3
	move.w #$0000,equal3+36
	move.w #$0000,equal3+38
	MOVE.W	#720,INC_3
	bra sortie_3
co20.3	cmp.w #$0000,equal3+40
	beq co21.3
	move.w #$0000,equal3+40
	move.w #$0000,equal3+42
	MOVE.W	#800,INC_3
	bra sortie_3
co21.3	cmp.w #$0000,equal3+44
	beq co22.3
	move.w #$0000,equal3+44
	move.w #$0000,equal3+46
	MOVE.W	#880,INC_3
	bra sortie_3
co22.3	cmp.w #$0000,equal3+48
	beq co23.3
	move.w #$0000,equal3+48
	move.w #$0000,equal3+50
	MOVE.W	#960,INC_3
	bra sortie_3
co23.3	cmp.w #$0000,equal3+52
	beq co24.3
	move.w #$0000,equal3+52
	move.w #$0000,equal3+54
	MOVE.W	#1040,INC_3
	bra sortie_3
co24.3	cmp.w #$0000,equal3+56
	beq co25.3
	move.w #$0000,equal3+56
	move.w #$0000,equal3+58
	MOVE.W	#1120,INC_3
	bra sortie_3
co25.3	cmp.w #$0000,equal3+60
	beq co26.3
	move.w #$0000,equal3+60
	move.w #$0000,equal3+62
	MOVE.W	#1200,INC_3
	bra sortie_3
co26.3	cmp.w #$0000,equal3+64
	beq co27.3
	move.w #$0000,equal3+64
	move.w #$0000,equal3+66
	MOVE.W	#1280,INC_3
	bra sortie_3
co27.3	cmp.w #$0000,equal3+68
	beq co28.3
	move.w #$0000,equal3+68
	move.w #$0000,equal3+70
	MOVE.W	#1360,INC_3
	bra sortie_3
co28.3	cmp.w #$0000,equal3+72
	beq co29.3
	move.w #$0000,equal3+72
	move.w #$0000,equal3+74
	MOVE.W	#1440,INC_3
	bra sortie_3
co29.3
	cmp.w #$0000,equal3+76
	beq co30.3
	move.w #$0000,equal3+76
	move.w #$0000,equal3+78
	MOVE.W	#1520,INC_3
	bra sortie_3
co30.3
	cmp.w #$0000,equal3+80
	beq co31.3
	move.w #$0000,equal3+80
	move.w #$0000,equal3+82
	MOVE.W	#1600,INC_3
	bra sortie_3
co31.3	cmp.w #$0000,equal3+84
	beq co32.3
	move.w #$0000,equal3+84
	move.w #$0000,equal3+86
	MOVE.W	#1680,INC_3
	bra sortie_3
co32.3	cmp.w #$0000,equal3+88
	beq co33.3
	move.w #$0000,equal3+88
	move.w #$0000,equal3+90
	MOVE.W	#1760,INC_3
	bra sortie_3
co33.3	cmp.w #$0000,equal3+92
	beq co34.3
	move.w #$0000,equal3+92
	move.w #$0000,equal3+94
	MOVE.W	#1840,INC_3
	bra sortie_3
co34.3	cmp.w #$0000,equal3+96
	beq co35.3
	move.w #$0000,equal3+96
	move.w #$0000,equal3+98
	MOVE.W	#1920,INC_3
	bra sortie_3
co35.3	cmp.w #$0000,equal3+100
	beq co36.3
	move.w #$0000,equal3+100
	move.w #$0000,equal3+102
	MOVE.W	#2000,INC_3
	bra sortie_3
co36.3	cmp.w #$0000,equal3+104
	beq co37.3
	move.w #$0000,equal3+104
	move.w #$0000,equal3+106
	MOVE.W	#2080,INC_3
	bra sortie_3
co37.3	cmp.w #$0000,equal3+108
	beq co38.3
	move.w #$0000,equal3+108
	move.w #$0000,equal3+110
	MOVE.W	#2160,INC_3
	bra sortie_3
co38.3	cmp.w #$0000,equal3+112
	beq co39.3
	move.w #$0000,equal3+112
	move.w #$0000,equal3+114
	MOVE.W	#2240,INC_3
	bra sortie_3
co39.3	cmp.w #$0000,equal3+116
	beq co40.3
	move.w #$0000,equal3+116
	move.w #$0000,equal3+118
	MOVE.W	#2320,INC_3
	bra sortie_3
co40.3	cmp.w #$0000,equal3+120
	beq co41.3
	move.w #$0000,equal3+120
	move.w #$0000,equal3+122
	MOVE.W	#2400,INC_3
	bra sortie_3
co41.3	cmp.w #$0000,equal3+124
	beq sortie_3
	move.w #$0000,equal3+124
	move.w #$0000,equal3+126
	MOVE.W	#2480,INC_3
	bra sortie_3
sortie_3	
	move.l	Blit_Base_3,a3
	add.w	INC_3,a3			; add offset
	LEA	UNFILL,A0
	move.l	#(2*64)+4,d3		; blitsize
	bsr	Blitter
	rts
Equalizer_4
	cmp.w #$0000,equal4		; these routines just make the bar fade slowly
	beq co11.4			; i.e2 lines at a time for each voice
	move.w #$0000,equal4		
	move.w #$0000,equal4+2
	MOVE.W	#0,INC_4
	bra sortie_4
co11.4	cmp.w #$0000,equal4+4
	beq co12.4
	move.w #$0000,equal4+4
	move.w #$0000,equal4+6
	MOVE.W	#80,INC_4
	bra sortie_4
co12.4	cmp.w #$0000,equal4+8
	beq co13.4
	move.w #$0000,equal4+8
	move.w #$0000,equal4+10
	MOVE.W	#160,INC_4
	bra sortie_4
co13.4	cmp.w #$0000,equal4+12
	beq co14.4
	move.w #$0000,equal4+12
	move.w #$0000,equal4+14
	MOVE.W	#240,INC_4
	bra sortie_4
co14.4	cmp.w #$0000,equal4+16
	beq co15.4
	move.w #$0000,equal4+16
	move.w #$0000,equal4+18
	MOVE.W	#320,INC_4
	bra sortie_4
co15.4	cmp.w #$0000,equal4+20
	beq co16.4
	move.w #$0000,equal4+20
	move.w #$0000,equal4+22
	MOVE.W	#400,INC_4
	bra sortie_4
co16.4	cmp.w #$0000,equal4+24
	beq co17.4
	move.w #$0000,equal4+24
	move.w #$0000,equal4+26
	MOVE.W	#480,INC_4
	bra sortie_4
co17.4	cmp.w #$0000,equal4+28
	beq co18.4
	move.w #$0000,equal4+28
	move.w #$0000,equal4+30
	MOVE.W	#560,INC_4
	bra	sortie_4
co18.4	cmp.w #$0000,equal4+32
	beq co19.4
	move.w #$0000,equal4+32
	move.w #$0000,equal4+34
	MOVE.W	#640,INC_4
	bra sortie_4
co19.4	cmp.w #$0000,equal4+36
	beq co20.4
	move.w #$0000,equal4+36
	move.w #$0000,equal4+38
	MOVE.W	#720,INC_4
	bra sortie_4
co20.4	cmp.w #$0000,equal4+40
	beq co21.4
	move.w #$0000,equal4+40
	move.w #$0000,equal4+42
	MOVE.W	#800,INC_4
	bra sortie_4
co21.4	cmp.w #$0000,equal4+44
	beq co22.4
	move.w #$0000,equal4+44
	move.w #$0000,equal4+46
	MOVE.W	#880,INC_4
	bra sortie_4
co22.4	cmp.w #$0000,equal4+48
	beq co23.4
	move.w #$0000,equal4+48
	move.w #$0000,equal4+50
	MOVE.W	#960,INC_4
	bra sortie_4
co23.4	cmp.w #$0000,equal4+52
	beq co24.4
	move.w #$0000,equal4+52
	move.w #$0000,equal4+54
	MOVE.W	#1040,INC_4
	bra sortie_4
co24.4	cmp.w #$0000,equal4+56
	beq co25.4
	move.w #$0000,equal4+56
	move.w #$0000,equal4+58
	MOVE.W	#1120,INC_4
	bra sortie_4
co25.4	cmp.w #$0000,equal4+60
	beq co26.4
	move.w #$0000,equal4+60
	move.w #$0000,equal4+62
	MOVE.W	#1200,INC_4
	bra sortie_4
co26.4	cmp.w #$0000,equal4+64
	beq co27.4
	move.w #$0000,equal4+64
	move.w #$0000,equal4+66
	MOVE.W	#1280,INC_4
	bra sortie_4
co27.4	cmp.w #$0000,equal4+68
	beq co28.4
	move.w #$0000,equal4+68
	move.w #$0000,equal4+70
	MOVE.W	#1360,INC_4
	bra sortie_4
co28.4	cmp.w #$0000,equal4+72
	beq co29.4
	move.w #$0000,equal4+72
	move.w #$0000,equal4+74
	MOVE.W	#1440,INC_4
	bra sortie_4
co29.4
	cmp.w #$0000,equal4+76
	beq co30.4
	move.w #$0000,equal4+76
	move.w #$0000,equal4+78
	MOVE.W	#1520,INC_4
	bra sortie_4
co30.4
	cmp.w #$0000,equal4+80
	beq co31.4
	move.w #$0000,equal4+80
	move.w #$0000,equal4+82
	MOVE.W	#1600,INC_4
	bra sortie_4
co31.4	cmp.w #$0000,equal4+84
	beq co32.4
	move.w #$0000,equal4+84
	move.w #$0000,equal4+86
	MOVE.W	#1680,INC_4
	bra sortie_4
co32.4	cmp.w #$0000,equal4+88
	beq co33.4
	move.w #$0000,equal4+88
	move.w #$0000,equal4+90
	MOVE.W	#1760,INC_4
	bra sortie_4
co33.4	cmp.w #$0000,equal4+92
	beq co34.4
	move.w #$0000,equal4+92
	move.w #$0000,equal4+94
	MOVE.W	#1840,INC_4
	bra sortie_4
co34.4	cmp.w #$0000,equal4+96
	beq co35.4
	move.w #$0000,equal4+96
	move.w #$0000,equal4+98
	MOVE.W	#1920,INC_4
	bra sortie_4
co35.4	cmp.w #$0000,equal4+100
	beq co36.4
	move.w #$0000,equal4+100
	move.w #$0000,equal4+102
	MOVE.W	#2000,INC_4
	bra sortie_4
co36.4	cmp.w #$0000,equal4+104
	beq co37.4
	move.w #$0000,equal4+104
	move.w #$0000,equal4+106
	MOVE.W	#2080,INC_4
	bra sortie_4
co37.4	cmp.w #$0000,equal4+108
	beq co38.4
	move.w #$0000,equal4+108
	move.w #$0000,equal4+110
	MOVE.W	#2160,INC_4
	bra sortie_4
co38.4	cmp.w #$0000,equal4+112
	beq co39.4
	move.w #$0000,equal4+112
	move.w #$0000,equal4+114
	MOVE.W	#2240,INC_4
	bra sortie_4
co39.4	cmp.w #$0000,equal4+116
	beq co40.4
	move.w #$0000,equal4+116
	move.w #$0000,equal4+118
	MOVE.W	#2320,INC_4
	bra sortie_4
co40.4	cmp.w #$0000,equal4+120
	beq co41.4
	move.w #$0000,equal4+120
	move.w #$0000,equal4+122
	MOVE.W	#2400,INC_4
	bra sortie_4
co41.4	cmp.w #$0000,equal4+124
	beq sortie_4
	move.w #$0000,equal4+124
	move.w #$0000,equal4+126
	MOVE.W	#2480,INC_4
	bra sortie_4
sortie_4	
	move.l	Blit_Base_4,a3
	add.w	INC_4,a3			; add offset
	LEA	UNFILL,A0
	move.l	#(2*64)+4,d3		; blitsize
	bsr	Blitter
	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 replayer 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		; yes then full equalizer
	move.w #$0300,equal1+2
	move.w #$0500,equal1+4
	move.w #$0700,equal1+6
	move.w #$0900,equal1+8
	move.w #$0b00,equal1+10
	move.w #$0d00,equal1+12
	move.w #$0f00,equal1+14
	move.w #$0f00,equal1+16
	move.w #$0d00,equal1+18
	move.w #$0b00,equal1+20
	move.w #$0900,equal1+22
	move.w #$0700,equal1+24
	move.w #$0500,equal1+26
	move.w #$0300,equal1+28
	move.w #$0100,equal1+30
	move.w #$0100,equal1+32
	move.w #$0100,equal1+34
	move.w #$0100,equal1+36
	move.w #$0100,equal1+38
	move.w #$0100,equal1+40
	move.w #$0100,equal1+42
	move.w #$0100,equal1+44
	move.w #$0100,equal1+46
	move.w #$0100,equal1+48
	move.w #$0100,equal1+50
	move.w #$0100,equal1+52
	move.w #$0100,equal1+54
	move.w #$0100,equal1+56
	move.w #$0100,equal1+58
	move.w #$0100,equal1+60
	move.w #$0100,equal1+62
	move.w #$0100,equal1+64
	move.w #$0100,equal1+66
	move.w #$0100,equal1+68
	move.w #$0100,equal1+70
	move.w #$0100,equal1+72
	move.w #$0100,equal1+74
	move.w #$0100,equal1+76
	move.w #$0100,equal1+78
	move.w #$0100,equal1+80
	move.w #$0100,equal1+82
	move.w #$0100,equal1+84
	move.w #$0100,equal1+86
	move.w #$0100,equal1+88
	move.w #$0100,equal1+90
	move.w #$0100,equal1+92
	move.w #$0100,equal1+94
	move.w #$0100,equal1+96
	move.w #$0100,equal1+98
	move.w #$0100,equal1+100
	move.w #$0100,equal1+102
	move.w #$0100,equal1+104
	move.w #$0100,equal1+106
	move.w #$0100,equal1+108
	move.w #$0100,equal1+110
	move.w #$0100,equal1+112
	move.w #$0100,equal1+114
	move.w #$0100,equal1+116
	move.w #$0100,equal1+118
	move.w #$0100,equal1+120
	move.w #$0100,equal1+122
	move.w #$0100,equal1+124
	move.w #$0100,equal1+126

	move.l	Blit_Base,a3		; address
	lea	Fill,a0			; fill with $ffff's
	move.l	#(64*64)+4,d3		; blitsize(full equal)=
	bsr	Blitter			; 64 down by 4 words across
	rts
Voice_2
	cmp.l	#$0000,mt_voice2	; is voice active
	beq	No_Sound		; no then return
	move.w #$0100,equal2		;yes then full equalizer
	move.w #$0300,equal2+2
	move.w #$0500,equal2+4
	move.w #$0700,equal2+6
	move.w #$0900,equal2+8
	move.w #$0b00,equal2+10
	move.w #$0d00,equal2+12
	move.w #$0f00,equal2+14
	move.w #$0f00,equal2+16
	move.w #$0d00,equal2+18
	move.w #$0b00,equal2+20
	move.w #$0900,equal2+22
	move.w #$0700,equal2+24
	move.w #$0500,equal2+26
	move.w #$0300,equal2+28
	move.w #$0100,equal2+30
	move.w #$0100,equal2+32
	move.w #$0100,equal2+34
	move.w #$0100,equal2+36
	move.w #$0100,equal2+38
	move.w #$0100,equal2+40
	move.w #$0100,equal2+42
	move.w #$0100,equal2+44
	move.w #$0100,equal2+46
	move.w #$0100,equal2+48
	move.w #$0100,equal2+50
	move.w #$0100,equal2+52
	move.w #$0100,equal2+54
	move.w #$0100,equal2+56
	move.w #$0100,equal2+58
	move.w #$0100,equal2+60
	move.w #$0100,equal2+62
	move.w #$0100,equal2+64
	move.w #$0100,equal2+66
	move.w #$0100,equal2+68
	move.w #$0100,equal2+70
	move.w #$0100,equal2+72
	move.w #$0100,equal2+74
	move.w #$0100,equal2+76
	move.w #$0100,equal2+78
	move.w #$0100,equal2+80
	move.w #$0100,equal2+82
	move.w #$0100,equal2+84
	move.w #$0100,equal2+86
	move.w #$0100,equal2+88
	move.w #$0100,equal2+90
	move.w #$0100,equal2+92
	move.w #$0100,equal2+94
	move.w #$0100,equal2+96
	move.w #$0100,equal2+98
	move.w #$0100,equal2+100
	move.w #$0100,equal2+102
	move.w #$0100,equal2+104
	move.w #$0100,equal2+106
	move.w #$0100,equal2+108
	move.w #$0100,equal2+110
	move.w #$0100,equal2+112
	move.w #$0100,equal2+114
	move.w #$0100,equal2+116
	move.w #$0100,equal2+118
	move.w #$0100,equal2+120
	move.w #$0100,equal2+122
	move.w #$0100,equal2+124
	move.w #$0100,equal2+126
	move.l	Blit_base_2,a3
	lea	Fill,a0
	move.l	#(64*64)+4,d3		; blitsize
	bsr	Blitter
	rts
Voice_3
	cmp.l	#$0000,mt_voice3	; is voice active
	beq	No_Sound		; no then return
	move.w #$0100,equal3		;yes then full equalizer
	move.w #$0300,equal3+2
	move.w #$0500,equal3+4
	move.w #$0700,equal3+6
	move.w #$0900,equal3+8
	move.w #$0b00,equal3+10
	move.w #$0d00,equal3+12
	move.w #$0f00,equal3+14
	move.w #$0f00,equal3+16
	move.w #$0d00,equal3+18
	move.w #$0b00,equal3+20
	move.w #$0900,equal3+22
	move.w #$0700,equal3+24
	move.w #$0500,equal3+26
	move.w #$0300,equal3+28
	move.w #$0100,equal3+30
	move.w #$0100,equal3+32
	move.w #$0100,equal3+34
	move.w #$0100,equal3+36
	move.w #$0100,equal3+38
	move.w #$0100,equal3+40
	move.w #$0100,equal3+42
	move.w #$0100,equal3+44
	move.w #$0100,equal3+46
	move.w #$0100,equal3+48
	move.w #$0100,equal3+50
	move.w #$0100,equal3+52
	move.w #$0100,equal3+54
	move.w #$0100,equal3+56
	move.w #$0100,equal3+58
	move.w #$0100,equal3+60
	move.w #$0100,equal3+62
	move.w #$0100,equal3+64
	move.w #$0100,equal3+66
	move.w #$0100,equal3+68
	move.w #$0100,equal3+70
	move.w #$0100,equal3+72
	move.w #$0100,equal3+74
	move.w #$0100,equal3+76
	move.w #$0100,equal3+78
	move.w #$0100,equal3+80
	move.w #$0100,equal3+82
	move.w #$0100,equal3+84
	move.w #$0100,equal3+86
	move.w #$0100,equal3+88
	move.w #$0100,equal3+90
	move.w #$0100,equal3+92
	move.w #$0100,equal3+94
	move.w #$0100,equal3+96
	move.w #$0100,equal3+98
	move.w #$0100,equal3+100
	move.w #$0100,equal3+102
	move.w #$0100,equal3+104
	move.w #$0100,equal3+106
	move.w #$0100,equal3+108
	move.w #$0100,equal3+110
	move.w #$0100,equal3+112
	move.w #$0100,equal3+114
	move.w #$0100,equal3+116
	move.w #$0100,equal3+118
	move.w #$0100,equal3+120
	move.w #$0100,equal3+122
	move.w #$0100,equal3+124
	move.w #$0100,equal3+126
	move.l	Blit_base_3,a3
	lea	Fill,a0
	move.l	#(64*64)+4,d3		; blitsize
	bsr	Blitter
	rts
Voice_4
	cmp.l	#$0000,mt_voice4	; is voice active
	beq	No_Sound		; no then return
	move.w #$0100,equal4		;yes then full equalizer
	move.w #$0300,equal4+2
	move.w #$0500,equal4+4
	move.w #$0700,equal4+6
	move.w #$0900,equal4+8
	move.w #$0b00,equal4+10
	move.w #$0d00,equal4+12
	move.w #$0f00,equal4+14
	move.w #$0f00,equal4+16
	move.w #$0d00,equal4+18
	move.w #$0b00,equal4+20
	move.w #$0900,equal4+22
	move.w #$0700,equal4+24
	move.w #$0500,equal4+26
	move.w #$0300,equal4+28
	move.w #$0100,equal4+30
	move.w #$0100,equal4+32
	move.w #$0100,equal4+34
	move.w #$0100,equal4+36
	move.w #$0100,equal4+38
	move.w #$0100,equal4+40
	move.w #$0100,equal4+42
	move.w #$0100,equal4+44
	move.w #$0100,equal4+46
	move.w #$0100,equal4+48
	move.w #$0100,equal4+50
	move.w #$0100,equal4+52
	move.w #$0100,equal4+54
	move.w #$0100,equal4+56
	move.w #$0100,equal4+58
	move.w #$0100,equal4+60
	move.w #$0100,equal4+62
	move.w #$0100,equal4+64
	move.w #$0100,equal4+66
	move.w #$0100,equal4+68
	move.w #$0100,equal4+70
	move.w #$0100,equal4+72
	move.w #$0100,equal4+74
	move.w #$0100,equal4+76
	move.w #$0100,equal4+78
	move.w #$0100,equal4+80
	move.w #$0100,equal4+82
	move.w #$0100,equal4+84
	move.w #$0100,equal4+86
	move.w #$0100,equal4+88
	move.w #$0100,equal4+90
	move.w #$0100,equal4+92
	move.w #$0100,equal4+94
	move.w #$0100,equal4+96
	move.w #$0100,equal4+98
	move.w #$0100,equal4+100
	move.w #$0100,equal4+102
	move.w #$0100,equal4+104
	move.w #$0100,equal4+106
	move.w #$0100,equal4+108
	move.w #$0100,equal4+110
	move.w #$0100,equal4+112
	move.w #$0100,equal4+114
	move.w #$0100,equal4+116
	move.w #$0100,equal4+118
	move.w #$0100,equal4+120
	move.w #$0100,equal4+122
	move.w #$0100,equal4+124
	move.w #$0100,equal4+126
	move.l	Blit_base_4,a3
	lea	Fill,a0
	move.l	#(64*64)+4,d3		; blitsize
	bsr	Blitter
	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
Blit_base	dc.l	0
Blit_base_2	dc.l	0
Blit_base_3	dc.l	0
Blit_base_4	dc.l	0
Gra_base	dc.l	0
INC		dc.w	0
INC_2		dc.w	0
INC_3		dc.w	0
INC_4		dc.w	0
	even
	SECTION		chipmemory,data_c	


Newcop
	dc.w	$0100,%0011001000000000		;3 PLANES 
	dc.w	$0102
Scroll	dc.w	$0000			;	SCROLL VALUE
	dc.w	$0104,%0000000000000000		;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

	dc.w	$9001,$fffe,$0182,$0f00
	dc.w	$9101,$fffe,$0182,$0f10
	dc.w	$9201,$fffe,$0182,$0f20
	dc.w	$9301,$fffe,$0182,$0f30
	dc.w	$9401,$fffe,$0182,$0f40
	dc.w	$9501,$fffe,$0182,$0f50
	dc.w	$9601,$fffe,$0182,$0f60
	dc.w	$9701,$fffe,$0182,$0f70
	dc.w	$9801,$fffe,$0182,$0f80
	dc.w	$9901,$fffe,$0182,$0f90
	dc.w	$9a01,$fffe,$0182,$0fa0
	dc.w	$9b01,$fffe,$0182,$0fb0
	dc.w	$9c01,$fffe,$0182,$0fc0
	dc.w	$9d01,$fffe,$0182,$0fd0
	dc.w	$9e01,$fffe,$0182,$0fe0
	dc.w	$9f01,$fffe,$0182,$0ff0
	dc.w	$a001,$fffe,$0182,$0ef0
	dc.w	$a101,$fffe,$0182,$0df0
	dc.w	$a201,$fffe,$0182,$0cf0
	dc.w	$a301,$fffe,$0182,$0bf0
	dc.w	$a401,$fffe,$0182,$0af0
	dc.w	$a501,$fffe,$0182,$09f0
	dc.w	$a601,$fffe,$0182,$08f0
	dc.w	$a701,$fffe,$0182,$07f0
	dc.w	$a801,$fffe,$0182,$06f0
	dc.w	$a901,$fffe,$0182,$05f0
	dc.w	$aa01,$fffe,$0182,$04f0
	dc.w	$ab01,$fffe,$0182,$03f0
	dc.w	$ac01,$fffe,$0182,$02f0
	dc.w	$ad01,$fffe,$0182,$01f0
	dc.w	$ae01,$fffe,$0182,$00f0
	dc.w	$af01,$fffe,$0182,$00f1
	dc.w	$b001,$fffe,$0182,$00f2
	dc.w	$b101,$fffe,$0182,$00f3
	dc.w	$b201,$fffe,$0182,$00f4
	dc.w	$b301,$fffe,$0182,$00f5	
	dc.w	$b401,$fffe,$0182,$00f6
	dc.w	$b501,$fffe,$0182,$00f7
	dc.w	$b601,$fffe,$0182,$00f8
	dc.w	$b701,$fffe,$0182,$00f9
	dc.w	$b801,$fffe,$0182,$00fa
	dc.w	$b901,$fffe,$0182,$00fb
	dc.w	$ba01,$fffe,$0182,$00fc
	dc.w	$bb01,$fffe,$0182,$00fd
	dc.w	$bc01,$fffe,$0182,$00fe
	dc.w	$bd01,$fffe,$0182,$00ff
	dc.w	$be01,$fffe,$0182,$00ef
	dc.w	$bf01,$fffe,$0182,$00df
	dc.w	$c001,$fffe,$0182,$00cf
	dc.w	$c101,$fffe,$0182,$00bf
	dc.w	$c201,$fffe,$0182,$00af
	dc.w	$c301,$fffe,$0182,$009f
	dc.w	$c401,$fffe,$0182,$008f
	dc.w	$c501,$fffe,$0182,$007f
	dc.w	$c601,$fffe,$0182,$006f
	dc.w	$c701,$fffe,$0182,$005f
	dc.w	$c801,$fffe,$0182,$004f
	dc.w	$c901,$fffe,$0182,$003f
	dc.w	$ca01,$fffe,$0182,$002f
	dc.w	$cb01,$fffe,$0182,$001f
	dc.w	$cc01,$fffe,$0182,$000f
	dc.w	$cd01,$fffe,$0182,$000d
	dc.w	$ce01,$fffe,$0182,$000b
	dc.w	$cf01,$fffe,$0182,$0009
	dc.w	$d001,$fffe,$0182,$0007
	dc.w	$d101,$fffe,$0182,$0005


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

equal1						; an area to store values
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
equal2
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
equal3
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
equal4
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000
	dc.w	$0000,$0000,$0000,$0000,$0000

*****************************************************
*
*
*      MARK-Change this Module again to a crappy one
*	    and prepare to meet my wrath-BLAINE
*
*
*     Point taken Blaine!!!! mod.midnight will stay-MARK
*
***************************************************

mt_data		incbin	"source:modules/mod.midnight"
	dc.l	0,0	
Foreground
		dcb.b	(256*40)*1,$00
		dcb.b	(256*40)*1,$00
		dcb.b	(256*40)*1,$00
UNFill
	dcb.b	(4*2)*4,$00
Fill
	dcb.b	(64*2)*4,$ff

