	clr.l	-(sp)
	move	#$20,-(sp)
	trap	#1
	addq.l	#6,sp

	bsr.s	M_SETUP

	move	#$2700,sr
	bsr	M_ON
	move	#$2300,sr
	clr.l	$466.w
	move.w	#0,$ff9800
	moveq	#0,d0
vblank
;	move.l	$446.w,d0
;.wait	cmp.l	$446.w,d0
;	beq.s	.wait
	clr.l	$446.w
	cmp.b	#$39+$80,$fffffc02.w
	bne.s	vblank
	bsr.s	M_OFF
	clr	-(sp)
	trap	#1
M_SETUP	bra	SETUP_MO
M_ON	bra	INT_ON
M_OFF	bra	INT_OFF
SETUP_MO
	move.w	#$80,-(a7)
	trap	#14
	addq.l	#2,a7
	move.l	$134.w,OLD_A
	move.w	#1,-(a7)
	move.w	#0,-(a7)
	move.w	#0,-(a7)
	move.w	#8,-(a7)
	move.w	#1,-(a7)
	move.w	#$8B,-(a7)
	trap	#14
	lea	$C(a7),a7
	move.w	#0,-(a7)
	move.w	#1,-(a7)
	move.w	#$89,-(a7)
	trap	#14
	addq.w	#6,a7
	move.w	#1,-(a7)
	move.l	#$1E4,-(a7)
	pea	DSPPROG(pc)
	move.w	#$6E,-(a7)
	trap	#14
	lea	$C(a7),a7
	bsr	MT_INIT
	bra	PREPARE

INT_OFF	move.l	OLD_A(pc),$134.w
	move.b	OLD_19(pc),$FFFFFA19.w
	move.b	OLD_1F(pc),$FFFFFA1F.w
	bclr	#5,$FFFFFA07.w
	bclr	#5,$FFFFFA13.w
	move.w	#1,-(a7)
	move.w	#0,-(a7)
	move.w	#0,-(a7)
	move.w	#8,-(a7)
	move.w	#0,-(a7)
	move.w	#$8B,-(a7)
	trap	#14
	lea	$C(a7),a7
	move.w	#1,-(a7)
	move.w	#$84,-(a7)
	trap	#14
	addq.w	#4,a7
	move.w	#$81,-(a7)
	trap	#14
	addq.l	#2,a7
	rts

INT_ON	move.b	$FFFFFA19.w,OLD_19
	move.b	$FFFFFA1F.w,OLD_1F
	bclr	#3,$FFFFFA17.w
	bset	#5,$FFFFFA07.w
	bset	#5,$FFFFFA13.w
	move.b	#$F6,$FFFFFA1F.w
	move.b	#7,$FFFFFA19.w
	move.l	#NEW_A,$134.w
	rts
OLD_A	DC.L	0
OLD_19	DC.L	0
OLD_1F	DC.L	0
NEW_A
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	#$00000000,$ffff9800.w
	lea	$FFFFA200.w,a6
	clr.b	7(a6)
	lea	CH1S(pc),a1
	bsr.s	SEND_VOICE
	lea	CH2S(pc),a1
	bsr.s	SEND_VOICE
	lea	CH3S(pc),a1
	bsr.s	SEND_VOICE
	lea	CH4S(pc),a1
	bsr.s	SEND_VOICE
	bsr	MT_MUSIC
	move.l	#$fffff00ff,$ffff9800.w
	movem.l	(a7)+,d0-d7/a0-a6
	rte
vbl
	addq.l	#1,$466.w
	rte

SEND_VOICE	
	move.b	$17(a1),5(a6)
	clr.w	6(a6)
	moveq	#0,d0
	move.w	$14(a1),d0
	move.l	#$24665268,d1
	divul.l	d0,d1:d1
	swap	d1
	move.b	d1,5(a6)
	rol.l	#8,d1
	move.b	d1,6(a6)
	rol.l	#8,d1
	move.b	d1,7(a6)
	moveq	#0,d0
.CHECK1	btst	#0,2(a6)
	beq.s	.CHECK1
	move.b	5(a6),d0
	lsl.l	#8,d0
	move.b	6(a6),d0
	lsl.l	#8,d0
	move.b	7(a6),d0
	move.l	(a1),d1
	tst.w	$C(a1)
	bne.s	.NOPS
	add.l	d0,d1
	cmp.l	4(a1),d1
	bcs.s	.NOPS
	sub.l	8(a1),d1
.NOPS	move.l	d1,(a1)
	movea.l	d1,a2
	moveq	#0,d0
.CHECK2	btst	#0,2(a6)
	beq.s	.CHECK2
	move.b	5(a6),d0
	lsl.l	#8,d0
	move.b	6(a6),d0
	lsl.l	#8,d0
	move.b	7(a6),d0
	moveq	#3,d2
	divu.w	d2,d0
	addq.w	#8,d0
	clr.b	5(a6)
	rol.w	#8,d0
	move.b	d0,6(a6)
	rol.w	#8,d0
	move.b	d0,7(a6)
	and.w	d0,d2
	lsr.w	#2,d0
	neg.w	d2
	jmp	.kaka(pc,d2.w*8)
.VAR
	move.b	(a2)+,5(a6)
	move.w	(a2)+,6(a6)
	move.b	(a2)+,5(a6)
	move.w	(a2)+,6(a6)
	move.b	(a2)+,5(a6)
	move.w	(a2)+,6(a6)
	move.b	(a2)+,5(a6)
	move.w	(a2)+,6(a6)
.kaka	dbf	d0,.VAR
	clr.w	$C(a1)
	rts
PREPARE	lea	WORKSPC,a6
	movea.l	MT_SAMPLESTARTS(pc),a0
	movea.l	END_OF_SAMPLE(pc),a1
TOSTACK	move.w	-(a1),-(a6)
	cmpa.l	a0,a1
	bgt.s	TOSTACK
	lea	MT_SAMPLESTARTS(pc),a2
	lea	MODULE,a1
	movea.l	(a2),a0
	movea.l	a0,a5
	moveq	#$1E,d7
ROOP	move.l	a0,(a2)+
	tst.w	$2A(a1)
	beq.s	SAMPLOK
	tst.w	$2E(a1)
	bne.s	REPNEG
REPEQU	move.w	$2A(a1),d0
	move.w	d0,d4
	subq.w	#1,d0
	movea.l	a0,a4
FROMSTK	move.w	(a6)+,(a0)+
	dbf	d0,FROMSTK
	bra.s	REP
REPNEG	move.w	$2E(a1),d0
	move.w	d0,d4
	subq.w	#1,d0
	movea.l	a6,a4
GET1ST	move.w	(a4)+,(a0)+
	dbf	d0,GET1ST
	adda.w	$2A(a1),a6
	adda.w	$2A(a1),a6
REP	movea.l	a0,a5
	moveq	#0,d1
TOOSMAL	movea.l	a4,a3
	move.w	$30(a1),d0
	subq.w	#1,d0
MOVEREP	move.w	(a3)+,(a0)+
	addq.w	#2,d1
	dbf	d0,MOVEREP
	cmp.w	#$320,d1
	blt.s	TOOSMAL
	move.w	#$18F,d2
.LOOP	move.w	(a5)+,(a0)+
	dbf	d2,.LOOP
DONE	add.w	d4,d4
	move.w	d4,$2A(a1)
	move.w	d1,$30(a1)
	clr.w	$2E(a1)
SAMPLOK	lea	$1E(a1),a1
	dbf	d7,ROOP
	cmpa.l	#WORKSPC,a0
	bgt.s	.FLERP
	rts
.FLERP	ILLEGAL
END_OF_SAMPLE
	DC.L	0
MT_INIT	lea	MODULE,a0
	move.l	a0,MT_SONGDATAPOS
	movea.l	a0,a1
	lea	$3B8(a1),a1
	moveq	#$7F,d0
	moveq	#0,d1
MTLOOP	move.l	d1,d2
	subq.w	#1,d0
MTLOOP2	move.b	(a1)+,d1
	cmp.b	d2,d1
	bgt.s	MTLOOP
	dbf	d0,MTLOOP2
	addq.b	#1,d2
	lea	MT_SAMPLESTARTS(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	addi.l	#$43C,d2
	add.l	a0,d2
	movea.l	d2,a2
	moveq	#$1E,d0
MTLOOP3	clr.l	(a2)
	move.l	a2,(a1)+
	moveq	#0,d1
	move.w	$2A(a0),d1
	asl.l	#1,d1
	adda.l	d1,a2
	lea	$1E(a0),a0
	dbf	d0,MTLOOP3
	move.l	a2,END_OF_SAMPLE
	ori.b	#2,SHFILTER
	move.b	#6,MT_SPEED
	clr.b	MT_COUNTER
	clr.b	MT_SONGPOS
	clr.w	MT_PATTERNPOS
MT_END	move.w	#0,DMACTRL
	rts
MT_MUSIC
	addq.b	#1,MT_COUNTER
	move.b	MT_COUNTER(pc),d0
	cmp.b	MT_SPEED(pc),d0
	bcs.s	MT_NONEWNOTE
	clr.b	MT_COUNTER
	tst.b	MT_PATTDELTIME2
	beq.s	MT_GETNEWNOTE
	bsr.s	MT_NONEWALLCHANNELS
	bra	WZ_NCH4
MT_NONEWNOTE
	bsr.s	MT_NONEWALLCHANNELS
	bra	MT_NONEWPOSYET
MT_NONEWALLCHANNELS
	lea	CH1T(pc),a5
	lea	MT_CHAN1(pc),a6
	bsr	MT_CHECKEFX
	lea	CH2T(pc),a5
	lea	MT_CHAN2(pc),a6
	bsr	MT_CHECKEFX
	lea	CH3T(pc),a5
	lea	MT_CHAN3(pc),a6
	bsr	MT_CHECKEFX
	lea	CH4T(pc),a5
	lea	MT_CHAN4(pc),a6
	bra	MT_CHECKEFX
MT_GETNEWNOTE
	movea.l	MT_SONGDATAPOS(pc),a0
	lea	12(a0),a3
	lea	952(a0),a2
	lea	1084(a0),a0
	moveq	#0,d0
	moveq	#0,d1
	move.b	MT_SONGPOS(pc),d0
	move.b	0(a2,d0.w),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.w	MT_PATTERNPOS(pc),d1
	clr.w	MT_DMACONTEMP
	lea	CH1T(pc),a5
	lea	MT_CHAN1(pc),a6
	bsr.s	MT_PLAYVOICE
	lea	CH2T(pc),a5
	lea	MT_CHAN2(pc),a6
	bsr.s	MT_PLAYVOICE
	lea	CH3T(pc),a5
	lea	MT_CHAN3(pc),a6
	bsr.s	MT_PLAYVOICE
	lea	CH4T(pc),a5
	lea	MT_CHAN4(pc),a6
	bsr.s	MT_PLAYVOICE
	bra	MT_SETDMA
MT_PLAYVOICE
	tst.l	(a6)
	bne.s	MT_PLVSKIP
	bsr	MT_PERNOP
MT_PLVSKIP
	move.l	0(a0,d1.l),(a6)
	addq.l	#4,d1
	moveq	#0,d2
	move.b	2(a6),d2
	andi.b	#$F0,d2
	lsr.b	#4,d2
	move.b	(a6),d0
	andi.b	#$F0,d0
	or.b	d0,d2
	tst.b	d2
	beq	MT_SETREGS
	moveq	#0,d3
	lea	MT_SAMPLESTARTS(pc),a1
	move.w	d2,d4
	subq.l	#1,d2
	asl.l	#2,d2
	mulu.w	#$1E,d4
	move.l	0(a1,d2.l),4(a6)
	move.w	0(a3,d4.l),8(a6)
	move.w	0(a3,d4.l),$28(a6)
	move.b	2(a3,d4.l),$12(a6)
	move.b	3(a3,d4.l),$13(a6)
	move.w	4(a3,d4.l),d3
	tst.w	d3
	beq.s	MT_NOLOOP
	move.l	4(a6),d2
	asl.w	#1,d3
	add.l	d3,d2
	move.l	d2,$A(a6)
	move.l	d2,$24(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)
	moveq	#0,d0
	move.b	$13(a6),d0
	move.w	d0,8(a5)
	bra.s	MT_SETREGS
MT_NOLOOP
	move.l	4(a6),d2
	add.l	d3,d2
	move.l	d2,$A(a6)
	move.l	d2,$24(a6)
	move.w	6(a3,d4.l),$E(a6)
	moveq	#0,d0
	move.b	$13(a6),d0
	move.w	d0,8(a5)
MT_SETREGS
	move.w	(a6),d0
	andi.w	#$FFF,d0
	beq	MT_CHECKMOREEFX
	move.w	2(a6),d0
	andi.w	#$FF0,d0
	cmp.w	#$E50,d0
	beq.s	MT_DOSETFINETUNE
	move.b	2(a6),d0
	andi.b	#$F,d0
	cmp.b	#3,d0
	beq.s	MT_CHKTONEPORTA
	cmp.b	#5,d0
	beq.s	MT_CHKTONEPORTA
	cmp.b	#9,d0
	bne.s	MT_SETPERIOD
	bsr	MT_CHECKMOREEFX
	bra.s	MT_SETPERIOD
MT_DOSETFINETUNE
	bsr	MT_SETFINETUNE
	bra.s	MT_SETPERIOD
MT_CHKTONEPORTA
	bsr	MT_SETTONEPORTA
	bra	MT_CHECKMOREEFX
MT_SETPERIOD
	movem.l	d0-d1/a0-a1,-(a7)
	move.w	(a6),d1
	andi.w	#$FFF,d1
	lea	MT_PERIODTABLE(pc),a1
	moveq	#0,d0
	moveq	#$24,d7
MT_FTULO
	cmp.w	0(a1,d0.w),d1
	bcc.s	MT_FTUFO
	addq.l	#2,d0
	dbf	d7,MT_FTULO
MT_FTUFO
	moveq	#0,d1
	move.b	$12(a6),d1
	mulu.w	#$48,d1
	adda.l	d1,a1
	move.w	0(a1,d0.w),$10(a6)
	movem.l	(a7)+,d0-d1/a0-a1
	move.w	2(a6),d0
	andi.w	#$FF0,d0
	cmp.w	#$ED0,d0
	beq	MT_CHECKMOREEFX
	move.w	$14(a6),d0
	or.w	d0,DMACTRL
	btst	#2,$1E(a6)
	bne.s	MT_VIBNO
	clr.b	$1B(a6)
MT_VIBNO
	btst	#6,$1E(a6)
	bne.s	MT_TRENO
	clr.b	$1D(a6)
MT_TRENO
	move.l	4(a6),(a5)
	move.w	8(a6),4(a5)
	move.w	$10(a6),d0
	move.w	d0,6(a5)
	move.w	$14(a6),d0
	or.w	d0,MT_DMACONTEMP
	bra	MT_CHECKMOREEFX
MT_SETDMA
	move.w	MT_DMACONTEMP(pc),d0
	btst	#0,d0
	beq.s	WZ_NCH1
	moveq	#0,d1
	moveq	#0,d2
	move.w	AUD1LEN(pc),d1
	move.w	MT_CHAN1+14(pc),d2
	add.l	d2,d1
	move.l	CH1T(pc),CH1S
	add.l	CH1T(pc),d1
	move.l	d1,GRF1LEN
	move.l	d2,GRF1RPT
	move.w	#$FFFF,GRF1FLAG
WZ_NCH1	btst	#1,d0
	beq.s	WZ_NCH2
	moveq	#0,d1
	moveq	#0,d2
	move.w	AUD2LEN(pc),d1
	move.w	MT_CHAN2+14(pc),d2
	add.l	d2,d1
	move.l	CH2T(pc),CH2S
	add.l	CH2T(pc),d1
	move.l	d1,GRF2LEN
	move.l	d2,GRF2RPT
	move.w	#$FFFF,GRF2FLAG
WZ_NCH2	btst	#2,d0
	beq.s	WZ_NCH3
	moveq	#0,d1
	moveq	#0,d2
	move.w	AUD3LEN(pc),d1
	move.w	MT_CHAN3+14(pc),d2
	add.l	d2,d1
	move.l	CH3T(pc),CH3S
	add.l	CH3T(pc),d1
	move.l	d1,GRF3LEN
	move.l	d2,GRF3RPT
	move.w	#$FFFF,GRF3FLAG
WZ_NCH3	btst	#3,d0
	beq.s	WZ_NCH4
	moveq	#0,d1
	moveq	#0,d2
	move.w	AUD4LEN(pc),d1
	move.w	MT_CHAN4+14(pc),d2
	add.l	d2,d1
	move.l	CH4T(pc),CH4S
	add.l	CH4T(pc),d1
	move.l	d1,GRF4LEN
	move.l	d2,GRF4RPT
	move.w	#$FFFF,GRF4FLAG
WZ_NCH4	addi.w	#$10,MT_PATTERNPOS
	move.b	MT_PATTDELTIME,d0
	beq.s	MT_DSKC
	move.b	d0,MT_PATTDELTIME2
	clr.b	MT_PATTDELTIME
MT_DSKC	tst.b	MT_PATTDELTIME2
	beq.s	MT_DSKA
	subq.b	#1,MT_PATTDELTIME2
	beq.s	MT_DSKA
	subi.w	#$10,MT_PATTERNPOS
MT_DSKA	tst.b	MT_PBREAKFLAG
	beq.s	MT_NNPYSK
	sf	MT_PBREAKFLAG
	moveq	#0,d0
	move.b	MT_PBREAKPOS(pc),d0
	clr.b	MT_PBREAKPOS
	lsl.w	#4,d0
	move.w	d0,MT_PATTERNPOS
MT_NNPYSK
	cmpi.w	#$400,MT_PATTERNPOS
	bcs.s	MT_NONEWPOSYET
MT_NEXTPOSTITION
	moveq	#0,d0
	move.b	MT_PBREAKPOS(pc),d0
	lsl.w	#4,d0
	move.w	d0,MT_PATTERNPOS
	clr.b	MT_PBREAKPOS
	clr.b	MT_POSJUMPFLAG
	
	addq.b	#1,MT_SONGPOS
	andi.b	#$7F,MT_SONGPOS
	move.b	MT_SONGPOS(pc),d1
	movea.l	MT_SONGDATAPOS(pc),a0
	cmp.b	950(a0),d1
	bcs.s	MT_NONEWPOSYET
	clr.b	MT_SONGPOS
MT_NONEWPOSYET
	tst.b	MT_POSJUMPFLAG
	bne.s	MT_NEXTPOSTITION
	rts
MT_CHECKEFX
	bsr	MT_UPDATEFUNK
	move.w	2(a6),d0
	andi.w	#$FFF,d0
	beq.s	MT_PERNOP
	move.b	2(a6),d0
	andi.b	#$F,d0
	beq.s	MT_ARPEGGIO
	cmp.b	#1,d0
	beq	MT_PORTAUP
	cmp.b	#2,d0
	beq	MT_PORTADOWN
	cmp.b	#3,d0
	beq	MT_TONEPORTOMENTO
	cmp.b	#4,d0
	beq	MT_VIBRATO
	cmp.b	#5,d0
	beq	MT_TONEPLUSVOLSLIDE
	cmp.b	#6,d0
	beq	MT_VIBRATOPLUSVOLSLIDE
	cmp.b	#$E,d0
	beq	MT_E_COMMANDS
SETBACK	move.w	$10(a6),6(a5)
	cmp.b	#7,d0
	beq	MT_TREMOLO
	cmp.b	#$A,d0
	beq	MT_VOLUMESLIDE
MT_RETUR
	rts
MT_PERNOP
MT_NOEFX1
	move.w	$10(a6),6(a5)
MT_RETURN2
	rts
MT_ARPEGGIO
	moveq	#0,d0
	move.b	MT_COUNTER(pc),d0
	divs.w	#3,d0
	swap	d0
	cmp.w	#0,d0
	beq.s	MT_ARPEGGIO2
	cmp.w	#2,d0
	beq.s	MT_ARPEGGIO1
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	bra.s	MT_ARPEGGIO3
MT_ARPEGGIO1
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	bra.s	MT_ARPEGGIO3
MT_ARPEGGIO2
	move.w	$10(a6),d2
	bra.s	MT_ARPEGGIO4
MT_ARPEGGIO3
	add	D0,d0
	moveq	#0,d1
	move.b	$12(a6),d1
	mulu.w	#$48,d1
	lea	MT_PERIODTABLE(pc),a0
	adda.l	d1,a0
	moveq	#0,d1
	move.w	$10(a6),d1
	moveq	#$24,d7
.MT_ARPLOOP
	move.w	0(a0,d0.w),d2
	cmp.w	(a0),d1
	bcc.s	MT_ARPEGGIO4
	addq.l	#2,a0
	dbf	d7,.MT_ARPLOOP
	rts
MT_ARPEGGIO4
	move.w	d2,6(a5)
	rts
MT_FINEPORTAUP
	tst.b	MT_COUNTER
	bne.s	MT_RTS2
	move.b	#$F,MT_LOWMASK
MT_PORTAUP
	moveq	#0,d0
	move.b	3(a6),d0
	and.b	MT_LOWMASK(pc),d0
	move.b	#$FF,MT_LOWMASK
	sub.w	d0,$10(a6)
	move.w	$10(a6),d0
	andi.w	#$FFF,d0
	cmp.w	#113,d0
	bpl.s	MT_PORTAUSKIP
	andi.w	#$F000,$10(a6)
	ori.w	#$71,$10(a6)
MT_PORTAUSKIP
	move.w	$10(a6),d0
	andi.w	#$FFF,d0
	move.w	d0,6(a5)
MT_RTS2	rts
MT_FINEPORTADOWN
	tst.b	MT_COUNTER
	bne	MT_RTS2
	move.b	#$F,MT_LOWMASK
MT_PORTADOWN
	clr.w	d0
	move.b	3(a6),d0
	and.b	MT_LOWMASK(pc),d0
	move.b	#$FF,MT_LOWMASK
	add.w	d0,$10(a6)
	move.w	$10(a6),d0
	andi.w	#$FFF,d0
	cmp.w	#856,d0
	bmi.s	MT_PORTASKIP
	andi.w	#$F000,$10(a6)
	ori.w	#856,$10(a6)
MT_PORTASKIP
	move.w	$10(a6),d0
	andi.w	#$FFF,d0
	move.w	d0,6(a5)
	rts
MT_SETTONEPORTA
	move.l	a0,-(a7)
	move.w	(a6),d2
	andi.w	#$FFF,d2
	moveq	#0,d0
	move.b	$12(a6),d0
	mulu.w	#$48,d0
	lea	MT_PERIODTABLE(pc),a0
	adda.l	d0,a0
	moveq	#0,d0
MT_STPLO
	cmp.w	0(a0,d0.w),d2
	bcc.s	MT_STPFO
	addq.w	#2,d0
	cmp.w	#$48,d0
	bcs.s	MT_STPLO
	moveq	#$46,d0
MT_STPFO
	move.b	$12(a6),d2
	andi.b	#8,d2
	beq.s	MT_STPGOSS
	tst.w	d0
	beq.s	MT_STPGOSS
	subq.w	#2,d0
MT_STPGOSS
	move.w	(a0,d0.w),d2
	movea.l	(a7)+,a0
	move.w	d2,$18(a6)
	move.w	$10(a6),d0
	clr.b	$16(a6)
	cmp.w	d0,d2
	beq.s	MT_CLEARTONEPORTA
	bge.s	.MT_ET2
	move.b	#1,$16(a6)
.MT_ET2	rts
MT_CLEARTONEPORTA
	clr.w	$18(a6)
MT_ET2	rts
MT_TONEPORTOMENTO
	move.b	3(a6),d0
	beq.s	MT_TONEPORTNOCHANGE
	move.b	d0,$17(a6)
	clr.b	3(a6)
MT_TONEPORTNOCHANGE
	tst.w	$18(a6)
	beq.S	MT_ET2
	moveq	#0,d0
	move.b	$17(a6),d0
	tst.b	$16(a6)
	bne.s	MT_TONEPORTAUP
MT_TONEPORTADOWN
	add.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	bgt.s	MT_TONEPORTASETPER
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
	bra.s	MT_TONEPORTASETPER
MT_TONEPORTAUP
	sub.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	blt.s	MT_TONEPORTASETPER
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
MT_TONEPORTASETPER
	move.w	$10(a6),d2
	move.b	$1F(a6),d0
	andi.b	#$F,d0
	beq.s	MT_GLISSKIP
	moveq	#0,d0
	move.b	$12(a6),d0
	mulu.w	#$48,d0
	lea	MT_PERIODTABLE(pc),a0
	adda.w	d0,a0
	moveq	#0,d0
MT_GLISSLOOP
	cmp.w	0(a0,d0.w),d2
	bhs.s	MT_GLISSFOUND
	addq.w	#2,d0
	cmp.w	#36*2,d0
	bcs.s	MT_GLISSLOOP
	moveq	#35*2,d0
MT_GLISSFOUND
	move.w	(a0,d0.w),d2
MT_GLISSKIP
	move.w	d2,6(a5)
	rts
MT_VIBRATO
	move.b	3(a6),d0
	beq.s	MT_VIBRATO2
	move.b	$1A(a6),d2
	andi.b	#$F,d0
	beq.s	MT_VIBSKIP
	andi.b	#$F0,d2
	or.b	d0,d2
MT_VIBSKIP
	move.b	3(a6),d0
	andi.b	#$F0,d0
	beq.s	MT_VIBSKIP2
	andi.b	#$F,d2
	or.b	d0,d2
MT_VIBSKIP2
	move.b	d2,$1A(a6)
MT_VIBRATO2
	move.b	$1B(a6),d0
	lea	MT_VIBRATOTABLE(pc),a4
	lsr.w	#2,d0
	andi.w	#$1F,d0
	moveq	#0,d2
	move.b	$1E(a6),d2
	andi.b	#3,d2
	beq.s	MT_VIB_SINE
	lsl.b	#3,d0
	cmp.b	#1,d2
	beq.s	MT_VIB_RAMPDOWN
	move.b	#$FF,d2
	bra.s	MT_VIB_SET
MT_VIB_RAMPDOWN
	tst.b	$1B(a6)
	bpl.s	MT_VIB_RAMPDOWN2
	move.b	#$FF,d2
	sub.b	d0,d2
	bra.s	MT_VIB_SET
MT_VIB_RAMPDOWN2
	move.b	d0,d2
	bra.s	MT_VIB_SET
MT_VIB_SINE
	move.b	0(a4,d0.w),d2
MT_VIB_SET
	move.b	$1A(a6),d0
	andi.w	#$F,d0
	mulu.w	d0,d2
	lsr.w	#7,d2
	move.w	$10(a6),d0
	tst.b	$1B(a6)
	bmi.s	MT_VIBRATONEG
	add.w	d2,d0
	bra.s	MT_VIBRATO3
MT_VIBRATONEG
	sub.w	d2,d0
MT_VIBRATO3
	move.w	d0,6(a5)
	move.b	$1A(a6),d0
	lsr.w	#2,d0
	andi.w	#$3C,d0
	add.b	d0,$1B(a6)
	rts
MT_TONEPLUSVOLSLIDE
	bsr	MT_TONEPORTNOCHANGE
	bra	MT_VOLUMESLIDE
MT_VIBRATOPLUSVOLSLIDE
	bsr.s	MT_VIBRATO2
	bra	MT_VOLUMESLIDE
MT_TREMOLO
	move.b	3(a6),d0
	beq.s	MT_TREMOLO2
	move.b	$1C(a6),d2
	andi.b	#$F,d0
	beq.s	MT_TRESKIP2
	andi.b	#$F0,d2
	or.b	d0,d2
MT_TRESKIP2
	move.b	3(a6),d0
	andi.b	#$F0,d0
	beq.s	MT_TRESKIP3
	andi.b	#$F,d2
	or.b	d0,d2
MT_TRESKIP3
	move.b	d2,$1C(a6)
MT_TREMOLO2
	move.b	$1D(a6),d0
	lea	MT_VIBRATOTABLE(pc),a4
	lsr.w	#2,d0
	andi.w	#$1F,d0
	moveq	#0,d2
	move.b	$1E(a6),d2
	lsr.b	#4,d2
	andi.b	#3,d2
	beq.s	MT_TRE_SINE
	lsl.b	#3,d0
	cmp.b	#1,d2
	beq.s	MT_TRE_RAMPDOWN
	move.b	#$FF,d2
	bra.s	MT_TRE_SET
MT_TRE_RAMPDOWN
	tst.b	$1B(a6)
	bpl.s	MT_TRE_RAMPDOWN2
	move.b	#$FF,d2
	sub.b	d0,d2
	bra.s	MT_TRE_SET
MT_TRE_RAMPDOWN2
	move.b	d0,d2
	bra.s	MT_TRE_SET
MT_TRE_SINE
	move.b	0(a4,d0.w),d2
MT_TRE_SET
	move.b	$1C(a6),d0
	andi.w	#$F,d0
	mulu.w	d0,d2
	lsr.w	#6,d2
	moveq	#0,d0
	move.b	$13(a6),d0
	tst.b	$1D(a6)
	bpl.s	MT_TREMOLOPLUS
	neg	d2
MT_TREMOLOPLUS
	add.w	d2,d0
MT_TREMOLO3
	bpl.s	MT_TREMOLOSKIP
	clr.w	d0
MT_TREMOLOSKIP
	cmp.w	#$40,d0
	bls.s	MT_TREMOLOOK
	move.w	#$40,d0
MT_TREMOLOOK
	move.w	d0,8(a5)
	move.b	$1C(a6),d0
	lsr.w	#2,d0
	andi.w	#$3C,d0
	add.b	d0,$1D(a6)
	rts
MT_SAMPLEOFFSET
	moveq	#0,d0
	move.b	3(a6),d0
	beq.s	MT_SONONEW
	move.b	d0,$20(a6)
MT_SONONEW
	move.b	$20(a6),d0
	lsl.w	#7,d0
	cmp.w	8(a6),d0
	bge.s	MT_SOFSKIP
	sub.w	d0,8(a6)
	lsl.w	#1,d0
	add.l	d0,4(a6)
	rts
MT_SOFSKIP
	move.w	#1,8(a6)
	rts
MT_VOLUMESLIDE
	moveq	#0,d0
	move.b	3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	MT_VOLSLIDEDOWN
MT_VOLSLIDEUP
	add.b	d0,$13(a6)
	cmpi.b	#$40,$13(a6)
	bmi.s	MT_VSUSKIP
	move.b	#$40,$13(a6)
MT_VSUSKIP
	move.b	$13(a6),d0
	move.w	d0,8(a5)
	rts
MT_VOLSLIDEDOWN
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
MT_VOLSLIDEDOWN2
	sub.b	d0,$13(a6)
	bpl.s	MT_VSDSKIP
	clr.b	$13(a6)
MT_VSDSKIP
	move.b	$13(a6),d0
	move.w	d0,8(a5)
	rts
MT_POSITIONJUMP
	move.b	3(a6),d0
	subq.b	#1,d0
	move.b	d0,MT_SONGPOS
MT_PJ2	clr.b	MT_PBREAKPOS
	st	MT_POSJUMPFLAG
	rts
MT_VOLUMECHANGE
	moveq	#0,d0
	move.b	3(a6),d0
	cmp.b	#$40,d0
	bls.s	MT_VOLUMEOK
	moveq	#$40,d0
MT_VOLUMEOK
	move.b	d0,$13(a6)
	move.w	d0,8(a5)
	rts
MT_PATTERNBREAK
	moveq	#0,d0
	move.b	3(a6),d0
	move.l	d0,d2
	lsr.b	#4,d0
	mulu.w	#$A,d0
	andi.b	#$F,d2
	add.b	d2,d0
	cmp.b	#$3F,d0
	bhi.s	MT_PJ2
	move.b	d0,MT_PBREAKPOS
	st	MT_POSJUMPFLAG
	rts
MT_SETSPEED
	move.b	3(a6),d0
	beq	.MT_RTS
	clr.b	MT_COUNTER
	move.b	d0,MT_SPEED
.MT_RTS	rts
MT_CHECKMOREEFX
	bsr	MT_UPDATEFUNK
	move.b	2(a6),d0
	andi.b	#$F,d0
	cmp.b	#9,d0
	beq	MT_SAMPLEOFFSET
	cmp.b	#$B,d0
	beq	MT_POSITIONJUMP
	cmp.b	#$D,d0
	beq.s	MT_PATTERNBREAK
	cmp.b	#$E,d0
	beq.s	MT_E_COMMANDS
	cmp.b	#$F,d0
	beq.s	MT_SETSPEED
	cmp.b	#$C,d0
	beq	MT_VOLUMECHANGE
	bra	MT_PERNOP
MT_E_COMMANDS
	move.b	3(a6),d0
	andi.b	#$F0,d0
	lsr.b	#4,d0
	beq.s	MT_FILTERONOFF
	cmp.b	#1,d0
	beq	MT_FINEPORTAUP
	cmp.b	#2,d0
	beq	MT_FINEPORTADOWN
	cmp.b	#3,d0
	beq.s	MT_SETGLISSCONTROL
	cmp.b	#4,d0
	beq	MT_SETVIBRATOCONTROL
	cmp.b	#5,d0
	beq	MT_SETFINETUNE
	cmp.b	#6,d0
	beq	MT_JUMPLOOP
	cmp.b	#7,d0
	beq	MT_SETTREMOLOCONTROL
	cmp.b	#9,d0
	beq	MT_RETRIGNOTE
	cmp.b	#$A,d0
	beq	MT_VOLUMEFINEUP
	cmp.b	#$B,d0
	beq	MT_VOLUMEFINEDOWN
	cmp.b	#$C,d0
	beq	MT_NOTECUT
	cmp.b	#$D,d0
	beq	MT_NOTEDELAY
	cmp.b	#$E,d0
	beq	MT_PATTERNDELAY
	cmp.b	#$F,d0
	beq	MT_FUNKIT
	rts
MT_FILTERONOFF
	move.b	3(a6),d0
	andi.b	#1,d0
	asl.b	#1,d0
	andi.b	#$FD,SHFILTER
	or.b	d0,SHFILTER
MT_E_SK	rts
MT_SETGLISSCONTROL
	move.b	3(a6),d0
	andi.b	#$F,d0
	andi.b	#$F0,$1F(a6)
	or.b	d0,$1F(a6)
	rts
MT_SETVIBRATOCONTROL
	move.b	3(a6),d0
	andi.b	#$F,d0
	andi.b	#$F0,$1E(a6)
	or.b	d0,$1E(a6)
	rts
MT_SETFINETUNE
	move.b	3(a6),d0
	andi.b	#$F,d0
	move.b	d0,$12(a6)
	rts
MT_JUMPLOOP
	tst.b	MT_COUNTER
	bne	MT_RETURN2
	move.b	3(a6),d0
	andi.b	#$F,d0
	beq.s	MT_SETLOOP
	tst.b	$22(a6)
	beq.s	MT_JUMPCUT
	subq.b	#1,$22(a6)
	beq	MT_ERW2
MT_JMPLOOP
	move.b	$21(a6),MT_PBREAKPOS
	st	MT_PBREAKPOS
MT_ERW2	rts
MT_JUMPCUT
	move.b	d0,$22(a6)
	bra.s	MT_JMPLOOP
MT_SETLOOP
	move.w	MT_PATTERNPOS(pc),d0
	lsr.w	#4,d0
	move.b	d0,$21(a6)
	rts
MT_SETTREMOLOCONTROL
	move.b	3(a6),d0
	andi.b	#$F,d0
	lsl.b	#4,d0
	andi.b	#$F,$1E(a6)
	or.b	d0,$1E(a6)
	rts
MT_RETRIGNOTE
	move.l	d1,-(a7)
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	beq.s	MT_RTNEND
	moveq	#0,d1
	move.b	MT_COUNTER(pc),d1
	bne.s	MT_RTNSKP
	move.w	(a6),d1
	andi.w	#$FFF,d1
	bne.s	MT_RTNEND
	moveq	#0,d1
	move.b	MT_COUNTER(pc),d1
MT_RTNSKP
	divu.w	d0,d1
	swap	d1
	tst.w	d1
	bne.s	MT_RTNEND
MT_DORETRIG
	move.w	$14(a6),DMACTRL
	move.l	4(a6),(a5)
	move.w	8(a6),4(a5)
	move.w	$14(a6),d0
	bset	#$F,d0
	move.w	d0,DMACTRL
	move.l	$A(a6),(a5)
	move.l	$E(a6),4(a5)
MT_RTNEND	move.l	(a7)+,d1
	rts
MT_VOLUMEFINEUP
	tst.b	MT_COUNTER
	bne.s	MT_WER2
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	bra	MT_VOLSLIDEUP
MT_VOLUMEFINEDOWN
	tst.b	MT_COUNTER
	bne.s	MT_WER2
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	bra	MT_VOLSLIDEDOWN2
MT_NOTECUT
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	cmp.b	MT_COUNTER(pc),d0
	bne	MT_REQ2
	clr.b	$13(a6)
	move.w	#0,8(a5)
MT_WER2	rts
MT_NOTEDELAY
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	cmp.b	MT_COUNTER,d0
	bne	MT_REQ2
	move.w	(a6),d0
	beq	MT_REQ2
	move.l	d1,-(a7)
	bra	MT_DORETRIG
MT_PATTERNDELAY
	tst.b	MT_COUNTER
	bne	MT_RETURN2
	moveq	#0,d0
	move.b	3(a6),d0
	andi.b	#$F,d0
	tst.b	MT_PATTDELTIME2
	bne	MT_RETURN2
	addq.b	#1,d0
	move.b	d0,MT_PATTDELTIME
MT_REQ2	rts
MT_FUNKIT
	tst.b	MT_COUNTER
	bne.s	MT_REQ2
	move.b	3(a6),d0
	andi.b	#$F,d0
	lsl.b	#4,d0
	andi.b	#$F,$1F(a6)
	or.b	d0,$1F(a6)
	tst.b	d0
	beq.s	MT_REQ2
MT_UPDATEFUNK
	movem.l	d1/a0,-(a7)
	moveq	#0,d0
	move.b	$1F(a6),d0
	lsr.b	#4,d0
	beq.s	MT_FUNKEND
	lea	MT_FUNKTABLE(pc),a0
	move.b	0(a0,d0.w),d0
	add.b	d0,$23(a6)
	btst	#7,$23(a6)
	beq.s	MT_FUNKEND
	clr.b	$23(a6)
	move.l	$A(a6),d0
	moveq	#0,d1
	move.w	$E(a6),d1
	add.l	d1,d0
	add.l	d1,d0
	movea.l	$24(a6),a0
	addq.l	#1,a0
	cmpa.l	d0,a0
	blo.s	MT_FUNKOK
	movea.l	$A(a6),a0
MT_FUNKOK
	move.l	a0,$24(a6)
	moveq	#-1,d0
	sub.b	(a0),d0
	move.b	d0,(a0)
MT_FUNKEND
	movem.l	(a7)+,d1/a0
	rts
MT_FUNKTABLE
	DC.B	0,5,6,7,8,$A,$B,$D
	DC.B	$10,$13,$16,$1A,$20,$2B,$40,$80
MT_VIBRATOTABLE
	DC.B	0,$18,$31,$4A,$61,$78,$8D,$A1
	DC.B	$B4,$C5,$D4,$E0,$EB,$F4,$FA,$FD
	DC.B	$FF,$FD,$FA,$F4,$EB,$E0,$D4,$C5
	DC.B	$B4,$A1,$8D,$78,$61,$4A,$31,$18
MT_PERIODTABLE
	DC.B	3,$58,3,$28,2,$FA,2,$D0
	DC.B	2,$A6,2,$80,2,$5C,2,$3A
	DC.B	2,$1A,1,$FC,1,$E0,1,$C5
	DC.B	1,$AC,1,$94,1,$7D,1,$68
	DC.B	1,$53,1,$40,1,$2E,1,$1D
	DC.B	1,$D,0,$FE,0,$F0,0,$E2
	DC.B	0,$D6,0,$CA,0,$BE,0,$B4
	DC.B	0,$AA,0,$A0,0,$97,0,$8F
	DC.B	0,$87,0,$7F,0,$78,0,$71
	DC.B	3,$52,3,$22,2,$F5,2,$CB
	DC.B	2,$A2,2,$7D,2,$59,2,$37
	DC.B	2,$17,1,$F9,1,$DD,1,$C2
	DC.B	1,$A9,1,$91,1,$7B,1,$65
	DC.B	1,$51,1,$3E,1,$2C,1,$1C
	DC.B	1,$C,0,$FD,0,$EF,0,$E1
	DC.B	0,$D5,0,$C9,0,$BD,0,$B3
	DC.B	0,$A9,0,$9F,0,$96,0,$8E
	DC.B	0,$86,0,$7E,0,$77,0,$71
	DC.B	3,$4C,3,$1C,2,$F0,2,$C5
	DC.B	2,$9E,2,$78,2,$55,2,$33
	DC.B	2,$14,1,$F6,1,$DA,1,$BF
	DC.B	1,$A6,1,$8E,1,$78,1,$63
	DC.B	1,$4F,1,$3C,1,$2A,1,$1A
	DC.B	1,$A,0,$FB,0,$ED,0,$E0
	DC.B	0,$D3,0,$C7,0,$BC,0,$B1
	DC.B	0,$A7,0,$9E,0,$95,0,$8D
	DC.B	0,$85,0,$7D,0,$76,0,$70
	DC.B	3,$46,3,$17,2,$EA,2,$C0
	DC.B	2,$99,2,$74,2,$50,2,$2F
	DC.B	2,$10,1,$F2,1,$D6,1,$BC
	DC.B	1,$A3,1,$8B,1,$75,1,$60
	DC.B	1,$4C,1,$3A,1,$28,1,$18
	DC.B	1,8,0,$F9,0,$EB,0,$DE
	DC.B	0,$D1,0,$C6,0,$BB,0,$B0
	DC.B	0,$A6,0,$9D,0,$94,0,$8C
	DC.B	0,$84,0,$7D,0,$76,0,$6F
	DC.B	3,$40,3,$11,2,$E5,2,$BB
	DC.B	2,$94,2,$6F,2,$4C,2,$2B
	DC.B	2,$C,1,$EF,1,$D3,1,$B9
	DC.B	1,$A0,1,$88,1,$72,1,$5E
	DC.B	1,$4A,1,$38,1,$26,1,$16
	DC.B	1,6,0,$F7,0,$E9,0,$DC
	DC.B	0,$D0,0,$C4,0,$B9,0,$AF
	DC.B	0,$A5,0,$9C,0,$93,0,$8B
	DC.B	0,$83,0,$7C,0,$75,0,$6E
	DC.B	3,$3A,3,$B,2,$E0,2,$B6
	DC.B	2,$8F,2,$6B,2,$48,2,$27
	DC.B	2,8,1,$EB,1,$CF,1,$B5
	DC.B	1,$9D,1,$86,1,$70,1,$5B
	DC.B	1,$48,1,$35,1,$24,1,$14
	DC.B	1,4,0,$F5,0,$E8,0,$DB
	DC.B	0,$CE,0,$C3,0,$B8,0,$AE
	DC.B	0,$A4,0,$9B,0,$92,0,$8A
	DC.B	0,$82,0,$7B,0,$74,0,$6D
	DC.B	3,$34,3,6,2,$DA,2,$B1
	DC.B	2,$8B,2,$66,2,$44,2,$23
	DC.B	2,4,1,$E7,1,$CC,1,$B2
	DC.B	1,$9A,1,$83,1,$6D,1,$59
	DC.B	1,$45,1,$33,1,$22,1,$12
	DC.B	1,2,0,$F4,0,$E6,0,$D9
	DC.B	0,$CD,0,$C1,0,$B7,0,$AC
	DC.B	0,$A3,0,$9A,0,$91,0,$89
	DC.B	0,$81,0,$7A,0,$73,0,$6D
	DC.B	3,$2E,3,0,2,$D5,2,$AC
	DC.B	2,$86,2,$62,2,$3F,2,$1F
	DC.B	2,1,1,$E4,1,$C9,1,$AF
	DC.B	1,$97,1,$80,1,$6B,1,$56
	DC.B	1,$43,1,$31,1,$20,1,$10
	DC.B	1,0,0,$F2,0,$E4,0,$D8
	DC.B	0,$CC,0,$C0,0,$B5,0,$AB
	DC.B	0,$A1,0,$98,0,$90,0,$88
	DC.B	0,$80,0,$79,0,$72,0,$6C
	DC.B	3,$8B,3,$58,3,$28,2,$FA
	DC.B	2,$D0,2,$A6,2,$80,2,$5C
	DC.B	2,$3A,2,$1A,1,$FC,1,$E0
	DC.B	1,$C5,1,$AC,1,$94,1,$7D
	DC.B	1,$68,1,$53,1,$40,1,$2E
	DC.B	1,$1D,1,$D,0,$FE,0,$F0
	DC.B	0,$E2,0,$D6,0,$CA,0,$BE
	DC.B	0,$B4,0,$AA,0,$A0,0,$97
	DC.B	0,$8F,0,$87,0,$7F,0,$78
	DC.B	3,$84,3,$52,3,$22,2,$F5
	DC.B	2,$CB,2,$A3,2,$7C,2,$59
	DC.B	2,$37,2,$17,1,$F9,1,$DD
	DC.B	1,$C2,1,$A9,1,$91,1,$7B
	DC.B	1,$65,1,$51,1,$3E,1,$2C
	DC.B	1,$1C,1,$C,0,$FD,0,$EE
	DC.B	0,$E1,0,$D4,0,$C8,0,$BD
	DC.B	0,$B3,0,$A9,0,$9F,0,$96
	DC.B	0,$8E,0,$86,0,$7E,0,$77
	DC.B	3,$7E,3,$4C,3,$1C,2,$F0
	DC.B	2,$C5,2,$9E,2,$78,2,$55
	DC.B	2,$33,2,$14,1,$F6,1,$DA
	DC.B	1,$BF,1,$A6,1,$8E,1,$78
	DC.B	1,$63,1,$4F,1,$3C,1,$2A
	DC.B	1,$1A,1,$A,0,$FB,0,$ED
	DC.B	0,$DF,0,$D3,0,$C7,0,$BC
	DC.B	0,$B1,0,$A7,0,$9E,0,$95
	DC.B	0,$8D,0,$85,0,$7D,0,$76
	DC.B	3,$77,3,$46,3,$17,2,$EA
	DC.B	2,$C0,2,$99,2,$74,2,$50
	DC.B	2,$2F,2,$10,1,$F2,1,$D6
	DC.B	1,$BC,1,$A3,1,$8B,1,$75
	DC.B	1,$60,1,$4C,1,$3A,1,$28
	DC.B	1,$18,1,8,0,$F9,0,$EB
	DC.B	0,$DE,0,$D1,0,$C6,0,$BB
	DC.B	0,$B0,0,$A6,0,$9D,0,$94
	DC.B	0,$8C,0,$84,0,$7D,0,$76
	DC.B	3,$71,3,$40,3,$11,2,$E5
	DC.B	2,$BB,2,$94,2,$6F,2,$4C
	DC.B	2,$2B,2,$C,1,$EE,1,$D3
	DC.B	1,$B9,1,$A0,1,$88,1,$72
	DC.B	1,$5E,1,$4A,1,$38,1,$26
	DC.B	1,$16,1,6,0,$F7,0,$E9
	DC.B	0,$DC,0,$D0,0,$C4,0,$B9
	DC.B	0,$AF,0,$A5,0,$9C,0,$93
	DC.B	0,$8B,0,$83,0,$7B,0,$75
	DC.B	3,$6B,3,$3A,3,$B,2,$E0
	DC.B	2,$B6,2,$8F,2,$6B,2,$48
	DC.B	2,$27,2,8,1,$EB,1,$CF
	DC.B	1,$B5,1,$9D,1,$86,1,$70
	DC.B	1,$5B,1,$48,1,$35,1,$24
	DC.B	1,$14,1,4,0,$F5,0,$E8
	DC.B	0,$DB,0,$CE,0,$C3,0,$B8
	DC.B	0,$AE,0,$A4,0,$9B,0,$92
	DC.B	0,$8A,0,$82,0,$7B,0,$74
	DC.B	3,$64,3,$34,3,6,2,$DA
	DC.B	2,$B1,2,$8B,2,$66,2,$44
	DC.B	2,$23,2,4,1,$E7,1,$CC
	DC.B	1,$B2,1,$9A,1,$83,1,$6D
	DC.B	1,$59,1,$45,1,$33,1,$22
	DC.B	1,$12,1,2,0,$F4,0,$E6
	DC.B	0,$D9,0,$CD,0,$C1,0,$B7
	DC.B	0,$AC,0,$A3,0,$9A,0,$91
	DC.B	0,$89,0,$81,0,$7A,0,$73
	DC.B	3,$5E,3,$2E,3,0,2,$D5
	DC.B	2,$AC,2,$86,2,$62,2,$3F
	DC.B	2,$1F,2,1,1,$E4,1,$C9
	DC.B	1,$AF,1,$97,1,$80,1,$6B
	DC.B	1,$56,1,$43,1,$31,1,$20
	DC.B	1,$10,1,0,0,$F2,0,$E4
	DC.B	0,$D8,0,$CB,0,$C0,0,$B5
	DC.B	0,$AB,0,$A1,0,$98,0,$90
	DC.B	0,$88,0,$80,0,$79,0,$72

MT_CHAN1	dc.l	0,0,0,0,0,$00010000,0,0,0,0,0
MT_CHAN2	dc.l	0,0,0,0,0,$00020000,0,0,0,0,0
MT_CHAN3	dc.l	0,0,0,0,0,$00040000,0,0,0,0,0
MT_CHAN4	dc.l	0,0,0,0,0,$00080000,0,0,0,0,0
MT_SAMPLESTARTS	
	DC.L	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	DC.L	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	
MT_SONGDATAPOS	DC.L	0
MT_SPEED	DC.B	6
MT_COUNTER	DC.B	0
MT_SONGPOS	DC.B	0
MT_PBREAKPOS	DC.B	0
MT_POSJUMPFLAG	DC.B	0
MT_PBREAKFLAG	DC.B	0
MT_LOWMASK	DC.B	0
MT_PATTDELTIME	DC.B	0
MT_PATTDELTIME2	DC.B	0,0
MT_PATTERNPOS	DC.W	0
MT_DMACONTEMP	DC.W	0
CH1S	DC.B	0,$21,$68,$2C
GRF1LEN	DC.B	0,0,0,0
GRF1RPT	DC.B	0,0,0,0
GRF1FLAG	DC.B	0,0
CH1T	DC.B	0,$21,$68,$2C
AUD1LEN	DC.B	0,8
AUD1PER	DC.B	$1F,$40
AUD1VOL	DC.B	0,0,0,0,0,0,0,0
CH2S	DC.B	0,$21,$68,$2C
GRF2LEN	DC.B	0,0,0,8
GRF2RPT	DC.B	0,0,0,0
GRF2FLAG	DC.B	0,0
CH2T	DC.B	0,$21,$68,$2C
AUD2LEN	DC.B	0,0
AUD2PER	DC.B	$1F,$40
AUD2VOL	DC.B	0,0,0,0,0,0,0,0
CH3S	DC.B	0,$21,$68,$2C
GRF3LEN	DC.B	0,0,0,8
GRF3RPT	DC.B	0,0,0,0
GRF3FLAG	DC.B	0,0
CH3T	DC.B	0,$21,$68,$2C
AUD3LEN	DC.B	0,0
AUD3PER	DC.B	$1F,$40
AUD3VOL	DC.B	0,0,0,0,0,0,0,0
CH4S	DC.B	0,$21,$68,$2C
GRF4LEN	DC.B	0,0,0,8
GRF4RPT	DC.B	0,0,0,0
GRF4FLAG	DC.B	0,0
CH4T	DC.B	0,$21,$68,$2C
AUD4LEN	DC.B	0,8
AUD4PER	DC.B	$1F,$40
AUD4VOL	DC.B	0,0,0,0,0,0,0,0
SHFILTER	DC.w	0
DMACTRL	DC.W	0

DSPPROG	DC.B	$A,$F0,$80,0,0,$40,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	$B,$F0,$80,0,1,$B3,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	0,0,0,0,0,0,0,0
	DC.B	8,$F4,$BE,0,0,0,8,$F4
	DC.B	$A0,0,0,1,$66,$F4,0,0
	DC.B	$10,0,5,$F4,$26,0,$13,$FF
	DC.B	$67,$F4,0,0,$10,$64,4,$67
	DC.B	$A6,$20,0,$1B,$70,$F4,0,0
	DC.B	$14,0,6,$D8,0,0,0,$50
	DC.B	$5F,$5E,0,$20,0,$13,$56,$70
	DC.B	0,0,0,6,$56,$70,0,0
	DC.B	0,5,$56,$70,0,0,0,$D
	DC.B	$56,$70,0,0,0,$C,$56,$70
	DC.B	0,0,0,$14,$56,$70,0,0
	DC.B	0,$13,$56,$70,0,0,0,$1B
	DC.B	$56,$70,0,0,0,$1A,$56,$F4
	DC.B	0,0,0,0,$57,$F4,0,0
	DC.B	0,0,$56,$70,0,0,0,1
	DC.B	$57,$70,0,0,0,2,$57,$70
	DC.B	0,0,0,8,$56,$70,0,0
	DC.B	0,9,$57,$70,0,0,0,$F
	DC.B	$56,$70,0,0,0,$10,$56,$70
	DC.B	0,0,0,$16,$57,$70,0,0
	DC.B	0,$17,8,$F4,$BF,0,$30,0
	DC.B	8,$F4,$AC,0,$41,0,8,$F4
	DC.B	$AD,0,$58,0,8,$F4,$A1,0
	DC.B	1,$F0,8,$F4,$A3,0,0,8
	DC.B	0,$FC,$B8,$A,$A9,$80,0,0
	DC.B	$81,8,$45,$2B,$22,$ED,0,$A
	DC.B	$CD,$20,0,0,$84,$22,$C4,0
	DC.B	$20,0,$4C,$A,$F0,$A3,0,0
	DC.B	$8E,$44,$F4,0,0,$14,0,$20
	DC.B	0,$48,$20,0,$2A,$57,$70,0
	DC.B	0,0,$1C,$22,$D5,0,$60,$F4
	DC.B	0,0,3,0,$61,$F4,0,0
	DC.B	0,3,$B,$F0,$80,0,1,$B5
	DC.B	$60,$F4,0,0,4,$7C,$61,$F4
	DC.B	0,0,0,$A,$B,$F0,$80,0
	DC.B	1,$B5,$60,$F4,0,0,5,$F8
	DC.B	$61,$F4,0,0,0,$11,$B,$F0
	DC.B	$80,0,1,$B5,$60,$F4,0,0
	DC.B	7,$74,$61,$F4,0,0,0,$18
	DC.B	$B,$F0,$80,0,1,$B5,$46,$F4
	DC.B	0,$78,0,0,$47,$F4,0,0
	DC.B	0,0,$44,$F0,0,0,0,3
	DC.B	$20,0,$D0,$56,$70,0,0,0
	DC.B	1,$20,0,$C0,$56,$70,0,0
	DC.B	0,2,$44,$F0,0,0,0,$A
	DC.B	$20,0,$D0,$56,$70,0,0,0
	DC.B	9,$20,0,$C0,$56,$70,0,0
	DC.B	0,8,$44,$F0,0,0,0,$11
	DC.B	$20,0,$D0,$56,$70,0,0,0
	DC.B	$10,$20,0,$C0,$56,$70,0,0
	DC.B	0,$F,$44,$F0,0,0,0,$18
	DC.B	$20,0,$D0,$56,$70,0,0,0
	DC.B	$16,$20,0,$C0,$56,$70,0,0
	DC.B	0,$17,$60,$F4,0,0,3,0
	DC.B	$B,$F0,$80,0,1,$CE,$60,$F4
	DC.B	0,0,8,$F0,$57,$F0,0,0
	DC.B	0,6,$44,$F0,0,0,0,4
	DC.B	$70,$F0,0,0,0,$1C,6,$D8
	DC.B	0,0,0,$FA,$20,0,$48,$A
	DC.B	$F0,$A5,0,0,$E1,$A,$CD,$57
	DC.B	$45,$D8,0,$45,$D8,0,$47,$D0
	DC.B	0,$46,$F0,0,0,0,1,$20
	DC.B	0,$E0,$21,$C5,0,$20,0,$B0
	DC.B	$21,$E6,$64,$21,$C7,0,$20,0
	DC.B	$B0,$20,0,$60,$21,$C5,0,$4D
	DC.B	$5E,0,$45,$D8,0,$47,$D0,0
	DC.B	$46,$F0,0,0,0,2,$20,0
	DC.B	$E0,$21,$C5,0,$20,0,$B0,$21
	DC.B	$E6,$64,$21,$C7,0,$20,0,$B0
	DC.B	$20,0,$60,$21,$C5,0,$4D,$5E
	DC.B	0,$57,$70,0,0,0,6,$22
	DC.B	$F,0,$44,$F4,0,0,8,$F0
	DC.B	$20,0,$4C,$57,$70,0,0,0
	DC.B	5,$60,$F4,0,0,4,$7C,$B
	DC.B	$F0,$80,0,1,$CE,$22,$B6,0
	DC.B	$60,$F4,0,0,8,$F0,$57,$F0
	DC.B	0,0,0,$D,$44,$F0,0,0
	DC.B	0,$B,$70,$F0,0,0,0,$1C
	DC.B	6,$D8,0,0,1,$34,$20,0
	DC.B	$48,$A,$F0,$A5,0,1,$17,$A
	DC.B	$CD,$57,$45,$D8,0,$45,$D8,0
	DC.B	$47,$D0,0,$46,$F0,0,0,0
	DC.B	8,$20,0,$E0,$21,$C5,0,$20
	DC.B	0,$B0,$21,$E6,$64,$21,$C7,0
	DC.B	$20,0,$B0,$20,0,$60,$21,$C5
	DC.B	0,$5E,$E6,0,$20,0,$60,$5E
	DC.B	$5E,0,$45,$D8,0,$47,$D0,0
	DC.B	$46,$F0,0,0,0,9,$20,0
	DC.B	$E0,$21,$C5,0,$20,0,$B0,$21
	DC.B	$E6,$64,$21,$C7,0,$20,0,$B0
	DC.B	$20,0,$60,$21,$C5,0,$5E,$E6
	DC.B	0,$20,0,$60,$5E,$5E,0,$57
	DC.B	$70,0,0,0,$D,$22,$F,0
	DC.B	$44,$F4,0,0,8,$F0,$20,0
	DC.B	$4C,$57,$70,0,0,0,$C,$60
	DC.B	$F4,0,0,5,$F8,$B,$F0,$80
	DC.B	0,1,$CE,$22,$B6,0,$60,$F4
	DC.B	0,0,8,$F0,$57,$F0,0,0
	DC.B	0,$14,$44,$F0,0,0,0,$12
	DC.B	$70,$F0,0,0,0,$1C,6,$D8
	DC.B	0,0,1,$6E,$20,0,$48,$A
	DC.B	$F0,$A5,0,1,$51,$A,$CD,$57
	DC.B	$45,$D8,0,$45,$D8,0,$47,$D0
	DC.B	0,$46,$F0,0,0,0,$F,$20
	DC.B	0,$E0,$21,$C5,0,$20,0,$B0
	DC.B	$21,$E6,$64,$21,$C7,0,$20,0
	DC.B	$B0,$20,0,$60,$21,$C5,0,$5E
	DC.B	$E6,0,$20,0,$60,$5E,$5E,0
	DC.B	$45,$D8,0,$47,$D0,0,$46,$F0
	DC.B	0,0,0,$10,$20,0,$E0,$21
	DC.B	$C5,0,$20,0,$B0,$21,$E6,$64
	DC.B	$21,$C7,0,$20,0,$B0,$20,0
	DC.B	$60,$21,$C5,0,$5E,$E6,0,$20
	DC.B	0,$60,$5E,$5E,0,$57,$70,0
	DC.B	0,0,$14,$22,$F,0,$44,$F4
	DC.B	0,0,8,$F0,$20,0,$4C,$57
	DC.B	$70,0,0,0,$13,$60,$F4,0
	DC.B	0,7,$74,$B,$F0,$80,0,1
	DC.B	$CE,$22,$B6,0,$60,$F4,0,0
	DC.B	8,$F0,$57,$F0,0,0,0,$1B
	DC.B	$44,$F0,0,0,0,$19,$70,$F0
	DC.B	0,0,0,$1C,6,$D8,0,0
	DC.B	1,$A8,$20,0,$48,$A,$F0,$A5
	DC.B	0,1,$8B,$A,$CD,$57,$45,$D8
	DC.B	0,$45,$D8,0,$47,$D0,0,$46
	DC.B	$F0,0,0,0,$16,$20,0,$E0
	DC.B	$21,$C5,0,$20,0,$B0,$21,$E6
	DC.B	$64,$21,$C7,0,$20,0,$B0,$20
	DC.B	0,$60,$21,$C5,0,$5E,$E6,0
	DC.B	$20,0,$60,$5E,$5E,0,$45,$D8
	DC.B	0,$47,$D0,0,$46,$F0,0,0
	DC.B	0,$17,$20,0,$E0,$21,$C5,0
	DC.B	$20,0,$B0,$21,$E6,$64,$21,$C7
	DC.B	0,$20,0,$B0,$20,0,$60,$21
	DC.B	$C5,0,$5E,$E6,0,$20,0,$60
	DC.B	$5E,$5E,0,$57,$70,0,0,0
	DC.B	$1B,$22,$F,0,$44,$F4,0,0
	DC.B	8,$F0,$20,0,$4C,$57,$70,0
	DC.B	0,0,$1A,$A,$F0,$80,0,0
	DC.B	$81,8,$DF,$EF,0,0,4,$A
	DC.B	$A9,$80,0,1,$B5,8,$59,$AB
	DC.B	$A,$A9,$80,0,1,$B8,8,$45
	DC.B	$2B,$45,$59,0,$44,$F0,0,0
	DC.B	0,$1C,$20,0,$A8,$A,$A9,$81
	DC.B	0,1,$BF,8,$E1,$AB,$A,$A9
	DC.B	$81,0,1,$C2,8,$CF,$2B,$A
	DC.B	$A9,$80,0,1,$C5,8,$44,$2B
	DC.B	6,$C4,0,0,1,$CC,$A,$A9
	DC.B	$80,0,1,$CA,8,$58,$AB,0
	DC.B	0,$C,$46,$F4,0,$FF,0,0
	DC.B	$61,$F4,0,0,8,$F0,6,$7C
	DC.B	$81,0,1,$E2,$57,$E0,0,$45
	DC.B	$F4,$5E,0,0,$80,$55,$59,0
	DC.B	$44,$E0,0,$20,0,$A8,$21,$2F
	DC.B	0,$45,$F4,$5E,0,$80,0,$55
	DC.B	$59,0,$44,$D8,0,$20,0,$A8
	DC.B	$21,$2F,0,$20,0,$5E,$55,$59
	DC.B	0,0,0,$C
MODULE
	incbin	"d:\music\modules\overload.mod"
	DS.B	$20000	
WORKSPC