****** Classic Product!!!!
****** Rob Northern 91
Beg:		
movem.l		d0-d7/a0-a6,-(sp)

lea		Sound,a1
lea		Module,a0
move.l		#24000/4,d0
muloop:
move.l		(a1)+,(a0)+
dbra		d0,muloop

BSR		init_music

lea		$dff000,a6
lea		Variabler,a5

BSR		Findcopper
BSR		Others
BSR		Setup_irq
BSR		Setup_copper

Main:
cmp.b		#$f0,$6(a6)
bne.s		Main

;move.w		#$f44,$180(a6)

not.b		42(a5)
beq.s		Change1
move.l		#Plane1,d1
move.l		#Plane2,22(a5)
bra.s		Change2
Change1:
move.l		#Plane2,d1
move.l		#Plane1,22(a5)
Change2:
move.w		d1,Map1l
swap		d1
move.w		d1,Map1h
swap		d1
sub.l		#40,d1
move.w		d1,Map1l+4
swap		d1
move.w		d1,Map1l+8

	lea		StarArea+11,a0
	moveq		#46,d1
StarLoop:	
	subq.b		#3,(a0)	
	subq.b		#2,24(a0)
	subq.b		#1,48(a0)
	subq.b		#1,72(a0)
	add.l		#96,a0
	dbra		d1,StarLoop

	tst.w		88(a5)
	beq.s		going

	subq.w		#1,88(a5)
	bra.L		wfb1

going:
	sub.b		#1,70(a5)
	bpl.L		wfb2
	move.b		#9,70(a5)

	move.l		80(a5),a0
	addq.l		#1,80(a5)
	tst.b		1(a0)
	bpl.s		nores
	move.b		1(a0),d0
	and.b		#$f,d0
	bne.s		nores1
	move.l		#scrollt,80(a5)
	bra.s		nores
nores1:
	addq.l		#1,80(a5)

	cmp.b		#$05,d0
	bne.s		nores2
	move.w		#250,88(a5)
	bra.s		nores
nores2:
	cmp.b		#$06,d0
	bne.s		nores3
	move.l		#-128,56(a5)
	move.l		#2,60(a5)
	move.l		#Siner,48(a5)
	bra.s		nores
nores3:
	not.b		84(a5)
nores:
	moveq		#0,d0
	move.b		(a0),d0
	sub.b		#$20,d0
	lsl.w		#5,d0
	lea		font,a1
	lea		(a1,d0.w),a1
	lea		scrollmap+36,a0


Wfb3:	btst		#14,$2(a6)
	bne.s		Wfb3

	move.l		#$09f00000,$40(a6)
	move.l		a0,$54(a6)
	move.l		a1,$50(a6)
	move.l		#$ffffffff,$44(a6)
	move.l		#$00000026,$64(a6)
	move.w		#[16*64]+1,$58(a6)

Wfb2:	btst		#14,$2(a6)
	bne.s		Wfb2

	move.l		#$e9f00000,$40(a6)
	lea		scrollmap+4,a0
	move.l		a0,$50(a6)
	subq.l		#2,a0
	move.l		a0,$54(a6)
	move.l		#$ffffffff,$44(a6)
	move.l		#$00040004,$64(a6)
	move.w		#[16*64]+18,$58(a6)

Wfb1:	btst		#14,$2(a6)
	bne.s		Wfb1

	move.l		#$01000000,$40(a6)
	move.l		22(a5),d0
	add.l		#[30*40]+4,d0
	move.l		d0,$54(a6)
	move.w		#$0008,$66(a6)
	move.w		#[115*64]+16,$58(a6)

Wfb:	btst		#14,$2(a6)
	bne.s		Wfb

	move.w		#$8000,28(a5)
	move.l		#$0dfc0000,$40(a6)
	move.w		#$0000,$46(a6)
	move.l		#$00240024,$64(a6)
	move.w		#$0024,$62(a6)

	move.l		22(a5),d0
	add.l		#[80*40]+20,d0
	move.l		d0,30(a5)

	lea		SinusTab,a4
	move.l		38(a5),d0
	add.l		#8,38(a5)
	add.l		d0,a4
	cmp.l		#396*4,d0
	bne.s		Label1
	clr.l		38(a5)
Label1:

	move.l		48(a5),a2
	tst.b		84(a5)
	beq.s		irot
	addq.l		#4,48(a5)
irot:
	tst.l		4(a2)
	bpl.s		nope1
	tst.w		6(a2)
	bmi.s		nope2
	neg.l		60(a5)
	neg.l		56(a5)
	addq.l		#4,48(a5)
	bra.s		nope1
nope2:
	move.l		#Siner,48(a5)
nope1:
	move.l		(a2),d0
	move.l		#16384,d3
	divu		d0,d3

	move.l		56(a5),d4
	move.w		#251/2,d5
	move.l		30(a5),a0
	move.l		34(a5),a1
	clr.w		76(a5)
Bloop:
	subq.w		#2,76(a5)
	bpl.s		jaha
	move.w		#14,76(a5)
	addq.l		#2,a1
jaha:
	add.l		60(a5),d4
	move.l		d4,d7
	bne.s		dive
	add.l		60(a5),d4
	move.l		d4,d7
dive:
	lsl.l		#7,d7
	divs		d3,d7
	ext.l		d7

	move.w		d7,d6
	lsr.l		#4,d7
	add.l		d7,d7

	move.l		a0,d0
	add.l		(a4)+,d0
	add.l		d7,d0
	
	moveq		#0,d1
	move.w		76(a5),d2
	bset		d2,d1
	addq.b		#1,d2
	bset		d2,d1
	not.b		d6
	and.w		#$f,d6
	sub.w		d2,d6
	beq.s		uop
	bmi.s		uop
	swap		d1
	sub.w		#16,d6
	neg.w		d6
	subq.l		#2,d0
	bra.s		uop1
uop:
	swap		d1
	neg.w		d6
uop1:
	ror.w		#4,d6
	or.w		#$0dfc,d6
NoNul1:
	btst		#14,$2(a6)
	bne.s		NoNul1
	
	move.w		d6,$40(a6)
	move.l		d1,$44(a6)
	move.l		d0,$54(a6)
	move.l		d0,$4c(a6)
	move.l		a1,$50(a6)
	move.w		#[16*64]+2,$58(a6)

	dbra		d5,Bloop

	BSR		Play
	lea		$dff000,a6
	lea		Variabler,a5

;	move.w		#$f89,$180(a6)

btst		#6,$bfe001
bne		Main
Endseq:
move.w		12(a5),$96(a6)
move.l		8(a5),$6c
move.w		#$3fff,$9a(a6)
move.w		4(a5),$9a(a6)
move.l		(a5),$80(a6)
BSR 		End_music
movem.l		(sp)+,d0-d7/a0-a6
rts

FindCopper:
move.l		$04,a0
move.l		(a0),a0
move.l		(a0),a0
move.l		$26(a0),(a5)
rts

Setup_irq:
move.w		$2(a6),d0
or.w		#$8000,d0
and.w		#$87ff,d0
move.w		d0,12(a5)
move.w		#$040f,$96(a6)
move.w		#$81c0,$96(a6)
move.w		$1c(a6),d0
or.w		#$8000,d0
move.w		d0,4(a5)
move.l		$6c,8(a5)
move.l		#Lev3,$6c
move.w		#$3fff,$9a(a6)
;move.w		#$8050,$9a(a6)
rts

Setup_copper:
move.l		#Cl,$80(a6)
rts

Others:

	lea		SinusTab,a1
	lea		SinusTab+[397*4],a2
	lea		Sinusc,a0
	move.l		#395,d1
sinusloop:
	move.l		(a0)+,d0
	muls		#40,d0
	move.l		d0,(a1)+
	move.l		d0,(a2)+
	dbra		d1,sinusloop

	lea		Plane1,a0
	lea		Plane2,a1
	lea		Textmap,a2
	move.l		#[8000/4]-1,d0
Clloop:	clr.l		(a0)+
	clr.l		(a1)+	
	clr.l		(a2)+
	dbra		d0,Clloop

	lea		Scrollmap,a0
	move.l		#2000/4,d0
clloop1:
	clr.l		(a0)+
	dbra		d0,Clloop1

	lea		fonta,a0
	lea		font,a1
	move.l		#1920/2,d0
foloop: move.w		(a0)+,(a1)+
	dbra		d0,foloop

	lea		fonta1,a0
	lea		font1,a1
	move.l		#640/2,d0
foloop1: move.w		(a0)+,(a1)+
	dbra		d0,foloop1

	
	lea		Cl,a1
	lea		Copper,a0
	move.l		#Cllenght,d0
CoCopy:	move.w		(a0)+,(a1)+
	dbra		d0,CoCopy

	lea		ColorList,a4
	lea		ColorList2,a3
	move.w		#$3209,d0	
	move.l		#188,d6
	move.w		#$fff,d1	
	move.w		#$3200,d2

COPPERLOOP:	
	move.w		d0,(a1)+
	move.l		#$fffe01a2,(a1)+		
	move.w		d1,(a1)+
	move.w		#$0140,(a1)+
	move.w		d2,(a1)+	
	move.w		#$0188,(a1)+
	move.w		(a4)+,(a1)+
	move.w		#$0186,(a1)+
	move.w		(a3),(a1)+
	move.w		#$018e,(a1)+
	move.w		(a3)+,(a1)+
	add.w		#$100,d0
	sub.w		#$444,d1
	bpl.s		COPL
	move.w		#$fff,d1
COPL:	
	add.w		#$100,d2	
	add.b		#82,d2	
	ror.b		#2,d2	
	dbra		d6,COPPERLOOP

	move.l	#$ee09fffe,(a1)+
	move.l	#$01800700,(a1)+
	move.l	#$ef09fffe,(a1)+
	move.l	#$01800a00,(a1)+
	move.l	#$f009fffe,(a1)+
	move.l	#$01800d00,(a1)+
	move.l	#$f109fffe,(a1)+
	move.l	#$01800a00,(a1)+
	move.l	#$f209fffe,(a1)+
	move.l	#$01800700,(a1)+
	move.l	#$f309fffe,(a1)+
	move.l	#$01800000,(a1)+
	move.l	#$fffffffe,(a1)+

lea		StarData,a1
lea		StarGfx,a0
move.l		#300,d0
starcloop:
move.l		(a0)+,(a1)+
dbra		d0,starcloop

move.l		#StarData,d0
move.w		d0,Star1l
swap		d0
move.w		d0,Star1h

makeTxt:

	lea	TextMap+[40*5],a4
	lea	Font1,a3
	lea	Screentxt,a2

	move.l	#799,d7
txtloop1:
	move.l	a4,a1
txtloop2:
	move.l	a3,a0
	moveq	#0,d1
	move.b	(a2)+,d1
	bne.s	noendl
	add.l	#9*40,a4
	bra.s	txtloop1
noendl:
	sub.b	#$20,d1
	lsl.l	#3,d1
	add.l	d1,a0

	moveq	#7,d0
txtloop:
	move.b	(a0)+,(a1)
	add.l	#40,a1
	dbra	d0,txtloop
	sub.l	#319,a1
	dbra	d7,txtloop2

rts

llll:

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

	btst		#4,$1f(a6)
	beq.s		Blittr
	move.w		#$0010,$9c(a6)
	movem.l		(sp)+,d0-d7/a0-a6
	rte

Blittr:
	move.w		#$0040,$9c(a6)
	movem.l		(sp)+,d0-d7/a0-a6
	rte

Copper:
dc.w	$0092,$0038,$0094,$00d0,$008e,$3281,$0090,$efc1
dc.w	$0108,$0000,$010a,$0000,$0104,$0000
dc.w	$0100,$3200

dc.w	$0102,$0001

cMap1h:	dc.w	$e0,$0
cMap1l:	dc.w	$e2,$0
	dc.w	$e6,$0
	dc.w	$e4,$0
	dc.w	$e8,$6
	dc.w	$ea,$2000

cStar1h:dc.w	$0120,$0
cStar1l:dc.w	$0122,$0
dc.w	$0124,0,$0126,0
dc.w	$0128,0,$012a,0
dc.w	$012c,0,$012e,0
dc.w	$0130,0,$0132,0
dc.w	$0134,0,$0136,0
dc.w	$0138,0,$013a,0
dc.w	$013c,0,$013e,0

dc.w	$0180,$0000,$0182,$0fff,$0184,$0888,$0186,$0800
dc.w	$0188,$0456,$018a,$0fff,$018c,$0888,$018e,$0800
dc.w	$0190,$0000,$0192,$0000,$0194,$0000,$0196,$0000
dc.w	$0198,$0000,$019a,$0000,$019c,$0000,$019e,$0000
dc.w	$01a0,$0000,$01a2,$0ffd,$01a4,$0aa8,$01a6,$0553
dc.w	$01a8,$0000,$01aa,$0ddf,$01ac,$088a,$01ae,$0335
dc.w	$01b0,$0000,$01b2,$0fdd,$01b4,$0a88,$01b6,$0533
dc.w	$01b8,$0000,$01ba,$0dfd,$01bc,$08a8,$01be,$0353

dc.w	$2c09,$fffe,$0180,$0700
dc.w	$2d09,$fffe,$0180,$0a00
dc.w	$2e09,$fffe,$0180,$0d00
dc.w	$2f09,$fffe,$0180,$0a00
dc.w	$3009,$fffe,$0180,$0700
dc.w	$3109,$fffe,$0180,$0000

CopperEnd:

Siner:
	dc.l	$0000007F,$0000007F,$0000007F
	dc.l	$0000007F,$0000007F,$0000007F,$0000007F
	dc.l	$0000007F,$0000007F,$0000007F,$0000007E
	dc.l	$0000007E,$0000007E,$0000007E,$0000007D
	dc.l	$0000007D,$0000007D,$0000007C,$0000007C
	dc.l	$0000007C,$0000007B,$0000007B,$0000007A
	dc.l	$0000007A,$00000079,$00000079,$00000078
	dc.l	$00000078,$00000077,$00000077,$00000076
	dc.l	$00000076,$00000075,$00000074,$00000074
	dc.l	$00000073,$00000072,$00000072,$00000071
	dc.l	$00000070,$0000006F,$0000006F,$0000006E
	dc.l	$0000006D,$0000006C,$0000006B,$0000006A
	dc.l	$0000006A,$00000069,$00000068,$00000067
	dc.l	$00000066,$00000065,$00000064,$00000063
	dc.l	$00000062,$00000061,$00000060,$0000005F
	dc.l	$0000005E,$0000005D,$0000005C,$0000005B
	dc.l	$00000059,$00000058,$00000057,$00000056
	dc.l	$00000055,$00000054,$00000052,$00000051
	dc.l	$00000050,$0000004F,$0000004E,$0000004C
	dc.l	$0000004B,$0000004A,$00000048,$00000047
	dc.l	$00000046,$00000044,$00000043,$00000042
	dc.l	$00000040,$0000003F,$0000003E,$0000003C
	dc.l	$0000003B,$00000039,$00000038,$00000037
	dc.l	$00000035,$00000034,$00000032,$00000031
	dc.l	$0000002F,$0000002E,$0000002C,$0000002B
	dc.l	$00000029,$00000028,$00000026,$00000025
	dc.l	$00000023,$00000022,$00000020,$0000001F
	dc.l	$0000001D,$0000001C,$0000001A,$00000019
	dc.l	$00000017,$00000016,$00000014,$00000012
	dc.l	$00000011,$0000000F,$0000000E,$0000000C
	dc.l	$0000000B,$00000009,$00000007,$00000006
	dc.l	$00000004,$00000003

	dc.l	$00000001,$ff000000,$00000003,$00000004
	dc.l	$00000006,$00000007,$00000009,$0000000B
	dc.l	$0000000C,$0000000E,$0000000F,$00000011
	dc.l	$00000012,$00000014,$00000016,$00000017
	dc.l	$00000019,$0000001A,$0000001C,$0000001D
	dc.l	$0000001F,$00000020,$00000022,$00000023
	dc.l	$00000025,$00000026,$00000028,$00000029
	dc.l	$0000002B,$0000002C,$0000002E,$0000002F
	dc.l	$00000031,$00000032,$00000034,$00000035
	dc.l	$00000037,$00000038,$00000039,$0000003B
	dc.l	$0000003C,$0000003E,$0000003F,$00000040
	dc.l	$00000042,$00000043,$00000044,$00000046
	dc.l	$00000047,$00000048,$0000004A,$0000004B
	dc.l	$0000004C,$0000004E,$0000004F,$00000050
	dc.l	$00000051,$00000052,$00000054,$00000055
	dc.l	$00000056,$00000057,$00000058,$00000059
	dc.l	$0000005B,$0000005C,$0000005D,$0000005E
	dc.l	$0000005F,$00000060,$00000061,$00000062
	dc.l	$00000063,$00000064,$00000065,$00000066
	dc.l	$00000067,$00000068,$00000069,$0000006A
	dc.l	$0000006A,$0000006B,$0000006C,$0000006D
	dc.l	$0000006E,$0000006F,$0000006F,$00000070
	dc.l	$00000071,$00000072,$00000072,$00000073
	dc.l	$00000074,$00000074,$00000075,$00000076
	dc.l	$00000076,$00000077,$00000077,$00000078
	dc.l	$00000078,$00000079,$00000079,$0000007A
	dc.l	$0000007A,$0000007B,$0000007B,$0000007C
	dc.l	$0000007C,$0000007C,$0000007D,$0000007D
	dc.l	$0000007D,$0000007E,$0000007E,$0000007E
	dc.l	$0000007E,$0000007F,$0000007F,$0000007F
	dc.l	$0000007F,$0000007F,$0000007F,$0000007F
	dc.l	$0000007F,$0000007F,$0000007F

	dc.l	$ffffffff

SinusC:
	dc.l	$00000000,$00000001,$00000002
	dc.l	$00000003,$00000003,$00000004,$00000005
	dc.l	$00000006,$00000007,$00000007,$00000008
	dc.l	$00000009,$0000000A,$0000000A,$0000000B
	dc.l	$0000000C,$0000000D,$0000000D,$0000000E
	dc.l	$0000000F,$00000010,$00000010,$00000011
	dc.l	$00000012,$00000013,$00000013,$00000014
	dc.l	$00000015,$00000016,$00000016,$00000017
	dc.l	$00000018,$00000018,$00000019,$0000001A
	dc.l	$0000001A,$0000001B,$0000001C,$0000001C
	dc.l	$0000001D,$0000001E,$0000001E,$0000001F
	dc.l	$0000001F,$00000020,$00000021,$00000021
	dc.l	$00000022,$00000022,$00000023,$00000023
	dc.l	$00000024,$00000025,$00000025,$00000026
	dc.l	$00000026,$00000027,$00000027,$00000028
	dc.l	$00000028,$00000028,$00000029,$00000029
	dc.l	$0000002A,$0000002A,$0000002B,$0000002B
	dc.l	$0000002B,$0000002C,$0000002C,$0000002C
	dc.l	$0000002D,$0000002D,$0000002D,$0000002E
	dc.l	$0000002E,$0000002E,$0000002F,$0000002F
	dc.l	$0000002F,$0000002F,$00000030,$00000030
	dc.l	$00000030,$00000030,$00000030,$00000030
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000031,$00000031,$00000031
	dc.l	$00000031,$00000030,$00000030,$00000030
	dc.l	$00000030,$00000030,$0000002F,$0000002F
	dc.l	$0000002F,$0000002F,$0000002E,$0000002E
	dc.l	$0000002E,$0000002E,$0000002D,$0000002D
	dc.l	$0000002D,$0000002C,$0000002C,$0000002C
	dc.l	$0000002B,$0000002B,$0000002A,$0000002A
	dc.l	$0000002A,$00000029,$00000029,$00000028
	dc.l	$00000028,$00000027,$00000027,$00000026
	dc.l	$00000026,$00000025,$00000025,$00000024
	dc.l	$00000024,$00000023,$00000023,$00000022
	dc.l	$00000022,$00000021,$00000020,$00000020
	dc.l	$0000001F,$0000001F,$0000001E,$0000001D
	dc.l	$0000001D,$0000001C,$0000001B,$0000001B
	dc.l	$0000001A,$00000019,$00000019,$00000018
	dc.l	$00000017,$00000017,$00000016,$00000015
	dc.l	$00000014,$00000014,$00000013,$00000012
	dc.l	$00000012,$00000011,$00000010,$0000000F
	dc.l	$0000000F,$0000000E,$0000000D,$0000000C
	dc.l	$0000000C,$0000000B,$0000000A,$00000009
	dc.l	$00000009,$00000008,$00000007,$00000006
	dc.l	$00000005,$00000005,$00000004,$00000003
	dc.l	$00000002,$00000001,$00000001,$00000000
	dc.l	$00000000,$FFFFFFFF,$FFFFFFFF,$FFFFFFFE
	dc.l	$FFFFFFFD,$FFFFFFFC,$FFFFFFFB,$FFFFFFFB
	dc.l	$FFFFFFFA,$FFFFFFF9,$FFFFFFF8,$FFFFFFF7
	dc.l	$FFFFFFF7,$FFFFFFF6,$FFFFFFF5,$FFFFFFF4
	dc.l	$FFFFFFF4,$FFFFFFF3,$FFFFFFF2,$FFFFFFF1
	dc.l	$FFFFFFF1,$FFFFFFF0,$FFFFFFEF,$FFFFFFEE
	dc.l	$FFFFFFEE,$FFFFFFED,$FFFFFFEC,$FFFFFFEC
	dc.l	$FFFFFFEB,$FFFFFFEA,$FFFFFFE9,$FFFFFFE9
	dc.l	$FFFFFFE8,$FFFFFFE7,$FFFFFFE7,$FFFFFFE6
	dc.l	$FFFFFFE5,$FFFFFFE5,$FFFFFFE4,$FFFFFFE3
	dc.l	$FFFFFFE3,$FFFFFFE2,$FFFFFFE1,$FFFFFFE1
	dc.l	$FFFFFFE0,$FFFFFFE0,$FFFFFFDF,$FFFFFFDE
	dc.l	$FFFFFFDE,$FFFFFFDD,$FFFFFFDD,$FFFFFFDC
	dc.l	$FFFFFFDC,$FFFFFFDB,$FFFFFFDB,$FFFFFFDA
	dc.l	$FFFFFFDA,$FFFFFFD9,$FFFFFFD9,$FFFFFFD8
	dc.l	$FFFFFFD8,$FFFFFFD7,$FFFFFFD7,$FFFFFFD6
	dc.l	$FFFFFFD6,$FFFFFFD6,$FFFFFFD5,$FFFFFFD5
	dc.l	$FFFFFFD4,$FFFFFFD4,$FFFFFFD4,$FFFFFFD3
	dc.l	$FFFFFFD3,$FFFFFFD3,$FFFFFFD2,$FFFFFFD2
	dc.l	$FFFFFFD2,$FFFFFFD2,$FFFFFFD1,$FFFFFFD1
	dc.l	$FFFFFFD1,$FFFFFFD1,$FFFFFFD0,$FFFFFFD0
	dc.l	$FFFFFFD0,$FFFFFFD0,$FFFFFFD0,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFCF,$FFFFFFCF,$FFFFFFCF,$FFFFFFCF
	dc.l	$FFFFFFD0,$FFFFFFD0,$FFFFFFD0,$FFFFFFD0
	dc.l	$FFFFFFD0,$FFFFFFD0,$FFFFFFD1,$FFFFFFD1
	dc.l	$FFFFFFD1,$FFFFFFD1,$FFFFFFD2,$FFFFFFD2
	dc.l	$FFFFFFD2,$FFFFFFD3,$FFFFFFD3,$FFFFFFD3
	dc.l	$FFFFFFD4,$FFFFFFD4,$FFFFFFD4,$FFFFFFD5
	dc.l	$FFFFFFD5,$FFFFFFD5,$FFFFFFD6,$FFFFFFD6
	dc.l	$FFFFFFD7,$FFFFFFD7,$FFFFFFD8,$FFFFFFD8
	dc.l	$FFFFFFD8,$FFFFFFD9,$FFFFFFD9,$FFFFFFDA
	dc.l	$FFFFFFDA,$FFFFFFDB,$FFFFFFDB,$FFFFFFDC
	dc.l	$FFFFFFDD,$FFFFFFDD,$FFFFFFDE,$FFFFFFDE
	dc.l	$FFFFFFDF,$FFFFFFDF,$FFFFFFE0,$FFFFFFE1
	dc.l	$FFFFFFE1,$FFFFFFE2,$FFFFFFE2,$FFFFFFE3
	dc.l	$FFFFFFE4,$FFFFFFE4,$FFFFFFE5,$FFFFFFE6
	dc.l	$FFFFFFE6,$FFFFFFE7,$FFFFFFE8,$FFFFFFE8
	dc.l	$FFFFFFE9,$FFFFFFEA,$FFFFFFEA,$FFFFFFEB
	dc.l	$FFFFFFEC,$FFFFFFED,$FFFFFFED,$FFFFFFEE
	dc.l	$FFFFFFEF,$FFFFFFF0,$FFFFFFF0,$FFFFFFF1
	dc.l	$FFFFFFF2,$FFFFFFF3,$FFFFFFF3,$FFFFFFF4
	dc.l	$FFFFFFF5,$FFFFFFF6,$FFFFFFF6,$FFFFFFF7
	dc.l	$FFFFFFF8,$FFFFFFF9,$FFFFFFF9,$FFFFFFFA
	dc.l	$FFFFFFFB,$FFFFFFFC,$FFFFFFFD,$FFFFFFFD
	dc.l	$FFFFFFFE,$FFFFFFFF,$00000000

Fonta:
blk.b	1920,0

Fonta1:
blk.b	640,0

StarGfx:
dc.b	40,64,240,0
blk.l	200,$80000000
dc.l	0

ColorList:
;dc.w	$,$,$,$,$,$,$,$,$0
dc.w	0,0,0,0,0
dc.w	$119,$33b,$55d,$77f,$77f,$55d,$33b,$119,$0
dc.w	$139,$35b,$57d,$79f,$79f,$57d,$35b,$139,$0
dc.w	$159,$37b,$59d,$7bf,$7bf,$59d,$37b,$159,$0
dc.w	$179,$39b,$5bd,$7df,$7df,$5bd,$39b,$179,$0
dc.w	$199,$3bb,$5dd,$7ff,$7ff,$5dd,$3bb,$199,$0
dc.w	$197,$3b9,$5db,$7fd,$7fd,$5db,$3b9,$197,$0
dc.w	$195,$3b7,$5d9,$7fb,$7fb,$5d9,$3b7,$195,$0
dc.w	$193,$3b5,$5d7,$7f9,$7f9,$5d7,$3b5,$193,$0
dc.w	$191,$3b3,$5d5,$7f7,$7f7,$5d5,$3b3,$191,$0
dc.w	$391,$5b3,$7d5,$9f7,$9f7,$7d5,$5b3,$391,$0
dc.w	$591,$7b3,$9d5,$bf7,$bf7,$9d5,$7b3,$591,$0
dc.w	$791,$9b3,$bd5,$df7,$df7,$bd5,$9b3,$791,$0
dc.w	$991,$bb3,$dd5,$ff7,$ff7,$dd5,$bb3,$991,$0
dc.w	$971,$b93,$db5,$fd7,$fd7,$db5,$b93,$971,$0
dc.w	$951,$b73,$d95,$fb7,$fb7,$d95,$b73,$951,$0
dc.w	$931,$b53,$d75,$f97,$f97,$d75,$b53,$931,$0
dc.w	$911,$b33,$d55,$f77,$f77,$d55,$b33,$911,$0
dc.w	$913,$b35,$d57,$f79,$f79,$d57,$b35,$913,$0
dc.w	$915,$b37,$d59,$f7b,$f7b,$d59,$b37,$915,$0
dc.w	$917,$b39,$d5b,$f7d,$f7d,$d5b,$b39,$917,$0

ColorList2:
;dc.w	$,$,$,$,$,$,$,$,$0
dc.w	$1,$2,$3,$4,$5,$6,$7,$8
dc.w	$9,$a,$b,$c,$d,$e,$f
dc.w	$e,$d,$c,$b,$a,$9,$8,$7
dc.w	$6,$5,$4,$3,$2,$1,$0
dc.w	$110,$220,$330,$440,$550,$660,$770,$880
dc.w	$990,$aa0,$bb0
dc.w	$cc0,$dd0,$ee0,$ff0,$ee0,$dd0,$cc0,$bb0,$aa0
dc.w	$990,$880,$770,$660,$550,$440,$330,$220,$110,0
dc.w	$1,$2,$3,$4,$5,$6,$7,$8
dc.w	$9,$a,$b,$c,$d,$e,$f
dc.w	$e,$d,$c,$b,$a,$9,$8,$7
dc.w	$6,$5,$4,$3,$2,$1,$0
dc.w	$100,$200,$300,$400,$500,$600,$700,$800
dc.w	$900,$a00,$b00,$c00,$d00,$e00,$f00
dc.w	$e00,$d00,$c00,$b00,$a00,$900,$800,$700
dc.w	$600,$500,$400,$300,$200,$100
dc.w	$10,$20,$30,$40,$50,$60,$70,$80
dc.w	$90,$a0,$b0,$c0,$d0,$e0,$f0
dc.w	$e0,$d0,$c0,$b0,$a0,$90,$80,$70
dc.w	$60,$50,$40,$30,$20,$10,$0

;Instruktioner:
;Placera aldrig tva funktioner efter varanndra!! typ dc.b $ff,$f5
;skriv i stallet dc.b $ff,$20,$f5
;
;$f0 = restart scroll text
;$ff = toggle rotation on/off
;$f5 = stopp scroll ( 5 sec!)
;$f6 = reset rotation

Scrollt:
DC.B	' ',$fF
DC.B	'   / CLASSIC /  ',$f5
DC.B	'   ',$FF
DC.B 	'  PRESENTS KILLING CLOUDS FROM PSYGNOSIS.     '
DC.B	'          SEE YOU ALL VERY SOON.              ',$F6
DC.B    '   ',$F0
even

ScreenTxt:
DC.B	'       )))) C L A S S I C ((((          ',0
DC.B	'                                        ',0
DC.B	'  PRESENTS............KILLING CLOUDS    ',0
DC.B	'  CRACKED BY..............RINGO STAR    ',0
DC.B	'                                        ',0
DC.B	'     CALL THESE ELITE USER BOARDS       ',0
DC.B    '  PURGATORY WHQ.........203 225 5482    ',0
DC.B	'  MADHOUSE..............313 698 1728    ',0
DC.B    '  MARTYRIUM.............713 946 5141    ',0
DC.B    '  PIRATES SHIP..........515 277 1906    ',0
DC.B	'  DOWNTOWN..............ELITE ONLY!!    ',0
DC.B	'  LINE TO HEAVEN.........41 62260277    ',0
DC.B	'  THE LIGHT BOARD.......ELITE ONLY!!    ',0
DC.B	'  INNER CIRCLE...........46 31304142    ',0
DC.B	'  RED AND BLACK..........39 59651693    ',0
DC.B	'                                        ',0
DC.B	'  CLASSIC EUROPE        CLASSIC USA     ',0
DC.B	'  ARSNAS 12621          PO.BOX 814      ',0
DC.B	'  S-44297 KODE          UNION LAKE,MI   ',0
DC.B	'  SWEDEN                48387   USA     ',0

even
vvvv:
Variabler:
dc.l	0		;oldcop 0
dc.l	0		;oldirq 4
dc.l	0		;oldlev3 8
dc.l	0		;old DMA 12
dc.b	0,0		;Frame 16
dc.l	0		;18
dc.l	Plane1		;Plane Ptr 22
dc.w	0		;blitt counter 26
dc.w	$8000		;Mask Counter 28
dc.l	0		;Blitt ptr 30
dc.l	Scrollmap+2	;dum 34
dc.l	0		;add to sinus 38
dc.b	0,0		;plane dum 42
dc.l	0		;vert s ptr 44
dc.l	Siner		;siner ptr 48
dc.l	128		;52
dc.l	-128		;56
dc.l	2		;60
dc.l	0		;64
dc.w	0		;68
dc.w	0		;70
dc.w	0		;72
dc.w	0		;74
dc.l	0		;76
dc.l	Scrollt		;80
dc.w	0		;84 rotera?
dc.w	0		;86 reset?
dc.w	0		;88 stopp frames

Module:		equ	$50000
SinusTab:	equ	$5e000
font:		equ	$60000
font1:		equ	$61000
Textmap:	equ	$62000
Plane1:		equ	$6b000
Plane2:		equ	$70000
ScrollMap:	equ	$76000
StarData:	equ	$7a000
Cl:		equ	$7d000
;------------------------------------------------
StarArea:	equ	Cl+[copperend-copper]
CLlenght:	equ	[[CopperEnd-Copper]/2]-1
Map1h:		equ	Cl+[cmap1h-copper]+2
Map1l:		equ	Cl+[cmap1l-copper]+2
star1h:		equ	Cl+[cstar1h-copper]+2
star1l:		equ	Cl+[cstar1l-copper]+2

>extern "font.dtform",fonta
>extern "font8.dtform",fonta1
>extern "mod.arcane",Sound

*********************************************************
**  Amiga FUTURE COMPOSER  »» V1.4 ««  Replay routine  **
*********************************************************

;Doesn't work with V1.0 - V1.3 modules !!

END_MUSIC:
clr.w onoff
clr.l $dff0a6
clr.l $dff0b6
clr.l $dff0c6
clr.l $dff0d6
move.w #$000f,$dff096
bclr #1,$bfe001
rts

INIT_MUSIC:
move.w #1,onoff
bset #1,$bfe001
lea MODULE,a0
lea 180(a0),a1
move.l a1,SEQpoint
move.l a0,a1
add.l 8(a0),a1
move.l a1,PATpoint
move.l a0,a1
add.l 16(a0),a1
move.l a1,FRQpoint
move.l a0,a1
add.l 24(a0),a1
move.l a1,VOLpoint
move.l 4(a0),d0
divu #13,d0

lea 40(a0),a1
lea SOUNDINFO+4(pc),a2
moveq #10-1,d1
initloop:
move.w (a1)+,(a2)+
move.l (a1)+,(a2)+
adda.w #10,a2
dbf d1,initloop
move.l a0,d1
add.l 32(a0),d1
lea SOUNDINFO(pc),a3
move.l d1,(a3)+
moveq #9-1,d3
moveq #0,d2
initloop1:
move.w (a3),d2
add.l d2,d1
add.l d2,d1
addq.l #2,d1
adda.w #12,a3
move.l d1,(a3)+
dbf d3,initloop1

lea 100(a0),a1
lea SOUNDINFO+[10*16](pc),a2
move.l a0,a3
add.l 36(a0),a3

moveq #80-1,d1
moveq #0,d2
initloop2:
move.l a3,(a2)+
move.b (a1)+,d2
move.w d2,(a2)+
clr.w (a2)+
move.w d2,(a2)+
addq.w #6,a2
add.w d2,a3
add.w d2,a3
dbf d1,initloop2

move.l SEQpoint(pc),a0
moveq #0,d2
move.b 12(a0),d2		;Get replay speed
bne.s speedok
move.b #3,d2			;Set default speed
speedok:
move.w d2,respcnt		;Init repspeed counter
move.w d2,repspd
INIT2:
clr.w audtemp
move.w #$000f,$dff096		;Disable audio DMA
move.w #$0780,$dff09a		;Disable audio IRQ
moveq #0,d7
mulu #13,d0
moveq #4-1,d6			;Number of soundchannels-1
lea V1data(pc),a0		;Point to 1st voice data area
lea silent(pc),a1
lea Chandata(pc),a2
initloop3:
move.l a1,10(a0)
move.l a1,18(a0)
clr.w 4(a0)
move.w #$000d,6(a0)
clr.w 8(a0)
clr.l 14(a0)
move.b #$01,23(a0)
move.b #$01,24(a0)
clr.b 25(a0)
clr.l 26(a0)
clr.w 30(a0)
clr.l 38(a0)
clr.w 42(a0)
clr.l 44(a0)
clr.l 48(a0)
clr.w 56(a0)
moveq #$00,d3
move.w (a2)+,d1
move.w (a2),d3
divu #$0003,d3
moveq #0,d4
bset d3,d4
move.w d4,32(a0)
move.w (a2)+,d3
andi.l #$00ff,d3
andi.l #$00ff,d1
lea $dff0a0,a6
add.w d1,a6
move.l #$0000,(a6)
move.w #$0100,4(a6)
move.w #$0000,6(a6)
move.w #$0000,8(a6)
move.l a6,60(a0)
move.l SEQpoint(pc),(a0)
move.l SEQpoint(pc),52(a0)
add.l d0,52(a0)
add.l d3,52(a0)
add.l d7,(a0)
add.l d3,(a0)
move.l (a0),a3
move.b (a3),d1
andi.l #$00ff,d1
lsl.w #6,d1
move.l PATpoint(pc),a4
adda.w d1,a4
move.l a4,34(a0)
move.b 1(a3),44(a0)
move.b 2(a3),22(a0)
lea $4a(a0),a0		;Point to next voice's data area
dbf d6,initloop3
rts


PLAY:
lea audtemp(pc),a5
tst.w 8(a5)
bne.s music_on
rts
music_on:
subq.w #1,4(a5)			;Decrease replayspeed counter
bne.s nonewnote
move.w 6(a5),4(a5)		;Restore replayspeed counter
moveq #0,d5
moveq #6,d6
lea V1data(pc),a0		;Point to voice1 data area
bsr.L new_note
lea V2data(pc),a0		;Point to voice2 data area
bsr.L new_note
lea V3data(pc),a0		;Point to voice3 data area
bsr.L new_note
lea V4data(pc),a0		;Point to voice4 data area
bsr.L new_note
nonewnote:
clr.w (a5)
lea $dff000,a6
lea V1data(pc),a0
bsr.L effects
move.l d0,$a6(a6)
lea V2data(pc),a0
bsr.L effects
move.l d0,$b6(a6)
lea V3data(pc),a0
bsr.L effects
move.l d0,$c6(a6)
lea V4data(pc),a0
bsr.L effects
move.l d0,$d6(a6)
lea V1data(pc),a0
move.l 68+[0*74](a0),a1		;Get samplepointer
adda.w 64+[0*74](a0),a1		;add repeat_start
move.l 68+[1*74](a0),a2
adda.w 64+[1*74](a0),a2
move.l 68+[2*74](a0),a3
adda.w 64+[2*74](a0),a3
move.l 68+[3*74](a0),a4
adda.w 64+[3*74](a0),a4
move.w 66+[0*74](a0),d1		;Get repeat_length
move.w 66+[1*74](a0),d2
move.w 66+[2*74](a0),d3
move.w 66+[3*74](a0),d4
moveq #2,d0
moveq #0,d5
move.w (a5),d7
ori.w #$8000,d7			;Set/clr bit = 1
move.w d7,$dff096		;Enable audio DMA
chan1:
lea V1data+72(pc),a0
move.w (a0),d7
beq.s chan2
subq.w #1,(a0)
cmp.w d0,d7
bne.s chan2
move.w d5,(a0)
move.l a1,$a0(a6)		;Set samplestart
move.w d1,$a4(a6)		;Set samplelength
chan2:
lea V2data+72(pc),a0
move.w (a0),d7
beq.s chan3
subq.w #1,(a0)
cmp.w d0,d7
bne.s chan3
move.w d5,(a0)
move.l a2,$b0(a6)
move.w d2,$b4(a6)
chan3:
lea V3data+72(pc),a0
move.w (a0),d7
beq.s chan4
subq.w #1,(a0)
cmp.w d0,d7
bne.s chan4
move.w d5,(a0)
move.l a3,$c0(a6)
move.w d3,$c4(a6)
chan4:
lea V4data+72(pc),a0
move.w (a0),d7
beq.s endplay
subq.w #1,(a0)
cmp.w d0,d7
bne.s endplay
move.w d5,(a0)
move.l a4,$d0(a6)
move.w d4,$d4(a6)
endplay:
rts

NEW_NOTE:
move.l 34(a0),a1
adda.w 40(a0),a1
cmp.b #$49,(a1)		;Check "END" mark in pattern
beq.s patend
cmp.w #64,40(a0)		;Have all the notes been played?
bne.L samepat
patend:
move.w d5,40(a0)
move.l (a0),a2
adda.w 6(a0),a2		;Point to next sequence row
cmpa.l 52(a0),a2	;Is it the end?
bne.s notend
move.w d5,6(a0)		;yes!
move.l (a0),a2		;Point to first sequence
notend:
lea spdtemp(pc),a3
moveq #1,d1
addq.b #1,(a3)
cmpi.b #5,(a3)
bne.s nonewspd
move.b d1,(a3)
move.b 12(a2),d1	;Get new replay speed
beq.s nonewspd
move.w d1,2(a3)		;store in counter
move.w d1,4(a3)
nonewspd:
move.b (a2)+,d1		;Pattern to play
move.b (a2)+,44(a0)	;Transpose value
move.b (a2)+,22(a0)	;Soundtranspose value
lsl.w d6,d1
move.l PATpoint(pc),a1	;Get pattern pointer
add.w d1,a1
move.l a1,34(a0)
addi.w #$000d,6(a0)
samepat:
move.b 1(a1),d1		;Get info byte
move.b (a1)+,d0		;Get note
bne.s ww1
andi.w #%11000000,d1
beq.s noport
bra.s ww11
ww1:
move.w d5,56(a0)
ww11:
move.b d5,47(a0)
btst #7,d1
beq.s noport
move.b 2(a1),47(a0)	
noport:
andi.w #$007f,d0
beq.L nextnote
move.b d0,8(a0)
move.b (a1),d1
move.b d1,9(a0)
move.w 32(a0),d3
or.w d3,(a5)
move.w d3,$dff096
andi.w #$003f,d1	;Max 64 instruments
add.b 22(a0),d1		;add Soundtranspose
move.l VOLpoint(pc),a2
lsl.w d6,d1
adda.w d1,a2
move.w d5,16(a0)
move.b (a2),23(a0)
move.b (a2)+,24(a0)
moveq #0,d1
move.b (a2)+,d1
move.b (a2)+,27(a0)
move.b #$40,46(a0)
move.b (a2),28(a0)
move.b (a2)+,29(a0)
move.b (a2)+,30(a0)
move.l a2,10(a0)
move.l FRQpoint(pc),a2
lsl.w d6,d1
adda.w d1,a2
move.l a2,18(a0)
move.w d5,50(a0)
move.b d5,25(a0)
move.b d5,26(a0)
nextnote:
addq.w #2,40(a0)
rts

EFFECTS:
moveq #0,d7
testsustain:
tst.b 26(a0)		;Is sustain counter = 0
beq.s sustzero
subq.b #1,26(a0)	;if no, decrease counter
bra.L VOLUfx
sustzero:		;Next part of effect sequence
move.l 18(a0),a1	;can be executed now.
adda.w 50(a0),a1
testeffects:
cmpi.b #$e1,(a1)	;E1 = end of FREQseq sequence
beq.L VOLUfx
move.b (a1),d0
cmpi.b #$e0,d0		;E0 = loop to other part of sequence
bne.s testnewsound
move.b 1(a1),d1		;loop to start of sequence + 1(a1)
andi.w #$003f,d1
move.w d1,50(a0)
move.l 18(a0),a1
adda.w d1,a1
move.b (a1),d0
testnewsound:
cmpi.b #$e2,d0		;E2 = set waveform
bne.s testE4
move.w 32(a0),d1
or.w d1,(a5)
move.w d1,$dff096
moveq #0,d0
move.b 1(a1),d0
lea SOUNDINFO(pc),a4
lsl.w #4,d0
adda.w d0,a4
move.l 60(a0),a3
move.l (a4)+,d1
move.l d1,(a3)
move.l d1,68(a0)
move.w (a4)+,4(a3)
move.l (a4),64(a0)
move.w #$0003,72(a0)
move.w d7,16(a0)
move.b #$01,23(a0)
addq.w #2,50(a0)
bra.L transpose
testE4:
cmpi.b #$e4,d0
bne.s testE9
moveq #0,d0
move.b 1(a1),d0
lea SOUNDINFO(pc),a4
lsl.w #4,d0
adda.w d0,a4
move.l 60(a0),a3
move.l (a4)+,d1
move.l d1,(a3)
move.l d1,68(a0)
move.w (a4)+,4(a3)
move.l (a4),64(a0)
move.w #$0003,72(a0)
addq.w #2,50(a0)
bra.L transpose
testE9:
cmpi.b #$e9,d0
bne testpatjmp
move.w 32(a0),d1
or.w d1,(a5)
move.w d1,$dff096
moveq #0,d0
move.b 1(a1),d0
lea SOUNDINFO(pc),a4
lsl.w #4,d0
adda.w d0,a4
move.l (a4),a2
cmpi.l #"SSMP",(a2)+
bne.s nossmp
lea 320(a2),a4
moveq #0,d1
move.b 2(a1),d1
lsl.w #4,d1
add.w d1,a2
add.l (a2),a4
move.l 60(a0),a3
move.l a4,(a3)
move.l 4(a2),4(a3)
move.l a4,68(a0)
move.l 6(a2),64(a0)
move.w d7,16(a0)
move.b #1,23(a0)
move.w #3,72(a0)
nossmp:
addq.w #3,50(a0)
bra.s transpose
testpatjmp:
cmpi.b #$e7,d0
bne.s testpitchbend
moveq #0,d0
move.b 1(a1),d0
lsl.w d6,d0
move.l FRQpoint(pc),a1
adda.w d0,a1
move.l a1,18(a0)
move.w d7,50(a0)
bra.L testeffects
testpitchbend:
cmpi.b #$ea,d0
bne.s testnewsustain
move.b 1(a1),4(a0)
move.b 2(a1),5(a0)
addq.w #3,50(a0)
bra.s transpose
testnewsustain:
cmpi.b #$e8,d0
bne.s testnewvib
move.b 1(a1),26(a0)
addq.w #2,50(a0)
bra.L testsustain
testnewvib:
cmpi.b #$e3,(a1)+
bne.s transpose
addq.w #3,50(a0)
move.b (a1)+,27(a0)
move.b (a1),28(a0)
transpose:
move.l 18(a0),a1
adda.w 50(a0),a1
move.b (a1),43(a0)
addq.w #1,50(a0)

VOLUfx:
tst.b 25(a0)
beq.s volsustzero
subq.b #1,25(a0)
bra.L calcperiod
volsustzero:
tst.b 15(a0)
bne.s do_VOLbend
subq.b #1,23(a0)
bne.s calcperiod
move.b 24(a0),23(a0)
volu_cmd:
move.l 10(a0),a1
adda.w 16(a0),a1
move.b (a1),d0
testvoluend:
cmpi.b #$e1,d0
beq.s calcperiod
cmpi.b #$ea,d0
bne.s testVOLsustain
move.b 1(a1),14(a0)
move.b 2(a1),15(a0)
addq.w #3,16(a0)
bra.s do_VOLbend
testVOLsustain:
cmpi.b #$e8,d0
bne.s testVOLloop
addq.w #2,16(a0)
move.b 1(a1),25(a0)
bra.s calcperiod
testVOLloop:
cmpi.b #$e0,d0
bne.s setvolume
move.b 1(a1),d0
andi.w #$003f,d0
subq.b #5,d0
move.w d0,16(a0)
bra.s volu_cmd
do_VOLbend:
not.b 38(a0)
beq.s calcperiod
subq.b #1,15(a0)
move.b 14(a0),d1
add.b d1,45(a0)
bpl.s calcperiod
moveq #0,d1
move.b d1,15(a0)
move.b d1,45(a0)
bra.s calcperiod
setvolume:
move.b (a1),45(a0)
addq.w #1,16(a0)
calcperiod:
move.b 43(a0),d0
bmi.s lockednote
add.b 8(a0),d0
add.b 44(a0),d0
lockednote:
moveq #$7f,d1
and.l d1,d0
lea PERIODS(pc),a1
add.w d0,d0
move.w d0,d1
adda.w d0,a1
move.w (a1),d0

move.b 46(a0),d7
tst.b 30(a0)		;Vibrato_delay = zero ?
beq.s vibrator
subq.b #1,30(a0)
bra.s novibrato
vibrator:
moveq #5,d2
move.b d1,d5
move.b 28(a0),d4
add.b d4,d4
move.b 29(a0),d1
tst.b d7
bpl.s vib1
btst #0,d7
bne.s vib4
vib1:
btst d2,d7
bne.s vib2
sub.b 27(a0),d1
bcc.s vib3
bset d2,d7
moveq #0,d1
bra.s vib3
vib2:
add.b 27(a0),d1
cmp.b d4,d1
bcs.s vib3
bclr d2,d7
move.b d4,d1
vib3:
move.b d1,29(a0)
vib4:
lsr.b #1,d4
sub.b d4,d1
bcc.s vib5
subi.w #$0100,d1
vib5:
addi.b #$a0,d5
bcs.s vib7
vib6:
add.w d1,d1
addi.b #$18,d5
bcc.s vib6
vib7:
add.w d1,d0
novibrato:
eori.b #$01,d7
move.b d7,46(a0)

; DO THE PORTAMENTO THING
not.b 39(a0)
beq.s pitchbend
moveq #0,d1
move.b 47(a0),d1	;get portavalue
beq.s pitchbend		;0=no portamento
cmpi.b #$1f,d1
bls.s portaup
portadown: 
andi.w #$1f,d1
neg.w d1
portaup:
sub.w d1,56(a0)
pitchbend:
not.b 42(a0)
beq.s addporta
tst.b 5(a0)
beq.s addporta
subq.b #1,5(a0)
moveq #0,d1
move.b 4(a0),d1
bpl.s pitchup
ext.w d1
pitchup:
sub.w d1,56(a0)
addporta:
add.w 56(a0),d0
cmpi.w #$0070,d0
bhi.s nn1
move.w #$0071,d0
nn1:
cmpi.w #$0d60,d0
bls.s nn2
move.w #$0d60,d0
nn2:
swap d0
move.b 45(a0),d0
rts



V1data:  blk.b 64,0	;Voice 1 data area
offset1: blk.b 02,0	;Is added to start of sound
ssize1:  blk.b 02,0	;Length of sound
start1:  blk.b 06,0	;Start of sound

V2data:  blk.b 64,0	;Voice 2 data area
offset2: blk.b 02,0
ssize2:  blk.b 02,0
start2:  blk.b 06,0

V3data:  blk.b 64,0	;Voice 3 data area
offset3: blk.b 02,0
ssize3:  blk.b 02,0
start3:  blk.b 06,0

V4data:  blk.b 64,0	;Voice 4 data area
offset4: blk.b 02,0
ssize4:  blk.b 02,0
start4:  blk.b 06,0

audtemp: dc.w 0		;DMACON
spdtemp: dc.w 0
respcnt: dc.w 0		;Replay speed counter 
repspd:  dc.w 0		;Replay speed counter temp
onoff:   dc.w 0		;Music on/off flag.

Chandata: dc.l $00000000,$00100003,$00200006,$00300009
SEQpoint: dc.l 0
PATpoint: dc.l 0
FRQpoint: dc.l 0
VOLpoint: dc.l 0


SILENT: dc.w $0100,$0000,$0000,$00e1

PERIODS:dc.w $06b0,$0650,$05f4,$05a0,$054c,$0500,$04b8,$0474
	dc.w $0434,$03f8,$03c0,$038a,$0358,$0328,$02fa,$02d0
	dc.w $02a6,$0280,$025c,$023a,$021a,$01fc,$01e0,$01c5
	dc.w $01ac,$0194,$017d,$0168,$0153,$0140,$012e,$011d
	dc.w $010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be,$00b4
	dc.w $00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
	dc.w $0071,$0071,$0071,$0071,$0071,$0071,$0071,$0071
	dc.w $0071,$0071,$0071,$0071,$0d60,$0ca0,$0be8,$0b40
	dc.w $0a98,$0a00,$0970,$08e8,$0868,$07f0,$0780,$0714
	dc.w $1ac0,$1940,$17d0,$1680,$1530,$1400,$12e0,$11d0
	dc.w $10d0,$0fe0,$0f00,$0e28,$06b0,$0650,$05f4,$05a0
	dc.w $054c,$0500,$04b8,$0474,$0434,$03f8,$03c0,$038a
	dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a
	dc.w $021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d,$0168
	dc.w $0153,$0140,$012e,$011d,$010d,$00fe,$00f0,$00e2
	dc.w $00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097,$008f
	dc.w $0087,$007f,$0078,$0071

SOUNDINFO:
;Start.l , Length.w , Repeat start.w , Repeat-length.w , blk.b 6,0 

blk.b 10*16,0	;Reserved for samples
blk.b 80*16,0	;Reserved for waveforms

Sound:
blk.b	25000,0
ebeg:
