;---------------------------------------------------------------
;- FIRST INTRO FOR MASTERS WRITTEN BY
;-                                     \X/ CADDY - MASTERS \X/
;- ON 1st OF JANUARY 1991!!!!
;-
;- MASTERS MEMBERS ONLY...  TEXT IS AT LINE 830-860...
;-
;- LOWMEM = $40000	<--- FOR USE IN DEFPACK
;- HIGHMEM= $78000
;- 
;---------------------------------------------------------------

 jmp	$40000
 org	$40000
 load	$40000

;---------------------------------------------------------------
BEGINish:
	movem.l	d0-d7/a0-a6,-(a7)
	bsr	setup
TestButton:
	btst	#6,$bfe001
	beq.s	Exit
	cmp.b	#$fe,6(a6)
	bne.s	TestBUtton

;	move.w	#$888,$180(a6)
	bsr	copperfuck
	bsr	Texta
	bsr	Bitch
;	move.w	#$808,$180(a6)

	bra.s	TestButton
Exit:
	move.l 4,a0
	move.l 156(a0),a1
	move.l 38(a1),$80(a6)
	move.w #$7fff,$9a(a6)
	move.l Cold1,$6c
	move.w cold2,d0
	or.w #$8000,d0
	move.w d0,$9a(a6)
	move.w #$000f,$96(a6)

	bsr	Mt_end

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

cold1:	dc.l	0
Cold2:	dc.w	0
;---------------------------------------------------------------
int1:
	movem.l d0-d7/a0-a5,-(a7)

	bsr	Mt_music

	movem.l (a7)+,d0-d7/a0-a5
	move.w #$0020,$9c(a6)
	rte
;---------------------------------------------------------------
setup:
	lea	$dff000,a6

	lea	$7fff4,a0
	move.l	#$00000100,(a0)+
	clr.l	(a0)+
	clr.l	(a0)+

	bsr	FixSineList

	bsr	Copperinit

	lea	screen,a0
	move.w	#$d00,d0
	bsr	blitclear

	BSR	Mt_init

	move.l	$6c,Cold1
	move.w	$1c(a6),Cold2
	move.w	#$7fff,$9a(a6)
	move.l	#int1,$6c
	move.w	#$c020,$9a(a6)

	move.l #copper,$80(a6)
	move.w #$8020,$96(a6)

	rts
Bitch:
	lea	Screen+[141*40]+34,a0
	lea	intVector(pc),a1
	move.l	(a1)+,(a0)
	move.l	(a1)+,40(a0)
	move.l	(a1)+,80(a0)
	move.l	(a1)+,120(a0)
	move.l	(a1)+,160(a0)
	rts
;---------------------------------------------------------------
clear:	clr.b	(a0)+
	cmp.l	a0,a1
	bne.s	clear
	rts
;---------------------------------------------------------------
blitclear:
	bsr.L	blitwait
	move.l	a0,$54(a6)
	move.w	#$100,$40(a6)
	clr.w	$42(a6)
	clr.l	$44(a6)
	move.l	#-1,$64(a6)
	move.w	d0,$58(a6)
	rts
;---------------------------------------------------------------
blitwait:
	btst #14,$2(a6)
	bne.s blitwait
	rts
;---------------------------------------------------------------
Xpos:	dc.w	0
Ypos:	dc.w	0
Wait:	dc.w	1
TEXTA:
	cmp.w	#1,Wait
	bne.s	Noclear
	lea	screen,a0
	move.w	#$b00,d0
	bsr	blitclear
Noclear:
	tst.w	Wait
	beq.s	NoHalt
	subq.w	#1,Wait
	rts
NoHalt:
	move.l	TextP,a0
	tst.b	(a0)
	bne.s	NoEndLine
	move.w	#0,Xpos
	addq.w	#1,Ypos
	addq.l	#1,TextP
	rts
NoEndLine:
	cmp.b	#$1,(a0)
	bne.s	NoEnd
	move.w	#0,Xpos
	move.w	#0,Ypos
	move.w	#400,Wait

	addq.l	#1,Textp
	move.l	textp,a0
	cmp.b	#2,(a0)
	bne.s	MorePages
	move.l	#text,TextP
MorePages:
	rts
NoEnd:
	moveq	#0,d0
	moveq	#0,d1
	move.b	(a0),d0
	sub.b	#32,d0
	lsl.w	#1,d0
	move.w	d0,d1
	divu	#40,d0
	mulu	#11*40,d0
	add.l	d0,d1
	lea	font,a0
	lea	(a0,d1.w),a0

	lea	Screen,a1
	move.w	Xpos,d0
	lea	(a1,d0.w),a1
	move.w	Ypos,d0
	mulu	#12*40,d0
	lea	(a1,d0.w),a1

	moveq	#11,d7
CopyChar:
	move.w	(a0),(a1)
	lea	40(a0),a0
	lea	40(a1),a1
	dbf	d7,Copychar

	addq.l	#1,TextP
	add.w	#2,Xpos

	rts
even
;---------------------------------------------------------------
CopLines=126
CopInst=48

copperfuck:
	cmp.l	#sineEnd,SinePos
	blt.s	MoreList
	sub.l	#sinesize/2,sinepos
MoreList:
	cmp.l	#colsEnd,ColsPos
	blt.s	Morecollist
	sub.l	#collistsize,colspos
MoreColList:
	lea	CopperBlock+6(pc),a0
	move.l	ColsPos(pc),a1
	move.l	SinePos(pc),a2
	move.w	#copLines-1,d7
DoDisplay:
	move.w	(a2)+,d1
	lea	(a1,d1.w),a3
WaitCrap:
	btst	#$e,$2(a6)
	bne.s	WaitCrap
	move.l	a3,$50(a6)
	move.l	a0,$54(a6)
	move.l	#$09f00000,$40(a6)
	move.l	#$00000002,$64(a6)
	move.l	#-1,$44(a6)
	move.w	#copinst-2*64+1,$58(a6)

	add.l	#copinst-2*2,a3
;	addq.l	#2,a1
	lea	CopInst*4(a0),a0
	dbf	d7,DoDisplay

	tst.w	ChangeWait
	beq.s	NextPattern
	move.l	sineadd,d0
	move.l	colsadd,d1
	add.l	d0,SinePos
	add.l	d1,ColsPos
	subq.w	#1,changewait
	rts
NextPattern:
	move.l	ChangeAdr(pc),a0
	cmp.b	#-1,(a0)
	bne.L	Morechg

	tst.w	Op1
	beq.s	NoAdd
	addq.l	#2,a1
Noadd:
	move.l	#changelist,Changeadr
	bra.s	NextPattern
Morechg:
	moveq	#0,d0
	moveq	#0,d1
	moveq	#0,d2
	move.b	(a0)+,d0
	move.b	(a0)+,d1
	move.b	(a0)+,d2
	move.w	d2,Op1
	move.l	d0,sineadd
	move.l	d1,colsadd
	move.w	#300,Changewait
	addq.l	#3,changeadr
	rts

SineAdd:dc.l	0
Colsadd:dc.l	0
Op1:	dc.w	0

ChangeWait:dc.w	0
ChangeAdr:dc.l	Changelist
ChangeList:
	dc.b	2,2,0,4,2,0,6,2,0,8,2,0
	dc.b	2,4,0,4,4,0,6,4,0,8,4,0
	dc.b	2,2,1,4,2,1,6,2,1,8,2,1
	dc.b	2,4,1,4,4,1,6,4,1,8,4,1
	dc.b	-1
	even
;---------------------------------------------------------------
copperinit:
	lea	CopperBlock(pc),a0
	move.w	#copLines-1,d7
	move.w	#$772f,d0
DoDisplay2:
	move.w	d0,(a0)+
	move.w	#$fffe,(a0)+

	moveq	#Copinst-3,d6
DoLine2:
	move.w	#$0180,(a0)+
	move.w	#$0000,(a0)+
	dbf	d6,DoLine2
	add.w	#$0100,d0

	move.l	#$01800000,(a0)+
	dbf	d7,DoDisplay2

	rts
;----------------------------------------------------------------
FixSineList:
	lea	SineList(pc),a0
	move.w	#sineSize/2-1,d7
FixPos:
	moveq	#0,d0
	move.w	(a0),d0
	sub.b	#$69,d0
	lsl.w	#1,d0
	move.w	d0,(a0)+
	dbf	d7,FixPos
	rts
;----------------------------------------------------------------
SinePos:dc.l	SineList
SineList:
dc.w	$69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
dc.w	$6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
dc.w	$77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
dc.w	$85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
dc.w	$92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
dc.w	$9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
dc.w	$9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
dc.w	$94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
dc.w	$88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
dc.w	$7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
dc.w	$6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
dc.w	$69,$69,$69,$69,$69
SineEnd:
dc.w	$69,$69,$69,$69,$69,$69,$69,$69,$6a,$6a,$6a,$6b,$6b,$6b,$6c,$6c
dc.w	$6d,$6d,$6e,$6e,$6f,$70,$70,$71,$71,$72,$73,$74,$74,$75,$76,$77
dc.w	$77,$78,$79,$7a,$7b,$7c,$7c,$7d,$7e,$7f,$80,$81,$82,$82,$83,$84
dc.w	$85,$86,$86,$87,$88,$89,$8a,$8b,$8b,$8c,$8d,$8e,$8f,$8f,$90,$91
dc.w	$92,$92,$93,$94,$94,$95,$96,$96,$97,$97,$98,$98,$99,$99,$9a,$9a
dc.w	$9a,$9b,$9b,$9b,$9b,$9b,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9c,$9b
dc.w	$9b,$9b,$9b,$9b,$9a,$9a,$9a,$99,$99,$98,$98,$97,$97,$96,$96,$95
dc.w	$94,$94,$93,$92,$92,$91,$90,$8f,$8f,$8e,$8d,$8c,$8b,$8b,$8a,$89
dc.w	$88,$87,$86,$86,$85,$84,$83,$82,$82,$81,$80,$7f,$7e,$7d,$7c,$7c
dc.w	$7b,$7a,$79,$78,$77,$77,$76,$75,$74,$74,$73,$72,$71,$71,$70,$70
dc.w	$6f,$6e,$6e,$6d,$6d,$6c,$6c,$6b,$6b,$6b,$6a,$6a,$6a,$69,$69,$69
dc.w	$69,$69,$69,$69,$69
SineSize=*-SineList
;----------------------------------------------------------------
;dc.w	000,010,020,030,040,050,060,070,080,090,0a0,0b0,0c0,0d0,0e0,0f0
;dc.w	0f0,1f0,2f0,3f0,4f0,5f0,6f0,7f0,8f0,9f0,af0,bf0,cf0,df0,ef0,ff0
;dc.w	ff0,fe1,fd2,fc3,fb4,fa5,f96,f87,f78,f69,f5a,f4b,f3c,f2d,f1e,f0f
;dc.w	f0f,e0e,d0d,c0c,b0b,a0a,909,808,707,606,505,404,303,202,101,000
;----------------------------------------------------------------
ColsPos:dc.l	CopperCols
CopperCols:
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

CollistSize=*-coppercols
ColsEnd:
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0
dc.w	$ff0,$fe1,$fd2,$fc3,$fb4,$fa5,$f96,$f87,$f78,$f69,$f5a,$f4b,$f3c,$f2d,$f1e,$f0f
dc.w	$f0f,$f1e,$f2d,$f3c,$f4b,$f5a,$f69,$f78,$f87,$f96,$fa5,$fb4,$fc3,$fd2,$fe1,$ff0

;---------------------------------------------------------------
textp:	dc.l	text
;---------------------------------------------------------------
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
;ญ   NoisetrackerV1.0 replayroutine   ญ
;ญ Mahoney & Kaktus - HALLONSOFT 1989 ญ
;ญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญญ
mt_init:lea	MT_DATA,a0
	move.l	a0,a1
	add.l	#$3b8,a1
	moveq	#$7f,d0
	moveq	#0,d1
mt_loop:move.l	d1,d2
	subq.w	#1,d0
mt_lop2:move.b	(a1)+,d1
	cmp.b	d2,d1
	bgt.s	mt_loop
	dbf	d0,mt_lop2
	addq.b	#1,d2
	lea	mt_samplestarts(pc),a1
	asl.l	#8,d2
	asl.l	#2,d2
	add.l	#$43c,d2
	add.l	a0,d2
	move.l	d2,a2
	moveq	#$1e,d0
mt_lop3:clr.l	(a2)
	move.l	a2,(a1)+
	moveq	#0,d1
	move.w	42(a0),d1
	asl.l	#1,d1
	add.l	d1,a2
	add.l	#$1e,a0
	dbf	d0,mt_lop3
	or.b	#$2,$bfe001
	move.b	#$6,mt_speed
	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	clr.b	mt_songpos
	clr.b	mt_counter
	clr.w	mt_pattpos
	rts
mt_end:	clr.w	$dff0a8
	clr.w	$dff0b8
	clr.w	$dff0c8
	clr.w	$dff0d8
	move.w	#$f,$dff096
	rts
mt_music:
	movem.l	d0-d4/a0-a3/a5-a6,-(a7)
	lea	mt_data,a0
	addq.b	#$1,mt_counter
	move.b	mt_counter,D0
	cmp.b	mt_speed,D0
	blt.s	mt_nonew
	clr.b	mt_counter
	bra	mt_getnew
mt_nonew:
	lea	mt_voice1(pc),a6
	lea	$dff0a0,a5
	bsr	mt_checkcom
	lea	mt_voice2(pc),a6
	lea	$dff0b0,a5
	bsr	mt_checkcom
	lea	mt_voice3(pc),a6
	lea	$dff0c0,a5
	bsr	mt_checkcom
	lea	mt_voice4(pc),a6
	lea	$dff0d0,a5
	bsr	mt_checkcom
	bra	mt_endr
mt_arpeggio:
	moveq	#0,d0
	move.b	mt_counter,d0
	divs	#$3,d0
	swap	d0
	cmp.w	#$0,d0
	beq.s	mt_arp2
	cmp.w	#$2,d0
	beq.s	mt_arp1
	moveq	#0,d0
	move.b	$3(a6),d0
	lsr.b	#4,d0
	bra.s	mt_arp3
mt_arp1:moveq	#0,d0
	move.b	$3(a6),d0
	and.b	#$f,d0
	bra.s	mt_arp3
mt_arp2:move.w	$10(a6),d2
	bra.s	mt_arp4
mt_arp3:asl.w	#1,d0
	moveq	#0,d1
	move.w	$10(a6),d1
	lea	mt_periods(pc),a0
	moveq	#$24,d7
mt_arploop:
	move.w	(a0,d0.w),d2
	cmp.w	(a0),d1
	bge.s	mt_arp4
	addq.l	#2,a0
	dbf	d7,mt_arploop
	rts
mt_arp4:move.w	d2,$6(a5)
	rts
mt_getnew:
	lea	mt_data,a0
	move.l	a0,a3
	move.l	a0,a2
	add.l	#$c,a3
	add.l	#$3b8,a2
	add.l	#$43c,a0
	moveq	#0,d0
	move.l	d0,d1
	move.b	mt_songpos,d0
	move.b	(a2,d0.w),d1
	asl.l	#8,d1
	asl.l	#2,d1
	add.w	mt_pattpos,d1
	clr.w	mt_dmacon
	lea	$dff0a0,a5
	lea	mt_voice1(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0b0,a5
	lea	mt_voice2(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0c0,a5
	lea	mt_voice3(pc),a6
	bsr.s	mt_playvoice
	lea	$dff0d0,a5
	lea	mt_voice4(pc),a6
	bsr.s	mt_playvoice
	bra	mt_setdma
mt_playvoice:
	move.l	(a0,d1.l),(a6)
	addq.l	#4,d1
	moveq	#0,d2
	move.b	$2(a6),d2
	and.b	#$f0,d2
	lsr.b	#4,d2
	move.b	(a6),d0
	and.b	#$f0,d0
	or.b	d0,d2
	tst.b	d2
	beq.s	mt_setregs
	moveq	#0,d3
	lea	mt_samplestarts(pc),a1
	move.l	d2,d4
	subq.l	#$1,d2
	asl.l	#2,d2
	mulu	#$1e,d4
	move.l	(a1,d2.l),$4(a6)
	move.w	(a3,d4.l),$8(a6)
	move.w	$2(a3,d4.l),$12(a6)
	move.w	$4(a3,d4.l),d3
	tst.w	d3
	beq.s	mt_noloop
	move.l	$4(a6),d2
	asl.w	#1,d3
	add.l	d3,d2
	move.l	d2,$a(a6)
	move.w	$4(a3,d4.l),d0
	add.w	$6(a3,d4.l),d0
	move.w	d0,8(a6)
	move.w	$6(a3,d4.l),$e(a6)
	move.w	$12(a6),$8(a5)
	bra.s	mt_setregs
mt_noloop:
	move.l	$4(a6),d2
	add.l	d3,d2
	move.l	d2,$a(a6)
	move.w	$6(a3,d4.l),$e(a6)
	move.w	$12(a6),$8(a5)
mt_setregs:
	move.w	(a6),d0
	and.w	#$fff,d0
	beq	mt_checkcom2
	move.b	$2(a6),d0
	and.b	#$F,d0
	cmp.b	#$3,d0
	bne.s	mt_setperiod
	bsr	mt_setmyport
	bra	mt_checkcom2
mt_setperiod:
	move.w	(a6),$10(a6)
	and.w	#$fff,$10(a6)
	move.w	$14(a6),d0
	move.w	d0,$dff096
	clr.b	$1b(a6)
	move.l	$4(a6),(a5)
	move.w	$8(a6),$4(a5)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	move.w	$14(a6),d0
	or.w	d0,mt_dmacon
	bra	mt_checkcom2
mt_setdma:
	move.w	#$12c,d0
mt_wait:dbf	d0,mt_wait
	move.w	mt_dmacon,d0
	or.w	#$8000,d0
	move.w	d0,$dff096
	move.w	#$12c,d0
mt_wai2:dbf	d0,mt_wai2
	lea	$dff000,a5
	lea	mt_voice4(pc),a6
	move.l	$a(a6),$d0(a5)
	move.w	$e(a6),$d4(a5)
	lea	mt_voice3(pc),a6
	move.l	$a(a6),$c0(a5)
	move.w	$e(a6),$c4(a5)
	lea	mt_voice2(pc),a6
	move.l	$a(a6),$b0(a5)
	move.w	$e(a6),$b4(a5)
	lea	mt_voice1(pc),a6
	move.l	$a(a6),$a0(a5)
	move.w	$e(a6),$a4(a5)
	add.w	#$10,mt_pattpos
	cmp.w	#$400,mt_pattpos
	bne.s	mt_endr
mt_nex:	clr.w	mt_pattpos
	clr.b	mt_break
	addq.b	#1,mt_songpos
	and.b	#$7f,mt_songpos
	move.b	mt_songpos,d1
	cmp.b	mt_data+$3b6,d1
	bne.s	mt_endr
	move.b	mt_data+$3b7,mt_songpos
mt_endr:tst.b	mt_break
	bne.s	mt_nex
	movem.l	(a7)+,d0-d4/a0-a3/a5-a6
	rts
mt_setmyport:
	move.w	(a6),d2
	and.w	#$fff,d2
	move.w	d2,$18(a6)
	move.w	$10(a6),d0
	clr.b	$16(a6)
	cmp.w	d0,d2
	beq.s	mt_clrport
	bge.s	mt_rt
	move.b	#$1,$16(a6)
	rts
mt_clrport:
	clr.w	$18(a6)
mt_rt:	rts
mt_myport:
	move.b	$3(a6),d0
	beq.s	mt_myslide
	move.b	d0,$17(a6)
	clr.b	$3(a6)
mt_myslide:
	tst.w	$18(a6)
	beq.s	mt_rt
	moveq	#0,d0
	move.b	$17(a6),d0
	tst.b	$16(a6)
	bne.s	mt_mysub
	add.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	bgt.s	mt_myok
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
mt_myok:move.w	$10(a6),$6(a5)
	rts
mt_mysub:
	sub.w	d0,$10(a6)
	move.w	$18(a6),d0
	cmp.w	$10(a6),d0
	blt.s	mt_myok
	move.w	$18(a6),$10(a6)
	clr.w	$18(a6)
	move.w	$10(a6),$6(a5)
	rts
mt_vib:	move.b	$3(a6),d0
	beq.s	mt_vi
	move.b	d0,$1a(a6)
mt_vi:	move.b	$1b(a6),d0
	lea	mt_sin(pc),a4
	lsr.w	#$2,d0
	and.w	#$1f,d0
	moveq	#0,d2
	move.b	(a4,d0.w),d2
	move.b	$1a(a6),d0
	and.w	#$f,d0
	mulu	d0,d2
	lsr.w	#$6,d2
	move.w	$10(a6),d0
	tst.b	$1b(a6)
	bmi.s	mt_vibmin
	add.w	d2,d0
	bra.s	mt_vib2
mt_vibmin:
	sub.w	d2,d0
mt_vib2:move.w	d0,$6(a5)
	move.b	$1a(a6),d0
	lsr.w	#$2,d0
	and.w	#$3c,d0
	add.b	d0,$1b(a6)
	rts
mt_nop:	move.w	$10(a6),$6(a5)
	rts
mt_checkcom:
	move.w	$2(a6),d0
	and.w	#$fff,d0
	beq.s	mt_nop
	move.b	$2(a6),d0
	and.b	#$f,d0
	tst.b	d0
	beq	mt_arpeggio
	cmp.b	#$1,d0
	beq.s	mt_portup
	cmp.b	#$2,d0
	beq	mt_portdown
	cmp.b	#$3,d0
	beq	mt_myport
	cmp.b	#$4,d0
	beq	mt_vib
	move.w	$10(a6),$6(a5)
	cmp.b	#$a,d0
	beq.s	mt_volslide
	rts
mt_volslide:
	moveq	#0,d0
	move.b	$3(a6),d0
	lsr.b	#4,d0
	tst.b	d0
	beq.s	mt_voldown
	add.w	d0,$12(a6)
	cmp.w	#$40,$12(a6)
	bmi.s	mt_vol2
	move.w	#$40,$12(a6)
mt_vol2:move.w	$12(a6),$8(a5)
	rts
mt_voldown:
	moveq	#0,d0
	move.b	$3(a6),d0
	and.b	#$f,d0
	sub.w	d0,$12(a6)
	bpl.s	mt_vol3
	clr.w	$12(a6)
mt_vol3:move.w	$12(a6),$8(a5)
	rts
mt_portup:
	moveq	#0,d0
	move.b	$3(a6),d0
	sub.w	d0,$10(a6)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	cmp.w	#$71,d0
	bpl.s	mt_por2
	and.w	#$f000,$10(a6)
	or.w	#$71,$10(a6)
mt_por2:move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	rts
mt_portdown:
	clr.w	d0
	move.b	$3(a6),d0
	add.w	d0,$10(a6)
	move.w	$10(a6),d0
	and.w	#$fff,d0
	cmp.w	#$358,d0
	bmi.s	mt_por3
	and.w	#$f000,$10(a6)
	or.w	#$358,$10(a6)
mt_por3:move.w	$10(a6),d0
	and.w	#$fff,d0
	move.w	d0,$6(a5)
	rts
mt_checkcom2:
	move.b	$2(a6),d0
	and.b	#$f,d0
	cmp.b	#$e,d0
	beq.s	mt_setfilt
	cmp.b	#$d,d0
	beq.s	mt_pattbreak
	cmp.b	#$b,d0
	beq.s	mt_posjmp
	cmp.b	#$c,d0
	beq.s	mt_setvol
	cmp.b	#$f,d0
	beq.s	mt_setspeed
	rts
mt_setfilt:
	move.b	$3(a6),d0
	and.b	#$1,d0
	asl.b	#$1,d0
	and.b	#$fd,$bfe001
	or.b	d0,$bfe001
	rts
mt_pattbreak:
	not.b	mt_break
	rts
mt_posjmp:
	move.b	$3(a6),d0
	subq.b	#$1,d0
	move.b	d0,mt_songpos
	not.b	mt_break
	rts
mt_setvol:cmp.b	#$40,$3(a6)
	ble.s	mt_vol4
	move.b	#$40,$3(a6)
mt_vol4:move.b	$3(a6),$8(a5)
	rts
mt_setspeed:
	cmp.b	#$1f,$3(a6)
	ble.s	mt_sets
	move.b	#$1f,$3(a6)
mt_sets:move.b	$3(a6),d0
	beq.s	mt_rts2
	move.b	d0,mt_speed
	clr.b	mt_counter
mt_rts2:rts
mt_sin:
dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
mt_periods:
dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a,$01fc,$01e0
dc.w $01c5,$01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d,$010d,$00fe
dc.w $00f0,$00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f,$0087
dc.w $007f,$0078,$0071,$0000,$0000
mt_speed:	dc.b	$6
mt_songpos:	dc.b	$0
mt_pattpos:	dc.w	$0
mt_counter:	dc.b	$0
mt_break:	dc.b	$0
mt_dmacon:	dc.w	$0
mt_samplestarts:blk.l	$1f,0
mt_voice1:	blk.w	10,0
		dc.w	$1,0,0,0
mt_voice2:	blk.w	10,0
		dc.w	$2,0,0,0
mt_voice3:	blk.w	10,0
		dc.w	$4,0,0,0
mt_voice4:	blk.w	10,0
		dc.w	$8,0,0,0
IntVector:
	dc.l	$0739e791,$08451451,$087d144a
	dc.l	$08451444,$0745e784
;---------------------------------------------------------------
;- EACH LINE MUST END WITH A ZERO, PAGE ENDS WITH 1,0
;- END OF TEXT ENDS WITH 1,2 - EACH LINE CAN BE ANYLENGTH...
;- PAGES ARE 10 LINES LONG
Text:
dc	0
dc	"** M A S T E R S **",0
dc	0
dc	0
dc	"   ARE HERE WITH",0
dc	0
dc	"  ANOTHER RELEASE",0
dc	0
dc	0
dc	0
dc	"FIRST WITH THE BEST",1,0

dc	" CALL THESE BOARDS ",0
dc	" ----------------- ",0
dc	"MASTER'S WHQ   ",0
dc	"       XXXXXXXX",0,0
dc	"CRYPTIC DEAD   ",0
dc	"       BLA BLA",0,0
dc	"TEMPEST BBS:   ",0
dc	"       -----------",1,0

dc	"OPTICAL ILLUSION",0
dc	"       DEPARTED ",0,0
dc	"PRIME TIME",0
dc	"       ----------",0,0
dc	"CHERNOBYL BBS",0
dc	"      +++++++++++++",0
dc	"                   ",0
dc	" ALL BOARDS R 9600+ ",1,0

dc	" MINI CREDITS:     ",0
dc	" -------------     ",0
dc	" CODING-     CADDY ",0
dc	"                   ",0
dc	" LOGO-  METALLIKAT ",0
dc	"                   ",0
dc	" FONT-   DIGIT/PNS ",0
dc	"                   ",0
dc	" MUSIC-  DIGIT/PNS ",0
dc	" SAY GOODNIGHT BILL",1,2
;---------------------------------------------------------------
	even
copper:
dc.l	$01200007,$0122fff4,$01240007,$0126fff4,$01280007,$012afff4
dc.l	$012c0007,$012efff4,$01300007,$0132fff4,$01340007,$0136fff4
dc.l	$01380007,$013afff4,$013c0007,$013efff4

dc.l	$008e2071,$009030c8
dc.l	$00920038,$009400d0
dc.l	$01020000,$01800000,$01040003
dc.l	$01080000,$010a0000,$01000000

dc.l	$00e00005,$00e21000
dc.l	$00e40005,$00e61be0
dc.l	$00e80005,$00ea27c0
dc.l	$00ec0005,$00ee33a0
dc.l	$00f00005,$00f23f80

dc.w	$0180,$0000 ,$0182,$0fff ,$0184,$0fc6 ,$0186,$0e94
dc.w	$0188,$0d96 ,$018a,$0fca ,$018c,$0fea ,$018e,$0731
dc.w	$0190,$0a36 ,$0192,$0814 ,$0194,$0c05 ,$0196,$0c26
dc.w	$0198,$0d48 ,$019a,$0d79 ,$019c,$0e9b ,$019e,$0a15
dc.w	$01a0,$0620 ,$01a2,$0e52 ,$01a4,$0a52 ,$01a6,$0a53
dc.w	$01a8,$000d ,$01aa,$011d ,$01ac,$023d ,$01ae,$044d
dc.w	$01b0,$0226 ,$01b2,$066e ,$01b4,$088e ,$01b6,$099e
dc.w	$01b8,$0aae ,$01ba,$0ccf ,$01bc,$0ddf ,$01be,$044b

dc.l	$260ffffe,$01005000
dc.l	$720ffffe,$01000000

dc.l	$00e00006,$00e20190
dc.l	$00e40006,$00e601b8

dc.l	$01820000,$01840fff,$01860fff

dc.l	$730ffffe,$01800000
dc.l	$740ffffe,$01800099
dc.l	$750ffffe,$018000cc
dc.l	$760ffffe,$018000ff
dc.l	$770ffffe,$01002000,$01020089,$01800000

CopperBlock:
blk.l	Coplines*copInst,-1
endblock:

dc.l	$f50ffffe,$018000ff
dc.l	$f60ffffe,$018000cc
dc.l	$f70ffffe,$01800099
dc.l	$f80ffffe,$01800000,$01001000

dc.l	$fa0ffffe,$01820fff
dc.l	$fb0ffffe,$01820eee
dc.l	$fc0ffffe,$01820ddd
dc.l	$fd0ffffe,$01820ccc
dc.l	$fe0ffffe,$01820bbb

dc.l	$ff0ffffe,$01000000

dc.l	$fffffffe
;---------------------------------------------------------------
Endish:

Font=$55000
screen=$60000
MT_DATA=$70000

;>EXTERN "katlogo.b",$51000
;>EXTERN "digfont.b",$55000
;>EXTERN "MOD.HAPPY",$70000

	org $51000
	incbin "df1:masters/katlogo.b"

	org	$55000
	incbin "df1:masters/digfont.b"

	org	$70000
	incbin "df1:masters/MOD.HAPPY"
;---------------------------------------------------------------
